Can I deploy UPFs in different network namespaces of the same VM, and connect network with UERANSIM

I’m trying to deploy UPFs in different network namespaces on the same VM, just like test_ulcl.sh. Now UERANSIM can access free5gc, but when I ping google, free5gc shows destination unreachable.
those are my config files and shell script.
smfcfg.yaml
configuration:
smfName: SMF
sbi:
scheme: http
registerIPv4: 127.0.0.2 # IP used to register to NRF
bindingIPv4: 127.0.0.2 # IP used to bind the service
port: 8000
pfcp:
addr: 10.200.200.1
userplane_information:
up_nodes:
gNB1:
type: AN
an_ip: 192.188.2.3

  UPF1:
    type: UPF
    node_id: 10.200.200.101
    sNssaiUpfInfos:
      - sNssai:
          sst: 1
          sd: 010203
        dnnUpfInfoList:
          - dnn: internet
      - sNssai:
          sst: 1
          sd: 112233
        dnnUpfInfoList:
          - dnn: internet
    interfaces:
      - interfaceType: N3
        endpoints:
          - 192.168.2.11
        networkInstance: internet
      - interfaceType: N9
        endpoints:
          - 10.200.200.101
        networkInstance: internet
  UPF2:
    type: UPF
    node_id: 10.200.200.102
    sNssaiUpfInfos:
      - sNssai:
          sst: 1
          sd: 010203
        dnnUpfInfoList:
           - dnn: internet
             pools:
              - cidr: 60.60.0.0/16
    interfaces:
      - interfaceType: N9
        endpoints:
          - 10.200.200.102
        networkInstance: internet
  UPF3:
    type: UPF
    node_id: 10.200.200.103
    sNssaiUpfInfos:
      - sNssai:
          sst: 1
          sd: 010203
        dnnUpfInfoList:
          - dnn: internet
            pools:
              - cidr: 60.61.0.1/32
    interfaces:
      - interfaceType: N9
        endpoints:
          - 10.200.200.103
        networkInstance: internet
links:
  - A: gNB1
    B: UPF1
  - A: UPF1
    B: UPF2
  - A: UPF1
    B: UPF3

nrfUri: http://127.0.0.10:8000
ulcl: true

upfcfg01.yaml

The IP list of the N4 interface on this UPF (Can’t set to 0.0.0.0)

pfcp:
- addr: 10.200.200.101
gtpu:
- addr: 0.0.0.0
dnn_list:
- dnn: intranet
cidr: 60.60.0.0/16
upfcfg02.yaml
pfcp:
- addr: 10.200.200.102
gtpu:
- addr: 10.200.200.102
dnn_list:
- dnn: internet
cidr: 60.61.0.0/16
upfcfg03.yaml
pfcp:
- addr: 10.200.200.103
gtpu:
- addr: 10.200.200.103
dnn_list:
- dnn: internet
cidr: 60.62.0.0/16
run.sh
#!/usr/bin/env bash
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
sudo systemctl stop ufw
PID_LIST=()
UPFNS=“UPFns”
UPF_NUM=3

Setup bridge

sudo ip link add veth0 type veth peer name br-veth0
sudo ip link set veth0 up
sudo ip addr add 60.60.0.1/24 dev lo
sudo ip addr add 10.200.200.1/24 dev veth0
sudo ip addr add 10.200.200.2/24 dev veth0
sudo ip link add free5gc-br type bridge
sudo ip link set free5gc-br up
sudo ip link set br-veth0 up
sudo ip link set br-veth0 master free5gc-br
sudo iptables -I FORWARD 1 -j ACCEPT
sleep 1
sudo sh -c “echo 1 > /proc/sys/net/ipv4/conf/veth0/accept_local”
sudo sh -c “echo 1 > /proc/sys/net/ipv4/conf/br-veth0/accept_local”
sudo sh -c “echo 0 > /proc/sys/net/ipv4/conf/veth0/rp_filter”
sudo sh -c “echo 0 > /proc/sys/net/ipv4/conf/br-veth0/rp_filter”

sudo iptables -I FORWARD 1 -j ACCEPT

Setup network namespace

cd NFs/upf/build
for i in $(seq -f “%02g” 1 UPF_NUM); do sudo ip netns add "{UPFNS}{i}" sudo ip link add "veth{i}" type veth peer name “br-veth${i}”
sudo ip link set “veth${i}” netns “{UPFNS}{i}”
sudo ip link set “br-veth${i}” up
sudo ip netns exec “{UPFNS}{i}” ip addr add “60.60.0.1${i}” dev lo
sudo ip netns exec “{UPFNS}{i}” ip link set lo up
sudo ip netns exec “{UPFNS}{i}” ip addr add “10.200.200.1${i}/24” dev “veth${i}”
sudo ip netns exec “{UPFNS}{i}” ip link set “veth${i}” up
sudo ip netns exec “{UPFNS}{i}” route add default gw 10.200.200.1
sudo ip link set “br-veth${i}” master free5gc-br
sudo -E ip netns exec “{UPFNS}{i}” ./bin/free5gc-upfd -f ./config/upfcfg${i}.yaml &
PID_LIST+=(!) sleep 1 sudo sh -c "echo 1 > /proc/sys/net/ipv4/conf/br-veth{i}/accept_local"
sudo sh -c “echo 0 > /proc/sys/net/ipv4/conf/br-veth${i}/rp_filter”
sleep 1
done
sudo sh -c “echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter”
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
sudo iptables -I FORWARD 1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 60.60.0.0/24 ! -o upfgtp -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 60.61.0.0/24 ! -o upfgtp -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 60.62.0.0/24 ! -o upfgtp -j MASQUERADE
sleep 1
cd …/…/…
NF_LIST=“nrf amf smf udr pcf udm nssf ausf”
export GIN_MODE=release
for NF in {NF_LIST}; do ./bin/{NF} &
PID_LIST+=($!)
sleep 0.1
done

Hi @zhang19990111,
could you provide your log files or screenshot?
Thanks.

Hi, @zhang19990111,
since there hasn’t been any replies from you, this topic is closed by admin.
If you have further questions about this topic, please create another topic.
Thanks.