[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