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
そのペイロードに対してアクションを実行できる理由も説明します。