https://github.com/PrinzOwO/gtp5g https://github.com/PrinzOwO/libgtp5gnl
#!/bin/sh
#
# gNB1 UPF
# +----------------------+ +----------------------+
# | lo: 60.60.0.2/16 | SW1 | |
# | | +---+ | |
# | 30.30.30.2/24 o----| |-----o 30.30.30.1/24 |
# | | +-o-+ | 70.70.0.1/24 |
# +----------------------+ | +-----------o----------+
# | |
# gNB2 | DN |
# +----------------------+ | +-----------o----------+
# | lo: 60.60.0.3/16 | | | 70.70.0.200/24 |
# | | | | |
# | 30.30.30.3/24 o------+ | |
# | | | |
# +----------------------+ +----------------------+
#
brctl addbr SW1
ip netns add gNB1
ip netns add gNB2
ip netns add UPF
ip netns add DN
ip link add gNB1_to_SW1 type veth peer name SW1_to_gNB1
ip link add gNB2_to_SW1 type veth peer name SW1_to_gNB2
ip link add UPF_to_SW1 type veth peer name SW1_to_UPF
ip link add UPF_to_DN type veth peer name DN_to_UPF
ip link set gNB1_to_SW1 netns gNB1
ip link set gNB2_to_SW1 netns gNB2
ip link set UPF_to_SW1 netns UPF
ip link set UPF_to_DN netns UPF
ip link set DN_to_UPF netns DN
brctl addif SW1 SW1_to_gNB1
brctl addif SW1 SW1_to_gNB2
brctl addif SW1 SW1_to_UPF
ip link set SW1_to_gNB1 up
ip link set SW1_to_gNB2 up
ip link set SW1_to_UPF up
ip link set SW1 up
ip netns exec gNB1 ip addr add 127.0.0.1/8 dev lo
ip netns exec gNB1 ip link set lo up
ip netns exec gNB2 ip addr add 127.0.0.1/8 dev lo
ip netns exec gNB2 ip link set lo up
ip netns exec UPF ip addr add 127.0.0.1/8 dev lo
ip netns exec UPF ip link set lo up
ip netns exec gNB1 ip addr add 60.60.0.2/16 dev lo
ip netns exec gNB1 ip addr add 30.30.30.2/24 dev gNB1_to_SW1
ip netns exec gNB2 ip addr add 60.60.0.3/16 dev lo
ip netns exec gNB2 ip addr add 30.30.30.3/24 dev gNB2_to_SW1
ip netns exec UPF ip addr add 30.30.30.1/24 dev UPF_to_SW1
ip netns exec UPF ip addr add 70.70.0.1/24 dev UPF_to_DN
ip netns exec DN ip addr add 70.70.0.200/24 dev DN_to_UPF
ip netns exec gNB1 ip link set gNB1_to_SW1 up
ip netns exec gNB2 ip link set gNB2_to_SW1 up
ip netns exec UPF ip link set UPF_to_SW1 up
ip netns exec UPF ip link set UPF_to_DN up
ip netns exec DN ip link set DN_to_UPF up
ip netns exec gNB1 ./gtp5g-link add gtp5gtest --ran &
sleep 0.1
ip netns exec gNB1 ./gtp5g-tunnel add far gtp5gtest 1 --action 2
ip netns exec gNB1 ./gtp5g-tunnel add far gtp5gtest 2 --action 2 --hdr-creation 0 78 30.30.30.1 2152
ip netns exec gNB1 ./gtp5g-tunnel add pdr gtp5gtest 1 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.2 --f-teid 87 30.30.30.2 --far-id 1
ip netns exec gNB1 ./gtp5g-tunnel add pdr gtp5gtest 2 --pcd 2 --ue-ipv4 60.60.0.2 --far-id 2
ip netns exec gNB1 ip r add 70.70.0.0/24 dev gtp5gtest
ip netns exec gNB2 ./gtp5g-link add gtp5gtest --ran &
sleep 0.1
ip netns exec gNB2 ./gtp5g-tunnel add far gtp5gtest 1 --action 2
ip netns exec gNB2 ./gtp5g-tunnel add far gtp5gtest 2 --action 2 --hdr-creation 0 79 30.30.30.1 2152
ip netns exec gNB2 ./gtp5g-tunnel add pdr gtp5gtest 1 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.3 --f-teid 97 30.30.30.3 --far-id 1
ip netns exec gNB2 ./gtp5g-tunnel add pdr gtp5gtest 2 --pcd 2 --ue-ipv4 60.60.0.3 --far-id 2
ip netns exec gNB2 ip r add 70.70.0.0/24 dev gtp5gtest
ip netns exec UPF ./gtp5g-link add gtp5gtest &
sleep 0.1
ip netns exec UPF ./gtp5g-tunnel add far gtp5gtest 1 --action 2
ip netns exec UPF ./gtp5g-tunnel add far gtp5gtest 2 --action 2 --hdr-creation 0 87 30.30.30.2 2152
ip netns exec UPF ./gtp5g-tunnel add pdr gtp5gtest 1 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.2 --f-teid 78 30.30.30.1 --far-id 1
ip netns exec UPF ./gtp5g-tunnel add pdr gtp5gtest 2 --pcd 2 --ue-ipv4 60.60.0.2 --far-id 2
ip netns exec UPF ./gtp5g-tunnel add far gtp5gtest 3 --action 2
ip netns exec UPF ./gtp5g-tunnel add far gtp5gtest 4 --action 2 --hdr-creation 0 97 30.30.30.3 2152
ip netns exec UPF ./gtp5g-tunnel add pdr gtp5gtest 3 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.3 --f-teid 79 30.30.30.1 --far-id 3
ip netns exec UPF ./gtp5g-tunnel add pdr gtp5gtest 4 --pcd 2 --ue-ipv4 60.60.0.3 --far-id 4
ip netns exec UPF ip r add 60.60.0.0/16 dev gtp5gtest
ip netns exec UPF sysctl -w net.ipv4.ip_forward=1
ip netns exec DN ip route add default via 70.70.0.1
ip netns exec gNB1 ip r add 60.60.0.3/32 dev gtp5gtest
ip netns exec gNB2 ip r add 60.60.0.2/32 dev gtp5gtest
#
# gNB1 UPF
# +----------------------+ +----------------------------+
# | lo: 10.0.0.1/24 | | |
# | | | |
# | 192.168.21.33/28 o--------------o eth1: 192.168.21.34/28 |
# | | | eth2: 192.168.21.49/28 |
# +----------------------+ +------------o---------------+
# |
# DN |
# +------------o---------------+
# | eth2: 192.168.21.50/28 |
# | |
# | |
# | |
# +----------------------------+
#
## gNB1
#!/bin/sh
ip addr add 10.0.0.1/24 dev lo
sh /home/adam/libgtp5gnl/tools/gtp5g-link add gtptun --ran &
sleep 0.1
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add far gtptun 1 --action 2
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add far gtptun 2 --action 2 --hdr-creation 0 100 192.168.21.34 2152
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add pdr gtptun 1 --pcd 1 --hdr-rm 0 --ue-ipv4 10.0.0.1 --f-teid 200 192.168.21.33 --far-id 1
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add pdr gtptun 2 --pcd 2 --ue-ipv4 10.0.0.1 --far-id 2
ip r add 192.168.21.48/28 dev gtptun
## UPF
#!/bin/sh
sh /home/adam/libgtp5gnl/tools/gtp5g-link add gtptun &
sleep 0.1
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add far gtptun 1 --action 2
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add far gtptun 2 --action 2 --hdr-creation 0 200 192.168.21.33 2152
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add pdr gtptun 1 --pcd 1 --hdr-rm 0 --ue-ipv4 10.0.0.1 --f-teid 100 192.168.21.34 --far-id 1
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add pdr gtptun 2 --pcd 2 --ue-ipv4 10.0.0.1 --far-id 2
ip r add 10.0.0.0/24 dev gtptun
sysctl -w net.ipv4.ip_forward=1
## DN
#!/bin/sh
ip route add 10.0.0.0/24 via 192.168.21.49
systemctl enable netprob.service
sysctl -w net.ipv4.conf.gtptun.rp_filter=0 sysctl -w net.ipv4.conf.eth1.rp_filter=0 sysctl -w net.ipv4.conf.eth2.rp_filter=0 sysctl -w net.ipv4.conf.gtptun.rp_filter=0 sysctl -w net.ipv4.conf.all.log_martians=1
sudo vim /etc/systemd/system/netprob.service sudo systemctl daemon-reload systemctl status netprob.service cd /opt mkdir netprob
vim netprob/init.sh
[Unit]
Description = Network Provisioning tools
After=network-online.target
[Service]
ExecStart=/opt/netprob/init.sh
ExecStartPost=/opt/netprob/post.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
ip netns add UE
ip netns add gNB1
ip netns add UPF
ip netns add DN
ip link add UE_to_gNB1 type veth peer name gNB1_to_UE
ip link add gNB1_to_UPF type veth peer name UPF_to_gNB1
ip link add UPF_to_DN type veth peer name DN_to_UPF
ip link set UE_to_gNB1 netns UE
ip link set gNB1_to_UE netns gNB1
ip link set gNB1_to_UPF netns gNB1
ip link set UPF_to_gNB1 netns UPF
ip link set UPF_to_DN netns UPF
ip link set DN_to_UPF netns DN
ip netns exec UE ip addr add 127.0.0.1/8 dev lo
ip netns exec UE ip link set lo up
ip netns exec gNB1 ip addr add 127.0.0.1/8 dev lo
ip netns exec gNB1 ip link set lo up
ip netns exec UPF ip addr add 127.0.0.1/8 dev lo
ip netns exec UPF ip link set lo up
ip netns exec DN ip addr add 127.0.0.1/8 dev lo
ip netns exec DN ip link set lo up
ip netns exec UE ip addr add 10.1.0.1/24 dev UE_to_gNB1
ip netns exec gNB1 ip addr add 10.1.0.2/24 dev gNB1_to_UE
ip netns exec gNB1 ip addr add 198.168.1.1/24 dev gNB1_to_UPF
ip netns exec gNB1 ip addr add 60.60.0.2/16 dev lo
ip netns exec gNB1 ip addr add 30.30.30.2/24 dev UE_to_gNB1
ip netns exec gNB1 ip addr add 10.1.0.2/24 dev UE_to_gNB1
ip netns exec UPF ip addr add 198.168.1.2/24 dev UPF_to_gNB1
ip netns exec UPF ip addr add 198.168.1.1/24 dev UPF_to_DN
ip netns exec DN ip addr add 198.168.21.1/24 dev DN_to_UPF
ip netns exec gNB1 ip link set gNB1_to_SW1 up
ip netns exec gNB2 ip link set gNB2_to_SW1 up
ip netns exec UPF ip link set UPF_to_SW1 up
ip netns exec UPF ip link set UPF_to_DN up
ip netns exec DN ip link set DN_to_UPF up
ip netns exec gNB1 ./gtp5g-link add gtp1 --ran &
sleep 0.1
ip netns exec gNB1 ./gtp5g-tunnel add far gtp1 1 --action 2
ip netns exec gNB1 ./gtp5g-tunnel add far gtp1 2 --action 2 --hdr-creation 0 78 30.30.30.1 2152
ip netns exec gNB1 ./gtp5g-tunnel add pdr gtp1 1 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.2 --f-teid 87 30.30.30.2 --far-id 1
ip netns exec gNB1 ./gtp5g-tunnel add pdr gtp1 2 --pcd 2 --ue-ipv4 60.60.0.2 --far-id 2
ip netns exec gNB1 ip r add 70.70.0.0/24 dev gtp1
ip netns exec gNB2 ./gtp5g-link add gtp1 --ran &
sleep 0.1
ip netns exec gNB2 ./gtp5g-tunnel add far gtp1 1 --action 2
ip netns exec gNB2 ./gtp5g-tunnel add far gtp1 2 --action 2 --hdr-creation 0 79 30.30.30.1 2152
ip netns exec gNB2 ./gtp5g-tunnel add pdr gtp1 1 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.3 --f-teid 97 30.30.30.3 --far-id 1
ip netns exec gNB2 ./gtp5g-tunnel add pdr gtp1 2 --pcd 2 --ue-ipv4 60.60.0.3 --far-id 2
ip netns exec gNB2 ip r add 70.70.0.0/24 dev gtp1
ip netns exec UPF ./gtp5g-link add gtp1 &
sleep 0.1
ip netns exec UPF ./gtp5g-tunnel add far gtp1 1 --action 2
ip netns exec UPF ./gtp5g-tunnel add far gtp1 2 --action 2 --hdr-creation 0 87 30.30.30.2 2152
ip netns exec UPF ./gtp5g-tunnel add pdr gtp1 1 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.2 --f-teid 78 30.30.30.1 --far-id 1
ip netns exec UPF ./gtp5g-tunnel add pdr gtp1 2 --pcd 2 --ue-ipv4 60.60.0.2 --far-id 2
ip netns exec UPF ./gtp5g-tunnel add far gtp1 3 --action 2
ip netns exec UPF ./gtp5g-tunnel add far gtp1 4 --action 2 --hdr-creation 0 97 30.30.30.3 2152
ip netns exec UPF ./gtp5g-tunnel add pdr gtp1 3 --pcd 1 --hdr-rm 0 --ue-ipv4 60.60.0.3 --f-teid 79 30.30.30.1 --far-id 3
ip netns exec UPF ./gtp5g-tunnel add pdr gtp1 4 --pcd 2 --ue-ipv4 60.60.0.3 --far-id 4
ip netns exec UPF ip r add 60.60.0.0/16 dev gtp1
ip netns exec UPF sysctl -w net.ipv4.ip_forward=1
ip netns exec DN ip route add default via 70.70.0.1
ip netns exec gNB1 ip r add 60.60.0.3/32 dev gtp1
ip netns exec gNB2 ip r add 60.60.0.2/32 dev gtp1