📄 rfc2473.txt
字号:
Network Working Group A. Conta
Request for Comments: 2473 Lucent Technologies Inc.
Category: Standards Track S. Deering
Cisco Systems
December 1998
Generic Packet Tunneling in IPv6
Specification
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
This document defines the model and generic mechanisms for IPv6
encapsulation of Internet packets, such as IPv6 and IPv4. The model
and mechanisms can be applied to other protocol packets as well, such
as AppleTalk, IPX, CLNP, or others.
Table of Contents
1. Introduction..................................................2
2. Terminology...................................................2
3. IPv6 Tunneling................................................4
3.1 IPv6 Encapsulation.......................................6
3.2 IPv6 Packet Processing in Tunnels........................7
3.3 IPv6 Decapsulation.......................................7
3.4 IPv6 Tunnel Protocol Engine..............................8
4. Nested Encapsulation.........................................11
4.1 Limiting Nested Encapsulation..........................12
4.1.1 Tunnel Encapsulation Limit Option................13
4.1.2 Loopback Encapsulation...........................15
4.1.3 Routing Loop Nested Encapsulation................15
5. Tunnel IPv6 Header...........................................16
5.1 Tunnel IPv6 Extension Headers...........................17
6. IPv6 Tunnel State Variables..................................19
6.1 IPv6 Tunnel Entry-Point Node............................19
6.2 IPv6 Tunnel Exit-Point Node.............................19
Conta & Deering Standards Track [Page 1]
RFC 2473 Generic Packet Tunneling in IPv6 December 1998
6.3 IPv6 Tunnel Hop Limit...................................19
6.4 IPv6 Tunnel Packet Traffic Class........................20
6.5 IPv6 Tunnel Flow Label..................................20
6.6 IPv6 Tunnel Encapsulation Limit.........................20
6.7 IPv6 Tunnel MTU.........................................20
7. IPv6 Tunnel Packet Size Issues...............................21
7.1 IPv6 Tunnel Packet Fragmentation........................21
7.2 IPv4 Tunnel Packet Fragmentation........................22
8. IPv6 Tunnel Error Reporting and Processing...................22
8.1 Tunnel ICMP Messages....................................27
8.2 ICMP Messages for IPv6 Original Packets.................28
8.3 ICMP Messages for IPv4 Original Packets.................29
8.4 ICMP Messages for Nested Tunnel Packets.................30
9. Security Considerations......................................30
10. Acknowledgments.............................................31
11. References..................................................31
Authors' Addresses..............................................32
Appendix A. Risk Factors in Recursive Encapsulation.............33
Full Copyright Statement........................................36
1. Introduction
This document specifies a method and generic mechanisms by which a
packet is encapsulated and carried as payload within an IPv6 packet.
The resulting packet is called an IPv6 tunnel packet. The forwarding
path between the source and destination of the tunnel packet is
called an IPv6 tunnel. The technique is called IPv6 tunneling.
A typical scenario for IPv6 tunneling is the case in which an
intermediate node exerts explicit routing control by specifying
particular forwarding paths for selected packets. This control is
achieved by prepending IPv6 headers to each of the selected original
packets. These prepended headers identify the forwarding paths.
In addition to the description of generic IPv6 tunneling mechanisms,
which is the focus of this document, specific mechanisms for
tunneling IPv6 and IPv4 packets are also described herein.
The keywords MUST, MUST NOT, MAY, OPTIONAL, REQUIRED, RECOMMENDED,
SHALL, SHALL NOT, SHOULD, SHOULD NOT are to be interpreted as defined
in RFC 2119.
2. Terminology
original packet
a packet that undergoes encapsulation.
Conta & Deering Standards Track [Page 2]
RFC 2473 Generic Packet Tunneling in IPv6 December 1998
original header
the header of an original packet.
tunnel
a forwarding path between two nodes on which the payloads of
packets are original packets.
tunnel end-node
a node where a tunnel begins or ends.
tunnel header
the header prepended to the original packet during
encapsulation. It specifies the tunnel end-points as source and
destination.
tunnel packet
a packet that encapsulates an original packet.
tunnel entry-point
the tunnel end-node where an original packet is encapsulated.
tunnel exit-point
the tunnel end-node where a tunnel packet is decapsulated.
IPv6 tunnel
a tunnel configured as a virtual link between two IPv6 nodes, on
which the encapsulating protocol is IPv6.
tunnel MTU
the maximum size of a tunnel packet payload without requiring
fragmentation, that is, the Path MTU between the tunnel entry-
point and the tunnel exit-point nodes minus the size of the
tunnel header.
tunnel hop limit
the maximum number of hops that a tunnel packet can travel from
the tunnel entry-point to the tunnel exit-point.
Conta & Deering Standards Track [Page 3]
RFC 2473 Generic Packet Tunneling in IPv6 December 1998
inner tunnel
a tunnel that is a hop (virtual link) of another tunnel.
outer tunnel
a tunnel containing one or more inner tunnels.
nested tunnel packet
a tunnel packet that has as payload a tunnel packet.
nested tunnel header
the tunnel header of a nested tunnel packet.
nested encapsulation
encapsulation of an encapsulated packet.
recursive encapsulation
encapsulation of a packet that reenters a tunnel before exiting
it.
tunnel encapsulation limit
the maximum number of nested encapsulations of a packet.
3. IPv6 Tunneling
IPv6 tunneling is a technique for establishing a "virtual link"
between two IPv6 nodes for transmitting data packets as payloads of
IPv6 packets (see Fig.1). From the point of view of the two nodes,
this "virtual link", called an IPv6 tunnel, appears as a point to
point link on which IPv6 acts like a link-layer protocol. The two
IPv6 nodes play specific roles. One node encapsulates original
packets received from other nodes or from itself and forwards the
resulting tunnel packets through the tunnel. The other node
decapsulates the received tunnel packets and forwards the resulting
original packets towards their destinations, possibly itself. The
encapsulator node is called the tunnel entry-point node, and it is
the source of the tunnel packets. The decapsulator node is called the
tunnel exit-point, and it is the destination of the tunnel packets.
Conta & Deering Standards Track [Page 4]
RFC 2473 Generic Packet Tunneling in IPv6 December 1998
Note:
This document refers in particular to tunnels between two nodes
identified by unicast addresses - such tunnels look like "virtual
point to point links". The mechanisms described herein apply also to
tunnels in which the exit-point nodes are identified by other types
of addresses, such as anycast or multicast. These tunnels may look
like "virtual point to multipoint links". At the time of writing this
document, IPv6 anycast addresses are a subject of ongoing
specification and experimental work.
Tunnel from node B to node C
<---------------------->
Tunnel Tunnel
Entry-Point Exit-Point
Node Node
+-+ +-+ +-+ +-+
|A|-->--//-->--|B|=====>=====//=====>=====|C|-->--//-->--|D|
+-+ +-+ +-+ +-+
Original Original
Packet Packet
Source Destination
Node Node
Fig.1 Tunnel
An IPv6 tunnel is a unidirectional mechanism - tunnel packet flow
takes place in one direction between the IPv6 tunnel entry-point and
exit-point nodes (see Fig.1).
Tunnel from Node B to Node C
<------------------------>
Tunnel Tunnel
Original Entry-Point Exit-Point Original
Packet Node Node Packet
Source Destination
Node Node
+-+ +-+ +-+ +-+
| |-->--//-->--| |=====>=====//=====>======| |-->--//-->--| |
|A| |B| |C| |D|
| |--<--//--<--| |=====<=====//=====<======| |--<--//--<--| |
+-+ +-+ +-+ +-+
Original Original
Packet Packet
Destination Tunnel Tunnel Source
Node Exit-Point Entry-Point Node
Node Node
<------------------------->
Tunnel from Node C to Node B
Fig.2 Bi-directional Tunneling Mechanism
Conta & Deering Standards Track [Page 5]
RFC 2473 Generic Packet Tunneling in IPv6 December 1998
Bi-directional tunneling is achieved by merging two unidirectional
mechanisms, that is, configuring two tunnels, each in opposite
direction to the other - the entry-point node of one tunnel is the
exit-point node of the other tunnel (see Fig.2).
3.1 IPv6 Encapsulation
IPv6 encapsulation consists of prepending to the original packet an
IPv6 header and, optionally, a set of IPv6 extension headers (see
Fig.3), which are collectively called tunnel IPv6 headers. The
encapsulation takes place in an IPv6 tunnel entry-point node, as the
result of an original packet being forwarded onto the virtual link
represented by the tunnel. The original packet is processed during
forwarding according to the forwarding rules of the protocol of that
packet. For instance if the original packet is an:
(a) IPv6 packet, the IPv6 original header hop limit is decremented
by one.
(b) IPv4 packet, the IPv4 original header time to live field (TTL)
is decremented by one.
At encapsulation, the source field of the tunnel IPv6 header is
filled with an IPv6 address of the tunnel entry-point node, and the
destination field with an IPv6 address of the tunnel exit-point.
Subsequently, the tunnel packet resulting from encapsulation is sent
towards the tunnel exit-point node.
+----------------------------------//-----+
| Original | |
| | Original Packet Payload |
| Header | |
+----------------------------------//-----+
< Original Packet >
|
v
<Tunnel IPv6 Headers> < Original Packet >
+---------+ - - - - - +-------------------------//--------------+
| IPv6 | IPv6 | |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -