To recap, the IPv6 address types are:
- Unicast.
- One-to-one communication. Unique address assigned to an interface, a packet sent to a Unicast address will be received by one single interface.
There are several types of Unicast addresses:- Global Unicast.
- Link Local.
- Unique Local. (in place of Site-Local which was deprecated in 2004).
- Special Addresses
- Unspecified.
- Loopback.
- Multicast.
- One-to-many communication. A Multicast address identifies a group of interfaces. A packets sent to a Multicast address are received by a group of interfaces that may be in different hosts.
- Anycast.
- One-to-one of many communication. An Anycast address represents a group of interfaces, but the packet sent to this address will be delivered only to the interface which is closest, in terms of the routing protocol cost value.
Also, since Anycast addresses are allocated from the Unicast address space, they are syntactically indistinguishable from each other. So, an Anycast address is a Unicast address that was assigned to more than one interface.
Unicast Addresses: Global Unicast.
This address uniquely
identifies an interface on a network, it is globally routable and
it has a hierarchical structure. You can think of a Global
Unicast address as the Public address on IPv4.
Configuration.
A Global Unicast
addresses can be configured either automatically (stateless)
using Stateless Address Auto-Configuration - SLACC or
manually (state-full) through the CLI.Please
note that when I say that a Global Unicast address can be
"automatically" configured, it does not mean that
its configuration will be 100% automatic, it means that you can
either configure a specific value for the Interface ID
manually using the command "ipv6 address xxxx::x/64"
on the CLI or, you might prefer letting the
SLAAC come up with the Interface ID, by
using the command "ipv6 address 2001::/64 eui-64".
But, as you can see, in both cases you will need to go through the CLI and enter commands to configure either option. (More on SLAAC and EUI-64 later).
But, as you can see, in both cases you will need to go through the CLI and enter commands to configure either option. (More on SLAAC and EUI-64 later).
Here is a short video on
Global Unicast address configuration:
Global Unicast address structure.
When the IANA allocates
an IPv6 address to you, you get an address that looks like this:
Let´s examine that
structure in details:
The first 48 bits
are referred to as the Global Routing Prefix and it is further
divided into 4 fields:
- 001: First 3 bits are fixed and they identify a Global Unicast address, so the available range goes from 2000::/3 to 3FFF::/3. (The IANA is still assigning Global Unicast addresses in the 2001::/3 range so you might not see anything other than 2001::/3 for a while).
- TLA ID: As you can see on the picture above, a Global Unicast address has a hierarchical structure and this Top Level Aggregation ID (13bits) represents the highest level of the routing hierarchy. It is allocated by the IANA to RIRs and in turn to the local ISPs and finally to the organizations.
- NLA ID: The Next Level Aggregation ID (24bits), identifies the second highest level of routing hierarchy which is the organization that has been allocated this block of address.
- SLA ID: Also referred to as Subnet ID, the Site Level Aggregation ID, identifies a subnet within the Organization's Topology. It is used for subnetting, and since it is 16 bits long, there are a total of 65,536 possible subnets (216 ).
- Interface ID: Identifies a single interface in a subnet within the organization`s topology.
Hierarchical
Structure.
Let´s take a closer look
at the hierarchical Structure:
Let´s
see it in a topology:
Unicast
Addresses: Link-Local.
The most important
concept that you need to understand about a Link-Local address
is the following;
The Link-Local
address is, as its name implies, a local address used only
inside a network link/segment, it will not be routed
outside the broadcast domain in which it was originated.
The following picture
will help you visualize where a Link-Local address is used:
So, learning where a
Link-Local address is used was fairly easy, but what about its
purpose?... One of the best ways, I think, to understand what
something is or what it does, is to know what it is used for, so here
is a list of Link-Local address uses:
- Router's communication on the same link/segment.
- Address Auto-Configuration (SLAAC).
- Neighbor Discovery Protocol (NDP).
- Routing protocol advertisements and next-hop address.
- Host-to-Host connection (crossover cable).
- “Host-Switch-Host” connection (no router).
Notice that a even though a Link-Local
address is not routed, it can still be used to send user data (the
last two uses listed above), in other words; if you have a
Host-to-Host connection (using a crossover cable) or you have a bunch
of hosts connecting through a switch, it is all just one segment,
hence Link-Local addresses will be used to send user data because
packets are NOT being routed outside the local segment.
Configuration.
Just
like with a Global
Unicast
address, a Link-Local
address can be configured either automatically (stateless) through
SLACC
and EUI-64,
or manually (stateful) using the “ipv6
address FE80::x link-local”
command, where “x”
is the unique value (including 0) you want to use for the Interface
ID.
However,
the Link-Local
address auto-configuration, as opposed to the Global
Unicast
auto-configuration, is 100% automatic, you do not need to enter any
commands to configure it, it is auto-configured either when you use
the command “ipv6
enable”
on an interface or, when you assign a
Global
Unicast
address to an interface.
Address
Structure.
The address block
FE80::/10 has been reserved for Link Local addresses.
This means that a Link Local address has the 10 (/10)
most significant bits set to 1111 1110 10 so,
according to this, a Link Local address will start with either
FE8, FE9, FEA or FEB because of bits 11th and 12th
can still be either a 1 or a 0, providing for other
possible values for hex 8.
The picture above shows
the first 10 bits set to 1111 1110 10 as it should, that is
the rule, but it also says that the following 54bits should
also be set to 0s, it does not leave any other possibility but
zeroes, thus, eliminating the FE9, FEA and FEB
possibilities. (This is because bits 11th
and 12th will always be set 0, according
to the graph above).
Yet, when you manually
configure a Link-Local address on an interface, either FE9,
FEA or FEB will be accepted as a valid Link-Local
address!
OK, I want to give you a
fair warning about the statement above; it does not work in Packet
Tracer!
If you want to try
assigning a Link-Local address to an interface, other than
FE80::, like FEA0:: for example, Packet Tracer does
not accept it:
Please note that when
Link-Local addresses are configured with SLAAC, the RFC
statement coincides perfectly. In other words; when assigning a
Link-Local address automatically, the address will always
start with FE8 followed by 54 zeroes (FE80::)...
hmm, maybe the statement is referring to this scenario only?...
Well, I guess we can
summarize this by saying that if a Link-Local address was
configured automatically (which is 99% of the time), it will
always be FE80::, but if you come across an FE9, FEA or
FEB, you know that it was configured manually.
Quick
video to check your understanding:
Subnetting.
Subnetting...
SUBNETTING... it was a big word on IPv4, lots of math involved... not
so much on IPv6 though.
Even
though at a CCNA level there is not much math in IPv6 subnetting, it
can get pretty complicated, especially from an structural point a
view (search for multi-level IPv6 subnetting and you'll see what I
mean), but thankfully, we do not need to go that deep.
Here
is what you need to know about IPv6 Subnetting for CCNAs; The scope
for subnetting hasn't changed, it's 1 subnet per All subnetting
occurs in the Subnet
ID
field and it's as easy as assigning each subnet needed, a unique hex
value between 0000
and FFFF.
That's
a total of 65,536
possibilities!
Yes,
that's right, with a /64
IPv6
address, we can have 65,536
subnets... if you think that is wasteful for most, wait until we talk
about the Interface
ID next!
Now,
there is no need at all for subnetting the interface bits, let´s see
why that is; The Interface
ID
it´s 64bits,
this means that each
subnet
can have 264
unique
addresses...and that is... wait for it... 18,446,774,073,709,551,616
unique
host... sorry again... I mean interface addresses!
Now
you're thinking; wait a minute, there are 4,294,967,296
TOTAL
IPv4
addresses, and with IPv6 we can have 18,446,...
-the
big number we just mentioned- for each
subnet!... man, IPv6
is big!... Yeah... it is!
So that's
it; change the Subnet ID to uniquely represent each of your
subnets and go home... or Moe's Tavern if it's Friday! :O)
And
before you ask, yes, it is possible to “borrow” interface bits to
create more subnets, but there are a couple of very good reasons why
you shouldn't; first and foremost, because you will never need more
than 65,536
subnets, and second; because for IPv6
auto-configuration
to work, it needs a 64bit
Interface ID.
For example, a very common IPv6
configuration method is Stateless
Address Auto-Configuration -
SLAAC,
and this method uses the Extended
Unique Identifier -
EUI-64
address, which takes the interface's 48bit MAC, sticks FFFE
right in the middle and then flips the 7th
bit, so it'll end up with a unique 64bit
Interface ID -we
will talk about IPv6 auto-configuration and the EUI-64 address in
more detail, later on in our discussion.
Here
is a couple of pictures, to help you visualize where subnetting takes
place for IPv4 and IPv6:
IPv4
Address:
IPv6
Address:
END OF PART II
---------------------------------------------------------------------------------------------------------------------------
References: