> > > An implementation MUST cycle through the router list in a round-
> > > robin fashion while making sure it always returns a reachable or
> > > a probably reachable router when one is available.
> > 
> > I can see encouraging implementations to do some sort of 
> load sharing,
> > but why does it have to be round-robin, and why MUST and not SHOULD?
> 
> The idea probably is that if it is MUST, you can rely (up to a certain
> point) on clients on actually doing load-balancing.

Even if we wanted to somehow mandate load sharing, there are generally
issues with mandating a round robin approach, or in fact any specific
algorithm. Round robin has two drawbacks: it hypothesizes that all
routers are equal, which is very often not the case, and it implies some
explicit ordering of the requests, which can lead to synchronizations.
The all routers equal hypothesis is fine for dumb hosts, but smart hosts
can acquire a knowledge that this or that router usually performs
better, which is enough to justify a "SHOULD" instead of "MUST". The way
to avoid synchronization is normally randomization, i.e. pick routers in
a random order rather than doing round robin.

-- Christian Huitema
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to