1
SCOR: Constraint Programming-based
Northbound Interface for SDN
Siamak Layeghy, Farzaneh Pakzad and Marius Portmann
School of ITEE, The University of QueenslandBrisbane, Australia
Presented by Siamak Layeghy
26th International Telecommunication Networks and Applications Conference (ITNAC)7-9 December 2016, University of Otago, Dunedin, New Zealand
2
• Background
• The problem
• Solution
• Implementation
• Evaluation and
Results
MerchantSwitching
ChipsNetworking: Vertically integrated
Closed, proprietary
Slow innovation
App
App
App
App
Control
Plane B
Control
Plane C
Control
Plane A
or or
SpecializedControlPlane
SpecializedHardware
SpecializedFeatures
Innovative Networking ? 3
App App App
App App App
App App App
Specialized Packet Forwarding Hardware
Specialized Packet Forwarding Hardware
Specialized Packet Forwarding Hardware
Specialized Packet Forwarding Hardware
OperatingSystem
OperatingSystem
OperatingSystem
OperatingSystem
Feature
Feature
Feature
Software Defined Networking (SDN):
Simple Packet Forwarding Hardware
Simple Packet Forwarding Hardware
Simple Packet Forwarding Hardware
Simple Packet Forwarding Hardware
Southbound interface
Northbound interface
App App App
Network Operating System
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
4
How good are northbound interfaces?
• There is no Standard northbound interface
• Many controllers have their own northbound interfaces e.g. OpenDaylight, NOX, Onix and Floodlight (specific definitions)
• There is no northbound interface to provide specific facilities for developing QoS routing and TE applications
5
2
3 4
6
5
C = 30 D = 2L = 1
C = 100
D = 1, L = 1
C = 30 D = 5 L = 1
C = 20 D = 1 L = 2
C= 20 D= 1L = 2
C = 10, D = 9, L = 21 7
Routing & Quality of Service (QoS) Routing
Shortest Path Routing
Widest Path Routing (maximum bandwidth path)
Minimum delay Path Routing
C: Capacity (Mb/s) D: Delay (sec)L: Loss (Percentage)
QoS Routing
…
6
Link-optimization
routing
Link-constrained routing
Path-optimization
routing
Path-constrained routing
Link-constrained Path-optimization routing
Link-constrained Link-optimization routing
Multi-Path-constrained routing
Path-constrained Path-optimization routing
Path-constrained Link-optimization routing
Link-constrained Path-constrained routing
Multi-link-constrained routing
Basic QoS Routing Algorithms
Composite QoS Routing Algorithms
QoS Routing Algorithms[6]
Link Metric
Path Metric
7
8
Routing Framework
Network Operating System
Applications
Network Operating System
Network Elements
Network State Monitor
Route Calculator- - - - - - - - - - - - - - - - - - - - - - - -
Flow InstallerHost
TrackerTopology Discovery
Network state
Monitoring
Flow Demand
Estimation
QoS Routing Interface
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MiniZinc (Language)
QoS Routing
Traffic Engineering
Link Utilization
Load Balancing . . .
NetworkState
Database
Service Chaining
OpenFlow
<---
Nor
thBo
und
API
--->
. . .<-------------------------Routing Fram
ework------------------------>
SCOR
9
Solver
Constraint Programming
CP Pseudocode:
Variables:Puzzle (2D-array of integers, range: 1..9)
Constraints:Fill Puzzle with initial numbersAlldifferent RowsAlldifferent ColumnsAlldifferent Sub-Squares
Solve:Satisfy constraints
def findNextCellToFill(grid, i, j): for x in range(i,9): for y in range(j,9): if grid[x][y] == 0: return x, y for x in range(0,9): for y in range(0,9): if grid[x][y] == 0: return x, y return -1, -1
def isValid(grid, i, j, e): rowOk = all([e != grid[i][x] for x in range(9)]) if rowOk: columnOk = all([e != grid[x][j] for x in range(9)]) if columnOk: # finding the top left x, y co-ordinates of the section containing the i,j cell secTopX, secTopY = 3 *(i/3), 3 *(j/3) for x in range(secTopX, secTopX+3): for y in range(secTopY, secTopY+3): if grid[x][y] == e: return False return True return False
def solveSudoku(grid, i=0, j=0): i,j = findNextCellToFill(grid, i, j) if i == -1: return True for e in range(1,10): if isValid(grid,i,j,e): grid[i][j] = e if solveSudoku(grid, i, j): return True # Undo the current cell for backtracking grid[i][j] = 0 return False
10
The new Northbound Interface
Network Operating System
Applications
Network Operating System
Network Elements
Network Stat monitor
Route calculator- - - - - - - - - - - - - - - - - - - - - - - -
Flow InstallerHost
TrackerTopology Discovery
Network state
Monitoring
Flow Demand
Estimation
QoS Routing Interface
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MiniZinc (Language)
QoS Routing
Traffic Engineering
Link Utilization
Load Balancing . . .
NetworkStat
database
Service chaining
OpenFlow
<---
Nor
thBo
und
API
--->
. . .
<-------------------------Routing Framew
ork------------------------>
Chosen Northbound Language:MiniZinc & Solvers (Gecode, Jacop, ECLiPSe, and many other solvers )
QoS Routing Interface:The Minimum set of needed primitives for implementation of QoS routing and Traffic Engineering applications.
11
Capacity Guarante
ePredicate
Residual CapacityPredicate
Capacity Limit
Predicate
Path Cost
PredicateDelay
PredicateCongestio
nPredicate
Link Utilisatio
nPredicate
Northbound Interface
QoS Routing Interface:
NetworkPath
Predicate
Path Bottlenec
kPredicate
…
Capacity Guarante
ePredicate
Residual CapacityPredicate
Capacity Limit
Predicate
Path Cost
PredicateDelay
PredicateCongestio
nPredicate
Link Utilisatio
nPredicate
Northbound Interface
QoS Routing Interface:
NetworkPath
Predicate
12
Path Bottlenec
kPredicate
…
13
Network Path Predicate
Implemented using flow conservation:• Variables:: represents a set of nodes that constitutes a flow path and in which represents the network nodes• Constraints: •
if ‘source’, ; else if ‘destination’ , ;else,
• Objective:Find value of {} that satisfies constraints
Network Path Predicate
% Variables declarationarray[int,int] of var 0..1: LPM, % Link Path Membership,
% flow conservation constraintforall(i in 1.. number_of_nodes)(
node_flow_in[i] = sum(k in 1.. number_of_links ) (if Links[k, 2] = i then LPM[k] else 0 endif)∧ node_flow_out[i] = sum(k in 1.. number_of_links) (if Links[k, 1] = i then LPM[k] else 0 endif)∧ node_flow_in[i] + (if i = s then 1 else 0 endif) = node_flow_out[i] + (if i = t then 1 else 0 endif)∧ Node_flow_in[i] <= 1)
NetworkPath
Predicate
14
Least Cost Path
QoS Routing & TE applications
Network Path
Predicate
Path Cost
Predicate
Least Cost Path in SCOR
% Variable declaration:array[1..number_of_links,1..number_of_flows] of var 0..1: LPM;array[1..number_of_flows] of var int: Cost;
% Constraints:constraint network_path( LPM, Link_Parameters, Nodes, Sources, Destinations); constraint path_cost( LPM, Link_Parameters, Cost);
% Solve:Solve minimize Cost[1]
Least Cost Path with Capacity Constraint
Network Path
Predicate
Path Cost
Predicate
Capacity Limit
Predicate
Least Cost Path with Capacity Constraint in SCOR
% Variable declaration:array[1..number_of_links,1..number_of_flows] of var 0..1: LPM;array[1..number_of_flows] of var int: Cost; array[1..number_of_flows] of var int: Limits;
% Constraints:constraint network_path( LPM, Link_Parameters, Nodes, Sources, Destinations); constraint path_cost( LPM, Link_Parameters, Cost);constraint capacity_limit(LPM, Link_Parameters, Flow_demands, Limits );
% Solve:Solve minimize Cost[1]
15
𝑎𝑖𝑗𝜅∈ {0 ,1 } ∀ 𝑖∈𝑃 ; 𝑗∈𝐸 ;𝜋 𝑖
𝜅∈Π 𝑖 ,
QoS Routing & TE applications
∑𝜋 𝑖
𝜅 ∈Π 𝑖
𝑥𝑖𝜅=1 ∀ 𝑖∈ 𝑃 ,
𝑚𝑎𝑥 {𝑧 } ,
𝑥𝑖𝜅∈ {0 ,1 } ∀ 𝑖∈ 𝑃 ;𝜋 𝑖
𝜅∈Π 𝑖 ,
𝑓 𝑗=∑𝑖∈ 𝑃
∑𝜋 𝑖
𝜅 ∈𝛱 𝑖
𝑎𝑖𝑗𝜅 𝑥 𝑖
𝜅 𝑑𝑖 ; ∀ 𝑗∈𝐸 ,
𝑓 𝑗≤𝑐 𝑗 ∀ 𝑗∈𝐸 ,
𝑧≤𝑐 𝑗− 𝑓 𝑗 ∀ 𝑗∈ 𝐸 ,
Maximum Residual Capacity
NetworkPath
Predicate
Capacity Guarante
e Predicate
Maximum Residual Capacity
Maximum Residual Capacity in SCOR
% Variables array[1..number_of_links,1..number_of_flows] of var 0..1: LPM; array[1..number_of_links] of var int: Residual;
% Constraintsconstraint network_path(LPM, Links, Nodes, sources, Destinations); constraint capacity_guarantee(LPM, Flow_demands, Link_Parameters, Residuals );
% Solvesolve maximize min(Residual);
16
QoS Routing Problem SCOR Predicates # LinesShortest Path path cost 3Widest Path Path bottleneck 3
Minimum-Loss Path path cost 3Minimum-Fixed-Delay Path path cost 3
Fixed-Delay-Constrained Path path cost 3Least-Cost Path path cost 3Maximum-Residual-Capacity Path
capacity guarantee 3Delay-Constrained Least Cost Path
path cost x 2 4Delay-Delay jitter-Constrained Path
path cost x 2 4Bandwidth-Delay-Constrained Path
path cost – capacity limit
4Bandwidth-Constrained Least Delay Path
path cost – capacity limit
4
Evaluation: completeness
Bandwidth Constrained Path capacity limit 3Bandwidth Guaranteed Path capacity guarantee 3
Minimum-Dynamic-Delay Path delay 3
QoS Routing Algorithms and Predicates to model them in SCOR
17
Evaluation: Various Network Topologies
Pod 0 Pod 1 Pod 2 Pod 3
Edge
Aggregation
Core
Simple fat-tree topology for k=4, nodes=36, link= 48
Grid topology for k=6, nodes=36, link= 60
18
Evaluation: Various Number of nodes
0 50 100 150 200 250 300 350 40010
100
1000
10000
100000
SCOR, Grid topology LP, Grid topology
SCOR, Fat-Tree topology LP, Fat-Tree topology
Network Size (number of nodes)
Solv
e Ti
me
(ms)
0 50 100 150 200 250 300 350 4000
50100150200250300350400450500550600
Least Cost Path with Capacity Constraints, Grid Topology
Least Cost Path, Grid Topology
Least Cost Path with Capacity Constraint, Fat-Tree Topology
Least Cost Path, Fat-Tree Topology
Network Size (number of nodes)
Solv
e Ti
me
(ms)
Conclusion:
19
• Introducing a new northbound interface for SDN to reduce the complexity of implementing QoS routing in SDN
• Using Constraint Programming, problem formulation is isolated from its solution
• The increased level of abstraction does not come at all at a cost of reduced efficiency
• Although SCOR is currently applied for routing problem, it has a wider applicability such as security etc.
20
Q & A