Thursday, February 16, 2012
What’s a link-local URL?!
IPv6 is still pretty much unknown in the IT world. When m9 customers log into the web interface and navigate on the status screen, they are stumbling upon a thing called the “IPv6 Link-Local URL”.
Generally speaking, link-local means that the address is only visible on the link, which means something like “interface” or “LAN”. For example, if your device would have to Ethernet ports, you could have two links, and you could actually have the same link local address on each of the links. It would not generate an IP address conflict, because the LAN will not route packets that are link local. While you usually have different MAC addresses for each physical interface, this case will be rather improbable. However, when VLANs are coming into the game, it is actual quiet probably that you will have the same link-local address twice on the device—one time for the regular LAN and another time for the VLAN. Hint: This will still not happen with the m9, because when a VLAN is used, the whole device will move into that VLAN.
Link-local addresses can actually also happen on IPv4. Those addresses use those 169.254.x.x addresses that you might have found on your computer when the DHCP server was not responding. They are not as popular as they are on IPv6. In IPv6 you actually need link-local addresses to get a “real” IPv6 address. DHCPv6 uses the link-local address in order to grab more IPv6 addresses.
We put the link-local IPv6 address on the status screen for two reasons. First of all, we want to let everybody know, that the device has an IPv6 address and they can try this out just by clicking on the link. The other thing is that this address does not change—it depends on the MAC address, so it is pretty constant. That means if you store the link, you can always log into the device without having to know what the IPv4 address is or even without having an IPv4 address. We even wanted to print the link-local URL on the label on the bottom of the base station, so that people can just enter that link to access the device.
Generally speaking, in IPv6 it is absolutely normal to have more than one IP address. Apart from the link local addresses, IPv6 routers may send advertisements around (called RA—router advertisements) which announce subnets. The device may grab an address in the subnet and use it, without the involvement of a central server like a DHCP server. This is called stateless configuration. The problem with the stateless configuration is that is does not include a DNS server, which is also pretty important in IPv6 (who wants to enter those long IP addresses). That’s when the m9 sends out the DNS requests to a special DNS multicast address, called “all link local DNS servers”. Then when someone answers, it tries to stick to it.
The m9 always tries to grab another IP address from a DHCPv6 server. As stated before, DHCPv6 is quite different from DHCPv4, especially the fact that is was designed for multiple (redundant) DHCPv6 servers in the local link (this should make sure that the network is very robust when server should go down). At the end of the DHCPv6 process, there is still an IP address—an IPv6 address.
If you have IPv6 RA or DHCPv6, you would find the additional addresses also on the status screen right below the link local address. If you want to get more information about the IPv6 configuration on your m9, you can still use the Diagnostics screen, for example to probe the /proc/net/if_inet6 file.