Skip to content

Instantly share code, notes, and snippets.

@takehaya
Last active October 13, 2022 16:39
Show Gist options
  • Save takehaya/c9d392668ba53f0e0696cf043ef867e7 to your computer and use it in GitHub Desktop.
Save takehaya/c9d392668ba53f0e0696cf043ef867e7 to your computer and use it in GitHub Desktop.

libgtp5gnlとgtp5gの検証

https://github.com/PrinzOwO/gtp5g https://github.com/PrinzOwO/libgtp5gnl

UE-gNB-UPF-DNをやるやつ

#!/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

UE-gNB-UPF-DNをやるやつ-2

#
# 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

myconf

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment