ccie blog

IPv6 Link Local Addresses

Key points about link-local addresses:

  • Addresses are automatically generated
  • Addresses can be statically configured, using the interface command #ipv6 address fe80::x/64 link-local
  • Not reachable from another link (i.e. not routable)
  • Always start FE80
  • Used as a source address for IPv6 in the neighbor discovery protocol when sending a router advertisement

 

Link local addresses start with FE80/10. The first 10 bits in binary are always 1111  1110  10. The next 54 bits are always zero. So basically, the first 64 bits of link local addresses are always going to be FE80:0000:0000:0000.

The last 64 bits are the 48 bit mac address, with the hex value FFFE (16bits) added in the middle. For example, let’s say the mac is aaaa.aaaa.aaaa. We would write the last 64 bits as aaaa.aaff.feaa.aaaa. This would make the full 128 bit link local address to be:

fe80::aaaa:aaff:feaa:aaaa

However, there is actually one more step you must complete in order to work out the address. Check out the config below.

R5(config)#int fa0/0
R5(config-if)#ipv6 enable
R5(config-if)#end
R5#
R5#sh
*Nov 10 18:55:22.811: %SYS-5-CONFIG_I: Configured from console by console
R5#show ipv6 int fa0/0
FastEthernet0/0 is up, line protocol is up
  IPv6 is enabled, link-local address is FE80::A8AA:AAFF:FEAA:AAAA
  No Virtual link-local address(es):
  Global unicast address(es):
    2002::1, subnet is 2002::/64
!.... output omitted for brevity
R5#sh int fa0/0 | i Hardware
  Hardware is Gt96k FE, address is aaaa.aaaa.aaaa (bia c47d.4f3b.dbfc)

What happens, is the 7th binary bit of the mac address gets inverted. Converting AA from hex to binary results in 10101010. Notice the 7th bit is normally 1. Well if we change that to a 0, then convert it back to hex, we get A8 (Hex to binary conversion is explained here). So the actual 128 bit address is fe80::a8aa:aaff:feaa:aaaa.

Leave a comment

Your comment