free5GC + OAI gNB: RerouteNASRequest

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:

  1. nssfcfg.yaml requires AMF Instance IDs in the .amfSetList.[].amfList and .amfList.[].nfId fields.
  2. 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?