メインコンテンツへスキップ

パケット損失がパフォーマンスに影響を与えるのはなぜですか

Views:
2,309
Visibility:
Public
Votes:
5
Category:
ontap-9
Specialty:
nas
Last Updated:

 

環境

  • すべてのNetApp製品
  • TCP通信
  • CIFS、NFS、iSCSI

回答

  • パケット損失がパフォーマンスに影響を与える理由は数多くあります
  • この記事の目的は、パケット損失が通常どのようにパフォーマンスの問題を引き起こすかを説明することであり、損失が発生する理由を説明することではありません
    • パケット損失が検出されると、輻輳アルゴリズムはネットワーク上のTCPデータの量を制限し、さらなる損失を防ぎます。
    • このアルゴリズムによって設定される制限は輻輳ウィンドウ(cwin)であり、損失のあるネットワークでは、平均輻輳ウィンドウを使用して、パケット損失が発生する前にどれだけのデータが送信されるかを確認します。
    • 帯域幅遅延積(BDP)は、この輻輳ウィンドウと往復時間を関連付けることで、平均的な期待スループットを算出します。
    • パケットが失われると、受信側は再送信されるまで新しいパケットへの応答を停止するため、最大で0.5秒の遅延が発生する可能性があります。
  • Wiresharkが再送信としてフラグを立てたパケットを確認するには:
    • tcp.analysis.retransmission
  • 一部のシステムではSACKと呼ばれるTCPフラグ(ONTAPなど)にフラグが立てられます。これは、一度にいくつのパケットが欠落しているかを特定するために使用できます。
    • この Wireshark フィルタを使用すると、次のパケットを表示できます:tcp.options.sack.count > 0

追加情報

  • パケット損失を特定する方法と、その発生原因の可能性

  • 用語の意味:

    • 帯域幅遅延積

      • データリンクの容量(ビット/秒)と往復遅延時間(秒)の積

      • その結果として得られるデータ量(ビット(またはバイト)で測定)は、任意の時点におけるネットワーク回線上の最大データ量、つまり送信済みだがまだ確認応答されていないデータ量に相当します

      • 帯域幅遅延積は、ポートのリンク速度(ビット/秒)を10で割った値に、スイッチを介した負荷時の往復時間(通常は約1ミリ秒程度)を掛けることで推定できます。

        • 例: 
          10 Gbps:
          10 * 1000 * 1000 * 1000 / 8) * 0.017 = 21,250,000バイト

        • 往復時間には、配線の伝搬遅延やスイッチの遅延だけでなく、トラフィック交換中のスイッチ、ホスト、ストレージシステム内でのバッファリングも含まれます

        • 異なるリンク速度を切り替えるスイッチは、対応するポートにこの範囲のバッファメモリを提供する必要がある。

    • 受信ウィンドウ

      • 通信のスループットは、輻輳ウィンドウと受信ウィンドウという2つのウィンドウによって制限される

      • 輻輳ウィンドウはネットワークの容量を超えないようにします(輻輳制御)。受信ウィンドウは受信側がデータを処理する容量を超えないようにします(フロー制御)

      • 受信側は、例えばWebサーバーのように非常にビジーな場合、データに圧倒される可能性があります

      • 各TCPセグメントには、受信ウィンドウの現在の値が含まれています。

      • 例えば、送信側がバイト4000を承認し、受信ウィンドウを10000(バイト)に指定したACKを受信した場合、送信側は輻輳ウィンドウが許容していても、バイト14000以降のパケットは送信しません。

    • 輻輳ウィンドウ

      • TCPにおいて、輻輳ウィンドウは、一度に送信できるバイト数を決定する要因の1つです

      • 輻輳ウィンドウは送信者によって維持されます

      • これは、受信側によって維持されるスライディングウィンドウサイズと混同しないように注意してください

      • 輻輳ウィンドウは、送信側と受信側の間のリンクが過剰なトラフィックで過負荷になるのを防ぐための手段です。

      • これは、リンク上の輻輳の程度を推定することによって算出されます。

    • 往復所要時間(RTT)

      • これは、送信者がバイトを送信し、受信者がバイトを確認応答し、送信者が確認応答を受信するまでに必要な時間です

      •  通常はミリ秒(ms)で表されます。

ONTAP 9.1以下(Data ONTAP 8を含む)、または9.5以上では、netstatコマンドに再送信列があります

  • ONTAP 9.1以下では、  Retransmits

  • ONTAP 9.5以降では、Rexmitと呼ばれます

  • ここでも、再送信回数の増加を確認すると役立つ場合があります(トレースを作成して Wireshark をインストールし、表示するよりも速いかもしれません)。

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.