VPP使用心得(一)初步安装

    近期想学习一下VPP中的路由管理,因此尝试安装学习。在安装过程中,发现了若干问题,最终如下方案能成功安装VPP。

1、安装ubuntu的虚机,我是在centos的服务器上安装的
    a)创建镜像:qemu-img create -f qcow2 ubuntu-18.04-vpp.qcow2 50G
    b)官网下载镜像:ubuntu-18.04.1-desktop-amd64.iso
    c)使用虚机启动脚本安装虚机镜像文件。这里需要注意的是,在安装完毕后,会要求卸载光驱,然后再重启,而我们的虚机是无法卸载这个光驱的,解决办法为,在要求重启界面输入Enter,然后等待重启,在启动界面的右上角,有个关机的按钮,关闭掉。然后修改启动脚本,去掉光驱选项后登陆。
2、安装VPP
    a)虚机保证网络的连通性,可以选择设置ens3,通过nat连接到公网
    b)保证DNS解析,即修改/etc/resolv.conf,增加nameserver 8.8.8.8
    c)更新apt,sudo apt-get update -y
    d)安装git和vim,sudo apt install git/sudo apt install vim
    e)下载vpp源码:git clone http://gerrit.fd.io/r/vpp 
    f)安装一些必要软件:sudo apt install make/make-guile/openssh-server
    g)下载安装依赖等:make install-dep/make dpdk-install-dev
    h)./extras/vagrant/build.sh编译
    i)build-root目录下 sudo dpkg -i *.deb
    注意:安装过程中,可能会出现 vpp-api-python : 依赖: python-cffi 但是它将不会被安装的错误,按照提示,使用 apt --fix-broken install来解决即可。
3、启动VPP
    a)修改/etc/vpp/startup.conf:
      cli-listen localhost:5002
      #cli-listen /run/vpp/cli.sock
    b)sudo service vpp start
    c)telnet 0 5002可以登录
4、查看VPP的接口:
vpp# show interface
              Name               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          Count     
GigabitEthernet0/4/0              1     down         9000/0/0/0     
local0                            0     down          0/0/0/0       
注意,一开始可能只有local0,需要使用ifconfig命令把需要vpp感知的接口down掉:
sudo ifconfig ens4 down
然后重启vpp:service vpp stop / start

5、附安装虚机的脚本:

vm.sh start 20 59000  -- 启动

vm.sh stop 20 59000  -- 关闭

[root@flexbng-2 imgs]# cat vm.sh
#!/bin/bash

#parameter check
if [ $# -ne 3 ]
then
    echo "start|stop dev_id vnc_port"
fi

action=$1
dev_id=$2
vnc_port=$3

echo "++++++++++++++++++++++"
echo "action   is: $1"
echo "vm_type  is: mix"
echo "dev_id   is: $2"
echo "vnc_port is: $[$3+5900]"
echo "++++++++++++++++++++++"

#################prameter to be modified#################
vm_type=mix
cpu_num=4
memory=12288
#########################################################

#parameter prepare
tmp=$(echo $dev_id | gawk '{printf "%x", $0}')
mgmt_mac=aa:bb:cc:dd:$tmp:10
fwd1_mac=aa:bb:cc:dd:$tmp:f3
fwd2_mac=aa:bb:cc:dd:$tmp:f4

mgmt_if=mgmt-$dev_id-$vm_type
fwd1_if=fwd1-$dev_id-$vm_type
fwd2_if=fwd2-$dev_id-$vm_type
vm_name=$vm_type-$dev_id
SHELL_DIR=$(cd `dirname $0`; pwd)

#run 
if [ "$action" == "start" ];then
    ovs-vsctl del-port br0 $mgmt_if

    #start mix
    qemu-kvm -name $vm_name \
             -enable-kvm \
             -cpu SandyBridge \
	     -smp $cpu_num \
             -m $memory \
             -drive file=$SHELL_DIR/ubuntu-18.04-vpp.qcow2,if=virtio,media=disk,format=qcow2 \
             -net nic,model=e1000,macaddr=$mgmt_mac,vlan=1 \
             -net tap,ifname=$mgmt_if,vlan=1,script=no,downscript=no \
             -net nic,model=e1000,macaddr=$fwd1_mac,vlan=2 \
             -net tap,ifname=$fwd1_if,vlan=2,script=no,downscript=no \
             -net nic,model=e1000,macaddr=$fwd2_mac,vlan=3 \
             -net tap,ifname=$fwd2_if,vlan=3,script=no,downscript=no \
             -vnc :$vnc_port &

    sleep 3

    #bring management-if up & add management-if to br0
    ifconfig $mgmt_if 0.0.0.0 promisc up
    ovs-vsctl add-port br0 $mgmt_if

    #bring forwarding-if up & add forwarding-if to forwarding-bridge
    ifconfig $fwd1_if 0.0.0.0 promisc up
    ifconfig $fwd2_if 0.0.0.0 promisc up
elif [ "$action" == "stop" ];then
    #stop mix
    ovs-vsctl del-port br0 $mgmt_if
 
    ID=`ps -ef| grep -E "$vm_name"|grep -v 'grep'|awk '{print $2}'`
    for pid in $ID
    do
        kill -9 $pid   
   done
fi

注意,首次安装时,qemu-kvm里需要增加-cdrom $SHELL_DIR/ubuntu-18.04.1-desktop-amd64.iso

发布了54 篇原创文章 · 获赞 1 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/xingyeping/article/details/83748503