The Basics of IPv6

It’s a brave new world out there and sadly we’re running out of IPv4 address space. This information lab will discuss thew basics of the next generation IP addressing scheme known as Internet Protocol version 6 (IPv6).

Real World Application & Core Knowledge

The huge data communications network that wraps around our planet which is known as the “Internet” is considered by many one of mankind’s greatest invention and accomplishments. The ability to share information from any location on the planet to any other location within within seconds has changed the way we live since the days of messengers riding horses through rough lands to deliver a letter. However since the dawn of the internet we have been faced with many challenges and yet we as a race have created solutions to proceed forward. While these solutions sometimes are not permanent, but rather “band-aid” like it still serves its purpose for technological evolution. After all trial and error is how we learn right? If you attempt to complete a task and fail you try again until you’ve succeeded.

In the early days of the birth of the internet, IP version 4 was thought to be “inexhaustible”. After all who in those days could ever see 4.3 billions logical addresses ever used. Sadly when the internet was young many people did not envision a PC in every home and access to the internet on every cell phone which today has pushed the IPv4 address space on the brink of exhaustion.

In the early 1990’s various experts noticed that the IPv4 address space was being allocated at an alarming rate and calculated exhaustion within years. A new IP addressing scheme known as “IP Next Generation” (IPng) was in its early development stages however it was noted that standardizing such proposed solutions would take considerable time. So therefore such alarming allocations of IPv4 address space gave birth to Network Address Translation (NAT); Also known as the band-aid of IPv4. When deployed in a Port Address Translation manner (a type of NAT) it allowed for many internal IP private addresses (RFC1918 Addressing) to be translated to a single outside address thus easing the demand on the IPv4 address space.

This ultimately slowed down the allocations of the IPv4 address space but did not stop it. NAT in and of its self has become a standard in today’s modern networks. In today’s world you will have a hard time finding a network that does not utilize Network Address Translation in one way or another. As the internet continues to grow day after day with the addition of new cellular devices, tablets, wireless devices and IP enabled smart home which allows you to control several aspects of your home appliances such lights, refrigerators, heating and air conditioning equipment and more the requirement for IP addressing will continue to grow.

There are several parts of the world that use layers and layers upon Network Address Translation because there simply is not enough IPv4 address space for everyone. China alone can easily consume over a quarter of the IPv4 address space and still not have enough addressing to cover all devices in the country. The same applies to India.

The standards of IPv6 were completed several years ago and it is only recently that companies and organizations have taken interest into migrating from IPv4 to IPv6. One of the two driving factors of a global IPv6 migration is that Network Address Translation stifles innovation in areas such as peer-to-peer networking, grid computing, end-to-end security, global quality of service guarantees and internet access through mobile devices such as cell phones and tablets.

IPv4 us made up of a 32-bit number represented by 4 decimal octets and has a maximum address space of roughly 4.3 billion addresses. IPv6 on the other hand uses a 128-bit address making 340 trillion trillion trillion IP addresses available. to be exact the number is;

340,282,366,920,938,463,463,374,607,431,768,211,456

In a nut shell that is enough IP address space to assign an entire IPv4 address space (4.3 billion IP addresses) to every man woman and child and barely put a dent in the IPv6 address space.

There are approximately 79,135,434,167,660,000,000,000,000,000 IPv4 address spaces (4.3 billion) in the entire IPv6 address space.

IPv6 addresses are different then IPv4 address in many ways and not just in length. You should already know the representation of the IPv4 address which is a 32-bit number represented by a 4 decimal octet number such as “192.168.21.82“. IPv6 however is represented by a HEX address such as; “2002:1834:0110:0394:AF3E:2501:36FF:0A0B“

That is going to be quite a hard number to memorize, IPv6 will rely heavily on DNS (Domain Name System) in the future which translates names to IP addresses. such as ipv6.google.com to 2001:4860:b002:0000:0000:0000:0000:0068

There are a two representation rules that will help make engineers lives so much easier when dealing with IPv6 addressing. The first one being concatenation of the IPv6 address. This gives an engineer the ability to collapse an IPv6 address to a shorter, easier to write IPv6 address. The basic rule states that the multiple zeros in any 16-bit segment do not have to be written and if any 16-bit segment has fewer then four hexadecimal digits it is then assumed that the missing digits are leading zeros and can collapsed to using the double semicolon “::” However this method can only be used ONCE.

For an example; 2001:1934:0101:0000:0000:0000:0000:0035 can be shorted to 2001:1934:0101::35

The placement of the double semicolon does not matter as long as it is used only once. Take for example the following IPv6 address;

2001:A0D3:0000:0000:0343:0000:0000:0323 can be represented as either;

