|
|||||||||||||||||
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 NRFEach 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
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 }
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
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 }
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
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
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
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 }
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
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 }
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
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 }
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
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 }
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
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 }
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 TypesThere 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 :
|
|||||||||||||||||