该教程将在UE-Ueransim-5GC全链路开发记录的基础上进一步升级,减少UE到Ueransim的代理转发。实现UE能够直接ping到主机中的Ueransim容器。
测试环境:
- 核心网与基站部署在同一台设备中,虚拟机对外网卡ens40,ip=192.168.12.33
- UE在工控机中,ip=192.168.12.5
虚拟机对外网卡与工控机通过交换机连接,由于在同一网段,因此可以互通
基站侧
开启数据包转发,是的外部能够通过网桥访问容器
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT
创建一个docker网桥,并将该网桥桥接到ens40
docker network create --subnet=192.168.12.1/24 ueransim-access
验证一下:
docker network ls
NETWORK ID NAME DRIVER SCOPE
0cec1e5e8c7c bridge bridge local
645021fc83d7 host host local
0dfd9d2198cc none null local
0bd1d9edab52 ueransim-access bridge local #这个就是我们创建的
## 物理网卡
ens40: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.12.33 netmask 255.255.255.0 broadcast 192.168.12.255
inet6 fe80::20c:29ff:fee8:a145 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e8:a1:45 txqueuelen 1000 (Ethernet)
RX packets 2121 bytes 540566 (540.5 KB)
RX errors 0 dropped 13 overruns 0 frame 0
TX packets 1021 bytes 114064 (114.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
## docker创建的网桥
br-0bd1d9edab52: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.12.1 netmask 255.255.255.0 broadcast 192.168.12.255
inet6 fe80::42:7aff:fe9f:d48d prefixlen 64 scopeid 0x20<link>
ether 02:42:7a:9f:d4:8d txqueuelen 0 (Ethernet)
RX packets 299 bytes 61202 (61.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 126 bytes 45484 (45.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
核心网启动
docker-compose -f docker-compose-basic-vpp-nrf.yaml up -d
基站启动
docker-compose/gNB$ docker-compose -f ueransim-local.yaml up -d
Creating ueransim2 ... done
容器状态查询
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9003897d779 ueransim:latest "/ueransim/bin/entry…" 21 seconds ago Up 20 seconds (healthy) ueransim2
f13ec0956750 oaisoftwarealliance/oai-smf:v1.5.0 "python3 /openair-sm…" 8 minutes ago Up 7 minutes (healthy) 80/tcp, 8080/tcp, 8805/udp oai-smf
a45ccd1fd3fe oaisoftwarealliance/oai-amf:v1.5.0 "python3 /openair-am…" 8 minutes ago Up 8 minutes (healthy) 80/tcp, 9090/tcp, 38412/sctp oai-amf
ebf9d0aa2f53 oaisoftwarealliance/oai-ausf:v1.5.0 "python3 /openair-au…" 8 minutes ago Up 8 minutes (healthy) 80/tcp oai-ausf
54d1bc2014f6 oaisoftwarealliance/oai-udm:v1.5.0 "python3 /openair-ud…" 8 minutes ago Up 8 minutes (healthy) 80/tcp oai-udm
bad967f3e5b3 oaisoftwarealliance/oai-udr:v1.5.0 "python3 /openair-ud…" 8 minutes ago Up 8 minutes (healthy) 80/tcp oai-udr
c74674747f5c oaisoftwarealliance/oai-upf-vpp:v1.5.0 "/openair-upf/bin/en…" 8 minutes ago Up 8 minutes (healthy) 2152/udp, 8085/udp vpp-upf
18cea322d66b oaisoftwarealliance/oai-nrf:v1.5.0 "python3 /openair-nr…" 8 minutes ago Up 8 minutes (healthy) 80/tcp, 9090/tcp oai-nrf
d76d3b0584db mysql:8.0 "docker-entrypoint.s…" 8 minutes ago Up 8 minutes (healthy) 3306/tcp, 33060/tcp mysql
50ed1ed6425d oaisoftwarealliance/trf-gen-cn5g:latest "/bin/bash -c ' ipta…" 8 minutes ago Up 8 minutes (healthy) oai-ext-dn
ueransim容器内部网络
ueransim/bin# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.70.144 netmask 255.255.255.0 broadcast 192.168.70.255
ether 02:42:c0:a8:46:90 txqueuelen 0 (Ethernet)
RX packets 44 bytes 7994 (7.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 15 bytes 1818 (1.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.144 netmask 255.255.255.0 broadcast 192.168.72.255
ether 02:42:c0:a8:48:90 txqueuelen 0 (Ethernet)
RX packets 27 bytes 3956 (3.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 42 (42.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.12.144 netmask 255.255.255.0 broadcast 192.168.12.255
ether 02:42:c0:a8:0c:90 txqueuelen 0 (Ethernet)
RX packets 52 bytes 10824 (10.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
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
loop txqueuelen 1000 (Local Loopback)
RX packets 149 bytes 8494 (8.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 149 bytes 8494 (8.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uesimtun0: flags=369<UP,POINTOPOINT,NOTRAILERS,RUNNING,PROMISC> mtu 1400
inet 12.1.1.2 netmask 255.255.255.255 destination 12.1.1.2
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 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ping一下ue
ueransim/bin# ping 192.168.12.5 -c 4
PING 192.168.12.5 (192.168.12.5) 56(84) bytes of data.
64 bytes from 192.168.12.5: icmp_seq=1 ttl=128 time=0.698 ms
64 bytes from 192.168.12.5: icmp_seq=2 ttl=128 time=0.737 ms
64 bytes from 192.168.12.5: icmp_seq=3 ttl=128 time=0.655 ms
64 bytes from 192.168.12.5: icmp_seq=4 ttl=128 time=0.536 ms
--- 192.168.12.5 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3064ms
rtt min/avg/max/mdev = 0.536/0.656/0.737/0.079 ms
UE侧
连通性测试
数据流测试