2001:A0D3::0343:0000:0000:0323 or 2001:A0D3:0000:0000:0343::0323

If you use the double Semicolon more then once it can invalidate the IP address in a way that multiple IP Addresses can be derived from it. For example;2001:A0D3::0343::0323 can be any translated to any of the following addresses;

2001:A0D3:0000:0343:0000:0000:0000:0323

2001:A0D3:0000:0000:0343:0000:0000:0323

2001:A0D3:0000:0000:0000:0343:0000:0323

Some IPv6 addresses can be shorted to as little as 5 hexadecimal characters. For example; ff01:0000:0000:0000:0000:0000:0000:0005 can be written as ff01::5

The second rule that allows an engineer to shorten the written notation of an IPv6 address is the ability to not write leading 0’s in an IP address. For example; 2001:A0D3:0032:0000:0000:0000:0000:0023 can become 2001:A0D3:32:0000:0000:0000:0000:23 and can be further shortened with the double semicolon to 2001:A0D3:32::23

Keep in mind when using this method that trialing zeros CANNOT be omitted in written notation as this would change the absolute number of the IP Address. For a basic example; HEX: A0 is 160 in decimal format. If you omit off the trailing zero to A it then becomes 10 and not 160 thus changing the number.

IPv6 has three different types of addressing as listed below;

Unicast

Multicast

Anycast

Unlike IPv4, IPv6 does not utilize broadcast. There is however an “all nodes” multicast address which serves the same purpose as the broadcast address.

As you should know, a Unicast address is an address that identifies a single device. The general format of an IPv6 address goes;
48bit Global Routing Prefix (Network Portion)
16 bit Subnet ID (Network Portion)
64 Bit Interface ID (Host Portion)

The host portion of an IPv6 address is called the Interface ID. Keep in mind a single interface can have multiple IPv6 addresses unlike IPv4 which can have a single primary IP address and multiple secondary addresses which pose several limitations in routing protocols.

IANA and the Regional Internet Registries such as RIPE, LACNIC and ARIN typically assign /48 IPv6 address allocations to the Local Internet Registries which include large ISP’s such as AT&T, Level3, Verizon and so on which in turn allocate smaller allocations to customers. However some ISP’s can be assigned a larger prefix then a /48 if the customer is extremely large.

In IPv6 addressing a single subnet is represented as /64 address. From an addressing stand point think of the IPv6 /64 as the common IPv4 /24.

There are several types of IPv6 addresses that are currently standardized. As a CCNA you should know these address types as given below;

IPv6 AnyCast Addresses is an address that represents a service rather then a device. For example a service can reside on multiple servers which but is represented by a single AnyCast address. In which case the closest Server logically to the traffic source would be used. For example A Single PC on a network segment is trying to reach a particular DNS Server. When the PC attempts to communicate to the AnyCast address the router will route the source traffic to the destination that is closest to the source. Server 1 has a metric of 20, Server 2 has a metric of 30 and Server 3 would have a metric of 40 then the source PC would be routed to Server 1.

This provides an advantage that PC’s will always use the closest services oriented devices such as DNS, NTP, WINS, Proxy server, etc.. anything that can be stored in a data center technically. This also gives the ability to ensure facility redundancy. For example you have 2 DNS servers in a single data center and that data center catches fire, you do not lose you’re entire DNS infrastructure which applications can rely heavily upon.

IPv6 multicast addresses are similar to their predecessor IPv4 Multicast addresses. A Multicast address does not identify a single device but a group of devices. For example when a single PC attempts to join a multicast group to receive streaming video traffic. The server sends to the same IP address however the network devices throughout the network route that traffic to PC’s that have joined that group. This solves the requirement of one-to-one communications when dealing with single source to multiple destination scenario. (A Server sending to multiple clients) Traditionally the Server would have to send a single unicast stream to every single client and if this stream perhaps is a compressed 1080P HD video stream then the bandwidth required would be around 9Mbps per every unicast device. If the server only had a 1Gbps connection to the network then it would max out at around 100 clients.

However, when using multicast the server only needs to send a single 9Mbps compressed HD video stream to a multicast group address as the destination and any PC that has joined the multicast group can receive the stream.

When an IPv6 host first becomes active on a link that is a broadcast link such as Ethernet, it has the ability to auto-configure an IPv6 address. The first step in the process to determine the 64bit interface ID portion of the IPv6 address is a mechanism called MAC-to-EUI64. In a nut shell, this takes the 48-bit Media Access Control (MAC) address of an interface which is assumed to be globally unique and converts it into a 64-bit interface id by inserting a reserved 16-bit value of 0xFFFe into the middle of the MAC address and flipping the Universal/Local bit of the MAC address to 1, which represents universal.

