Cisco VPP,全称Vector Packet Processing,是Cisco 2002年开发的商用代码。在2016年2月11号,linux基金会创建了FD.io项目,Cisco就将其VPP代码的开源版本贡献到了该项目,而目前已成为该项目的核心工程。VPP运行于用户空间,支持多种收包方式,常用的是DPDK。VPP的特色主要有两个,一是框架可扩展,二是具备成熟的交换/路由功能。
文字描述少说,首先准备环境,看VPP如何安装试用。
参考官方文档:
https://wiki.fd.io/view/VPP/Pulling,_Building,_Running,_Hacking_and_Pushing_VPP_Code#Building_the_first_time
https://wiki.fd.io/view/VPP/Build,_install,_and_test_images#Build_A_VPP_Package
https://wiki.fd.io/view/VPP/Setting_Up_Your_Dev_Environment1,系统环境:
操作系统是CentOS-7.2 x86_64,安装在VMware? Workstation 12 Pro上。
2,下载源码:
git clone depth=1 https://gerrit.fd.io/r/vpp
上面命令有坑(我刚开始为了节省下载时间,用的上面命令,但是在后面编译时报错),请使用:
git clone https://gerrit.fd.io/r/vpp
进行下载。
3,安装依赖(貌似是非必要步骤):
[root@localhost vpp]# make install-dep4,第一次安装,直接执行./build-root/vagrant/build.sh脚本即可:
[root@localhost vpp]# pwd/root/vpp
[root@localhost vpp]# ./build-root/vagrant/build.sh
等待了很长一段时间,全程无错。
如果后续需要进行源码更新和编译,则参考下面两步:
https://wiki.fd.io/view/VPP/Build,_install,_and_test_images#Build_A_VPP_Package5,生成Makefile文件:
[root@localhost vpp]# git pull [root@localhost vpp]# cd build-root/ [root@localhost build-root]# make distclean; ./bootstrap.sh6,进行编译:
[root@localhost build-root]# make V=0 PLATFORM=vpp TAG=vpp install-rpm;如果是Debian系,例如Ubuntu,则执行:
[root@localhost build-root]# make V=0 PLATFORM=vpp TAG=vpp install-deb;这其中会下载dpdk-16.07.tar.xz(当前是这个版本),如果下载很慢,直接用迅雷下吧,下载好了直接放在/root/vpp/dpdk/目录即可(可以通过ps查看是在用curl进行下载,通过curl的参数可以看到下载源地址和目的路径)。
可能遇到的错误(我在摸索的过程中遇到的错误):
make: *** /lib/modules/3.10.0-327.el7.x86_64/build: No such file or directory. Stop.make[10]: *** [igb_uio.ko] Error 2
make[9]: *** [igb_uio] Error 2
make[9]: *** Waiting for unfinished jobs....
...
make[8]: *** [linuxapp] Error 2
make[7]: *** [librte_eal] Error 2
make[6]: *** [lib] Error 2
make[5]: *** [all] Error 2
make[4]: *** [pre_install] Error 2
make[3]: *** [install] Error 2
make[3]: Leaving directory `/root/vpp/build-root/build-vpp-native/dpdk/dpdk-16.07'
make[2]: *** [/root/vpp/build-root/build-vpp-native/dpdk/.build.ok] Error 2
make[2]: Leaving directory `/root/vpp/dpdk'
make[1]: *** [dpdk-install] Error 2
make[1]: Leaving directory `/root/vpp/build-root'
make: *** [install-rpm] Error 1
解决:
a) 首先安装内核头文件:
[root@localhost build-root]# sudo yum install kernel-headersb) 然后查看一下找不到的build文件:
[root@localhost build-root]# ls -l /lib/modules/3.10.0-327.el7.x86_64/buildlrwxrwxrwx. 1 root root 38 May 28 09:13 /lib/modules/3.10.0-327.el7.x86_64/build -> /usr/src/kernels/3.10.0-327.el7.x86_64
c) 发现/usr/src/kernels/3.10.0-327.el7.x86_64扔不存在,但已存在/usr/src/kernels/3.10.0-327.36.3.el7.x86_64
根据uname来看:
[root@localhost build-root]# uname -aLinux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
猜测编译igb用的是uname获取的内核版本号,但小版本好36没有出现在uname里,因此直接这样处理一下:
[root@localhost build-root]# ln -s /usr/src/kernels/3.10.0-327.36.3.el7.x86_64 /usr/src/kernels/3.10.0-327.el7.x86_64可能遇到的遇到错误(我在摸索的过程中遇到的错误):
make[1]: Leaving directory `/root/vpp/build-root'fatal: No names found, cannot describe anything.
fatal: No names found, cannot describe anything.
error: line 26: Empty tag: Version:
make: *** [install-rpm] Error 1
上面的信息貌似是git报出来的,因此采用git clone https://gerrit.fd.io/r/vpp进行源码完整下载,后重试。
7,包安装:
[root@localhost build-root]# ls *.rpmvpp-17.01-rc0~64_gcfba1e2.x86_64.rpm vpp-devel-17.01-rc0~64_gcfba1e2.x86_64.rpm vpp-plugins-17.01-rc0~64_gcfba1e2.x86_64.rpm
vpp-debuginfo-17.01-rc0~64_gcfba1e2.x86_64.rpm vpp-lib-17.01-rc0~64_gcfba1e2.x86_64.rpm vpp-python-api-17.01-rc0~64_gcfba1e2.x86_64.rpm
[root@localhost build-root]# rpm -ivh *.rpm
8,安装好后,会自动安装默认配置:
[root@localhost build-root]# cat /etc/vpp/startup.confunix {
nodaemon
log /tmp/vpp.log
full-coredump
}
dpdk {
uio-driver uio_pci_generic
}
api-trace {
on
}
api-segment {
gid vpp
}
9,启动vpp:
[root@localhost build-root]# systemctl start vpp[root@localhost build-root]# ps aux | grep vpp
root 75046 4.5 0.9 2477080 26056 ? Ssl 04:59 0:01 /usr/bin/vpp -c /etc/vpp/startup.conf
root 75069 0.0 0.0 112648 976 pts/1 S+ 04:59 0:00 grep --color=auto vpp
10,试试:
[root@localhost build-root]# vppctl show interfaceName Idx State Counter Count
local0 0 down
over~
转载请保留地址: http://www.lenky.info/archives/2016/11/2562 或 http://lenky.info/?p=2562
备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来 信 讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从 CC创作共享协议 ,而一些私人性质较强的心情随笔,建议不要转载。
法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以 Email 或书面等方式告知,本站将及时删除相关内容或链接。