[CUWiN] assigning numbers to a community wireless mesh

David Young dyoung at pobox.com
Mon Dec 6 01:49:59 CST 2004


I am thinking about how to assign IP numbers to a community wireless
network (CWN).  Here are my thoughts, so far.

A CWN router commonly has two or more network interfaces.  The first is
always an ethernet with an "outlet" inside the subscriber's home---think
of this as the "demarcation point."  Second and subsequent interfaces
are wireless.  Each wireless NIC commonly attaches to an antenna on the
subscriber's roof---they provide connections to the neighbor's homes.

Suppose the local municipality provides the community with an IPv6
connection to the Internet.  The municipality's site was assigned the
prefix 2222::/48.  My first thought was to assign each subscriber a unique
/63 subnet.  The first interface takes the first /64, and the second
interface takes the second /64.  For example, I may assign 2222::0/63
to a router, as I have illustrated here:

          \   /
           \ /  if2 (wireless)
            |   2222::0:205:5dff:fe89:6a33/64
            |                 
          +------+
          |      |
          |router|
          |      |
          +---+--+
              | if1 (ethernet)
              | 2222::1:207:e9ff:fe26:9c5c/64
              |
              |
          +---+--+
          |      |
          |  PC  | 2222::1:200:24ff:fec0:ec10/64
          |      |
          +------+

In this way, each wireless interface is guaranteed to have a globally
unique address assigned, but I have wasted an enormous number of addresses
on the wireless interfaces.  (At least the two /64s can be aggregated.)

Second alternative is to take an approach similar to the grotty one
used today on CUWiN's IPv4 network: just as I reserved 10.0/16 for our
v4 wireless interfaces, I will reserve 2222::ffff/64 for v6 wireless
interfaces.  As I assign networks 10.A.B/24, A != 0, to the ethernets, I
will assign networks 2222::xxxx/64 to the ethernets.  Something like this:

          \   /
           \ /  if2 (wireless)
            |   2222::ffff:205:5dff:fe89:6a33/64
            |                 
          +------+
          |      |
          |router|
          |      |
          +---+--+
              | if1 (ethernet)
              | 2222::1:207:e9ff:fe26:9c5c/64
              |
              |
          +---+--+
          |      |
          |  PC  |
          |      |
          +------+

Instead, why don't I do something like the following?  With IPv6, each
interface gets a link-local address (fe80::/64) "for free."  Our routing
daemon, running on the wireless interface, will only send routing messages
w/ hopcount=1---that is, link-local messages.  So there's no harm using
link-local addresses for the routing protocol packets.  There's also
no harm using link-local nexthops (the OSPFv3 RFC recommends it, IIRC).
So link-local messages seem to work just fine:

          \   /
           \ /  if2 (wireless)
            |   fe80::ffff:205:5dff:fe89:6a33/64
            |                 
          +------+
          |      |
          |router|
          |      |
          +---+--+
              | if1 (ethernet)
              | 2222::1:207:e9ff:fe26:9c5c/64
              |
              |
          +---+--+
          |      |
          |  PC  |
          |      |
          +------+

Now, what address will the wireless router use to identify itself?
I think it has two choices: it may use its link-local wireless address
or the address on its ethernet.  Practically speaking, the link-local
address is *usually* unique; nominally, it is NOT unique.  The address
on the ethernet, however, had better be unique.  I think we should use
the ethernet's address to identify the router.

Ok, so what does this accomplish?  A /64 per household.  No wasted
subnets.  Aggregatable addressing.  What grave error have I made?

Note that an IPv4 network can be numbered similarly:

          \   /
           \ /  if2 (wireless)
            |   169.254.0.1/16
            |                 
          +------+
          |      |
          |router|
          |      |
          +---+--+
              | if1 (ethernet)
              | 10.1.2.3/30
              |
              |
          +---+--+
          |      |
          |  PC  |
          |      |
          +------+

169.254/16 is reserved for link-local IPv4 addresses.  There is
an accepted way to auto-configure numbers in that range---see
www.zeroconf.org---and your Macintosh or Windows PC probably does it.

There is a problem w/ using auto-configured link-local IPv4/IPv6
addresses: they weren't thinking about "semi-broadcast" wireless networks
when they designed the auto-configuration mechanism.  We can probably
punt on this issue, for now.

Dave

-- 
David Young             OJC Technologies
dyoung at ojctech.com      Urbana, IL * (217) 278-3933


More information about the CU-Wireless mailing list