First off lets look at the MAC address in detail, We’ll use the following example; 0019.B941.E3E3 which is represented in Binary as;
00000000.00011001.10111001.01000001.11100011.11100011

The UL Bit (Universal/Local) bit is the 7 most significant bit starting at the beginning of the MAC address. So when you flip the 7th bit of the MAC address it becomes;
00000010.00011001.10111001.01000001.11100011.11100011 = 0219.B941.E3E3

Now to finish the MAC-to-EUI64 conversion you’ll place 0xFFFE in the middle of the address as shown below;
0219.B9FF.FE41.E3E3

Now you have an MAC-to-EUI64 auto-configured Host ID Portion of the IPv6 address but of course this is only half of the IPv6 address. If you look back to the IPv6 address types you’ll see Link-Local addressing which is 0xFF80::/64. This is the address that will be used in the auto-configuration.

The MAC address is considered to be globally unique but as with any IPv6 address assignment(s) the IPv6 address much undergo a duplicate address detection mechanism. When a device is assigned an IPv6 address it will send a Neighbor Solicitation (NS) to the solicited-node multicast address (FF02:0:0:0:0:1:FF00::/104) with the last 24bits of the configured IPv6 address prepended onto the address. For example; in the previous MAC-to-EUI auto-configured device example, the device would send a NS to FF02::1:FF01:E3E3. If a device receives a Neighbor Solicitation that is destined to an IP Address assigned to a local interface it will respond with a Neighbor Advertisement (NA) with the target address and the destination address set to the tentative address. When the originating node receives the NA, it knows that the tentative address is a duplicate and cannot be used.

The MAC-to-EUI64 auto-configuration mechanism raises many privacy concerns such due to the fact that the MAC address is assumed to be globally unique it can be used to track an individual as the device moves from subnet to subnet or even ISP to ISP. This gives someone the ability to determine rather or not you’re at work or if you’re at a coffee shop or a wireless hot spot. Further investigations into traffic can be used to log your locations at specific times such as when you’re at home, when you’re traveling, when you’re working etc…

RFC3041 addresses this security concern by defining the “IPv6 privacy addresses” An IPv6 privacy address is an address in which the Interface ID is generated by an algorithm using a pseudo-random number. What makes this so practical is that interface ID (last 64bits of the IPv6 address) changes approximately once a day or on a configured timer period and also whenever the device acquires a new IPv6 prefix.

Subnetting in IPv6 is much like subnetting IPv4 and the number of host per subnet is insanely larger but when you think of it on terms of multiples of /64 then it should all click. A Host is represented as a /128 and a subnet is represented as /64. For example you have a single /63 subnet assigned to you by your ISP which is 2001:1::/63. This subnet has two /64 subnets which are 2001:1:0:0::/64 and 2001:1:0:1::/64. If you’ve been assigned the 2001:1::/62 subnet then you have four /64 subnets which include; 2001:1:0:0::/64, 2001:1:0:1::/64, 2001:1:0:2::/64 and 2001:1:0:3::/64.

When thinking in terms of routing protocols, general the next hop is the interface assigned unicast IP address of the router in which the traffic is passed to in the transit path however IPv6 changes that. When subnets are advertised from router to router, the next hop address is not the configured unicast address but rather the Link Local address of the router as the next hop.

For example, R1 has Fa0/0 configured using the IPv6 address 2001:1::1/64 and R2 has the Fa0/0 interface configured with IP address 2001:2::2/64 and both routers have RIPng (RIP Next Generation for IPv6) configured on their FastEthernet0/0 interfaces. When viewing the routing table on R1 to see the next hop to 2001:2::2, the next hop is R2’s Fa0/0 link-local IP address; FE80::20D:29FF:FED1:D460

You will go further into depth with the IPv6 dynamic routing protocols throughout the next few labs.

Lab Review Questions

1. Write the following IPv6 address into short hand notation: 2001:0012:0000:0000:00AB:0000:0000:09FB

2. What bit in the MAC address is the Universal/Local bit?

3. The ISP has allocated the following subnet to you; 2001:0BAD:BEEF:3200::/62. You must subnet this network into four /64 networks. What are the four /64 subnet addresses that can be derived from the ISP allocated subnet?

4. What is the IPv6 Multicast address for the OSPF Designated Routers?

5. What is the bit size of the host portion of an IPv6 address?

6. Approximately how many addresses are their in the IPv4 and IPv6 Address space(s)?

7. What is the purpose of an the IPv6 Anycast address?

8. What is the representation of the IPv6 Loopback IP address?

9. How is an RFC3041 IPv6 privacy address generated?

10. What would be the default Link-Local IPv6 Address of a Routers FastEthernet0/0 interface if that routers FastEthernet0/0 interface had the MAC address of: 000f.242e.bf80