Free5GC Blueprint creation

In this page there is described how to deploy a Free5GC blueprint.

Requirements

⚠️ Check the requirements carefully

  • Having a K8s cluster that is onboarded on the NFVCL. Check Onboarding external K8S Cluster for more info on adding an external cluster or Kubernetes Blueprint to deploy a new cluster automatically onboarded by NFVCL. The cluster must be connected to a mgt and data network.

  • Having a gNB running, it can be deployed through UERANSIM blueprint. See UERANSIM Blueprint for more information. Use the same mgt and data network of the previous point.

  • Add collection ‘pnf’ in the NFVCL mongo database with the following content

    {
        "_id": {
            "$oid": "6384cfd95f2308370ca82f0d"
        },
        "type": "ueransim_nb",
        "vnfd": "ueransim_nb_XXX_pnfd",
        "name": "Configurator_UeRanSimNB",
        "module": "blueprints.blue_5g_base.configurators.ueransim_nb_configurator"
    }
    
  • Use kubectl to ensure that Metallb (or other load balancer) have sufficient IPs in the address pool to support Free5GC chart deployment (one IP for each pod deployed from the blueprint).

    kubectl get ipaddresspool -A
    
  • Having onboarded the helm chart on OSM with the following POST on http://NFVCL_IP:5002/helm_repo/

    {
    "name": "free5gc",
    "description": "free5gc 3.2.0",
    "version": "3.2.0"
    }
    

Deployment

POST /nfvcl/v1/api/blue/Free5GC_K8s

{
  "type": "Free5GC_K8s",
  "config": {
    "network_endpoints": {
      "mgt": "dmz-internal",
      "wan": "dmz-internal",
      "data_nets": [
        {
          "net_name": "radio_PQOUQB", # Replace with the name of the network created by the UERANSIM blueprint
          "dnn": "radio_PQOUQB", # Replace with the name of the network created by the UERANSIM blueprint
          "dns": "8.8.8.8", 
          "pools": [{"cidr": "10.168.0.0/16"}],
          "uplinkAmbr": "100 Mbps",
          "downlinkAmbr": "100 Mbps",
          "default5qi": "9"
        }
      ]
    },
    "plmn": "00101",
    "sliceProfiles": [
      {
        "sliceId": "000001",
        "sliceType": "EMBB",
        "dnnList": ["radio_PQOUQB"], # Replace with the name of the network created by the UERANSIM blueprint
        "profileParams": {
          "isolationLevel": "ISOLATION",
          "sliceAmbr": "1000 Mbps",
          "ueAmbr": "50 Mbps",
          "maximumNumberUE": 10,
          "pduSessions": [
            {
              "pduSessionId": "1",
              "pduSessionAmbr": "20 Mbps",
              "flows": [
                {
                  "flowId": "1",
                  "ipAddrFilter": "8.8.4.4",
                  "qi": "9",
                  "gfbr": "10 Mbps"
                }
              ]
            }
          ]
        },
        "locationConstraints": [
          {
            "geographicalAreaId": "1",
            "tai": "00101000001"
          }
        ],
        "enabledUEList": [
          {
            "ICCID": "*"
          }
        ]
      }
    ],
    "subscribers": [
      {
        "imsi": "001014000000002",
        "k": "814BCB2AEBDA557AEEF021BB21BEFE25",
        "opc": "9B5DA0D4EC1E2D091A6B47E3B91D2496",
        "authenticationMethod": "5G_AKA",
        "authenticationManagementField": "9001",
        "snssai": [
          {
            "sliceId": "000001",
            "sliceType": "EMBB",
            "pduSessionIds": [
              "1"
            ],
            "default_slice": true
          }
        ]
      }
    ]
  },
  "areas": [
    {
      "id": 0, # Deployment area ID
      "nci": "0x00000005",
      "idLength": 32,
      "core": true,
      "slices": [ 
          {
              "sliceType": "EMBB",
              "sliceId": "000001"
          }
        ]
    },
    {
      "id": 1, # The area of the gNB (Need to be the same of the deployed UERANSIM blueprint)
      "nci": "0x00000003",
      "idLength": 32,
      "core": false,
      "slices": [ 
          {
              "sliceType": "EMBB",
              "sliceId": "000001"
          }
        ]
    }
  ]
}