Network Working Group                                     E. Nordmark
Request for Comments: 2765                           Sun Microsystems
Category: Standards Track                               February 2000
        
Network Working Group                                     E. Nordmark
Request for Comments: 2765                           Sun Microsystems
Category: Standards Track                               February 2000
        

Stateless IP/ICMP Translation Algorithm (SIIT)

无状态IP/ICMP转换算法(SIIT)

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.

本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2000). All Rights Reserved.

版权所有(C)互联网协会(2000年)。版权所有。

Abstract

摘要

This document specifies a transition mechanism algorithm in addition to the mechanisms already specified in [TRANS-MECH]. The algorithm translates between IPv4 and IPv6 packet headers (including ICMP headers) in separate translator "boxes" in the network without requiring any per-connection state in those "boxes". This new algorithm can be used as part of a solution that allows IPv6 hosts, which do not have a permanently assigned IPv4 addresses, to communicate with IPv4-only hosts. The document neither specifies address assignment nor routing to and from the IPv6 hosts when they communicate with the IPv4-only hosts.

除了[TRANS-MECH]中已经指定的机制外,本文件还指定了一种转换机制算法。该算法在网络中单独的转换器“框”中在IPv4和IPv6数据包报头(包括ICMP报头)之间进行转换,而不需要这些“框”中的任何每个连接状态。此新算法可作为解决方案的一部分使用,该解决方案允许未永久分配IPv4地址的IPv6主机与仅IPv4主机通信。当IPv6主机与仅IPv4的主机通信时,文档既不指定地址分配,也不指定往返IPv6主机的路由。

Acknowledgements

致谢

This document is a product of the NGTRANS working group. Some text has been extracted from an old Internet Draft titled "IPAE: The SIPP Interoperability and Transition Mechanism" authored by R. Gilligan, E. Nordmark, and B. Hinden. George Tsirtsis provides the figures for Section 1. Keith Moore provided a careful review of the document.

本文件是NGTRANS工作组的产品。一些文本摘自R.Gilligan、E.Nordmark和B.Hinden撰写的题为“IPAE:SIPP互操作性和转换机制”的旧互联网草案。George Tsirtsis提供了第1节的数据。基思·摩尔仔细审阅了这份文件。

Table of Contents

目录

   1.  Introduction and Motivation..............................    2
      1.1.  Applicability and Limitations.......................    5
      1.2.  Assumptions.........................................    7
      1.3.  Impact Outside the Network Layer....................    7
   2.  Terminology..............................................    8
      2.1.  Addresses...........................................    9
      2.2.  Requirements........................................    9
   3.  Translating from IPv4 to IPv6............................    9
      3.1.  Translating IPv4 Headers into IPv6 Headers..........   11
      3.2.  Translating UDP over IPv4...........................   13
      3.3.  Translating ICMPv4 Headers into ICMPv6 Headers......   13
      3.4.  Translating ICMPv4 Error Messages into ICMPv6.......   16
      3.5.  Knowing when to Translate...........................   16
   4.  Translating from IPv6 to IPv4............................   17
      4.1.  Translating IPv6 Headers into IPv4 Headers..........   18
      4.2.  Translating ICMPv6 Headers into ICMPv4 Headers......   20
      4.3.  Translating ICMPv6 Error Messages into ICMPv4.......   22
      4.4.  Knowing when to Translate...........................   22
   5.  Implications for IPv6-Only Nodes.........................   22
   6.  Security Considerations..................................   23
   References...................................................   24
   Author's Address.............................................   25
   Full Copyright Statement.....................................   26
        
   1.  Introduction and Motivation..............................    2
      1.1.  Applicability and Limitations.......................    5
      1.2.  Assumptions.........................................    7
      1.3.  Impact Outside the Network Layer....................    7
   2.  Terminology..............................................    8
      2.1.  Addresses...........................................    9
      2.2.  Requirements........................................    9
   3.  Translating from IPv4 to IPv6............................    9
      3.1.  Translating IPv4 Headers into IPv6 Headers..........   11
      3.2.  Translating UDP over IPv4...........................   13
      3.3.  Translating ICMPv4 Headers into ICMPv6 Headers......   13
      3.4.  Translating ICMPv4 Error Messages into ICMPv6.......   16
      3.5.  Knowing when to Translate...........................   16
   4.  Translating from IPv6 to IPv4............................   17
      4.1.  Translating IPv6 Headers into IPv4 Headers..........   18
      4.2.  Translating ICMPv6 Headers into ICMPv4 Headers......   20
      4.3.  Translating ICMPv6 Error Messages into ICMPv4.......   22
      4.4.  Knowing when to Translate...........................   22
   5.  Implications for IPv6-Only Nodes.........................   22
   6.  Security Considerations..................................   23
   References...................................................   24
   Author's Address.............................................   25
   Full Copyright Statement.....................................   26
        
1. Introduction and Motivation
1. 介绍和动机

The transition mechanisms specified in [TRANS-MECH] handle the case of dual IPv4/IPv6 hosts interoperating with both dual hosts and IPv4-only hosts, which is needed early in the transition to IPv6. The dual hosts are assigned both an IPv4 and one or more IPv6 addresses. As the number of available globally unique IPv4 addresses becomes smaller and smaller as the Internet grows there will be a desire to take advantage of the large IPv6 address and not require that every new Internet node have a permanently assigned IPv4 address.

[TRANS-MECH]中指定的转换机制处理双IPv4/IPv6主机与双主机和仅IPv4主机互操作的情况,这是向IPv6转换的早期需要的。双主机同时分配了IPv4和一个或多个IPv6地址。随着互联网的发展,可用的全球唯一IPv4地址的数量越来越少,人们希望利用庞大的IPv6地址,而不是要求每个新的互联网节点都有一个永久分配的IPv4地址。

There are several different scenarios where there might be IPv6-only hosts that need to communicate with IPv4-only hosts. These IPv6 hosts might be IPv4-capable, i.e. include an IPv4 implementation but not be assigned an IPv4 address, or they might not even include an IPv4 implementation.

有几种不同的场景,其中可能存在需要与仅IPv4主机通信的仅IPv6主机。这些IPv6主机可能支持IPv4,即包括IPv4实现但未分配IPv4地址,或者甚至可能不包括IPv4实现。

- A completely new network with new devices that all support IPv6. In this case it might be beneficial to not have to configure the routers within the new network to route IPv4 since none of the

- 一个全新的网络,包含所有支持IPv6的新设备。在这种情况下,不必在新网络中配置路由器来路由IPv4可能是有益的,因为

hosts in the new network are configured with IPv4 addresses. But these new IPv6 devices might occasionally need to communicate with some IPv4 nodes out on the Internet.

新网络中的主机配置了IPv4地址。但这些新的IPv6设备可能偶尔需要与Internet上的某些IPv4节点通信。

- An existing network where a large number of IPv6 devices are added. The IPv6 devices might have both an IPv4 and an IPv6 protocol stack but there is not enough global IPv4 address space to give each one of them a permanent IPv4 address. In this case it is more likely that the routers in the network already route IPv4 and are upgraded to dual routers.

- 添加了大量IPv6设备的现有网络。IPv6设备可能同时具有IPv4和IPv6协议堆栈,但没有足够的全局IPv4地址空间为它们中的每一个提供永久IPv4地址。在这种情况下,网络中的路由器更有可能已经路由IPv4并升级为双路由器。

However, there are other potential solutions in this area:

然而,在这方面还有其他潜在的解决方案:

- If there is no IPv4 routing inside the network i.e., the cloud that contains the new devices, some possible solutions are to either use the translators specified in this document at the boundary of the cloud, or to use Application Layer Gateways (ALG) on dual nodes at the cloud's boundary. The ALG solution is less flexible in that it is application protocol specific and it is also less robust since an ALG box is likely to be a single point of failure for a connection using that box.

- 如果网络(即包含新设备的云)内没有IPv4路由,一些可能的解决方案是在云边界使用本文档中指定的转换器,或者在云边界的双节点上使用应用层网关(ALG)。ALG解决方案的灵活性较低,因为它是特定于应用程序协议的,而且它的健壮性也较低,因为ALG盒可能是使用该盒的连接的单点故障。

- Otherwise, if IPv4 routing is supported inside the cloud and the implementations support both IPv6 and IPv4 it might suffice to have a mechanism for allocating a temporary address IPv4 and use IPv4 end to end when communicating with IPv4-only nodes. However, it would seem that such a solution would require the pool of temporary IPv4 addresses to be partitioned across all the subnets in the cloud which would either require a larger pool of IPv4 addresses or result in cases where communication would fail due to no available IPv4 address for the node's subnet.

- 否则,如果云内部支持IPv4路由,并且实现同时支持IPv6和IPv4,那么在与仅IPv4的节点通信时,拥有一种分配临时地址IPv4和使用IPv4端到端的机制就足够了。然而,这种解决方案似乎需要在云中的所有子网之间划分临时IPv4地址池,这可能需要更大的IPv4地址池,或者导致由于节点子网没有可用的IPv4地址而导致通信失败。

This document specifies an algorithm that is one of the components needed to make IPv6-only nodes interoperate with IPv4-only nodes. Other components, not specified in this document, are a mechanism for the IPv6-only node to somehow acquire a temporary IPv4 address, and a mechanism for providing routing (perhaps using tunneling) to and from the temporary IPv4 address assigned to the node.

本文档指定的算法是使仅IPv6节点与仅IPv4节点互操作所需的组件之一。本文档中未指定的其他组件包括用于仅IPv6节点以某种方式获取临时IPv4地址的机制,以及用于在分配给节点的临时IPv4地址之间提供路由(可能使用隧道)的机制。

The temporary IPv4 address will be used as an IPv4-translated IPv6 address and the packets will travel through a stateless IP/ICMP translator that will translate the packet headers between IPv4 and IPv6 and translate the addresses in those headers between IPv4 addresses on one side and IPv4-translated or IPv4-mapped IPv6 addresses on the other side.

