Free5gc + UERANSIM with 2 UPFs. Error when establishing PDU Session

, ,

I am using the free5gc “Add: multiple UPF support for v3.0.5” version (commit 5c4280fcc0fdd6350dee27733d4ace1bb681764a) to run a scenario with 2 UPF, basing my configuration con this work https://github.com/s5uishida/free5gc_ueransim_sample_config#build. For the UEs and gNBs I am using UERANSIM.

The IPs for the different machines are:

  • gNB : 192.168.56.102
  • UE: 192.168.56.104
  • UPF1: 192.168.56.107
  • UPF2: 192.168.56.108
  • free5gc control NF: 192.168.56.109

I manage to launch the UPFs and the rest of the core and attach the gNB. However, when I try to connect the UE the following error comes up when trying to establish the PDU session:

2021-05-20T20:29:39Z [INFO][SMF][PduSess] SUPI[imsi-208930000000003] has no pre-config route


2021/05/20 20:29:39 [Recovery] 2021/05/20 - 20:29:39 panic recovered:
runtime error: invalid memory address or nil pointer dereference
/usr/local/go/src/runtime/panic.go:212 (0x449339)
	panicmem: panic(memoryError)
/usr/local/go/src/runtime/signal_unix.go:695 (0x449188)
	sigpanic: panicmem()
/home/ubuntu/free5gc/NFs/smf/context/upf.go:106 (0xb38ad6)
	(*UPFInterfaceInfo).IP: if (pduSessType == nasMessage.PDUSessionTypeIPv4 || pduSessType == nasMessage.PDUSessionTypeIPv4IPv6) && len(i.IPv4EndPointAddresses) != 0 {
/home/ubuntu/free5gc/NFs/smf/context/datapath.go:393 (0xb2b297)
	(*DataPath).ActivateTunnelAndPDR: if upIP, err := iface.IP(smContext.SelectedPDUSessionType); err != nil {
/home/ubuntu/free5gc/NFs/smf/producer/pdu_session.go:209 (0xb627a5)
	HandlePDUSessionSMContextCreate: defaultPath.ActivateTunnelAndPDR(smContext, 255)
/home/ubuntu/free5gc/NFs/smf/pdusession/api_sm_contexts_collection.go:54 (0xb73f04)
	HTTPPostSmContexts: HTTPResponse := producer.HandlePDUSessionSMContextCreate(req.Body.(models.PostSmContextsRequest))
/home/ubuntu/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:161 (0x996f5a)
	(*Context).Next: c.handlers[c.index](c)
/home/ubuntu/go/pkg/mod/github.com/gin-gonic/[email protected]/recovery.go:83 (0x9a932f)
	RecoveryWithWriter.func1: c.Next()
/home/ubuntu/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:161 (0x996f5a)
	(*Context).Next: c.handlers[c.index](c)
/home/ubuntu/go/pkg/mod/github.com/free5gc/[email protected]/logger_util.go:65 (0x9aaedd)
	ginToLogrus.func1: c.Next()
/home/ubuntu/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:161 (0x996f5a)
	(*Context).Next: c.handlers[c.index](c)
/home/ubuntu/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:409 (0x9a0a05)
	(*Engine).handleHTTPRequest: c.Next()
/home/ubuntu/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:367 (0x9a011c)
	(*Engine).ServeHTTP: engine.handleHTTPRequest(c)
/home/ubuntu/go/pkg/mod/golang.org/x/[email protected]/http2/server.go:2152 (0x9ce96a)
	(*serverConn).runHandler: handler(rw, req)
/usr/local/go/src/runtime/asm_amd64.s:1373 (0x463030)
	goexit: BYTE	$0x90	// NOP

2021-05-20T20:29:39Z [INFO][SMF][GIN] | 500 |       127.0.0.1 | POST    | /nsmf-pdusession/v1/sm-contexts |
2021-05-20T20:29:39Z [ERRO][AMF][GMM][AMF_UE_NGAP_ID:1][SUPI:imsi-208930000000003] CreateSmContextRequest Error: undefined response type

I attach my configuration files and the log from the core functions.

upf1.yaml (1.0 KB) upf2.yaml (930 Bytes)
free5gc.txt (161.9 KB) amfcfg.yaml (5.0 KB) smfcfg.yaml (4.1 KB)

I also want to use multiple upfs, do you solved this ? can you tell me how to do this ?
Thanks very much!

I suspect that this is a configuration issue in uerouting.yaml

I am facing the same error. Have you solved it?

Hi, @sajidkhan2067
This problem seems to some configuration issues, you may follow the sample configuration to setup: https://github.com/s5uishida/free5gc_ueransim_sample_config#changes_up2
You can also check test_multiUPF.sh for more detail configuration.
Hope this helps you!

Hi @cristina, did you setup network namespace, bridge, and so on. You can refer to the test_multiUPF.sh. Thank you.

Hi @cristina, I think you have a typo in smfcfg.yaml file:

interfaceTupe --> should be interfaceType
I think there is also redundant “interfaces” key.

Thanks,
Avi