• vpp安装与使用


    VPP平台是一个可扩展的框架,可提供开箱即用的生产质量交换机/路由器功能,对数据进行一些处理。

    下载与安装

    从git上拉取,这里选择1801的版本

    git clone -b stable/1801 https://github.com/FDio/vpp.git
    
    • 1

    下载完成后,进行编译

    ./extras/vagrant/build.sh && make 
    
    • 1

    编译完成后,会在build-root目录下,生成一些deb文件
    执行以下命令进行安装

    dpkg –i vpp-lib_18.01.2-1~g9b554f3_amd64.deb
    dpkg –i vpp_18.01.2-1~g9b554f3_amd64.deb
    dpkg –i vpp-dev_18.01.2-1~g9b554f3_amd64.deb
    dpkg –i vpp-plugins_18.01.2-1~g9b554f3_amd64.deb
    
    • 1
    • 2
    • 3
    • 4

    执行完成以后,查看/etc/vpp/startup.conf,如果生成了这个配置文件,并且在/usr/lib/vpp_plugins/下生成了一些.so文件,说明安装成功。

    配置

    需要先查看自己网卡相关pci地址

    lspci |grep Eth
    02:04.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
    03:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
    0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
    13:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其中,VMXNET3是之前做的多队列网卡,可以使用。
    修改配置文件/etc/vpp/startup.conf

    cpu {
            main-core 0
    }
    
    unix {
            # 如果需要使用 vppctl,需要 cli-listen /run/vpp/cli.sock
            interactive cli-listen 127.0.0.1:5002
            log /tmp/vpp.log
            full-coredump
    }
    
    dpdk {
            uio-driver igb_uio
            dev 0000:03:00.0
            dev 0000:0b:00.0
            dev 0000:13:00.0
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    准备dpdk环境

    #这里vpp的测试运行依赖于uio 和igb_uio模块,igb_uio模块依赖于dpdk
    export RTE_SDK=/home/hlp/dpdk/dpdk-stable-19.08.2
    export RTE_TARGET=x86_64-native-linux-gcc
    ./usertools/dpdk-setup.sh   #选择43 
    
    • 1
    • 2
    • 3
    • 4
    #配置内存 
    modprobe uio
    #modprobe igb_uio
    echo 4 >/sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages 
    echo 1024 >/sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages 
    
    # 三个多队列网卡供dpdk vpp用,先将 eth0/eth1/eth2 关闭
    ifconfig eth0 down
    ifconfig eth1 down
    ifconfig eth2 down
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    启动vpp进行测试

    vpp -c /etc/vpp/startup.conf
    
    • 1

    如果启动成功,会出现以下画面
    在这里插入图片描述
    停止vpp

    service vpp stop
    
    • 1

    增加插件

    通过添加一个插件,来熟悉vpp的命令与操作
    添加插件之前,需要先运行进入vpp,配置好网卡的设置。

    # 可以通过vppctl进入,操作vpp配置
    vppctl
    # 查看网络接口
    vpp# show int
                  Name               Idx       State          Counter          Count     
    GigabitEthernet13/0/0             3        down      
    GigabitEthernet3/0/0              1        down      
    GigabitEthernetb/0/0              2        down      
    local0                            0        down 
    
    #配置网卡和ip
    vpp# set interface state GigabitEthernet13/0/0 up
    vpp# set interface ip address GigabitEthernet13/0/0 192.168.0.119/24
    # 再查看一次,有变化
    vpp# show int
                  Name               Idx       State          Counter          Count     
    GigabitEthernet13/0/0             3         up       rx packets                     6
                                                         rx bytes                     469
                                                         drops                          6
                                                         ip4                            4
                                                         ip6                            1
    GigabitEthernet3/0/0              1        down      
    GigabitEthernetb/0/0              2        down      
    local0                            0        down 
    #配置vlan
    vpp# create bridge-domain 10
    bridge-domain 10
    vpp# set interface l2 bridge GigabitEthernet3/0/0 10
    vpp# create sub-interfaces GigabitEthernet3/0/0 10 dot1q 10 
    GigabitEthernet3/0/0.10
    # 设置ip
    ip addr add 192.168.3.128/24 dev vpp1host
    ip addr show vpp1host
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    接下来是加入插件

    # 拷贝插件代码,到./src/plugins目录下
    ```shell
    ls pktdump
    pktdump.c  pktdump.h  pktdump_node.c
    
    • 1
    • 2
    • 3
    • 4

    第一步,在./src目录下,新增一个.am文件,是多线程的makefile,添加相应的头文件和源文件进行编译,可以拷贝已有.am文件进行修改。

    vi pktdump.am
    
    • 1

    第二步,修改./src/configure.ac,增加编译选项

    # 增加一句
    PLUGIN_ENABLED(pktdump)
    
    • 1
    • 2

    第三步,修改./src/plugins/Makefile.am,增加相应插件

    if ENABLE_PKTDUMP_PLUGIN
    include pktdump.am
    endif
    
    • 1
    • 2
    • 3

    最后重新编译再运行

    make wipe
    make build 
    make run
    
    • 1
    • 2
    • 3

    注意要打开插件的“开关”

    vpp# pktdump
    
    • 1

    这样即可运行。

  • 相关阅读:
    程序员工作压力大,年轻人放弃互联网了?
    Linux环境Docker的安装过程
    Redis能保证数据不丢失吗?
    自动驾驶,从“宠儿”走进“淘汰赛”
    发现学习的新契机——广东开放大学电大搜题服务
    马斯洛的的五层需求完美吗 不
    TMS VCL UI包功能和特点
    docker-compose启动oracle11、并使用navicat进行连接
    【人工智能】基于八数码问题对比搜索算法的性能
    【Go编程】打包 Json 文件到 exe 程序
  • 原文地址:https://blog.csdn.net/m0_65931372/article/details/126837302