临时IPv4地址将用作IPv4转换的IPv6地址,数据包将通过无状态IP/ICMP转换器传输,该转换器将在IPv4和IPv6之间转换数据包头,并在一端的IPv4地址和另一端的IPv4转换或IPv4映射的IPv6地址之间转换这些头中的地址一边

This specification does not cover how an IPv6 node can acquire a temporary IPv4 address and how such a temporary address be registered in the DNS. The DHCP protocol, perhaps with some extensions, could probably be used to acquire temporary addresses with short leases but that is outside the scope of this document. Also, the mechanism for routing this IPv4-translated IPv6 address in the site is not specified in this document.

本规范不包括IPv6节点如何获取临时IPv4地址以及如何在DNS中注册此类临时地址。DHCP协议(可能有一些扩展)可能用于获取具有短租约的临时地址,但这超出了本文档的范围。此外,本文档中未指定在站点中路由此IPv4转换IPv6地址的机制。

The figures below show how the Stateless IP/ICMP Translation algorithm (SIIT) can be used initially for small networks (e.g., a single subnet) and later for a site which has IPv6-only hosts in a dual IPv4/IPv6 network. This use assumes a mechanism for the IPv6 nodes to acquire a temporary address from the pool of IPv4 addresses. Note that SIIT is not likely to be useful later during transition when most of the Internet is IPv6 and there are only small islands of IPv4 nodes, since such use would either require the IPv6 nodes to acquire temporary IPv4 addresses from a "distant" SIIT box operated by a different administration, or require that the IPv6 routing contain routes for IPv6-mapped addresses. (The latter is known to be a very bad idea due to the size of the IPv4 routing table that would potentially be injected into IPv6 routing in the form of IPv4-mapped addresses.)

下图显示了无状态IP/ICMP转换算法(SIIT)最初如何用于小型网络(例如,单个子网),后来如何用于双IPv4/IPv6网络中只有IPv6主机的站点。这种用法假定IPv6节点有一种机制,可以从IPv4地址池中获取临时地址。请注意,当大部分互联网都是IPv6且IPv4节点仅为小岛屿时,SIIT在以后的过渡期间不太可能有用,因为这种使用将要求IPv6节点从另一个管理机构操作的“远程”SIIT箱获取临时IPv4地址,或者要求IPv6路由包含IPv6映射地址的路由。(后者是一个非常糟糕的主意,因为IPv4路由表的大小可能会以IPv4映射地址的形式注入IPv6路由。)

                                     ___________
                                    /           \
      [IPv6 Host]---[SIIT]---------< IPv4 network>--[IPv4 Host]
                       |            \___________/
                (pool of IPv4 addresses)
        
                                     ___________
                                    /           \
      [IPv6 Host]---[SIIT]---------< IPv4 network>--[IPv4 Host]
                       |            \___________/
                (pool of IPv4 addresses)
        

IPv4-translatable -> IPv4->IPv4 addresser IPv4-mapped

IPv4可翻译->IPv4->IPv4地址器IPv4映射

Figure 1. Using SIIT for a single IPv6-only subnet.

图1。将SIIT用于单个仅限IPv6的子网。

                     ___________              ___________
                    /           \            /           \
      [IPv6 Host]--< Dual network>--[SIIT]--< IPv4 network>--[IPv4 Host]
                    \___________/     |      \___________/
                             (pool of IPv4 addresses)
        
                     ___________              ___________
                    /           \            /           \
      [IPv6 Host]--< Dual network>--[SIIT]--< IPv4 network>--[IPv4 Host]
                    \___________/     |      \___________/
                             (pool of IPv4 addresses)
        

IPv4-translatable -> IPv4->IPv4 addresser IPv4-mapped

IPv4可翻译->IPv4->IPv4地址器IPv4映射

Figure 2. Using SIIT for an IPv6-only or dual cloud (e.g. a site) which contains some IPv6-only hosts as well as IPv4 hosts.

图2。将SIIT用于仅IPv6或双云(例如站点),其中包含一些仅IPv6主机和IPv4主机。

The protocol translators are assumed to fit around some piece of topology that includes some IPv6-only nodes and that may also include IPv4 nodes as well as dual nodes. There has to be a translator on each path used by routing the "translatable" packets in and out of this cloud to ensure that such packets always get translated. This does not require a translator at every physical connection between the cloud and the rest of the Internet since the routing can be used to deliver the packets to the translator.

假设协议转换器适合于某个拓扑,该拓扑包括一些仅限IPv6的节点,也可能包括IPv4节点以及双节点。在每个路径上都必须有一个转换器,用于将“可翻译”数据包路由到云中或从云中路由出去,以确保这些数据包始终被翻译。这并不需要在云和互联网其余部分之间的每个物理连接上都有一个转换器,因为路由可以用来将数据包传递给转换器。

The IPv6-only node communicating with an IPv4 node through a translator will see an IPv4-mapped address for the peer and use an IPv4-translatable address for its local address for that communication. When the IPv6-only node sends packets the IPv4-mapped address indicates that the translator needs to translate the packets. When the IPv4 node sends packets those will translated to have the IPv4-translatable address as a destination; it is not possible to use an IPv4-mapped or an IPv4-compatible address as a destination since that would either route the packet back to the translator (for the IPv4-mapped address) or make the packet be encapsulated in IPv4 (for the IPv4-compatible address). Thus this specification introduces the new notion of an IPv4-translatable address.

通过转换器与IPv4节点通信的仅限IPv6的节点将看到对等方的IPv4映射地址,并将IPv4可翻译地址用于该通信的本地地址。当仅IPv6节点发送数据包时,IPv4映射地址指示转换器需要翻译数据包。当IPv4节点发送那些将被翻译为具有IPv4可翻译地址作为目的地的数据包时;不可能使用IPv4映射或IPv4兼容地址作为目标,因为这会将数据包路由回转换器(对于IPv4映射地址)或使数据包封装在IPv4中(对于IPv4兼容地址)。因此,本规范引入了IPv4可翻译地址的新概念。

1.1. Applicability and Limitations
1.1. 适用性和局限性

The use of this translation algorithm assumes that the IPv6 network is somehow well connected i.e. when an IPv6 node wants to communicate with another IPv6 node there is an IPv6 path between them. Various tunneling schemes exist that can provide such a path, but those mechanisms and their use is outside the scope of this document.

此转换算法的使用假设IPv6网络以某种方式连接良好,即当IPv6节点希望与另一个IPv6节点通信时,它们之间存在IPv6路径。有各种隧道方案可以提供这种路径,但这些机制及其使用不在本文档的范围内。

The IPv6 protocol [IPv6] has been designed so that the TCP and UDP pseudo-header checksums are not affected by the translations specified in this document, thus the translator does not need to modify normal TCP and UDP headers. The only exceptions are unfragmented IPv4 UDP packets which need to have a UDP checksum computed since a pseudo-header checksum is required for UDP in IPv6. Also, ICMPv6 include a pseudo-header checksum but it is not present in ICMPv4 thus the checksum in ICMP messages need to be modified by the translator. In addition, ICMP error messages contain an IP header as part of the payload thus the translator need to rewrite those parts of the packets to make the receiver be able to understand the included IP header. However, all of the translator's operations, including path MTU discovery, are stateless in the sense that the translator operates independently on each packet and does not retain any state from one packet to another. This allows redundant translator boxes without any coordination and a given TCP connection can have the two directions of packets go through different translator boxes.

IPv6协议[IPv6]的设计使TCP和UDP伪报头校验和不受本文档中指定的翻译的影响,因此转换器不需要修改正常的TCP和UDP报头。唯一的例外是未分段的IPv4 UDP数据包,需要计算UDP校验和,因为IPv6中的UDP需要伪报头校验和。此外,ICMPv6包含一个伪报头校验和,但它不在ICMPv4中,因此ICMP消息中的校验和需要由转换器修改。此外,ICMP错误消息包含IP报头作为有效负载的一部分,因此翻译器需要重写数据包的这些部分,以使接收器能够理解包含的IP报头。然而,翻译器的所有操作(包括路径MTU发现)都是无状态的,因为翻译器在每个数据包上独立操作,并且不保留从一个数据包到另一个数据包的任何状态。这允许在没有任何协调的情况下使用冗余的转换器盒,并且给定的TCP连接可以使数据包的两个方向通过不同的转换器盒。

The translating function as specified in this document does not translate any IPv4 options and it does not translate IPv6 routing headers, hop-by-hop extension headers, or destination options headers. It could be possible to define a translation between source routing in IPv4 and IPv6. However such a translation would not be semantically correct due to the slight differences between the IPv4 and IPv6 source routing. Also, the usefulness of source routing when going through a header translator might be limited since all the IPv6-only routers would need to have an IPv4-translated IPv6 address since the IPv4-only node will send a source route option containing only IPv4 addresses.

本文档中指定的转换函数不会转换任何IPv4选项,也不会转换IPv6路由头、逐跳扩展头或目标选项头。可以在IPv4和IPv6中定义源路由之间的转换。但是,由于IPv4和IPv6源路由之间的细微差异,这种转换在语义上是不正确的。此外,当通过报头转换器时,源路由的有用性可能会受到限制,因为所有仅限IPv6的路由器都需要具有经过IPv4转换的IPv6地址,因为仅限IPv4的节点将发送仅包含IPv4地址的源路由选项。

At first sight it might appear that the IPsec functionality [IPv6-SA, IPv6-ESP, IPv6-AH] can not be carried across the translator. However, since the translator does not modify any headers above the logical IP layer (IP headers, IPv6 fragment headers, and ICMP messages) packets encrypted using ESP in Transport-mode can be carried through the translator. [Note that this assumes that the key management can operate between the IPv6-only node and the IPv4-only node.] The AH computation covers parts of the IPv4 header fields such as IP addresses, and the identification field (fields that are either immutable or predictable by the sender) [IPv6-AUTH]. While the SIIT algorithm is specified so that those IPv4 fields can be predicted by the IPv6 sender it is not possible for the IPv6 receiver to determine the value of the IPv4 Identification field in packets sent by the IPv4 node. Thus as the translation algorithm is specified in this document it is not possible to use end-to-end AH through the translator.

