How to configure uerouting.yaml


Hi , since I wanted to try ulcl environment ,was working around how to write uerouting.yaml .
Would you let me know if there’s some documents which have instructions , how to configure it .

I’ve checked this page already but got confused .Since it seems to be setting an UE’s IP as a destination.

I’ve tried with several Destination IP(like google’s website) but didn’t work . The first UPF I started always did the transferring.

I’m using v3.0.4 .
Each NF are in different servers.
Using gnbsim as a RAN simulator.

Thank you.

uerouting.yaml (783 Bytes)

smfcfg.conf (1.4 KB)

Just make sure the branching UPF’s dnn shouldn’t be internet. And the DestinationIP of your uerouting.yaml must set to Google’s website IP.

Will it work on your env?

BTW, you can also reference to SMF-Config

Hi , thank you for advice.

But I’m still having trouble setting my environment .
Connection to the web site stopped using BranchingUPF but still not using the AnchorUPF I expected .
I appreciate if you could let me know any possibility that I might miss setting.

As you pointed , I found my BranchingUPF’s dnn set as ‘Internet’ in upfcfg.yaml .
So , I changed it to AnchorUPF1 and 2’s IP address like below.

- dnn:
- dnn:

Also I set the same cidr in each AnchorUPF’s upfcfg.yaml

- dnn: Internet

- dnn: Internet

And I’ve changed DestinationIP to Web sit’s IP address in uerouting.yaml .
SMF’s config seemed same with the example you gave me so I didn’t change

Also , I noticed there were no packets , captured at BranchingUPF .
Which I think means that gNB is directly connecting to AnchorUPF.
Is no packet at BranchingUPF a correct behavior ?

Thank you

Can You provide all the config file and the pcap file you have captured?

Hi, thank you for your help.

These are my config and pcaps.
‘pcap_to_com’ is the pcap when I tried an access to and ‘pcap_to_cojp’ is the one when I accessed to .
I expected when accessed to ‘’ AnchorUPF2 would send a request and ‘’ AnchorUPF1 would.
And I thought in both cases , BranchingUPF would be accessed from gNB first , and then redirect the packets to each UPFs.

I know google’s IP address changes soon . So the uerouting.yaml’s DestinationIP need to be changed .

Thank you (3.4 KB) (7.1 KB) (3.3 KB)

Hi , I had a little update.

I was able to find packets from BranchingUPF to AnchorUPF .
I thought it would be seen on upfgtp - upfgtp but it was on eth0 -eth0.

Well , I’m still having routing trouble ,which AnchorUPF will be used.
Like, WebSiteA then Anchor1 , WebSiteB then Anchor2 ,kind of things.
Even the setting in uerouting.yaml have a rule to Select Anchor1 when Destination is WebSiteA , Anchor2 is used .
Any advice would be helpful.

Thank you

Hi , thank you for helping.

I finally got able to solve my problem .
I had a typo in SUPI and that was why the rule wasn’t used.

Your advice “to make sure dnn in BranchingUPF is not Internet” helped me a lot .

Thank you.


I see that you are specifying two DNs with two different UE subnet in your BranchingUPF configuration. The IP addresses used for each DN (- dnn: and - dnn: are they the IP addresses of N9 interfaces on AnchorsUPFs?
You are also specify two different UE subnets ( and What is the idea behind this? Will a UE with IP in the range go to the data network always through the UPF2. If it is the case, how can we force a UE (e.g. a UE simulated with UERANSIM) to get an IP address in this range.

Thank you in advance.

Hello raoufkh ,

I was really confused what value should be written , when I first posted .
So, the value I showed above was not suitable.

It worked well when I set like below.

BranchingUPF’s upfcfg.yaml

- dnn: intranet

each AnchorUPF’s upfcfg.yaml

- dnn: internet



  • SUPI: imsi-208930000000003
    AN: (RAN’s IP address)
    • DestinationIP: (IP for web site A)
      UPF: !!seq
      • BranchingUPF
      • AnchorUPF1
    • DestinationIP: (IP for web site B)
      UPF: !!seq
      • BranchingUPF
      • AnchorUPF2


Yes it works also fine for me with this configuration and I can see the traffic going through UPF1 when the targeted IP address is the IP for web site A (in your case) and through UPF2 when the target is web site B. For traffic going to another hosts it goes always through the UPF1.
My question is if I want to separate N3 and N9 interfaces, do you have any idea on how to set this information in the configuration. I’ll try to set up_resource in SMF config for UPF1 and UPF2 to their N9 interfaces and by specifying only the N3 interface for UPFb and not its N9 interface and will see if it works.

Hello ,

I haven’t tried that yet so, it’s just a guess, but we might do that in upfcfg.yaml .

When we look in to the upfcfg.yaml there’s a place we can set an IP address for GTPU.
So I suppose we set N9 network’s IP there on UPF1 and UPF2 .And N3 network’s IP in UPFb .
Also we might write rules for iptables in UPFb to do SNAT when transferring to N9 .

Hello yuno1

I will try to set this in the UPF config files and SMF config file. The only problem is that we cannot specify the N9 IP for UPFb in the config (we’ll see if it can be resolved automatically as I will set this IP in the same subnet as UPF1 and UPF2 N9 IPs).

For NAT rules, I’m not sure that we have to add them for the UPFb. The first time where packets go out from the tunnel is at UPF1 or UPF2. The current version is limited by the fact that UPFb cannot be used to go directly to internet (generally the DNN) so I think there is no need for the NAT rules.

Anyway, I’ll try this functionality and will leave my feedback here.