iperf3とNetplan VRF

iperf3とNetplan VRF

こんにちは、私はnetplanを通して構成された3-3の異なるVRFを持つ2つのUbuntu 22マシンを持っています。

「すべてが機能します」操作を実行すると、ping -I <source-interface> <destination-IP>ICMPトラフィックは接続されたソースインターフェイスに正しいVRFを通過します。

パフォーマンステストを行いたいです。iperf3ただし、アプリケーションが正しいVRFを使用するようにソースインターフェースを指定する方法はありません。これを行う方法はありますか?

答え1

オプション--bind-dev参加する特定の目的のために:

enh: SO_BINDTODEVICE サポート (#1097)

これにより、iperfはマルチホームマシンとVRFでよりうまく機能します。

ああ、このオプションはiperf3Ubuntu 22 LTSで提供されています。次の(まだEOLなし)バージョンで利用可能です。Ubuntu23.04:

--bind-dev dev
       bind to the specified network interface.  This option uses SO_BINDTODEVICE, and may
       require root permissions.  (Available on Linux and possibly other systems.)

その後、クライアントはこのコマンドを使用してvrf-blueインターフェイスを選択し、198.51.100.2のサーバーに接続します。

iperf3 --bind-dev vrf-blue -c 198.51.100.2

その間、次のことができます。

  • 使用ip vrf execこれは帯域通過フィルタラッパー/インターセプターの依存関係cgroupv2。これにより、アプリケーションが自動的に使用されます。SO_BINDTODEVICE

    クライアントでは、コマンドは次のようになります。

    ip vrf exec vrf-blue iperf3 -c 198.51.100.2
    

    バインドしますvrf-blue(正しい送信元IPアドレスを選択し、それ以外の場合はそのIPアドレスも使用します--bind)。

  • 前提条件が利用できない場合は、LD_PRELOADラッパーを作成してbind(2)同じ方法で動作を変更できます。

    このQ / Aに対する答えとして、Cはこれらのラッパーを提供しました。Wireguardインターフェイスのみを使用するようにPodmanコンテナをどのように設定しますか?

    ラッパーはやや直感的で、アドレスにバインドし、それを環境変数と一致させてインターフェースにバインドすることを確認する必要があります(他の環境変数を使用)。バインドに使用されたローカルソースアドレスがvrf-blue192.0.2.2の場合、上記と同等の内容は次のとおりです(実際には1行)。

    LD_PRELOAD=./bindtodevicewrapper.so \
    WRAPPER_BINDTODEVICE=vrf-blue \
    WRAPPER_INET=192.0.2.2 \
    iperf3 --bind 192.0.2.2 -c 198.51.100.2
    

関連情報