IPv6 Protocol Architecture
1 v1.2
New Functional Improvement
• Address Space
– Increase from 32-bit to 128-bit address space RFC
2460
• Management
– StateLess Address AutoConfiguration (SLAAC) means no more need to
configure IP addresses for end systems, even via DHCP
• Performance
– Simplified header means efficient packet processing
– No header checksum re-calculation at every hop (when TTL is
decremented) => left up to the lower and upper layers!
• No hop-by-hop fragmentation - PMTUD
2 v1.2
IPv4/IPv6 Header Comparison
IPv4 Header 20 Bytes IPv6 Header – 40 Bytes
Type of
Version IHL Total Length Traffic Class Flow Label
Service
Next
Identification Flags Fragment offset Payload Length Hop Limit
Header
Time to
Protocol Header Checksum
Live
Source Address
Destination Address
Options Padding
Same name and function
Renamed in IPv6
Not kept in IPv6
New in IPv6
7 v1.2
IPv6 Protocol Header Format
• Version (4-bit):
– 4-bit IP version number (6)
• Traffic class (8-bit): Version Traffic Class Flow Label
– Like DiffServ in IPv4; define Next
Hop Limit
different classes or priorities, First Payload Length
Header
6 bits for DSCP and 2 bits for ECN
Source Address
• Flow label (20-bit):
– allows IPv6 packets to be
identified based on flows Destination Address
(multilayer switching techniques
and faster packet-switching
performance); described in RFC
3697
8 v1.2
IPv6 Protocol Header Format
• Payload length (16-bit):
– Defines the length of the IPv6 payload
Payload= Extension-header + Data
Total Length in IPv4 includes the
header, in IPv6 Basic Header is excluded Version Traffic Class Flow Label
Next
Payload Length Hop Limit
Header
• Next header (8-bit):
– Identifies the type of information
following IPv6 header. Could be upper Source Address
layer (TCP/UDP), or an extension
header (similar to Protocol field in
IPv4).
Destination Address
• Hop limit (8-bit):
– Similar to TTL in IPv4
– Name changed to precisely describe
function
9 v1.2
IPv6 & IPv4 Packet Example
https://www.cloudshark.org/captures/84fd54ad03e0 https://www.cloudshark.org/captures/09f49cda5b80
10 v1.2
IPv6 Extension Header
• IPv6 allows an optional Extension Header in between the
IPv6 header and upper layer header
– Allows adding new features to IPv6 protocol without major re-
engineering
Next Header values:
0 Hop-by-hop option
IPv6 Header 6 TCP
TCP header + data
Next Header = 6
17 UDP
43 Source routing (RFC5095)
44 Fragmentation
50 Encrypted security payload
IPv6 Header Fragment header 51 Authentication
TCP header + data 58 ICMPv6
Next Header = 44 Next header = 6
59 Null (No next header)
60 Destination option
Extension Header Upper Layer PDU
11 v1.2
IPv6 Extension Header (contd)
• An IPv6 packet may carry none or many extension
headers
– A next header value of 6 or 17 (TCP/UDP) indicates there is no
extension header
• the next header field points to TCP/UDP header, which is the payload
• Unless the next header value is 0 (Hop-by-Hop option),
extension headers are processed only by the destination
node, specified by the destination address.
12 v1.2
Extension Header Order
• When more than one extension header is used in the same
packet, it is recommended that those headers appear in the
following order in RFC 8200:
IPv6 header
IPv6 Packet
Hop-by-Hop Options header
IPv6 Header Destination Options header
Routing header
Extension
Headers Fragment header
Authentication header (RFC 4302)
Encapsulating Security Payload header
(RFC 4303)
TCP Segment
Destination Options header
TCP header (Upper-Layer header)
13 v1.2
Chaining Extension Headers
Extension Header Type NH=0
Hop-by-Hop Options 0
Encapsulated IPv6 41 IPv6
header Header
Fragment 44
Destination Options 60
Routing 43
Authentication 51 NH=43 IPv6 Packet
Hop-by-Hop Options
Encapsulating 50 Extension Header
Security Payload
NH=44
TCP (Payload) 6 Routing Header
UDP (Payload) 17 IPv6
NH=60
ICMPv6 58 Fragment Header Payload
NH=6 Destination Options
Extension Header
TCP Segment
14 v1.2
Extension Header Example
https://www.cloudshark.org/captures/7dd0b50eb768
15 v1.2
Fragmentation Handling In IPv6
• In IPv6, fragmentation is only performed by the host/source nodes,
and not the routers along the path (unlike IPv4)
• The
• Each source device tracks the MTU size for each session
• When a IPv6 host has large amount of data to be sent, it will be
sent in a series of IPv6 packets (fragmented)
– IPv6 hosts use Path MTU Discovery (PMTUD) to determine the most optimum
MTU size along the path
16 v1.2
Example of Fragment Header
IPv6
Packet
Host1 Host2
IPv6 network
2001:db8:1::1 2001:db8:2::2
17 v1.2
On the Source Node (Host1)
Host1
IPv6 Packet
IPv6 Header
2001:db8:1::1
TCP
Segment
18 v1.2
On the Source Node (Host1)
Host1
IPv6 Packet
IPv6 Header
2001:db8:1::1
TCP Packet size > Path
Segment MTU,
how to encapsulate
the packet?
19 v1.2
On the Source Node (Host1)
Host1
IPv6 Packet
IPv6 Header
2001:db8:1::1
TCP
Segment Divide the packet
into fragments.
20 v1.2
On the Source Node (Host1)
IPv6 Packet 1
Host1
IPv6 Packet
IPv6 Header
2001:db8:1::1
IPv6 Packet 2
TCP
Segment Divide the packet
into fragments.
IPv6 Packet 3
21 v1.2
On the Source Node (Host1) IPv6 Header
IPv6 Packet 1
Fragment Header
Host1
IPv6 Packet
IPv6 Header
2001:db8:1::1
IPv6 Header
IPv6 Packet 2
TCP Header
Fragment Header
Fragment 1
TCP
Segment Divide the packet
Fragment 2
into fragments.
IPv6 Packet 3
IPv6 Header
Fragment 3
Fragment Header
22 v1.2
On the Source Node (Host1) IPv6 Header
IPv6 Packet 1
Fragment Header
Host1
IPv6 Packet
IPv6 Header
2001:db8:1::1
IPv6 Header
IPv6 Packet 2
TCP Header
Fragment Header
Fragment 1
TCP
Segment Divide the packet
Fragment 2
into fragments.
IPv6 Packet 3
IPv6 Header
Fragment 3
Fragment Header
23 v1.2
Example of Fragment Header
IPv6 Packet IPv6 Packet IPv6 Packet
3 2 1
Host1 Host2
IPv6 network
2001:db8:1::1 2001:db8:2::2
The 3 fragmented packets are transmitted on the path, reach the destination Host2,
without any other fragmentation on the path.
24 v1.2
IPv6 Packet 1 IPv6 Header On the Destination Node (Host2)
Fragment Header
TCP Header
Host2
Fragment 1
Fragment 1
2001:db8:2::2
IPv6 Header
IPv6 Packet 2
Fragment Header
Fragment 2
IPv6 Packet 3
IPv6 Header
Fragment Header
Fragment 3
25 v1.2
IPv6 Packet 1 IPv6 Header On the Destination Node (Host2)
Fragment Header
TCP Header
Host2
Fragment 1
Fragment 1
2001:db8:2::2
IPv6 Header
IPv6 Packet 2
Fragment Header
Fragment 2
Reassemble the
fragments to be the
original packet.
IPv6 Packet 3
IPv6 Header
Fragment Header
Fragment 3
26 v1.2
IPv6 Packet 1 IPv6 Header On the Destination Node (Host2)
Fragment Header
IPv6 Packet
TCP Header
Host2
Fragment 1
Fragment 1 IPv6 Header
2001:db8:2::2
IPv6 Header
IPv6 Packet 2
Fragment Header
Fragment 2
Reassemble the
fragments to be the
original packet.
IPv6 Packet 3
IPv6 Header
Fragment Header
Fragment 3
27 v1.2
On the Destination Node (Host2)
IPv6 Packet
Host2
IPv6 Header
2001:db8:2::2
TCP
Segment
Reassemble the
fragments to be the
original packet.
28 v1.2
Path MTU Discovery
• With PMTUD, the source IPv6 device assumes the initial PMTU is
the MTU of the first hop in the path.
– upper layers (Transport/Application) send packets based on the first hop MTU
– If the device receives an “ICMPv6 packet too big (Type 2)” message, it informs
the upper layer to reduce its packet size, based on the actual MTU size
(contained in the message) of the node that dropped the packet
https://www.cloudshark.org/captures/7dd0b50eb768
29 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3
Link MTU values are marked on each link.
I have a packet with
size 2000 bytes to
send to Host2.
It is larger than
MTU, I have to
fragment it.
Host1 :
MTU
cache=1500
30 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 : Link MTU values are marked on each link.
MTU cache=1500
Packet 1
size=1500bytes
31 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 : Link MTU values are marked on each link.
MTU cache=1500
Packet 1
size=1500bytes
32 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Link MTU values are marked on each link.
Packet 1
size=1500bytes
33 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Link MTU values are marked on each link.
Packet 1
size=1500bytes
Because 1300 < 1500, the packet
1 cannot be transmitted.
34 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Link MTU values are marked on each link.
Packet 1
size=1500bytes
Drop!
Because 1300 < 1500, the
Packet 1 cannot be transmitted.
ICMPv6 Error:
Packet size too big!
MTU = 1300
35 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Link MTU values are marked on each link.
Packet 1
size=1500bytes
Drop!
Because 1300 < 1500, the packet
1 cannot be transmitted.
ICMP Error:
Packet size too big!
MTU = 1300
Host1 Update :
MTU cache=1300
36 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Link MTU values are marked on each link.
Packet
Packet 1
2
size=1500bytes
size=1500bytes
Drop!
Drop!
Because
Because 1300
1300 << 1500,
1500, the
the packet
packet
1 cannot be transmitted.
1 cannot be transmitted.
ICMPv6 Error:
Packet size too big!
MTU = 1300 Captured packets are available:
https://www.cloudshark.org/captures/7dd0b50eb768
37 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 : Link MTU values are marked on each link.
MTU cache=1300
Packet 2
size=1300bytes
38 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 :
MTU cache=1300 Link MTU values are marked on each link.
Packet 2
size=1300bytes
39 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 : Link MTU values are marked on each link.
MTU cache=1300
Packet 2
size=1300bytes
40 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 : Link MTU values are marked on each link.
MTU cache=1300
Packet 2
size=1300bytes
41 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 : Link MTU values are marked on each link.
MTU cache=1300
Packet 2
size=1300bytes
42 v1.2
Path MTU Discovery
Host1 1500 1500 1300 1500 Host2
2001:db8:1::1 Router1 Router2 Router3 2001:db8:2::2
Host1 : Link MTU values are marked on each link.
MTU cache=1300
Packet 2
size=1300bytes
Path MTU = 1300
43 v1.2
QUESTIONS?
44 v1.2
Thank You!
45 v1.2