安装VPP后(VPP基本安装),直接进行了网卡纳管。配置DPDK接管虚拟机网口ens36,纳管前需将其down掉才可以纳管:
配置文件startup.config在/etc/vpp目录下。配置前需要确认网卡对应的PCI号:
要接管的网卡ens36 PCI为02:04.0,vi /etc/vpp/startup.conf,取消dpdk的注释,在## Set interface name下添加如下信息:
dev 0000:02:04.0 { name eth0 }
name可以自己定义,如下截图所示:
然后安装dpdk驱动:
modprobe uio //加载驱动模块insmod igb_uio.ko //加载驱动
但此时就出问题了,提示没有这个驱动模块:
此时重启VPP登录后查看没有eth0接口,表示没有纳管成功:
内核态查看也没有ens36接口:
ip addr命令查看的是内核态下接口,目前看内核态像是被用户态的DPDK纳管了,但登录VPP又没有纳管。那么接口去哪了呢?
查询说可能是vpp自带的驱动无法正常使用,于是重新下载DPDK,用DPDK加载下驱动模块试试。
1.下载DPDK安装包
进入官网http://core.dpdk.org/download/
下载19.08.2版本:
然后解压:
tar -xf dpdk-19.08.2.tar.xz
2.配置环境变量
RTE_SDK:指向DPDK的安装目录
RTE_TARGET:指向DPDK的目标环境目录
export RTE_SDK='/opt/dpdk-stable-19.08.2' //引号中为dkdk的解压目录export RTE_TARGET=x86_64-native-linuxapp-gcc //对于64位机用这个命令,对于32位机用i686-native-linuxapp-gcc
3.安装DPDK
进入DPDK安装脚本目录,执行./dpdk-setup.sh
步骤1:选择编译的DPDK环境
可以查看:
本系统选择36:
编译完成结果:
步骤2:执行43,加载IGB_UIO模块
完成加载:
步骤3:输入49,绑定网卡
输入48,显示当前网卡绑定信息:
查看igb_uio加载成功:
进入VPP配置文件vi /etc/vpp/startup.conf,将驱动改为 igb_uio:
(igb_uio 是 dpdk 内部实现的将网卡映射到用户态的内核模块)
修改后重新启动VPP,systemctl restart vpp,vppctl进入交互界面,show int 可以看到已经成功接管网口,且名称为eth0:
set int state eth0 up //启动eth0接口
set int ip address eth0 192.168.83.133/24 //给eth0配置IP
Ping测试ens33接口地址,可以ping通:
可以理解为一个vswitch下连接ens33和ens36,ens36映射到用户态变成eth0接口,配置同网段地址,所以可以互通。
到这里,环境就搭建完毕了。
注意事项
DPDK18.11建议系统内核版本>=3.2,自19.02建议系统内核版本>=3.16。
步骤1时遇到报错1:
/bin/sh: line 1: cc: command not found
提示找不到cc命令,可能缺少gcc,安装gcc包解决:
yum -y install gcc gcc-c++ libstdc++-develyum install gcc build-essential -y
步骤1时遇到报错2:
opt/dpdk-stable-19.08.2/lib/librte_eal/linux/eal/eal_memory.c:32:18: fatal error: numa.h: No such file or directory
报错提示numactl-de没有安装,yum install -y numactl-devel解决。
关于vpp自带的igb_uio驱动不可用问题,后面需要再验证下。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/9930.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~