Details
-
Bug
-
Status: Open
-
High
-
Resolution: Unresolved
-
Magnesium
-
None
-
None
Description
Hello,
context : I use Opendaylight with CSR1000v and BGP-LS protocol for link state topology. my network is configured to use TE class, and for clear understanding with the example below, I have the following TE-class mapping :
TE-Class Class-Type Priority 0 0 7 1 0 6 2 0 4 3 0 1 4 1 7 5 1 4 6 1 2 7 1 1
The problem is the class-type of the path computation request is not matched with class-type of edge attributes, but matched with the list index of unreserved bandwitdh from edge attributes. it's not the same.
AbstractPathComputation line 230 :
(attributes.getUnreservedBandwidth().get(constraints.getClassType().intValue()).getBandwidth().getValue().longValue() < bandwidth)
Below an example with one edge and bandwidth contraints (I have hidden id and ip for security reasons) and the various results gathered using path computation request.
{
"edge-id": xxxxxxxxx,
"remote-vertex-id": yyyyyyyyy,
"local-vertex-id": xxxxxxxxx,
"name": "xxxxxxxxx - yyyyyyyyy",
"edge-attributes": {
"metric": 1,
"max-resv-link-bandwidth": 1000000,
"remote-address": "x.x.x.x",
"local-address": "x.x.x.x",
"admin-group": 4,
"unreserved-bandwidth": [
{
"class-type": 7,
"bandwidth": 200000
},
{
"class-type": 6,
"bandwidth": 200000
},
{
"class-type": 5,
"bandwidth": 75000
},
{
"class-type": 4,
"bandwidth": 75000
},
{
"class-type": 3,
"bandwidth": 1000000
},
{
"class-type": 2,
"bandwidth": 875000
},
{
"class-type": 1,
"bandwidth": 875000
},
{
"class-type": 0,
"bandwidth": 875000
}
],
"max-link-bandwidth": 1000000,
"te-metric": 1
}
}
cisco topology on this edge :
BC Model Id: RDM
BC0 (max_reservable): 8000 (kbps)
BC0 (max_reservable_bw_global): 8000 (kbps)
BC1 (max_reservable_bw_sub): 1600 (kbps)
Total Allocated Reservable
BW (kbps) BW (kbps)
--------------- -----------
TE-Class[0]: 1000 7000
TE-Class[1]: 1000 7000
TE-Class[2]: 1000 7000
TE-Class[3]: 0 8000
TE-Class[4]: 1000 600
TE-Class[5]: 1000 600
TE-Class[6]: 0 1600
TE-Class[7]: 0 1600
tests and results with computation request :
{"input":{"algorithm":"cspf","constraints":{"address-family":"ipv4","bandwidth":200000,"class-type":0},"destination":AAAAAA,"graph-name":"ted://netip-bgp-linkstate-topology","source":BBBBBBB}}
=> Ero contains yyyyyyyyy
{"input":{"algorithm":"cspf","constraints":{"address-family":"ipv4","bandwidth":210000,"class-type":0},"destination":AAAAAA,"graph-name":"ted://netip-bgp-linkstate-topology","source":BBBBBBB}}
=> I have another ero without yyyyyyyyy
in this result, classtype 0 in resquest correspond to class type 7 from the edge.
{"input":{"algorithm":"cspf","constraints":{"address-family":"ipv4","bandwidth":75000,"class-type":3},"destination":AAAAAA,"graph-name":"ted://netip-bgp-linkstate-topology","source":BBBBBBB}}
=> Ero contains yyyyyyyyy
{"input":{"algorithm":"cspf","constraints":{"address-family":"ipv4","bandwidth":80000,"class-type":3},"destination":AAAAAA,"graph-name":"ted://netip-bgp-linkstate-topology","source":BBBBBBB}}
=> I have another ero without yyyyyyyyy
=> above, class type 3 in path computation request correspond to class type 4 from edge unreserved bandwidth attributes.
another example :
{"input":{"algorithm":"cspf","constraints":{"address-family":"ipv4","bandwidth":1000000,"class-type":4},"destination":AAAAAA,"graph-name":"ted://netip-bgp-linkstate-topology","source":BBBBBBB}} => Ero contains yyyyyyyyy
best regards
Jean-Marc