rfc2473.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,626 行 · 第 1/5 页

TXT
1,626
字号
   The increase in the size of a tunnel IPv6 packet due to nested
   encapsulations may require fragmentation [IPv6-Spec] at a tunnel
   entry point - see section 7.  Furthermore, each fragmentation, due to
   nested encapsulation, of an already fragmented tunnel packet results
   in a doubling of the number of fragments.  Moreover, it is probable
   that once this fragmentation begins, each new nested encapsulation
   results in yet additional fragmentation.  Therefore limiting nested
   encapsulation is recommended.

   The proposed mechanism for limiting excessive nested encapsulation is
   a "Tunnel Encapsulation Limit" option, which is carried in an IPv6
   Destination Options extension header accompanying an encapsulating
   IPv6 header.








Conta & Deering             Standards Track                    [Page 12]

RFC 2473            Generic Packet Tunneling in IPv6       December 1998


4.1.1 Tunnel Encapsulation Limit Option

   A tunnel entry-point node may be configured to include a Tunnel
   Encapsulation Limit option as part of the information prepended to
   all packets entering a tunnel at that node.  The Tunnel Encapsulaton
   Limit option is carried in a Destination Options extension header
   [IPv6-Spec] placed between the encapsulating IPv6 header and the IPv6
   header of the original packet.  (Other IPv6 extension headers may
   also be present preceding or following the Destination Options
   extension header, depending on configuration information at the
   tunnel entry-point node.)

   The Tunnel Encapsulation Limit option specifies how many additional
   levels of encapsulation are permitted to be prepended to the packet
   -- or, in other words, how many further levels of nesting the packet
   is permitted to undergo -- not counting the encapsulation in which
   the option itself is contained.  For example, a Tunnel Encapsulation
   Limit option containing a limit value of zero means that a packet
   carrying that option may not enter another tunnel before exiting the
   current tunnel.

   The Tunnel Encapsulation Limit option has the following format:

      Option Type     Opt Data Len   Opt Data Len
    0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0 0 0 0 0 1 0 0|       1       | Tun Encap Lim |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


      Option Type decimal value 4

                       - the highest-order two bits - set to 00 -
                       indicate "skip over this option if the option is
                       not recognized".

                        - the third-highest-order bit - set to 0 -
                       indicates that the option data in this option
                       does not change en route to the packet's
                       destination [IPv6-Spec].

      Opt Data Len value 1 - the data portion of the Option is one octet
                       long.

      Opt Data Value the Tunnel Encapsulation Limit value - 8-bit
                       unsigned integer specifying how many further
                       levels of encapsulation are permitted for the




Conta & Deering             Standards Track                    [Page 13]