乍一看,IPsec功能[IPv6 SA、IPv6 ESP、IPv6 AH]似乎无法通过转换器进行传输。但是,由于转换器不会修改逻辑IP层上方的任何头(IP头、IPv6片段头和ICMP消息),因此可以通过转换器在传输模式下使用ESP加密的数据包。[请注意,这假设密钥管理可以在仅IPv6节点和仅IPv4节点之间运行。]AH计算包括部分IPv4报头字段,如IP地址和标识字段(发送方不可变或可预测的字段)[IPv6身份验证]。虽然指定了SIIT算法,以便IPv6发送方可以预测这些IPv4字段,但IPv6接收方无法确定IPv4节点发送的数据包中IPv4标识字段的值。因此,由于本文件规定了翻译算法,因此不可能通过翻译器使用端到端AH。

For ESP Tunnel-mode to work through the translator the IPv6 node would have to be able to both parse and generate "inner" IPv4 headers since the inner IP will be encrypted together with the transport protocol.

要使ESP隧道模式通过转换器工作,IPv6节点必须能够解析和生成“内部”IPv4头,因为内部IP将与传输协议一起加密。

Thus in practise, only ESP transport mode is relatively easy to make work through a translator.

因此,在实践中,只有ESP传输模式相对容易通过翻译人员进行翻译。

IPv4 multicast addresses can not be mapped to IPv6 multicast addresses. For instance, ::ffff:224.1.2.3 is an IPv4 mapped IPv6 address with a class D address, however it is not an IPv6 multicast address. While the IP/ICMP header translation aspect of this memo in theory works for multicast packets this address mapping limitation makes it impossible to apply the techniques in this memo for multicast traffic.

IPv4多播地址无法映射到IPv6多播地址。例如,::ffff:224.1.2.3是一个IPv4映射的IPv6地址,具有类D地址,但它不是IPv6多播地址。虽然本备忘录的IP/ICMP报头转换方面在理论上适用于多播数据包,但由于地址映射的限制,无法将本备忘录中的技术应用于多播流量。

1.2. Assumptions
1.2. 假设

The IPv6 nodes using the translator must have an IPv4-translated IPv6 address while it is communicating with IPv4-only nodes.

使用转换器的IPv6节点在与仅IPv4节点通信时必须具有IPv4转换的IPv6地址。

The use of the algorithm assumes that there is an IPv4 address pool used to generate IPv4-translated addresses. Routing needs to be able to route any IPv4 packets, whether generated "outside" or "inside" the translator, destined to addresses in this pool towards the translator. This implies that the address pool can not be assigned to subnets but must be separated from the IPv4 subnets used on the "inside" of the translator.

该算法的使用假设存在用于生成IPv4转换地址的IPv4地址池。路由需要能够将任何IPv4数据包(无论是在转换器“外部”还是“内部”生成的)路由到该池中的地址,并指向转换器。这意味着地址池不能分配给子网,但必须与转换器“内部”上使用的IPv4子网分开。

Fragmented IPv4 UDP packets that do not contain a UDP checksum (i.e. the UDP checksum field is zero) are not of significant use over wide-areas in the Internet and will not be translated by the translator. An informal trace [MILLER] in the backbone showed that out of 34,984,468 IP packets there were 769 fragmented UDP packets with a zero checksum. However, all of them were due to malicious or broken behavior; a port scan and first fragments of IP packets that are not a multiple of 8 bytes.

不包含UDP校验和(即UDP校验和字段为零)的分段IPv4 UDP数据包在Internet的广域范围内没有重要用途,转换器不会对其进行翻译。主干中的非正式跟踪[MILLER]显示,在34984468个IP数据包中,有769个校验和为零的分段UDP数据包。然而,所有这些都是由于恶意或破坏行为;端口扫描和IP数据包的第一个片段不是8字节的倍数。

1.3. Impact Outside the Network Layer
1.3. 网络层之外的影响

The potential existence of stateless IP/ICMP translators is already taken care of from a protocol perspective in [IPv6]. However, an IPv6 node that wants to be able to use translators needs some additional logic in the network layer.

[IPv6]中已经从协议的角度考虑了无状态IP/ICMP转换器的潜在存在。但是,希望能够使用转换器的IPv6节点需要网络层中的一些附加逻辑。

The network layer in an IPv6-only node, when presented by the application with either an IPv4 destination address or an IPv4-mapped IPv6 destination address, is likely to drop the packet and return some error message to the application. In order to take advantage of translators such a node should instead send an IPv6 packet where the destination address is the IPv4-mapped address and the source address is the node's temporarily assigned IPv4-translated address. If the node does not have a temporarily assigned IPv4-translated address it should acquire one using mechanisms that are not discussed in this document.

当应用程序提供IPv4目标地址或IPv4映射的IPv6目标地址时,仅IPv6节点中的网络层可能会丢弃数据包并向应用程序返回一些错误消息。为了利用转换器,此类节点应改为发送IPv6数据包,其中目标地址为IPv4映射地址,源地址为节点临时分配的IPv4翻译地址。如果节点没有临时分配的IPv4翻译地址,则应使用本文档中未讨论的机制获取该地址。

Note that the above also applies to a dual IPv4/IPv6 implementation node which is not configured with any IPv4 address.

请注意,上述内容也适用于未配置任何IPv4地址的双IPv4/IPv6实施节点。

There are no extra changes needed to applications to operate through a translator beyond what applications already need to do to operate on a dual node. The applications that have been modified to work on a dual node already have the mechanisms to determine whether they are communicating with an IPv4 or an IPv6 peer. Thus if the applications

除了在双节点上运行应用程序所需的操作之外,通过转换器运行应用程序不需要额外的更改。已修改为在双节点上工作的应用程序已经具有确定它们是与IPv4还是IPv6对等方通信的机制。因此,如果应用程序

need to modify their behavior depending on the type of the peer, such as ftp determining whether to fallback to using the PORT/PASV command when EPRT/EPSV fails (as specified in [FTPEXT]), they already need to do that when running on dual nodes and the presense of translators does not add anything. For example, when using the socket API [BSDAPI] the applications know that the peer is IPv6 if they get an AF_INET6 address from the name service and the address is not an IPv4-mapped address (i.e., IN6_IS_ADDR_V4MAPPED returns false). If this is not the case, i.e., the address is AF_INET or an IPv4-mapped IPv6 address, the peer is IPv4.

需要根据对等方的类型修改它们的行为,例如ftp确定在EPRT/EPSV失败时是否回退到使用PORT/PASV命令(如[FTPEXT]中所指定),它们在双节点上运行时已经需要这样做,并且转换器的存在不会增加任何内容。例如,当使用套接字API[BSDAPI]时,如果应用程序从名称服务获取AF_INET6地址,并且该地址不是IPv4映射地址,则应用程序知道对等方是IPv6(即IN6_is_ADDR_V4MAPPED返回false)。如果不是这种情况,即地址为AF_INET或IPv4映射的IPv6地址,则对等方为IPv4。

One way of viewing the translator, which might help clarify why applications do not need to know that a translator is used, is to look at the information that is passed from the transport layer to the network layer. If the transport passes down an IPv4 address (whether or not is in the IPv4-mapped encoding) this means that at some point there will be IPv4 packets generated. In a dual node the generation of the IPv4 packets takes place in the sending node. In an IPv6-only node conceptually the only difference is that the IPv4 packet is generated by the translator - all the information that the transport layer passed to the network layer will be conveyed to the translator in some form. That form just "happens" to be in the form of an IPv6 header.

查看转换器的一种方法是查看从传输层传递到网络层的信息,这可能有助于澄清应用程序不需要知道使用了转换器的原因。如果传输向下传递IPv4地址(无论是否在IPv4映射编码中),这意味着在某个点将生成IPv4数据包。在双节点中,IPv4数据包的生成在发送节点中进行。在仅IPv6节点中,概念上唯一的区别在于IPv4数据包由转换器生成——传输层传递到网络层的所有信息都将以某种形式传递给转换器。这种形式恰好是IPv6头的形式。

2. Terminology
2. 术语

This documents uses the terminology defined in [IPv6] and [TRANS-MECH] with these clarifications:

本文件使用了[IPv6]和[TRANS-MECH]中定义的术语,并进行了以下澄清:

IPv4 capable node: A node which has an IPv4 protocol stack. In order for the stack to be usable the node must be assigned one or more IPv4 addresses.

支持IPv4的节点:具有IPv4协议堆栈的节点。为了使堆栈可用,必须为节点分配一个或多个IPv4地址。

IPv4 enabled node: A node which has an IPv4 protocol stack and is assigned one or more IPv4 addresses. Both IPv4-only and IPv6/IPv4 nodes are IPv4 enabled.

启用IPv4的节点:具有IPv4协议栈并被分配一个或多个IPv4地址的节点。仅IPv4和IPv6/IPv4节点都已启用IPv4。

IPv6 capable node: A node which has an IPv6 protocol stack. In order for the stack to be usable the node must be assigned one or more IPv6 addresses.

支持IPv6的节点:具有IPv6协议栈的节点。为了使堆栈可用,必须为节点分配一个或多个IPv6地址。

IPv6 enabled node: A node which has an IPv6 protocol stack and is assigned one or more IPv6 addresses. Both IPv6-only and IPv6/IPv4 nodes are IPv6 enabled.

启用IPv6的节点:具有IPv6协议栈并被分配一个或多个IPv6地址的节点。仅IPv6和IPv6/IPv4节点都已启用IPv6。

