10. DPDKの設定
10
$ sudo lshw -class network -businfo
Bus info Device Class Description
====================================================
pci@0000:02:00.0 eth1 network 82545EM Gigabit Ethernet Controller (Copper)
pci@0000:02:01.0 eth2 network 82545EM Gigabit Ethernet Controller (Copper)
pci@0000:03:00.0 eth0 network VMXNET3 Ethernet Controller
? DPDK対応NICのPCI IDを確認
$ sudo ifconfig eth1 down
$ sudo ifconfig eth2 down
$ sudo ip addr flush dev eth1
$ sudo ip addr flush dev eth2
? インターフェイスの設定をクリア
11. DPDK の設定(つづき)
dpdk {
socket-mem 1024
dev 0000:02:00.0
dev 0000:02:01.0
}
? /etc/vpp/startup.confにdpdkに関する設定を追加して、VPPを起動
? socket-memはパケットバッファ、hugepagesからアロケートされる
? socket-memは明示的に指定しないと、CPUソケット(NUMAノード)毎に512Mを確保
? VPP側では、GigabitEthernetX/X/Xとして認識される
vpp# show int
Name Idx State Counter Count
GigabitEthernet2/0/0 1 down
GigabitEthernet2/1/0 2 down
...
12. vhostの設定
vpp# create vhost socket /tmp/sock0.sock server
? vhost socketを作成
vpp# show int
Name Idx State Counter Count
VirtualEthernet0/0/0 3 down
...
<qemu:commandline>
<!-- vhost-user -->
<qemu:arg value='-chardev'/>
<qemu:arg value='socket,id=char0,path=/tmp/sock0.sock’/>
<qemu:arg value=’-netdev’/>
<qemu:arg value=’vhost-user,id=mynet,chardev=char0'/>
<qemu:arg value='-device'/>
<qemu:arg value='virtio-net-pci,netdev=mynet,mac=52:54:00:01:00:33'/>
<qemu:arg value='-object'/>
<qemu:arg value='memory-backend-file,id=mem,size=16384M,mem-path=/run/hugepages/kvm,share=on'/>
<qemu:arg value='-numa'/>
<qemu:arg value='node,memdev=mem'/>
<qemu:arg value='-mem-prealloc'/>
</qemu:commandline>
? livbirt XML定義ファイルでvhost-userの設定(XRvの場合)
? VPP側では VirtualEthernet0/0/Xと認識される
13. vethの設定
$ sudo ip link add vpp1 type veth peer name veth1
? ホストでvpp1とveth1というvethペアを作成
vpp# create host-interface name vpp1
host-vpp1
? VPP側ではhost-vpp1と認識される
? veth1をコンテナ等に接続
vpp# show int
Name Idx State Counter Count
host-vpp1 4 down
…
? VPP側ではhost-vpp1と認識される
14. tapの設定
vpp# tap connect taphost
tap-0
? taphostというtapインターフェイスを作成
vpp# show int
Name Idx State Counter Count
tap-0 5 down
...
? VPP側ではtap-Xと認識される
? ホスト側ではtaphostとして認識される
$ ip link
...
7: taphost: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UNKNOWN mode DEFAULT group default qlen 1000
link/ether 4e:00:94:42:8d:35 brd ff:ff:ff:ff:ff:ff
15. デモ L2設定
15
vpp# create host-interface name vpp1
host-vpp1
vpp# set interface state host-vpp1 up
vpp# set interface l2 bridge host-vpp1 1
vpp# create host-interface name vpp2
host-vpp2
vpp# set interface state host-vpp2 up
vpp# set interface l2 bridge host-vpp2 1
? VPPにvethを認識させ、L2ポートとしてBridge
Domain 1に接続
L3ポートL2ポート
Bridge Domain 1
C1 C2
veth
pair
veth
pair
eth0 eth0
Network Namespace: default
Network Namespace:
ns1
Network Namespace:
ns2
10.0.0.1 10.0.0.2
host-vpp1 host-vpp2
16. デモ L3設定
16
vpp# create loopback interface
loop0
vpp# set interface l2 bridge loop0 1 bvi
vpp# set interface state loop0 up
vpp# set interface ip address loop0 10.0.0.254/24
vpp# create host-interface name vpp3
host-vpp3
vpp# set interface state host-vpp3 up
vpp# set interface ip address host-vpp3 10.0.1.254/24
? Bridge Domain 1 に BVI インターフェイスを設定
? VPPにvethを認識させ、L3ポートとして設定
VPP Router
L3ポートL2ポート
Bridge Domain 1
C1 C2 C3
veth
pair
veth
pair
veth
pair
eth0 eth0 eth0
Network Namespace: default
Network Namespace:
ns1
Network Namespace:
ns2
Network Namespace:
ns3
10.0.0.254
10.0.1.254
10.0.0.1 10.0.0.2 10.0.1.1
host-vpp1 host-vpp2 host-vpp3
loop0(bvi)