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に関する私の知識は、私が望むことを達成するのに十分なほど進歩していませんでした。別の方法がありますか?