5G/NR - Network Architecture - NRF        

 

 

 

 

NR CORE - NRF

 

NRF stands for Network function Repository Function. Simply put, it works as a central registration center (registra) for all the Core Network Components. As shown in the following diagram, NRF has connected to all the 5G Core components in HPLMN and get connected to another NRF in VPLMN with N27 interface.

 

< 29.510 - Figure 4-1: 5G System architecture >

 

Followings are the name of each network component.

    AMF     Access and Mobility Management Function ==> Equivalent to MME in 4G

    AUSF    Authentication Server Function

    DN       Data Network

    NEF      Network Exposure Function

    NRF      Network Repository Function

    NSSF    Network Slice Selection Function

    PCF      Policy Control Function ==> Equivalent to PCRF in 5G

    (R)AN   (Radio) Access Network

    SMF     Session Management Function

    UDM     Unified Data Management ==> Equivalent to HSS in 4G

    UPF      User Plane Function ==> Equivalent to PGW in 4G

    SMSF   SMS Function

    SEAF    SEcurity Anchor Function ==> part of AMF function

 

Since NRF is connected almost every components (Network Functions) and provide various services to all of them. Descriptions on this NF(Network Function) can be complicated. I may not be able to put all of the functionalities in this note. I will just write down those things which I have some hands-on experience with.

 

 

 

NF Registration to NRF

 

Each NF(Network Function) is supposed to register to NRF so that NRF can coordinate all the NFs whenever necessary.

 

< 29.510-Figure 5.2.2.2.2-1: NF Instance Registration >

 

NF Service Consumer : Every Network Function (Core Network Components) except NRF itself.

URI : The URI of the NF that wants to get registered

nfInstanceID : UUID within the PLMN (e.g, 4947a69a-f61b-4bc1-b9da-47c9c5d14b64)

NFProfile : Network Function Profile which can carry a huge list of information as defined here.

 

 

The example messages shown below is from open5gs log. (For Official documentation of open5gs, go to open5gs.org. For basic tutorial about open5gs on sharetechnote, see the notes : Installation on Virtual Machine, Installation and test on Google Cloud, WebUI, Run)

 

 

Example : AMF Registration

 

PUT

 

07/09 21:21:05.476: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/0ab51768-ffcd-41ec-a11e-7954f71c156f (../lib/sbi/nghttp2-server.c:770)

07/09 21:21:05.476: [sbi] DEBUG: RECEIVED: 672 (../lib/sbi/nghttp2-server.c:773)

07/09 21:21:05.476: [sbi] DEBUG: {

    "nfInstanceId": "0ab51768-ffcd-41ec-a11e-7954f71c156f",

    "nfType":   "AMF",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.5"],

    "allowedNfTypes":   ["SMF"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "0ab6167c-ffcd-41ec-a11e-7954f71c156f",

            "serviceName":  "namf-comm",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.5",

                    "port": 7777

                }],

            "allowedNfTypes":   ["SMF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

}

 

201 Created

 

07/09 21:21:05.476: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/09 21:21:05.476: [sbi] DEBUG: SENDING...: 157 (../lib/sbi/nghttp2-server.c:355)

07/09 21:21:05.476: [sbi] DEBUG: {

    "nfInstanceId": "0ab51768-ffcd-41ec-a11e-7954f71c156f",

    "nfType":   "AMF",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

}

 

 

Example : AUSF Registration

 

PUT

 

07/08 02:45:18.834: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/fa64abc8-fe67-41ec-b3d5-a934c5d291a8 (../lib/sbi/nghttp2-server.c:770)

07/08 02:45:18.834: [sbi] DEBUG: RECEIVED: 676 (../lib/sbi/nghttp2-server.c:773)

07/08 02:45:18.834: [sbi] DEBUG: {

    "nfInstanceId": "fa64abc8-fe67-41ec-b3d5-a934c5d291a8",

    "nfType":   "AUSF",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.11"],

    "allowedNfTypes":   ["AMF"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "fa64b79e-fe67-41ec-b3d5-a934c5d291a8",

            "serviceName":  "nausf-auth",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.11",

                    "port": 7777

                }],

            "allowedNfTypes":   ["AMF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

}

 

201 Created

 

07/08 02:45:18.834: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/08 02:45:18.834: [sbi] DEBUG: SENDING...: 158 (../lib/sbi/nghttp2-server.c:355)

07/08 02:45:18.834: [sbi] DEBUG: {

    "nfInstanceId": "fa64abc8-fe67-41ec-b3d5-a934c5d291a8",

    "nfType":   "AUSF",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

}

 

 

 

Example : UDM Registration

 

PUT

 

07/08 03:22:31.370: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/33ae29b8-fe6d-41ec-9216-8d673c526000 (../lib/sbi/nghttp2-server.c:770)