2.1. Addresses
2.1. 地址

In addition to the forms of addresses defined in [ADDR-ARCH] this document also introduces the new form of IPv4-translated address. This is needed to avoid using IPv4-compatible addresses outside the intended use of automatic tunneling. Thus the address forms are:

除了[ADDR-ARCH]中定义的地址形式外,本文还介绍了IPv4转换地址的新形式。这是为了避免在自动隧道的预期用途之外使用与IPv4兼容的地址。因此,地址表为:

IPv4-mapped: An address of the form 0::ffff:a.b.c.d which refers to a node that is not IPv6-capable. In addition to its use in the API this protocol uses IPv4-mapped addresses in IPv6 packets to refer to an IPv4 node.

IPv4映射:格式为0::ffff:a.b.c.d的地址,表示不支持IPv6的节点。除了在API中使用之外,该协议还使用IPv6数据包中的IPv4映射地址来引用IPv4节点。

IPv4-compatible: An address of the form 0::0:a.b.c.d which refers to an IPv6/IPv4 node that supports automatic tunneling. Such addresses are not used in this protocol.

IPv4兼容:格式为0::0:a.b.c.d的地址,表示支持自动隧道的IPv6/IPv4节点。本协议中不使用此类地址。

IPv4-translated: An address of the form 0::ffff:0:a.b.c.d which refers to an IPv6-enabled node. Note that the prefix 0::ffff:0:0:0/96 is chosen to checksum to zero to avoid any changes to the transport protocol's pseudo header checksum.

IPv4转换:格式为0::ffff:0:a.b.c.d的地址,表示启用IPv6的节点。请注意,选择前缀0::ffff:0:0:0/96将校验和设置为零,以避免对传输协议的伪报头校验和进行任何更改。

2.2. Requirements
2.2. 要求

The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this document, are to be interpreted as described in [KEYWORDS].

本文件中出现的关键词必须、不得、要求、应、不应、应、不应、建议、可能和可选时,应按照[关键词]中的说明进行解释。

3. Translating from IPv4 to IPv6
3. 从IPv4到IPv6的转换

When an IPv4-to-IPv6 translator receives an IPv4 datagram addressed to a destination that lies outside of the attached IPv4 island, it translates the IPv4 header of that packet into an IPv6 header. It then forwards the packet based on the IPv6 destination address. The original IPv4 header on the packet is removed and replaced by an IPv6 header. Except for ICMP packets the transport layer header and data portion of the packet are left unchanged.

当IPv4-to-IPv6转换器接收到发往连接的IPv4岛之外的目标的IPv4数据报时,它会将该数据包的IPv4报头转换为IPv6报头。然后,它根据IPv6目标地址转发数据包。数据包上的原始IPv4标头将被删除并替换为IPv6标头。除ICMP数据包外,数据包的传输层报头和数据部分保持不变。

        +-------------+                 +-------------+
        |    IPv4     |                 |    IPv6     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |  Transport  |                 |  Fragment   |
        |   Layer     |      ===>       |   Header    |
        |   Header    |                 |(not always) |
        +-------------+                 +-------------+
        |             |                 |  Transport  |
        ~    Data     ~                 |   Layer     |
        |             |                 |   Header    |
        +-------------+                 +-------------+
                                        |             |
                                        ~    Data     ~
                                        |             |
                                        +-------------+
        
        +-------------+                 +-------------+
        |    IPv4     |                 |    IPv6     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |  Transport  |                 |  Fragment   |
        |   Layer     |      ===>       |   Header    |
        |   Header    |                 |(not always) |
        +-------------+                 +-------------+
        |             |                 |  Transport  |
        ~    Data     ~                 |   Layer     |
        |             |                 |   Header    |
        +-------------+                 +-------------+
                                        |             |
                                        ~    Data     ~
                                        |             |
                                        +-------------+
        

IPv4-to-IPv6 Translation

IPv4到IPv6的转换

One of the differences between IPv4 and IPv6 is that in IPv6 path MTU discovery is mandatory but it is optional in IPv4. This implies that IPv6 routers will never fragment a packet - only the sender can do fragmentation.

IPv4和IPv6之间的区别之一是,在IPv6路径中,MTU发现是强制性的,但在IPv4中是可选的。这意味着IPv6路由器永远不会对数据包进行碎片化,只有发送方可以进行碎片化。

When the IPv4 node performs path MTU discovery (by setting the DF bit in the header) the path MTU discovery can operate end-to-end i.e. across the translator. In this case either IPv4 or IPv6 routers might send back ICMP "packet too big" messages to the sender. When these ICMP errors are sent by the IPv6 routers they will pass through a translator which will translate the ICMP error to a form that the IPv4 sender can understand. In this case an IPv6 fragment header is only included if the IPv4 packet is already fragmented.

当IPv4节点执行路径MTU发现时(通过在报头中设置DF位),路径MTU发现可以端到端操作,即跨转换器。在这种情况下,IPv4或IPv6路由器可能会将ICMP“数据包太大”消息发回发送方。当这些ICMP错误由IPv6路由器发送时,它们将通过一个转换器,该转换器将ICMP错误转换为IPv4发送方可以理解的形式。在这种情况下,仅当IPv4数据包已被分段时,才会包含IPv6片段头。

However, when the IPv4 sender does not perform path MTU discovery the translator has to ensure that the packet does not exceed the path MTU on the IPv6 side. This is done by fragmenting the IPv4 packet so that it fits in 1280 byte IPv6 packet since IPv6 guarantees that 1280 byte packets never need to be fragmented. Also, when the IPv4 sender does not perform path MTU discovery the translator MUST always include an IPv6 fragment header to indicate that the sender allows fragmentation. That is needed should the packet pass through an IPv6-to-IPv4 translator.

但是,当IPv4发送方不执行路径MTU发现时,转换器必须确保数据包不超过IPv6端的路径MTU。这是通过对IPv4数据包进行分段来实现的,因此它适合1280字节的IPv6数据包,因为IPv6保证了1280字节的数据包永远不需要分段。此外,当IPv4发送方不执行路径MTU发现时,转换器必须始终包含IPv6片段头,以指示发送方允许分段。如果数据包通过IPv6到IPv4转换器,则需要这样做。

The above rules ensure that when packets are fragmented either by the sender or by IPv4 routers that the low-order 16 bits of the fragment identification is carried end-end to ensure that packets are correctly reassembled. In addition, the rules use the presence of an

上述规则确保当数据包被发送方或IPv4路由器分段时,段标识的低阶16位被端携带,以确保数据包被正确地重新组装。此外,这些规则使用

IPv6 fragment header to indicate that the sender might not be using path MTU discovery i.e. the packet should not have the DF flag set should it later be translated back to IPv4.

IPv6片段头,指示发送方可能未使用路径MTU发现,即如果数据包稍后被翻译回IPv4,则不应设置DF标志。

Other than the special rules for handling fragments and path MTU discovery the actual translation of the packet header consists of a simple mapping as defined below. Note that ICMP packets require special handling in order to translate the content of ICMP error message and also to add the ICMP pseudo-header checksum.

除了用于处理片段和路径MTU发现的特殊规则之外,数据包头的实际转换包括如下定义的简单映射。请注意,为了翻译ICMP错误消息的内容并添加ICMP伪头校验和,ICMP数据包需要特殊处理。

3.1. Translating IPv4 Headers into IPv6 Headers
3.1. 将IPv4标头转换为IPv6标头

If the DF flag is not set and the IPv4 packet will result in an IPv6 packet larger than 1280 bytes the IPv4 packet MUST be fragmented prior to translating it. Since IPv4 packets with DF not set will always result in a fragment header being added to the packet the IPv4 packets must be fragmented so that their length, excluding the IPv4 header, is at most 1232 bytes (1280 minus 40 for the IPv6 header and 8 for the Fragment header). The resulting fragments are then translated independently using the logic described below.

如果未设置DF标志,并且IPv4数据包将导致IPv6数据包大于1280字节,则必须在转换IPv4数据包之前对其进行分段。由于未设置DF的IPv4数据包将始终导致向数据包中添加片段头,因此必须对IPv4数据包进行分段,以使其长度(不包括IPv4数据包头)最多为1232字节(IPv6数据包头为1280减去40,片段数据包头为8)。然后使用下面描述的逻辑独立地翻译生成的片段。

If the DF bit is set and the packet is not a fragment (i.e., the MF flag is not set and the Fragment Offset is zero) then there is no need to add a fragment header to the packet. The IPv6 header fields are set as follows:

如果设置了DF位且数据包不是片段(即未设置MF标志且片段偏移量为零),则无需向数据包添加片段头。IPv6标头字段设置如下:

Version: 6

版本:6

Traffic Class: By default, copied from IP Type Of Service and Precedence field (all 8 bits are copied). According to [DIFFSERV] the semantics of the bits are identical in IPv4 and IPv6. However, in some IPv4 environments these fields might be used with the old semantics of "Type Of Service and Precedence". An implementation of a translator SHOULD provide the ability to ignore the IPv4 "TOS" and always set the IPv6 traffic class to zero.

流量类别:默认情况下,从IP服务类型和优先级字段复制(所有8位都被复制)。根据[DIFFSERV],在IPv4和IPv6中,位的语义是相同的。但是,在某些IPv4环境中,这些字段可能与“服务类型和优先级”的旧语义一起使用。转换器的实现应该能够忽略IPv4“TOS”,并始终将IPv6流量类设置为零。

Flow Label: 0 (all zero bits)

流标签:0(所有零位)

Payload Length: Total length value from IPv4 header, minus the size of the IPv4 header and IPv4 options, if present.

有效负载长度:IPv4标头的总长度值减去IPv4标头和IPv4选项(如果存在)的大小。

Next Header: Protocol field copied from IPv4 header

下一个标头:从IPv4标头复制的协议字段

