Hi,
I am currently trying to use the sample reference http_simple to load test GTPU protocol that is running in VPP.
My trex_cfg:
- port_limit: 2
version: 2
interfaces: ['0000:00:10.0', '0000:00:11.0']
port_bandwidth_gb: 25
port_info:
- ip: 192.168.1.100
default_gw: 192.168.1.200
- ip: 192.168.2.100
default_gw: 192.168.2.200
platform:
master_thread_id: 0
latency_thread_id: 1
dual_if:
- socket: 0
threads: [2,3,4,5]
VPP config:
set interface state dpdk0 up
set interface state dpdk1 up
set interface ip address dpdk0 192.168.1.200/24
set interface ip address dpdk1 192.168.2.200/24
create gtpu tunnel src 192.168.1.200 dst 192.168.1.100 teid 1000 decap-next ip4
create gtpu tunnel src 192.168.1.200 dst 192.168.1.100 teid 1001 decap-next ip4
set interface ip address gtpu_tunnel0 16.0.0.1/32
set interface ip address gtpu_tunnel1 16.0.0.2/32
ip route add 48.0.0.0/8 via 192.168.2.100
On VPP I can see the GTPU packets getting de-encapsulated (see sample attached gtpu_packet_sent_to_vpp_from_trex.txt) and then sending the IP packets destined for 48.0.0.0 range back to the second interface on Trex but Trex is now sending traffic bound for 16.0.0.1 and 16.0.0.2 back to VPP without encapsulating it in GTPU.
Following is my trex gtpu topo:
from trex.astf.api import *
from trex.astf.tunnels_topo import TunnelsTopo
def get_topo():
topo = TunnelsTopo()
topo.add_tunnel_ctx(
src_start = '16.0.0.1',
src_end = '16.0.0.2',
initial_teid = 1000,
teid_jump = 1,
sport = 5000,
version = 4,
tunnel_type = 1,
src_ip = '192.168.1.100',
dst_ip = '192.168.1.200',
activate = True
)
return topo
And http_simple script:
from trex.astf.api import *
import argparse
class Prof1():
def __init__(self):
pass
def get_profile(self, tunables, **kwargs):
parser = argparse.ArgumentParser(description='Argparser for {}'.format(os.path.basename(__file__)),
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
args = parser.parse_args(tunables)
# ip generator
ip_gen_c = ASTFIPGenDist(ip_range=["16.0.0.1", "16.0.0.2"], distribution="seq")
ip_gen_s = ASTFIPGenDist(ip_range=["48.0.0.1", "48.0.0.10"], distribution="seq")
ip_gen = ASTFIPGen(glob=ASTFIPGenGlobal(ip_offset="1.0.0.0"),
dist_client=ip_gen_c,
dist_server=ip_gen_s)
return ASTFProfile(default_ip_gen=ip_gen,
cap_list=[ASTFCapInfo(file="../avl/delay_10_http_browsing_0.pcap",
cps=2.776)])
def register():
return Prof1()
Need help to know what could be wrong, I don't think the issue is with the VPP as I can see the GTPU packets coming from trex.
I have attached the trace from VPP (see attached trex_return_packet_to_vpp.txt) that shows trex sending the 48.0.0.x traffic directly back without GTPU encapsulation, since VPP can't process 16.0.0.x traffic without GTPU encapsulation it shows up as an error.
Thanks