VPP の VCL API を使用すると、アプリケーションを変更することなく、VPP 経由でネットワークにアクセスできます。
この実験では、仮想マシンのネットワーク カードがホーム ネットワークにブリッジされ、VPP がネットワーク カードを引き継ぎ、dhcp クライアントを開いてルーターによって割り当てられた IP を取得します。
スタートアップ.conf
unix {
interactive
cli-listen /run/vpp/cli.sock
gid 0
startup-config ./init_cli
}
dpdk {
dev 0000:0b:00.0{
name eth1
}
}
api-trace {
on
}
socksvr {
default
}
cpu {
main-core 1
corelist-workers 2,3
}
buffers {
buffers-per-numa 128000
}
plugins {
plugin oddbuf_plugin.so { enable }
}
init_cli
set interface state eth1 up
set dhcp client intfc eth1
VPPを開始する
必ずIPアドレスを取得してください
新しいターミナルを開いて環境変数を構成します
export VCL_CONFIG=/root/vpp/vpp_learn/vcl.conf
export LD_PRELOAD=/root/vpp/vpp_learn/build-root/build-vpp_debug-native/vpp/lib/x86_64-linux-gnu/libvcl_ldpreload.so
wgetを実行する
私が使用している VCL API のバージョンにはまだ互換性の問題が多く、ping を実行すると VPP がクラッシュし、curl を実行するとスタックしてドメイン名を解決できません。wget、ssh、iperf はすべて正常に動作します。