Hop Limit: TTL value copied from IPv4 header. Since the translator is a router, as part of forwarding the packet it needs to decrement either the IPv4 TTL (before the translation) or the IPv6 Hop Limit (after the translation). As part of decrementing the TTL or Hop Limit the translator (as any router) needs to check for zero and send the ICMPv4 or ICMPv6 "ttl exceeded" error.

跃点限制:从IPv4标头复制的TTL值。由于转换器是路由器,作为转发数据包的一部分,它需要减少IPv4 TTL(转换前)或IPv6跃点限制(转换后)。作为减少TTL或跃点限制的一部分,转换器(作为任何路由器)需要检查零并发送ICMPv4或ICMPv6“TTL超出”错误。

         Source Address:
                 The low-order 32 bits is the IPv4 source address.
                 The high-order 96 bits is the IPv4-mapped prefix
                 (::ffff:0:0/96)
        
         Source Address:
                 The low-order 32 bits is the IPv4 source address.
                 The high-order 96 bits is the IPv4-mapped prefix
                 (::ffff:0:0/96)
        
         Destination Address:
                 The low-order 32 bits is the IPv4 destination
                 address.  The high-order 96 bits is the IPv4-
                 translated prefix (0::ffff:0:0:0/96)
        
         Destination Address:
                 The low-order 32 bits is the IPv4 destination
                 address.  The high-order 96 bits is the IPv4-
                 translated prefix (0::ffff:0:0:0/96)
        

If IPv4 options are present in the IPv4 packet, they are ignored i.e., there is no attempt to translate them. However, if an unexpired source route option is present then the packet MUST instead be discarded, and an ICMPv4 "destination unreachable/source route failed" (Type 3/Code 5) error message SHOULD be returned to the sender.

如果IPv4数据包中存在IPv4选项,则会忽略它们,即不会尝试转换它们。但是,如果存在未过期的源路由选项,则必须丢弃该数据包,并且应向发送方返回ICMPv4“无法到达目的地/源路由失败”(类型3/代码5)错误消息。

If there is need to add a fragment header (the DF bit is not set or the packet is a fragment) the header fields are set as above with the following exceptions:

如果需要添加片段标头(未设置DF位或数据包为片段),则标头字段的设置如上所述,但以下例外情况除外:

IPv6 fields:

IPv6字段:

Payload Length: Total length value from IPv4 header, plus 8 for the fragment header, minus the size of the IPv4 header and IPv4 options, if present.

有效负载长度:IPv4标头的总长度值,加上片段标头的8,减去IPv4标头的大小和IPv4选项(如果存在)。

Next Header: Fragment Header (44).

下一个标题:片段标题(44)。

Fragment header fields:

片段头字段:

Next Header: Protocol field copied from IPv4 header.

下一个标头:从IPv4标头复制的协议字段。

Fragment Offset: Fragment Offset copied from the IPv4 header.

片段偏移量:从IPv4标头复制的片段偏移量。

M flag: More Fragments bit copied from the IPv4 header.

M标志:从IPv4标头复制了更多位碎片。

Identification: The low-order 16 bits copied from the Identification field in the IPv4 header. The high-order 16 bits set to zero.

标识:从IPv4报头中的标识字段复制的低阶16位。将高阶16位设置为零。

3.2. Translating UDP over IPv4
3.2. 在IPv4上转换UDP

If a UDP packet has a zero UDP checksum then a valid checksum must be calculated in order to translate the packet. A stateless translator can not do this for fragmented packets but [MILLER] indicates that fragmented UDP packets with a zero checksum appear to only be used for malicious purposes. Thus this is not believed to be a noticeable limitation.

如果UDP数据包的UDP校验和为零,则必须计算有效校验和才能转换数据包。无状态转换器无法对碎片数据包执行此操作,但[MILLER]指出,校验和为零的碎片UDP数据包似乎仅用于恶意目的。因此,这不被认为是一个明显的限制。

When a translator receives the first fragment of a fragmented UDP IPv4 packet and the checksum field is zero the translator SHOULD drop the packet and generate a system management event specifying at least the IP addresses and port numbers in the packet. When it receives fragments other than the first it SHOULD silently drop the packet, since there is no port information to log.

当转换器接收到片段化UDP IPv4数据包的第一个片段且校验和字段为零时,转换器应丢弃该数据包并生成一个系统管理事件,至少指定数据包中的IP地址和端口号。当它接收到第一个以外的片段时,它应该默默地丢弃数据包,因为没有端口信息要记录。

When a translator receives an unfragmented UDP IPv4 packet and the checksum field is zero the translator MUST compute the missing UDP checksum as part of translating the packet. Also, the translator SHOULD maintain a counter of how many UDP checksums are generated in this manner.

当转换器接收到未分段的UDP IPv4数据包且校验和字段为零时,转换器必须计算丢失的UDP校验和,作为转换数据包的一部分。此外,转换器应该维护一个计数器,记录以这种方式生成的UDP校验和的数量。

3.3. Translating ICMPv4 Headers into ICMPv6 Headers
3.3. 将ICMPv4标头转换为ICMPv6标头

All ICMP messages that are to be translated require that the ICMP checksum field be updated as part of the translation since ICMPv6, unlike ICMPv4, has a pseudo-header checksum just like UDP and TCP.

所有要翻译的ICMP消息都要求在翻译过程中更新ICMP校验和字段,因为ICMPv6与ICMPv4不同,它与UDP和TCP一样具有伪报头校验和。

In addition all ICMP packets need to have the Type value translated and for ICMP error messages the included IP header also needs translation.

此外,所有ICMP数据包都需要转换类型值,对于ICMP错误消息,包含的IP报头也需要转换。

The actions needed to translate various ICMPv4 messages are:

翻译各种ICMPv4消息所需的操作包括:

ICMPv4 query messages:

ICMPv4查询消息:

Echo and Echo Reply (Type 8 and Type 0) Adjust the type to 128 and 129, respectively, and adjust the ICMP checksum both to take the type change into account and to include the ICMPv6 pseudo-header.

Echo和Echo Reply(类型8和类型0)分别将类型调整为128和129,并调整ICMP校验和,以考虑类型更改并包括ICMPv6伪头。

Information Request/Reply (Type 15 and Type 16) Obsoleted in ICMPv4. Silently drop.

信息请求/回复(类型15和类型16)在ICMPv4中被淘汰。静静地落下。

Timestamp and Timestamp Reply (Type 13 and Type 14) Obsoleted in ICMPv6. Silently drop.

时间戳和时间戳回复(类型13和类型14)在ICMPv6中被废弃。静静地落下。

Address Mask Request/Reply (Type 17 and Type 18) Obsoleted in ICMPv6. Silently drop.

ICMPv6中废弃的地址掩码请求/应答(类型17和类型18)。静静地落下。

ICMP Router Advertisement (Type 9) Single hop message. Silently drop.

ICMP路由器广告(类型9)单跳消息。静静地落下。

ICMP Router Solicitation (Type 10) Single hop message. Silently drop.

ICMP路由器请求(类型10)单跳消息。静静地落下。

Unknown ICMPv4 types Silently drop.

未知的ICMPv4类型会自动删除。

IGMP messages:

IGMP消息:

While the MLD messages [MLD] are the logical IPv6 counterparts for the IPv4 IGMP messages all the "normal" IGMP messages are single-hop messages and should be silently dropped by the translator. Other IGMP messages might be used by multicast routing protocols and, since it would be a configuration error to try to have router adjacencies across IPv4/IPv6 translators those packets should also be silently dropped.

虽然MLD消息[MLD]是IPv4 IGMP消息的逻辑IPv6对应项,但所有“正常”IGMP消息都是单跳消息,应该由转换器自动删除。多播路由协议可能会使用其他IGMP消息,并且,由于尝试在IPv4/IPv6转换器之间建立路由器邻接将是一种配置错误,因此这些数据包也应该被静默地丢弃。

ICMPv4 error messages:

ICMPv4错误消息:

Destination Unreachable (Type 3) For all that are not explicitly listed below set the Type to 1.

对于下面未明确列出的所有对象,目标不可访问(类型3),请将类型设置为1。

Translate the code field as follows: Code 0, 1 (net, host unreachable): Set Code to 0 (no route to destination).

按如下方式转换代码字段:代码0,1(网络,主机不可访问):将代码设置为0(没有到目的地的路由)。

Code 2 (protocol unreachable): Translate to an ICMPv6 Parameter Problem (Type 4, Code 1) and make the Pointer point to the IPv6 Next Header field.

代码2(无法访问协议):转换为ICMPv6参数问题(类型4,代码1),并使指针指向IPv6下一个标头字段。

Code 3 (port unreachable): Set Code to 4 (port unreachable).

代码3(端口不可访问):将代码设置为4(端口不可访问)。

Code 4 (fragmentation needed and DF set): Translate to an ICMPv6 Packet Too Big message (Type 2) with code 0. The MTU field needs to be adjusted for the difference between the IPv4 and IPv6 header sizes. Note that if the IPv4 router did not set the MTU field i.e. the router does not implement [PMTUv4], then the translator must use the plateau values specified in [PMTUv4] to determine a likely path MTU and include that path MTU in the ICMPv6 packet. (Use the greatest plateau value that is less than the returned Total Length field.)

代码4(需要分段并设置DF):转换为代码为0的ICMPv6数据包过大消息(类型2)。MTU字段需要根据IPv4和IPv6标头大小之间的差异进行调整。请注意,如果IPv4路由器未设置MTU字段,即路由器未实现[PMTUv4],则转换器必须使用[PMTUv4]中指定的平台值来确定可能的路径MTU,并将该路径MTU包括在ICMPv6数据包中。(使用小于返回的总长度字段的最大平台值。)

Code 5 (source route failed): Set Code to 0 (no route to destination). Note that this error is unlikely since source routes are not translated.

