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
- Example : AMF Registration
- Example : AUSF Registration
- Example : UDM Registration
- Example : UDR Registration
- Example : PCF Registration
- Example : SMF Registration
- Example : NSSF Registration
- Example : BSF Registration
- Structured Data Types
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 >

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 :