RFC1337 日本語訳

1337 TIME-WAIT Assassination Hazards in TCP. R. Braden. May 1992. (Format: TXT=22887 bytes) (Status: INFORMATIONAL)
プログラムでの自動翻訳です。
RFC一覧
英語原文

Network Working Group                                          R. Braden
Request for Comments: 1337                                           ISI
                                                                May 1992

コメントを求めるワーキンググループR.ブレーデン要求をネットワークでつないでください: 1337 ISI1992年5月

                 TIME-WAIT Assassination Hazards in TCP

TCPの時間待ち暗殺危険

Status of This Memo

このメモの状態

   This memo provides information for the Internet community.  It does
   not specify an Internet standard.  Distribution of this memo is
   unlimited.

このメモはインターネットコミュニティのための情報を提供します。 それはインターネット標準を指定しません。 このメモの分配は無制限です。

Abstract

要約

   This note describes some theoretically-possible failure modes for TCP
   connections and discusses possible remedies.  In particular, one very
   simple fix is identified.

この注意は、いくつかのTCP接続には、理論的に可能な故障モードを説明して、可能な療法について議論します。 特に、1つの非常に簡単なフィックスが特定されます。

1. INTRODUCTION

1. 序論

   Experiments to validate the recently-proposed TCP extensions [RFC-
   1323] have led to the discovery of a new class of TCP failures, which
   have been dubbed the "TIME-WAIT Assassination hazards".  This note
   describes these hazards, gives examples, and discusses possible
   prevention measures.

最近提案されたTCP拡張子[RFC1323]を有効にする実験は新しいクラスのTCPの故障の発見につながりました。(故障は「タイム誌-WAIT Assassination危険」と呼ばれました)。 この注意は、これらの危険について説明して、例を挙げて、可能な防止策について議論します。

   The failures in question all result from old duplicate segments.  In
   brief, the TCP mechanisms to protect against old duplicate segments
   are [RFC-793]:

問題の失敗はすべて、古い写しセグメントから生じます。 要するに、古い写しセグメントに対して保護するTCPメカニズムは[RFC-793]です:

   (1)  The 3-way handshake rejects old duplicate initial <SYN>
        segments, avoiding the hazard of replaying a connection.

(1) 接続を再演する危険を避けて、3ウェイ握手は古い写し初期の<SYN>セグメントを拒絶します。

   (2)  Sequence numbers are used to reject old duplicate data and ACK
        segments from the current incarnation of a given connection
        (defined by a particular host and port pair).  Sequence numbers
        are also used to reject old duplicate <SYN,ACK> segments.

(2) 一連番号は、与えられた接続(特定のホストとポート組によって定義される)の現在の肉体化から古い重複データとACKセグメントを拒絶するのに使用されます。 また、一連番号は、古い写し<SYN、ACK>セグメントを拒絶するのに使用されます。

        For very high-speed connections, Jacobson's PAWS ("Protect
        Against Wrapped Sequences") mechanism [RFC-1323] effectively
        extends the sequence numbers so wrap-around will not introduce a
        hazard within the same incarnation.

非常に高速な接続のために、ジェーコブソンのPAWS(「包装された系列から守る」)メカニズム[RFC-1323]が事実上一連番号を広げているので、巻きつけて着るドレスは同じ肉体化の中で危険を導入しないでしょう。

   (3)  There are two mechanisms to avoid hazards due to old duplicate
        segments from an earlier instance of the same connection; see
        the Appendix to [RFC-1185] for details.

(3) 古い写しセグメントのため同じ接続の以前の例から危険を避けるために、2つのメカニズムがあります。 詳細に関して[RFC-1185]へのAppendixを見てください。

