[zeromq-dev] subports
Martin Sustrik
sustrik at 250bpm.com
Wed Jul 27 09:48:58 CEST 2011
Hi all,
The subport feature (multiplexing several connections on top of the same
TCP port) have been asked for a long time.
I've committed the initial version of the functionality to "vtcp" branch
in libzmq repo. It's still a bit creaky, but it should work at least on
POSIX-compliant systems.
How it works
------------
There's "vtcp" project that deals with TCP port multiplexing. Note that
it is not 0MQ-specific. It can multiplex connections from any applications.
Technically, there's "vtcpd" deamon that listens on a specific TCP port
and dispatches new connections to the applications on the local box
based on the subport number.
Applications (including 0MQ) use libvtcp library to bind/connect to vtcp
subports.
In wire-protocol terms, vtcp requires that 32-bit network-byte-ordered
integer (subport number) is sent by the connecting side immediately
after creating the TCP connection.
Usage
-----
1. Get vtcp project here:
https://github.com/sustrik/vtcp
2. Build and isntall it:
./autogen.sh
./configure
make
sudo make install
3. Get 0MQ from libzmq repo, vtcp branch
4. Build it with --with-vtcp option:
./autogen.sh
./configure --with-vtcp
make
sudo make install
5. Run the vtcp deamon on the port you want to multiplex:
vtcpd 5555
6. Test it using 0MQ perf tests:
local_lat vtcp://*:5555.123 1 1
remote_lat vtcp://127.0.0.1:5555.123 1 1
Please note that vtcp only allows binding to *all* the network
interfaces (*). Trying to bind to a specific interface will produce error.
Question
--------
Addresses like "vtcp://127.0.0.1:5555.123" are annoyingly long. Would it
make sense to use a well-know fixed port (such as 5555) for
multiplexing? That way the address could be shortned to
"vtcp://127.0.0.1:123"
Any feedback is welcome.
Martin
More information about the zeromq-dev
mailing list