SCOR: Constraint Programming- based Northbound Interface for SDN Siamak Layeghy, Farzaneh Pakzad and Marius Portmann School of ITEE, The University of Queensland Brisbane, Australia Presented by Siamak Layeghy 26th International Telecommunication Networks and Applications Conference (ITNAC) 7-9 December 2016, University of Otago, Dunedin, New Zealand 1
20
Embed
SCOR: Constraint Programming-based Northbound Interface for SDN
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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)
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
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;
% 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;