首页 > *nix技术, 多核优化 > VPP安装

VPP安装

2016年11月19日 发表评论 阅读评论 13,394 次浏览

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_Environment

1,系统环境:
操作系统是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-dep

4,第一次安装,直接执行./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_Package

5,生成Makefile文件:
[root@localhost vpp]# git pull
[root@localhost vpp]# cd build-root/
[root@localhost build-root]# make distclean; ./bootstrap.sh

6,进行编译:
[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-headers
b) 然后查看一下找不到的build文件:
[root@localhost build-root]# ls -l /lib/modules/3.10.0-327.el7.x86_64/build
lrwxrwxrwx. 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 -a
Linux 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 *.rpm
vpp-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.conf 

unix {
  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 interface 
              Name               Idx       State          Counter          Count     
local0                            0        down      

over~

转载请保留地址:http://www.lenky.info/archives/2016/11/2562http://lenky.info/?p=2562


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.