Skip to content

Give users possibility to configure SMF info themselves

Stefan Spettel requested to merge unified_slice_config into develop

Changes

  • Use auto-generated models for YAML config

    • Snssai
    • SmfInfo
  • Move some common and NRF models to common-src (see oai-cn5g-common-src!21 (merged))

  • Implement validation of common-src Snssai

  • Use this validation for the YAML values -> Big advantage: We have the same validation for user-provided YAML values, as well as for API values

  • Most changes are just namespace things due to the moving

Note to reviewer

@tien-thinh.nguyen As you see, most changes are just namespace changes, the main thing happens in smf_app and SMF config related classses.

Fixes

Fixes issue #3 (closed). I think this is really important, because now you can use use_local_subscription_info: no on SMF and also enable_smf_selection:yes on AMF

@defosseu This also means it simplifies the static IP address tutorial.

Configuration changes

  • Add new SMF config type smf_info which uses standardized 3GPP TS 29.510 SmfInfo type.
  • Use YAML anchors to not re-define SNSSAIs

Refactoring effort

  • When we merge this MR, I'll create a common-src MR with all the common models and delete them on all the NF repositories.
  • @tien-thinh.nguyen Also, our SD value situation is somewhat complex and not standard-compliant (see Issue #14). This refactoring is the first step towards a greater refactoring where we use one NFProfile for all NFs and there we can easily implement standard-compliant SD value

Configuration API GET:

@tien-thinh.nguyen You can see the SMF config API kept all the values, but we have a new one, which follows the SmfInfo, it should be really easy to use this for the configuration backend, as they can just use OpenApi generated models for this. Also, they can now control the slicing configuration per NF much better.

{
    "http_version": "1",
    "local_subscription_infos": [
        {
            "dnn": "oai",
            "qos_profile": {
                "5qi": 9,
                "arp_preempt_capability": "NOT_PREEMPT",
                "arp_preempt_vulnerability": "NOT_PREEMPTABLE",
                "arp_priority": 1,
                "priority": 1,
                "session_ambr_dl": "400Mbps",
                "session_ambr_ul": "200Mbps"
            },
            "snssai": {
                "sd": "FFFFFF",
                "sst": 1
            },
            "ssc_mode": 1
        },
        {
            "dnn": "oai.ipv4",
            "qos_profile": {
                "5qi": 9,
                "arp_preempt_capability": "NOT_PREEMPT",
                "arp_preempt_vulnerability": "NOT_PREEMPTABLE",
                "arp_priority": 1,
                "priority": 1,
                "session_ambr_dl": "200Mbps",
                "session_ambr_ul": "100Mbps"
            },
            "snssai": {
                "sd": "1",
                "sst": 1
            },
            "ssc_mode": 1
        },
        {
            "dnn": "default",
            "qos_profile": {
                "5qi": 9,
                "arp_preempt_capability": "NOT_PREEMPT",
                "arp_preempt_vulnerability": "NOT_PREEMPTABLE",
                "arp_priority": 1,
                "priority": 1,
                "session_ambr_dl": "100Mbps",
                "session_ambr_ul": "50Mbps"
            },
            "snssai": {
                "sd": "7B",
                "sst": 222
            },
            "ssc_mode": 1
        }
    ],
    "log_level": "debug",
    "register_nf": true,
    "sbi": {
        "api_version": "v1",
        "interface_name": "eth0",
        "url": "http://oai-smf:8080"
    },
    "smf_info": {
        "sNssaiSmfInfoList": [
            {
                "dnnSmfInfoList": [
                    {
                        "dnn": "oai"
                    }
                ],
                "sNssai": {
                    "sd": "FFFFFF",
                    "sst": 1
                }
            },
            {
                "dnnSmfInfoList": [
                    {
                        "dnn": "oai.ipv4"
                    }
                ],
                "sNssai": {
                    "sd": "1",
                    "sst": 1
                }
            },
            {
                "dnnSmfInfoList": [
                    {
                        "dnn": "default"
                    }
                ],
                "sNssai": {
                    "sd": "7B",
                    "sst": 222
                }
            }
        ]
    },
    "supported_features": {
        "use_external_ausf": false,
        "use_external_nssf": false,
        "use_external_udm": false,
        "use_local_pcc_rules": true,
        "use_local_subscription_info": true
    },
    "ue_dns": {
        "primary_dns_ipv4": "172.21.3.100",
        "primary_dns_ipv6": "2001:4860:4860::8888",
        "secondary_dns_ipv4": "8.8.8.8",
        "secondary_dns_ipv6": "2001:4860:4860::8888"
    },
    "upfs": [
        {
            "config": {
                "enable_dl_pdr_in_session_establishment": false,
                "enable_usage_reporting": false,
                "local_n3_ipv4": "",
                "nwi": {
                    "nwi_n3": "access.oai.org",
                    "nwi_n6": "core.oai.org"
                }
            },
            "host": "oai-spgwu",
            "port": 8805
        }
    ]
}
Edited by Stefan Spettel

Merge request reports