⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc1981.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 3 页
字号:
RFC 1981              Path MTU Discovery for IPv6            August 1996   Implementing Path MTU Discovery in the packetization layers   simplifies some of the inter-layer issues, but has several drawbacks:   the implementation may have to be redone for each packetization   protocol, it becomes hard to share PMTU information between different   packetization layers, and the connection-oriented state maintained by   some packetization layers may not easily extend to save PMTU   information for long periods.   It is therefore suggested that the IP layer store PMTU information   and that the ICMP layer process received Packet Too Big messages.   The packetization layers may respond to changes in the PMTU, by   changing the size of the messages they send.  To support this   layering, packetization layers require a way to learn of changes in   the value of MMS_S, the "maximum send transport-message size".  The   MMS_S is derived from the Path MTU by subtracting the size of the   IPv6 header plus space reserved by the IP layer for additional   headers (if any).   It is possible that a packetization layer, perhaps a UDP application   outside the kernel, is unable to change the size of messages it   sends.  This may result in a packet size that exceeds the Path MTU.   To accommodate such situations, IPv6 defines a mechanism that allows   large payloads to be divided into fragments, with each fragment sent   in a separate packet (see [IPv6-SPEC] section "Fragment Header").   However, packetization layers are encouraged to avoid sending   messages that will require fragmentation (for the case against   fragmentation, see [FRAG]).5.2. Storing PMTU information   Ideally, a PMTU value should be associated with a specific path   traversed by packets exchanged between the source and destination   nodes.  However, in most cases a node will not have enough   information to completely and accurately identify such a path.   Rather, a node must associate a PMTU value with some local   representation of a path.  It is left to the implementation to select   the local representation of a path.   In the case of a multicast destination address, copies of a packet   may traverse many different paths to reach many different nodes.  The   local representation of the "path" to a multicast destination must in   fact represent a potentially large set of paths.   Minimally, an implementation could maintain a single PMTU value to be   used for all packets originated from the node.  This PMTU value would   be the minimum PMTU learned across the set of all paths in use by the   node.  This approach is likely to result in the use of smaller   packets than is necessary for many paths.McCann, Deering & Mogul     Standards Track                     [Page 6]RFC 1981              Path MTU Discovery for IPv6            August 1996   An implementation could use the destination address as the local   representation of a path.  The PMTU value associated with a   destination would be the minimum PMTU learned across the set of all   paths in use to that destination.  The set of paths in use to a   particular destination is expected to be small, in many cases   consisting of a single path.  This approach will result in the use of   optimally sized packets on a per-destination basis.  This approach   integrates nicely with the conceptual model of a host as described in   [ND]: a PMTU value could be stored with the corresponding entry in   the destination cache.   If flows [IPv6-SPEC] are in use, an implementation could use the flow   id as the local representation of a path.  Packets sent to a   particular destination but belonging to different flows may use   different paths, with the choice of path depending on the flow id.   This approach will result in the use of optimally sized packets on a   per-flow basis, providing finer granularity than PMTU values   maintained on a per-destination basis.   For source routed packets (i.e. packets containing an IPv6 Routing   header [IPv6-SPEC]), the source route may further qualify the local   representation of a path.  In particular, a packet containing a type   0 Routing header in which all bits in the Strict/Loose Bit Map are   equal to 1 contains a complete path specification.  An implementation   could use source route information in the local representation of a   path.      Note: Some paths may be further distinguished by different      security classifications.  The details of such classifications are      beyond the scope of this memo.   Initially, the PMTU value for a path is assumed to be the (known) MTU   of the first-hop link.   When a Packet Too Big message is received, the node determines which   path the message applies to based on the contents of the Packet Too   Big message.  For example, if the destination address is used as the   local representation of a path, the destination address from the   original packet would be used to determine which path the message   applies to.      Note: if the original packet contained a Routing header, the      Routing header should be used to determine the location of the      destination address within the original packet.  If Segments Left      is equal to zero, the destination address is in the Destination      Address field in the IPv6 header.  If Segments Left is greater      than zero, the destination address is the last address      (Address[n]) in the Routing header.McCann, Deering & Mogul     Standards Track                     [Page 7]RFC 1981              Path MTU Discovery for IPv6            August 1996   The node then uses the value in the MTU field in the Packet Too Big   message as a tentative PMTU value, and compares the tentative PMTU to   the existing PMTU.  If the tentative PMTU is less than the existing   PMTU estimate, the tentative PMTU replaces the existing PMTU as the   PMTU value for the path.   The packetization layers must be notified about decreases in the   PMTU.  Any packetization layer instance (for example, a TCP   connection) that is actively using the path must be notified if the   PMTU estimate is decreased.      Note: even if the Packet Too Big message contains an Original      Packet Header that refers to a UDP packet, the TCP layer must be      notified if any of its connections use the given path.   Also, the instance that sent the packet that elicited the Packet Too   Big message should be notified that its packet has been dropped, even   if the PMTU estimate has not changed, so that it may retransmit the   dropped data.      Note: An implementation can avoid the use of an asynchronous      notification mechanism for PMTU decreases by postponing      notification until the next attempt to send a packet larger than      the PMTU estimate.  In this approach, when an attempt is made to      SEND a packet that is larger than the PMTU estimate, the SEND      function should fail and return a suitable error indication.  This      approach may be more suitable to a connectionless packetization      layer (such as one using UDP), which (in some implementations) may      be hard to "notify" from the ICMP layer.  In this case, the normal      timeout-based retransmission mechanisms would be used to recover      from the dropped packets.   It is important to understand that the notification of the   packetization layer instances using the path about the change in the   PMTU is distinct from the notification of a specific instance that a   packet has been dropped.  The latter should be done as soon as   practical (i.e., asynchronously from the point of view of the   packetization layer instance), while the former may be delayed until   a packetization layer instance wants to create a packet.   Retransmission should be done for only for those packets that are   known to be dropped, as indicated by a Packet Too Big message.5.3. Purging stale PMTU information   Internetwork topology is dynamic; routes change over time.  While the   local representation of a path may remain constant, the actual   path(s) in use may change.  Thus, PMTU information cached by a node   can become stale.McCann, Deering & Mogul     Standards Track                     [Page 8]RFC 1981              Path MTU Discovery for IPv6            August 1996   If the stale PMTU value is too large, this will be discovered almost   immediately once a large enough packet is sent on the path.  No such   mechanism exists for realizing that a stale PMTU value is too small,   so an implementation should "age" cached values.  When a PMTU value   has not been decreased for a while (on the order of 10 minutes), the   PMTU estimate should be set to the MTU of the first-hop link, and the   packetization layers should be notified of the change.  This will   cause the complete Path MTU Discovery process to take place again.      Note: an implementation should provide a means for changing the      timeout duration, including setting it to "infinity".  For      example, nodes attached to an FDDI link which is then attached to      the rest of the Internet via a small MTU serial line are never      going to discover a new non-local PMTU, so they should not have to      put up with dropped packets every 10 minutes.   An upper layer must not retransmit data in response to an increase in   the PMTU estimate, since this increase never comes in response to an   indication of a dropped packet.   One approach to implementing PMTU aging is to associate a timestamp   field with a PMTU value.  This field is initialized to a "reserved"   value, indicating that the PMTU is equal to the MTU of the first hop   link.  Whenever the PMTU is decreased in response to a Packet Too Big   message, the timestamp is set to the current time.   Once a minute, a timer-driven procedure runs through all cached PMTU   values, and for each PMTU whose timestamp is not "reserved" and is   older than the timeout interval:   - The PMTU estimate is set to the MTU of the first hop link.   - The timestamp is set to the "reserved" value.   - Packetization layers using this path are notified of the increase.5.4. TCP layer actions   The TCP layer must track the PMTU for the path(s) in use by a   connection; it should not send segments that would result in packets   larger than the PMTU.  A simple implementation could ask the IP layer   for this value each time it created a new segment, but this could be   inefficient.  Moreover, TCP implementations that follow the "slow-   start" congestion-avoidance algorithm [CONG] typically calculate and   cache several other values derived from the PMTU.  It may be simpler   to receive asynchronous notification when the PMTU changes, so that   these variables may be updated.McCann, Deering & Mogul     Standards Track                     [Page 9]RFC 1981              Path MTU Discovery for IPv6            August 1996   A TCP implementation must also store the MSS value received from its   peer, and must not send any segment larger than this MSS, regardless   of the PMTU.  In 4.xBSD-derived implementations, this may require   adding an additional field to the TCP state record.   The value sent in the TCP MSS option is independent of the PMTU.   This MSS option value is used by the other end of the connection,   which may be using an unrelated PMTU value.  See [IPv6-SPEC] sections   "Packet Size Issues" and "Maximum Upper-Layer Payload Size" for   information on selecting a value for the TCP MSS option.   When a Packet Too Big message is received, it implies that a packet   was dropped by the node that sent the ICMP message.  It is sufficient   to treat this as any other dropped segment, and wait until the   retransmission timer expires to cause retransmission of the segment.   If the Path MTU Discovery process requires several steps to find the   PMTU of the full path, this could delay the connection by many   round-trip times.   Alternatively, the retransmission could be done in immediate response   to a notification that the Path MTU has changed, but only for the   specific connection specified by the Packet Too Big message.  The   packet size used in the retransmission should be no larger than the   new PMTU.      Note: A packetization layer must not retransmit in response to      every Packet Too Big message, since a burst of several oversized      segments will give rise to several such messages and hence several      retransmissions of the same data.  If the new estimated PMTU is      still wrong, the process repeats, and there is an exponential      growth in the number of superfluous segments sent.      This means that the TCP layer must be able to recognize when a      Packet Too Big notification actually decreases the PMTU that it      has already used to send a packet on the given connection, and      should ignore any other notifications.   Many TCP implementations incorporate "congestion avoidance" and   "slow-start" algorithms to improve performance [CONG].  Unlike a   retransmission caused by a TCP retransmission timeout, a   retransmission caused by a Packet Too Big message should not change   the congestion window.  It should, however, trigger the slow-start   mechanism (i.e., only one segment should be retransmitted until   acknowledgements begin to arrive again).   TCP performance can be reduced if the sender's maximum window size is   not an exact multiple of the segment size in use (this is not the   congestion window size, which is always a multiple of the segmentMcCann, Deering & Mogul     Standards Track                    [Page 10]RFC 1981              Path MTU Discovery for IPv6            August 1996

⌨️ 快捷键说明

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