Linuxフロー制御ユーティリティは、データグラム、IPパケット、またはフレームを変更しますか?

Linuxフロー制御ユーティリティは、データグラム、IPパケット、またはフレームを変更しますか?

tc私はLinuxカーネルパケットスケジューラを設定するために使用されるLinuxのフロー制御()ユーティリティを使用しています。また、遅延を追加したり、トラフィックを破棄したり破損したりするnetemコマンドを使用します。tc

netem私の主な質問は、トランスポート層データグラム、IPパケット、またはリンク層フレーム(Ethernetなど)を変更しますか?

私が見つけたこのページLinuxカーネルのネットワーク通信の流れを説明します。シェーピングとキューイングのルールは、「レイヤ2:リンク層(イーサネットなど)」で作成されると言います。これはnetem、フレーム(レイヤ2)に損傷、損失、または遅延が追加されることを意味しますか?

しかしtc filter、特定のIP:ポートペアにトラフィックルールを適用できるので、これはトランスポート層データグラム(レイヤ4)で機能することを意味しますか?

答え1

tc発信する「パケット」がハードウェアに送信される順序であるキュー規則に影響します。実装はsk_buff構造と文書で動作します。sk_buffパケット形式は、特定のネットワークインターフェイスが使用するもの(イーサネットインターフェイスのイーサネットパケットなど)であることを示唆しているようです。

したがって、このレイヤーに追加の損傷があるとしますnetem corrupt。これは、レイヤ2チェックサム(特定のインターフェイスで使用されるレイヤ2が何であるか)を介して見つける必要があります。

また、sk_buffより高いレベルのペイロードへのポインタが含まれているため、tc filterそのペイロードに対してアクションを実行できる理由も説明します。

関連情報