07/08 03:22:31.370: [sbi] DEBUG: RECEIVED: 1512 (../lib/sbi/nghttp2-server.c:773)

07/08 03:22:31.370: [sbi] DEBUG: {

    "nfInstanceId": "33ae29b8-fe6d-41ec-9216-8d673c526000",

    "nfType":   "UDM",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.12"],

    "allowedNfTypes":   ["AMF", "SMF", "AUSF"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "33ae6342-fe6d-41ec-9216-8d673c526000",

            "serviceName":  "nudm-ueau",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.12",

                    "port": 7777

                }],

            "allowedNfTypes":   ["AUSF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }, {

            "serviceInstanceId":    "33ae6360-fe6d-41ec-9216-8d673c526000",

            "serviceName":  "nudm-uecm",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.12",

                    "port": 7777

                }],

            "allowedNfTypes":   ["AMF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }, {

            "serviceInstanceId":    "33ae636a-fe6d-41ec-9216-8d673c526000",

            "serviceName":  "nudm-sdm",

            "versions": [{

                    "apiVersionInUri":  "v2",

                    "apiFullVersion":   "2.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.12",

                    "port": 7777

                }],

            "allowedNfTypes":   ["AMF", "SMF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

 

201 Created

 

07/08 03:22:31.371: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/08 03:22:31.371: [sbi] DEBUG: SENDING...: 157 (../lib/sbi/nghttp2-server.c:355)

07/08 03:22:31.371: [sbi] DEBUG: {

    "nfInstanceId": "33ae29b8-fe6d-41ec-9216-8d673c526000",

    "nfType":   "UDM",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

}

 

 

 

Example : UDR Registration

 

PUT

 

07/09 21:21:05.726: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/0adb7b56-ffcd-41ec-8ac9-0f5331342d1b (../lib/sbi/nghttp2-server.c:770)

07/09 21:21:05.726: [sbi] DEBUG: RECEIVED: 686 (../lib/sbi/nghttp2-server.c:773)

07/09 21:21:05.726: [sbi] DEBUG: {

    "nfInstanceId": "0adb7b56-ffcd-41ec-8ac9-0f5331342d1b",

    "nfType":   "UDR",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.20"],

    "allowedNfTypes":   ["PCF", "UDM"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "0adc404a-ffcd-41ec-8ac9-0f5331342d1b",

            "serviceName":  "nudr-dr",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.20",

                    "port": 7777

                }],

            "allowedNfTypes":   ["PCF", "UDM"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

}

 

201 Created

 

07/09 21:21:05.726: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/09 21:21:05.726: [sbi] DEBUG: SENDING...: 157 (../lib/sbi/nghttp2-server.c:355)

07/09 21:21:05.726: [sbi] DEBUG: {

    "nfInstanceId": "0adb7b56-ffcd-41ec-8ac9-0f5331342d1b",

    "nfType":   "UDR",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

}

 

 

 

Example : PCF Registration

 

PUT

 

07/09 21:21:05.723: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/0adae7a4-ffcd-41ec-aff0-b734789f4477 (../lib/sbi/nghttp2-server.c:770)

07/09 21:21:05.723: [sbi] DEBUG: RECEIVED: 1146 (../lib/sbi/nghttp2-server.c:773)

07/09 21:21:05.723: [sbi] DEBUG: {

    "nfInstanceId": "0adae7a4-ffcd-41ec-aff0-b734789f4477",

    "nfType":   "PCF",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.13"],

    "allowedNfTypes":   ["AMF", "SMF", "NEF", "AF"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "0adb8b96-ffcd-41ec-aff0-b734789f4477",

            "serviceName":  "npcf-am-policy-control",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.13",

                    "port": 7777

                }],

            "allowedNfTypes":   ["AMF", "NEF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }, {

            "serviceInstanceId":    "0adb8baa-ffcd-41ec-aff0-b734789f4477",

            "serviceName":  "npcf-smpolicycontrol",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.13",

                    "port": 7777

                }],

            "allowedNfTypes":   ["SMF", "NEF", "AF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

}

 

201 Created

 

07/09 21:21:05.723: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/09 21:21:05.723: [sbi] DEBUG: SENDING...: 157 (../lib/sbi/nghttp2-server.c:355)

07/09 21:21:05.723: [sbi] DEBUG: {

    "nfInstanceId": "0adae7a4-ffcd-41ec-aff0-b734789f4477",

    "nfType":   "PCF",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

}

 

 

 

Example : SMF Registration

 

PUT

 

07/09 21:21:06.081: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/0adf454c-ffcd-41ec-9f8e-25aaf51f9b14 (../lib/sbi/nghttp2-server.c:770)

07/09 21:21:06.081: [sbi] DEBUG: RECEIVED: 678 (../lib/sbi/nghttp2-server.c:773)

07/09 21:21:06.081: [sbi] DEBUG: {

    "nfInstanceId": "0adf454c-ffcd-41ec-9f8e-25aaf51f9b14",

    "nfType":   "SMF",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.4"],

    "allowedNfTypes":   ["AMF"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "0b11ac76-ffcd-41ec-9f8e-25aaf51f9b14",

            "serviceName":  "nsmf-pdusession",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.4",

                    "port": 7777

                }],

            "allowedNfTypes":   ["AMF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

}

 

201 Created

 

07/09 21:21:06.081: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/09 21:21:06.081: [sbi] DEBUG: SENDING...: 157 (../lib/sbi/nghttp2-server.c:355)

07/09 21:21:06.081: [sbi] DEBUG: {

    "nfInstanceId": "0adf454c-ffcd-41ec-9f8e-25aaf51f9b14",

    "nfType":   "SMF",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

}

 

 

 

Example : NSSF Registration

 

PUT

 

07/08 03:20:40.354: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/eaf3a41e-fe6c-41ec-9185-39782a1733b6 (../lib/sbi/nghttp2-server.c:770)

07/08 03:20:40.354: [sbi] DEBUG: RECEIVED: 683 (../lib/sbi/nghttp2-server.c:773)

07/08 03:20:40.354: [sbi] DEBUG: {

    "nfInstanceId": "eaf3a41e-fe6c-41ec-9185-39782a1733b6",

    "nfType":   "NSSF",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.14"],

    "allowedNfTypes":   ["AMF"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "eaf42bd2-fe6c-41ec-9185-39782a1733b6",

            "serviceName":  "nnssf-nsselection",

            "versions": [{

                    "apiVersionInUri":  "v2",

                    "apiFullVersion":   "2.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.14",

                    "port": 7777

                }],

            "allowedNfTypes":   ["AMF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

}

 

201 Created

 

07/08 03:20:40.354: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/08 03:20:40.354: [sbi] DEBUG: SENDING...: 158 (../lib/sbi/nghttp2-server.c:355)

07/08 03:20:40.354: [sbi] DEBUG: {

    "nfInstanceId": "eaf3a41e-fe6c-41ec-9185-39782a1733b6",

    "nfType":   "NSSF",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

} (../lib/sbi/nghttp2-server.c:356)

 

 

 

Example : BSF Registration

 

PUT

 

07/09 21:21:06.262: [sbi] DEBUG: [PUT] /nnrf-nfm/v1/nf-instances/0b2e7414-ffcd-41ec-9c59-a56e64429106 (../lib/sbi/nghttp2-server.c:770)

07/09 21:21:06.262: [sbi] DEBUG: RECEIVED: 680 (../lib/sbi/nghttp2-server.c:773)

07/09 21:21:06.262: [sbi] DEBUG: {

    "nfInstanceId": "0b2e7414-ffcd-41ec-9c59-a56e64429106",

    "nfType":   "BSF",

    "nfStatus": "REGISTERED",

    "ipv4Addresses":    ["127.0.0.15"],

    "allowedNfTypes":   ["PCF"],

    "priority": 0,

    "capacity": 100,

    "load": 0,

    "nfServices":   [{

            "serviceInstanceId":    "0b2e7aa4-ffcd-41ec-9c59-a56e64429106",

            "serviceName":  "nbsf-management",

            "versions": [{

                    "apiVersionInUri":  "v1",

                    "apiFullVersion":   "1.0.0"

                }],

            "scheme":   "http",

            "nfServiceStatus":  "REGISTERED",

            "ipEndPoints":  [{

                    "ipv4Address":  "127.0.0.15",

                    "port": 7777

                }],

            "allowedNfTypes":   ["PCF"],

            "priority": 0,

            "capacity": 100,

            "load": 0

        }],

    "nfProfileChangesSupportInd":   true

}

 

201 Created

 

07/09 21:21:06.262: [sbi] DEBUG: STATUS [201] (../lib/sbi/nghttp2-server.c:347)

07/09 21:21:06.262: [sbi] DEBUG: SENDING...: 157 (../lib/sbi/nghttp2-server.c:355)

07/09 21:21:06.262: [sbi] DEBUG: {

    "nfInstanceId": "0b2e7414-ffcd-41ec-9c59-a56e64429106",

    "nfType":   "BSF",

    "nfStatus": "REGISTERED",

    "heartBeatTimer":   10,

    "nfProfileChangesInd":  true

}

 

 

 

Structured Data Types

 

There are various structured data type being used in communication between NF and NRF. These data types are specified in 39.510-6.1.6.2. This section is mostly direct copies of those tables that I am interested. If you don't find any of those structures, refer to 39.510

 

NFProfile

 

< 29.510 - 29.510-Table 6.1.6.2.2-1: Definition of type NFProfile >

 

 

 

Reference :