トラフィックを形成するためにmacvlanでtc-netemを使用する

トラフィックを形成するためにmacvlanでtc-netemを使用する

私はmacvlansを使用して仮想ネットワークを設定しており、各ネットワークにフロー制御TCが接続されています。各遅延を90ミリ秒に設定しました。しかし、pingで私が得る時間は0.02秒です。 macvlanでtcが機能しないのはなぜですか?

次のコマンドを使用しています。

tc qdisc add dev m1 root netem delay 90ms
tc qdisc add dev m2 root netem delay 90ms

その後、m1のipからm2のipにpingを送る。 m1とm2はmacvlanです。

ベストアンサー1

問題は、ルーティングの実行方法に関連しています。TCネテムまたはマクエバーランド

ホストに属するIPアドレスからホストに属する別のIPアドレスに到着すると、(ループバック)インターフェイスを使用してloローカルルーティングテーブル(hidden、try ip route show table local)を照会してルーティングが行われ、IPアドレスを持つ実際のインターフェイスは使用されません。割り当てられます。

どのパスを選択するかをカーネルに尋ねると、これを確認できます。たとえば、住所m1そして平方メートル192.0.2.2/24 および 192.0.2.3/24 です。

# ip route get from 192.0.2.2 to 192.0.2.3
local 192.0.2.3 from 192.0.2.2 dev lo table local uid 0 
    cache <local> 

テストにこれらのインターフェイスを使用する必要がある場合は、それをテストするために独自のルーティングスタックを持つ別のシステムが必要です。システムは、物理ホスト、仮想マシン、コンテナであることも、必要に応じて1つ以上の追加のネットワーク名前空間を使用することもできます。

上記の仮想状況で192.0.2.1がある場合m1LAN(および平方メートル関連していないARPの問題を防ぐために、インターフェイスがシャットダウンされます)ping 192.0.2.1遅延が表示されます。m1以下を使用します。

# ip route get from 192.0.2.2 192.0.2.1
192.0.2.1 from 192.0.2.2 dev m1 uid 0 
    cache 

最初のpingでは、通常、遅延時間ペナルティが2倍になります。なぜなら、IPリンクを確認するためにARP要求が以前に完了し、これも遅れていたからです。

おすすめ記事