This page contains two parts of the interface. NSMF call NSSMF Adapter through internal APIs and NSSMF Adapter call NSSMF through standard APIs.
INFO:
EsrInfo has to be mandatorily filled for every rest request(filled by NSMF). It contains two params. Vendor and network type.
The allowed network type values are: core, access, transport. Network type decides whether you are sending the request for an/cn/tn. Vendor decides which NSSMF the request is sent to.
ESR INFO: Network Type and Vendor, must match with the ESRegistry
(Note: Above block diagram needs update)
NSMF call NSSMF Adapter APIs
Allocate NSSI: [AN/TN/CN]
Method | URL |
---|
POST | {adapter-url}/api/rest/provMns/v1/NSS/SliceProfiles |
{
"allocateCnNssi": {
"nsstId": "NSST-C-001-HDBNJ-NSSMF-01-A-ZX",
"nssiId": "NSST-C-001-HDBNJ-NSSMF-01-A-ZX",
"nssiName": "eMBB-001",
"sliceProfile": {
"sNSSAIList": [
"001-100001"
],
"sliceProfileId": "ab9af40f13f721b5f13539d87484098",
"pLMNIdList": [
"460-00",
"460-01"
],
"perfReq": {
"perfReqEmbbList ": [
{
"activityFactor": 50
}
]
},
"maxNumberofUEs": 200,
"coverageAreaTAList": [
"1",
"2",
"3",
"4"
],
"latency": 2,
"resourceSharingLevel": "non-shared"
},
"endPoint": {
"IpAdress": "",
"LogicalLinkId": "",
"nextHopInfo": ""
},
"nsiInfo": {
"nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX",
"nsiName": "eMBB-001"
},
"scriptName": "CN1",
"extension": {
"XXX": "XXX"
}
},
"esrInfo": {
"vendor": "huawei",
"networkType": "core"
},
"serviceInfo": {
"serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51",
"serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b",
"globalSubscriberId": "5GCustomer",
"nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX",
"nssiId": "NSST-C-001-HDBNJ-NSSMF-01-A-ZX",
"subscriptionServiceType": "5G"
}
}
Info:For the value of nsstId, if NSST doesn't contain artifact, the value is NSST UUID, otherwise it is the ID in the artifact file.
Attribute | Optional | Description |
---|
nssiId | Y | When reuse existing NSSI. |
nsstId | Y | NSST artifact ID |
{
"allocateTnNssi": {
"networkSliceInfos": [
{
"snssai": "123",
"customer": "company_x",
"serviceType": "IoT"
}
],
"transportSliceNetworks": [
{
"connectionLinks": [
{
"transportEndpointA": "tranportEp_ID_XXX",
"transportEndpointB": "tranportEp_ID_YYY"
},
{
"transportEndpointA": "tranportEp_ID_AAA",
"transportEndpointB": "tranportEp_ID_BBB"
}
]
},
{
"connectionLinks": [
{
"transportEndpointA": "tranportEp_ID_CCC",
"transportEndpointB": "tranportEp_ID_DDD"
},
{
"transportEndpointA": "tranportEp_ID_EEE",
"transportEndpointB": "tranportEp_ID_FFF"
}
]
}
]
},
"esrInfo": {
"vendor": "huawei",
"networkType": "transport"
},
"serviceInfo": {
"serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51",
"serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b",
"globalSubscriberId": "5GCustomer",
"subscriptionServiceType": "5G",
"nssiId": "NSST-C-001-HDBNJ-NSSMF-01-A-ZX"
}
}
Response status:202
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
Activate NSSI: [AN/TN/CN]
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/{snssai}/activation |
REQ example:
{
"actDeActNssi": {
"nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
},
"esrInfo": {
"vendor": "huawei",
"networkType": "core/access/transport"
},
"serviceInfo": {
"serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51",
"serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b",
"globalSubscriberId": "5GCustomer",
"subscriptionServiceType": "5G",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
}
Response status:202
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
DeActivate NSSI: [AN/TN/CN]
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/{snssai}/deactivation |
REQ example:
{
"actDeActNssi": {
"nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
},
"esrInfo": {
"vendor": "huawei",
"networkType": "core/access/transport"
},
"serviceInfo": {
"serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51",
"serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b",
"globalSubscriberId": "5GCustomer",
"subscriptionServiceType": "5G",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
}
Response status:202
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
Deallocate NSSI: [AN/TN/CN]
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/nssi/{nssiId} |
REQ example:
{
"deAllocateNssi": {
"snssaiList": [
"001-100001"
],
"nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX ",
"terminateNssiOption": 0,
"scriptName": "CN1",
"extension": {
"XXX": "XXX"
}
},
"esrInfo": {
"vendor": "huawei",
"networkType": "core/access/transport"
},
"serviceInfo": {
"serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51",
"serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b",
"globalSubscriberId": "5GCustomer",
"subscriptionServiceType": "5G",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
}
Response status:202
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
Query JOB Status
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/jobs/{jobId} |
{
"responseId": "3",
"esrInfo": {
"vendor": "huawei",
"networkType": "core/access/transport"
},
"serviceInfo": {
"nssiId": "NSSI-M-001-HDBNJ-NSSMF-01-A-ZX",
"nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX",
"nssiName": "eMBB-001",
"sST":"embb",
"PLMNIdList":"39-00",
"globalSubscriberId": "5GCustomer",
"subscriptionServiceType": "5G"
"serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51",
"serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b"
}
}
Response Status:200
{
"responseDescriptor": {
"status": "processing",
"progress": 20,
"statusDescription": "Initiating VNF Instance",
"responseId": "1",
"nssiId": ""
}
}
Attribute | Required |
---|
responseId | N |
Sub-net Capability query
Request can contain the sub-net type. 1 request can be used to fetch capabilities of more than 1 subnet managed by the same NSSMF - for e.g., in case of Transport, a single request can fetch the capabilities of FH, MH and BH subnets managed by the same TN NSSMF.
Method | URL |
---|
POST | {adapter-url}/api/rest/provMns/v1/NSS/subnetCapabilityQuery |
REQ example(TN)
{
"subnetCapabilityQuery": {
"subnetTypes": ["TN_FH"]
},
"esrInfo": {
"vendor": "huawei/ONAP_internal",
"networkType": "tn"
}
}
Response example:(TN)
{
"TN_FH":{
"latency": "",
"maxThroughput": ""
}
}
Response can be a json blob (or parameter list) containing a minimum set of relevant attributes such as the below (based on 3GPP TS 28.541):
Attribute | AN | CN | TN |
Latency | Yes | Yes | Yes |
maxNumberofUEs | Yes |
|
|
maxNumberofConns |
| Yes |
|
Max Throughput | Yes | Yes | Yes |
Terminal density | Yes |
|
|
Query NSSI selection capability
Method | URL |
---|
POST | {adapter-url}/api/rest/provMns/v1/NSS/NSSISelectionCapability |
{
"esrInfo": {
"vendor": "huawei/ONAP_internal",
"networkType": "transport"
}
}
Response example:Status:200
{
"selection": "NSMF/NSSMF"
}
NSSMF Adapter call NSSMF APIs
Implementation difference
For Jobstatus api, the internal NSSMF needs to update db table resource_operation_status, the external NSSMF needs to provide this api.
External NSSMF
Allocate NSSI (create NSSI with service)
Method | Domain | URL |
---|
POST | CN | /api/rest/provMns/{apiVersion}/NSS/SliceProfiles |
POST | AN | /ObjectManagement/NSS/SliceProfiles |
{
"nsstId": "NSST-C-01V-HBBJ-NSSMF-1-A-ZX",
"nssiName": "CN_eMBB_02",
"sliceProfile": {
"sNSSAIList": [
"001-111113"
],
"sliceProfileId": "CN-001-111113",
"pLMNIdList": [
"460-11"
],
"perfReq": {
"perfReqEmbbList": [
{
"activityFactor": 50,
"expDataRateDL": 1000,
"expDataRateUL": 1000,
"areaTrafficCapDL": 1000,
"areaTrafficCapUL": 1000
}
]
},
"maxNumberofUEs": 200,
"maxNumberofPDUSession": 200,
"totalDataVolume": 100,
"upfDeployLocation": "customer",
"coverageAreaTAList": [
"07D300"
],
"latency": 30,
"ueMobilityLevel": "stationary",
"resourceSharingLevel": "non-shared"
},
"nsiInfo": {
"nsiId": "NSI-C-002-HBBJ-NSMF-1-A-ZX",
"nsiName": "eMBB_02"
},
"scriptName": "eMBB_02_base_111113"
}
Response Status:202
{
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX",
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
DeallocateNSSI (deallocate NSSI with service)
Method | Domain | URL |
---|
DELETE | CN | /api/rest/provMns/{apiVersion}/NSS/SliceProfiles/{sliceProfileId} |
DELETE | AN | /ObjectManagement/NSS/SliceProfiles/{SliceProfileId} |
{
"nsiId" : "4115d3c8-dd59-45d6-b09d-e756dee9b518",
"nssiId" : "1a636c4d-5e76-427e-bfd6-241a947224b0",
"snssaiList" : [ "01-6A106175" ],
"terminateNssiOption": 0,
"scriptName": "CN1"
}
Response status:202
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
ActivateNSSI(activate NSSI)
Method | URL |
---|
PUT | /api/rest/provMns/{apiVersion}/NSS/{snssai}/activation |
{
"nsiId" : "ed76c0a0-582d-4885-b75e-b544924addf8",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
Response status:202
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
DeactivateNSSI(slice proflice(S-NSSAI) deactivate)
Method | URL |
---|
PUT | /api/rest/provMns/{apiVersion}/NSS/{snssai}/deactivation |
{
"nsiId" : "ed76c0a0-582d-4885-b75e-b544924addf8",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
Response status:202
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
}
GetJobStatus (query the operation progress)
Method | URL |
---|
GET | /api/rest/provMns/{apiVersion}/NSS/jobs/{jobId}?responseId={responseId} |
Info: responseId is optional, not necessary.
Response status:200
{
"responseDescriptor": {
"status": "processing",
"progress": 40,
"statusDescription": "Preparing for Instantiating NSSI",
"responseId": "2",
"responseHistoryList": [
{
"status": "processing",
"progress": 20,
"statusDescription": "Initiating VNF Instance",
"responseId": "1"
}
]
}
}
Internal NSSMF
NSSMF
2 Comments
Byung-Woo Jun
Zhang Min , the diagram indicated that the APIs between NSSMF Adapter and external NSSMF are "standard" APIs. Which standard APIs for Core do you refer? Could you provide us the API details? Is this based on 3gpp? Many thanks!!
Chuyi Guo
Hi Byung, we have implemented allocate NSSI, deallocate NSSI based on 3GPP APIs, and also have activeNSSI, and deactive NSSI now. In future releases, we also consider to do modify NSSI.