一時停止フレームはホストに渡されますか?

一時停止フレームはホストに渡されますか?

最近 Debian フォーラムで、一時停止フレームは MAC 層で破棄され、破棄されない場合はドライバーが破棄する必要があると書かれていました。これは本当ですか? ホストはスイッチから一時停止フレームを受信した場合、実際にどのようにトラフィックを抑制するのですか?

私はイーサネット フロー制御について理解を深めようとしています。上記の記述が正しい場合、ホストに渡されるというのは実際には何を意味するのでしょうか?

答え1

フロー制御を処理する方法は 3 つあります。

  1. 過負荷になると、データが失われてしまいます。
  2. 上位層からの要求に対してサービスを提供できない場合 (通常はローカル キューがいっぱいのため)、その上位層にエラーを返します。
  3. 速度を落とす必要があることを上位層に積極的に通知します。

イーサネット層では、メソッド 3 は一時停止フレームを通じてサポートされます。多くの場合、上位層はメソッド 3 をサポートせず、メソッド 2 をサポートします。ある層の下位層がメソッド 3 をサポートしているが、上位層がメソッド 2 のみをサポートしている場合、下位層へのデータの受け渡しを一時的に停止して、メソッド 2 を上位層に適用することができます。

または、より具体的に言うと、一時停止フレームを受信すると、送信エンジンを停止し、適切なタイミングで送信エンジンを再起動するためのタイマーを設定します。送信エンジンが停止している間、ローカル キューは上位層からのデータでいっぱいになります。いっぱいになると、上位層に「ビジー」エラーを返し、上位層はそれを適切に処理します。

答え2

これまでのところ、イーサネットフロー制御は、多くの場合、ヘッドオブラインブロッキング問題。スイッチはホストにポーズ フレームを送信すべきではありません。Cisco スイッチはポーズ フレームを送信するように設定できないと思います。Cisco スイッチでイーサネット フロー制御を有効にすると、受信したポーズ フレームが尊重されるだけです。ホストは受信したポーズ フレームを無視するのが賢明です。

スイッチが送信を処理できない場合、フレームをドロップする必要があります。上位層、特にTCPは、ドロップされたフレームを使用して、輻輳が発生したときとバックオフするタイミングを認識します。フレームをドロップしないと、TCP輻輳制御が失敗し、通常は次のようになります。バッファブロート

関連情報