The Link Local Addresses
CCENT2

The Link Local Addresses

A “The name is the recipe” address if ever there was one, packets sent to a link-local address never leave the local link. I mean that a router will not forward them.

They can’t forward them actually so these packets that go to a linked local address they literally can not leave, since a router will not forward a packet destined for a link-local address. These are unicast messages, so the only device that will actually process it is the destination host.

Quick reminder: Unicast means it’s destined for one host, and  multicast is destined for a group of hosts (a defined group) and then finally we have a broadcast that is destined for everybody (except in version 6 we don’t have broadcast but we do have in version 4).

The router created the link local address on its own. You and I didn’t do that… and it does so in accordance with – wait for it –  a few simple rules!  That address has been compressed.

(The one that we saw on the router) and that’s been compressed along with a few other simple rules, so let’s uncompress it and examine it in all its 128-bit glory and splendor.

Compressed: FE80::21B:D4FF:FEC2:990

Uncompressed:  FE80:0000:0000:0000:021B:D4FF:FEC2:0990

The first part of this address comes from the link-local reserved address block, FE80::/10.

That means the first ten bits have to match FE80, so let’s break that down into binary and bold the bits that have to match:

FE80 = 1111 1110 1000 0000

That leaves us four possible combinations for the last two bits in the third block – 00, 01, 10, and 11.  That means link-local addresses should be able to begin with FE8, FE9, FEA, and FEB.

However, RFC 4291 (request for comments) which is a highly technical document, states that the last 54 bits of a link-local address should all be set to zero, and the only value that makes that possible is FE80.  Therefore, all link-local addresses will begin with FE80:0000:0000:0000:0000

Note : FE80::/10 is a good link-local reserved address block to know

We are halfway there!

The second half of the link-local address is the 64-bit interface identifier.

The most common way to get that value is to allow the router to create the identifier via EUI-64 rules. Let’s have a look at this process and compare it to the identifier we see on our router.

Calculating the interface Identifier

How Cisco Routers Create Interface Identifiers:

The router takes the interfaces MAC address, chops it in half, sticks FFFE in the middle, and then performs one little innocent bit inversion. Done!

“Bit inversion”?

Let’s see what this process is all about with a walkthrough, and we’ll verify the theory on our router. Let’s assume a MAC of 11-22-33-aa-bb-cc.  We’ll chop that in half and insert FFFE:     

1122:33FF:FEAA:BBCC  

Simple enough! Now for that bit inversion, and by the way, “bit inversion” is a fancy way of saying “If it’s a zero, make it a one, and if it’s a one, make it a zero.”  We need to convert the first two values into a binary string (and both of them are ones in this case) and invert the 7th bit.

The string is 0001 0001, and inverting 7th bit gives us 0001 0011. The result is 1 3.

Replace the first two characters with the ones you just came up with, and you’re done.

1322:33FF:FEAA:BBCC is our interface identifier!

Now some of you are saying why am I even bothering to convert the first hex value if I’m not changing anything?  You don’t have to… if you’re comfortable with just grabbing the second value and changing the third bit in it you’re fine.

Sounds great, but does that theory match reality? Let’s find out by using the MAC address on R2’s Fast0/0 interface and manually determining the interface identifier.

So let’s go ahead and go back to our screen. We had R2 right here,  I’ve got show IPv6 int fast 0/0’, the link local address, and the interface identifier part is highlighted.

Where can I get the MAC address from in this command? Nowhere!  Because it is not there!

So if I can’t find it there, will find it elsewhere!

why are we getting this information? Why has Internet Protocol processing disabled?

That sounds pretty bad. Well what it means of course is IP version for processing is disabled. So let’s go just ‘show int fast0/0’

Always go back to the basics when in doubt, and there is our mac address on the second line of output. And the “BIA” stands for “burned in address” and usually these two values are going to be the same.

The only time you’ll see something different here is if someone has actually changed the MAC address on the interface which is rare.

So there’s where we’re beginning a with 001b.d4c2.0990.

What do you think the interface identifier is?

We chop that address in and insert FFFE, which gives us 001b.d4ff.fec2.0990.

First two characters are 00, so we know the result of that binary conversion is 0000 0000. Inverting the 7th bit gives us 0000 0010, or 0 2.

We then replace the original 00 at the front of that address with 02, resulting in 021b.d4ff.fec2.0990

Drop a little leading zero compression on that identifier and we have 21b.df44.fec2.990.

Does that match the interface identifier portion of the IPv6 address on Fast0/0?.

That’s exactly what we have up there on the board.

So fantastic stuff there you now know how the router came up with it and should you be asked on the exam to manually come up with one on your own you can certainly do that.

Using The Interface Identifier as Host Address

I want to just show you how you could use the interface identifier as the host portion of the global unicast Address and you don’t have to enter the interface identifier to do so.

So we show you how to do that as well as help to remove an IPv6 address.

I’ll take the one off that we have here.

And that is it.

So what are we going to get now when we run the ‘show IPv6 interface’ ?

We’re gonna get nothing! Because any time we run a show command and it shows us an empty line and then drops back down to the prompt, we all know what that means.

There’s nothing to show us.

So we’re going to fix that but we’re going to use a slightly different method of configuring the version 6 address on that same interface…

Let’s go  back up to that interface and what you’re going to do is leave the host address off.

Couple of options here and the one we’re going to use is the eui-64. Those are the rules we’ve been playing by so far as far as the interface identifier goes and that’s what we’re sticking with.  So we’re seeing here is the prefix. Now I want to use the interface identifier as the rest of the address (as the host portion) and when I put I-64 here we have no other options.

Let’s run ‘show IPv6 interface’ now

You’ll notice that global unicast address is similar to link-local address (red lines)

Also note that there is an EU over here.

Anytime you see EUI there, that means that’s how we arrive to that global unicast address.

(We use the UI interface identifier to do so).

So that’s just another way to get the host address set up. Of course we still have to do this one manually.

Leave feedback about this

  • Quality
  • Price
  • Service

PROS

+
Add Field

CONS

+
Add Field
Choose Image
Choose Video