- Encapsulating security payload header, see
[RFC2406]. - Destination options header to be processed
only by the final destination. - Upper-layer header (e.g. TCP, UDP, etc.).
IPv6 requires that all links have an MTU greater
than or equal to 1280 octets, although a value of
around 1500 octets is recommended. In order to
find the largest packets that can be transferred,
the path MTU discovery mechanisms as de-
scribed in [RFC1981] can be implemented.
For various reasons IPv6 can be used for tun-
nelling other IP packets. One motivation could
be to ease the transition from IPv4 to IPv6 by
utilising tunnelling during the transition phase.
IPv6 tunnelling is a technique of forwarding a
packet encapsulated within an IPv6 packet. The
forwarding path between the source and the des-
tination of the tunnel packet is called an IPv6
tunnel. For the encapsulated packet, such a tun-
nel can be seen as a virtual link, as depicted in
Figure 6. Tunnels looking like virtual point-to-
multipoint links may also be composed.
A tunnel is unidirectional. Two such tunnels can
be combined to have a bidirectional tunnelling
between the same two end-nodes.
When encapsulating a packet, an IPv6 header
(and additional optional extension headers) is
prepended to the original packet. This can be
nested, that is having several “levels” of tunnels
as shown in Figure 6. The source address is the
tunnel entry point and the destination address is
the tunnel exit point.
Naturally, tunnelling may also be applied for
IPv4.
3 IP Error and
Control Messages
The Internet Control Message Protocol (ICMP)
is seen as a mandatory part of IP. An ICMP
message is transferred in the data field of an IP
packet. However, ICMP is not considered as a
higher-level protocol. This protocol allows
hosts/terminals and routers to exchange informa-
tion for operational and maintenance purposes.
Each ICMP message begins with three fields: a
one octet type field, a one octet code field that
provides further information about the message
type, and a two octet checksum field.
In case the ICMP message was initiated as a
result of an error occurring when handling an IP
packet, the IP packet header of that packet and
first 8 octets of the packet causing the error are
included. Some uses of ICMP are: testing desti-
nation status, reporting on unreachable destina-
tions, flow control (to tell a source to reduce its
sending rate), requesting change of routing (e.g.
sent by a router detecting an inefficient routing
being applied), detecting circular or excessive
long routes (e.g. due to the Timefield in the IP
packet header being decreased to zero), detecting
incorrect IP packet headers, synchronising
clocks and estimating transfer delays (using time
stamping functions in the identified router/host),
and obtaining a network address and subnet
address mask.
IPv6 uses an updated version of the Internet
Control Message Protocol, referred to as ICMPv6
(see [RC2463]). ICMPv6 must be implemented
by every IPv6 node (being an integral part of
IPv6). Similar to above, IPv6 nodes uses ICMPv6
to various tasks, like reporting errors and ping-
ing. Two classes are defined: error messages
Figure 4 Example of changing the routing header information along a packet’s path
Figure 5 Example of fragmenting IPv6 packets
Figure 6 Terms related to
IPv6 tunnelling
S N1 N2 D
Source address = S
Destination address = N1
Routing header:
Header extension length = 4
Segments left = 2
Address [1] = N2
Address [2] = D
Source address = S
Destination address = N2
Routing header:
Header extension length = 4
Segments left = 1
Address [1] = N1
Address [2] = D
Source address = S
Destination address = D
Routing header:
Header extension length = 4
Segments left = 0
Address [1] = N1
Address [2] = N2
Unfragmentable
part
Fragmentable part
Unfragmentable
part
Fragment Last fragment
header
Unfragmentable
part
Fragment Last fragment
header
•
•
tunnel
tunnel end-node
tunnel entry-point
original
packet
inner
tunnel
outer
tunnel
tunnel end-node
tunnel exit-point
tunnel
packet
nested
tunnel
packet
tunnel
header
original
header
nested tunnel
header