Starting to look at the documentation of nanomsg (and its Perl binding) with an intention of eventually switching from ZeroMQ. I came across the following documentation sections: http://nanomsg.org/documentation-zeromq.html There's a minor enhancement to TCP transport. When connecting, you can optionally specify the local interface to use for the connection, like this: nn_connect (s, "tcp://eth0;192.168.0.111:5555"). http://nanomsg.org/v0.1/nn_tcp.7.html When connecting a TCP socket address of the form tcp://interface;address:port should be used. Port is the TCP port number to use. Interface is optional and specifies which local network interface to use. If not specified, OS will select an appropriate interface itself. ... which makes me wonder why a syntax for zone-id is being re-invented, and how one is supposed to specify a scoped link-local address: tcp://eth0;[fe80::1]:555 or: tcp://[fe80::1%eth0]:555 or: tcp://eth0;[fe80::1%eth0]:555 Seems to me the same syntax could be applied to IPv4 addresses e.g. a link-local address: tcp://169.254.0.9%3:555 Please see: RFC 4007: IPv6 Scoped Address Architecture, section 11: textual representation RFC 6874 Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers A <zone_id> SHOULD contain only ASCII characters RFC 3986: classified as "unreserved" for use in URIs unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" Mark