scor: constraint programming-based northbound interface for sdn
Post on 08-Feb-2017
Embed Size (px)
SCOR: Constraint Programming-basedNorthbound Interface for SDNSiamak 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 Zealand1
BackgroundThe problemSolutionImplementationEvaluation and Results2
Today I will start with a short background and the related works, then I will explain my research tasks and the methodology I have used to accomplish these research tasks. Finally I will discuss the results I have achieved so far.2
MerchantSwitching ChipsNetworking: Vertically integratedClosed, proprietary Slow innovationAppAppAppApp
ControlPlane BControlPlane CControlPlane Aoror
SpecializedControlPlaneSpecializedHardwareSpecializedFeaturesInnovative Networking ?3
Networking people thought a similar change can happen to networking devices as well.They suggested if we separate hardware and software, then developing applications will be possible, independent from hardware.
And, this was the way Software Defined Networking appeared.3
Specialized Packet Forwarding HardwareSpecialized Packet Forwarding HardwareSpecialized Packet Forwarding HardwareSpecialized Packet Forwarding HardwareOperatingSystemOperatingSystemOperatingSystemOperatingSystemFeatureFeatureFeatureSoftware Defined Networking (SDN):
Simple Packet Forwarding HardwareSimple Packet Forwarding HardwareSimple Packet Forwarding HardwareSimple Packet Forwarding Hardware
Northbound interfaceAppAppAppNetwork Operating SystemFeatureFeatureFeatureFeatureFeatureFeatureFeatureFeatureFeature4
The main idea behind SDN is to separate the forwarding brain from these expensive specialized hardware and concentrate it in a logically centralized node which is called controller.
The controller uses an open interface to the hardware, which is now a brain-less forwarding device, to tell them how to forward packets. This interface is called southbound interface.
Then applications can use the abstractions created by the controller to program the network. They use another interface which is called northbound interface.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 applications5
The Northbound interfaces are the other place where I expected to find some QoS routing related work. But I noticed that current northbound interfaces rarely provide features for this purpose. The only Northbound interface that could be used for QoS routing was SFNet that has a limited scope.
Here my conclusion was: thereTE applications.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 = 2C = 10, D = 9, L = 21
Routing & Quality of Service (QoS) RoutingShortest Path RoutingWidest Path Routing (maximum bandwidth path)
Minimum delay Path RoutingC: Capacity (Mb/s) D: Delay (sec)L: Loss (Percentage)
Googles project is not the only required technique in todays networking. It is among a group of routing techniques which are called Quality of Service Routing.
In QoS routing, some constraints are considered when looking for a path to satisfy the service requirements. Let me explain this using some examplesSuppose this graph represents a network topology with bi-directional links. Each link is associated with three parameters which states its capacity or bandwidth, its delay and its loss ratio. Node number 1 is the source and node number 7 is the destination.
A routing algorithms job is to find a series of links which connects a source to a destination. The most common routing algorithm in internet is shortest path routingIn this shortest path routing the metric considered finding path is the hop count to destination. A path with the least number of hops will be selected.Now, suppose you have an application which requires a lot of bandwidth, let say streaming video. As long as there is enough resources in all paths, it does not matter which routing algorithm you may use. But most of the time it is not the case with the networks and the shortest path which does not care about paths bandwidth might cause some problem. If you care about the service quality, you would prefer a routing algorithm which takes into account the bandwidth of the path. In fact you may prefer to find a path that provides the maximum bandwidth. The widest path routing finds a path that has the maximum bandwidth in its bottleneck. Then you might have another application, let say (voice over IP) or VOIP. Now you dont need too much bandwidth, instead your application is sensitive to the end to end delay. In this case, if care about the quality of the service, you may prefer the end to end delay to be taken into account when the path is calculated. So you may prefer to find a path with minimum delay.
In this way a lot of metrics can be applied in path calculation and a lot of QoS routing algorithms can be generated.
Link-optimization routingLink-constrained routingPath-optimization routingPath-constrained routingLink-constrained Path-optimization routingLink-constrained Link-optimization routingMulti-Path-constrained routingPath-constrained Path-optimization routingPath-constrained Link-optimization routingLink-constrained Path-constrained routingMulti-link-constrained routingBasic QoS Routing AlgorithmsComposite QoS Routing AlgorithmsQoS Routing Algorithms
In my survey on QoS routing algorithms I found a well cited reference which divides QoS routing schemes to two categories. The first group is called Basic QoS routing. In these algorithms only one QoS metric is considered. If this metric is related to a link parameter such as bandwidth, the resulting QoS routing will be called link-optimization or link-constrained routing. Examples include Maximum Bandwidth or the Widest path routing and Bandwidth constrained routing in which the path should have specific bandwidth on its bottleneck.The other case is when the metric is related to the whole path such as delay, then we have path optimization and path constrained routing. Examples include the minimum delay path and constrained delay path routing. The second group of QoS routing algorithms is called composite QoS routing. These QoS routing schemes are created by combining basic QoS routing algorithms. In these algorithms, usually one metric is optimized and one or more metrics are constrained. For instance an algorithm for finding a path with minimum delay and a specified value of bandwidth belongs to this group. Another possible combination is to combine multiple constrained metrics. For instance, a path with specified amount of bandwidth, delay and packet loss.
The routing frameworks design and implementation is done and is operational, unless a user interface should be designed to allow users select the QoS method which should be applied on flows.At the moment one method manually is selected and path are calculated accordingly.
Constraint ProgrammingCP 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
The main idea behind using constraint programming for this northbound interface is to separate the complexity from the user.
I believe this concept is represented in this image very well. While it might need a lot of effort to produce a chemical product, this