RFC1191 日本語訳
1191 Path MTU discovery. J.C. Mogul, S.E. Deering. November 1990. (Format: TXT=47936 bytes) (Obsoletes RFC1063) (Status: DRAFT STANDARD)
RFC一覧
英語原文
Network Working Group J. Mogul Request for Comments: 1191 DECWRL Obsoletes: RFC 1063 S. Deering Stanford University November 1990 Path MTU Discovery 経路 MTU 探索 Status of this Memo このメモの位置づけ This RFC specifies a protocol on the IAB Standards Track for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "IAB Official Protocol Standards" for the standardization state and status of this protocol. Distribution of this memo is unlimited. この RFC は、Internet community のための IAB Standards Track でのプロ トコルを明細に記述し、改良のための議論と提案を要求するものである。この プロトコルの標準化状態と状態について "IAB Official Protocol Standards" の最新版を参照してもらいたい。このメモの配布は、無制限である。 ------------------------------------------------------------------------- Table of Contents 目次 Status of this Memo 1 Abstract 2 Acknowledgements 2 1. Introduction 2 2. Protocol overview 3 3. Host specification 4 3.1. TCP MSS Option 5 4. Router specification 6 5. Host processing of old-style messages 7 6. Host implementation 8 6.1. Layering 9 6.2. Storing PMTU information 10 6.3. Purging stale PMTU information 11 6.4. TCP layer actions 13 6.5. Issues for other transport protocols 14 6.6. Management interface 15 7. Likely values for Path MTUs 15 7.1. A better way to detect PMTU increases 16 8. Security considerations 18 References 18 Authors' Addresses 19 このメモの位置づけ 1 要約 2 謝辞 2 1. 序論 2 2. プロトコルの概観 3 3. ホスト仕様書 4 3.1. TCP MSS オプション 5 4. ルータ仕様書 6 5. 古いスタイルメッセージのホストでの処理 7 6. ホストでの実装 8 6.1. 層 9 6.2. PMTU 情報の保存 10 6.3. 古い PMTU 情報の追放 11 6.4. TCP 層のふるまい 13 6.5. 他のトランスポート層についての問題 14 6.6. 管理インターフェイス 15 7. 経路 MTUs の適当な値 15 7.1 PMTU 増加を発見するための良い方法 16 8. セキュリティに関する考察 18 参考文献 18 著者のアドレス 19 List of Tables 表目次 Table 7-1: Common MTUs in the Internet 17 表 7-1: Internet での一般 MTUs ------------------------------------------------------------------------- Abstract 概要 This memo describes a technique for dynamically discovering the maximum transmission unit (MTU) of an arbitrary internet path. It specifies a small change to the way routers generate one type of ICMP message. For a path that passes through a router that has not been so changed, this technique might not discover the correct Path MTU, but it will always choose a Path MTU as accurate as, and in many cases more accurate than, the Path MTU that would be chosen by current practice. このメモは、気まぐれな internet 経路の最大転送単位 (MTU) を動的に探索 するためのテクニックを記述する。これは、ルータが ICMP メッセージの一つ のタイプを生成する方法への少しの変更を詳細に記述する。変更されないルー タを通過する経路について、このテクニックは正しい Path MTU を探索できな いかもしれない。しかしこれは、現在の実行によって選ばれるだろう Path MTU と同じぐらい正確な Path MTU をいつも選ぶだろうし、多くのケースでよ り正確である。 ------------------------------------------------------------------------- Acknowledgements 謝辞 This proposal is a product of the IETF MTU Discovery Working Group. この提案は、IETF MTU Discovery Working Group の結果である。 The mechanism proposed here was first suggested by Geof Cooper [2], who in two short paragraphs set out all the basic ideas that took the Working Group months to reinvent. ここで提案されたメカニズムは、Geof Cooper [2] により最初に提案され、再 提案するのに Working Gruop の月だけかかる基礎アイデアを二つの短いパラ グラフで説明した。 ------------------------------------------------------------------------- 1. Introduction 1. 序論 When one IP host has a large amount of data to send to another host, the data is transmitted as a series of IP datagrams. It is usually preferable that these datagrams be of the largest size that does not require fragmentation anywhere along the path from the source to the destination. (For the case against fragmentation, see [5].) This datagram size is referred to as the Path MTU (PMTU), and it is equal to the minimum of the MTUs of each hop in the path. A shortcoming of the current Internet protocol suite is the lack of a standard mechanism for a host to discover the PMTU of an arbitrary path. ある IP ホストが他のホストに送信する大きいサイズのデータを持つ時、デー タは IP datagrams の連続として送信される。これら datagrams がどこか始 点から終点経路に fragmentation (分割) を必要としないことが、たいてい望 ましい。(fragmentation に対するケースについて、[5] を参照しなさい。) この datagram サイズは、Path MTU (PMTU) として参照され、その経路でそれ ぞれの hop の MTUs の最小値に等しい。現在の Internet Protocol 体系の欠 点は、気まぐれな経路の PMTU を探索するために、ホストに標準メカニズムが 欠如していることである。 Note: The Path MTU is what in [1] is called the "Effective MTU for sending" (EMTU_S). A PMTU is associated with a path, which is a particular combination of IP source and destination address and perhaps a Type-of-service (TOS). 注意: Path MTU は、[1] で "Effective MTU for sending" (EMTU_S) と呼ばれていたものである。PMTU は経路と関連し、そしてそれは特定 の IP 始点アドレスと終点アドレスの組み合わせとたぶん Type-of-service (TOS) である。 The current practice [1] is to use the lesser of 576 and the first-hop MTU as the PMTU for any destination that is not connected to the same network or subnet as the source. In many cases, this results in the use of smaller datagrams than necessary, because many paths have a PMTU greater than 576. A host sending datagrams much smaller than the Path MTU allows is wasting Internet resources and probably getting suboptimal throughput. Furthermore, current practice does not prevent fragmentation in all cases, since there are some paths whose PMTU is less than 576. 現在の慣習は、576 byte より小さいのと、同じ network に接続されていない どんな終点についてもか、始点としての subnet について PMTU として最初の hop MTU を使用することである。多くのケースで、これは必要とするよりもさ らに小さい datagrams の使用という結果となる。なぜなら多くの経路は、576 byte より大きい PMTU を持っているからである。割り当てた PMTU よりも非 常に小さい datagrams を送信しているホストは、Internet resources を浪費 し、たぶん最適以下の throughput を得る。それだけでなく、576 byte より 小さい PMTU の経路があるので、現在の慣習はすべてのケースで fragmentation を防がない。 It is expected that future routing protocols will be able to provide accurate PMTU information within a routing area, although perhaps not across multi-level routing hierarchies. It is not clear how soon that will be ubiquitously available, so for the next several years the Internet needs a simple mechanism that discovers PMTUs without wasting resources and that works before all hosts and routers are modified. 将来の経路制御プロトコルは、routing area 内で正確な PMTU 情報を提供す ることが出来ることを期待される。しかしたぶん multi-level routing 階層 は横切らない。すぐにそれが同時に至るところで利用可能にする方法は明らか ではない。それで resources を浪費せずに PMTU を探索し、すべてのホスト とルータが変更される前にはたらく単純なメカニズムをこれから何年かの間に Internet は必要とする。 ------------------------------------------------------------------------- 2. Protocol overview 2. プロトコルの概観 In this memo, we describe a technique for using the Don't Fragment (DF) bit in the IP header to dynamically discover the PMTU of a path. The basic idea is that a source host initially assumes that the PMTU of a path is the (known) MTU of its first hop, and sends all datagrams on that path with the DF bit set. If any of the datagrams are too large to be forwarded without fragmentation by some router along the path, that router will discard them and return ICMP Destination Unreachable messages with a code meaning "fragmentation needed and DF set" [7]. Upon receipt of such a message (henceforth called a "Datagram Too Big" message), the source host reduces its assumed PMTU for the path. このメモで、われわれは IP ヘッダの Don't Fragment (DF) の使用が、経路 上の PMTU を動的に探索することのテクニックを記述する。基礎アイデアは、 始点ホストが、最初に経路の PMTU が最初の hop の (知られた) MTU と当然 思い、その経路に DF bit をセットしたすべての datagrams を送信すること である。もしなんらかの datagrams のサイズが大変大きく経路のあるルータ によって fragmentation なしに転送できないなら、そのルータはそれらを捨 て、"fragmentation が必要だが DF がセットされている" [7] を意味してい るコード ICMP Destination Unreachable message を返す。そのような message (これからは "Datagram Too Big" message と呼ぶ) を受け取って、 始点ホストはその経路について想定された PMTU を減らす。 The PMTU discovery process ends when the host's estimate of the PMTU is low enough that its datagrams can be delivered without fragmentation. Or, the host may elect to end the discovery process by ceasing to set the DF bit in the datagram headers; it may do so, for example, because it is willing to have datagrams fragmented in some circumstances. Normally, the host continues to set DF in all datagrams, so that if the route changes and the new PMTU is lower, it will be discovered. datagrams が fragmentation なしに転送できるぐらいホストの PMTU の見積 りが十分に小さくなった時、PMTU 探索プロセスは終了する。もしくは、ホス トは datagram ヘッダに DF bit のセットをやめることにより探索プロセスを 終了することを選ぶだろう。もし route が変更したり新しい PMTU が小さく なるなら、PMTU が探索されるように、通常ホストはすべての datagrams に DF をセットし続ける。 Unfortunately, the Datagram Too Big message, as currently specified, does not report the MTU of the hop for which the rejected datagram was too big, so the source host cannot tell exactly how much to reduce its assumed PMTU. To remedy this, we propose that a currently unused header field in the Datagram Too Big message be used to report the MTU of the constricting hop. This is the only change specified for routers in support of PMTU Discovery. 不運にも、今は明細に述べられたとして、Datagram Too Big message は拒否 された datagram が大変大きい時の hop の MTU を報告しない。それで始点ホ ストは、その想定された PMTU をどれだけ減らせばよいか正確にわかることが 出来ない。これを改善するために、Datagram Too Big message で現在使用し ていないヘッダ field を狭い hop の MTU を報告するために使用することを われわれは提案する。これは、PMTU Discovery のサポートでのルータに指定 された唯一の変更である。 The PMTU of a path may change over time, due to changes in the routing topology. Reductions of the PMTU are detected by Datagram Too Big messages, except on paths for which the host has stopped setting the DF bit. To detect increases in a path's PMTU, a host periodically increases its assumed PMTU (and if it had stopped, resumes setting the DF bit). This will almost always result in datagrams being discarded and Datagram Too Big messages being generated, because in most cases the PMTU of the path will not have changed, so it should be done infrequently. routing topology の変化のために、経路の PMTU は通信時間の間、変化する かもしれない。ホストが DF bit のセットをやめる経路を除いて、PMTU の縮 小は Datagram Too Big messages により発見される。経路の PMTU の増加を 発見するために、ホストは周期的にその想定された PMTU を増加する (そして もしそれが停止していたなら、DF bit のセットを再び始める)。これは、ほと んどいつも datagrams が捨てられ、Datagram Too Big messages が生成され るという結果となるだろう。なぜなら多くのケースで、経路の PMTU は変更し ないだろうし、これはまれにおこなわれるだろうからである。 Since this mechanism essentially guarantees that host will not receive any fragments from a peer doing PMTU Discovery, it may aid in interoperating with certain hosts that (improperly) are unable to reassemble fragmented datagrams. このメカニズムは本質的にホストが PMTU Discovery をおこなう peer からど んな fragments を受信しないということを保証するので、(不正確に) 分割さ れた datagrams を再構成することが出来ない確実なホストで内部処理するの を助けるかもしれない。 ------------------------------------------------------------------------- 3. Host specification 3. ホスト仕様書 When a host receives a Datagram Too Big message, it MUST reduce its estimate of the PMTU for the relevant path, based on the value of the Next-Hop MTU field in the message (see section 4). We do not specify the precise behavior of a host in this circumstance, since different applications may have different requirements, and since different implementation architectures may favor different strategies. ホストが Datagram Too Big messages を受信した時、message 内の Next-Hop MTU field の値に基づく、関連する経路について PMTU の見積りを減らさなけ ればならない (MUST) (section 4 を参照しなさい)。異なった applications が異なった要求を持つかもしれなく、また異なった実装 architectures が異 なった戦略を支持するかもしれないので、われわれはこの環境での正確なホス トのふるまいを明細に述べない。 We do require that after receiving a Datagram Too Big message, a host MUST attempt to avoid eliciting more such messages in the near future. The host may either reduce the size of the datagrams it is sending along the path, or cease setting the Don't Fragment bit in the headers of those datagrams. Clearly, the former strategy may continue to elicit Datagram Too Big messages for a while, but since each of these messages (and the dropped datagrams they respond to) consume Internet resources, the host MUST force the PMTU Discovery process to converge. Datagram Too Big messages を受信した後、ホストは近い将来に、多くのその ような messages を引き出すことを避けることを試みなければならない (MUST) ことを、われわれはぜひ要求する。ホストは、その経路で送信してい る datagrams のサイズを減らすか、それら datagrams のヘッダに Don't Fragment bit をセットするのをやめるかもしれない。明らかに、前者の戦略 は、しばらくの間 Datagram Too Big messages を引き出し続けるかもしれな いが、これら messages のそれぞれ (とそれらに応答する落とされる datagrams) は Internet resources を消費するので、ホストは PMTU Discovery プロセスに集中することを強いる。 Hosts using PMTU Discovery MUST detect decreases in Path MTU as fast as possible. Hosts MAY detect increases in Path MTU, but because doing so requires sending datagrams larger than the current estimated PMTU, and because the likelihood is that the PMTU will not have increased, this MUST be done at infrequent intervals. An attempt to detect an increase (by sending a datagram larger than the current estimate) MUST NOT be done less than 5 minutes after a Datagram Too Big message has been received for the given destination, or less than 1 minute after a previous, successful attempted increase. We recommend setting these timers at twice their minimum values (10 minutes and 2 minutes, respectively). PMTU Discovery を使用するホストは、出来るだけ速く Path MTU での減少を 発見しなければならない (MUST)。ホストは、Path MTU の増加を発見するかも しれない。しかし、そのようにすることは現在想定された PMTU より大きい datagrams 送信することを要求するという理由と PMTU が増加しないだろうと いう可能性という理由で、これはまれな間隔でおこなわれなければならない (MUST)。(現在の想定より大きい datagrams を送信することによって) 増加を 発見する試みは、Datagram Too Big messages が与えられた終点に対して受信 された後で、5 分たたぬうちに決しておこなってはならない (MUST NOT)。ま たは前の成功した試みた増加の後で、1 分たたぬうちに決しておこなってはな らない (MUST NOT)。われわれは、それら最小値の 2 倍 (それぞれ 10 分と 2 分) これらの timer をセットすることを推奨する。 Hosts MUST be able to deal with Datagram Too Big messages that do not include the next-hop MTU, since it is not feasible to upgrade all the routers in the Internet in any finite time. A Datagram Too Big message from an unmodified router can be recognized by the presence of a zero in the (newly-defined) Next-Hop MTU field. (This is required by the ICMP specification [7], which says that "unused" fields must be zero.) In section 5, we discuss possible strategies for a host to follow in response to an old-style Datagram Too Big message (one sent by an unmodified router). 有限時間で Internet のすべてのルータを upgrade することは実行可能でな いので、ホストは、next-hop MTU を含まない Datagram Too Big messages を 扱うことが出来なければならない (MUST)。変更されないルータから Datagram Too Big message は、(新しく定義された) Next-Hop MTU field での zero の 存在によって認識されることが出来る。(これは ICMP 仕様書 [7] によって要 求され、そしてそれは zero でなければならない "unused" field と言う。) section 5 で、(変更されないルータによって送信される一つの) 古いスタイ ルの Datagram Too Big message の応答に従うホストについて可能な戦略を、 われわれは議論する。 A host MUST never reduce its estimate of the Path MTU below 68 octets. ホストは、68 octets より以下の Path MTU の見積もりを、決して減らしては ならない (MUST)。 A host MUST not increase its estimate of the Path MTU in response to the contents of a Datagram Too Big message. A message purporting to announce an increase in the Path MTU might be a stale datagram that has been floating around in the Internet, a false packet injected as part of a denial-of-service attack, or the result of having multiple paths to the destination. ホストは、Datagram Too Big message の中身への応答の Path MTU の見積も りを増加してはならない (MUST)。Path MTU の増加を知らせる意味の message は、Internet で漂流している古い datagram か、denial-of-service attack の部分として導入された偽りの packet か、終点に複数経路を持つ結果かもし れない。 3.1. TCP MSS Option 3.1. TCP MSS オプション A host doing PMTU Discovery must obey the rule that it not send IP datagrams larger than 576 octets unless it has permission from the receiver. For TCP connections, this means that a host must not send datagrams larger than 40 octets plus the Maximum Segment Size (MSS) sent by its peer. もし受信側からの許可を持たなければ、PMTU Discovery をおこなうホストは 576 octets より大きい IP datagrams を送信しない規則に従わなければなら ない。TCP 接続について、これは、その peer によって送信される Maximum Segment Size (MSS) を加えての 40 octets より大きい datagrams をホスト は送信してはならないことを意味する。 Note: The TCP MSS is defined to be the relevant IP datagram size minus 40 [9]. The default of 576 octets for the maximum IP datagram size yields a default of 536 octets for the TCP MSS. 注意: TCP MSS は、40 を引いた関連する IP datagram size であるよ うに定義される [9]。最大 IP datagram サイズの 576 のデフォルト は、TCP MSS について 536 のデフォルトを与える。 Section 4.2.2.6 of "Requirements for Internet Hosts -- Communication Layers" [1] says: "Requirements for Internet Hosts -- Communication Layers" [1] の Section 4.2.2.6 は述べる: Some TCP implementations send an MSS option only if the destination host is on a non-connected network. However, in general the TCP layer may not have the appropriate information to make this decision, so it is preferable to leave to the IP layer the task of determining a suitable MTU for the Internet path. 一部の TCP 実装は、もし終点ホストが接続されていない network で あるなら、MSS option のみを送信する。しかしながら、一般に TCP 層は、この決定を作る適した情報を持っていないだろう。それで Internet 経路について適当な MTU を決定する IP 層 task を残すこ とがより望ましい。 Actually, many TCP implementations always send an MSS option, but set the value to 536 if the destination is non-local. This behavior was correct when the Internet was full of hosts that did not follow the rule that datagrams larger than 576 octets should not be sent to non-local destinations. Now that most hosts do follow this rule, it is unnecessary to limit the value in the TCP MSS option to 536 for non-local peers. 実際には、多くの TCP 実装はいつも MSS option を送信するが、もし終点が local でないなら、536 に値をセットする。576 octets より大きい datagrams が local でない終点に送信されるべきでない規則に従わないホス トで Internet がいっぱいである時、このふるまいは正しい。いまやたいてい のホストは、この規則にほんとに従っているから、local でない peer につい て 536 に TCP MSS option で値を制限する必要はない。 Moreover, doing this prevents PMTU Discovery from discovering PMTUs larger than 576, so hosts SHOULD no longer lower the value they send in the MSS option. The MSS option should be 40 octets less than the size of the largest datagram the host is able to reassemble (MMS_R, as defined in [1]); in many cases, this will be the architectural limit of 65495 (65535 - 40) octets. A host MAY send an MSS value derived from the MTU of its connected network (the maximum MTU over its connected networks, for a multi-homed host); this should not cause problems for PMTU Discovery, and may dissuade a broken peer from sending enormous datagrams. その上、これをすることは 576 より大きい PMTUs の発見から PMTU Discovery を妨げる。それでホストは、もはや MSS option で送信する値より も小さくない。MSS option はホストが再構成 ([[1] で定義されるとして MSS_R) 出来るもっとも大きい datagram のサイズより小さい 40 octets にす べきである; 多くのケースで、これは 65495 (65535 - 40) octets の architectural 制限である。ホストは接続された network の MTU (multi-homed ホストについて、その接続された network の最大 MTU) から派 生された MSS 値を送信するかもしれない (MAY); これは、PMTU Discovery に ついて問題の原因となるべきでなく、分散した peer に非常に大きい datagrams を送信しないように説得するかもしれない。 Note: At the moment, we see no reason to send an MSS greater than the maximum MTU of the connected networks, and we recommend that hosts do not use 65495. It is quite possible that some IP implementations have sign-bit bugs that would be tickled by unnecessary use of such a large MSS. 注意: ちょうど今は、接続された network の最大 MTU より大きな MSS を送信する理由はないように判断する。それと、われわれはホス トが 65495 を使用しないことを推奨する。そのような大きな MSS の 必要でない使用によっておもしろがらせる sign-bit bug を、一部の IP 実装が持つことは実際可能である。 ------------------------------------------------------------------------- 4. Router specification 4. ルータ仕様書 When a router is unable to forward a datagram because it exceeds the MTU of the next-hop network and its Don't Fragment bit is set, the router is required to return an ICMP Destination Unreachable message to the source of the datagram, with the Code indicating "fragmentation needed and DF set". To support the Path MTU Discovery technique specified in this memo, the router MUST include the MTU of that next-hop network in the low-order 16 bits of the ICMP header field that is labelled "unused" in the ICMP specification [7]. The high-order 16 bits remain unused, and MUST be set to zero. Thus, the message has the following format: datagram が next-hop network の MTU を越えて、それに Don't Fragment bit がセットされているという理由で、ルータが datagram を forward する ことが出来ない時、ルータは "fragmentation needed and DF set" を指し示 している Code をその datagram の始点に ICMP Destination Unreachable message を返すことが必要とされる。このメモで明細に述べられる Path MTU Discovery 技術をサポートするために、ICMP 仕様書 [7] で "unused" にラベ ルされた ICMP ヘッダ field の low-order 16 bits に next-hop network の MTU を、ルータは含まなければならない (MUST)。high-order 16 bits は unused のままで、zero にセットされなければならない (MUST)。したがって message は次の書式を持つ: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 3 | Code = 4 | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | unused = 0 | Next-Hop MTU | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Internet Header + 64 bits of Original Datagram Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | タイプ = 3 | コード = 4 | チェックサム | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | unused = 0 | Next-Hop MTU | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Internet ヘッダ + もともとの Datagram Data の 64 bits | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The value carried in the Next-Hop MTU field is: Next-Hop MTU で運ばれた値は: The size in octets of the largest datagram that could be forwarded, along the path of the original datagram, without being fragmented at this router. The size includes the IP header and IP data, and does not include any lower-level headers. このルータで分割されることなしに、もともとの datagram の経路で forward されることが出来るもっとも大きな datagram の octets で のサイズ。このサイズは、IP ヘッダと IP データを含み、下位レベル のヘッダを含まない。 This field will never contain a value less than 68, since every router "must be able to forward a datagram of 68 octets without fragmentation" [8]. すべてのルータは "分割なしに 68 octets の datagram を forward 出来るよ うにしなければならない" ので、この field は 68 より小さい値を決して含 まない。 ------------------------------------------------------------------------- 5. Host processing of old-style messages 5. 古いスタイルメッセージのホストでの処理 In this section we outline several possible strategies for a host to follow upon receiving a Datagram Too Big message from an unmodified router (i.e., one where the Next-Hop MTU field is zero). This section is not part of the protocol specification. このセクションで、変更されないルータ (すなわち Next-Hop MTU field が zero であるもの) から Datagram Too Big message を受信して理解するホス トについて、われわれはいくつかの可能な戦略の概要を述べる。このセクショ ンは、プロトコル仕様書の一部分ではない。 The simplest thing for a host to do in response to such a message is to assume that the PMTU is the minimum of its currently-assumed PMTU and 576, and to stop setting the DF bit in datagrams sent on that path. Thus, the host falls back to the same PMTU as it would choose under current practice (see section 3.3.3 of "Requirements for Internet Hosts -- Communication Layers" [1]). This strategy has the advantage that it terminates quickly, and does no worse than existing practice. It fails, however, to avoid fragmentation in some cases, and to make the most efficient utilization of the internetwork in other cases. そのような message に応答するホストについてもっとも簡単なことは、PMTU はその現在想定された PMTU と 576 の最小値であると思うことと、その経路 で送信される datagrams に DF bit をセットすることをやめることである。 したがってホストは、現在の慣習のもとで選ばれるとして、同じ PMTU に後退 する ("Requirements for Internet Hosts -- Communication Layers" [1] の section 3.3.3 を参照しなさい)。この戦略は、すばやく終結され存在する慣 習より悪くないという長所を持つ。しかしながら、一部のケースで fragmentation を避けることと、他のケースでのもっとも多くの internetwork の効果的な利用をすることは失敗する。 More sophisticated strategies involve "searching" for an accurate PMTU estimate, by continuing to send datagrams with the DF bit while varying their sizes. A good search strategy is one that obtains an accurate estimate of the Path MTU without causing many packets to be lost in the process. datagrams のサイズが変化する間、DF bit を持つ datagrams を送信し続ける ことにより、正確な PMTU 見積もりのために "searching" を、多くの洗練さ れた戦略は必然的に含む。よい検索戦略は、プロセスで多くのパケットに失わ させることなしに、Path MTU の正確な見積もりを得る検索である。 Several possible strategies apply algorithmic functions to the previous PMTU estimate to generate a new estimate. For example, one could multiply the old estimate by a constant (say, 0.75). We do NOT recommend this; it either converges far too slowly, or it substantially underestimates the true PMTU. いくつかの可能な戦略は、新しい見積もりを生成するため、前の PMTU 見積も りに algorithmic 機能を適用する。たとえば、一定 (たとえば 0.75) ごとに 古い見積もりをどんどん増やすことでありうる。われわれは、これを推奨しな い; これは、はるかに遅く集まるか、実際にほんとうの PMTU を低く評価する かである。 A more sophisticated approach is to do a binary search on the packet size. This converges somewhat faster, although it still takes 4 or 5 steps to converge from an FDDI MTU to an Ethernet MTU. A serious disadvantage is that it requires a complex implementation in order to recognize when a datagram has made it to the other end (indicating that the current estimate is too low). We also do not recommend this strategy. 多くの洗練された方法は、パケットサイズで binary search をすることであ る。それでも FDDI MTU から Ethernet MTU に集まるために 4 か 5 ステップ かかるけれども、これはいくぶん速く集まる。datagram が他方に (現在の見 積もりが大変小さいことを指し示して) それをおこなう時、重大な障害は認識 するために複雑な実装を必要とすることである。われわれも、この戦略を推奨 しない。 One strategy that appears to work quite well starts from the observation that there are, in practice, relatively few MTU values in use in the Internet. Thus, rather than blindly searching through arbitrarily chosen values, we can search only the ones that are likely to appear. Moreover, since designers tend to chose MTUs in similar ways, it is possible to collect groups of similar MTU values and use the lowest value in the group as our search "plateau". (It is clearly better to underestimate an MTU by a few per cent than to overestimate it by one octet.) 実際よく働くように見える一つの戦略は、実際に Internet で使用するのに、 比較的少ない MTU の監視から始める。したがって、気ままに選ばれた値を通 して向こうみずに検索するよりも、われわれはたぶんそう見えるだろう値のみ を検索することが出来る。その上、設計者は同じような方法で MTUs を選ぶ傾 向があるので、同じような MTU 値のグループを集めることは可能であり、わ れわれの検索 "plateau" としてグループのもっとも小さい値を使用すること は可能である。(1 octet によって MTU を過大評価するより、数パーセントに よって低く見積もるほうが、明らかによりよい。) In section 7, we describe how we arrived at a table of representative MTU plateaus for use in PMTU estimation. With this table, convergence is as good as binary search in the worst case, and is far better in common cases (for example, it takes only two round-trip times to go from an FDDI MTU to an Ethernet MTU). Since the plateaus lie near powers of two, if an MTU is not represented in this table, the algorithm will not underestimate it by more than a factor of 2. セクション 7 で、PMTU 見積もりの使用についての代表の MTU plateaus table に、われわれがこの結論にどのように到達したかを議論する。この table で、収束は、最悪のケースの binary search と同じほどよく、一般の ケースではるかによりよい (たとえば、FDDI MTU から Ethernet MTU に行く ために 2 round-trip 時間のみかかる)。plateaus は 2 の階乗に近い状態で あるので、もし MTU がこの table に表さないなら、アルゴリズムは 2 の因 数より大きいことによりそれを低く見積もらないだろう。 Any search strategy must have some "memory" of previous estimates in order to chose the next one. One approach is to use the currently-cached estimate of the Path MTU, but in fact there is better information available in the Datagram Too Big message itself. All ICMP Destination Unreachable messages, including this one, contain the IP header of the original datagram, which contains the Total Length of the datagram that was too big to be forwarded without fragmentation. Since this Total Length may be less than the current PMTU estimate, but is nonetheless larger than the actual PMTU, it may be a good input to the method for choosing the next PMTU estimate. どんな検索戦略も、次の見積もりを選ぶために、前の見積もりを持ついくらか の "memory" を持たなければならない。一つの方法は、Path MTU の現在 cache された想定を使用することである。しかし実際、Datagram Too Big message それ自身に利用出来る、よりよい情報がある。この message を含む すべての ICMP Destination Unreachable message は、もともとの datagram の IP ヘッダを含み、それは fragmentation なしに forward される大変大き い datagram の Total Length を含む。この Total Length は現在の PMTU 見 積もりより小さいが、それにもかかわらず実際の PMTU より大きいので、次の PMTU 見積もりを選ぶための方法に、よい入力であるかもしれない。 Note: routers based on implementations derived from 4.2BSD Unix send an incorrect value for the Total Length of the original IP datagram. The value sent by these routers is the sum of the original Total Length and the original Header Length (expressed in octets). Since it is impossible for the host receiving such a Datagram Too Big message to know if it sent by one of these routers, the host must be conservative and assume that it is. If the Total Length field returned is not less than the current PMTU estimate, it must be reduced by 4 times the value of the returned Header Length field. 注意: 4.2BSD Unix 派生の実装に基づくルータは、もともとの IP datagram の Total Length について誤った値を送信する。これらルー タによって送信された値は、(octet で表現された) もともとの Total Length ともともとの Header Length の合計である。そのような Datagram Too Big message を受信するホストが、それら誤ったルータ から送信されたかどうかを知るのは不可能であるので、ホストは慎重 でなければならなく、そのようなことを当然だと思わなければならな い。もし返された Total Length field が現在の PMTU 見積もりより 小さくないなら、返された Header Length field の 4 倍の値、減ら さなければならない。 The strategy we recommend, then, is to use as the next PMTU estimate the greatest plateau value that is less than the returned Total Length field (corrected, if necessary, according to the Note above). それで我々が推奨する戦略は、次の PMTU 見積もりとして (もし必要なら、上 の Note に従って訂正された) 返された Total Length field より小さいもっ とも大きな plateau 値を使用することである。 ------------------------------------------------------------------------- 6. Host implementation 6. ホストでの実装 In this section we discuss how PMTU Discovery is implemented in host software. This is not a specification, but rather a set of suggestions. このセクションで、われわれは、どのように PMTU Discovery がホスト software で実装されるかを、議論する。これは仕様書ではなく、それどころ か提案の set である。 The issues include: 問題点として含まれているもの: - What layer or layers implement PMTU Discovery? - Where is the PMTU information cached? - How is stale PMTU information removed? - What must transport and higher layers do? - どの層、もしくはどのいくつかの層が PMTU Discovery を実装するか ? - どこで PMTU 情報を cache するか ? - どのように古い PMTU 情報を取り除くか ? - トランスポート層や上位層は何をしなければならないか ? 6.1. Layering 6.1. 層 In the IP architecture, the choice of what size datagram to send is made by a protocol at a layer above IP. We refer to such a protocol as a "packetization protocol". Packetization protocols are usually transport protocols (for example, TCP) but can also be higher-layer protocols (for example, protocols built on top of UDP). IP architecture で、送信される datagram でどれほどのサイズを選択するか は、IP の上位層プロトコルによっておこなわれる。われわれは、そのような プロトコルを "packetization protocol" として参照する。packetization protocols は、たいていトランスポートプロトコル (たとえば、TCP) である が、さらに高い層のプロトコル (たとえば、UDP の上に基礎を置かれたプロト コル) でも出来る。 Implementing PMTU 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. packetization 層での PMTU Discovery の実装は、いくつかの内部層問題を単 純化するが、いくつかの欠点を持つ: 実装はそれぞれの packetization protocol をやり直さなければならないかもしれなく、異なった packetization 層と、長い期間に PMTU 情報を保存するように簡単に拡張して はならない一部の packetization 層によって維持されるコネクション指向状 態の間で PMTU 情報を共有することは困難である。 We therefore believe that the IP layer should store PMTU information and that the ICMP layer should process received Datagram Too Big messages. The packetization layers must still be able to respond to changes in the Path MTU, by changing the size of the datagrams they send, and must also be able to specify that datagrams are sent with the DF bit set. We do not want the IP layer to simply set the DF bit in every packet, since it is possible that a packetization layer, perhaps a UDP application outside the kernel, is unable to change its datagram size. Protocols involving intentional fragmentation, while inelegant, are sometimes successful (NFS being the primary example), and we do not want to break such protocols. それゆえに、われわれは IP 層が PMTU 情報を保存するだろうことと ICMP 層 が受信した Datagram Too Big messages を処理するだろうことを信じる。 packetization 層も 送信した datagrams のサイズの変更による Path MTU の 変更に応答出来なければならなく、DF bit のセットで送信された datagrams も特定出来るようにしなければならない。packetization 層、たぶん kernel の外側の UDP application が datagram サイズを変更できないことがありう るので、すべてのパケットにただ DF bit をセットするだけの IP 層を、われ われは望まない。優雅ではないが、故意な fragmentation を必然的に含むプ ロトコルは、ときどき成功し (主要な例で NFS)、われわれはこのようなプロ トコル壊すことを望まない。 To support this layering, packetization layers require an extension of the IP service interface defined in [1]: この層をサポートするため、packetization 層は [1] で定義される IP サー ビスインターフェイスの拡張を要求する。 A way to learn of changes in the value of MMS_S, the "maximum send transport-message size", which is derived from the Path MTU by subtracting the minimum IP header size. MSS_S の値の変更を知る方法 "maximum send transport-message size" は、最小の IP ヘッダサイズを減らすことによって Path MTU から派生される。 6.2. Storing PMTU information 6.2. PMTU 情報の保存 In general, the IP layer should associate each PMTU value that it has learned with a specific path. A path is identified by a source address, a destination address and an IP type-of-service. (Some implementations do not record the source address of paths; this is acceptable for single-homed hosts, which have only one possible source address.) 一般に、IP 層は、学習したそれぞれの PMTU 値を、特定の経路に関連すべき である。経路は、始点アドレス、終点アドレスと IP type-of-service を指し 示す。(一部の実装は、経路の始点アドレスを記録しない; これは single-homed ホストのために容認でき、たった一つの可能な始点アドレスの みを持つ。 Note: Some paths may be further distinguished by different security classifications. The details of such classifications are beyond the scope of this memo. 注意: 一部の経路は、異なったセキュリティ分類によって、さらに進 んで見分けられるかもしれない。そのような分類の詳細は、このメモ の範囲を越えている。 The obvious place to store this association is as a field in the routing table entries. A host will not have a route for every possible destination, but it should be able to cache a per-host route for every active destination. (This requirement is already imposed by the need to process ICMP Redirect messages.) この関連性を格納する明白な場所は、routing table エントリの field とし てである。ホストは、すべての可能な終点についての経路を持たないだろう。 しかしすべての active な終点についてホストごとの route を cache 出来る ようにすべきである。(この要求は、すでに ICMP Redirect messages を処理 する必要により課せられる。) When the first packet is sent to a host for which no per-host route exists, a route is chosen either from the set of per-network routes, or from the set of default routes. The PMTU fields in these route entries should be initialized to be the MTU of the associated first-hop data link, and must never be changed by the PMTU Discovery process. (PMTU Discovery only creates or changes entries for per-host routes). Until a Datagram Too Big message is received, the PMTU associated with the initially-chosen route is presumed to be accurate. 最初のパケットがホストごとの route が存在しないホストに送信される時、 route は network ごとの route のセットからか default route のセットか ら選ばれる。それら route エントリの PMTU field は、関連された最初の hop data link の MTU に初期化されるだろう。そして PMTU Discovery プロ セスにより決して変更されない。(PMTU Discovery はホストごとの route の みを生成し変更する。) Datagram Too Big message が受信されるまで、最初 に選ばれた route に関連された PMTU は、正確であると推定される。 When a Datagram Too Big message is received, the ICMP layer determines a new estimate for the Path MTU (either from a non-zero Next-Hop MTU value in the packet, or using the method described in section 5). If a per-host route for this path does not exist, then one is created (almost as if a per-host ICMP Redirect is being processed; the new route uses the same first-hop router as the current route). If the PMTU estimate associated with the per-host route is higher than the new estimate, then the value in the routing entry is changed. Datagram Too Big message が受信された時、ICMP 層は (パケットの zero で ない Next-Hop MTU 値か、section 5 で記述された方法を用いて) Path MTU について新しい見積もりを決定する。もしこの経路についてホストごとの route が存在しないなら、それからそれは作成される (ほとんど、あたかもホ ストごとの ICMP Redirect が処理されたかのように; 新しい route は、現在 の route として同じ最初の hop を使用する)。もしホストごとの route に関 連された PMTU 見積もりが新しい見積もりよりも大きいなら、それから routing エントリの値は変更される。 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. packetization 層は、PMTU の減少について通知されなければならない。もし PMTU 見積もりが減少されたなら、経路を活発に使用しているどんな packetization 層 instance (たとえば、TCP connection) も通知されなけれ ばならない。 Note: even if the Datagram Too Big message contains an Original Datagram Header that refers to a UDP packet, the TCP layer must be notified if any of its connections use the given path. 注意: たとえ Datagram Too Big message が UDP パケットを参照する もともとの Datagram ヘッダを含んでいたとしても、もし何らかの connection が与えられた経路を使用するなら、TCP 層は通知されなけ ればならない。 Also, the instance that sent the datagram that elicited the Datagram Too Big message should be notified that its datagram has been dropped, even if the PMTU estimate has not changed, so that it may retransmit the dropped datagram. また、Datagram Too Big message を引き出した datagram を送信した instance は、たとえ PMTU 見積もりが変更されないとしても、落とされた datagram が再送するように、その datagram が落とされたことを通知される べきである。 Note: The notification mechanism can be analogous to the mechanism used to provide notification of an ICMP Source Quench message. In some implementations (such as 4.2BSD-derived systems), the existing notification mechanism is not able to identify the specific connection involved, and so an additional mechanism is necessary. 注意: 通知メカニズムは、ICMP Quench message の通知を提供するよ うに使用されるメカニズムに似ているように出来る。(4.2BSD に派生 されたシステムのような) 一部の実装で、存在する通知メカニズムは 特定の複雑な connection を見分けることが出来なく、それで追加の メカニズムが必要である。 Alternatively, an implementation can avoid the use of an asynchronous notification mechanism for PMTU decreases by postponing notification until the next attempt to send a datagram larger than the PMTU estimate. In this approach, when an attempt is made to SEND a datagram with the DF bit set, and the datagram 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 datagrams. 二者択一的に、次に PMTU 見積もりより大きい datagram を送信する ことを試みるまで、実装は通知を延期することによる PMTU 減少につ いて非同期通知メカニズムの使用を避けることが出来る。この方法で 試みは DF bit がセットして datagram が送信 (SEND) され datagram が PMTU 見積もりより大きい時、SEND 機能は失敗して、ふさわしいエ ラー指摘が返されるべきである。この方法は (UDP を使用するような) connectionless packetization 層によりふさわしいだろうし、そして それは (一部の実装で) ICMP 層から "notify" するのに困難かもしれ ない。このケースで、通常の timeout に基づく再送メカニズムは、落 とされた datagrams から回復するのに使用されるだろう。 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 Datagram Too Big message. PMTU の変更について経路を使用する packetization 層 instance の通知は、 パケットが落とされた特定の instance の通知から全然異なっていること理解 するために重要である。packetization 層 instance がパケットを作り出した いことを望むまで、前者は遅れるかもしれないが、後者は実際的なパケットの 生成をする (すなわち、pakcetization 層 instance の始点から非同期に) と すぐにされるべきである。Datagram Too Big message により指し示された時 落とされたことが知られたそれらパケットについてのみ、再送はされるべきで ある。(???) 6.3. Purging stale PMTU information 6.3. 古い PMTU 情報の追放 Internetwork topology is dynamic; routes change over time. The PMTU discovered for a given destination may be wrong if a new route comes into use. Thus, PMTU information cached by a host can become stale. Internetwork topology は動的である; routes は時間がたつと変化する。も し新しい route が使用されはじめるなら、与えられた終点について探索され る PMTU は悪いかもしれない。したがって、ホストによって cache される PMTU 情報は古くなる。 Because a host using PMTU Discovery always sets the DF bit, if the stale PMTU value is too large, this will be discovered almost immediately once a datagram is sent to the given destination. 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 first-hop data-link MTU, and the packetization layers should be notified of the change. This will cause the complete PMTU Discovery process to take place again. PMTU Discovery を使用しているホストはいつも DF bit をセットするという 理由で、もし古い PMTU 値が大変大きいなら、いったん datagram が与えられ た終点に送信されると、これはほとんどただちに探索されるだろう。古い PMTU 値が大変小さいことを理解するそのようなメカニズムは存在しなく、そ れで実装は cache された値を "age (ふけさせる)" べきである。PMTU 値がし ばらくの間 (約 10 分程) 減らされない時、PMTU 見積もりは最初の hop の data-link MTU にセットされるべきであり、packetization 層は変更を通知さ れるべきである。これは、完全な PMTU Discovery プロセスに再び起こさせる だろう。 Note: an implementation should provide a means for changing the timeout duration, including setting it to "infinity". For example, hosts attached to an FDDI network which is then attached to the rest of the Internet via a slow serial line are never going to discover a new non-local PMTU, so they should not have to put up with dropped datagrams every 10 minutes. 注意: 実装は、"infinity (無限)" にそれをセットすることを含む、 timeout 接続時間を変更するための手段を提供すべきである。たとえ ば、遅い serial line 経由で Internet の残り (?) に後で取り付け られる、FDDI network に取り付けられたホストは、新しい local で ない PMTU を決して探索するつもりはなく、それで 10 分ごとに落と される datagram に耐えなければならなくは、ないべきである。 An upper layer MUST not retransmit datagrams in response to an increase in the PMTU estimate, since this increase never comes in response to an indication of a dropped datagram. この増加は決して落とされた datagram の表示に応答にならないので、上位層 は PMTU 見積もりの増加への応答に datagram を再送しなければならないこと はない (MUST)。 One approach to implementing PMTU aging is to add a timestamp field to the routing table entry. This field is initialized to a "reserved" value, indicating that the PMTU has never been changed. Whenever the PMTU is decreased in response to a Datagram Too Big message, the timestamp is set to the current time. PMTU が年を取ることの実装の一つの方法は、routing table エントリに timestamp field を追加することである。この field は、PMTU が決して変更 されないことを指し示す、"reserved" 値に初期化される。Datagram Too Big message の応答に PMTU が減らされるたびに、timestamp は現在の時間にセッ トされる。 Once a minute, a timer-driven procedure runs through the routing table, and for each entry whose timestamp is not "reserved" and is older than the timeout interval: 1 分に一度、timer 駆動 procedure は、routing table と "reserved" でな いのと timeout 間隔より古い timpstamp のそれぞれのエントリをざっと調べ る。 - The PMTU estimate is set to the MTU of the associated first hop. - Packetization layers using this route are notified of the increase. - PMTU 見積もりは、関連された最初の hop の MTU にセットされる。 - この route を使用する packetization 層は、増加を知らせる。 PMTU estimates may disappear from the routing table if the per-host routes are removed; this can happen in response to an ICMP Redirect message, or because certain routing-table daemons delete old routes after several minutes. Also, on a multi-homed host a topology change may result in the use of a different source interface. When this happens, if the packetization layer is not notified then it may continue to use a cached PMTU value that is now too small. One solution is to notify the packetization layer of a possible PMTU change whenever a Redirect message causes a route change, and whenever a route is simply deleted from the routing table. もしホストごとの routes が取り除かれるなら、PMTU 見積もりは routing table から現れないだろう; これは、ICMP Redirect message への応答に起こ ることがありうる。または数分後に、確実な routing-table daemons が古い route を削除するという理由で。また multi-homed では、topology 変化は異 なった始点インターフェイスの使用という結果となる。これが起こった時、も し packetization 層が通知されないなら、それから現在大変小さい cache さ れた PMTU 値を使用され続けるかもしれない。一つの解決法は、Redirect message が route 変化の原因となるたびに、そして route が単に routing table から削除されるたびに、可能な PMTU 変化の packetization 層を通知 することである。 Note: a more sophisticated method for detecting PMTU increases is described in section 7.1. 注意: PMTU 増加を発見するための多くの洗練された方法は、section 7.1 で記述される。 6.4. TCP layer actions 6.4. TCP 層のふるまい The TCP layer must track the PMTU for the destination of a connection; it should not send datagrams that would be larger than this. A simple implementation could ask the IP layer for this value (using the GET_MAXSIZES interface described in [1]) each time it created a new segment, but this could be inefficient. Moreover, TCP implementations that follow the "slow-start" congestion-avoidance algorithm [4] 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. TCP 層は、connection の終点について PMTU を追跡しなければならない; こ の datagram より大きいのは送信されるべきではない。単純な実装は、新しい segment を作成したそれぞれの時間に、([1] で記述された GET_MAXSIZES イ ンターフェイスを使用して) この値について IP 層に尋ねる。しかしこれは、 能率的でない。その上、"slow-start" 輻輳回避アルゴリズム [4] に従う TCP 実装は、典型的に PMTU から派生されたいくつかの他の値を計算し cache す る。これら変数が更新されるように、PMTU が変化した時、これは非同期通知 を受信するのにより単純かもしれない。 A TCP implementation must also store the MSS value received from its peer (which defaults to 536), and not send any segment larger than this MSS, regardless of the PMTU. In 4.xBSD-derived implementations, this requires adding an additional field to the TCP state record. TCP 実装も、その peer から受信した (536 に default の) MSS 値を格納し なければならなく、PMTU に関係なく、この MSS より大きなどんな segment も送信してはならない。4.xBSD 派生実装で、これは TCP state record に追 加の field を加えることを要求する。 Finally, when a Datagram Too Big message is received, it implies that a datagram was dropped by the router 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 PMTU Discovery process requires several steps to estimate the right PMTU, this could delay the connection by many round-trip times. 最終的に、これは Datagram Too Big message が受信された時、ICMP message を送信したルータによって datagram は落とされることを意味する。他のどん な落とされた segment としてこのことを扱うのに十分であり、再送 timer process が segment の再送を引き起こすのに期限が切れるまで待つ。もし PMTU Discovery process が正しい PMTU を見積もるために何ステップかを要 求するなら、これは多くの round-trip times により connection を遅らせう る。 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 Datagram Too Big message. The datagram size used in the retransmission should, of course, be no larger than the new PMTU. 二者択一的に、Datagram Too Big message により特定された特定の connection のみを除いて、再送は Path MTU が変更した通知にただちに応答 しておこなわれることが出来る。もちろん、再送に使用される datagram のサ イズは、新しい MTU より大きくはない。 Note: One MUST not retransmit in response to every Datagram 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! 注意: いくつかの特大の segment の burst がいくつかのそのような messages に対し増加を与え、これゆえ同じ data のいくつかの再送に 対し増加を与えるので、すべての Datagram Too Big message に応答 して再送してはならない (MUST)。もし新しい見積もられた PMTU も悪 いなら、process は繰り返し、不必要な送信される segment 数の急激 な増加がある。 This means that the TCP layer must be able to recognize when a Datagram Too Big notification actually decreases the PMTU that it has already used to send a datagram on the given connection, and should ignore any other notifications. これは、Datagram Too Big 通知が実際には、与えられた connection で datagram を送信するのにすでに使用する PMTU を減らす時、TCP 層は認識できるようにしなければならなく、どんな他の通知も無視す べきである。 Modern TCP implementations incorporate "congestion advoidance" and "slow-start" algorithms to improve performance [4]. Unlike a retransmission caused by a TCP retransmission timeout, a retransmission caused by a Datagram 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 実装は、パフォーマンスを改良するために "congenstion avoidan ce" と "slow-start" アルゴリズムを取り入れる [4]。TCP 再送 timeout に より原因となる再送と違って、Datagram Too Big message により原因となる 再送は、輻輳 window を変更すべきでない。しかしながら、slow-start メカ ニズムのきっかけとなるだろう (すなわち、再び acknowledgements が到着し 始めるまで、たった一つの segment は再送されるべきである)。 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 segment size). In many system (such as those derived from 4.2BSD), the segment size is often set to 1024 octets, and the maximum window size (the "send space") is usually a multiple of 1024 octets, so the proper relationship holds by default. If PMTU Discovery is used, however, the segment size may not be a submultiple of the send space, and it may change during a connection; this means that the TCP layer may need to change the transmission window size when PMTU Discovery changes the PMTU value. The maximum window size should be set to the greatest multiple of the segment size (PMTU - 40) that is less than or equal to the sender's buffer space size. もし送信側の最大 window サイズが使用されている segment サイズの正確な 倍数でないなら、TCP パフォーマンスは減少することになりうる (これは輻輳 window サイズではなく、いつも segment サイズの倍数である)。(4.2BSD か ら派生されたような) 多くのシステムで、segment サイズはしばしば 1024 octets にセットされ、最大 window サイズ ("send space") はたいてい 1024 octets の倍数であり、それで適した関係は default に保管する。しかしなが ら、もし PMTU Discovery が使用されるなら、segment サイズは send space の倍数以下であるないかもしれないし、connection の間、変更するかもしれ ない; これは、PMTU Discovery が PMTU 値を変更した時、TCP 層は転送 window サイズを変更することを必要とするかもしれないことを意味する。最 大 window サイズは、送信側の buffer space サイズより小さいか等しい segment サイズ (PMTU - 40) の最大倍数にセットされるべきである。 PMTU Discovery does not affect the value sent in the TCP MSS option, because that value is used by the other end of the connection, which may be using an unrelated PMTU value. PMTU Discovery は TCP MSS option の送信された値のふりをしない。なぜな ら、その値は connection の他方によって使用され、関係されない PMTU 値を 使用するだろうからである。 6.5. Issues for other transport protocols 6.5. 他のトランスポートプロトコルについての問題 Some transport protocols (such as ISO TP4 [3]) are not allowed to repacketize when doing a retransmission. That is, once an attempt is made to transmit a datagram of a certain size, its contents cannot be split into smaller datagrams for retransmission. In such a case, the original datagram should be retransmitted without the DF bit set, allowing it to be fragmented as necessary to reach its destination. Subsequent datagrams, when transmitted for the first time, should be no larger than allowed by the Path MTU, and should have the DF bit set. (ISO TP4 [3] のような) 一部のトランスポートプロトコルは、再送をする時 に、再パケットするように割り当てられない。すなわち、いったん試みが確か なサイズの datagram が転送されると、その内容は再送のためにもっと小さい datagrams に分割することが出来ない。そのようなケースで、もともとの datagram は、その終点に到達するのに必要としてそれが分割されるように割 り当てて、DF bit をセットしないで再送されるべきである。最初の時間に送 信された時、次の datagram は、Path MTU によって割り当てられたよりも大 きくあるべきではなく、DF bit をセットしておくべきである。 The Sun Network File System (NFS) uses a Remote Procedure Call (RPC) protocol [11] that, in many cases, sends datagrams that must be fragmented even for the first-hop link. This might improve performance in certain cases, but it is known to cause reliability and performance problems, especially when the client and server are separated by routers. Sun Network File System (NFS) は Remote Procedure Call (RPC) プロトコ ル [11] を使用し、多くのケースで、最初の hop link ついてでさえ分割され なければならない datagrams を送信する。これは確実なケースでパフォーマ ンスを改良されるかもしれない。しかし client と server がルータによって 分離される時、特に、信頼性とパフォーマンス問題の原因となることが知られ る。 We recommend that NFS implementations use PMTU Discovery whenever routers are involved. Most NFS implementations allow the RPC datagram size to be changed at mount-time (indirectly, by changing the effective file system block size), but might require some modification to support changes later on. ルータが必然的に含まれるときはいつでも、NFS 実装は PMTU Discovery を使 用することを、われわれは推奨する。たいていの NFS 実装は、(間接に、効果 的な file system ブロックサイズを変更することによって) mount 時間で変 化される RPC datagram サイズを割り当てるが、これから後で変更をサポート するためにいくつかの変更を必要とするかもしれない。 Also, since a single NFS operation cannot be split across several UDP datagrams, certain operations (primarily, those operating on file names and directories) require a minimum datagram size that may be larger than the PMTU. NFS implementations should not reduce the datagram size below this threshold, even if PMTU Discovery suggests a lower value. (Of course, in this case datagrams should not be sent with DF set.) また、たった一つの NFS operation はいくつかの UDP datagrams を分割でき ないので、確かな operation (おもに、file names と directories でのそれ ら operating) は PMTU より大きいかもしれない最小 datagram サイズを必要 とする。たとえ PMTU Discovery がより小さい値を提案したとしても、NFS 実 装は、この threshold より下の datagram サイズを減らすべきでない。(もち ろん、このケースで datagrams は DF をセットして送信されるべきでない。) 6.6. Management interface 6.6. 管理インターフェイス We suggest that an implementation provide a way for a system utility program to: 実装は system utility program のための方法を提供することを、われわれは 提案する: - Specify that PMTU Discovery not be done on a given route. - Change the PMTU value associated with a given route. - PMTU Discovery は与えられた route 上でおこなわれないことを詳細に 記述。 - 与えられた route に関連された PMTU 値を変更。 The former can be accomplished by associating a flag with the routing entry; when a packet is sent via a route with this flag set, the IP layer leaves the DF bit clear no matter what the upper layer requests. 前者は、routing エントリで flag を関連することにより成し遂げられること が出来る; パケットがこの flag をセットして route 経由で送信される時、 IP 層は、たとえ上位層が何かを要求しても、DF bit を明確にしておく。 These features might be used to work around an anomalous situation, or by a routing protocol implementation that is able to obtain Path MTU values. これらの面は、例外的な状況で働くようにや、Path MTU 値を得ることが出来 る routing プロトコル実装により使用されるかもしれない。 The implementation should also provide a way to change the timeout period for aging stale PMTU information. 実装も、古い PMTU 情報に年を取らせることについて、timeout 期間を変更す る方法を提供すべきである。 ------------------------------------------------------------------------- 7. Likely values for Path MTUs 7. 経路 MTUs の適当な値 The algorithm recommended in section 5 for "searching" the space of Path MTUs is based on a table of values that severely restricts the search space. We describe here a table of MTU values that, as of this writing, represents all major data-link technologies in use in the Internet. Path MTUs の空間を "searching" のために section 5 で推奨されたアルゴリ ズムは、検索空間をきびしく制限する値の table に基づく。この執筆から、 Internet で使用されるすべての主要な data-link technologies を表す MTU 値の table を、われわれはここで記述する。 In table 7-1, data links are listed in order of decreasing MTU, and grouped so that each set of similar MTUs is associated with a "plateau" equal to the lowest MTU in the group. (The table also includes some entries not currently associated with a data link, and gives references where available). Where a plateau represents more than one MTU, the table shows the maximum inaccuracy associated with the plateau, as a percentage. table 7-1 で、data links は MTU が減少する順序でリストされ、グループで もっとも低い MTU に等しい "plateau" で関連される同じような MTU のそれ ぞれのセットにグループ化される。(table も今は data link で関連されない 一部のエントリを含み、どこでも利用できる参照を与える。) plateau はある MTU よりも多くを表す点では、table は割合として、plateau に関連された最 大の不正確を示す。 We do not expect that the values in the table, especially for higher MTU levels, are going to be valid forever. The values given here are an implementation suggestion, NOT a specification or requirement. Implementors should use up-to-date references to pick a set of plateaus; it is important that the table not contain too many entries or the process of searching for a PMTU might waste Internet resources. Implementors should also make it convenient for customers without source code to update the table values in their systems (for example, the table in a BSD-derived Unix kernel could be changed using a new "ioctl" command). 永久に有効であろう、特に高い MTU levels について table での値を、われ われは期待しない。ここで与えられた値は、実装提案であり、仕様書でも要求 でもない (NOT)。実装者は、plateaus のセットを選ぶために、最新の参考を 使用すべきである; 大変多くのエントリを含まない table や Internet resources を浪費するだろう PMTU 検索のプロセスは重要なことである。実装 者も、それらのシステムに table 値を更新するために source code なしに、 顧客について、それを便利にさせるべきである (たとえば、BSD 派生 Unix kernel の table は、新しい "ioctl" command の使用で変更することが出来 る。) Note: It might be a good idea to add a few table entries for values equal to small powers of 2 plus 40 (for the IP and TCP headers), where no similar values exist, since this seems to be a reasonably non-arbitrary way of choosing arbitrary values. 注意: これは気まぐれな値を選んでいるもっともな理由で気まぐれで ない方法のように見えるので、同じような値が存在しない場合に、(IP と TCP ヘッダのために) 40 を加えての 2 の小さい階乗に等しい値に ついて、小数の table エントリを追加することは、よいアイデアかも しれない。 The table might also contain entries for values slightly less than large powers of 2, in case MTUs are defined near those values (it is better in this case for the table entries to be low than to be high, or else the next lowest plateau may be chosen instead). それらの値に近いように定義された MTU のケースで、table も大きな 2 の階乗より少しばかり小さい値のエントリを含むかもしれない (こ のケースで、table エントリが高いよりも小さいことであることは、 よりよい。さもないと、次のもっとも小さい plateau がその代わりと して選ばれるかもしれない。) 7.1. A better way to detect PMTU increases 7.1 PMTU 増加を発見するための良い方法 Section 6.3 suggests detecting increases in the PMTU value by periodically increasing the PTMU estimate to the first-hop MTU. Since it is likely that this process will simply "rediscover" the current PTMU estimate, at the cost of several dropped datagrams, it should not be done often. section 6.3 は、最初の hop MTU に周期的に PMTU 見積もりを増加すること により PMTU の増加を発見することを提案した。いくつかの落とされた datagram の損失で、この process はたぶん単に現在の PMTU 見積もりを "rediscover" することなので、これはしばしばおこなわれるべきでない。 A better approach is to periodically increase the PMTU estimate to the next-highest value in the plateau table (or the first-hop MTU, if that is smaller). If the increased estimate is wrong, at most one round-trip time is wasted before the correct value is rediscovered. If the increased estimate is still too low, a higher estimate will be attempted somewhat later. よりよい方法は、周期的に、plateau table での次のもっとも高い値 (または は、もしそれが小さいなら、最初の hop MTU) に対して PMTU を増加すること である。もし増加された見積もりが悪いなら、正しい値が再探索される前に、 多くて、round-trip time は浪費される。もし増加された見積もりがまだ小さ いなら、さらに大きい見積もりが多少後で試みられるだろう。 Because it may take several such periods to discover a significant increase in the PMTU, we recommend that a short timeout period should be used after the estimate is increased, and a longer timeout be used PMTU の重要な増加を発見するために、いくつかのそのような期間がとられる かもしれないという理由で、見積もりが増やされた後で、短い timeout 期間 が使用されるべきであることと、 Plateau MTU Comments Reference ------ --- -------- --------- 65535 Official maximum MTU RFC 791 65535 Hyperchannel RFC 1044 65535 32000 Just in case 17914 16Mb IBM Token Ring ref. [6] 17914 8166 IEEE 802.4 RFC 1042 8166 4464 IEEE 802.5 (4Mb max) RFC 1042 4352 FDDI (Revised) RFC 1188 4352 (1%) 2048 Wideband Network RFC 907 2002 IEEE 802.5 (4Mb recommended) RFC 1042 2002 (2%) 1536 Exp. Ethernet Nets RFC 895 1500 Ethernet Networks RFC 894 1500 Point-to-Point (default) RFC 1134 1492 IEEE 802.3 RFC 1042 1492 (3%) 1006 SLIP RFC 1055 1006 ARPANET BBN 1822 1006 576 X.25 Networks RFC 877 544 DEC IP Portal ref. [10] 512 NETBIOS RFC 1088 508 IEEE 802/Source-Rt Bridge RFC 1042 508 ARCNET RFC 1051 508 (13%) 296 Point-to-Point (low delay) RFC 1144 296 68 Official minimum MTU RFC 791 Table 7-1: Common MTUs in the Internet 表 7-1: Internet での一般 MTUs after the PTMU estimate is decreased because of a Datagram Too Big message. For example, after the PTMU estimate is decreased, the timeout should be set to 10 minutes; once this timer expires and a larger MTU is attempted, the timeout can be set to a much smaller value (say, 2 minutes). In no case should the timeout be shorter than the estimated round-trip time, if this is known. Datagram Too Big message の理由で PMTU 見積もりが減らされた後で、より 長い timeout が使用されるべきであることを、われわれは推奨する。たとえ ば、PMTU 見積もりが減らされた後で、timeout は 10 分にセットされるべき である; いったん、この timer の期限が切れてさらに大きな MTU が試みられ たなら、timeout は非常に小さい値 (たとえば、2 分) にセットされることが 出来る。もしこれが知られなければ、決して想定された round-trip time よ り小さい timeout にすべきではない。 ------------------------------------------------------------------------- 8. Security considerations 8. セキュリティに関する考察 This Path MTU Discovery mechanism makes possible two denial-of- service attacks, both based on a malicious party sending false Datagram Too Big messages to an Internet host. この Path MTU Discovery メカニズムは、二つの、両方とも Internet ホスト に偽造の Datagram Too Big messages を送信する悪意のある party に基づく denial-of-service attack をさせることがありうる。 In the first attack, the false message indicates a PMTU much smaller than reality. This should not entirely stop data flow, since the victim host should never set its PMTU estimate below the absolute minimum, but at 8 octets of IP data per datagram, progress could be slow. 最初の attack で、偽造の message は、事実より非常に小さい PMTU を指し 示す。被害ホストは決して確実な最小より下の PMTU 見積もりにセットされな いので、完全に data flow を止めないだろう。しかし datagram ごとの IP data の 8 octet で進行は遅くなりうる。 In the other attack, the false message indicates a PMTU greater than reality. If believed, this could cause temporary blockage as the victim sends datagrams that will be dropped by some router. Within one round-trip time, the host would discover its mistake (receiving Datagram Too Big messages from that router), but frequent repetition of this attack could cause lots of datagrams to be dropped. A host, however, should never raise its estimate of the PMTU based on a Datagram Too Big message, so should not be vulnerable to this attack. もう一方の attack で、偽造の message は、事実より大きい PMTU を指し示 す。もし信じられたなら、これは一部のルータによって落とされるだろう datagram を被害ホストは送信するとして、一時的な閉鎖の原因となりうる。 ある round-trip time 内で、ホストはその誤りを (ルータから Datagram Too Big messages を受信して) 発見するだろう。しかしこの attack のひんぱん な反復は、たくさんの落とされる datagram の原因となる。しかしながら、 Datagram Too Big message に基づく PMTU の見積もりをホストは決して上げ るべきでなく、それでこの attack に弱くはないだろう。 A malicious party could also cause problems if it could stop a victim from receiving legitimate Datagram Too Big messages, but in this case there are simpler denial-of-service attacks available. もし合法的に Datagram Too Big messages の受信から犠牲を止めることが出 来るなら、悪意のある party も問題の原因となる。しかしこのケースで、よ り簡単な利用できる denial-of-service attacks がある。 ------------------------------------------------------------------------- References 参考文献 [1] R. Braden, ed. Requirements for Internet Hosts -- Communication Layers. RFC 1122, SRI Network Information Center, October, 1989. [2] Geof Cooper. IP Datagram Sizes. Electronic distribution of the TCP-IP Discussion Group, Message-ID <8705240517.AA01407@apolling.imagen.uucp>. [3] ISO. ISO Transport Protocol Specification: ISO DP 8073. RFC 905, SRI Network Information Center, April, 1984. [4] Van Jacobson. Congestion Avoidance and Control. In Proc. SIGCOMM '88 Symposium on Communications Architectures and Protocols, pages 314-329. Stanford, CA, August, 1988. [5] C. Kent and J. Mogul. Fragmentation Considered Harmful. In Proc. SIGCOMM '87 Workshop on Frontiers in Computer Communications Technology. August, 1987. [6] Drew Daniel Perkins. Private Communication. [7] J. Postel. Internet Control Message Protocol. RFC 792, SRI Network Information Center, September, 1981. [8] J. Postel. Internet Protocol. RFC 791, SRI Network Information Center, September, 1981. [9] J. Postel. The TCP Maximum Segment Size and Related Topics. RFC 879, SRI Network Information Center, November, 1983. [10] Michael Reilly. Private Communication. [11] Sun Microsystems, Inc. RPC: Remote Procedure Call Protocol. RFC 1057, SRI Network Information Center, June, 1988. ------------------------------------------------------------------------- Authors' Addresses 著者のアドレス Jeffrey Mogul Digital Equipment Corporation Western Research Laboratory 100 Hamilton Avenue Palo Alto, CA 94301 Phone: (415) 853-6643 EMail: mogul@decwrl.dec.com Steve Deering Xerox Palo Alto Research Center 3333 Coyote Hill Road Palo Alto, CA 94304 Phone: (415) 494-4839 EMail: deering@xerox.com
一覧
スポンサーリンク