0x01 安装DPDK

# 方法一:可能不是最新版本
sudo apt install dpdk

# 方法二
sudo pip3 install meson
sudo apt-get install -y python3-pyelftools python-pyelftools
git clone https://gitee.com/yaozuluo/dpdk.git
cd dpdk
meson -Dexamples=all build
cd build
meson compile # or ninja

0x02 安装VPP

# sudo vim /etc/apt/sources.list.d/vpp.list 
deb [trusted=yes] https://packagecloud.io/fdio/release/ubuntu bionic main

curl -L https://packagecloud.io/fdio/release/gpgkey | sudo apt-key add -

sudo apt-get update
sudo apt-get install vpp vpp-plugin-core vpp-plugin-dpdk
sudo apt-get install python3-vpp-api vpp-dbg vpp-dev

0x03 配置DPDK网卡

sudo modprobe uio_pci_generic

cd ~/dpdk

# 查看网卡信息
sudo ./usertools/dpdk-devbind.py --status

# 绑定网卡
sudo ./usertools/dpdk-devbind.py --bind=uio_pci_generic enp6s0
sudo ./usertools/dpdk-devbind.py --bind=uio_pci_generic enp7s0
# 或者
sudo ./usertools/dpdk-devbind.py --bind=uio_pci_generic 0000:06:00.0
sudo ./usertools/dpdk-devbind.py --bind=uio_pci_generic 0000:07:00.0

0x04 配置Huge Pages

sudo mkdir -p /mnt/huge
sudo mount -t hugetlbfs nodev /mnt/huge
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

0x05 配置VPP

sudo vim /etc/vpp/startup.conf

dpdk{
    dev 0000:06:00.0 {
        name enp6s0
    }
    dev 0000:07:00.0 {
        name enp7s0
    }
}

sudo systemctl restart vpp

0x06 桥接模式通信

sudo vppctl

set interface state enp6s0 up
set interface state enp7s0 up

set interface l2 bridge enp6s0 1
set interface l2 bridge enp7s0 1

show interface
  • PC1: 设置IP 192.168.4.110/24
  • PC2: 设置IP 192.168.4.120/24
  • PC1和PC2能互相ping

0x07 路由模式通信

set interface state enp6s0 up
set interface state enp7s0 up

set interface ip address enp6s0 192.168.6.100/24
set interface ip address enp7s0 192.168.7.100/24

show interface

  • PC1: 设置IP 192.168.6.110/24,网关 192.168.6.100
  • PC2: 设置IP 192.168.7.110/24,网关 192.168.7.100
  • PC1和PC2能互相ping