alto extension: path vector · pdf filealto extension: path vector...
TRANSCRIPT
ALTO Extension: Path Vector
draft-yang-alto-path-vector-03draft-gao-alto-routing-state-abstraction-03
Presenter:Y.RichardYang
July21,2016IETF96
Overview• Goingbeyond“single-switch”topologyabstractionislargelyagreeduponintheWGwitha charteritem
• WGhasmultipledesignsrelatedonnetworkgraph,e.g.,– [NL] node/linkgraphs– [NLP]node/linkgraph+pathvector– [AP] Pathvectorw/abstractnetworkelements
– ECMPcomplexity
• Proposal:FirstfinishtheAPdesignasadelivery
2
ALTO
Raw State
Abstract State
Application
Application-LayerTrafficOptimization(TO)Framework
• ApphasasetofKflowsf[i]=si ->di• Pathf[i].pathforflowf[i]iscomputedbynetwork• AppTOcandoistocontroltrafficvolume(f[i].x)forflowf[i]– x=[f[1].x,f[2].x,…,f[K].x]– Appneedspathproperties(e.g.,cost)off[i]whencomputingf[i].x
3
Value of ALTO is to provide hard-to-obtain, easy to use network information to
applications.
MainUseCaseofNetworkGraphisCapacityRegion
4
sw1
sw2
eh1 eh3
eh2 eh4
sw5 sw8
sw6
sw4sw7
s1
s2
d1
d2
link1
link7 link12
• Apprequestsavailablebandwidthfortwoflows(s1->d1;s2->d2)
• Costmapreturnsf[1].bw =100Mbps;f[2].bw =100Mbps• Buttheresultcanbeambiguous
sw3link6
MainUseCaseofNetworkGraphisCapacityRegion
5
sw1
sw2
eh1 eh3
eh2 eh4
sw5 sw8
sw6
sw4sw7
s1
s2
d1
d2
link1
link7 link12
sw3link6
Each core link: 100 Mbps; edge 1G
x1
x2
100
100
Capacity region
MainUseCaseofNetworkGraphisCapacityRegion
6
sw1
sw2
eh1 eh3
eh2 eh4
sw5 sw8
sw6
sw4sw7
s1
s2
d1
d2
link1
link7 link12
sw3link6
Each core link: 100 Mbps; edge 1G
x1
x2100
100
Capacity region
MainUseCaseofNetworkGraphisCapacityRegion
7
sw1
sw2
eh1 eh3
eh2 eh4
sw5 sw8
sw6
sw4
s1
s2
d1
d2
link1
link7 link12
sw3link6
Each core link: 100 Mbps; edge 1G
x1
x2100
100
Capacity region
DesignChoice
• [NL] node/linkgraphs:– Notenoughinformation
• [NLP]node/linkgraph+pathvector– Noneedforalltheinformation
• [AP] Pathvectorw/abstractnetworkelements– Sweetspot
8
ALTO
Raw State
Abstract State
Application
PathVectorDesignIssue1:EncodePVinCostMaps
• CostMapw/PV:
• KeyIssue:Whatisthecost-metricandcostmode
9
HTTP/1.1 200 OK…application/alto-costmap+json
{ "meta" : {
"dependent-vtags" : […],"cost-type" : {“cost-metric”: ?, "cost-mode" : ? }
},"cost-map" : {
"PID1": { "PID1":[], "PID2":["ne56", "ne67"], "PID3":[], "PID4":["ne57”]},"PID2": { "PID1":["ne75"], "PID2":[], "PID3":["ne75"], "PID4":[]}, …
}}
APDesignIssue1:EncodePVinCostMaps
• Authorsof[RFC7285]anticipatedthatelementsofaCostMapmayneedtobegenericandhenceusedJSONValue=>CostMap andEndpointCostMap arepolymorphic(generic)typesthatneedtypeindicator,toindicatesyntaxandsemantics– CostMap<T>– EndpointCostMap<T>
10
object {CostMapData cost-map;
} InfoResourceCostMap: ResponseEntityBase;
object-map {PIDName -> DstCosts;
} CostMapData;
object-map {PIDName -> JSONValue;
} DstCosts;
object {EndpointCostMapData endpoint-cost-map;
} InfoResourceEndpointCostMap: ResponseEntityBase;
object-map {TypedEndpointAddr -> EndpointDstCosts;
} EndpointCostMapData;
object-map {TypedEndpointAddr -> JSONValue;
} EndpointDstCosts;
Issue1:DesignChoices
• I1-choice1– Introducespecificcost-modeandcost-metric toindicateaPVCostMap
• I1-Choice2– Aunifyingcost-typescheme alsohandlingmulti-cost,costcalendar
11
PathVectorDesignIssue2:QueryPrecision
• Issue:– CurrentCostMap andEndpointCostMap aredesignedfor cross-productqueries{s1,s2,….,sn}->{d1,d2,...,dm}===s1->d1,s1->d2,...,s1->dm,s2->d1,...,sn->dm
– butsuchqueriescaninvolvealargenumberofpaths,whichmaynotbenecessarybutlimittheopportunityforcomputingcompact,abstracttopology
12
PathVectorDesignIssue2:QueryPrecision
• Possibility:Make PVquerytobenon-crossproduct,e.g.,aqueryenumeratesthesetofflows
• Proposal:– Coordinatewithflowcostserviceor moregenerally,doweproceedw/
RoutingStateAbstractionw/DeclaredEquivalence
13
POST /capacityregion/lookup HTTP/1.1 Host: alto.example.comContent-Length: TBD Content-Type: application/alto-flowparams+jsonAccept: application/alto-costmap+json,application/alto-error+json
{ "flows" : [
{"src": "ipv4:192.0.1.1", "dst": "ipv4:192.0.1.2"}, {"src": "ipv4:192.0.1.3", "dst": "ipv4:192.0.1.4"}, {"src": "ipv4:192.0.1.1", "dst": "ipv4:192.0.1.4"}
] … }
Issue2:DesignChoices
• I2-choice1– Usenative CostMapforPIDsandEndpointCostMapqueries
• I2-Choice2– Introduceflows,andmoregeneral,introduceroutingstateabstractionquerylanguageasageneralquerymechanism
14
PathVectorDesignIssue3:ProvidePVElem.Properties
• Designchoices1. Inline:Embedinthesamecostmap2. Reference:Usedependent-vtag torefertoa
separatemap(e.g.,unifiedelementproperties)
15
PathVectorDesignIssue3:Inline
16
HTTP/1.1 200 OK…application/alto-costmap+json
{ "meta" : {
"dependent-vtags" : […],"cost-type" : {“cost-metric”: “ane”, "cost-mode" : ”path-vector” }
},"cost-map" : {
"PID1": { "PID1":[], "PID2":["ne56", "ne67"], "PID3":[], "PID4":["ne57”]},"PID2": { "PID1":["ne75"], "PID2":[], "PID3":["ne75"], "PID4":[]}, …
}“nep-map” : {
“ne56”: {“bw”: 10, … }}
}
• Keyremainingissue:– Howtoindicatetheproperties/valuesspecifiedinthenep-map?– Needtoindicatemulti-costmapforthenep-mapinmeta
PathVectorDesignIssue3:Reference
17
HTTP/1.1 200 OK…application/alto-costmap+json
{ "meta" : {
"dependent-vtags" : […refer to an nep map
],"cost-type" : {“cost-metric”: “ane”, "cost-mode" : ”path-vector” }
},"cost-map" : {
"PID1": { "PID1":[], "PID2":["ne56", "ne67"], "PID3":[], "PID4":["ne57”]},"PID2": { "PID1":["ne75"], "PID2":[], "PID3":["ne75"], "PID4":[]}, …
}}
RoadMap:DecisionPoints
18
NLGraph
NLGraph+PV
APV
Issue 1 Issue2 Issue3
SpecificCostType NativeCostMapQuery Inline
Schemetogetherw/MC,CC
FlowQuery+RSA Reference
BackupSlides
Q:HowtoSupportECMPPath
20
• ECMPforeh1->eh3,singlepaththroughsw6foreh2->eh4– PID1->PID3:[{“ne”:“sw5-6”,“w”:0.5},
{“ne”:“sw6-8”,“w”:0.5},{“ne”:“sw5-7”,“w”:0.5},{“ne”:“sw7-8”,“w”:0.5}]
– PID2->PID4::[{“ne”:“sw5-6”,“w”:1},{“ne”:“sw6-8”,“w”:1}]
sw1
sw2
sw3eh1 eh3
eh2 eh4
sw5 sw8
sw6
sw4
PID1
PID2
PID3
PID4 sw7
object {JSONNumber w; // flow weightJSONString ne; // network element
} FlowElement;
object {cost-map.DstCosts.JSONValue
-> FlowElement<0,*>;meta.cost-mode = ”flow”;
} InfoResourcePVCostMap : InfoResourceCostMap;
OneMoreExample• Howdoweallowstatisticsonacostmetric(e.g.,routingcost)
21
HTTP/1.1 200 OK…application/alto-costmap+json
{ "meta" : {
"dependent-vtags" : […],"cost-type" : {“cost-metric”: “latency-stat”, "cost-mode" : ”basic-stat-object” }
},"cost-map" : {
"PID1": { "PID1”:{“min”; 1, “max”: 2, “avg”: 1.5} , "PID2”:{“min”; 2, “max”: 5, “avg”: 2.5} , …
...}
}
PathVectorDesignIssue1:EncodePVinCostMaps
• The“cost-mode” fieldofthe“cost-type”fieldof“meta”ofeachCostMap isthetypeindicator– CostMap<cost-mode>,i.e.,CostMap<numerical>and
CostMap<ordinal>• “numerical”indicatesfloatingpointnumbers{6.1.2.1}• “ordinal”indicates“non-negative”integers{6.1.2.2}
– “cost-metric”:indicatesthesemantics(routingcost, bw,…)• CostMap<numerical>routingcost,bw• CostMap<ordinal>routingcost,bw• EndpointCostMap<numerical>routingcost,bw• EndpointCostMap<ordinal>routingcost,bw
22
object {CostMetric cost-metric;CostMode cost-mode;[JSONString description;]
} CostType;