📄 rfc1933.txt
字号:
RFC 1933 IPv6 Transition Mechanisms April 1996
encapsulating node because it is the IPv4 source of the encapsulated
packet.
The ICMP "packet too big" error messages are handled according to
IPv4 Path MTU Discovery [8] and the resulting path MTU is recorded in
the IPv4 layer. The recorded path MTU is used by IPv6 to determine
if an IPv6 ICMP "packet too big" error has to be generated as
described in section 4.1.1.
The handling of other types of ICMP error messages depends on how
much information is included in the "packet in error" field, which
holds the encapsulated packet that caused the error.
Many older IPv4 routers return only 8 bytes of data beyond the IPv4
header of the packet in error, which is not enough to include the
address fields of the IPv6 header. More modern IPv4 routers may
return enough data beyond the IPv4 header to include the entire IPv6
header and possibly even the data beyond that.
If the offending packet includes enough data, the encapsulating node
may extract the encapsulated IPv6 packet and use it to generating an
IPv6 ICMP message directed back to the originating IPv6 node, as
shown below:
+--------------+
| IPv4 Header |
| dst = encaps |
| node |
+--------------+
| ICMP |
| Header |
- - +--------------+
| IPv4 Header |
| src = encaps |
IPv4 | node |
+--------------+ - -
Packet | IPv6 |
| Header | Original IPv6
in +--------------+ Packet -
| Transport | Can be used to
Error | Header | generate an
+--------------+ IPv6 ICMP
| | error message
~ Data ~ back to the source.
| |
- - +--------------+ - -
IPv4 ICMP Error Message Returned to Encapsulating Node
Gilligan & Nordmark Standards Track [Page 12]
RFC 1933 IPv6 Transition Mechanisms April 1996
4.1.4. IPv4 Header Construction
When encapsulating an IPv6 packet in an IPv4 datagram, the IPv4
header fields are set as follows:
Version:
4
IP Header Length in 32-bit words:
5 (There are no IPv4 options in the encapsulating
header.)
Type of Service:
0
Total Length:
Payload length from IPv6 header plus length of IPv6 and
IPv4 headers (i.e. a constant 60 bytes).
Identification:
Generated uniquely as for any IPv4 packet transmitted by
the system.
Flags:
Set the Don't Fragment (DF) flag as specified in
section 4.1.1. Set the More Fragments (MF) bit as
necessary if fragmenting.
Fragment offset:
Set as necessary if fragmenting.
Time to Live:
Set in implementation-specific manner.
Protocol:
41 (Assigned payload type number for IPv6)
Gilligan & Nordmark Standards Track [Page 13]
RFC 1933 IPv6 Transition Mechanisms April 1996
Header Checksum:
Calculate the checksum of the IPv4 header.
Source Address:
IPv4 address of outgoing interface of the
encapsulating node.
Destination Address:
IPv4 address of tunnel endpoint.
Any IPv6 options are preserved in the packet (after the IPv6 header).
4.1.5. Decapsulating IPv6-in-IPv4 Packets
When an IPv6/IPv4 host or a router receives an IPv4 datagram that is
addressed to one of its own IPv4 address, and the value of the
protocol field is 41, it removes the IPv4 header and submits the IPv6
datagram to its IPv6 layer code.
The decapsulation is shown below:
+-------------+
| IPv4 |
| Header |
+-------------+ +-------------+
| IPv6 | | IPv6 |
| Header | | Header |
+-------------+ +-------------+
| Transport | | Transport |
| Layer | ===> | Layer |
| Header | | Header |
+-------------+ +-------------+
| | | |
~ Data ~ ~ Data ~
| | | |
+-------------+ +-------------+
Decapsulating IPv6 from IPv4
When decapsulating the IPv6-in-IPv4 packet, the IPv6 header is not
modified. If the packet is subsequently forwarded, its hop limit is
decremented by one.
The encapsulating IPv4 header is discarded.
Gilligan & Nordmark Standards Track [Page 14]
RFC 1933 IPv6 Transition Mechanisms April 1996
The decapsulating node performs IPv4 reassembly before decapsulating
the IPv6 packet. All IPv6 options are preserved even if the
encapsulating IPv4 packet is fragmented.
After the IPv6 packet is decapsulated, it is processed the same as
any received IPv6 packet.
4.2. Configured Tunneling
In configured tunneling, the tunnel endpoint address is determined
from configuration information in the encapsulating node. For each
tunnel, the encapsulating node must store the tunnel endpoint
address. When an IPv6 packet is transmitted over a tunnel, the
tunnel endpoint address configured for that tunnel is used as the
destination address for the encapsulating IPv4 header.
The determination of which packets to tunnel is usually made by
routing information on the encapsulating node. This is usually done
via a routing table, which directs packets based on their destination
address using the prefix mask and match technique.
4.2.1. Default Configured Tunnel
Nodes that are connected to IPv4 routing infrastructures may use a
configured tunnel to reach an IPv6 "backbone". If the IPv4 address
of an IPv6/IPv4 router bordering the backbone is known, a tunnel can
be configured to that router. This tunnel can be configured into the
routing table as a "default route". That is, all IPv6 destination
addresses will match the route and could potentially traverse the
tunnel. Since the "mask length" of such default route is zero, it
will be used only if there are no other routes with a longer mask
that match the destination.
The tunnel endpoint address of such a default tunnel could be the
IPv4 address of one IPv6/IPv4 router at the border of the IPv6
backbone. Alternatively, the tunnel endpoint could be an IPv4
"anycast address". With this approach, multiple IPv6/IPv4 routers at
the border advertise IPv4 reachability to the same IPv4 address. All
of these routers accept packets to this address as their own, and
will decapsulate IPv6 packets tunneled to this address. When an
IPv6/IPv4 node sends an encapsulated packet to this address, it will
be delivered to only one of the border routers, but the sending node
will not know which one. The IPv4 routing system will generally
carry the traffic to the closest router.
Using a default tunnel to an IPv4 "anycast address" provides a high
degree of robustness since multiple border router can be provided,
and, using the normal fallback mechanisms of IPv4 routing, traffic
Gilligan & Nordmark Standards Track [Page 15]
RFC 1933 IPv6 Transition Mechanisms April 1996
will automatically switch to another router when one goes down.
4.3. Automatic Tunneling
In automatic tunneling, the tunnel endpoint address is determined
from the packet being tunneled. The destination IPv6 address in the
packet must be an IPv4-compatible address. If it is, the IPv4
address component of that address -- the low-order 32-bits -- are
extracted and used as the tunnel endpoint address. IPv6 packets that
are not addressed to an IPv4-compatible address can not be tunneled
using automatic tunneling.
IPv6/IPv4 nodes need to determine which IPv6 packets can be sent via
automatic tunneling. One technique is to use the IPv6 routing table
to direct automatic tunneling. An implementation can have a special
static routing table entry for the prefix 0:0:0:0:0:0/96. (That is,
a route to the all-zeros prefix with a 96-bit mask.) Packets that
match this prefix are sent to a pseudo-interface driver which
performs automatic tunneling. Since all IPv4-compatible IPv6
addresses will match this prefix, all packets to those destinations
will be auto-tunneled.
4.4. Default Sending Algorithm
This section presents a combined IPv4 and IPv6 sending algorithm that
IPv6/IPv4 nodes can use. The algorithm can be used to determine when
to send IPv4 packets, when to send IPv6 packets, and when to perform
automatic and configured tunneling. It illustrates how the
techniques of dual IP layer, configured tunneling, and automatic
tunneling can be used together. Note that is just an example to show
how the techniques can be combined; IPv6/IPv6 implementations may
provide different algorithms. This algorithm has the following
properties:
- Sends IPv4 packets to all IPv4 destinations.
- Sends IPv6 packets to all IPv6 destinations on the same link.
- Using automatic tunneling, sends IPv6 packets encapsulated in
IPv4 to IPv6 destinations with IPv4-compatible addresses that
are located off-link.
- Sends IPv6 packets to IPv6 destinations located off-link when
IPv6 routers are present.
- Using the default IPv6 tunnel, sends IPv6 packets encapsulated
in IPv4 to IPv6 destinations with IPv6-only addresses when no
IPv6 routers are present.
Gilligan & Nordmark Standards Track [Page 16]
RFC 1933 IPv6 Transition Mechanisms April 1996
The algorithm is as follows:
1) If the address of the end node is an IPv4 address then:
1.1) If the destination is located on an attached link, then
send an IPv4 packet addressed to the end node.
1.2) If the destination is located off-link, then;
1.2.1) If there is an IPv4 router on link, then send an
IPv4 format packet. The IPv4 destination
address is the IPv4 address of the end node.
The datalink address is the datalink address of
the IPv4 router.
1.2.2) Else, the destination is treated as
"unreachable" because it is located off link and
there are no on-link routers.
2) If the address of the end node is an IPv4-compatible IPv6
address (i.e. bears the prefix 0:0:0:0:0:0), then:
2.1) If the destination is located on an attached link, then
send an IPv6 format packet (not encapsulated). The IPv6
destination address is the IPv6 address of the end node.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -