This page holds ideas for ØMQ projects that you might like to try working on.
Important for using ØMQ in WAN environment. The pool of IPv4 addresses have almost dried up so we are to expect increasingly more IPv6 addresses in the network.
Using IOCP (completion ports) polling mechanism on Windows platforms would allow for using OS communication mechanisms with no POSIX APIs. For example, IPC on Windows is done via NamedPipes which are not POSIX compliant. Additionally, using IOCP would also speed up ØMQ on Windows platform. Alternatively, implementing IPC transport using anonymous shared memory is quite possible and would be a nice contained project.
ØMQ uses different TCP ports to distinguish different message feeds. This may become a problem where there is a limited number of ports available. Specifically, you may want to use a single open port to pass all the traffic through corporate firewall. "subports" would be a mechanism to partition a single TCP port into lot of independent
channels that could be used by 0MQ to pass different message feeds.
SCTP is widely implemented L4 protocol which has some considerable advantages over TCP (native heartbeat support, for example). It would be good to have SCTP as one of the transports supported by ØMQ.
Pure UDP with optional congestion control via DCCP as a new ØMQ transport mechanism. Possible configurable semantics such as weak ordering by only accepting new packets.
A transport mechanism implementing congestion control suitable for intercontinental sockets.
Point to point opportunistic encryption
By following the protocol as set out in the documentation and maybe source of TCP crypt (see http://tcpcrypt.org) implement opportunistic encryption support in an ØMQ transport to allow for basic point to point encryption at the transport level (for that transport only). This wouldn't affect other points using other transports or messaging patterns and create a building block for a secure WAN network implementation over time (akin to the IPv6 support).
Scheduling with priorities
Currently the ØMQ load-balancer uses simple scheduling where all the connections are considered being equal. Specific use cases require the echeduler to be able to cope with hard priorities (strict precedence) and/or weighted priorities (partitioning the traffic based on weights assigned to individual connections). The scheduler should have O(1) complexity. In addition to load-balancing, the scheduler can be used to customise fair-queueing algorithm for inbound messages.
ØMQ is great for the intranet but through firewalls or over the Internet it might be preferable to tunnel inside a HTTP transport. Different architectures and optimisations exist such as POST for transmit and GET for receive for uni-directional connections, HTTP transactions per ØMQ message, streaming HTTP or multi-part HTTP, fast open sockets, etc.
Advanced ØMQ devices
Providing devices (brokers) with interesting functionality: SNMP or JMX for management, fine-grained config files, merging many devices into a single executable etc.
Uni-directional multicast transport
Update the PGM transport to support a no-back-channel scheme utilizing forward error correction (FEC) to prevent data loss.
Improving language bindings
Many language bindings are feature-complete and actively maintained. However, some are still lacking in terms of functionality. Provided a full-blown language binding would be a nice self-contained project. The bindings projects can be found here.
Written: 03 Feb 2011 20:35
Revised: 27 May 2011 08:52
If you found this page useful, please rate it up so others will find it.
- Binding Abstractions
- Heartbeating and Keep-Alive
- Long-term Planning
- Monitoring Support
- ØMQ is just Sockets!
- ØMQ Projects
- ØMQ-over-HTTP discussion
- Publish-Subscribe Authentication and Encryption (PSAE)
- Release Process
- Requirements For Reliability
- St. Valentine's Day Massacre
- zmq_poll workaround
Who's watching this page?pieterh
... and more