Dockerオーバーレイネットワーク上のデータパケットの外部IP TOSの修正

Dockerオーバーレイネットワーク上のデータパケットの外部IP TOSの修正

TOS 0x08を使用してカスタムオーバーレイネットワークのコンテナからパケットを送信しましたdocker create network --driver=overlay。ただし、Dockerオーバーレイは、外部UDP、IP、およびイーサネットと共にVXLANヘッダーを使用してこのL2パケットをラップします。したがって、外部IPパケットのTOSは内部IPパケットのTOSと一致しなくなるため、物理NICに移動すると、そのパケットは元のフロー制御規則に従って処理できなくなります(制御トラフィックは別のIPパケットに移動します)。待ち行列)。例えば。 tsharkを使用してキャプチャしたパケットは次のとおりです。ここに画像の説明を入力してください。

図に示すように、外部IP TOSがT0に設定されました。

TC qdiscに到達する前に外部IP TOSをどのように変更しますか?私はiptablesを見て、以下のようにフィルタのテーブルチェーンおよびOUTPUT/またはマングルのテーブルチェーンを渡すことができることを発見しました。POSTROUTING

# mangle
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
POSTROUTING_direct  all  --  anywhere             anywhere


# filter
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
OUTPUT_direct  all  --  anywhere             anywhere

私はたくさんのパケットを送っていて、このテーブルにパケットカウンタが上がっているのを見ているからだと思います。しかし、iptablesに関する私の知識は、私が望むことを達成するのに十分なほど進歩していませんでした。別の方法がありますか?

関連情報