IPV6 – The Solution for IPv4 Exhaustion
As we already aware, each and every device that connects in the internet is assigned with a serial number called IP Address, and IPv4 is the default standard that we are using to allocate IP address to each internet connected device.
How many IPv4 addresses available and who manages them?
The IPv4 address space is a 32 bit field. There are 4.3 billion unique IP addresses available to assign to the internet connected devices. As per RFS5735 , there are several addresses reserved for special purpose, and the rest of IPv4 available for public Internet devices. These available IPv4 address pool is globally managed by IANA. And IANA further delegates the job of IP assignment to “Regional Internet Registries”
A regional Internet registry (RIR) is an organization that manages the allocation and registration of Internet number resources within a particular region of the world. Internet number resources include IP addresses and autonomous system (AS) numbers.
( Image Source – wikipedia )
The Regional Internet Registry system evolved over time, eventually dividing the world into five RIRs:
- African Network Information Centre (AfriNIC)for Africa
- American Registry for Internet Numbers (ARIN) for the United States, Canada, several parts of the Caribbean region, and Antarctica.
- Asia-Pacific Network Information Centre (APNIC) for Asia, Australia, New Zealand, and neighboring countries
- Latin America and Caribbean Network Information Centre (LACNIC) for Latin America and parts of the Caribbean region
- Réseaux IP Européens Network Coordination Centre (RIPE NCC) for Europe, Russia, the Middle East, and Central Asia
At any point of time, any individual IPv4 address managed by IANA ( or RIR), can be in any one of five states:
- reserved for special use, or
- part of the IANA unallocated address pool,
- part of the unassigned pool held by an RIR,
- assigned to an end user entity but not advertised in the routing system, or
- assigned and advertised in BGP.
IPv4 Exhaustion – what does it mean?
IPv4 Exhaustion is a condition “when the pool of available addresses in each RIR ( Regional Internet Registry) reaches to the threshold, so that no more general use IPv4 allocations possible” . The IPv4 Exhaustion counter added to the side bar, will give the Projected Exhaustion date for each RIR.
When an individual RIR pool reaches a low threshold size a further address block is allocated by IANA , from it’s unallocated address pool, to that specific RIR
The Solution for IPv4 Exhaustion is IPv6
IPv6 was designed to solve the problem of IPv4 address exhaustion, as well as adding a number of additional features. Where the IPv4 address is made up of 32 bits, IPv6 addresses are made up of 128 bits, and that means IPv6 can allocate 2128 IPv6 addresses to the internet connected devices. The rest of this article focus on the features of IPv6 addressing.
IPV6 Comparison with IPV4
1. IPV6 is very different from IPV4
2. IPV4 is composed of 32 bits & is written in dotted-decimal notation
3. IPV6 made up of 128bits & is written in colon-hexadecimal notation
Ex: – 192.168.1.10 / 2001:f0d0:1002:0011:0000:0000:0000:0002
8 fields separated by colons / each filed is made up of 16 bits represented by 4 hex digits
Each hexa digit represents 4 bits (4hexa x 4bits = 16 bits)
4. The first 64 bits (4 fields) network prefix / network address
Subnet is a part of this network prefix, though for private n/w you can have this be any length
5. Next portion is the host addresses number (last 64 bits – last 4 fields)
This is the address number for the network interface within the n/w
6. With IPV6 you will have multiple unicast addresses associated to your n/w interface device.
it includes the link-local address along with other addresses you have assigned to it for your n/w.
IP V6 – Header
Version (4 bits): IP version always 6.
Traffic class (8 bits): Used for QoS. Like the TOS field in IPv4.
Flow label (20 bits): Used for packet labelling, End-to-end QoS.
Payload length (16 bits): Length of the payload header in bytes. Limits packet size to 64 KB.
Next header (8 bits): Code for the extension header or UL protocol. Like protocol type field in IPv4.
Hop limit (8 bits): Number of hops until the packet gets discarded. TTL in IPv4.
Source address (128 bit): IPv6 source address.
Destination addresses (128 bits): IPv6 destination address.
ICMP V6 – Header
ICMP type (8 bits): Error messages have a 0 high-order-bit (types 0 to 127), info messages have a 1 highorder-bit (types 128 to 255).
ICMP code (8 bits): Further specifies the kind of message along with the type. type 1 code 4 is “Destination port unreachable”.
ICMP checksum (16 bits): Checksum to prevent data corruption.
1. Virtually unlimited amount of IP Addresses in comparison to ipv4
2. QOS (Quality of Service) having a traffic-class field & flow in IP header
3. IPV6 has upgraded multicast capabilities, this includes a reserved address range for multicast traffic
Multicast is required to be supported in IPV6, there is not a broadcast address
4. Ability to have end to end IP-SEC
5. NODES have ability to have local addresses accessible on the local n/w without the need of assignment
6. Ability to obtain auto configuration of gateways settings and optionally DNS settings on the n/w using
NDP- Neighborhood discovery protocol [ability to use DHCP with IPV6 also]
1. In some cases IPV4 faster due to many routers having h/w acceleration to that allows them to route IPV4 packets faster than IPV6 packets
2. Some applications can have potential slowdown on DNS Lookups. Applications will look up both the IPV4 & IPV6 record for a given address. Leading to the DNS Lookup to take twice as long or more
3. All software is ipv6 capable. Especially legacy software (if you want ipv6 best to start with RHEL 6)
4. IPV6 is not inoperable with IPV4
Zero Compression in IPV6
To make IPV6 addresses easier you can use a technique known as Zero Compression
We can remove one or more leading zeros from one or more groups of hexadecimal digits
0000 to 0
0008 to 8
0070 to 70
0120 to 120
We can remove consecutive fields of zeros using a double colon ” :: ” this can be done once in an address
0000:0000:0000:0000:0000:0000:0000:0001 to ::1
2001:0000:0000:0000:0000:0000:0000:0000 to 2001::
2001:f0d0:1002:0011:0000:0000:0000:0002 to 2001:f0d0:1002:0011::2
2001:0000:0000:1011:0000:0000:2044:1005 to 2001:0:0:01011::2044:1055
2001:0000:0000:1011:0000:0000:2044:1005 to 2001::01011:0:0:2044:1055
Link-Local Address & Loopback Addresses
- This address is always associated with the n/w interface enabling IPV6 support.
- IPV6 Addresses beginning with FE80 are known as link local addresses
- These addresses cannot be routed and are only accessible on the local network
- Link local addresses start with FE80 but the last 4 fields (64 bits) per 3 Fields (48 bits)
- Represent a value calculated based off of the mac address of the network interface on the machine
FE80::224:d7ff:fec6:7286 –> FE80 is called as link local prefix
- Think these addresses as locally accessible addresses, Unlike IPV4 if you connect two or more machines on to a Private n/w they can instantly have access to each other and have their own unique generated IP’s, without the hassle of setting up a IP and subnet for individual machines
- The Link Local address is calculated differently on different operating systems.
- On Linux the Link-Local address uses the 48bit MAC address to compose a 64-bit identifier for the specific host using EUI-64 format.
- IPV4 loop back is 127.0.0.1
- IPV6 loop back is ::1
IPv6 Address Scopes
- ::/128 unspecified addresses
- ::1/128 localhost
- fe80::/10 link local scope
- fec0::/10 site local scope, intended as RFC 1918 successor, deprecated in RFC 3879
- fc00::/7 unique local unicast scope, RFC 4193, divided into:
- fc00::/8 centrally assigned by unknown (see http://bit.ly/IETFfc00), routed within a site
- fd00::/8 free for all, global ID must be generated randomly, routed within a site
- ff00::/8 multicast scope, after the prefix ff there are 4 bits for flags (0RPT) and 4 bits for the scope
- ::/96 IPv4-compatible IPv6 address, example: ::192.168.1.2, deprecated with RFC 4291
- ::ffff:0:0/96 IPv4-mapped IPv6 address, example: ::ffff:192.168.2.1, see RFC 4038
- 2000::/3 global unicast scope, divided into:
- 2001::/16 /32 subnets assigned to providers, they assign /48, /56 or /64 to the customer
- 2001:db8::/32 reserved for use in documentation
- 2001:678::/29 Provider Independent (PI) addresses and anycasting TLD nameservers
- 2002::/16 6to4 scope, 2002:c058:6301:: is the 6to4 public router anycast (RFC 3068)
- 3ffe::/16 6Bone scope, returned to IANA with RFC 3701, you should not see these
- 64:ff9b::/96 prefix used for representing IPv4 addresses in the IPv6 address space, see RFC 6052
Well Known Multicast Addresses (T-Flag = 0)
- ff0X::1 all nodes address (scopes 1 and 2)
- ff0X::2 all routers address (scopes 1, 2 and 5)
- ff05::1:3 all site-local DHCP servers
- ff02::9 all link-local RIP routers
- ff02::1:ff/104 solicited-node address, the 24 low-order bits are equal to the interfaces IP 24 low-order bits
- ff02::1:2 all link-local DCHP relay agents and servers
- ff0X::fb Multicast Domain Name Service v6 (all scopes)
- ff0X::101 Network Time Protocol (all scopes)
That’s it for now. In my next post, we will discuss about the implementation of IPv6 in Redhat Enterprise Linux .