An IPv6 link-local address with the prefix FE80::/10 is a IP address that is automatically or manually assigned to an IPv6-enabled device for local network (link) connectivity. These addresses are always present on an IPv6 interface, even if other address types are assigned. They play a critical role in IPv6 networks, supporting essential functions like neighbor discovery, automatic address configuration, and local communication, which are vital for the proper operation of an IPv6 network.

Table of Contents

Link Local Address in IPv6

An IPv6 link-local address is a type of unicast address that is locally unique within a link and is always present on an IPv6 interface. It plays a critical role in IPv6 operation and can therefore be a good starting point to learn IPv6 addressing.

The format of an IPv6 link-local address begins with the prefix FE80::/10. A subset of this prefix „FE80::/64“ is usually used for link local address prefix. . Following this prefix, the next 64 bits are reserved for the interface identifier. Interface identifier is typically generated based on the MAC address of the interface using EUI-64 mechanism in many systems, or it may be randomly generated, which is the default behavior in Windows operating system.

IPv6 link local address format
IPv6 link local address format

EUI-64 to generate automatic interface identifier

The EUI-64 mechanism is used to automatically generate the 64-bit interface identifier part of an IPv6 address from a interface MAC address.

To generate 64-bit interface identifier we Insert FF:FE in the middle of the MAC address and then we modify the 7th bit of the first byte of the MAC address to 1 to indicate a locally administered address If the bit is 0 (indicating a globally unique address).

IPv6 EUI-64 Mechanism
IPv6 EUI-64 Mechanism

To demonstrate a real example, I added a new router with IOS version 15.4(1)T in GNS3. After enabling the Ethernet 0/0 interface with the no shutdown command, I activated IPv6 on the interface using the „ipv6 enable“ command.

By running „show int ethernet 0/0“, we can view the MAC address of the interface. Additionally, using the „show ipv6 interface brief“ command, we can observe the IPv6 link-local address that has been automatically generated using the EUI-64 mechanism and assigned to the interface.

If you examine the IPv6 address, you’ll notice that the interface identifier was generated by inserting „FF:FE“ in the middle of the MAC address and inverting the 7th bit of the MAC address from the left.

IOU1#show version
Cisco IOS Software, Linux Software (I86BI_LINUX-ADVENTERPRISEK9-M), Version 15.4(1)T, DEVELOPMENT TEST SOFTWARE
!
interface Ethernet0/0
 no shutdown
 ipv6 enable
!
IOU1#show int ethernet 0/0
Ethernet0/0 is up, line protocol is up
  Hardware is AmdP2, address is aabb.cc00.0100 (bia aabb.cc00.0100)
!
IOU1#show ipv6 interface brief
Ethernet0/0            [up/up]
    FE80::A8BB:CCFF:FE00:100

random interface identifier in ipv6 link local address

When I check the IPv6 link-local address on a Windows system using the „ipconfig“ command, you’ll notice that there is no „FF:FE“ in the interface identifier. This is because, by default, Windows generates the interface identifier randomly rather than using the EUI-64 method. However, you do have the option to change this default behavior in Windows to use EUI-64.

The „%2“ at the end of the link-local address represents the interface number in the Windows environment, which we won’t discuss further at this point.

You may also observe that the gateway address is „fe80::1“. This illustrates two important points. First, the default gateway connected to the local link is using a link-local address, even though it may have a global unicast address. This shows the significance of link-local addresses in IPv6. By default, all routing protocols use the link-local address of the next-hop as the next-hop address, even if the next-hop router has other IP address types.

Second point is that The ipv6 link local address in the gateway is assigned manually and bacause of that you see a very simple address „fe80::1“ as the gateway addresss.

ipv6 link local address example in windows
ipv6 link local address example in windows

configure ipv6 link local address manually

For clients, manually configuring a link-local address is uncommon, but it is a common practice for routers. This is particularly important because a router’s link-local address is often used as the next-hop or gateway address. Using a simple and consistent link-local address can make it easier to identify routers and simplify troubleshooting. Therefore, it’s recommended to manually configure the link-local address on routers.

Since IPv6 link-local addresses are locally significant, meaning they are unique only within their specific link, all different links share the same subnet (fe80::/64) and can potentially have the same IPv6 address. This concept can be leveraged when manually configuring the IPv6 link-local addresses of routers. By assigning the same link-local address to all interfaces on a router, you can more easily identify the router across different links, which also simplifies troubleshooting.

To better understand, let’s demonstrate a real example. I’ll connect two routers, IOU1 and IOU2, to each other through interfaces eth0/0 and eth0/1. I will then manually assign the IPv6 link-local addresses to eth0/0 and eth0/1.

IPv6 Link Local Manual Cofiguration
IPv6 Link Local Manual Cofiguration

The key point here is that I will assign exact the same IPv6 link-local address to both interfaces. This is perfectly fine because link-local addresses are locally significant, meaning it doesn’t matter if two interfaces on different links have the same IPv6 link-local address.

For this example, I’ll assign fe80::1 as the link-local address for all interfaces on router IOU1 and fe80::2 for all interfaces on router IOU2. There will be no overlapping or conflict errors because the link-local addresses are unique to each link.

connectivity with link local address

When pinging a link-local address, you must specify the outgoing interface; otherwise, communication with the link-local address will not be possible. This is because all outgoing interfaces share the same subnet, fe80::/64, making it necessary to indicate which interface should be used.

To better understand, let’s ping the link-local address of IOU2 from IOU1. As you’ll see, the system will prompt you to specify the outgoing interface because it cannot automatically determine which interface to use for the communication.

Output Interface: Ethernet0/1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FE80::2, timeout is 2 seconds:
Packet sent with a source address of FE80::1%Ethernet0/1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/8/25 ms

This is also true when using a link-local address as the next-hop in static or dynamic routing. A link-local address without specifying the outgoing interface is meaningless. Therefore, it is essential to always provide the outgoing interface along with the link-local address when configuring a static route. In dynamic routing, the routing protocol automatically includes the outgoing interface alongside the link-local address in the routing table.

This is an example of an IPv6 static default route that includes a link-local address along with the outgoing interface on IOS routers. We will explore routing in more detail in the following sections.

IOU1(config)#ipv6 route ::/0 Ethernet0/1 fe80::2

As a final point, it’s important to emphasize that link-local addresses in IPv6 have numerous applications especially within the Neighbor Discovery Protocol (NDP), which is crucial for the proper functioning of IPv6 networks. We will explore the details of the NDP protocol iin the upcoming lessons.

Back to: IPv6 (in progress) > IPv6 Unicast Addressing

Leave a Reply

Your email address will not be published. Required fields are marked *


Post comment