Go to primary content
Oracle® Communications Network Slice Selection Function (NSSF) Cloud Native Installation Guide
Release 1.0
F16982-02
Go To Table Of Contents
Contents

Previous
Previous
Next
Next

5 NSSF Installation

This section includes information about NSSF deployment.

Following are the Parameters and Definitions used during NSSF deployment.

Table 5-1 Parameters and Definitions

Parameters Definitions
<helm chart> It is the name of the chart that is of the form <helm repo>/ocnssf
<OCNSSF version> It is the software version (helm chart version) of the NSSF. This is optional, if omitted, the default version is the latest version available in helm repository.
<release> It is a name provided by the user to identify the helm deployment
<k8s namespace> It is a name provided by the user to identify the kubernetes namespace of the NSSF. All the NSSF micro services are deployed in this kubernetes namespace.
<mysql host> It is the hostname of the mysql service and can be provided as, <release>-mysql.<k8s namespace>

NSSF Deployment on Kubernetes

Note:

Create Database User/Group

The NSSF uses a MySQL database to store the configuration and run time data.

The NSSF deployment using MySQL NDB cluster requires the database administrator to create user in MYSQL DB and to provide the user with necessary permissions to access the tables in the NDB cluster.

  1. Login to the server where the ssh keys are stored and SQL nodes are accessible.
  2. Connect to the SQL nodes.
  3. Login to the Database as a root user.
  4. Create a user and assign it to a group having necessary permission to access the tables on all the SQL nodes:
    CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';
    DROP DATABASE if exists nssfdb;
    CREATE DATABASE nssfdb CHARACTER SET utf8;
    GRANT SELECT, INSERT, CREATE, ALTER, DROP, LOCK TABLES, CREATE TEMPORARY
    TABLES, DELETE, UPDATE,
    EXECUTE ON nssfdb.* TO '<username>'@'%';
    USE nssfdb;
    

    Note:

    The <username> and <password> is created by the Database Administrator.
  5. Create NSSF tables on one of the SQL Node:
    create table nsi_profile (
      id integer not null AUTO_INCREMENT,
      name varchar(255) unique,
      nrf_uri varchar(255) not null,
      nsi_id varchar(255) unique,
      primary key (id)
    ) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
    
    create table nsi_amfset_map (
      id integer  not null AUTO_INCREMENT,
      nsi_profile_id integer not null,
      target_amf_region_id varchar(255) not null,
      target_amf_set_id varchar(255) not null,
      target_amf_set_fqdn varchar(255),
      salience integer not null,
      primary key (id),
      CONSTRAINT amf_validate UNIQUE (nsi_profile_id, target_amf_region_id, target_amf_set_id),
      foreign key (nsi_profile_id) references nsi_profile(id)
    ) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
    
    create table nss_rule (
      id integer not null AUTO_INCREMENT,
      name varchar(255) unique not null,
      amf_id varchar(255),
      mcc varchar(50),
      mnc varchar(50),
      tac varchar(50),
      sst integer not null,
      sd varchar(50) not null,
      access_type varchar(50) not null,
      grant_field varchar(50) not null,
      salience integer not null,
      primary key (id),
      CONSTRAINT composite_key UNIQUE (amf_id, mcc, mnc, tac, sst, sd, access_type)
    ) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
    
    create table nss_rule_profile_map (
      id integer not null AUTO_INCREMENT,
      rule_id integer not null,
      nsi_profile_id integer not null,
      salience integer not null,
      primary key (id),
      CONSTRAINT composite_key UNIQUE (rule_id, nsi_profile_id),
      foreign key (nsi_profile_id) references nsi_profile(id),
      foreign key (rule_id) references nss_rule(id)
    ) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
    
    create table amf_resolution (
      id integer not null AUTO_INCREMENT,
      region_id varchar(255) not null,
      set_id varchar(255) not null,
      fqdn varchar(255),
      instance_id varchar(255) not null,
      primary key (id),
      CONSTRAINT composite_key UNIQUE (region_id, set_id, instance_id)
    ) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
    
    create table configured_nssai (
      id integer not null AUTO_INCREMENT,
      amf_id varchar(255),
      mcc varchar(50),
      mnc varchar(50),
      tac varchar(50),
      salience integer not null,
      primary key (id),
      CONSTRAINT composite_key UNIQUE (amf_id, mcc, mnc, tac)
    ) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
    
    create table configured_nssai_map (
      id integer not null AUTO_INCREMENT,
      nssai_id integer not null,
      sst integer not null,
      sd varchar(50) not null,
      primary key (id),
      foreign key (nssai_id) references configured_nssai(id)
    ) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
  6. Exit from database and logout from SQL node.

Table 5-2 NSSF Deployment

Step # Procedure Description

1

Create customized ocnssf-custom-values-1.0.0.yaml file Create the customized ocnssf-custom-values-1.0.0.yaml with the required input parameters.

To configure the ocnssf-custom-values-1.0.0.yaml, see section NSSF Configuration

or,

The ocnssf-custom-values-1.0.0.yaml template can be downloaded from OHC.

Download the package ocnssf-custom-configTemplates-1.0.0.0.0.zip and Unzip to get ocnssf-custom-values-1.0.0.yaml file.

2

Deploy OCNSSF Execute the following command:

helm install ocnssf/ --version <chart-version> --name <helm-release> --namespace <k8s namespace> -f <ocnssf_customized_values.yaml>

For example: helm install ocnssf/ --version 1.0.0 --name ocnssf --namespace ocnssf -f nssf-values-1.0.0.yaml

3

Check status of the deployment helm status <helm-release>

For example: helm status ocnssf

4

Check status of the services Execute the following command:

kubectl get services -n <namespace>

For example:

kubectl get services -n ocnssf

Note: If metallb is used, EXTERNAL-IP is assigned to ocnssf-nsgateway.

5

Check status of the pods Execute the following command:

kubectl get pods -n <ocnssf_namespace>

Status column of all the pods should be 'Running'

Ready column of all the pods should be n/n, where n is number of containers in the pod.

For example:

kubectl get pods -n ocnssf

NAME                                  READY   STATUS  RESTARTS  AGE

ocnssf-nsconfig-6c498d9f99-82xnm       1/1    Running   0       59m
ocnssf-nsgateway-5479cc694d-fv5zr      2/2    Running   0       59m
ocnssf-nsgateway-5479cc694d-kvplh      2/2    Running   0       59m
ocnssf-nspolicy-6df8dff468-8tfn7       1/1    Running   0       59m
ocnssf-nspolicy-6df8dff468-phwz8       1/1    Running   0       59m
ocnssf-nsregistration-67c54fd586-vhcqp 1/1    Running   0       59m
ocnssf-nsselection-6756447685-6b9ms    1/1    Running   0       59m
ocnssf-nsselection-6756447685-vvxbs    1/1    Running   0       59m