[zeromq-dev] Integrating additional PGM rate limit controls into ØMQ

Martin Sustrik sustrik at 250bpm.com
Sat Nov 27 09:05:49 CET 2010


Hi Steven,

For getting the best usability I propose following:

>     * TXW_MAX_RTE, the maximum transport rate.

(this is max rate for both ODATA and RDATA combined, right?)

>     * ODATA_MAX_RTE, limit for original data packets.
>     * RDATA_MAX_RTE, limit for repair data packets.

ZMQ_RATE => TXW_MAX_RATE

A new option, say ZMQ_RAPAIR_RATIO, that would be the percentage of 
ZMQ_RATE to guaranteed to be available for the repairs.

> And for whatever reason you can also set the following flags:
>
>     * ODATA_CONTROLLED, whether original data packets are rate limited.
>     * RDATA_CONTROLLED, whether repair data packets are rate limited.

As far as I understand, the ODATA limit can be turned off because the 
overall limit is bound by TXW_MAX_RTE and thus ODATA cannot surpass that 
value anyway.

> So for deployment you can set a percentage of the channel capacity to
> TXW_MAX_RTE, low enough to allow some TCP traffic in and out, and
> ODATA_MAX_RTE to a value lower with sufficient head room for some repair
> data to occur.
>
> I would ignore the flags as they seem a bit redundant but configuring
> ODATA and RDATA limits is what you have been after.

Let me give an example:

ZMQ_RATE = 100Mb/s
ZMQ_REPAIR_RATIO = 5%

would mean:

The whole traffic consisting of both ODATA and RDATA will never exceed 
100Mb/s. If there are no repairs ODATA would flow at rate of 100Mb/s.

If there is need for repairs, the bandwidth for them is cut from the 
overall quota, say 97Mb/s for ODATA and 3Mb/s for RDATA.

When the rate of RDATA packets reaches 5% of overall bandwidth (5Mb/s) 
some of them have to be dropped, meaning that some receivers will loose 
messages ("unrecoverable data loss").

Thoughts?
Martin



More information about the zeromq-dev mailing list