s5uishida / free5gc_ueransim_vpp_upf_dpdk_sample_config Goto Github PK
View Code? Open in Web Editor NEWfree5GC 5GC & UERANSIM UE / RAN Sample Configuration - VPP-UPF with DPDK
free5GC 5GC & UERANSIM UE / RAN Sample Configuration - VPP-UPF with DPDK
Hi s5uishida,
Thanks for the detailed tutorial! I tried it with the following setup and ping works well.
:~/UERANSIM/build$ ping google.com -I uesimtun0 -n
PING google.com (142.250.190.46) from 10.60.0.1 uesimtun0: 56(84) bytes of data.
64 bytes from 142.250.190.46: icmp_seq=1 ttl=110 time=7.04 ms
64 bytes from 142.250.190.46: icmp_seq=2 ttl=110 time=7.18 ms
64 bytes from 142.250.190.46: icmp_seq=3 ttl=110 time=6.97 ms
However, when I tested with iperf3, the outputs are 0 throughput:
~/UERANSIM/build$ sh nr-binder 10.60.0.1 iperf3 -c 192.168.16.152 -i 1 -t 10
Connecting to host 192.168.16.152, port 5201
[ 5] local 10.60.0.1 port 43861 connected to 192.168.16.152 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 108 KBytes 883 Kbits/sec 2 1.32 KBytes
[ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec 1 1.32 KBytes
[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec 0 1.32 KBytes
[ 5] 3.00-4.00 sec 0.00 Bytes 0.00 bits/sec 1 1.32 KBytes
[ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec 0 1.32 KBytes
[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 0 1.32 KBytes
[ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 1 1.32 KBytes
[ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 0 1.32 KBytes
[ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 0 1.32 KBytes
[ 5] 9.00-10.00 sec 0.00 Bytes 0.00 bits/sec 0 1.32 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 108 KBytes 88.4 Kbits/sec 5 sender
[ 5] 0.00-10.00 sec 0.00 Bytes 0.00 bits/sec receiver
For the iperf3 server, I runiperf3 -s
in the DN server.
~$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 10.60.0.1, port 57687
[ 5] local 192.168.16.152 port 5201 connected to 10.60.0.1 port 49049
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-3.00 sec 0.00 Bytes 0.00 bits/sec receiver
For UDP packets, client side (UE) shows as below:
~/UERANSIM/build$ sh nr-binder 10.60.0.1 iperf3 -c 192.168.16.152 -i 1 -t 100 -u
Connecting to host 192.168.16.152, port 5201
[ 5] local 10.60.0.1 port 41467 connected to 192.168.16.152 port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 129 KBytes 1.06 Mbits/sec 98
[ 5] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 3.00-4.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 4.00-5.00 sec 129 KBytes 1.06 Mbits/sec 98
[ 5] 5.00-6.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 6.00-7.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 7.00-8.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 8.00-9.00 sec 129 KBytes 1.06 Mbits/sec 98
[ 5] 9.00-10.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 10.00-11.00 sec 128 KBytes 1.05 Mbits/sec 97
[ 5] 11.00-12.00 sec 128 KBytes 1.05 Mbits/sec 97
However, server side (DN server) shows 0.00 Bytes 0.00 bits/sec
as TCP, and there is no packet going through n3 tx and n6 tx (n3 rx and n6 rx packets are normal).
My setting contains 3 bare-metal servers. I run free5gc control plane and upg-vpp in the same server, and set the n4 interface as a veth pair between them. The other 2 servers are one for UERANSIM and one for DN. 5GC server has two 10Gb NICs connecting with UERAN and DN server.
Could you share any thoughts on how to debug this? Thanks in advance!
BTW, I use free5gc's main branch, rather than v3.3.0's achieve. When I use v3.3.0, I encountered the same issue here: free5gc/free5gc#457 (comment)
My startup.conf:
heapsize 2G
unix {
nodaemon
log /tmp/vpp.log
full-coredump
gid vpp
interactive
cli-listen /run/vpp/cli.sock
exec /root/openair-upf/init.conf
}
api-trace {
on
}
cpu {
main-core 0
corelist-workers 1-3
}
api-segment {
gid vpp
}
dpdk {
dev 0000:06:00.0 {name n3}
dev 0000:06:00.1 {name n6}
}
plugins {
path /usr/local/vpp/lib/x86_64-linux-gnu/vpp_plugins/
plugin oddbuf_plugin.so { enable }
plugin dpdk_plugin.so { enable }
plugin upf_plugin.so { enable }
init.conf:
set interface ip table n6 0
set interface mtu 9000 n6
set interface ip address n6 192.168.16.151/24
set interface state n6 up
create host-interface name n4in
set interface ip table host-n4in 0
set interface mtu 9000 host-n4in
set interface ip address host-n4in 192.168.14.151/24
set interface state host-n4in up
set interface ip table n3 0
set interface mtu 9000 n3
set interface ip address n3 192.168.13.151/24
set interface state n3 up
ip route add 0.0.0.0/0 table 0 via 192.168.16.152 n6
upf pfcp endpoint ip 192.168.14.151 vrf 0
upf node-id fqdn 192.168.14.151
upf nwi name internet vrf 0
upf specification release 16
upf gtpu endpoint ip 192.168.13.151 nwi internet teid 0x000004d2/2
My free5gc's control plane configurations are same as yours.
My 5GC server interfaces:
~$ ifconfig
enp1s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 128.105.145.149 netmask 255.255.252.0 broadcast 128.105.147.255
inet6 fe80::72e4:22ff:fe83:e2bc prefixlen 64 scopeid 0x20<link>
ether 70:e4:22:83:e2:bc txqueuelen 1000 (Ethernet)
RX packets 9217993 bytes 1904016126 (1.9 GB)
RX errors 0 dropped 0 overruns 2 frame 0
TX packets 369089 bytes 59611887 (59.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xc6a00000-c6afffff
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 273791 bytes 32372522 (32.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 273791 bytes 32372522 (32.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
n4in: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::9c54:8dff:fe32:68cf prefixlen 64 scopeid 0x20<link>
ether 9e:54:8d:32:68:cf txqueuelen 1000 (Ethernet)
RX packets 18206 bytes 1092138 (1.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 18141 bytes 4015454 (4.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
n4out: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.14.141 netmask 255.255.255.0 broadcast 192.168.14.255
inet6 fe80::c0b5:a8ff:fe1f:368f prefixlen 64 scopeid 0x20<link>
ether c2:b5:a8:1f:36:8f txqueuelen 1000 (Ethernet)
RX packets 18141 bytes 4015454 (4.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 18206 bytes 1092138 (1.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
~$ dpdk-devbind.py -s
Network devices using DPDK-compatible driver
============================================
0000:06:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=uio_pci_generic unused=ixgbe,vfio-pci
0000:06:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=uio_pci_generic unused=ixgbe,vfio-pci
Network devices using kernel driver
===================================
0000:01:00.0 'I350 Gigabit Network Connection 1521' if=enp1s0f0 drv=igb unused=vfio-pci,uio_pci_generic *Active*
0000:01:00.1 'I350 Gigabit Network Connection 1521' if=enp1s0f1 drv=igb unused=vfio-pci,uio_pci_generic
UERAN server interfaces:
~$ ifconfig
enp1s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 128.105.145.155 netmask 255.255.252.0 broadcast 128.105.147.255
inet6 fe80::72e4:22ff:fe83:c21c prefixlen 64 scopeid 0x20<link>
ether 70:e4:22:83:c2:1c txqueuelen 1000 (Ethernet)
RX packets 1712978 bytes 111083437 (111.0 MB)
RX errors 0 dropped 0 overruns 1 frame 0
TX packets 150662 bytes 115352818 (115.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xc6a00000-c6afffff
enp6s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.13.131 netmask 255.255.255.0 broadcast 192.168.13.255
inet6 fe80::92e2:baff:feb2:9944 prefixlen 64 scopeid 0x20<link>
ether 90:e2:ba:b2:99:44 txqueuelen 1000 (Ethernet)
RX packets 351 bytes 38201 (38.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16114 bytes 22487453 (22.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 148815 bytes 36987458 (36.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 148815 bytes 36987458 (36.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uesimtun0: flags=369<UP,POINTOPOINT,NOTRAILERS,RUNNING,PROMISC> mtu 1400
inet 10.60.0.1 netmask 255.255.255.255 destination 10.60.0.1
inet6 fe80::73f4:a1f7:938c:b152 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 54 bytes 3316 (3.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 127 bytes 79181 (79.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uesimtun1: flags=369<UP,POINTOPOINT,NOTRAILERS,RUNNING,PROMISC> mtu 1400
inet 10.60.0.2 netmask 255.255.255.255 destination 10.60.0.2
inet6 fe80::7309:4e16:af45:a374 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 640 (640.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uesimtun2: flags=369<UP,POINTOPOINT,NOTRAILERS,RUNNING,PROMISC> mtu 1400
inet 10.60.0.3 netmask 255.255.255.255 destination 10.60.0.3
inet6 fe80::b75c:a89:a67b:b456 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 640 (640.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
DN server interfaces:
~$ ifconfig
enp1s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 128.105.145.169 netmask 255.255.252.0 broadcast 128.105.147.255
inet6 fe80::72e4:22ff:fe83:eb08 prefixlen 64 scopeid 0x20<link>
ether 70:e4:22:83:eb:08 txqueuelen 1000 (Ethernet)
RX packets 6478192 bytes 1129562545 (1.1 GB)
RX errors 0 dropped 30 overruns 3 frame 0
TX packets 392413 bytes 73191590 (73.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xc6a00000-c6afffff
enp6s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.16.152 netmask 255.255.255.0 broadcast 192.168.16.255
inet6 fe80::92e2:baff:feac:1621 prefixlen 64 scopeid 0x20<link>
ether 90:e2:ba:ac:16:21 txqueuelen 1000 (Ethernet)
RX packets 521978 bytes 51202926 (51.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 511907 bytes 50208432 (50.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 488435 bytes 12800725559 (12.8 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 488435 bytes 12800725559 (12.8 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.