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

Reply via email to