代码5(源路由失败):将代码设置为0(没有到目标的路由)。请注意,由于未转换源路由,因此不太可能出现此错误。

Code 6,7: Set Code to 0 (no route to destination).

代码6,7:将代码设置为0(没有到目的地的路线)。

Code 8: Set Code to 0 (no route to destination).

代码8:将代码设置为0(没有到目的地的路线)。

Code 9, 10 (communication with destination host administratively prohibited): Set Code to 1 (communication with destination administratively prohibited)

代码9、10(与目标主机的通信被行政禁止):将代码设置为1(与目标主机的通信被行政禁止)

Code 11, 12: Set Code to 0 (no route to destination).

代码11、12:将代码设置为0(没有到目的地的路线)。

Redirect (Type 5) Single hop message. Silently drop.

重定向(类型5)单跳消息。静静地落下。

Source Quench (Type 4) Obsoleted in ICMPv6. Silently drop.

源淬火(类型4)在ICMPv6中被淘汰。静静地落下。

Time Exceeded (Type 11) Set the Type field to 3. The Code field is unchanged.

超出时间(类型11)将类型字段设置为3。代码字段保持不变。

Parameter Problem (Type 12) Set the Type field to 4. The Pointer needs to be updated to point to the corresponding field in the translated include IP header.

参数问题(类型12)将类型字段设置为4。需要更新指针,以指向已翻译的include IP标头中的相应字段。

3.4. Translating ICMPv4 Error Messages into ICMPv6
3.4. 将ICMPv4错误消息转换为ICMPv6

There are some differences between the IPv4 and the IPv6 ICMP error message formats as detailed above. In addition, the ICMP error messages contain the IP header for the packet in error which needs to be translated just like a normal IP header. The translation of this "packet in error" is likely to change the length of the datagram thus the Payload Length field in the outer IPv6 header might need to be updated.

如上所述,IPv4和IPv6 ICMP错误消息格式之间存在一些差异。此外,ICMP错误消息包含出错数据包的IP报头,需要像普通IP报头一样进行翻译。此“错误数据包”的翻译可能会更改数据报的长度,因此可能需要更新外部IPv6报头中的有效负载长度字段。

        +-------------+                 +-------------+
        |    IPv4     |                 |    IPv6     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   ICMPv4    |                 |   ICMPv6    |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |    IPv4     |      ===>       |    IPv6     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   Partial   |                 |   Partial   |
        |  Transport  |                 |  Transport  |
        |   Layer     |                 |   Layer     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        
        +-------------+                 +-------------+
        |    IPv4     |                 |    IPv6     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   ICMPv4    |                 |   ICMPv6    |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |    IPv4     |      ===>       |    IPv6     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   Partial   |                 |   Partial   |
        |  Transport  |                 |  Transport  |
        |   Layer     |                 |   Layer     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        

IPv4-to-IPv6 ICMP Error Translation

IPv4到IPv6 ICMP错误转换

The translation of the inner IP header can be done by recursively invoking the function that translated the outer IP headers.

内部IP头的转换可以通过递归调用转换外部IP头的函数来完成。

3.5. Knowing when to Translate
3.5. 知道何时翻译

The translator is assumed to know the pool(s) of IPv4 address that are used to represent the internal IPv6-only nodes. Thus if the IPv4 destination field contains an address that falls in these configured sets of prefixes the packet needs to be translated to IPv6.

假定转换器知道用于表示仅限IPv6的内部节点的IPv4地址池。因此,如果IPv4目的地字段包含属于这些已配置前缀集的地址,则需要将数据包转换为IPv6。

4. Translating from IPv6 to IPv4
4. 从IPv6到IPv4的转换

When an IPv6-to-IPv4 translator receives an IPv6 datagram addressed to an IPv4-mapped IPv6 address, it translates the IPv6 header of that packet into an IPv4 header. It then forwards the packet based on the IPv4 destination address. The original IPv6 header on the packet is removed and replaced by an IPv4 header. Except for ICMP packets the transport layer header and data portion of the packet are left unchanged.

当IPv6-to-IPv4转换器接收到寻址到IPv4映射IPv6地址的IPv6数据报时,它会将该数据包的IPv6报头转换为IPv4报头。然后,它根据IPv4目标地址转发数据包。数据包上的原始IPv6标头将被删除并替换为IPv4标头。除ICMP数据包外,数据包的传输层报头和数据部分保持不变。

        +-------------+                 +-------------+
        |    IPv6     |                 |    IPv4     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |  Fragment   |                 |  Transport  |
        |   Header    |      ===>       |   Layer     |
        |(if present) |                 |   Header    |
        +-------------+                 +-------------+
        |  Transport  |                 |             |
        |   Layer     |                 ~    Data     ~
        |   Header    |                 |             |
        +-------------+                 +-------------+
        |             |
        ~    Data     ~
        |             |
        +-------------+
        
        +-------------+                 +-------------+
        |    IPv6     |                 |    IPv4     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |  Fragment   |                 |  Transport  |
        |   Header    |      ===>       |   Layer     |
        |(if present) |                 |   Header    |
        +-------------+                 +-------------+
        |  Transport  |                 |             |
        |   Layer     |                 ~    Data     ~
        |   Header    |                 |             |
        +-------------+                 +-------------+
        |             |
        ~    Data     ~
        |             |
        +-------------+
        

IPv6-to-IPv4 Translation

IPv6到IPv4的转换

There are some differences between IPv6 and IPv4 in the area of fragmentation and the minimum link MTU that effect the translation. An IPv6 link has to have an MTU of 1280 bytes or greater. The corresponding limit for IPv4 is 68 bytes. Thus, unless there were special measures, it would not be possible to do end-to-end path MTU discovery when the path includes an IPv6-to-IPv4 translator since the IPv6 node might receive ICMP "packet too big" messages originated by an IPv4 router that report an MTU less than 1280. However, [IPv6] requires that IPv6 nodes handle such an ICMP "packet too big" message by reducing the path MTU to 1280 and including an IPv6 fragment header with each packet. This allows end-to-end path MTU discovery across the translator as long as the path MTU is 1280 bytes or greater. When the path MTU drops below the 1280 limit the IPv6 sender will originate 1280 byte packets that will be fragmented by IPv4 routers along the path after being translated to IPv4.

IPv6和IPv4在碎片和影响转换的最小链路MTU方面存在一些差异。IPv6链路的MTU必须为1280字节或更大。IPv4的相应限制为68字节。因此,除非有特殊措施,否则当路径包括IPv6-to-IPv4转换器时,不可能进行端到端路径MTU发现,因为IPv6节点可能接收由报告MTU小于1280的IPv4路由器发起的ICMP“数据包太大”消息。但是,[IPv6]要求IPv6节点通过将路径MTU减少到1280并在每个数据包中包含IPv6片段头来处理此类ICMP“数据包太大”消息。这样,只要路径MTU为1280字节或更大,就可以跨转换器发现端到端路径MTU。当路径MTU降至1280限制以下时,IPv6发送方将发起1280字节的数据包,这些数据包将在转换为IPv4后由IPv4路由器沿路径分段。

The only drawback with this scheme is that it is not possible to use PMTU to do optimal UDP fragmentation (as opposed to completely avoiding fragmentation) at sender since the presence of an IPv6

此方案的唯一缺点是,由于存在IPv6,因此无法使用PMTU在发送方执行最佳UDP分段(而不是完全避免分段)

Fragment header is interpreted that is it OK to fragment the packet on the IPv4 side. Thus if a UDP application wants to send large packets independent of the PMTU, the sender will only be able to determine the path MTU on the IPv6 side of the translator. If the path MTU on the IPv4 side of the translator is smaller then the IPv6 sender will not receive any ICMP "too big" errors and can not adjust the size fragments it is sending.

片段头被解释为可以在IPv4端对数据包进行片段化。因此,如果UDP应用程序希望独立于PMTU发送大数据包,发送方将只能确定转换器IPv6端的路径MTU。如果转换器IPv4端的路径MTU较小,则IPv6发送方将不会收到任何ICMP“太大”错误,并且无法调整其发送的片段大小。

Other than the special rules for handling fragments and path MTU discovery the actual translation of the packet header consists of a simple mapping as defined below. Note that ICMP packets require special handling in order to translate the content of ICMP error message and also to add the ICMP pseudo-header checksum.

除了用于处理片段和路径MTU发现的特殊规则之外,数据包头的实际转换包括如下定义的简单映射。请注意,为了翻译ICMP错误消息的内容并添加ICMP伪头校验和,ICMP数据包需要特殊处理。

4.1. Translating IPv6 Headers into IPv4 Headers
4.1. 将IPv6标头转换为IPv4标头

If there is no IPv6 Fragment header the IPv4 header fields are set as follows:

如果没有IPv6片段标头,则IPv4标头字段设置如下:

Version: 4

版本:4

Internet Header Length: 5 (no IPv4 options)

Internet标头长度:5(无IPv4选项)

Type of Service and Precedence: By default, copied from the IPv6 Traffic Class (all 8 bits). According to [DIFFSERV] the semantics of the bits are identical in IPv4 and IPv6. However, in some IPv4 environments these bits might be used with the old semantics of "Type Of Service and Precedence". An implementation of a translator SHOULD provide the ability to ignore the IPv6 traffic class and always set the IPv4 "TOS" to zero.

服务类型和优先级:默认情况下,从IPv6流量类复制(全部8位)。根据[DIFFSERV],在IPv4和IPv6中,位的语义是相同的。然而,在某些IPv4环境中,这些位可能与“服务类型和优先级”的旧语义一起使用。转换器的实现应该能够忽略IPv6流量类,并始终将IPv4“TOS”设置为零。

Total Length: Payload length value from IPv6 header, plus the size of the IPv4 header.

总长度:来自IPv6标头的有效负载长度值,加上IPv4标头的大小。

Identification: All zero.

标识:全部为零。