RFC 2473            Generic Packet Tunneling in IPv6       December 1998


   Tunnel Encapsulation Limit options are of interest only to tunnel
   entry points.  A tunnel entry-point node is required to execute the
   following procedure for every packet entering a tunnel at that node:

        (a)  Examine the packet to see if a Tunnel  Encapsulation  Limit
             option is present following its IPv6 header.  The headers
             following the IPv6 header must be examined in strict
             "left-to-right" order, with the examination stopping as
             soon as any one of the following headers is encountered:
             (i) a Destination Options extension header containing a
             Tunnel Encapsulation Limit, (ii) another IPv6 header, (iii)
             a non-extension header, such as TCP, UDP, or ICMP, or (iv)
             a header that cannot be parsed because it is encrypted or
             its type is unknown.  (Note that this requirment is an
             exception to the general IPv6 rule that a Destination
             Options extension header need only be examined by a
             packet's destination node.  An alternative and "cleaner"
             approach would have been to use a Hop-by-Hop extension
             header for this purpose, but that would have imposed an
             undesirable extra processing burden, and possible
             consequent extra delay, at every IPv6 node along the path
             of a tunnel.)

        (b) If a Tunnel Encapsulation Limit option is found in the
             packet entering the tunnel and its limit value is zero, the
             packet is discarded and an ICMP Parameter Problem message
             [ICMP-Spec] is sent to the source of the packet, which is
             the previous tunnel entry-point node.  The Code field of
             the Parameter Problem message is set to zero ("erroneous
             header field encountered") and the Pointer field is set to
             point to the third octet of the Tunnel Encapsulation Limit
             option (i.e., the octet containing the limit value of
             zero).

        (c) If a Tunnel Encapsulation Limit option is found in the
             packet entering the tunnel and its limit value is non-zero,
             an additional Tunnel Encapsulation Limit option must be
             included as part of the encapsulating headers being added
             at this entry point.  The limit value in the encapsulating
             option is set to one less than the limit value found in the
             packet being encapsulated.

        (d) If a Tunnel Encapsulation Limit option is not found in the
             packet entering the tunnel and if an encapsulation limit
             has been configured for this tunnel, a Tunnel Encapsulation
             Limit option must be included as part of the encapsulating
             headers being added at this entry point.  The limit value
             in the option is set to the configured limit.



Conta & Deering             Standards Track                    [Page 14]

RFC 2473            Generic Packet Tunneling in IPv6       December 1998


        (e)  If a Tunnel Encapsulation Limit option is not found in  the
             packet  entering  the  tunnel and if no encapsulation limit
             has  been  configured  for  this  tunnel,  then  no  Tunnel
             Encapsulation  Limit  option  is  included  as  part of the
             encapsulating headers being added at this entry point.

   A Tunnel Encapsulation Limit option added at a tunnel entry-point
   node is removed as part of the decapsulation process at that tunnel's
   exit-point node.

   Two cases of encapsulation that should be avoided are described
   below:

4.1.2 Loopback Encapsulation

   A particular case of encapsulation which must be avoided is the
   loopback encapsulation.  Loopback encapsulation takes place when a
   tunnel IPv6 entry-point node encapsulates tunnel IPv6 packets
   originated from itself, and destined to itself.  This can generate an
   infinite processing loop in the entry-point node.

   To avoid such a case, it is recommended that an implementation have a
   mechanism that checks and rejects the configuration of a tunnel in
   which both the entry-point and exit-point node addresses belong to
   the same node. It is also recommended that the encapsulating engine
   check for and reject the encapsulation of a packet that has the pair
   of tunnel entry-point and exit-point addresses identical with the
   pair of original packet source and final destination addresses.

4.1.3 Routing-Loop Nested Encapsulation

   In the case of a forwarding path with multiple-level nested tunnels,
   a routing-loop from an inner tunnel to an outer tunnel is
   particularly dangerous when packets from the inner tunnels reenter an
   outer tunnel from which they have not yet exited. In such a case, the
   nested encapsulation becomes a recursive encapsulation with the
   negative effects described in 4.1.  Because each nested encapsulation
   adds a tunnel header with a new hop limit value, the IPv6 hop limit
   mechanism cannot control the number of times the packet reaches the
   outer tunnel entry-point node, and thus cannot control the number of
   recursive encapsulations.

   When the path of a packet from source to final destination includes
   tunnels, the maximum number of hops that the packet can traverse
   should be controlled by two mechanisms used together to avoid the
   negative effects of recursive encapsulation in routing loops:





Conta & Deering             Standards Track                    [Page 15]

RFC 2473            Generic Packet Tunneling in IPv6       December 1998


        (a)  the original packet hop limit.

             It is decremented at each forwarding operation performed on
             an original packet. This includes each encapsulation of the
             original packet. It does not include nested encapsulations
             of the original packet

        (b)  the tunnel IPv6 packet encapsulation limit.

             It is decremented at each nested encapsulation of the
             packet.

   For a discussion of the excessive encapsulation risk factors in
   nested encapsulation see Appendix A.

5. Tunnel IPv6 Header

   The tunnel entry-point node fills out a tunnel IPv6 main header
   [IPv6-Spec] as follows:

          Version:

            value 6

          Traffic Class:

            Depending on the entry-point node tunnel configuration, the
            traffic class can be set to that of either the original
            packet or a pre-configured value - see section 6.4.

          Flow Label:

            Depending on the entry-point node tunnel configuration, the
            flow label can be set to a pre-configured value. The typical
            value is zero - see section 6.5.

          Payload Length:

            The original packet length, plus the length of the
            encapsulating (prepended) IPv6 extension headers, if any.

          Next Header:

            The next header value according to [IPv6-Spec] from the
            Assigned Numbers RFC [RFC-1700 or its successors].

            For example, if the original packet is an IPv6 packet, this
            is set to:



Conta & Deering             Standards Track                    [Page 16]

RFC 2473            Generic Packet Tunneling in IPv6       December 1998


                 - decimal value 41 (Assigned Next Header number for
                 IPv6) - if there are no tunnel extension headers.

                 - value 0 (Assigned Next Header number for IPv6 Hop by
                 Hop Options extension header) - if a hop by hop options
                 extension header immediately follows the tunnel IPv6
                 header.

                 - decimal value 60 (Assigned Next Header number for
                 IPv6 Destination Options extension header) - if a
                 destination options extension header immediately
                 follows the tunnel IPv6 header.

          Hop Limit:

            The tunnel IPv6 header hop limit is set to a pre-configured
            value - see section 6.3.

            The default value for hosts is the Neighbor Discovery
            advertised hop limit [ND-Spec].  The default value for
            routers is the default IPv6 Hop Limit value from the
            Assigned Numbers RFC (64 at the time of writing this
            document).

          Source Address:

            An IPv6 address of the outgoing interface of the tunnel
            entry-point node.  This address is configured as the tunnel
            entry-point node address - see section 6.1.

          Destination Address:

            An IPv6 address of the tunnel exit-point node. This address
            is configured as the tunnel exit-point node address - see
            section 6.2.

5.1 Tunnel IPv6 Extension Headers

   Depending on IPv6 node configuration parameters, a tunnel entry-point
   node may append to the tunnel IPv6 main header one or more IPv6
   extension headers, such as a Hop-by-Hop Options header, a Routing
   header, or others.









Conta & Deering             Standards Track                    [Page 17]

RFC 2473            Generic Packet Tunneling in IPv6       December 1998


   To limit the number of nested encapsulations of a packet, if it was
   configured to do so - see section 6.6 - a tunnel entry-point includes
   a Destination Options extension header containing a Tunnel
   Encapsulation Limit option. If that option is the only option present
   in the Destination Options header, the header has the following
   format:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Next Header  |Hdr Ext Len = 0| Opt Type = 4  |Opt Data Len=1 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Tun Encap Lim |PadN Opt Type=1|Opt Data Len=1 |       0       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

          Next Header:

            Identifies the type of the original packet header.  For
            example, if the original packet is an IPv6 packet, the next
            header protocol value is set to decimal value 41 (Assigned
            payload type number for IPv6).

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?