dccd peer flooding - possible rejection limit overrun?

Martin Pála Martin.Pala@oskar.cz
Tue Aug 23 15:23:27 UTC 2005


Hello,

i tried to set the flooding between two dccd servers.

Environment:
We have setup two dccd peer servers (1.3.15) with flooding enabled. All dccifd clients chosen the same dccd server (it provided the best response time) => provided that actualy just one dccd server handles all checksum reports, the second one is passive.


DCC behavior:
1.) the dccd flooding can be driven by the '-t' option of dccd. In the case that it was not set, the default treshold was 20 (which corresponds to the documentation).

2.) the dccd accounts the body checksums, as soon as the threshold is exceeded, it sends the actual state to the peer.

3.) the flood is then suspended until the threshold is exceeded again => the peer will receive the update each time the counter equals to multiple of the threshold (such as 20, 40, 60, ...)

4.) when the multiple of threshold exceeds 4, the flooding stops (?). Even if the counter increases further, the peer is not updated anymore. I think this behavior is problematic for following reasons:


- the dcc startup script is driven by the DCCM_REJECT_AT option, however as described in the dccd documentation, the script sets the threshold limit maximaly to 20. When the threashold is not explicitly overriden in DCCD_ARGS statement by the -t option, the checksum flooding to the peer stops after 80 checksums were reached.

- let's say that the rejection limit is 5000 - one dccd reports to the clients real checksum count (so the clients can reject messages as soon as 5000 is reached). however, the passive dccd will know just about 80 checksums.

- now when the client will failover to the second dccd server, its checksum counter (which exceeded 5000 on the first dccd) is now 80 => dccd reports now acceptable value for mail to pass.


As the result, the client limit can be not enforced accurately and in reality, dcc clients can pass up to "num_of_dccd * (rejection_threshold - 80)" messages with the same checksum - thus for example "2 * (5000 - 80)" => up to ca. 10000 mails can be passed instead of desired 5000.


I think the solution could be to continue the flooding of dccd peers each time the dccd threshold is reached (not stop after 4 updates were send). This can decrease the possible rejection limit overrun by just cca. 1*threshold (e.g. 5020 mails instead of 5000).

What do you think?

Thanks,
Martin




More information about the DCC mailing list

Contact vjs@rhyolite.com by mail or use the form.