[nanomsg] Scoped IP address syntax (i.e. <zone-id>)

  • From: Mark Martinec <Mark.Martinec+nn@xxxxxx>
  • To: nanomsg@xxxxxxxxxxxxx
  • Date: Fri, 6 Sep 2013 18:05:12 +0200

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

Other related posts: