2016 SDN Transport APIInteroperability Demonstration
Jonathan Sadler (Coriant)Interop Working Group Chair
OIF Technical CommitteeOpenNetworkingFoundation
Agenda
MotivationObjectivesOverview of TestsDeep Dive into API messaging• Topology• Connection Setup• Hierarchical Abstraction
Findings and Summary
SDN improves Transport Control
Eliminate “One-size-fits-all” solutions• NE-behaviors may not match
carrier requirements• Example
• Combined Reroute and Protection
Programmability enables carrier requirements to be met
400% Capacity use50ms protection all the time
300% Capacity use50ms protection switch first fault~300ms switch second and subsequent
2
Open APIs between SDN Components
How can programmability be provided?
3
ControlComponents
Service Management
ConnectionManagement Routing Control
Path Query Topology
Signaling Proto Dataplane ConfigLink Management
Discovery Routing Proto
Directory
Service Requests
Dataplane
http://www.oiforum.com/documents/framework-for-transport-sdn-components-and-apis
Evaluate current state of SDN in Transport industry• Validate APIs in SDN Framework
• Useful:• Do the defined API solve a business problem?• Is the API consistent with business structural boundaries?
• Perform well:• Would a different API improve performance?
• Can be implemented
2016 SDN Transport API Interoperability Demonstration
4
Joint activity of OIF and ONF• OIF
• API Framework• Prototype API experience – 2014 Interop Test event
• ONF – Standards Organization for SDN• SDN Architecture• Transport API Project
2016 SDN Transport API Interoperability Demonstration
5
OIF SDN Framework
6
ControlComponents
Service Management
ConnectionManagement Routing Control
Path Query Topology
Signaling Proto Dataplane ConfigLink Management
Discovery Routing Proto
Directory
Service Requests
Dataplane
http://www.oiforum.com/documents/framework-for-transport-sdn-components-and-apis
Participants from both OIF and ONF• OIF: ADVA, China Telecom, Ciena, Coriant, FiberHome, Huawei,
Juniper, NEC, Orange, Telus, Verizon, ZTE• ONF: ADVA, CATR, China Telecom, Ciena, FiberHome, Huawei, Juniper,
NEC, Sedona, SK Telecom, SMOptics, Telefonica, Verizon, ZTE• Interested 3rd Party: China Unicom
• OIF: ADVA, China Telecom, Ciena, Coriant, FiberHome, Huawei,Juniper, NEC, Orange, Telus, Verizon, ZTE
• ONF: ADVA, CATR, China Telecom, Ciena, FiberHome, Huawei, Juniper,NEC, Sedona, SK Telecom, SMOptics, Telefonica, Verizon, ZTE
• Interested 3rd Party: China Unicom
2016 SDN Transport API Interoperability Demonstration
7
Timeline
8
Test end
May Jun2016
ONF Workday
Contract/NDA
Jul Aug
BCE
MarSep Oct Nov Dec Jan Feb
ECOC2016
3Q OIF 4Q OIFL123 SDN
Test start Readouts
OECC
2Q16 OIF
ETSI NFVMWC20171Q OIF OFC
2017
ONF Interim
Tech Spec Start
2016 SDN Transport APIInteroperability Demonstration
9
Intra-lab PairingsCarrier A• Orchestrators: Ca, Ra• Dataplane: Vd, Ve, Vf
Carrier B• Orchestrators: Cb• Dataplane: Ve, Vf
Carrier C• Orchestrators: Cc, Va• Datraplane: Va, Vg
Carrier D• Orchestrators: Vb, Vc• Dataplane: Vh, Vi, Vk, Va, Vg, Vb
Carrier E• Orchestrators: Vb• Dataplane: Vh, Vj, Vb
6 pairings
4 pairings
4 pairings
10 pairings
3 pairings
27 Pairs10
Inter-lab PairingsCarrier A – Carrier C• Orchestrators: Ra• Dataplane: Va, Vg
Carrier C – Carrier E• Orchestrators: Ra• Dataplane: Vh
Carrier A – Carrier E• Orchestrators: Vb• Dataplane: Vd, Ve, Vf
Carrier C – Carrier D• Orchestrators: Cc• Dataplane: Vb, Vi
Carrier D – Carrier E• Orchestrators: Vb, Sedona• Dataplane: Vh, Vj, Vb
Carrier C – Carrier E• Orchestrators: Vb• Dataplane: Va, Vg
2 pairings
3 pairings
2 pairings
2 pairings
1 pairing
6 pairings
16 Pairs11
Test Case tracking
12
Use Case: MultiDomain Orchestration
Service provider equipment is in different domains• Different Geographies• Different Vendors• Different Technologies
Services cross domain boundaries• Orchestration across domains is necessary
13
NFV POC
Multi-domain Orchestration isnecessary in NFV deploymentsinvolving the transport layer• Best technology for carrying service• Support multiple provider networks
T-API provides interface requiredby WAN Infrastructure Manager• Integrates Transport into MANO
14
INTERFACES IN ACTION
Topology API Capture
HTTP/1.1 201 CreatedServer: Apache-Coyote/1.1Content-Type: application/jsonDate: Tue, 12 Dec 2016 4:41:37 GMTConnection: close
{"itemlist": [
"/restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_link/55c7c8b9-3b87-4822-9c9b-3392f0109065/",
"/restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_link/e7eb128a-82a5-4fa1-b030-e386ec93c30f/",
"/restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_link/76fd27f4-e4f0-42a8-8b1a-909302b426ce/"
]}
NE
NE
NE
GET /restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_link/ HTTP/1.1User-Agent: Faraday v0.9.0Content-Type: application/jsonAccept: application/jsonAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3Connection: closeHost: 10.131.22.2:8081Content-Length: 183
16
Topology API Capture
NE
NE
NE
GET /restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_link/55c7c8b9-3b87-4822-9c9b-3392f0109065/ HTTP/1.1User-Agent: Faraday v0.9.0Content-Type: application/jsonAccept: application/jsonAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3Connection: closeHost: 10.131.22.2:8081Content-Length: 183
17
Topology API CaptureHTTP/1.1 201 CreatedContent-Type: application/jsonServer: Werkzeug/0.11.11 Python/2.7.5Date: Tue, 12 Dec 2016 4:41:37 GMT
{"_linkPort": [
{"_nodeEdgePoint": "/restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_node/07d7ad4c-
4214-4d98-8be8-4e6826cece43/_ownedNodeEdgePoint/37a03a6b-3e95-48bb-a253-fd5b3d2f597b/","direction": "BIDIRECTIONAL","localId": "lp13","role": "SYMMETRIC"
}, {"_nodeEdgePoint": "/restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_node/019ac632-
20d6-4750-b77c-80852ee60ed6/_ownedNodeEdgePoint/a4b58599-58af-4c38-862b-6c4a46ca9ec7/","direction": "BIDIRECTIONAL","localId": "lp31","role": "SYMMETRIC"
}],"_node": [
"/restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_node/07d7ad4c-4214-4d98-8be8-4e6826cece43/",
"/restconf/config/Context/_topology/7a360591-5561-421f-abf2-4c48c4ab9d3e/_node/019ac632-20d6-4750-b77c-80852ee60ed6/"
],"_state": {
"administrativeState": "UNLOCKED","lifecycleState": "INSTALLED","operationalState": "ENABLED"
},
NE
NE
NE
Response continued on the next page18
Topology API Capture"_transferCapacity": {
"availableCapacity": {"totalSize": "100MBPS"
},"totalPotentialCapacity": {
"totalSize": "100MBPS"}
},"_transferCost": {
"costCharacteristic": [{
"costName": "cost","costValue": "1"
}]
},"_transferTiming": {
"latencyCharacteristic": [{
"fixedLatencyCharacteristic": "1","trafficPropertyName": "fixedLatencyCharacteristic"
}]
},"label": [
{"value": "link13","valueName": "label"
}],"uuid": "55c7c8b9-3b87-4822-9c9b-3392f0109065"
}
NE
NE
NE
19
Service Invocation Flow
NE
NE
NE
POST /restconf/config/Context/_connectivityService/ HTTP/1.1Content-Type: application/json; charset=utf-8Authorization: Basic YWRtaW46YWRtaW4=Content-Length: 521Host: 10.141.6.5:8080Connection: close
{"_servicePort":[
{"_serviceEndPoint":"/restconf/config/Context/_serviceEndPoint/59bf8bbf-1a9c-46d5-b607-7099f1cfc60c","role":"SYMMETRIC","direction":"BIDIRECTIONAL","serviceLayer":"ETH","localId":"sp1“
},{"_serviceEndPoint":"/restconf/config/Context/_serviceEndPoint/ce3684ae-329c-42e5-ab72-9cbfab67cde3",
"role":"SYMMETRIC","direction":"BIDIRECTIONAL","serviceLayer":"ETH","localId":"sp2“
}],"_connConstraint":{
"serviceType":"POINT_TO_POINT_CONNECTIVITY","serviceLayer":["OCH"],"_includePath":[]
},"layerProtocolName":"ETH“
}
20
Service Invocation FlowHTTP/1.1 201 CreatedContent-Length: 976Content-Type: application/jsonServer: Werkzeug/0.11.11 Python/2.7.5Date: Wed, 07 Dec 2016 04:10:51 GMT
{"_connConstraint": {
"serviceLayer": [ "OCH" ],"serviceType": "POINT_TO_POINT_CONNECTIVITY"
},"_connection": [
"/restconf/config/Context/_connection/91f23537-fb40-491a-ba72-ac2d360ca67e/"],"_servicePort": [ {
"_serviceEndPoint": "/restconf/config/Context/_serviceEndPoint/59bf8bbf-1a9c-46d5-b607-7099f1cfc60c","direction": "BIDIRECTIONAL","localId": "sp1","role": "SYMMETRIC","serviceLayer": "ETH"
}, {"_serviceEndPoint": "/restconf/config/Context/_serviceEndPoint/ce3684ae-329c-42e5-ab72-9cbfab67cde3","direction": "BIDIRECTIONAL","localId": "sp2","role": "SYMMETRIC","serviceLayer": "ETH"
} ],"_state": {
"lifecycleState": "POTENTIAL"},"layerProtocolName": "ETH","uuid": "e44a5d04-e1fe-432b-9d2c-803681838d57"
}
NE
NE
NE
21
Network abstraction
Abstract Node Representation
Abstract Link Representation
NE
NE
NE
NE
NE
NE
NENE
NE
NE
NE
NE
NE
NE
NE
NE
Parent Controller
DomainController
Parent Controller
DomainController
22
Topology API CaptureGET /restconf/config/Context/_topology/TOPContent-Type: application/json; charset=utf-8Host: 10.141.6.5:8080
NE
NE
NENE
NE
NE
23
Topology API CaptureHTTP/1.1 200 OKContent-Type: application/jsonDate: Tue, 20 Dec 2016 10:58:06 GMT
{"_extensions": [ ],"label": [ ],"uuid": "TOP","name": [ {
"value": "TOP","valueName": "name"
} ],"_node": [ {
"_extensions": [ {"extensionsSpecTarget": [ "sm" ],"extensionsSpecification": "vendor"
}, {"extensionsSpecTarget": [ "SM\/00000031-0000-0000-0031-000000736d6f\/" ],"extensionsSpecification": "domainId"
} ],"label": [ ],"uuid": "tsdn:sm:script","name": [ {
"value": "tsdn:sm:script","valueName": "name"
} ],"_encapTopology": null,"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"_transferTiming": null,
NE
NE
NENE
NE
NE
Response continued on the next page
24
NE NENE
Topology API Capture"_ownedNodeEdgePoint": [ {"_extensions": [ ],"label": [ ],"uuid": "tsdn:sm:script::1","name": [ { "valueName": "name", "value": "OGBE10-1-3-6" } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:sm:script::1\/" ]
}, {"_extensions": [ ],"label": [ ],"uuid": "tsdn:sm:script::2","name": [ { "valueName": "name", "value": "OGBE10-1-3-5" } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:sm:script::2\/" ]
},
NE
NE
NENE
NE
NE
Response continued on the next page
25
NE NE
Topology API Capture{"_extensions": [ ],"label": [ ],"uuid": "tsdn:sm:script::3","name": [ { "valueName": "name", "value": "OGBE10-1-3-5" } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ ]
}, {"_extensions": [ ],"label": [ ],"uuid": "tsdn:sm:script::4","name": [ { "valueName": "name", "value": "OGBE10-1-3-5",} ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ ]
} ],"layerProtocolName": [ "OCH" ],"_transferCapacity": null,"_transferCost": null,"_aggregatedNodeEdgePoint": [ ],"_transferIntegrity": null
},
NE
NE
NENE
NE
NE
Response continued on the next page
26
NE NE
Topology API Capture{"_extensions": [ {
"extensionsSpecTarget": [ "adva" ],"extensionsSpecification": "vendor"
}, {"extensionsSpecTarget": [ "ADVA\/00000000-a13d-0000-0000-000000000000" ],"extensionsSpecification": "domainId"
} ],"label": [ ],"uuid": "tsdn:adva:script","name": [ { "valueName": "name", "value": "tsdn:adva:script" } ],"_encapTopology": null,"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"_transferTiming": null,
"_ownedNodeEdgePoint": [ {"_extensions": [ ],"label": [ ],"uuid": "tsdn:adva:script::1","name": [ { "valueName": "name", "value": "10.95.86.196:PTP-2-10-NE",} ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:adva:script::1\/" ]
},
NE
NE
NENE
NE
NE
Response continued on the next page
27
NE NENE
Topology API Capture{
"_extensions": [ ],"label": [ ],"uuid": "tsdn:adva:script::2","name": [ { "valueName": "name", "value": "10.95.86.196:PTP-2-10-NW" } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:adva:script::2\/" ]
}, {"_extensions": [ ],"label": [ ],"uuid": "tsdn:adva:script::3","name": [ { "valueName": "name", "value": "10.95.86.197:PTP-2-10-NE", } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ ]
},
NE
NE
NENE
NE
NE
Response continued on the next page
28
NE NE
Topology API Capture{
"_extensions": [ ],"label": [ ],"uuid": "tsdn:adva:script::4","name": [ { "valueName": "name", "value": "10.95.86.197:PTP-2-10-NW" } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ ]
}, {"_extensions": [ ],"label": [ ],"uuid": "tsdn:adva:script::5","name": [ { "valueName": "name", "value": "10.95.86.198:PTP-2-10-NE" } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:adva:script::5\/" ]
},
NE
NE
NENE
NE
NE
Response continued on the next page
29
NE NE
Topology API Capture{
"_extensions": [ ],"label": [ ],"uuid": "tsdn:adva:script::6","name": [ { "valueName": "name", "value": "10.95.86.198:PTP-2-10-NW" } ],"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"direction": "BIDIRECTIONAL","_layerProtocol": [ ],"_clientNodeEdgePoint": [ ],"_mappedServiceEndPoint": [ "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:adva:script::6\/" ]
}],"layerProtocolName": [ "OCH" ],"_transferCapacity": null,"_transferCost": null,"_aggregatedNodeEdgePoint": [ ],"_transferIntegrity": null
} ],NE
NE
NENE
NE
NE
Response continued on the next page
30
NE NE
Topology API Capture"layerProtocolName": [ "OCH" ],"_link": [
{"_extensions": [
{"extensionsSpecTarget": [
"0.0"],"extensionsSpecification": "utilization"
},{
"extensionsSpecTarget": ["10000.0"
],"extensionsSpecification": "bandwidth"
}],"label": [ ],"uuid": "tsdn:adva:script::4--tsdn:sm:script::3","name": [ { "valueName": "name“, "value": "tsdn:adva:script::4--tsdn:sm:script::3" } ],"direction": "UNIDIRECTIONAL","layerProtocolName": [ ],"_validation": null,"_lpTransition": null,"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},
NE
NE
NENE
NE
NE
Response continued on the next page
31
NE NE
Topology API Capture"_linkPort": [
{"_extensions": [ ],"localId": "tsdn:adva:script::4","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/_ownedNodeEdgePoint\/tsdn:adva:script::4\/",
"direction": "INPUT","role": null
}, {"_extensions": [ ],"localId": "tsdn:sm:script::3","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/_ownedNodeEdgePoint\/tsdn:sm:script::3\/","direction": "OUTPUT","role": null
}],"_node": [
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/","\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/"
],"_transferCapacity": null,"_transferCost": null,"_riskParameter": null,"_transferTiming": null,"_transferIntegrity": null
},
NE
NE
NENE
NE
NE
Response continued on the next page
32
NE NE
Topology API Capture{
"_extensions": [{
"extensionsSpecTarget": ["0.0"
],"extensionsSpecification": "utilization"
},{
"extensionsSpecTarget": ["10000.0"
],"extensionsSpecification": "bandwidth"
}],"label": [ ],"uuid": "tsdn:adva:script::3--tsdn:sm:script::4","name": [ { "valueName": "name", "value": "tsdn:adva:script::3--tsdn:sm:script::4" } ],"direction": "UNIDIRECTIONAL","layerProtocolName": [ ],"_validation": null,"_lpTransition": null,"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},
NE
NE
NENE
NE
NE
Response continued on the next page
33
NE NE
Topology API Capture"_linkPort": [
{"_extensions": [ ],"localId": "tsdn:adva:script::3","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/_ownedNodeEdgePoint\/tsdn:adva:script::3\/",
"direction": "INPUT","role": null
}, {"_extensions": [ ],"localId": "tsdn:sm:script::4","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/_ownedNodeEdgePoint\/tsdn:sm:script::4\/","direction": "OUTPUT","role": null
}],"_node": [
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/","\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/"
],"_transferCapacity": null,"_transferCost": null,"_riskParameter": null,"_transferTiming": null,"_transferIntegrity": null
},
NE
NE
NENE
NE
NE
Response continued on the next page
34
NE NE
Topology API Capture{
"_extensions": [{
"extensionsSpecTarget": ["0.0"
],"extensionsSpecification": "utilization"
},{
"extensionsSpecTarget": ["10000.0"
],"extensionsSpecification": "bandwidth"
}],"label": [ ],"uuid": "tsdn:sm:script::3--tsdn:adva:script::4","name": [ { "valueName": "name“, "value": "tsdn:sm:script::3--tsdn:adva:script::4" } ],"direction": "UNIDIRECTIONAL","layerProtocolName": [ ],"_validation": null,"_lpTransition": null,"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},
NE
NE
NENE
NE
NE
Response continued on the next page
35
NE NE
Topology API Capture"_linkPort": [ {
"_extensions": [ ],"localId": "tsdn:sm:script::3","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/_ownedNodeEdgePoint\/tsdn:sm:script::3\/","direction": "INPUT","role": null
}, {"_extensions": [ ],"localId": "tsdn:adva:script::4","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/_ownedNodeEdgePoint\/tsdn:adva:script::4\/",
"direction": "OUTPUT","role": null
} ],"_node": [
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/","\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/"
],"_transferCapacity": null,"_transferCost": null,"_riskParameter": null,"_transferTiming": null,"_transferIntegrity": null
},
NE
NE
NENE
NE
NE
Response continued on the next page
36
NE NE
Topology API Capture{
"_extensions": [{
"extensionsSpecTarget": [ "0.0" ],"extensionsSpecification": "utilization"
},{
"extensionsSpecTarget": [ "10000.0" ],"extensionsSpecification": "bandwidth"
}],"label": [ ],"uuid": "tsdn:sm:script::4--tsdn:adva:script::3","name": [ { "valueName": "name", "value": "tsdn:sm:script::4--tsdn:adva:script::3" } ],"direction": "UNIDIRECTIONAL","layerProtocolName": [ ],"_validation": null,"_lpTransition": null,"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},
NE
NE
NENE
NE
NE
Response continued on the next page
37
NE NE
Topology API Capture"_linkPort": [ {
"_extensions": [ ],"localId": "tsdn:sm:script::4","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/_ownedNodeEdgePoint\/tsdn:sm:script::4\/","direction": "INPUT","role": null
},{
"_extensions": [ ],"localId": "tsdn:adva:script::3","name": [ ],"_nodeEdgePoint":
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/_ownedNodeEdgePoint\/tsdn:adva:script::3\/",
"direction": "OUTPUT","role": null
}],"_node": [
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/","\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/"
],"_transferCapacity": null,"_transferCost": null,"_riskParameter": null,"_transferTiming": null,"_transferIntegrity": null
}]
}
NE
NE
NENE
NE
NE
38
NE NE
Service InvocationPOST /restconf/config/Context/_connectivityService/Content-Type: application/json
{"_servicePort": [
{"_serviceEndPoint":"\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:sm:script::2\/","direction": "INPUT","role": "ROOT"
},{
"_serviceEndPoint": "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:adva:script::5\/","direction": "OUTPUT","role": "LEAF"
}],"_connConstraint": {
"serviceType": "POINT_TO_POINT_CONNECTIVITY","requestedCapacity": {},"_includePath": [
{"_node": ["\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/","\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/"
],"_nodeEdgePoint": [
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/_ownedNodeEdgePoint\/tsdn:sm:script::4\/",
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/_ownedNodeEdgePoint\/tsdn:adva:script::3\/"
],"localId": 0
}]
}
NE
NE
NENE
NE
NE
39
NE NE
Service Invocation
NE
NE
NENE
NE
NE
HTTP/1.1 201 CreatedContent-Type: application/jsonDate: Tue, 20 Dec 2016 11:07:20 GMT
{"_extensions": [ ],"label": [ ],"uuid": "7a656a07-9fd4-43bc-bba5-390b4cde2b22","name": [ ],"_connection": [
"\/restconf\/config\/Context\/_connection\/4a115665-8aac-40b8-95e9-1cd154c9b506\/"],"_servicePort": [
{"_extensions": [],"localId": null,"name": [ ],"serviceLayer": null,"direction": "INPUT","role": "ROOT","_serviceEndPoint": "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:sm:script::2\/"
},{
"_extensions": [ ],"localId": null,"name": [ ],"serviceLayer": null,"direction": "OUTPUT","role": "LEAF","_serviceEndPoint": "\/restconf\/config\/Context\/_serviceEndPoint\/tsdn:adva:script::5\/"
}],
Response continued on the next page
40
NE NE
Service Invocation
NE
NE
NENE
NE
NE
"direction": null,"layerProtocolName": null,"_schedule": null,"_state": {
"administrativeState": "UNLOCKED","operationalState": "ENABLED","lifecycleState": "INSTALLED"
},"_connConstraint": {
"_extensions": [ ],"localId": null,"name": [ ],"serviceType": "POINT_TO_POINT_CONNECTIVITY","_includePath": [
{"_extensions": [ ],"localId": "0","name": [ ],"_nodeEdgePoint": [
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/_ownedNodeEdgePoint\/tsdn:sm:script::4\/","\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/_ownedNodeEdgePoint\/tsdn:adva:script::3\/"
],"_node": [
"\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:sm:script\/","\/restconf\/config\/Context\/_topology\/TOP\/_node\/tsdn:adva:script\/"
]}
],
Response continued on the next page
41
NE NE
Service Invocation
NE
NE
NENE
NE
NE
"requestedCapacity": {"committedInformationRate": null,"peakBurstSize": null,"totalSize": null,"committedBurstSize": null,"packetBwProfileType": null,"peakInformationRate": null,"couplingFlag": null,"colorAware": null
},"costCharacteristic": [ ],"_avoidTopology": [ ],"serviceLayer": [ ],"serviceLevel": null,"latencyCharacteristic": [ ],"_corouteInclusion": [ ],"_diversityExclusion": [ ],"_includeTopology": [ ],"_excludePath": [ ]
}}
42
NE NE
FINDINGS
Findings
ONF’s T-API provides functions necessary for multi-domain orchestration• Topology view• Connection establishment• Topology abstraction
ONF’s T-API localizes interoperability to Orchestrator/Controller interface• GMPLS requires NEs in a sequence to have a consistent behavior in order to
achieve interoperability
ONF’s T-API supports multiple technologies• Ethernet• OTN• DWDM44
Findings
Controllers abstract the network in different ways• E.g. Unidirectional vs Bidirectional links
Controllers provide/report different capabilities• E.g. Connectivity restrictions
Division of responsibility between controllers unclear• E.g. Multi-domain Path Computation
Maintaining RPC and REST styles is confusing• Not all implementations supported both styles
45
Findings
T-API needs to be validated for additional use cases• Use of topology interface for Path Computation• Service Management interface
T-API evolution is needed to meet current Transport Network uses• Protected Services• Generalized Notification Service
Based on demo feedback, ONF will align T-API with YANG Best Practices• Object ID format and lifecycle• Separation of Configuration, Operational Data
46
Summary
Demonstration shows:• Cooperation between 17 companies
• 7 Carriers (5 Host, 2 Consulting)• 10 Vendors• 2 Research Institutions
• Transport SDN is becoming real• ONF T-API Specification published, implemented and tested
• Testing is a success• Identified strengths and areas for further activity
Next step:• T-API 2.0
47
2016 SDN Transport API Interoperability DemonstrationAccelerating Momentum on the Road to Next-Generation Architectures
www.opennetworking.org www.oiforum.com
OpenNetworkingFoundation