头图

vpp的安装

环境

  • ubuntu20.04、ubuntu22.02、debian11
  • vmware

命令行安装vpp

  • 更新:sudo apt-get update
  • 获取PackageCloud vpp 安装脚本

      curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash
    
      ##获取key:
      curl -L https://packagecloud.io/fdio/master/gpgkey | sudo apt-key add -
    
      ## 查看vpp的deb包(如果没有,则不能安装)
      apt list vpp*
    
  • 安装软件包
## 安装必要的包:
apt-get install vpp vpp-plugin-core vpp-plugin-dpdk
# 安装可选包:

apt-get install vpp-api-python python3-vpp-api vpp-dbg vpp-dev
  • 查看vpp是否安装成功

      $ systemctl status vpp
      ● vpp.service - vector packet processing engine
      Loaded: loaded (/lib/systemd/system/vpp.service; enabled; vendor preset: enabled)
      Active: active (running) since Tue 2023-7-11 16:32:02 CST; 19h ago
      Main PID: 39699 (vpp_main)
      Tasks: 12 (limit: 11833)
      Memory: 69.3M
              CPU: 19h 13min 25.230s
      CGroup: /system.slice/vpp.service
              └─39699 /usr/bin/vpp -c /etc/vpp/startup.conf
    

表明vpp已经启动,配置文件为/etc/vpp/startup.conf

编译安装VPP

  • 下载源码

      git clone https://github.com/FDio/vpp.git fdio-vpp
      cd fdio-vpp
    
  • 切换分支(用最近发布的2306版本)

    git branch -a
    git checkout -b stable_2306 remotes/origin/stable/2306
  • 编译vpp源码

    # 首次编译建议用这个方式,会所有的依赖统一都安装好。
    ./extras/vagrant/build.sh

    或者分步执行:

      ##分步执行的命令  
      make install-dep
      make install-ext-deps
    
      ##编译release版本  
      make build-release
    
      ##编译debug版本
      make build
      ##build deb包
      make pkg-deb
    

最后安装所有的deb包:

dpkg -i build-root/*.deb

至此,编译工作全部完成,可以用systemctl status vpp看下运行的状态,或者看到有一个进程/usr/bin/vpp -c /etc/vpp/startup.conf在运行。

接口的显示

  • 修改/etc/vpp/startup.conf,将要加载进vpp的网卡的pci添加进去:

    dpdk {
          dev 0000:13:00.0
          dev 0000:0b:00.0
    }

    命令lshw -class network -businfo可以查看接口以及pci的对应关系,将不需要的接口down掉,加入vpp

    $lshw -class network -businfo
    WARNING: you should run this program as super-user.
    Bus info          Device         Class          Description
    ===========================================================
    pci@0000:03:00.0                 network        VMXNET3 Ethernet Controller
    pci@0000:04:00.0                 network        VMXNET3 Ethernet Controller
    pci@0000:0b:00.0                 network        VMXNET3 Ethernet Controller
    pci@0000:13:00.0  ens224         network        VMXNET3 Ethernet Controller
    pci@0000:1b:00.0                 network        VMXNET3 Ethernet Controller
  • 重启vpp,vpp中可以看到加的pci了

      vpp# show int
              Name               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          Count
      GigabitEthernet13/0/0             2     down         9000/0/0/0
      GigabitEthernetb/0/0              1     down         9000/0/0/0
      local0                            0     down          0/0/0/0
    

踩坑记录

./extras/vagrant/build.sh编译报错

编译到ipsec.mib什么的(记不大清楚了),发现虚拟机的cpu占用率一直在增长,直到将其整个沾满,紧接着就是报错,当时虚拟机分配的运行内存是2G,将其增加到4G、6G都不行。最后一试,增加到8G,终于在那一块运行通过。

vpp起来之后,show int看不到加入的接口

  • 首先show pci,能看到加入的pci,但是driver是e1000
    用的vmware是17,创建的虚拟机的驱动默认是e1000,看到创建成功时候的pci驱动是vfio-pci。
  • 加载vfio-pci驱动

    sudo modprobe vfio-pci
    # 该命令执行部执行均可,是让系统启动后自动加载驱动的
    sudo echo 'vfio-pci' | sudo tee -a /etc/modules

    加载完之后,重启vpp,还是没有接口

  • 绑定pci

    # 在vpp的编译目录下运行
    sudo ./build-root/install-vpp-native/external/bin/dpdk-devbind.py --bind vfio-pci 0000:0b:00.0

    加入之后show pci看到网卡驱动已经是vfio-pci类型了

show pci
Address      Sock VID:PID     Link Speed    Driver          Product Name                    Vital Product Data
0000:03:00.0   0  15ad:07b0   unknown       vmxnet3
0000:0b:00.0   0  15ad:07b0   unknown       vfio-pci
0000:13:00.0   0  15ad:07b0   unknown       vfio-pci

尽管如此,show int还是看不到接口。

  • 看到网上,需要将虚拟化需要打开
    虚拟机右击--->设置--->处理器--->虚拟化引擎,将虚拟化Intel VT-X,和虚拟化IOMMU打开。重启虚拟机。
    修改完还是不行。
  • 修改网卡类型为vmxnet3

    # 编辑虚拟机安装目录下的vmx文件,如下所示,将每个网卡类型改为vmxnet3
    ethernet1.virtualDev = "vmxnet3"

    重启虚拟机,重启vpp,至此可以了。

参考

https://s3-docs.fd.io/vpp/23.06/usecases/vmxnet3.html#vmware-...
https://packagecloud.io/fdio/2306/**install**
https://zhuanlan.zhihu.com/p/547995040

欢迎关注个人博客沟通交流

NULL
30 声望0 粉丝