[zeromq-dev] QoS support

Erich Heine sophacles at gmail.com
Wed Nov 18 17:28:43 CET 2009

On Sat, Nov 14, 2009 at 12:52 PM, Martin Sustrik <sustrik at 250bpm.com> wrote:

> Hi Erich,
>  Sorry I should have revised my statements better, I hope this clears them
>> up.
> This is pretty interesting scenario. I have no experience with industrial
> automation whatsoever, so your insight is very valuable...

My experience is minimal so far, just learning about these things... :)

> Ok. There are producers producing messages with different priorities,
> however, all messages are published to the same topic hierarchy. You are
> right, there's no way to implement such scenario using 0mq without a need to
> create a separate transport for each priority level.
> I must admit I have no straightforward answer at the moment. Do you have
> any idea of how the thing should be implemented?
Not at the moment, I'm still in the "define the problem" stage :)  It is not
easy tho.  I'm sort of toying with tying into various tc queues
automatically, but this is very linux-centric (actually worse, it is pretty
version specific for linux, at least 3 different methods required depending
on kernel version)

One more question: Can you think of a scenario where there's large number of
> priority levels? Say 256? Or 10000? The point is that it's rather acceptable
> to have 3 connections per feed, however, it's not acceptable to have 10000
> of them.
> Yes and no. It depends on whether each signal can be ranked.  For instance
Consumer X wants  signals (NAME{prio (higher number better prio)}) A{3},
B{3}, C{2}, D{1}, and Consumer Y wants signals A{3}, B{2}, D{1} E{1}.  We
could prioritize and send out these as: A{3} B{3} C{2} D{1} E{1} or as A{6},
B{5}, C{2} D{2} E{1} (or the latter condensed into 4 actual queues..).
In the later scenario, many queue levels could emerge.

Of course one thing to remember with queueing theory is that at a certain
point increasing the number of queues worsens the situation. Basically it is
an optimization problem.

>  Point 2, is a slightly different take on the same notion. It assumes that
>> some applications will not partake in the system QoS of their own accord. In
>> such cases, some QoS mechanisms on the host will go a long way. Say in the
>> example above there is an app that aggregates security video feeds and sends
>> them along the network. For whatever reason this app runs on the same box as
>> the control apps (its a beefy box at a small plant or something). The video
>> system doesn't do QoS with the control system. So we need to have host based
>> QoS here, with priority queueing making the video a lower priority via
>> system intervention. The video may or may not be tagged on egress, that is a
>> separate issue, what we are doing here is providing a guarantee to the the
>> control system that it will be able to do its own thing correctly.  Further
>> say each individual sensor and camera steam comes in on the LAN. We need
>> ingress controls to prioritize handling of sensor data over video data.
> Right. What's the part that's not doable by configuring host firewall and
> switch?
> Nothing. It is just a host configuration versus a configuration starting at
the gateway. Im arguing for host based, end-to-end QoS, this is just an
example of where it is needed. (also depending on system, bandwidth
allocation is different from firewall, but the idea is the same).

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20091118/21565c5b/attachment.htm>

More information about the zeromq-dev mailing list