> > > 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] --------------------------------------------------------------------
