I’m trying to get free5GC working with OpenAirInterface5G gNB and USRP B210 and COTS UE.
free5gc/*:v3.4.4
and oaisoftwarealliance/oai-gnb:2024.w47
Docker containers are being used.
There is only one AMF in my scenario, configured as follows:
amf.yaml
configuration:
amfName: 'amf'
defaultUECtxReq: false
locality: 'area1'
nasIE:
networkFeatureSupport5GS:
emc: 0
emcN3: 0
emf: 0
enable: true
imsVoPS: 0
iwkN26: 0
length: 1
mcsi: 0
mpsi: 0
networkName:
full: 'free5GC'
short: 'free'
ngapIE:
maskedIMEISV:
enable: true
mobilityRestrictionList:
enable: true
redirectionVoiceFallback:
enable: false
ngapIpList:
- '172.25.199.16'
ngapPort: 38412
non3gppDeregTimerValue: 3240
nrfCertPem: 'cert/nrf.pem'
nrfUri: 'http://172.25.198.8:8000'
plmnSupportList:
- plmnId:
mcc: '001'
mnc: '01'
snssaiList:
- sd: '000000'
sst: 1
- sd: '000000'
sst: 4
sbi:
bindingIPv4: '172.25.198.16'
port: 8000
registerIPv4: '172.25.198.16'
scheme: 'http'
sctp:
maxAttempts: 2
maxInitTimeout: 2
maxInstreams: 5
numOstreams: 3
security:
cipheringOrder:
- 'NEA0'
integrityOrder:
- 'NIA2'
servedGuamiList:
- amfId: '010200'
plmnId:
mcc: '001'
mnc: '01'
serviceNameList:
- 'namf-comm'
- 'namf-evts'
- 'namf-mt'
- 'namf-loc'
- 'namf-oam'
supportDnnList:
- 'internet'
- 'vcam'
- 'vctl'
supportTaiList:
- plmnId:
mcc: '001'
mnc: '01'
tac: '000005'
t3502Value: 720
t3512Value: 3600
t3513:
enable: true
expireTime: '6s'
maxRetryTimes: 4
t3522:
enable: true
expireTime: '6s'
maxRetryTimes: 4
t3550:
enable: true
expireTime: '6s'
maxRetryTimes: 4
t3555:
enable: true
expireTime: '6s'
maxRetryTimes: 4
t3560:
enable: true
expireTime: '6s'
maxRetryTimes: 4
t3565:
enable: true
expireTime: '6s'
maxRetryTimes: 4
t3570:
enable: true
expireTime: '6s'
maxRetryTimes: 4
info:
description: 'AMF initial local configuration'
version: '1.0.9'
logger:
enable: true
level: 'info'
reportCaller: false
This configuration was derived from free5gc-compose/config/amfcfg.yaml.
Notably, in the .plmnSupportList section, it defines two S-NSSAIs: 1,0x000000
and 4,0x000000
.
In the .servedGuamiList section, AMF ID is set to 0x010200
, in which the AMFSetID is 0b0000001000
.
The UE was inserted by POSTing the following document to free5gc-webui service /api/subscriber/imsi-001010000059449/00101/1
endpoint:
001010000059449.json
{
"AccessAndMobilitySubscriptionData": {
"gpsis": [
"msisdn-"
],
"nssai": {
"defaultSingleNssais": [
{
"sd": "000000",
"sst": 1
}
]
},
"subscribedUeAmbr": {
"downlink": "1 Gbps",
"uplink": "2 Gbps"
}
},
"AmPolicyData": {},
"AuthenticationSubscription": {
"authenticationManagementField": "8000",
"authenticationMethod": "5G_AKA",
"milenage": {},
"opc": {
"encryptionAlgorithm": 0,
"encryptionKey": 0,
"opcValue": "aeb1cabd8ed7a09b48d17eb3d8af172c"
},
"permanentKey": {
"encryptionAlgorithm": 0,
"encryptionKey": 0,
"permanentKeyValue": "5686e601f3a1942d4c5cd262ba6b4b20"
},
"sequenceNumber": "000000000023"
},
"ChargingDatas": [],
"FlowRules": [],
"QosFlows": [],
"SessionManagementSubscriptionData": [
{
"dnnConfigurations": {
"internet": {
"5gQosProfile": {
"5qi": 9,
"arp": {
"preemptCap": "",
"preemptVuln": "",
"priorityLevel": 8
},
"priorityLevel": 8
},
"pduSessionTypes": {
"allowedSessionTypes": [
"IPV4"
],
"defaultSessionType": "IPV4"
},
"sessionAmbr": {
"downlink": "1000 Mbps",
"uplink": "1000 Mbps"
},
"sscModes": {
"allowedSscModes": [
"SSC_MODE_2",
"SSC_MODE_3"
],
"defaultSscMode": "SSC_MODE_1"
}
}
},
"singleNssai": {
"sd": "000000",
"sst": 1
}
}
],
"SmPolicyData": {
"smPolicySnssaiData": {
"01000000": {
"smPolicyDnnData": {
"internet": {
"dnn": "internet"
}
},
"snssai": {
"sd": "000000",
"sst": 1
}
}
}
},
"SmfSelectionSubscriptionData": {
"subscribedSnssaiInfos": {
"01000000": {
"dnnInfos": [
{
"dnn": "internet"
}
]
}
}
},
"plmnID": "00101",
"ueId": "imsi-001010000059449"
}
Notably, in .AccessAndMobilitySubscriptionData.nssai section, the UE is only allowed to use one S-NSSAI: 1,0x000000
.
I did not change the nssfcfg.yaml
configuration.
It is the sample file in free5gc-compose/config/nssfcfg.yaml.
Notably, the PLMN listed for AMFs in this file is 466-92, which does not match the 208-93 that appears in other configuration files in the free5gc-compose repository.
When the UE comes online, it’s noted that the UE would transmit a NAS-PDU with both S-NSSAIs in the RequestedNSSAI field:
NSSAI - Requested NSSAI
Element ID: 0x2f
Length: 10
S-NSSAI 1
Length: 4
Slice/service type (SST): eMBB (1)
Slice differentiator (SD): 0
S-NSSAI 2
Length: 4
Slice/service type (SST): V2X (4)
Slice differentiator (SD): 0
The AMF responds with a RerouteNASRequest message:
RerouteNASRequest
protocolIEs: 4 items
Item 0: id-RAN-UE-NGAP-ID
Item 1: id-NGAP-Message
Item 2: id-AMFSetID
ProtocolIE-Field
id: id-AMFSetID (3)
criticality: reject (0)
value
AMFSetID: 0200 [bit length 10, 6 LSB pad bits, 0000 0010 00.. .... decimal value 8]
Item 3: id-AllowedNSSAI
ProtocolIE-Field
id: id-AllowedNSSAI (0)
criticality: reject (0)
value
AllowedNSSAI: 1 item
Item 0
AllowedNSSAI-Item
s-NSSAI
sST: 01
sD: 000000
This subsequently causes OpenAirInterface5G gNB to crash, because they do not support RerouteNASRequest message.
I looked at the packet trace and logs to determine why the AMF would transmit the RerouteNASRequest.
amf.log and nssf.log
2024-12-04T17:36:42.231737317Ze[36m [INFO][AMF][Main] e[0mAMF version:
free5GC version: v3.4.4
build time: 2024-11-12T08:12:11Z
commit hash: ce90b7bd
commit time: 2024-10-11T03:39:55Z
go version: go1.21.8 linux/amd64
2024-12-04T17:36:42.231955035Ze[36m [INFO][AMF][CFG] e[0mRead config from [./config/amfcfg.yaml]
2024-12-04T17:36:42.232680128Ze[36m [INFO][AMF][Main] e[0mLog enable is set to [true]
2024-12-04T17:36:42.232689928Ze[36m [INFO][AMF][Main] e[0mLog level is set to [info]
2024-12-04T17:36:42.232693357Ze[36m [INFO][AMF][Main] e[0mReport Caller is set to [false]
2024-12-04T17:36:42.232739717Ze[36m [INFO][AMF][SBI] e[0mBinding addr: [172.25.198.16:8000]
2024-12-04T17:36:42.232755310Ze[36m [INFO][AMF][Util] e[0mamfconfig Info: Version[1.0.9]
2024-12-04T17:36:42.232782569Ze[36m [INFO][AMF][Init] e[0mServer started
2024-12-04T17:36:42.233407847Ze[36m [INFO][AMF][Ngap] e[0mListen on 172.25.199.16:38412
2024-12-04T17:36:42.236211685Ze[36m [INFO][AMF][Main] e[0mOAuth2 setting receive from NRF: false
2024-12-04T17:36:42.236224900Ze[36m [INFO][AMF][SBI] e[0mStart SBI server (listen on 172.25.198.16:8000)
2024-12-04T17:36:53.306252836Ze[36m [INFO][AMF][Ngap] e[0m[AMF] SCTP Accept from: 172.25.199.18:39892
2024-12-04T17:36:53.306337978Ze[36m [INFO][AMF][Ngap] e[0mCreate a new NG connection for: 172.25.199.18:39892
2024-12-04T17:36:53.307005153Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mHandle NGSetupRequest
2024-12-04T17:36:53.307035506Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mSend NG-Setup response
2024-12-04T17:37:02.630477068Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mHandle InitialUEMessage
2024-12-04T17:37:02.630508871Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mNew RanUe [RanUeNgapID:1][AmfUeNgapID:1]
2024-12-04T17:37:02.630546939Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0m5GSMobileIdentity ["SUCI":"suci-0-001-01-0-0-0-0000059450", err: <nil>]
2024-12-04T17:37:02.630880120Ze[36m [INFO][AMF][CTX] e[0mNew AmfUe [supi:][guti:0010101020000000001]
2024-12-04T17:37:02.630909190Ze[36m [INFO][AMF][Gmm] e[0mHandle event[Gmm Message], transition from [Deregistered] to [Deregistered]
2024-12-04T17:37:02.630914283Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mHandle Registration Request
2024-12-04T17:37:02.630918664Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mRegistrationType: Initial Registration
2024-12-04T17:37:02.630923839Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mMobileIdentity5GS: SUCI[suci-0-001-01-0-0-0-0000059450]
2024-12-04T17:37:02.630930859Ze[36m [INFO][AMF][Gmm] e[0mHandle event[Start Authentication], transition from [Deregistered] to [Authentication]
2024-12-04T17:37:02.630934981Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mAuthentication procedure
2024-12-04T17:37:02.637803236Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mSend Authentication Request
2024-12-04T17:37:02.637828929Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mSend Downlink Nas Transport
2024-12-04T17:37:02.638052087Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mStart T3560 timer
2024-12-04T17:37:02.679118190Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mHandle UplinkNASTransport
2024-12-04T17:37:02.679138330Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mHandle UplinkNASTransport (RAN UE NGAP ID: 1)
2024-12-04T17:37:02.679184621Ze[36m [INFO][AMF][Gmm] e[0mHandle event[Gmm Message], transition from [Authentication] to [Authentication]
2024-12-04T17:37:02.679189075Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mHandle Authentication Failure
2024-12-04T17:37:02.679193645Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mStop T3560 timer
2024-12-04T17:37:02.679199410Ze[33m [WARN][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mAuthentication Failure 5GMM Cause: Synch Failure
2024-12-04T17:37:02.683624267Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mSend Authentication Request
2024-12-04T17:37:02.683646065Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mSend Downlink Nas Transport
2024-12-04T17:37:02.683853357Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mStart T3560 timer
2024-12-04T17:37:02.734061442Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mHandle UplinkNASTransport
2024-12-04T17:37:02.734070717Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mHandle UplinkNASTransport (RAN UE NGAP ID: 1)
2024-12-04T17:37:02.734091837Ze[36m [INFO][AMF][Gmm] e[0mHandle event[Gmm Message], transition from [Authentication] to [Authentication]
2024-12-04T17:37:02.734095416Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mHandle Authentication Response
2024-12-04T17:37:02.734098811Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:] e[0mStop T3560 timer
2024-12-04T17:37:02.740920436Ze[36m [INFO][AMF][Gmm] e[0mHandle event[Authentication Success], transition from [Authentication] to [SecurityMode]
2024-12-04T17:37:02.740941206Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mSend Security Mode Command
2024-12-04T17:37:02.740955770Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mSend Downlink Nas Transport
2024-12-04T17:37:02.741193139Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mStart T3560 timer
2024-12-04T17:37:02.759040441Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mHandle UplinkNASTransport
2024-12-04T17:37:02.759049039Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mHandle UplinkNASTransport (RAN UE NGAP ID: 1)
2024-12-04T17:37:02.759076411Ze[36m [INFO][AMF][Gmm] e[0mHandle event[Gmm Message], transition from [SecurityMode] to [SecurityMode]
2024-12-04T17:37:02.759080346Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mHandle Security Mode Complete
2024-12-04T17:37:02.759083853Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mStop T3560 timer
2024-12-04T17:37:02.759113320Ze[36m [INFO][AMF][Gmm] e[0mHandle event[SecurityMode Success], transition from [SecurityMode] to [ContextSetup]
2024-12-04T17:37:02.759117684Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mHandle InitialRegistration
2024-12-04T17:37:02.761328903Ze[36m [INFO][AMF][Gmm] e[0mRequestedNssai: &{Iei:47 Len:10 Buffer:[4 1 0 0 0 4 4 0 0 0]}
2024-12-04T17:37:02.761345089Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mRequestedNssai - ServingSnssai: &{Sst:1 Sd:000000}, HomeSnssai: <nil>
2024-12-04T17:37:02.761352183Ze[36m [INFO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mRequestedNssai - ServingSnssai: &{Sst:4 Sd:000000}, HomeSnssai: <nil>
2024-12-04T17:37:02.762825071Ze[31m [ERRO][AMF][Gmm][amf_ue_ngap_id:RU:1,AU:1(3GPP)][supi:SUPI:imsi-001010000059450] e[0mRegistration Status Update Error[amf not found]
2024-12-04T17:37:02.763674461Ze[36m [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:1(3GPP)][ran_addr:172.25.199.18:39892] e[0mSend Reroute Nas Request
2024-12-04T17:37:02.764005679Ze[31m [ERRO][AMF][Gmm] e[0mAMF can not select an target AMF by NRF
2024-12-04T17:37:02.764017149Ze[36m [INFO][AMF][Gmm] e[0mHandle event[ContextSetup Fail], transition from [ContextSetup] to [Deregistered]
2024-12-04T17:37:02.975093736Ze[36m [INFO][AMF][Ngap] e[0mHandle SCTP Notification[addr: <nil>]
2024-12-04T17:37:02.975120406Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mSCTP_SHUTDOWN_EVENT notification, close the connection
2024-12-04T17:37:02.975142428Ze[36m [INFO][AMF][Ngap][ran_addr:172.25.199.18:39892] e[0mRemove RAN Context[ID: <PlmnID: {Mcc:001 Mnc:01}, GNbID: 0000001>]
2024-12-04T17:37:02.975196926Ze[36m [INFO][AMF][Ngap] e[0mHandle SCTP Notification[addr: <nil>]
2024-12-04T17:37:02.975200791Ze[33m [WARN][AMF][Ngap] e[0mRAN context has been removed[addr: <nil>]
SCTPConn: SCTPWrite failed bad file descriptor
2024-12-04T17:37:02.975243048Ze[36m [INFO][AMF][Ngap] e[0mHandle SCTP Connection Error[addr: <nil>] - remove RAN
2024-12-04T17:37:02.975246721Ze[33m [WARN][AMF][Ngap] e[0mRAN context has been removed[addr: <nil>]
2024-12-04T17:36:41.881611747Ze[36m [INFO][NSSF][Main] e[0mNSSF version:
free5GC version: v3.4.4
build time: 2024-11-12T08:13:21Z
commit hash: a73f10ff
commit time: 2024-06-27T05:44:02Z
go version: go1.21.8 linux/amd64
2024-12-04T17:36:41.881672509Ze[36m [INFO][NSSF][CFG] e[0mRead config from [./config/nssfcfg.yaml]
2024-12-04T17:36:41.882455134Ze[36m [INFO][NSSF][Main] e[0mLog enable is set to [true]
2024-12-04T17:36:41.882465598Ze[36m [INFO][NSSF][Main] e[0mLog level is set to [info]
2024-12-04T17:36:41.882469132Ze[36m [INFO][NSSF][Main] e[0mReport Caller is set to [false]
2024-12-04T17:36:41.898625986Ze[36m [INFO][NSSF][Main] e[0mOAuth2 setting receive from NRF: false
2024-12-04T17:36:41.898638605Ze[36m [INFO][NSSF][Main] e[0mregister to NRF successfully
2024-12-04T17:36:41.898642841Ze[36m [INFO][NSSF][SBI] e[0mStarting server...
2024-12-04T17:37:02.762520756Ze[36m [INFO][NSSF][NsSel] e[0mHandle NSSelectionGet
2024-12-04T17:37:02.762664380Ze[33m [WARN][NSSF][Util] e[0mNo TA {"plmnId":{"mcc":"001","mnc":"01"},"tac":"000005"} in NSSF configuration
2024-12-04T17:37:02.762712110Ze[36m [INFO][NSSF][GIN] e[0m| 200 | 172.25.198.16 | GET | /nnssf-nsselection/v1/network-slice-information?nf-id=ccd29d20-b792-45f1-95e4-127dc11ae8b2&nf-type=AMF&slice-info-request-for-registration=%7B%22subscribedNssai%22%3A%5B%7B%22subscribedSnssai%22%3A%7B%22sst%22%3A1%2C%22sd%22%3A%22000000%22%7D%2C%22defaultIndication%22%3Atrue%7D%5D%2C%22requestedNssai%22%3A%5B%7B%22sst%22%3A1%2C%22sd%22%3A%22000000%22%7D%2C%7B%22sst%22%3A4%2C%22sd%22%3A%22000000%22%7D%5D%7D&tai=%7B%22plmnId%22%3A%7B%22mcc%22%3A%22001%22%2C%22mnc%22%3A%2201%22%7D%2C%22tac%22%3A%22000005%22%7D |
It indicated that, after seeing not every S-NSSAI in the RequestedNSSAI field sent by the UE is in the UE’s AllowedNSSAI, the AMF attempted to perform the Registration with AMF Re-allocation procedure (implemented in handleRequestedNssai
).
However, the NSSF cannot find an AMF serving every S-NSSAI in the RequestedNSSAI field.
Eventually, the AMF transmits a RerouteNASRequest to AMFSetID 0b0000001000
, which is its own AMFSetID.
I attempted to configure the NSSF but am facing a roadblock:
- nssfcfg.yaml requires AMF Instance IDs in the .amfSetList.[].amfList and .amfList.[].nfId fields.
- amfcfg.yaml does not allow configuring the AMF Instance ID.
Instead, it is randomly generated during AMF startup.
My questions:
- How can I configure the AMF+NSSF so that the Registration with AMF Re-allocation procedure could succeed?
- Is it correct for the AMF to send RerouteNASRequest with its own AMFSetID?
- Without changing the RAN side, how can I otherwise prevent the AMF from sending RerouteNASRequest?