You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 11
Next »
Assumptions
- Below is the list of solvers used in OOF and its usage. The Route Optimiser package will be used for the MDONS use case as well.
- Policy is not going to be involved to list the constraints for now.
- Once config policies are defined for MDONS use case , OOF wil fetch these policies to get certain other constraints and apply them while running the algorithm.
OPTFRA-753
-
Getting issue details...
STATUS
Existing Solvers and Usage
Solver | Usage |
---|
license optimizer | VNF license optimization |
pci optimizer | Pci optimization |
placement optimizer | VNF placement optimization |
slice optimiser | Slice selection and instantiation optimisation |
route optimizer | Perform the route calculations and return the vpn-bindings for CCVPN use case |
Sequence Diagram
Request from SO or SDNC
API: POST /api/oof/mdons/route/v1
BODY:
{
"requestInfo":{
"transactionId":"xxx-xxx-xxxx",
"requestId":"yyy-yyy-yyyy",
"callbackUrl":"",
"sourceId":"SDNC",
"requestType":"create",
"numSolutions":1,
"optimizers":[
"route"
],
"timeout":600
},
"routeInfo":{
"routeRequest":{
"srcDetails":{
"interfaceId":"interface-id-1",
"nodeId":"node-1",
"controllerId":"Virtuora-TAPI1"
},
"dstDetails":{
"interfaceId":"interface-id-2",
"nodeId":"node-2",
"controllerId":"Virtuora-TAPI2"
},
"serviceRate":"ODU2"
}
}
}
Note: "Callbackurl" field will be empty . Has been added to just follow the request format standard in OOF. When SDNC sends this request the field will be empty.
Response To SDNC
Response Example
{
"transactionId":"123456",
"requestId":"789101",
"requestStatus":"completed",
"statusMessage":"success",
"solution":{
"startTime":"2016-10-01T00:30+01:00",
"finishTime":"2016-10-01T00:40+01.00",
"routeInfo":[
{
"serviceRoute":[
{
"srcInterfaceId":"id20",
"destInterfaceId":"id8"
},
{
"srcInterfaceId":"id9",
"destInterfaceId":"id10"
},
{
"srcInterfaceId":"id11",
"destInterfaceId":"id21"
}
],
"linkList":[
"IDL-6",
"IDL-7"
]
}
]
}
}
State Diagram
OOF Impacts
- A new api should be defined in the osdfapp.py class in the optf-osdf repository for the MDONS route selection.
- Under the Route Optimizer section a new class has to be added to handle the MDONS route selection.
- The standard minizinc template which gives the shortest path in a graph data structure will be used for this use case, same as the CCVPN use case.
Algorithm Details
- Identify if the A and Z are from the same domain controller, if yes, linkName is set to null.
- If not from the same domain, retrieve all the inter domain links across both the controllers from AAI.
- The links will have information such as admin-state and rate. (Note: For now we are considering only these two fields to select the appropriate inter-domain-link).
- Based on the bandwidth required and available bandwidth and the status of the links (of the end points, NNIs), the appropriate link is chosen.
- The link name along with the names of NNI 1 and NN2 are sent to SDNC and SDNC/DG send the details request for service-creation to the domain controller(s).
Example Inter Domain Paths
Non Multiplexing Between the Domains
Multiplexing Between the Domains
TBD
AAI API Dependency
Query to retrieve the interdomain links for a given Controller:
API: PUT /aai/v19/query?format=resource
BODY:
{
"start" : ["external-system"],
"query" : "query/getInterDomainLink?linktype=inter-domain&controller=Virtuora-TAPI1"
}
RESPONSE EXAMPLE:
{
"results": [{
"logical-link": {
"link-name": "IDLLink1",
"in-maint": false,
"link-type": "inter-domain",
"resource-version": "1588952379221",
"operational-status": "available",
"relationship-list": {
"relationship": [{
"related-to": "p-interface",
"relationship-label": "tosca.relationships.network.LinksTo",
"related-link": "/aai/v16/network/pnfs/pnf/f17ae566-6cb9-3907-9bb1-00d04ca5e9d9/p-interfaces/p-interface/641bb3d1-0817-3783-aba2-aa2129dfe1b1",
"relationship-data": [{
"relationship-key": "pnf.pnf-name",
"relationship-value": "f17ae566-6cb9-3907-9bb1-00d04ca5e9d9"
}, {
"relationship-key": "p-interface.interface-name",
"relationship-value": "641bb3d1-0817-3783-aba2-aa2129dfe1b1"
}],
"related-to-property": [{
"property-key": "p-interface.prov-status"
}]
}, {
"related-to": "p-interface",
"relationship-label": "tosca.relationships.network.LinksTo",
"related-link": "/aai/v16/network/pnfs/pnf/36bfbd31-e715-3312-9dd1-5a9e46d4b4d5/p-interfaces/p-interface/3cfaf6b4-7923-3258-bb72-e2a62c40fe5e",
"relationship-data": [{
"relationship-key": "pnf.pnf-name",
"relationship-value": "36bfbd31-e715-3312-9dd1-5a9e46d4b4d5"
}, {
"relationship-key": "p-interface.interface-name",
"relationship-value": "3cfaf6b4-7923-3258-bb72-e2a62c40fe5e"
}],
"related-to-property": [{
"property-key": "p-interface.prov-status"
}]
}]
}
}
}]
}
Query to find the esr controller given a p-interface id:
API: /aai/v19/query?format=resource
BODY:
{
"start" : ["external-system"],
"query" : "query/getDomainController?portid=49b3fb2a-6868-3a23-a833-79a3aa1dd24f"
}
RESPONSE EXAMPLE:
{
"results": [{
"esr-thirdparty-sdnc": {
"thirdparty-sdnc-id": "Virtuora-TAPI2",
"location": "Core",
"product-name": "VirtuoraNetworkController",
"resource-version": "1588951277460",
"esr-system-info-list": {
"esr-system-info": [{
"esr-system-info-id": "Virtuora-TAPI2",
"system-name": "Virtuora-TAPI2",
"type": "TAPI",
"vendor": "Fujitsu",
"version": "V2",
"service-url": "https://167.254.204.66:9443",
"user-name": "admin",
"password": "admin",
"system-type": "Controller",
"protocol": "RESTAPI",
"ssl-cacert": "example-ssl-cacert-val-20589",
"ssl-insecure": true,
"ip-address": "167.254.204.66",
"port": "9443",
"cloud-domain": "example-cloud-domain-val-76077",
"default-tenant": "example-default-tenant-val-71148",
"passive": true,
"remote-path": "example-remotepath-val-5833",
"system-status": "example-system-status-val-23435",
"resource-version": "1588951277460"
}]
},
"relationship-list": {
"relationship": [{
"related-to": "network-resource",
"relationship-label": "org.onap.relationships.inventory.BelongsTo",
"related-link": "/aai/v16/network/network-resources/network-resource/Virtuora-TAPI2-TAPI-754a91dc-dcd1-3530-8e95-a4880c298a1f",
"relationship-data": [{
"relationship-key": "network-resource.network-id",
"relationship-value": "Virtuora-TAPI2-TAPI-754a91dc-dcd1-3530-8e95-a4880c298a1f"
}],
"related-to-property": [{
"property-key": "network-resource.network-id",
"property-value": "Virtuora-TAPI2-TAPI-754a91dc-dcd1-3530-8e95-a4880c298a1f"
}]
}]
}
}
}]
}
API to retrieve all the inter-domain links:
API: GET /aai/v19/logical-links?link-type=inter-domain
RESPONSE EXAMPLE:
{
"logical-link": [{
"link-name": "IDLLink1",
"in-maint": false,
"link-type": "inter-domain",
"resource-version": "1588952379221",
"operational-status": "available",
"relationship-list": {
"relationship": [{
"related-to": "p-interface",
"relationship-label": "tosca.relationships.network.LinksTo",
"related-link": "/aai/v16/network/pnfs/pnf/f17ae566-6cb9-3907-9bb1-00d04ca5e9d9/p-interfaces/p-interface/641bb3d1-0817-3783-aba2-aa2129dfe1b1",
"relationship-data": [{
"relationship-key": "pnf.pnf-name",
"relationship-value": "f17ae566-6cb9-3907-9bb1-00d04ca5e9d9"
}, {
"relationship-key": "p-interface.interface-name",
"relationship-value": "641bb3d1-0817-3783-aba2-aa2129dfe1b1"
}],
"related-to-property": [{
"property-key": "p-interface.prov-status"
}]
}, {
"related-to": "p-interface",
"relationship-label": "tosca.relationships.network.LinksTo",
"related-link": "/aai/v16/network/pnfs/pnf/36bfbd31-e715-3312-9dd1-5a9e46d4b4d5/p-interfaces/p-interface/3cfaf6b4-7923-3258-bb72-e2a62c40fe5e",
"relationship-data": [{
"relationship-key": "pnf.pnf-name",
"relationship-value": "36bfbd31-e715-3312-9dd1-5a9e46d4b4d5"
}, {
"relationship-key": "p-interface.interface-name",
"relationship-value": "3cfaf6b4-7923-3258-bb72-e2a62c40fe5e"
}],
"related-to-property": [{
"property-key": "p-interface.prov-status"
}]
}]
}
}]
}