VPP GTP-U隧道性能测试3---GTP-U封包性能测试

GTP-U封包性能测试

测试拓扑

VPP GTP-U隧道性能测试3---GTP-U封包性能测试_第1张图片

TREX stateless配置

以trex软件包解压缩后的目录名为v2.73为,TREX使用eth0和eth1例

TREX配置文件

cd v2.73
./dpdk_setup_ports.py –s
0000:00:03.0 'Virtio network device' if=eth0 drv=virtio-pci 
0000:00:04.0 'Virtio network device' if=eth1 drv=virtio-pci 
0000:00:05.0 'Virtio network device' if=eth2 drv=virtio-pci
vi /etc/trex_cfg.yaml
- port_limit      : 2
  version         : 2
#List of interfaces. Change to suit your setup. Use ./dpdk_setup_ports.py -s to see available options
  interfaces    : ["00:03.0","00:04.0"]
  port_info       :  # Port IPs. Change to suit your needs. In case of loopback, you can leave as is.
          - ip         : 10.212.21.173
            default_gw : 10.212.21.36
          - ip         : 10.212.28.112
            default_gw : 10.212.28.62

注意:trex_cfg.yaml里似乎不能用tab???使用空格

udp包配置

以为通过port1发起数据包为例

cd v2.73
vi port1.py
from trex_stl_lib.api import *

class STLS1(object):

    def create_stream (self):
        return STLStream( 
            packet = 
                    STLPktBuilder(
                        pkt = Ether()/IP(src="10.212.28.112",dst="10.212.21.173")/
                                UDP(dport=7060,sport=8025)/(1400*'x')
                    ),
             mode = STLTXCont())

    def get_streams (self, direction = 0, **kwargs):
        # create 1 stream 
        return [ self.create_stream() ]


# dynamic load - used for trex console or simulator
def register():
    return STLS1()

TREX启动

Trex启动时会自动加载dpdk驱动

cd v2.73
./t-rex-64 -i

VPP GTP-U隧道性能测试3---GTP-U封包性能测试_第2张图片
注意: stateless按前台方式启动,窗口不能关闭,否则进程会退出

TREX开始发包

开启新的窗口

cd v2.73
./trex-console
start –f ./port1.py –m 1gbps –p 1

注意,需要在vpp启动并配置就绪后再开始执行发包测试

VPP1配置

配置 startup.cfg

vpp不会自动配置及加载dpdk网卡驱动,需要手动加载;另外,VPP编译好后也没有带dpdk网卡驱动,可以从trex的包里获取(注意需要对应内核版本的igb_uio.ko)
以下以vpp用户操作。以VPP配置使用eth0,eth1为例,已经下载对应内核版本的igp_uio.ko驱动到/home/vpp/下

cd
modprobe uio
insmod igb_uio.ko
./vpp/extras/vpp_config/scripts/dpdk-devbind.py –s
0000:00:03.0 'Virtio network device' if=eth0 drv=virtio-pci 
0000:00:04.0 'Virtio network device' if=eth1 drv=virtio-pci 
0000:00:05.0 'Virtio network device' if=eth2 drv=virtio-pci
0000:00:06.0 'Virtio network device' if=eth3 drv=virtio-pci
./vpp/extras/vpp_config/scripts/dpdk-devbind.py –u 0000:00:03.0
./vpp/extras/vpp_config/scripts/dpdk-devbind.py –u 0000:00:04.0

./vpp/extras/vpp_config/scripts/dpdk-devbind.py –-bind=igb_uio  0000:00:03.0
./vpp/extras/vpp_config/scripts/dpdk-devbind.py –-bind=igb_uio  0000:00:04.0
vi startup.cfg
unix {cli-listen /run/vpp/cli-vpp1.sock}

cpu {
  main-core 1
  corelist-workers 2-3
}

dpdk {
  socket-mem 1024
  no-multi-seg
  uio-driver igb_uio
  no-tx-checksum-offload

  dev 0000:00:04.0 {
    vlan-strip-offload off
    num-rx-desc 1024
    num-tx-queues 2
    num-tx-desc 1024
  }
  
  dev 0000:00:03.0 {
    vlan-strip-offload off
    num-rx-desc 1024
    num-tx-queues 2
    num-tx-desc 1024
  }
}

配置详见:
https://fd.io/docs/vpp/master/gettingstarted/users/configuring/startup.html

可以在/home/vpp/下写几个脚本,方便测试

restart.sh:

ps -ef|grep vpp |grep -v grep |grep -v ssh|awk '{print $2}'|xargs kill -9
vpp -c ./startup.cfg

cli.sh:

vppctl -s /run/vpp/cli-vpp1.sock

启动vpp

cd
vpp –c ./startup.cfg

接入vpp做数据配置

vppctl –s /run/vpp/cli-vpp1.sock
ip table add 7
set interface ip table GigabitEthernet0/3/0 7
set in state GigabitEthernet0/3/0 up
set int ip address GigabitEthernet0/3/0 10.212.21.36/24
set in state GigabitEthernet0/4/0 up
set int ip address GigabitEthernet0/4/0 10.212.28.62/24

create gtpu tunnel src 10.212.21.36 dst 10.212.21.173 teid 13 encap-vrf-id 7 decap-next ip4

set in state gtpu_tunnel0 up
set int ip address gtpu_tunnel0 50.50.50.1/24
ip route  10.212.21.0/24 via gtpu_tunnel0

VPP GTP-U隧道性能测试3---GTP-U封包性能测试_第3张图片

你可能感兴趣的:(UPF)