Braden                                                          [Page 1]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[1ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

        For "short and slow" connections [RFC-1185], the clock-driven
        ISN (initial sequence number) selection prevents the overlap of
        the sequence spaces of the old and new incarnations [RFC-793].
        (The algorithm used by Berkeley BSD TCP for stepping ISN
        complicates the analysis slightly but does not change the
        conclusions.)

「短く遅い」接続[RFC-1185]のために、時計駆動のISN(初期シーケンス番号)選択は古くて新しい肉体化[RFC-793]の系列空間のオーバラップを防ぎます。 (ISNを踏むのにバークレーBSD TCPによって使用されたアルゴリズムは、分析をわずかに複雑にしますが、結論を変えません。)

   (4)  TIME-WAIT state removes the hazard of old duplicates for "fast"
        or "long" connections, in which clock-driven ISN selection is
        unable to prevent overlap of the old and new sequence spaces.
        The TIME-WAIT delay allows all old duplicate segments time
        enough to die in the Internet before the connection is reopened.

(4) タイム誌-WAIT州は「速い」か「長い」接続に古い写しの危険を移します。(そこでは、時計駆動のISN選択が古くて新しい系列空間のオーバラップを防ぐことができません)。 タイム誌-WAIT遅れはすべての古い写しセグメント時間に接続が再開する前にインターネットで死ぬことができるくらい許容します。

   (5)  After a system crash, the Quiet Time at system startup allows
        old duplicates to disappear before any connections are opened.

(5) システムクラッシュの後に、どんな接続も開かれる前にシステム起動におけるQuiet Timeは古い写しを見えなくならせます。

   Our new observation is that (4) is unreliable: TIME-WAIT state can be
   prematurely terminated ("assassinated") by an old duplicate data or
   ACK segment from the current or an earlier incarnation of the same
   connection.  We refer to this as "TIME-WAIT Assassination" (TWA).

私たちの新しい観測は(4)が頼り無いということです: タイム誌-WAIT状態は、同じ接続の現在の肉体化か以前の肉体化からの早まって古い写しによって終えられた(「暗殺される」)データかACKセグメントであるかもしれません。 私たちは「時間待ち暗殺」(TWA)にこれについて言及します。

   Figure 1 shows an example of TIME-WAIT assassination.  Segments 1-5
   are copied exactly from Figure 13 of RFC-793, showing a normal close
   handshake.  Packets 5.1, 5.2, and 5.3 are an extension to this
   sequence, illustrating TWA.   Here 5.1 is *any* old segment that is
   unacceptable to TCP A.  It might be unacceptable because of its
   sequence number or because of an old PAWS timestamp.  In either case,
   TCP A sends an ACK segment 5.2 for its current SND.NXT and RCV.NXT.
   Since it has no state for this connection, TCP B reflects this as RST
   segment 5.3, which assassinates the TIME-WAIT state at A!

図1はタイム誌-WAIT暗殺に関する例を示しています。 通常の厳密な握手を示して、セグメント1-5はちょうどRFC-793の図13からコピーされます。 TWAを例証して、パケット5.1、5.2、および5.3はこの系列への拡大です。 ここで、5.1は*どんなTCP A.Itに容認できない*古いセグメントも一連番号のため古いPAWSタイムスタンプので容認できないかもしれないということです。 どちらの場合ではも、TCP Aはその現在のSND.NXTとRCV.NXTのためにACKセグメント5.2を送ります。 それにはこの接続のための状態が全くないので、TCP BはRSTセグメント5.3としてこれを反映します!(それは、Aでタイム誌-WAIT状態を暗殺します)。

Braden                                                          [Page 2]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[2ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

       TCP A                                                TCP B

TCPはTCP Bです。

   1.  ESTABLISHED                                          ESTABLISHED

1. 確立していた状態で、設立されます。

       (Close)
   2.  FIN-WAIT-1  --> <SEQ=100><ACK=300><CTL=FIN,ACK>  --> CLOSE-WAIT

(閉鎖。)2 フィン待1ち--フィン、ACK><SEQ=100><ACK=300><CTL=>-->の厳密な待ち

   3.  FIN-WAIT-2  <-- <SEQ=300><ACK=101><CTL=ACK>      <-- CLOSE-WAIT

3. フィン待2ち<--<SEQ=300><ACK=101><CTL=ACK><--厳密な待ち

                                                            (Close)
   4.  TIME-WAIT   <-- <SEQ=300><ACK=101><CTL=FIN,ACK>  <-- LAST-ACK

(閉鎖。)4 時間待ち<--<SEQ=300><ACK=101><CTL=フィン、ACK><--最後のACK

   5.  TIME-WAIT   --> <SEQ=101><ACK=301><CTL=ACK>      --> CLOSED

5. 時間待ち--><SEQ=101><ACK=301><CTL=ACK>-->は閉じました。

  - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

   5.1. TIME-WAIT   <--  <SEQ=255><ACK=33> ... old duplicate

5.1. タイム誌-WAIT<--<の>の<のACK=33の>の…古いSEQ=255写し

   5.2  TIME-WAIT   --> <SEQ=101><ACK=301><CTL=ACK>    -->  ????

5.2時間待ち--><SEQ=101><ACK=301><CTL=ACK>-->?

   5.3  CLOSED      <-- <SEQ=301><CTL=RST>             <--  ????
      (prematurely)

5.3 閉じている<(<SEQ=301><CTL=RST><)? (早まって)

                         Figure 1.  TWA Example

図1。 TWAの例

   Note that TWA is not at all an unlikely event if there are any
   duplicate segments that may be delayed in the network.  Furthermore,
   TWA cannot be prevented by PAWS timestamps; the event may happen
   within the same tick of the timestamp clock.  TWA is a consequence of
   TCP's half-open connection discovery mechanism (see pp 33-34 of
   [RFC-793]), which is designed to clean up after a system crash.

何かネットワークで遅れる写しセグメントがあればTWAがありそうもない出来事にないことに注意してください。 その上、PAWSタイムスタンプはTWAを防ぐことができません。 出来事はタイムスタンプ時計の同じカチカチする音の中で起こるかもしれません。 TWAはTCPの半開きな接続発見メカニズム([RFC-793]のpp33-34を見る)の結果です。(それは、システムクラッシュの後に掃除するように設計されています)。

2. The TWA Hazards

2. TWA危険

   2.1 Introduction

2.1 序論

      If the connection is immediately reopened after a TWA event, the
      new incarnation will be exposed to old duplicate segments (except
      for the initial <SYN> segment, which is handled by the 3-way
      handshake).  There are three possible hazards that result:

接続がTWA出来事の後にすぐに再開すると、新しい肉体化は古い写しセグメント(初期の<SYN>セグメントを除いた)に露出されるでしょう。セグメントは3ウェイ握手で扱われます。 結果として生じる3つの可能な危険があります:

      H1.  Old duplicate data may be accepted erroneously.

H1。 誤って古い重複データを受け入れるかもしれません。

      H2.  The new connection may be de-synchronized, with the two ends
           in permanent disagreement on the state.  Following the spec
           of RFC-793, this desynchronization results in an infinite ACK

H2。 新しい接続は状態で反-永久的な不一致への2つの終わりと同時にするかもしれません。 この脱同期化は無限のACKをもたらして、RFC-793の仕様に続きます。

Braden                                                          [Page 3]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[3ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

           loop.  (It might be reasonable to change this aspect of RFC-
           793 and kill the connection instead.)

輪にしてください。 (RFC793のこの局面を変えて、代わりに接続を殺すのは妥当であるかもしれません。)

           This hazard results from acknowledging something that was not
           sent.  This may result from an old duplicate ACK or as a
           side-effect of hazard H1.

この危険は送られなかった何か承認しているものから生じます。 これは古い写しACKか危険H1の副作用として結果として生じるかもしれません。

      H3.  The new connection may die.

H3。 新しい接続は死ぬかもしれません。

           A duplicate segment (data or ACK) arriving in SYN-SENT state
           may kill the new connection after it has apparently opened
           successfully.

明らかに首尾よく開いた後に、SYN-SENT状態に到着する写しセグメント(データかACK)で、新しい接続は死ぬかもしれません。

      Each of these hazards requires that the seqence space of the new
      connection overlap to some extent with the sequence space of the
      previous incarnation.  As noted above, this is only possible for
      "fast" or "long" connections.  Since these hazards all require the
      coincidence of an old duplicate falling into a particular range of
      new sequence numbers, they are much less probable than TWA itself.

それぞれのこれらの危険は、新しい接続のseqenceスペースが前の肉体化の系列スペースにある程度重なるのを必要とします。 上で述べたように、「速い」か「長い」接続だけには、これは可能です。 これらの危険がすべて、特定の範囲の新しい一連番号になる古い写しの偶然の一致を必要とするので、それらはTWA自身よりあまりありえそうではありません。

      TWA and the three hazards H1, H2, and H3 have been demonstrated on
      a stock Sun OS 4.1.1 TCP running in an simulated environment that
      massively duplicates segments.  This environment is far more
      hazardous than most real TCP's must cope with, and the conditions
      were carefully tuned to create the necessary conditions for the
      failures.  However, these demonstrations are in effect an
      existence proof for the hazards.

TWAと3はH1を危険にさらします、H2、そして、H3が、セグメントを膨大にコピーするシミュレート環境に立候補しながら、ストックSun OS4.1.1TCPでデモをしました。 この環境は最も現実的なTCPのものが対処しなければならないよりはるかに危険です、そして、状態は、失敗のための必要条件を作成するために慎重に調整されました。 しかしながら、事実上、これらのデモンストレーションは危険のための存在証拠です。

      We now present example scenarios for each of these hazards.  Each
      scenario is assumed to follow immediately after a TWA event
      terminated the previous incarnation of the same connection.

私たちは現在、それぞれのこれらの危険のために例のシナリオを提示します。 TWA出来事が同じ接続の前の肉体化を終えた直後各シナリオが続くと思われます。

   2.2  HAZARD H1: Acceptance of erroneous old duplicate data.

2.2 H1を危険にさらしてください: 誤った古い重複データの承認。

      Without the protection of the TIME-WAIT delay, it is possible for
      erroneous old duplicate data from the earlier incarnation to be
      accepted.  Figure 2 shows precisely how this might happen.

タイム誌-WAIT遅れの保護がなければ、以前の肉体化からの誤った古い重複データを受け入れるのは可能です。 図2は、これが正確にどのように起こるかもしれないかを示します。

Braden                                                          [Page 4]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[4ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

           TCP A                                                 TCP B

TCPはTCP Bです。

      1. ESTABL.  --> <SEQ=400><ACK=101><DATA=100><CTL=ACK> --> ESTABL.

1. ESTABL。 --><SEQ=400><ACK=101><データは100><CTL=ACK>と等しいです-->ESTABL。

      2. ESTABL.  <--     <SEQ=101><ACK=500><CTL=ACK>     <--   ESTABL.

2. ESTABL。 <-- <SEQ=101><ACK=500><CTL=ACK><--ESTABL。

      3.  (old dupl)...<SEQ=560><ACK=101><DATA=80><CTL=ACK> --> ESTABL.

3. (古いdupl)...<SEQ=560><ACK=101><データは80><CTL=ACK>と等しいです-->ESTABL。

      4. ESTABL.  <--     <SEQ=101><ACK=500><CTL=ACK>     <--   ESTABL.

4. ESTABL。 <-- <SEQ=101><ACK=500><CTL=ACK><--ESTABL。

      5. ESTABL.  --> <SEQ=500><ACK=101><DATA=100><CTL=ACK> --> ESTABL.

5. ESTABL。 --><SEQ=500><ACK=101><データは100><CTL=ACK>と等しいです-->ESTABL。

      6.             ...  <SEQ=101><ACK=640><CTL=ACK>     <--   ESTABL.

6. ... <SEQ=101><ACK=640><CTL=ACK><--ESTABL。

     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      7a. ESTABL. --> <SEQ=600><ACK=101><DATA=100><CTL=ACK> --> ESTABL.

7a。 ESTABL。 --><SEQ=600><ACK=101><データは100><CTL=ACK>と等しいです-->ESTABL。

      8a. ESTABL.  <--    <SEQ=101><ACK=640><CTL=ACK> ...

8a。 ESTABL。 <-- <SEQ=101><ACK=640><CTL=ACK>…

      9a. ESTABL. --> <SEQ=700><ACK=101><DATA=100><CTL=ACK> --> ESTABL.

9a。 ESTABL。 --><SEQ=700><ACK=101><データは100><CTL=ACK>と等しいです-->ESTABL。

                    Figure 2: Accepting Erroneous Data

図2: 誤ったデータを受け入れます。

      The connection has already been successfully reopened after the
      assumed TWA event.  Segment 1 is a normal data segment and segment
      2 is the corresponding ACK segment.  Old duplicate data segment 3
      from the earlier incarnation happens to fall within the current
      receive window, resulting in a duplicate ACK segment #4.  The
      erroneous data is queued and "lurks" in the TCP reassembly queue
      until data segment 5 overlaps it.  At that point, either 80 or 40
      bytes of erroneous data is delivered to the user B; the choice
      depends upon the particulars of the reassembly algorithm, which
      may accept the first or the last duplicate data.

接続は想定されたTWA出来事の後に既に首尾よく再開しました。 セグメント1は正常なデータ・セグメントです、そして、セグメント2は対応するACKセグメントです。 以前の肉体化からの古い重複データセグメント3は、窓を受けて、写しACKセグメント#4をもたらしながら、電流の中でたまたま低下します。 データ・セグメント5がそれを重ね合わせるまで、誤ったデータは、TCP reassembly待ち行列で列に並ばせられて、「潜んでいます」。 その時、80バイトか40バイトの誤ったデータをユーザBに送ります。 選択は再アセンブリアルゴリズムの子細か最後の重複データによります。アルゴリズムは1番目を受け入れるかもしれません。

      As a result, B sends segment 6, an ACK for sequence = 640, which
      is 40 beyond any data sent by A.  Assume for the present that this
      ACK arrives at A *after* A has sent segment 7a, the next full data
      segment.  In that case, the ACK segment 8a acknowledges data that
      has been sent, and the error goes undetected.  Another possible
      continuation after segment 6 leads to hazard H3, shown below.

その結果、Bは系列=640のためにセグメント6、ACKを送って、どれが向こうの何かデータがこのACKがA*に到着するプレゼントのためにA.Assumeで送った*Aが送った40であるかは7a、次の完全なデータ・セグメントを区分します。 その場合、ACKセグメント8aは送られたデータを承認します、そして、誤りは察知されずにいます。 セグメント6の後の別の可能な継続は以下で見せられた危険H3に通じます。

   2.3  HAZARD H2: De-synchronized Connection

2.3 H2を危険にさらしてください: 反-連動している接続

      This hazard may result either as a side effect of H1 or directly
      from an old duplicate ACK that happens to be acceptable but
      acknowledges something that has not been sent.

この危険はH1の副作用、または、直接たまたま許容できますが、送られない何かを承認する古い写しACKから結果として生じるかもしれません。

Braden                                                          [Page 5]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[5ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

      Referring to Figure 2 above, suppose that the ACK generated by the
      old duplicate data segment arrived before the next data segment
      had been sent.  The result is an infinite ACK loop, as shown by
      the following alternate continuation of Figure 2.

図2を参照して、次のデータ・セグメントを送る前に上では、古い重複データセグメントで発生するACKが到着したと仮定してください。 結果は図2の以下の交互の継続で示されるように無限のACK輪です。

     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      7b. ESTABL.  <--    <SEQ=101><ACK=640><CTL=ACK>   ...
     (ACK something not yet
      sent => send ACK)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7b。 ESTABL。 <-- <SEQ=101><ACK=640><CTL=ACK>… (何かがまだ=>を送らなかったACKはACKを送ります)

      8b. ESTABL.  -->    <SEQ=600><ACK101><CTL=ACK>       -->   ESTABL.
                                                       (Below window =>
                                                            send ACK)

8b。 ESTABL。 --><SEQ=600><ACK101><CTL=ACK>-->ESTABL。 (窓=>の下に、ACKを送ってください)

      9b. ESTABL.  <--    <SEQ=101><ACK=640><CTL=ACK>     <--    ESTABL.

9b。 ESTABL。 <-- <SEQ=101><ACK=640><CTL=ACK><--ESTABL。

                               (etc.!)

(など!)

                     Figure 3: Infinite ACK loop

図3: 無限のACK輪

   2.4  HAZARD H3:  Connection Failure

2.4 H3を危険にさらしてください: 接続失敗

      An old duplicate ACK segment may lead to an apparent refusal of
      TCP A's next connection attempt, as illustrated in Figure 4.  Here
      <W=...> indicates the TCP window field SEG.WIND.*

古い写しACKセグメントはTCP Aの次の接続試みの見かけの拒否につながるかもしれません、図4で例証されるように。 ここで、<W=…>は、TCPの窓がSEG.WIND*をさばくのを示します。

        TCP A                                                     TCP B

TCPはTCP Bです。

    1.  CLOSED                                                   LISTEN

1. 閉じられて、聴いてください。

    2.  SYN-SENT    --> <SEQ=100><CTL=SYN>                 --> SYN-RCVD

2. SYNによって送られた(><SEQ=100><CTL=SYN>)>SYN-RCVD

    3.         ... <SEQ=400><ACK=101><CTL=SYN,ACK><W=800>  <-- SYN-RCVD

3. ... <SEQ=400><ACK=101><CTL=SYN、ACK><W=800><--SYN-RCVD

    4.  SYN-SENT    <-- <SEQ=300><ACK=123><CTL=ACK> ... (old duplicate)

4. SYNによって送られた<--<SEQ=300><ACK=123><CTL=ACK>… (古い写し)

    5.  SYN-SENT    --> <SEQ=123><CTL=RST>                   --> LISTEN

5. SYNによって送られた(><SEQ=123><CTL=RST>)>は聴かれます。

    6.  ESTABLISHED <-- <SEQ=400><ACK=101><CTL=SYN,ACK><W=900> ...

6. 確立した<--<SEQ=400><ACK=101><CTL=SYN、ACK><W=900>…

    7.  ESTABLISHED --> <SEQ=101><ACK=401><CTL=ACK>          --> LISTEN

7. 確立した(><SEQ=101><ACK=401><CTL=ACK>)>は聴かれます。

    8.  CLOSED      <--  <SEQ=401><CTL=RST>                  <-- LISTEN

8. 閉じている<(<SEQ=401><CTL=RST><)は聴かれます。

           Figure 4: Connection Failure from Old Duplicate

図4: 古い写しからの接続失敗

Braden                                                          [Page 6]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[6ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

      The key to the failure in Figure 4 is that the RST segment 5 is
      acceptable to TCP B in SYN-RECEIVED state, because the sequence
      space of the earlier connection that produced this old duplicate
      overlaps the new connection space.  Thus, <SEQ=123> in segment #5
      falls within TCP B's receive window [101,900).  In experiments,
      this failure mode was very easy to demonstrate.  (Kurt Matthys has
      pointed out that this scenario is time-dependent:  if TCP A should
      timeout and retransmit the initial SYN after segment 5 arrives and
      before segment 6, then the open will complete successfully.)

図4での失敗のキーによるRSTセグメント5がSYN-RECEIVED状態でTCP Bに許容できるということです、この古い写しを製作した以前の接続の系列スペースが新しい接続スペースを重ね合わせるので。 したがって、TCPビーズの中のセグメント#5つの滝の<SEQ=123>は窓[101,900)を受けます。実験では、この故障モードは非常に示しやすかったです。セグメント5が到着した後とセグメント6の前に初期のSYNを再送してください、戸外が完成するその時。そして、(カート・マシスは、このシナリオに時間依存していると指摘しました: AがTCPであるならそうするべきである、タイムアウト、首尾よい)。

3. Fixes for TWA Hazards

3. TWA危険のためのフィックス

   We discuss three possible fixes to TCP to avoid these hazards.

私たちは、これらの危険を避けるために3つの可能なフィックスについてTCPと議論します。

   (F1) Ignore RST segments in TIME-WAIT state.

(F1) タイム誌-WAIT状態でRSTセグメントを無視してください。

        If the 2 minute MSL is enforced, this fix avoids all three
        hazards.

2の微小なMSLが実施されるなら、このフィックスはすべての3つの危険を避けます。

        This is the simplest fix.  One could also argue that it is
        formally the correct thing to do; since allowing time for old
        duplicate segments to die is one of TIME-WAIT state's functions,
        the state should not be truncated by a RST segment.

これは最も簡単なフィックスです。 また、1つが、それが正式にそうであると主張するかもしれない、する正しいこと。 古い写しセグメントが消え失せる時間を許容するのが、タイム誌-WAIT状態の機能の1つであるので、RSTセグメントで状態に先端を切らせるべきではありません。

   (F2) Use PAWS to avoid the hazards.

(F2)は、危険を避けるのにPAWSを使用します。

        Suppose that the TCP ignores RST segments in TIME-WAIT state,
        but only long enough to guarantee that the timestamp clocks on
        both ends have ticked.  Then the PAWS mechanism [RFC-1323] will
        prevent old duplicate data segments from interfering with the
        new incarnation, eliminating hazard H1.  For reasons explained
        below, however, it may not eliminate all old duplicate ACK
        segments, so hazards H2 and H3 will still exist.

TCPがタイム誌-WAIT状態にもかかわらず、長くだけ両端のタイムスタンプ時計がカチカチしたのを保証するのに十分でRSTセグメントを無視すると仮定してください。 そして、PAWSメカニズム[RFC-1323]は、危険H1を排除して、古い重複データセグメントが新しい肉体化を妨げるのを防ぐでしょう。 以下で説明された理由で、しかしながら、すべての古い写しACKセグメントを排除するかもしれないというわけではないので、それでも、危険のH2とH3は存在するでしょう。

        In the language of the TCP Extensions RFC [RFC-1323]:

TCP Extensions RFC[RFC-1323]の言葉を借りて言えば:

           When processing a RST bit in TIME-WAIT state:

処理するとき、RSTはタイム誌-WAIT状態で噛み付きました:

               If (Snd.TS.OK is off) or (Time.in.TW.state() >= W)
                   then enter the CLOSED state, delete the TCB,
                   drop the RST segment, and return.

または、(Snd.TS.OKはオフです)、(Time.in.TW.state()>はWと等しいです) 次に、CLOSED状態に入れてください、そして、TCBを削除してください、そして、RSTセグメントを落としてください、そして、戻ってください。

               else simply drop the RST segment and return.

ほか、単にRSTセグメントとリターンを落としてください。

        Here "Time.in.TW.state()" is a function returning the elapsed
        time since TIME-WAIT state was entered, and W is a constant that
        is at least twice the longest possible period for timestamp
        clocks, i.e., W = 2 secs [RFC-1323].

ここで、タイム誌-WAIT状態が入られたので、"Time.in.TW.state()"は経過時間を返す機能です、そして、Wは少なくともタイムスタンプ時計(すなわち、W=2秒[RFC-1323])のための可能な限り長い期間の2倍である定数です。

Braden                                                          [Page 7]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[7ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

        This assumes that the timestamp clock at each end continues to
        advance at a constant rate whether or not there are any open
        connections.  We do not have to consider what happens across a
        system crash (e.g., the timestamp clock may jump randomly),
        because of the assumed Quiet Time at system startup.

これは、各端のタイムスタンプ時計が、どんなオープンな接続もあるか否かに関係なく、一定の割合で進み続けていると仮定します。 私たちは、想定されたQuiet Timeのために、何がシステムクラッシュ(例えばタイムスタンプ時計は手当たりしだいにジャンプするかもしれない)の向こう側にシステム起動で起こるかを考える必要はありません。

        Once this change is in place, the initial timestamps that occur
        on the SYN and {SYN,ACK} segments reopening the connection will
        be larger than any timestamp on a segment from earlier
        incarnations.  As a result, the PAWS mechanism operating in the
        new connection incarnation will avoid the H1 hazard, ie.
        acceptance of old duplicate data.

前からのセグメントに関する何より大きいタイムスタンプが肉体化であったなら、かつて、この変化は、接続を再開させるセグメントがそうする初期の適所にあってSYNに現れるタイムスタンプとSYN、ACKです。 その結果、新しい接続肉体化で動作するPAWSメカニズムはH1危険ie(古い重複データの承認)を避けるでしょう。

        The effectiveness of fix (F2) in preventing acceptance of old
        duplicate data segments, i.e., hazard H1, has been demonstrated
        in the Sun OS TCP mentioned earlier.  Unfortunately, these tests
        revealed a somewhat surprising fact:  old duplicate ACKs from
        the earlier incarnation can still slip past PAWS, so that (F2)
        will not prevent failures H2 or H3.  What happens is that TIME-
        WAIT state effectively regenerates the timestamp of an old
        duplicate ACK.  That is, when an old duplicate arrives in TIME-
        WAIT state, an extended TCP will send out its own ACK with a
        timestamp option containing its CURRENT timestamp clock value.
        If this happens immediately before the TWA mechanism kills
        TIME-WAIT state, the result will be a "new old duplicate"
        segment with a current timestamp that may pass the PAWS test on
        the reopened connection.

古い重複データセグメントの承認を防ぐことにおける、フィックス(F2)の有効性(すなわち、危険H1)は、より早く言及されたSun OS TCPに示されました。 残念ながら、これらのテストはいくらか驚異的な事実を明らかにしました: 以前の肉体化からの古い写しACKsはまだPAWSを知らぬ間に過ぎることができます、(F2)が失敗H2かH3を防がないように。 起こることは事実上、タイム誌WAIT州が古い写しACKに関するタイムスタンプを作り直すということです。 すなわち、古い写しがタイム誌WAIT状態に到着するとき、拡張TCPはタイムスタンプオプションがCURRENTタイムスタンプ時計価値を含んでいるそれ自身のACKを出すでしょう。 TWAメカニズムがタイム誌-WAIT状態を破壊する直前これが起こると、結果は再開している接続のPAWSテストに合格するかもしれない現在のタイムスタンプをもって「ニュー・オールド写し」セグメントになるでしょう。

        Whether H2 and H3 are critical depends upon how often they
        happen and what assumptions the applications make about TCP
        semantics.  In the case of the H3 hazard, merely trying the open
        again is likely to succeed.  Furthermore, many production TCPs
        have (despite the advice of the researchers who developed TCP)
        incorporated a "keep-alive" mechanism, which may kill
        connections unnecessarily.  The frequency of occurrence of H2
        and H3 may well be much lower than keep-alive failures or
        transient internet routing failures.

H2とH3が重要であるかどうかがどれくらいの頻度で起こるか、そして、アプリケーションがTCP意味論に関してどんな仮定をするかによります。 H3危険の場合では、再び単に戸外を試みるのは成功しそうです。 その上、多くの生産TCPsは「生きている生活費」メカニズムを組み込みました(TCPを開発した研究者のアドバイスにもかかわらず)。(それは、不必要に接続を殺すかもしれません)。 たぶん、H2とH3の発生の頻度は失敗か一時的なインターネットルーティング失敗を生かすよりたくさん下ろすことでしょう。

   (F3) Use 64-bit Sequence Numbers

(F3)は64ビットの一連番号を使用します。

        O'Malley and Peterson [RFC-1264] have suggested expansion of the
        TCP sequence space to 64 bits as an alternative to PAWS for
        avoiding the hazard of wrapped sequence numbers within the same
        incarnation.  It is worthwhile to inquire whether 64-bit
        sequence numbers could be used to avoid the TWA hazards as well.

オマリーとピーターソン[RFC-1264]は同じ肉体化の中で包装された一連番号の危険を避けるためのPAWSに代わる手段としてTCP系列スペースの拡大を64ビットまで勧めました。 また、TWA危険を避けるのに64ビットの一連番号を使用できたかどうか問い合わせる価値があります。

        Using 64 bit sequence numbers would not prevent TWA - the early
        termination of TIME-WAIT state.  However, it appears that a

64ビットの一連番号を使用するのはTWAを防がないでしょう--タイム誌-WAIT状態の期限前契約解除。 しかしながら、それはそのaに見えます。

Braden                                                          [Page 8]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[8ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

        combination of 64-bit sequence numbers with an appropriate
        modification of the TCP parameters could defeat all of the TWA
        hazards H1, H2, and H3.  The basis for this is explained in an
        appendix to this memo.  In summary, it could be arranged that
        the same sequence space would be reused only after a very long
        period of time, so every connection would be "slow" and "short".

TCPパラメタの適切な変更への64ビットの一連番号の組み合わせはTWA危険のH1、H2、およびH3のすべてを破るかもしれません。 この基礎は付録でこのメモに説明されます。 したがって、すべての接続が、概要では、そんなに同じ整っている系列スペースが時間の非常に長い期間の後にだけ再利用されるだろうということであるかもしれなく、「遅く」「短いでしょう」。

4.  Conclusions

4. 結論

   Of the three fixes described in the previous section, fix (F1),
   ignoring RST segments in TIME-WAIT state, seems like the best short-
   term solution.  It is certainly the simplest.  It would be very
   desirable to do an extended test of this change in a production
   environment, to ensure there is no unexpected bad effect of ignoring
   RSTs in TIME-WAIT state.

前項で説明された3つのフィックスでは、タイム誌-WAIT状態でRSTセグメントを無視して、フィックス(F1)は解決策という最も良い短い期間のように見えます。 確かに、それは最も簡単です。 実稼動環境でこの変化の拡張テストをするのは、タイム誌-WAIT状態でRSTsを無視するというどんな予期していなかった悪い効果もないのを保証するために非常に望ましいでしょう。

   Fix (F2) is more complex and is at best a partial fix.  (F3), using
   64-bit sequence numbers, would be a significant change in the
   protocol, and its implications need to be thoroughly understood.
   (F3) may turn out to be a long-term fix for the hazards discussed in
   this note.

フィックス(F2)は、より複雑であり、せいぜい部分的なフィックスです。 (F3), プロトコルにおける著しい変化であるだろう、64ビットの一連番号を使用して、含意は、徹底的に理解される必要があります。 (F3) この注意で議論した危険のための長期固定であると判明するかもしれません。

APPENDIX: Using 64-bit Sequence Numbers

付録: 64ビットの一連番号を使用します。

   This appendix provides a justification of our statement that 64-bit
   sequence numbers could prevent the TWA hazards.

この付録は64ビットの一連番号がTWA危険を防ぐかもしれないという私たちの声明の正当化を提供します。

   The theoretical ISN calculation used by TCP is:

TCPによって使用された理論上のISN計算は以下の通りです。

       ISN = (R*T) mod 2**n.

ISNは(R*T)モッズ2**nと等しいです。

   where T is the real time in seconds (from an arbitrary origin, fixed
   when the system is started), R is a constant, currently 250 KBps, and
   n = 32 is the size of the sequence number field.

Tが秒(システムが始動されるとき修理された任意の起源からの)のリアルタイムであるところでは、Rは定数です、現在の250KBps、そして、n=32は一連番号分野のサイズです。

   The limitations of current TCP are established by n, R, and the
   maximum segment lifetime MSL = 4 minutes.  The shortest time Twrap to
   wrap the sequence space is:

現在のTCPの限界はn、R、および4MSL=分の最大のセグメント生涯までに設置されます。 系列スペースを包装する最も短い間Twrapは以下の通りです。

       Twrap = (2**n)/r

Twrapは/rと等しいです(2**n)。

   where r is the maximum transfer rate.  To avoid old duplicate
   segments in the same connection, we require that Twrap > MSL (in
   practice, we need Twrap >> MSL).

rが最大の転送であるところでは、評価してください。 同じ接続における古い写しセグメントを避けるために、私たちはそのTwrap>MSLを必要とします(実際には、私たちはTwrap>>MSLを必要とします)。

Braden                                                          [Page 9]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[9ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

   The clock-driven ISN numbers wrap in time TwrapISN:

時計でやる気満々のISN番号は時間内に、TwrapISNを包装します:

       TwrapISN = (2**n)/R

TwrapISNは/Rと等しいです(2**n)。

   For current TCP, TwrapISN = 4.55 hours.

4.55現在のTCP、TwrapISN=時間。

   The cases for old duplicates from previous connections can be divided
   into four regions along two dimensions:

二次元に沿って前の接続からの古い写しのためのケースを4つの領域に分割できます:

   *    Slow vs. fast connections, corresponding to r < R or r >= R.

* r<Rかr>=Rに対応する、速い接続に対して遅くなってください。

   *    Short vs. long connections, corresponding to duration E <
        TwrapISN or E >= TwrapISN.

* 長い接続に対して短くて、持続時間E<TwrapISNかE>に対応するのはTwrapISNと等しいです。

   On short slow connections, the clock-driven ISN selection rejects old
   duplicates.  For all other cases, the TIME-WAIT delay of 2*MSL is
   required so old duplicates can expire before they infect a new
   incarnation.  This is discussed in detail in the Appendix to [RFC-
   1185].

背の低い遅い接続のときに、時計駆動のISN選択は古い写しを拒絶します。 他のすべてのケースにおいて、2*MSLのタイム誌-WAIT遅れが、新しい肉体化を感染させる前に古い写しが期限が切れることができるように必要です。 Appendixで詳細に[RFC1185]とこれについて議論します。

   With this background, we can consider the effect of increasing n to
   64.  We would like to increase both R and TwrapISN far enough that
   all connections will be short and slow, i.e., so that the clock-
   driven ISN selection will reject all old duplicates.  Put another
   way, we want to every connection to have a unique chunk of the
   seqence space.  For this purpose, we need R larger than the maximum
   foreseeable rate r, and TwrapISN greater than the longest foreseeable
   connection duration E.

このバックグラウンドで、私たちはnから64に増加するという効果を考えることができます。 すべての接続が背が低くて、遅くなるほど遠くにRとTwrapISNの両方を増加させたいと思います、すなわち、時計の駆動ISN選択がすべての古い写しを拒絶するように。 別の方法を置いてください、そして、私たちは、seqenceスペースのユニークな塊が欲しいとすべての接続と思います。 このために、私たちは最大の予見できるレートrより大きいR、および最も長い予見できる接続持続時間EよりすばらしいTwrapISNを必要とします。

   In fact, this appears feasible with n = 64 bits.  Suppose that we use
   R = 2**33 Bps; this is approximately 8 gigabytes per second, a
   reasonable upper limit on throughput of a single TCP connection.
   Then TwrapISN = 68 years, a reasonable upper limit on TCP connection
   duration.  Note that this particular choice of R corresponds to
   incrementing the ISN by 2**32 every 0.5 seconds, as would happen with
   the Berkeley BSD implementation of TCP.  Then the low-order 32 bits
   of a 64-bit ISN would always be exactly zero.

事実上、これは64n=ビットで可能に見えます。 私たちが2**33R=Bpsを使用すると仮定してください。 これは1秒あたりおよそ8つのギガバイト、単独のTCP接続のスループットに関する妥当な上限です。 そして、TwrapISNはTCP接続持続時間で68年、妥当な上限と等しいです。 Rのこの特定の選択が0.5秒毎の2**32でISNを増加すると対応することに注意してください、TCPのバークレーのBSD実現で起こるだろうというとき。 そして、いつも64ビットのISNの下位の32ビットはちょうどゼロでしょう。

   REFERENCES

参照

      [RFC-793]  Postel, J., "Transmission Control Protocol", RFC-793,
      USC/Information Sciences Institute, September 1981.

[RFC-793] ポステル、J.、「通信制御プロトコル」、RFC-793、科学が1981年9月に設けるUSC/情報。

      [RFC-1185]  Jacobson, V., Braden, R., and Zhang, L., "TCP
      Extension for High-Speed Paths", RFC-1185, Lawrence Berkeley Labs,
      USC/Information Sciences Institute, and Xerox Palo Alto Research
      Center, October 1990.

[RFC-1185]ジェーコブソン、V.とブレーデン、R.とチャン、L.、「高速経路のためのTCP拡張子」RFC-1185、ローレンスバークレー研究室、科学が設けるUSC/情報、およびゼロックスパロアルト研究センター(1990年10月)。

Braden                                                         [Page 10]

RFC 1337                 TCP TIME-WAIT Hazards                  May 1992

ブレーデン[10ページ]RFC1337TCP時間待ちは1992年5月を危険にさらします。

      [RFC-1263]  O'Malley, S. and L. Peterson, "TCP Extensions
      Considered Harmful", RFC-1263, University of Arizona, October
      1991.

[RFC-1263] オマリーとS.とL.ピーターソン、「有害であると考えられたTCP拡張子」、RFC-1263、アリゾナ大学、1991年10月。

      [RFC-1323]  Jacobson, V., Braden, R. and D. Borman "TCP Extensions
      for High Performance", RFC-1323, Lawrence Berkeley Labs,
      USC/Information Sciences Institute, and Cray Research, May 1992.

[RFC-1323]ジェーコブソン、V.、ブレーデン、R. and D.ボーマン、「高性能のためのTCP拡張子」、RFC-1323、ローレンス・バークレー研究室、科学が設けるUSC/情報、およびクレイリサーチ(1992年5月)

Security Considerations

セキュリティ問題

   Security issues are not discussed in this memo.

このメモで安全保障問題について議論しません。

Author's Address:

作者のアドレス:

   Bob Braden
   University of Southern California
   Information Sciences Institute
   4676 Admiralty Way
   Marina del Rey, CA 90292

ボブブレーデン南カリフォルニア情報Sciences Institute大学4676海軍本部Wayマリナデルレイ、カリフォルニア 90292

   Phone: (213) 822-1511
   EMail: Braden@ISI.EDU

以下に電話をしてください。 (213) 822-1511 メールしてください: Braden@ISI.EDU

Braden                                                         [Page 11]

ブレーデン[11ページ]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

count_characters修飾子 文字数を数える

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る