Specifying the N9 IP addresses in the configuration!

,

Hello,

I’ve been using free5gc v3.0.4 and UERANSIM v2.2.1 inside docker containers and I was able to test successfully ping from UE when ULCL feature is enabled or disabled. When ULCL enabled, I’ve been specifying 2 routes to 2 different hosts from my data network and all works as expected. Otherwise, when I try to ping another address (e.g. www.google.com) the traffic goes always through the UPF1. Is that the expected behavior.

I’ve another question about N9 interfaces. Should they be different from the N3 interfaces? And is there any way to specify them in the free5gc configuration?

Hi raoufkh, did you figure out how to specify N9 interfaces vs N3? I have the same question; I’ve figured out the slightly different panic I get in On latest v3.05, PDU session fails with 'has no pre-config route', referred to previous similar post, no luck - #2 by ryanwwest is because in upf.go UPF.GetInterface(), it doesn’t find any N9 interfaces so it returns nil here: smf/upf.go at eb13ffabeef1f0ca281f62113d1fde2dbaac853a · free5gc/smf · GitHub.
And that nil being returned causes the nil dereference panic here: github (dot) com/free5gc/smf/blob/eb13ffabeef1f0ca281f62113d1fde2dbaac853a/context/datapath.go#L393
(kind of similar to the panic you solved with IPV4IPV6 code changes)

Hello Ryan,

I have been able to run Free5GC v3.0.5 with N9 interfaces different from N3 in the UPF-b. Can you provide more information about your environment please? Are you running in VMs or containers? Are you using one or multiple hosts?

Hey roaufkh,

Thanks for responding and I’m glad you figured out how to run different N9 interfaces.

My current setup is at GitHub - ryanwwest/free5gc-powder-profile: a POWDER profile that automatically instantiates a full simulated 5g core network and UE RAN. I’m running on 5 separate physical machines contained within the POWDER research testbed which is kind of like an AWS just for research (see link above for a link for info about it). The profile.py in there instructs the infrastructure to create a 5 node network that I use, of which one node runs the UERANSIM gnb and UE(s), another runs the free5gc core, one runs a UPF branching point, and two run UPF anchor points. That Python file also automatically installs free5gc/UERANSIM on each machine respectively and replaces config files with the ones located in the config/ folder.

Due to my inability to post more than 2 links here or reply frequently, I’ve been recording my investigation into the Go panic I linked above in the same repo: GitHub - ryanwwest/free5gc-powder-profile: a POWDER profile that automatically instantiates a full simulated 5g core network and UE RAN (third bullet point down). I’m trying to determine if the config files I’m using in that repo are incorrect and need to have an N9 interface specified (or have other issues), or if this panic is completely because of bugs.

Hello

First, sorry for delay!

For my case, I’m running the Free5GC v3.0.5 on containers (orchestrated with Kubenretes) without any patch to the source code. I’ll put my configuration files here (especially SMF and UPF). I’ve tested both SIGNLE and ULCL modes and it works without errors.

It would be awesome to see your config files and compare, as it seems like our setups are pretty similar. Thanks! So you did not have to keep the change to support PDUSessionTypeIPv4IPv6 that you mentioned here? On latest v3.05, PDU session fails with 'has no pre-config route', referred to previous similar post, no luck - #4 by ralfkundel

Raoufkh, were you able to post those configuration files? I’m not familiar with this forum layout yet so perhaps I’m not seeing them attached.

Hello

I’m so sorry for delay, lot of work!

Here are my configuration files for SMF and UPFs:

smf.txt (3.4 KB) upf1.txt (465 Bytes) upf2.txt (465 Bytes) upfb.txt (492 Bytes)

Note that in my environment each network function is running inside a container orchestrated by Kubernetes and:

  • SMF has 2 interfaces (one for communication with control plane entities and one N4 interface 10.100.50.244).
  • UPFb has 3 used interfaces (n4 10.100.50.241, n3 10.100.50.233 and n9 10.100.50.225).
  • UPF1 has 3 used interfaces (n4 10.100.50.242, n9 10.100.50.226 and n6 10.100.100.13).
  • UPF2 has 3 used interfaces (n4 10.100.50.243, n9 10.100.50.227 and n6 10.100.100.14).
    So you might have to change the config according to your environment.
    To conclude, we have these networks:
  • n4 network: 10.100.50.240/29
  • n3 network: 10.100.50.232/29
  • n9 network: 10.100.50.224/29
  • n6 network: 10.100.100.0/24

In UPFb you have to set this NAT rules:

iptables -t nat -A POSTROUTING -o n9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o n3 -j MASQUERADE

Hope this will help you.
And for this comment this is not me :smiley:

Hi raoufkh,
THanks in advance for sharing this config files.
Could you please add the uerouting.yaml if its possible?
My doubt is about the an_ip, i dont know if it is the N2(signaling plane)IP or N3(data plane) IP of the RAN
Best Regards

Ps: I’m running Free5GC v3.0.5 without any bug fix and I’ve tested the connectivity and routing rules with a containerized UERANSIM.

Hi Raoifkh,

Would you be willing to share your kubernetes configuration as well? I have issues getting the latest 3.0.5 release working properly, while 3.0.4 was working well.

Do you have a gitrepo of your k8s and cnf configurations? Are you using multus?

Hello Bart

I have requested my company to share the project in open source. Once done, I will share it here and I hope we’ll able to discuss the possible enhancements with the Free5GC Community.

Yes I’m using multus for N4, N3, N9 and N6 interfaces (mendatory) and for N2 interfaces (optional).

1 Like

@raoufkh

FYI, here is my k8s manifest configuration.

Hello Bart

Seems like our works are not very different. For my case I’ve also started by providing Kubernetes manifests but there was some problems in the older versions of Free5GC (mainly the separation of bindAddress and registerAddress in config files).

For the version that we’ll provide soon, the installation is possible using Helm charts. This will simplify the installation and the management of Free5GC.
For example:
helm install free5gc free5gc ==> will install free5gc with single UPF
helm install --set userPlaneArchitecture=ulcl free5gc free5gc ==> will install free5gc with ULCL feature

Like we’re working in the same environment (K8s), it will be interresting to have your feedback.

For the simulator, we’re using UERANSIM instead of gnbsim in your case apperently.

Regards,
Raouf

Thanks a lot for your feedback @raoufkh. I was planning to make helm charts as well, but wanted to focus more on setup stability first, as I do quite often get nil pointer exceptions and hence container/pod restarts in AMF.

Thanks for the UERANSIM tip, I did not know this one yet. I will give it a try.

Thanks, these really help! I was not aware that I had to specify the n9 interfaces or include the nssai information on all upf nodes in the smf config file. With those changes I was able to get a PDU session working.

And sorry about my mistake with the other user starting with “ra” :joy: