私は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要求が以前に完了し、これも遅れていたからです。