-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hmm, my suggestion needs to be modified to deal with the following scenario:
E F | | A---B---C---D D sends a RejectedOverload to C, which reduces its rate to D. If A carries on sending at a high rate then C sends a RejectedOverload to B, which reduces its rate to C. This affects the path EBCF even though there are no overloaded nodes along that path. Solution: keep a separate rate for each pair of neighbours (previous hop and next hop). D sends a RejectedOverload to C, which reduces its rate from B to D. C's rate from B to F is unaffected. If A carries on sending at a high rate then C sends a RejectedOverload to B, which reduces its rate from A to C. B's rate from E to C is unaffected. Result: A's traffic is quenched without affecting the path EBCF. The disadvantage of this approach is the need to keep state for each pair of neighbours - but the amount of state needed for an AIMD token bucket is very small (two integers), so it should be practical for up to a couple of hundred neighbours. Unfortunately it still doesn't deal with scenarios like the following: F G | | A---B---C---D---E Cheers, Michael -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQFEPmjayua14OQlJ3sRAmb1AJ4/DtdsQ3dssKobAlk4KXgNHR7zJQCgvOMV DS/J4+glmS97UIO6m0Voy3k= =/T9c -----END PGP SIGNATURE-----