...
- Below is the list of solvers used in OOF and its usage. The Route Optimiser Optimizer 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 will fetch these policies to get certain other constraints and apply them while running the algorithm.
...
- If two links between two controllers have the same specification then minizinc automatically chooses one. The implementation for Guilin release is based out of this logic.
Existing Solvers and Usage
Solver | Usage |
---|---|
License Optimizer | VNF license optimization |
PCI Optimizer | Pci optimization |
Placement Optimizer | VNF placement optimization |
Slice Optimizer | Slice selection and instantiation optimization |
Route Optimizer | Perform the route calculations and return the vpn-bindings for CCVPN use case |
Jira Legacy server System Jira columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 4733707d-2057-3a0f-ae5e-4fd8aff50176 key OPTFRA-
server | System Jira |
---|---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
serverId | 4733707d-2057-3a0f-ae5e-4fd8aff50176 |
key | OPTFRA- |
...
Existing Solvers and Usage
...
Perform the route calculations and return the vpn-bindings
for CCVPN use case
753
753 |
Jira Legacy server System Jira columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 4733707d-2057-3a0f-ae5e-4fd8aff50176 key OPTFRA-820
Sequence Diagram
Request from SO or SDNC
Code Block | ||||
---|---|---|---|---|
| ||||
API: POST /api/oof/mdons/route/v1 BODY: { "requestInfo":{ "transactionId":"xxx-xxx-xxxxxxx", "requestId":"yyy-yyy-yyyyyyy", "callbackUrl":"", "sourceIdcallbackHeader": "SDNC", "requestTypesourceId":"SDNC", "requestType":"create", "numSolutions":1, "optimizers":[ "route" ], "timeout":600 }, "routeInfo":{ "routeRequest":{ "srcDetails":{ "interfaceId":"interface-id-1int19", "nodeId":"node-1pnf1", "controllerId":"Virtuora-TAPI1Controller1" }, "dstDetails":{ "interfaceId":"interface-id-2int20", "nodeId":"node-2pnf4", "controllerId":"Virtuora-TAPI2Controller3" }, "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.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "transactionId":"123456", { "requestId":"789101", "requestStatus":"completed", xxx-xxx-xxx, "transactionId":"yyy-yyy-yyy", "statusMessage":"successSUCCESS", "solution":{ "startTime":"2016-10-01T00:30+01:00", "finishTime":"2016-10-01T00:40+01.00", "routeInfo":[ { "requestStatus":"accepted", "solutions":{ "routeInfo":{ "serviceRoute":[ { "srcInterfaceId":"id20", "destInterfaceId":"id8" }, { "srcInterfaceId":"id9", "destInterfaceId":"id10" }, { "srcInterfaceId":"id11", "destInterfaceId":"id21" } ], "linkList":[ "IDL-6", "IDL-7" ] } ] } } { "srcInterfaceId":"int19", "dstInterfaceId":"int1", "controllerId":"Controller1" }, { "srcInterfaceId":"int3", "dstInterfaceId":"int4", "controllerId":"Controller2" }, { "srcInterfaceId":"int5", "dstInterfaceId":"int20", "controllerId":"Controller3" } ], "linkList":[ "link1", "link2" ] } } } |
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.
...
- Route optimizer receives the service route request from SDNC with the source and destination interface ids.
- The controllers of both the points are found using the AAI queries.
- Then optimizer queries AAI to fetch all the possible Controllers in the inventory to send it to minizinc. It fetches all the inter-domain links from the inventory and filters it based on the "rate" mentioned in the request and the operational status "up".
- Since minizinc expects the data in a certain way, optimizer wil encode all the data retrieved using the sckit module in python and send it to minizinc.
- The pymzn module is used to interface python with the minizinc language.
- Once minizinc chooses the optimized path, the optimizer will again decode the data and find the chosen links from the source to the destination.
- The optimizer then would fetch the interface details from the link and form a proper service route list that would be sent back to SDNC along with the list of logical links.
- SDNC in turn will fetch the end points from the service routes list object from the response and create as many domain services as present in the service route list.
- The logical links in the response will be used to form the relationship with the access service which will be done by SDNC.
- For the above example if a route has to be found between the "id20" of Controller1 "id21" of Controller5 following request will be sent to OOF by SDNC defined above.
- After running the algorithm OOF wil return the following response defined above.
Multiplexing Between the Domains
...