Hi all,<div><br></div><div>Just figured I'd drop a quick note about the research I am involved in. We don't do research on 0mq, but it is used in our research. It's slightly off topic for "subjects to research" but sometimes it helps just to know what others are doing. First a bit on what we are looking at:</div>
<div><br></div><div>We are dong some experiments on a converged network as it relates to the power-grid control space. By converged we mean SCADA, other sensors, "engineering" (random data), and enterprise traffic all on the same pipe. This space has some pretty interesting requirements, such as very tight loop constraints (approaching and including real-time). Due to the remote nature of many of the assets in the communication loops, there is a constraint on simple over-provisioning. Further, simple over-provisioning does not allow for certain SLAs to be reached anyway.</div>
<div><br></div><div>How we use 0mq:</div><div><br></div><div>* As a generic messaging layer: some of our work involves coordinating endpoints, which we do via 0mq in a dedicated diffserv channel. We do this because it gets us messages without the pain of dealing with sockets directly, and more importantly, without the crap associated with a lot of messaging systems.</div>
<div><br></div><div>* As a traffic generator. Seriously, the perf tests are the only way we have found yet which reliably fills a network pipe without also making cpu usage go to 100% (useful for determining if our results are because of our networking stuff or because of our real-time cpu scheduling).</div>
<div><br></div><div>Near-future work:</div><div><br></div><div>*  0mq will be the transport for some work with "data diodes" -- hardware enforced one-way data flows. These will probably be a requirement for some power stuff in the future, and 0mq already has the semantics in it.</div>
<div><br></div><div>* We have a real-time kernel and a real-time network scheduler, and are looking to maybe tie 0mq in with that, so as to avoid our own messy message handling stuff.</div><div><br></div><div>Cool things unrelated to our research:</div>
<div><br></div><div>* I was at the middleware 2010 conference, and using 0mq implemented a couple of the algorithms being presented as they were being presented.  This is another of the cool  things resulting from 0mq not getting to high in the conceptual stack. Im certain that cool concepts like gossip protocols and whatnot could easily be implemented/researched on top of 0mq.</div>
<div><br></div><div>Anyway, thats how 0mq is currently being used in my corner of academia, hope that helps others think of cool research stuff.</div><div><br></div><div>Regards,</div><div>Erich</div><div><br></div><div>PS sorry for the messy braindump presentation above :/</div>
<div><br><div class="gmail_quote">On Thu, Apr 15, 2010 at 12:35 PM, Martin Sustrik <span dir="ltr"><<a href="mailto:sustrik@250bpm.com">sustrik@250bpm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi Indefons, John,<br>
<div class="im"><br>
> I am not a member of iMatix nor a developer on the 0MQ team, so am<br>
> being a bit rude by responding to your note - Martin S., please<br>
> forgive me!<br>
<br>
</div>Well, you've worked on the VMS port plus COBOL and Fortran bindings, no?<br>
That makes you part of the team :)<br>
<br>
Actually, if anyone has any research ideas or would like to participate<br>
on research please shout! I am happy to see academic research on 0MQ<br>
happening. Although we've done a lot of research there was never enough<br>
time (or will) to publish it in more formal way than email or ad-hoc<br>
whitepaper placed on the website. That makes 0MQ look like it's missing<br>
formal theoretical background.<br>
<div class="im"><br>
> One of the most difficult areas with software the nature of 0MQ is<br>
> exactly the one you are thinking of: "Latency monitoring and<br>
> adjustment". Given reasonable SLAs between<br>
> systems/nodes/threads/whatever, it would be great to 1) examine the<br>
> QoS against the SLAs and 2) be in a position to monitor the state of<br>
> the system; even better, change parameters on the fly to alleviate<br>
> things such as congestion, hung clients, or whatever.<br>
<br>
</div>Agreed. However, it may prove hard for a person without direct<br>
experience with production environment to do research of such research.<br>
It's up to Indefons to decide anyway.<br>
<br>
Some other topics off the top of my head:<br>
<br>
1. Theoretical foundation for latency and throughput measurement. I've<br>
wrote a short whitepaper on measuring jitter:<br>
<br>
<a href="http://www.zeromq.org/whitepapers:measuring-jitter" target="_blank">http://www.zeromq.org/whitepapers:measuring-jitter</a><br>
<br>
Similar documents for latency and throughput are missing still. This<br>
kind of research requires some experience with statistics.<br>
<br>
2. As QoS in 0MQ is delegated to the networking layer, so any research<br>
on QoS would require messing with underlying infrastructure. Say "How to<br>
set up your network to get the best latencies." Similar theme was<br>
researched by Patrik Csokas (bachelor degree paper):<br>
<br>
<a href="http://www.zeromq.org/local--files/area:whitepapers/bc_csokas.pdf" target="_blank">http://www.zeromq.org/local--files/area:whitepapers/bc_csokas.pdf</a><br>
<br>
3. Very interesting research would be formally describing and getting<br>
the lockless algorithms used to back 0MQ queues. However, that seems a<br>
way off from your interests.<br>
<br>
4. Interesting theme is unifying messaging API with Berkeley socket API.<br>
I can even imagine doing this work in the scope of IETF. The project<br>
could result in implementing a small wrapper library that would override<br>
the Berkeley socket API and allow to use 0MQ via standard POSIX APIs.<br>
<br>
5. The topic of scaling messaging solutions to the Internet scale is big<br>
and underresearched area. Topic so wide would require a lot of<br>
commitment though. If you are interested in this I can send you a<br>
whitepaper we've written about it.<br>
<br>
If you want to go some other way, feel free to discuss it here. You'll<br>
probably get a lot of advice once the focus of the research is more clear.<br>
<div><div></div><div class="h5"><br>
Martin<br>
_______________________________________________<br>
zeromq-dev mailing list<br>
<a href="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</a><br>
<a href="http://lists.zeromq.org/mailman/listinfo/zeromq-dev" target="_blank">http://lists.zeromq.org/mailman/listinfo/zeromq-dev</a><br>
</div></div></blockquote></div><br></div>