Flags: The More Fragments flag is set to zero. The Don't Fragments flag is set to one.

标志:更多碎片标志设置为零。“不碎片”标志设置为1。

Fragment Offset: All zero.

碎片偏移量:全部为零。

Time to Live: Hop Limit value copied from IPv6 header. Since the translator is a router, as part of forwarding the packet it needs to decrement either the IPv6 Hop Limit (before the translation) or the IPv4 TTL (after the translation). As part of decrementing the TTL or Hop Limit the translator (as any router) needs to check for zero and send the ICMPv4 or ICMPv6 "ttl exceeded" error.

生存时间:从IPv6标头复制的跃点限制值。由于转换器是路由器,作为转发数据包的一部分,它需要减少IPv6跃点限制(转换之前)或IPv4 TTL(转换之后)。作为减少TTL或跃点限制的一部分,转换器(作为任何路由器)需要检查零并发送ICMPv4或ICMPv6“TTL超出”错误。

Protocol: Next Header field copied from IPv6 header.

协议:从IPv6标头复制的下一个标头字段。

Header Checksum: Computed once the IPv4 header has been created.

标头校验和:创建IPv4标头后计算。

Source Address: If the IPv6 source address is an IPv4-translated address then the low-order 32 bits of the IPv6 source address is copied to the IPv4 source address. Otherwise, the source address is set to 0.0.0.0. The use of 0.0.0.0 is to avoid completely dropping e.g. ICMPv6 error messages sent by IPv6-only routers which makes e.g. traceroute present something for the IPv6-only hops.

源地址:如果IPv6源地址是IPv4转换的地址,则IPv6源地址的低位32位将复制到IPv4源地址。否则,源地址设置为0.0.0.0。使用0.0.0.0是为了避免完全丢弃仅限IPv6路由器发送的ICMPv6错误消息,例如,跟踪路由为仅限IPv6的跃点显示某些内容。

Destination Address: IPv6 packets that are translated have an IPv4-mapped destination address. Thus the low-order 32 bits of the IPv6 destination address is copied to the IPv4 destination address.

目标地址:转换的IPv6数据包具有IPv4映射的目标地址。因此,IPv6目标地址的低位32位被复制到IPv4目标地址。

If any of an IPv6 hop-by-hop options header, destination options header, or routing header with the Segments Left field equal to zero are present in the IPv6 packet, they are ignored i.e., there is no attempt to translate them. However, the Total Length field and the Protocol field would have to be adjusted to "skip" these extension headers.

如果IPv6数据包中存在段左字段等于零的IPv6逐跳选项标头、目的地选项标头或路由标头中的任何一个,则将忽略它们,即不会尝试转换它们。但是,总长度字段和协议字段必须调整为“跳过”这些扩展头。

If a routing header with a non-zero Segments Left field is present then the packet MUST NOT be translated, and an ICMPv6 "parameter problem/ erroneous header field encountered" (Type 4/Code 0) error message, with the Pointer field indicating the first byte of the Segments Left field, SHOULD be returned to the sender.

如果存在具有非零段左字段的路由报头,则不得翻译数据包,并且应将ICMPv6“遇到参数问题/错误报头字段”(类型4/代码0)错误消息(指针字段指示段左字段的第一个字节)返回给发送方。

If the IPv6 packet contains a Fragment header the header fields are set as above with the following exceptions:

如果IPv6数据包包含片段标头,则标头字段的设置如上所述,但以下例外情况除外:

Total Length: Payload length value from IPv6 header, minus 8 for the Fragment header, plus the size of the IPv4 header.

Total Length:IPv6标头的有效负载长度值,片段标头减去8,再加上IPv4标头的大小。

Identification: Copied from the low-order 16-bits in the Identification field in the Fragment header.

标识:从片段头中标识字段的低位16位复制。

Flags: The More Fragments flag is copied from the M flag in the Fragment header. The Don't Fragments flag is set to zero allowing this packet to be fragmented by IPv4 routers.

标志:从片段头中的M标志复制更多片段标志。Don't Fragments标志设置为零,允许IPv4路由器对此数据包进行分段。

Fragment Offset: Copied from the Fragment Offset field in the Fragment Header.

片段偏移量:从片段标题中的片段偏移量字段复制。

Protocol: Next Header value copied from Fragment header.

协议:从片段头复制的下一个头值。

4.2. Translating ICMPv6 Headers into ICMPv4 Headers
4.2. 将ICMPv6头转换为ICMPv4头

All ICMP messages that are to be translated require that the ICMP checksum field be updated as part of the translation since ICMPv6, unlike ICMPv4, has a pseudo-header checksum just like UDP and TCP.

所有要翻译的ICMP消息都要求在翻译过程中更新ICMP校验和字段,因为ICMPv6与ICMPv4不同,它与UDP和TCP一样具有伪报头校验和。

In addition all ICMP packets need to have the Type value translated and for ICMP error messages the included IP header also needs translation.

此外,所有ICMP数据包都需要转换类型值,对于ICMP错误消息,包含的IP报头也需要转换。

The actions needed to translate various ICMPv6 messages are:

翻译各种ICMPv6消息所需的操作包括:

ICMPv6 informational messages:

ICMPv6信息性消息:

Echo Request and Echo Reply (Type 128 and 129) Adjust the type to 0 and 8, respectively, and adjust the ICMP checksum both to take the type change into account and to exclude the ICMPv6 pseudo-header.

Echo Request和Echo Reply(类型128和129)分别将类型调整为0和8,并调整ICMP校验和,以考虑类型更改并排除ICMPv6伪报头。

MLD Multicast Listener Query/Report/Done (Type 130, 131, 132) Single hop message. Silently drop.

MLD多播侦听器查询/报告/完成(类型130、131、132)单跳消息。静静地落下。

Neighbor Discover messages (Type 133 through 137) Single hop message. Silently drop.

邻居发现消息(类型133到137)单跳消息。静静地落下。

Unknown informational messages Silently drop.

未知信息消息会自动删除。

ICMPv6 error messages:

ICMPv6错误消息:

Destination Unreachable (Type 1) Set the Type field to 3. Translate the code field as follows: Code 0 (no route to destination): Set Code to 1 (host unreachable).

无法访问目标(类型1)将类型字段设置为3。按如下方式转换代码字段:代码0(没有到目的地的路由):将代码设置为1(无法访问主机)。

Code 1 (communication with destination administratively prohibited): Set Code to 10 (communication with destination host administratively prohibited).

代码1(与目标主机的通信被行政禁止):将代码设置为10(与目标主机的通信被行政禁止)。

Code 2 (beyond scope of source address): Set Code to 1 (host unreachable). Note that this error is very unlikely since the IPv4-translatable source address is considered to have global scope.

代码2(超出源地址范围):将代码设置为1(无法访问主机)。请注意,由于IPv4可翻译源地址被视为具有全局作用域,因此不太可能出现此错误。

Code 3 (address unreachable): Set Code to 1 (host unreachable).

代码3(地址不可访问):将代码设置为1(主机不可访问)。

Code 4 (port unreachable): Set Code to 3 (port unreachable).

代码4(端口不可访问):将代码设置为3(端口不可访问)。

Packet Too Big (Type 2) Translate to an ICMPv4 Destination Unreachable with code 4. The MTU field needs to be adjusted for the difference between the IPv4 and IPv6 header sizes taking into account whether or not the packet in error includes a Fragment header.

数据包太大(类型2)转换为代码4无法访问的ICMPv4目标。MTU字段需要根据IPv4和IPv6报头大小之间的差异进行调整,同时考虑出错的数据包是否包含片段报头。

Time Exceeded (Type 3) Set the Type to 11. The Code field is unchanged.

超出时间(类型3)将类型设置为11。代码字段保持不变。

Parameter Problem (Type 4) If the Code is 1 translate this to an ICMPv4 protocol unreachable (Type 3, Code 2). Otherwise set the Type to 12 and the Code to zero. The Pointer needs to be updated to point to the corresponding field in the translated include IP header.

参数问题(类型4)如果代码为1,则将其转换为无法访问的ICMPv4协议(类型3,代码2)。否则,将类型设置为12,将代码设置为零。需要更新指针,以指向已翻译的include IP标头中的相应字段。

Unknown error messages Silently drop.

未知错误消息会自动删除。

4.3. Translating ICMPv6 Error Messages into ICMPv4
4.3. 将ICMPv6错误消息转换为ICMPv4

There are some differences between the IPv4 and the IPv6 ICMP error message formats as detailed above. In addition, the ICMP error messages contain the IP header for the packet in error which needs to be translated just like a normal IP header. The translation of this "packet in error" is likely to change the length of the datagram thus the Total Length field in the outer IPv4 header might need to be updated.

如上所述,IPv4和IPv6 ICMP错误消息格式之间存在一些差异。此外,ICMP错误消息包含出错数据包的IP报头,需要像普通IP报头一样进行翻译。此“错误数据包”的翻译可能会更改数据报的长度,因此可能需要更新外部IPv4报头中的总长度字段。

        +-------------+                 +-------------+
        |    IPv6     |                 |    IPv4     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   ICMPv6    |                 |   ICMPv4    |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |    IPv6     |      ===>       |    IPv4     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   Partial   |                 |   Partial   |
        |  Transport  |                 |  Transport  |
        |   Layer     |                 |   Layer     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        
        +-------------+                 +-------------+
        |    IPv6     |                 |    IPv4     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   ICMPv6    |                 |   ICMPv4    |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |    IPv6     |      ===>       |    IPv4     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        |   Partial   |                 |   Partial   |
        |  Transport  |                 |  Transport  |
        |   Layer     |                 |   Layer     |
        |   Header    |                 |   Header    |
        +-------------+                 +-------------+
        

IPv6-to-IPv4 ICMP Error Translation

IPv6到IPv4 ICMP错误转换

The translation of the inner IP header can be done by recursively invoking the function that translated the outer IP headers.

