network-programmingipv6vlanlink-local

IPv6 link-local address for multiple VLAN networks over the same physical interface


So I have a situation in which one physical interface (as a result, one MAC) hosts several VLANs in a bond. Seeing as the link-local address in IPv6 is generated from the MAC address all my VLANs end up with the same link-local address. This causes issues in the system.

Is this a known limitation of IPv6? Is there some accepted workaround beyond going into the kernel code and changing the way link-local addresses are assigned?


Solution

  • Is this a known limitation of IPv6? Is there some accepted workaround beyond going into the kernel code and changing the way link-local addresses are assigned?

    No, this is not an issue, since one link-local address is affected to the physical interface and the other link-local addresses are affected to the vlan interfaces. Each link-local address can be distinguished by its associated network interface.

    Here is an example:

    Therefore, you will have the following configuration for your interfaces:

    % ifconfig eth0
    eth0      Link encap:Ethernet  HWaddr C0:3F:D5:33:13:79
              adr inet6: fe80::c23f:d5ff:fe33:1379/64 Scope:Lien
    % ifconfig vlan101
    vlan101   Link encap:Ethernet  HWaddr C0:3F:D5:33:13:79
              adr inet6: fe80::c23f:d5ff:fe33:1379/64 Scope:Lien
    % ifconfig vlan102
    vlan102   Link encap:Ethernet  HWaddr C0:3F:D5:33:13:79
              adr inet6: fe80::c23f:d5ff:fe33:1379/64 Scope:Lien
    

    Note: if you are on Linux, you should use ip address show instead of ifconfig, to use the state-of-the-art iproute2 Linux networking interface.

    As you can see, the HWaddr and the link local addresses are the same. But since a link local address need to be scoped in a vlan, there is no problem for the kernel, nor for your switch and other hosts.

    To ping the link-local on vlan101, you do:

    ping6 fe80::c23f:d5ff:fe33:1379%vlan101
    

    This way, the address is associated with the interface name and no confusion is possible.