内部IP头的转换可以通过递归调用转换外部IP头的函数来完成。

4.4. Knowing when to Translate
4.4. 知道何时翻译

When the translator receives an IPv6 packet with an IPv4-mapped destination address the packet will be translated to IPv4.

当转换器接收到具有IPv4映射目标地址的IPv6数据包时,该数据包将被转换为IPv4。

5. Implications for IPv6-Only Nodes
5. 对仅IPv6节点的影响

An IPv6-only node which works through SIIT translators need some modifications beyond a normal IPv6-only node.

通过SIIT转换器工作的仅限IPv6的节点需要在普通仅限IPv6的节点之外进行一些修改。

As specified in Section 1.3 the application protocols need to handle operation on a dual stack node. In addition the protocol stack needs to be able to:

如第1.3节所述,应用协议需要处理双堆栈节点上的操作。此外,协议栈需要能够:

o Determine when an IPv4-translatable address needs to be allocated and the allocation needs to be refreshed/renewed. This can presumably be done without involving the applications by e.g. handling this under the socket API. For instance, when the connect or sendto socket calls are invoked they could check if the destination is an IPv4-mapped address and in that case allocate/refresh the IPv4-translatable address.

o 确定何时需要分配IPv4可翻译地址以及何时需要刷新/续订分配。这可以在不涉及应用程序的情况下完成,例如,在套接字API下处理。例如,在调用connect或sendto套接字调用时,它们可以检查目标是否为IPv4映射地址,在这种情况下,可以分配/刷新IPv4可翻译地址。

o Ensure, as part of the source address selection mechanism, that when the destination address is an IPv4-mapped address the source address MUST be an IPv4-translatable address. And an IPv4- translatable address MUST NOT be used with other forms of IPv6 destination addresses.

o 作为源地址选择机制的一部分,请确保当目标地址是IPv4映射地址时,源地址必须是IPv4可翻译地址。IPv4可翻译地址不得与其他形式的IPv6目标地址一起使用。

o Should the peer have AAAA/A6 address records the application (or resolver) SHOULD never fall back to looking for A address records even if communication fails using the available AAAA/A6 records. The reason for this restriction is to prevent traffic between two IPv6 nodes (which AAAA/A6 records in the DNS) from accidentally going through SIIT translators twice; from IPv6 to IPv4 and to IPv6 again. It is considered preferable to instead signal a failure to communicate to the application.

o 如果对等方具有AAAA/A6地址记录,则应用程序(或解析器)决不应返回到查找地址记录,即使使用可用的AAAA/A6记录通信失败。此限制的原因是防止两个IPv6节点(AAAA/A6在DNS中记录)之间的流量意外通过SIIT转换器两次;从IPv6到IPv4再到IPv6。人们认为,最好改为向应用程序发送通信失败的信号。

6. Security Considerations
6. 安全考虑

The use of stateless IP/ICMP translators does not introduce any new security issues beyond the security issues that are already present in the IPv4 and IPv6 protocols and in the routing protocols which are used to make the packets reach the translator.

除了IPv4和IPv6协议以及用于使数据包到达转换器的路由协议中已经存在的安全问题外,使用无状态IP/ICMP转换器不会带来任何新的安全问题。

As the Authentication Header [IPv6-AUTH] is specified to include the IPv4 Identification field and the translating function not being able to always preserve the Identification field, it is not possible for an IPv6 endpoint to compute AH on received packets that have been translated from IPv4 packets. Thus AH does not work through a translator.

由于身份验证头[IPv6 AUTH]被指定包含IPv4标识字段,并且转换函数无法始终保留标识字段,因此IPv6端点不可能对已从IPv4数据包转换的接收数据包计算AH。因此,AH不能通过翻译工作。

Packets with ESP can be translated since ESP does not depend on header fields prior to the ESP header. Note that ESP transport mode is easier to handle than ESP tunnel mode; in order to use ESP tunnel mode the IPv6 node needs to be able to generate an inner IPv4 header when transmitting packets and remove such an IPv4 header when receiving packets.

使用ESP的数据包可以被翻译,因为ESP不依赖于ESP头之前的头字段。请注意,ESP传输模式比ESP隧道模式更易于处理;为了使用ESP隧道模式,IPv6节点需要能够在发送数据包时生成内部IPv4报头,并在接收数据包时删除此类IPv4报头。

References

工具书类

[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[关键词]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[IPv6] Deering, S. and R. Hinden, Editors, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.

[IPv6]Deering,S.和R.Hinden,编辑,“互联网协议,第6版(IPv6)规范”,RFC 2460,1998年12月。

[IPv4] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981.

[IPv4]Postel,J.,“互联网协议”,STD 5,RFC 7911981年9月。

[ADDR-ARCH] Deering, S. and R. Hinden, Editors, "IP Version 6 Addressing Architecture", RFC 2373, July 1998.

[ADDR-ARCH]Deering,S.和R.Hinden,编辑,“IP版本6寻址体系结构”,RFC 23731998年7月。

[TRANS-MECH] Gilligan, R. and E. Nordmark, "Transition Mechanisms for IPv6 Hosts and Routers", RFC 1933, April 1996.

[TRANS-MECH]Gilligan,R.和E.Nordmark,“IPv6主机和路由器的过渡机制”,RFC 1933,1996年4月。

[DISCOVERY] Narten, T., Nordmark, E. and W. Simpson, "Neighbor Discovery for IP Version 6 (IPv6)", RFC 2461, December 1998.

[DISCOVERY]Narten,T.,Nordmark,E.和W.Simpson,“IP版本6(IPv6)的邻居发现”,RFC 246112998年12月。

[IPv6-SA] Atkinson, R., "Security Architecture for the Internet Protocol", RFC 2401, November 1998.

[IPv6 SA]Atkinson,R.,“互联网协议的安全架构”,RFC 2401,1998年11月。

[IPv6-AUTH] Atkinson, R., "IP Authentication Header", RFC 2402, November 1998.

[IPv6认证]阿特金森,R.,“IP认证头”,RFC 2402,1998年11月。

[IPv6-ESP] Atkinson, R., "IP Encapsulating Security Payload (ESP)", RFC 2406, November 1998.

[IPv6 ESP]阿特金森,R.,“IP封装安全有效负载(ESP)”,RFC 2406,1998年11月。

[ICMPv4] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792, September 1981.

[ICMPv4]Postel,J.,“互联网控制消息协议”,STD 5,RFC 792,1981年9月。

[ICMPv6] Conta, A. and S. Deering, "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6)", RFC 2463, December 1998.

[ICMPv6]Conta,A.和S.Deering,“互联网协议版本6(IPv6)的互联网控制消息协议(ICMPv6)”,RFC 24632998年12月。

[IGMP] Deering, S., "Host extensions for IP multicasting", STD 5, RFC 1112, August 1989.

[IGMP]Deering,S.,“IP多播的主机扩展”,STD 5,RFC 1112,1989年8月。

[PMTUv4] Mogul, J. and S. Deering, "Path MTU Discovery", RFC 1191, November 1990.

[PMTUv4]Mogul,J.和S.Deering,“路径MTU发现”,RFC 1191191990年11月。

[PMTUv6] McCann, J., Deering, S. and J. Mogul, "Path MTU Discovery for IP version 6", RFC 1981, August 1996.

[PMTUv6]McCann,J.,Deering,S.和J.Mogul,“IP版本6的路径MTU发现”,RFC 1981,1996年8月。

[DIFFSERV] Nichols, K., Blake, S., Baker, F. and D. Black, "Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers", RFC 2474, December 1998.

[DIFFSERV]Nichols,K.,Blake,S.,Baker,F.和D.Black,“IPv4和IPv6报头中区分服务字段(DS字段)的定义”,RFC 24741998年12月。

[MLD] Deering, S., Fenner, W. and B. Haberman, "Multicast Listener Discovery (MLD) for IPv6", RFC 2710, October 1999.

[MLD]Deering,S.,Fenner,W.和B.Haberman,“IPv6的多播侦听器发现(MLD)”,RFC 2710,1999年10月。

[FTPEXT] Allman, M., Ostermann, S. and C. Metz, "FTP Extensions for IPv6 and NATs.", RFC 2428, September 1998.

[FTPEXT]Allman,M.,Ostermann,S.和C.Metz,“IPv6和NAT的FTP扩展”,RFC 24281998年9月。

[MILLER] G. Miller, Email to the ngtrans mailing list on 26 March 1999.

[MILLER]G.MILLER,1999年3月26日通过电子邮件发送至ngtrans邮件列表。

[BSDAPI] Gilligan, R., Thomson, S., Bound, J. and W. Stevens, "Basic Socket Interface Extensions for IPv6", RFC 2553, March 1999.

[BSDAPI]Gilligan,R.,Thomson,S.,Bound,J.和W.Stevens,“IPv6的基本套接字接口扩展”,RFC 25531999年3月。

Author's Address

作者地址

Erik Nordmark Sun Microsystems, Inc. 901 San Antonio Road Palo Alto, CA 94303 USA

Erik Nordmark Sun Microsystems,Inc.美国加利福尼亚州帕洛阿尔托市圣安东尼奥路901号,邮编94303

   Phone: +1 650 786 5166
   Fax:   +1 650 786 5896
   EMail: nordmark@sun.com
        
   Phone: +1 650 786 5166
   Fax:   +1 650 786 5896
   EMail: nordmark@sun.com
        

Full Copyright Statement

完整版权声明

Copyright (C) The Internet Society (2000). All Rights Reserved.

版权所有(C)互联网协会(2000年)。版权所有。

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

本文件及其译本可复制并提供给他人,对其进行评论或解释或协助其实施的衍生作品可全部或部分编制、复制、出版和分发,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文件本身,例如删除版权通知或对互联网协会或其他互联网组织的引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准过程中定义的版权程序,或根据需要将其翻译成英语以外的其他语言。

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。