Telsoc - constraint programming
http://wombilical.net/topics/constraint-programming
enA New QoS Routing Northbound Interface for SDN
http://wombilical.net/journal/ajtde-v5-n1/a4-0
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><h2>1. Introduction</h2>
<p>Software Defined Networking (SDN) aims to improve network programmability, simplify network management and enhance network operation. It represents a paradigm shift in networking that decouples the control plane from the data plane, and places the control of the system in a logically centralised node, called <em>SDN controller</em>. Consequently, the SDN controller has a global view of the network, which facilitates the rapid development and deployment of new network services and applications (<a href="#McKeown_2009" rel="nofollow">McKeown 2009</a>). The SDN architecture consists of three layers, i.e. infrastructure, control and application layer. The control layer (SDN controller) provides key abstractions and network services for the application layer through the<em> northbound interface</em>. There is a range of SDN northbound interfaces with various functionalities, but no dominant standard has evolved so far (<a href="#Kreutz_2015" rel="nofollow">Kreutz et al. 2015</a>).</p>
<p>Today's networking environment necessitates using various <em>Quality of Service (QoS)</em> routing and <em>Traffic Engineering (TE)</em> techniques to optimise the traffic flow for different applications and traffic types, e.g. voice and video. The implementation of these QoS routing and TE applications, which can be complex, is not readily supported by current northbound interfaces. Despite the vital importance of these applications in networking, they still require a lot of low-level effort and a high degree of skills in order to be implemented in SDN.</p>
<p>In order to address this gap, this paper introduces a new SDN northbound interface. This interface is based on <em>Constraint-Programming (CP)</em> techniques to provide Software-defined Constrained Optimal Routing (SCOR). The main idea behind using CP methods in SCOR is to provide a level of abstraction and hide the complexity from the user.</p>
<p>In CP, users only state the constraints that the solution should have, and do not specify a step-by-step solution of the problem, as in the case of procedural programming. In other words, in CP users are only concerned with expressing or declaring the problem, and not with its solution. The solution is provided by a powerful general-purpose CP <em>solver</em>. SCOR provides an interface for expressing QoS routing applications, consisting of nine basic building blocks, i.e. <em>predicates</em>. We show in this paper that this interface is able to model both simple and complex QoS routing problems, in a very simple and compact manner. The scalability of SCOR is also evaluated through a number of example applications and a number of experiments.</p>
<p>SCOR is explained after a brief background in Section 2, and a short review on related works in Section 3. Section 4 explains the architecture of SCOR, and Section 5 and Section 6 describe its implementation and use cases. Section 7 discusses the evaluation methodology and results and Section 8 concludes the paper.</p>
<h2>2. Background: Constraint Programming</h2>
<p>Constraint-Programming (CP) techniques were initially introduced in the 1960s and 1970s in artificial intelligence and computer graphics. They have found applications in many fields such as operations research, programming languages and databases (<a href="#Rossi_2006" rel="nofollow">Rossi et al. 2006</a>). The main idea behind CP is to separate the expression of a problem from its solution. Users are only required to state the problem and the solution is found by general-purpose constraint solvers which are designed for this purpose.</p>
<p>This allows for very flexible modelling of problems and their efficient solution, for large, particularly combinatorial problems (<a href="#Bartak_1999" rel="nofollow">Bartak 1999</a>). In order to use CP to solve a real world problem, it must be stated in the form of a <em>CP model</em>. A CP model includes at least three parts:</p>
<ul><li>
<em>Decision variables</em> that represent tasks, metrics or resources of a real world problem.</li>
<li>
<em>Variable domains</em> that are a finite set of possible values for each decision variable.</li>
<li>
<em>Constraints</em> that state the relations (conditions, limitations, properties and bounds) between decision variables.</li>
</ul><p>The constraints in fact restrict the values that all decision variables can have for a particular solution (<a href="#Bartak_1999" rel="nofollow">Bartak 1999</a>). The solution of a CP model is the allocation of values to the decision variables from their domains that simultaneously satisfy all the constraints. Accordingly, CP problems are called <em>Constraint Satisfaction Problems (CSP)</em>. The solver can provide a single solution, the first one that satisfies the constraints, all possible solutions, or the one that maximises or minimises a provided objective function.</p>
<p>If an objective function is defined, the problem is called a <em>Constrained Optimisation Problem (OP) </em>(<a href="#Bartak_1999" rel="nofollow">Bartak 1999</a>). The solvers enumerate possible variable-value combinations intelligently and search the solution space either systematically or through some forms of complete or incomplete search methods. The performance of these methods depends on the nature and statement of the problem (<a href="#Rossi_2006" rel="nofollow">Rossi et al. 2006</a>).</p>
<h2>3. Related Works</h2>
<p>Different types of classifications are proposed for QoS routing in legacy networks. The classification shown in Fig. 1 is proposed by <a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt (1998</a>). It divides the unicast routing problems into two major categories: <em>basic</em> and <em>composite</em> routing problems. The criterion used for this classification is the <em>number of QoS metrics</em> applied in the problem. A basic routing problem includes only a single QoS metric such as delay, jitter or bandwidth. The routing problem in this case might consist of <em>metric optimisation</em>, such as finding a minimum delay path, or it might include <em>metric</em> <em>constraining</em>, such as finding a bandwidth-constrained path. In addition, the metric might be related to a <em>link parameter</em>, e.g. bandwidth, or it might be related to a <em>path parameter</em>, such as end-to-end delay. The composite routing problems represent multi-constraint QoS routing problems. They can be expressed as the combination of a single-metric-optimisation problem with one or more metric-constraining problems, or just the combination of two or more metric-constraining problems.</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034figure_1.jpg" title=" Basic and composite QoS routing problems "><img alt=" Basic and composite QoS routing problems " class="image-large" height="392" src="/sites/default/files/images/tja/2017034figure_1.jpg" title=" Basic and composite QoS routing problems " width="600" /></a></p>
<p>Figure 1 : Basic and composite QoS routing problems (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
<p> </p>
<p>In SDN though, limited work has been done on QoS routing problems. Indeed, there is currently no northbound interface that provides the required abstractions for implementing all the above basic and composite QoS routing algorithms. While there exist a number of controller-proprietary northbound interfaces, they tend to deal with packet and port-level manipulations rather than higher-level routing and QoS routing abstractions. The PANE controller (<a href="#Ferguson_2013" rel="nofollow">Ferguson et al. 2013</a>) and SFNet northbound interface (<a href="#Yap_2010" rel="nofollow">Yap et al. 2010</a>) are two examples of implementing QoS abstractions in SDN. However, their limited functionality and scope restricts the range of QoS routing applications that can be implemented.</p>
<p>DEFO (<a href="#Hartert_2015" rel="nofollow">Hartert et al. 2015</a>) is a recent approach to control forwarding paths in <em>non-SDN</em> carrier grade networks. It uses CP for network optimisation and to efficiently address QoS routing requirements. Using CP and new heuristics has enabled DEFO to achieve a significant increase in scalability and flexibility in traditional networks. While DEFO includes features for expressing QoS routing and TE requirements using CP, it has not been designed for SDNs, and does not provide a suitable northbound interface. In this paper, we are trying to address this gap, by providing a new northbound interface in SDN that facilitates development of QoS routing and traffic engineering applications in an efficient and scalable way.</p>
<h2>4. Architecture</h2>
<p>Fig. 2 shows the integration of SCOR in the SDN architecture, between the application and control layer. SCOR consists of two layers which represent two levels of programming abstractions. The bottom level is the generic <em>CP-based Programming Language</em> and the higher level is the set of <em>predicates</em> which form the <em>QoS Routing and TE Interface</em>. The second layer, the QoS routing and TE interface, is specifically designed to address QoS routing and TE requirements. It consists of 10 building blocks or predicates, as listed in Table 1.</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034figure_2.jpg" title=" Situation of SCOR in the SDN architecture"><img alt=" Situation of SCOR in the SDN architecture" class="image-large" height="498" src="/sites/default/files/images/tja/2017034figure_2.jpg" title=" Situation of SCOR in the SDN architecture" width="600" /></a></p>
<p>Figure 2 : Situation of SCOR in the SDN architecture</p>
<p> </p>
<p>The most basic concept in routing that we need to model in SCOR is that of a <em>network path</em>, i.e. a sequence of links which connect two nodes. The <em>network path</em> predicate defines a loop-free path from a flow source to its destination. The rest of the predicates implement other constraints which are required in QoS routing applications such as <em>capacity constraint</em> and <em>cost</em>. These are the required building blocks for modelling both basic and composite routing problems as seen in Fig. 1.</p>
<p>The <em>capacity guarantee</em> predicate implements the capacity constraint, which guarantees flows are placed only on links that can accommodate them. Whenever flow demands are considered in a QoS routing application, knowing the available capacity in the network is necessary for accommodating them. The <em>residual capacity</em> predicate is created to provide these values by defining the residual capacity of all links, assuming all the known flow demands are routed. The <em>capacity limit</em> predicate removes links with a capacity less than a specified limit from the path calculation. The <em>path bottleneck</em> predicate defines the bottleneck capacity for a given path, which is required when considering the bandwidth optimisation problem in QoS routing. The path cost, a frequently utilised networking concept, is modelled by the <em>path cost</em> predicate. It is possible to assign various parameters for the cost, such as loss, delay, round trip time (RTT), number of hops, etc.</p>
<p> </p>
<p>Table 1: Set of predicates forming QoS routing and TE interface of SCOR</p>
<table><tbody><tr><td>
<p><strong>Item</strong></p>
</td>
<td>
<p><strong>Predicate Name</strong></p>
</td>
<td>
<p><strong>Functionality</strong></p>
</td>
</tr><tr><td>
<p>1</p>
</td>
<td>
<p><em>network path</em></p>
</td>
<td>
<p>Defines the paths from a flow source <em>s</em> to a flow destination <em>t</em></p>
</td>
</tr><tr><td>
<p>2</p>
</td>
<td>
<p><em>capacity guarantee</em></p>
</td>
<td>
<p>Applies the capacity constraint on flows in a given graph</p>
</td>
</tr><tr><td>
<p>3</p>
</td>
<td>
<p><em>residual capacity</em></p>
</td>
<td>
<p>Defines the residual capacity of links of a graph for a set of flows</p>
</td>
</tr><tr><td>
<p>4</p>
</td>
<td>
<p><em>capacity limit</em></p>
</td>
<td>
<p>Removes all links with a capacity less than a specified value</p>
</td>
</tr><tr><td>
<p>5</p>
</td>
<td>
<p><em>path bottleneck</em></p>
</td>
<td>
<p>Declares the bottleneck capacity of a flow path in a given graph</p>
</td>
</tr><tr><td>
<p>6</p>
</td>
<td>
<p><em>path cost</em></p>
</td>
<td>
<p>Defines the total cost of a flow path in a given graph</p>
</td>
</tr><tr><td>
<p>7</p>
</td>
<td>
<p><em>delay</em></p>
</td>
<td>
<p>Defines the queueing delay for the given set of flows and graph</p>
</td>
</tr><tr><td>
<p>8</p>
</td>
<td>
<p><em>congestion</em></p>
</td>
<td>
<p>Defines the congestion for the given set of flows and graph</p>
</td>
</tr><tr><td>
<p>9</p>
</td>
<td>
<p><em>link utilisation</em></p>
</td>
<td>
<p>Defines the link utilisation for the given set of flows and graph</p>
</td>
</tr><tr><td>
<p>10</p>
</td>
<td>
<p><em>node capacity</em></p>
</td>
<td>
<p>Applies the constraint on the total flows entering or exiting nodes</p>
</td>
</tr></tbody></table><p> </p>
<p>There are TE problems in which the desired network parameters dynamically change with the traffic. For instance, the queueing delay in each network node not only depends on the capacity of network paths, but it also depends on the amount of traffic flowing into the network. These TE applications which are mostly defined based on the residual capacity concept are covered by the <em>delay</em>, <em>congestion</em> and <em>link utilisation</em> predicates.</p>
<p>The last predicate, node capacity, is designed to model the half-duplex transmission nature of many wireless networks, as well as other shared media access networks. In the half-duplex transmission mode, a node can either send or receive data, but not both simultaneously. This can be stated as "the capacity of a half-duplex node to send the traffic is reduced by the amount of traffic it is currently receiving". It is possible to implement this concept or constraint in a range of ways, we have implemented it via imposing a total capacity constraint per node (i.e. network interface card), considering both ingress and egress traffic. This constraint is imposed in addition to other constraints, in particular the link capacity constraint.</p>
<p> </p>
<h2>5. Implementation</h2>
<p>SCOR is implemented in MiniZinc (<a href="#Nethercote_2007" rel="nofollow">Nethercote et al. 2007</a>) which is a declarative CP modelling language. It comes with a set of pre-packaged solvers, but it can easily use other solvers as well. The ease of implementation, simplicity, expressiveness and compatibility with many solvers has made it a good choice for the basis of SCOR. MiniZinc includes a rich library of <em>global constraints</em> which model high-level CP abstractions (<a href="#Nethercote_2007" rel="nofollow">Nethercote et al. 2007</a>). A problem is stated in MiniZinc in two parts, the <em>model</em> and <em>model data</em>. The model uses <em>parameters</em>, <em>decision variables</em> and <em>constraints</em> to describe the structure of a CP problem. The model data includes the values of static parameters that are determined when the problem is defined, e.g. in a separate file. The values of decision variables are undecided and they are determined by the solver. Different model data can be used with a single model to designate various problem scenarios (<a href="#Nethercote_2014" rel="nofollow">Nethercote et al. 2014</a>). MiniZinc includes <em>predicates</em> that are similar to functions or methods in procedural programming languages for creating abstractions, modularity and code reuse. Predicates define higher-level constraints and can be included in a model using an <em>include item</em> (e.g. <strong>include</strong> <em>"globals.mzn";</em>). MiniZinc expressions, syntax and a wide range of examples are explained in detail in the MiniZinc tutorial (<a href="#Marriott_2014" rel="nofollow">Marriott et al. 2014</a>).</p>
<p>Using the above-mentioned MiniZinc concepts, we can define the <em>network path</em> predicate, which plays a fundamental role in SCOR. The network path predicate uses the flow conservation concept to define a flow path. The flow conservation rule is explained as follows. We assume a directed graph representing a network topology.</p>
<p>The set of network nodes is represented by and represents the graph arcs i.e. network links. Links are assumed multi-weighted with the weights being scalars representing various link parameters such as capacity, delay and cost. The flow of a link defines the quantity of units, e.g. expressed in Kbps or Mbps, which flows between a source and a destination . Given the directed nature of , is not necessarily the same as . With this, the flow conservation rule can be stated as follows:</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034equation_1.jpg" title="Flow conservation rule equation"><img alt="Flow conservation rule equation" class="image-medium" height="75" src="/sites/default/files/images/tja/2017034equation_1.jpg" title="Flow conservation rule equation" width="300" /></a> (1)</p>
<p>Eq. 1states that for a unit flow, except for the source and destination , the sum of the flows arriving at each node is equal to sum of the flows leaving it. This constraint defines a network path, i.e. a contiguous list of links connecting a source and a destination node.</p>
<p>The MiniZinc code that defines the flow conservation rule and hence implements the <em>network path</em> predicate, is shown in Predicate 1. In this code and represent the number of nodes and links respectively, and and are the source and destination nodes of the flow. is a 2-dimensional array, with each row representing a link. In our implementation, a row (or link) consists of the following four elements , with and representing the source and destination node, and and representing 2 link weights. The choice of 2 for the number of link weights is arbitrary, and can easily be extended to any required number. , the Link Path Membership, is an array of binary decision variables, which indicate which links belong to a path. means that link belongs to a path, and means that it does not.</p>
<p>In lines 2-4 of Predicate 1, the flow conservation rule is applied to all nodes. Line 2 defines the total flow arriving at node . This is done by summing up the link-path-memberships of the links in which node is the destination node, i.e. . (The Boolean operator represents conjunction, i.e. logical AND.) Line 3 defines the total flow leaving node in a similar manner. Line 4 applies the equality constraint of the flow arriving and departing each node, with the exception of the source and destination nodes.</p>
<p> </p>
<table><tbody><tr><td>
<p><strong>Predicate 1:</strong> <em>network path</em></p>
</td>
</tr><tr><td>
<p>1: <strong>forall</strong>(i <strong>in</strong> 1..N<sub>nodes</sub>) (</p>
<p>2: node_flow_in[i] = <strong>sum</strong>(k <strong>in</strong> 1..N<sub>links</sub>) (<strong>if</strong> Links[k,2] = i <strong>then</strong> LPM[k] <strong>else</strong> 0 <strong>endif</strong>)</p>
<p> ?</p>
<p>3: node_flow_out[i] = <strong>sum</strong>(k <strong>in</strong> 1..N<sub>links</sub>) (<strong>if</strong> Links[k,1] = i <strong>then</strong> LPM[k] <strong>else</strong> 0 <strong>endif</strong>)</p>
<p> ?</p>
<p>4: node_flow_in[i] + (<strong>if</strong> i = s <strong>then</strong> 1 <strong>else</strong> 0 <strong>endif</strong>) = node_flow_out[i] + (<strong>if</strong> i = t <strong>then</strong> 1 <strong>else</strong> 0 <strong>endif</strong>)</p>
<p> ?</p>
<p>5: node_flow_in[i] <= 1 )</p>
</td>
</tr></tbody></table><p> </p>
<p>The definition of a path via the flow conservation rule expressed in lines 1-4 does not prohibit routing loops. The additional constraint in line 5, which says that a flow can arrive at a node at most once, guarantees paths are loop free. For simplicity, we have discussed the network path predicate for a single flow only. However, our implementation supports any number of flows.</p>
<p>Due to lack of space, we only discuss the core predicates here. The complete details of all SCOR predicates and their implementation are available in (<a href="#Layeghy_2016" rel="nofollow">Layeghy et al. 2016</a>).</p>
<h2>6. Use cases: QoS Routing Applications</h2>
<h3>6.1 Least Cost Path Routing</h3>
<p>In this section, we explain how we implemented basic least cost path routing using SCOR. We use our previously described representation of a network as a graph with multi-weighted links. In least cost path routing, the problem is to find a path with the minimum total cost between a source node and destination node (<a href="#Bertsekas_1998" rel="nofollow">Bertsekas 1998</a>). This can be stated as the following optimisation problem:</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034equation_2_3_4.jpg" title="Optimisation problem equations"><img alt="Optimisation problem equations" class="image-large" height="306" src="/sites/default/files/images/tja/2017034equation_2_3_4.jpg" title="Optimisation problem equations" width="600" /></a></p>
<p> </p>
<p>where flow is stated as the multiplication of its demand, , and , a binary variable indicating of whether the link is a part of the flow path. The parameter is the weight of link which represents the link cost. In practice, these cost values can be used to represent various link parameters such as delay, lease price, packet loss ratio, etc. This makes it possible to model the corresponding QoS routing algorithms in SCOR.</p>
<p>The solution of the problem can be stated as a sequence of links that connects the flow source to the flow destination and has the minimum sum of link costs. Several algorithms such as Dijkstra and Bellman-Ford can efficiently solve this problem in procedural programming (<a href="#Mir_2014" rel="nofollow">Mir 2014</a>). In SCOR though, the implementation only includes the declaration of the problem, and not how to solve it, as it can be seen in Model 1. Lines 1 and 2 are <em>include items</em> which make it possible to use two predicates, network path and path cost. Lines 3-7 declare the <em>parameters</em> which are required to model the least cost path problem. The array/matrix not only states the links start and end nodes, but it also states the corresponding values of link cost and capacity. Lines 8-9 also declare the two decision variables, and . The first variable, , represents the as declared in Eq. 4 and is the total cost of the flow path.</p>
<p>The main body of the program includes the <em>Constraints item</em> (lines 10-11) and the <em>Solve item</em> (line 12). The first constraint, network path predicate, defines the path from the flow source node to its destination node . The second constraint, path cost predicate, defines the cost associated with the path. The <em>solve item</em> indicates the objective, i.e. what the solver should optimise, which is the path cost.</p>
<table><tbody><tr><td>
<p><strong>Model 1:</strong> <em>Least Cost Path in SCOR</em></p>
</td>
</tr><tr><td>
<p><em>% Include items</em></p>
<p>1: <strong>include </strong>? Predicate network path.mzn?;</p>
<p>2: <strong>include </strong>? Predicate path cost.mzn?;</p>
<p><em>% Parameters</em></p>
<p>3: <strong>array </strong>[int,4] of <strong>int</strong>: Links;</p>
<p>4: <strong>int</strong>: N<sub>links</sub> = <strong>max</strong>(<strong>index_set_1of2</strong>(Links));</p>
<p>5: <strong>array </strong>[int] of <strong>int</strong>: Nodes;</p>
<p>6: <strong>int</strong>: s;</p>
<p>7: <strong>int</strong>: t;</p>
<p><em>% Decision Variables</em></p>
<p>8: <strong>array</strong> [1..N<sub>links</sub>] of <strong>var</strong> 0..1: LPM;</p>
<p>9: <strong>var</strong> <strong>int</strong>: Path_Cost;</p>
<p><em>% Constraints items</em></p>
<p>10: <strong>constraint</strong> network_path(LPM,Links,Nodes,s,t);</p>
<p>11: <strong>constraint</strong> path_cost(LPM,Links,Path_cost);</p>
<p><em>% Solve item</em></p>
<p>12: <strong>solve</strong> <strong>minimize</strong> Path_Cost</p>
</td>
</tr></tbody></table><p> </p>
<h3>6.2 Least Cost Path Routing with Capacity Constraint</h3>
<p>Using SCOR predicates as building blocks, it is easy to state a wide range of QoS routing problems. Here we explain how a new routing application can be defined by adding SCOR predicates to the previously implemented models. For instance, the least cost path routing with capacity/bandwidth constraint problem can be modelled by simply adding a new predicate to the least cost path routing model. In this problem, we are looking for the least cost path that provides a minimum end-to-end capacity of . This least cost path routing with capacity constraint problem can be formally stated as the following optimisation problem:</p>
<p> <a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034equation_5_6_7_8.jpg" title="Optimisation problem equations"> <img alt="Optimisation problem equations" class="image-large" height="347" src="/sites/default/files/images/tja/2017034equation_5_6_7_8.jpg" title="Optimisation problem equations" width="600" /></a> </p>
<p> where is the bandwidth/capacity constraint applied to the flow and other parameters are similar to those of the previous model. This is essentially the same as the least cost path routing problem, with the only addition of an additional constraint (8).</p>
<p>Our implementation of this problem is shown in Model 2 which only includes the lines of code added to Model 1. It shows that only three additional lines of code are required to turn the least cost path routing model into the least cost path routing with capacity constraints model. The first added line (line 1) is an <em>include</em> item which calls the <em>capacity limit</em> predicate. The next added line of code (line 2) defines a new parameter, , which states the associated bandwidth/capacity limit or bound. Finally, the last added line (line 3) is the new capacity constraint.</p>
<table><tbody><tr><td>
<p> <strong>Model 2:</strong> <em>Least Cost Path with Capacity Constraint in SCOR </em><em>(only lines not included in Least Cost Path model)</em></p>
</td>
</tr><tr><td>
<p>?</p>
<p><em>% Include items</em></p>
<p>1: <strong>include </strong>? Predicate capacity limit.mzn?;</p>
<p>?</p>
<p><em>% Parameters</em></p>
<p>2: <strong>int</strong>: Limit;</p>
<p>?</p>
<p><em>% Constraints items</em></p>
<p>3: <strong>constraint</strong> capacity_limit(LPM,Links,Limit);</p>
<p>?</p>
</td>
</tr></tbody></table><p> </p>
<h3>6.3 Maximum Residual Capacity Routing</h3>
<p>The third routing application modelled in SCOR is the M<em>aximum Residual Capacity</em> (MRC) routing. Unlike two previous models, this application addresses the problem of routing multiple concurrent flows in a network. The main objective here is to route flows in a network, so that the minimum residual link capacity is maximised. The residual (or available) capacity of a link is the difference between its capacity and the total flow passing through it. Sending a traffic flow in a way that the minimum available capacity of the network is maximised, increases the chance of having sufficient capacity to accommodate the next flow request (<a href="#Walkowiak_2006" rel="nofollow">Walkowiak 2006</a>).</p>
<p>This is a complex optimisation problem which is also known as the Non-Bifurcated Congestion (NBC) problem, in the context of multi-commodity flow problems. For a set of concurrent flows to be routed through where source of flow is and its destination is , the problem can be stated as the following optimisation problem (<a href="#Walkowiak_2006" rel="nofollow">Walkowiak 2006</a>):</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034equation_9_10_11_12_13.jpg" title="Optimisation problem equations"><img alt="Optimisation problem equations" class="image-large" height="369" src="/sites/default/files/images/tja/2017034equation_9_10_11_12_13.jpg" title="Optimisation problem equations" width="600" /></a> <a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/filefield_paths/2017034equation_14.jpg" title="Optimisation problem equations"> <img alt="Optimisation problem equations" class="image-large" height="133" src="/sites/default/files/images/tja/2017034equation_14.jpg" title="Optimisation problem equations" width="600" /></a> </p>
<p> The objective is to maximise (Eq. 9), where it is less than or equal to the residual capacity of all links (Eq. 10), subject to the capacity and flow conservation constraints. The residual capacity of the links, , is given by (Eq. 11). The capacity constraint (Eq. 12) states the total flow of a link, , should be less than or equal to the link's capacity, The total flow of a link, , is sum of all individual flows on the link, (Eq. 13). Finally, Eq. 14 is the flow conservation rule for a single flow with a demand of . In order to implement the flow conservation for individual flows with non-unitary demands, flows are stated as:</p>
<p> <a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034equation_15.jpg" title="Flow equations"> <img alt="Flow equations" class="image-large" height="88" src="/sites/default/files/images/tja/2017034equation_15.jpg" title="Flow equations" width="600" /></a> </p>
<p>where is equivalent to the previously mentioned link-path-membership variable.</p>
<p>A wide range of heuristic solutions for the above problem have been presented in the context of procedural programming, which typically are complex and require many lines of code for the implementation. In contrast, the implementation in SCOR, shown in Model 3, is as simple as the least cost path routing model. The key difference is contained to lines 13 and 14, which implement the residual capacity constraint and state the optimisation objective. Similar to Model 1, lines 1-2 are include items which call two predicates, <em>network path</em> and <em>capacity guarantee</em>. Lines 3-9 define the parameters such as , , etc. Line 10-11 declare the two decision variables, and , that define link-path-membership and the residual capacity of links respectively. Line 12 implements the <em>network path</em> constraint and line 13 implements the <em>capacity guarantee</em> constraint which defines the residual capacity and constrains them to be greater than or equal to zero (implementing Eq. 11 and Eq. 12). Finally, line 14 states the objective function, which aims to maximise the minimum of (implementing Eq. 9 and Eq. 10).</p>
<table><tbody><tr><td>
<p><strong>Model 3:</strong> <em>Maximum Residual Capacity in SCOR</em></p>
</td>
</tr><tr><td>
<p><em>% Include items</em></p>
<p>1: <strong>include </strong>? Predicate network path.mzn?;</p>
<p>2: <strong>include </strong>? Predicate capacity guarantee.mzn?;</p>
<p><em>% Parameters</em></p>
<p>3: <strong>array </strong>[int,4] of <strong>int</strong>: Links;</p>
<p>4: <strong>int</strong>: N<sub>links</sub> = <strong>max</strong>(<strong>index_set_1of2</strong>(Links));</p>
<p>5: <strong>array </strong>[int] of <strong>int</strong>: Nodes;</p>
<p>6: <strong>array </strong>[int] of <strong>int</strong>: Flows;</p>
<p>7: <strong>int</strong>: N<sub>flows</sub> = <strong>max</strong>(<strong>index_set</strong>(Flows));</p>
<p>8: <strong>array </strong>[1..N<sub>flows</sub>] of <strong>int</strong>: s;</p>
<p>9: <strong>array </strong>[1..N<sub>flows</sub>] of <strong>int</strong>: t;</p>
<p><em>% Decision Variables</em></p>
<p>10: <strong>array </strong>[1..N<sub>links</sub>,1..N<sub>flows</sub>] of <strong>var</strong> 0..1: LPM;</p>
<p>11: <strong>array </strong>[1..N<sub>links</sub>] of <strong>var</strong> <strong>int</strong>: Residuals;</p>
<p><em>% Constraints items</em></p>
<p>12: <strong>constraint</strong> network_path(LPM,Links,Nodes,s,t);</p>
<p>13: <strong>constraint</strong> capacity_guarantee(LPM,Links,Flows, Residuals);</p>
<p><em>% Solve item</em></p>
<p>14: <strong>solve</strong> <strong>maximize min</strong>(Residuals);</p>
</td>
</tr></tbody></table><p> </p>
<h3>6.3 Wireless Maximum Residual Capacity Routing</h3>
<p>The Wireless Maximum Residual Capacity (WMRC) model aims to extend the previous model, by considering the half-duplex nature of many wireless networks nodes. In half-duplex networks, a node can either send or receive, but not both at the same time. This essentially limits the capacity of the node. We have modelled this constraint in the new <em>node capacity</em> predicate in SCOR, and we will demonstrate its use for residual capacity routing in wireless (half-duplex) networks.</p>
<p>The mathematical formulation of the problem is similar to previous problem, maximum residual capacity routing, with the addition of the following additional constraint:</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034equation_16.jpg" title="Constraint equation"><img alt="Constraint equation" class="image-large" height="94" src="/sites/default/files/images/tja/2017034equation_16.jpg" title="Constraint equation" width="600" /></a> Here, is the node capacity/limit that indicates the total traffic flow that a node can handle. This equation constraints the total flows entering and leaving a node to be equal or less than . As mentioned, this extra constraint is implemented in the <em>node capacity</em> predicate and is added to Model 3. The implementation of WMRC is shown in Model 4. The first added line (line 1) calls the <em>node capacity</em> predicate, the second line (line 2) declares a new parameter, , which defines the acceptable amount of flows for each node, and line 3 applies the above constraint (Eq. 16).</p>
<p> </p>
<table><tbody><tr><td>
<p><strong>Model 4:</strong> <em>Wireless Maximum Residual Capacity in SCOR (only lines not included in Maximum Residual Capacity model)</em></p>
</td>
</tr><tr><td>
<p>?</p>
<p><em>% Include items</em></p>
<p>1: <strong>include </strong>? Predicate node capacity.mzn?;</p>
<p>?</p>
<p><em>% Parameters</em></p>
<p>2: <strong>array</strong>[int] of <strong> int</strong>: Nodes_Capacities;</p>
<p>?</p>
<p><em>% Constraints items</em></p>
<p>3: <strong>constraint</strong> node_capacity(LPM,Links,Flows,Nodes_Capacities);</p>
<p>?</p>
</td>
</tr></tbody></table><p> </p>
<p>In order to illustrate how adding the new constraint affects the paths found by the model and consequently the network performance, we use the below scenario. In the network topology shown in Fig. 3, there are three concurrent flows with equal demand of 1 Mbps to be routed from node S1 to node S7. All links are bidirectional with an equal capacity of 1 Mbps in each direction (bidirectional links are mathematically represented using two unidirectional links). (To illustrate the concept, we assume nodes S1 and S7 have no node capacity limitations, e.g. they are equipped with faster or multiple network interfaces. ) Shortest path routing, which uses only one of the three equivalent shortest paths from node to node , theoretically can send 1 Mbps as shown in Fig. 4.</p>
<p>For this scenario, the MRC model finds the three paths as the following sequence of links (shown in Fig. 3-a):</p>
<ul><li><em>f1: {(S1,S2),(S2,S6),(S6,S7)}</em></li>
<li><em>f2: {(S1,S5),(S5,S6),(S6,S2),(S2,S3),(S3,S7)}</em></li>
<li><em>f3: {(S1,S4),(S4,S8),(S8,S7)}</em></li>
</ul><p>The path <em>f2</em> is not the shortest possible path from node to node , though, it is a valid path according to the criteria for the maximum residual capacity routing. Although links and are both connecting node and , they are considered separate links in full duplex transmission. So the three concurrent flows of 1 Mbps are successfully transmitted to the destination node.</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034figure_3.jpg" title=" Paths found for three concurrent flows from node 1 to node 7 using a) Maximum residual capacity model (MRC), and b) Wireless maximum residual capacity model (WMRC)"><img alt=" Paths found for three concurrent flows from node 1 to node 7 using a) Maximum residual capacity model (MRC), and b) Wireless maximum residual capacity model (WMRC)" class="image-large" height="337" src="/sites/default/files/images/tja/2017034figure_3.jpg" title=" Paths found for three concurrent flows from node 1 to node 7 using a) Maximum residual capacity model (MRC), and b) Wireless maximum residual capacity model (WMRC)" width="600" /></a></p>
<p>Figure 3: Paths found for three concurrent flows from node 1 to node 7 using a) Maximum residual capacity model (MRC), and b) Wireless maximum residual capacity model (WMRC)</p>
<p> </p>
<p>However, in networks which use half-duplex transmission, the situation is different. For these networks, the traffic received by a node limits the amount of traffic that can be simultaneously sent by that node. In this case, the theoretical throughput from node to node , using the three paths found by the MRC model, is only about 2 Mbps, as shown in Fig. 4. The reason for the limited performance in this case is node <em>S6, </em>which needs to receive and transmist two flows simultaneously, and hence is the bottleneck.</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034figure_4.jpg" title=" Theoretical throughput for three concurrent flows of 1 Mbps in a half duplex network with a topology as shown in Fig. 3 (node is the source and node is destination) in the case of Shortest path routing, MRC and WMRC models"><img alt=" Theoretical throughput for three concurrent flows of 1 Mbps in a half duplex network with a topology as shown in Fig. 3 (node is the source and node is destination) in the case of Shortest path routing, MRC and WMRC models" class="image-large" height="354" src="/sites/default/files/images/tja/2017034figure_4.jpg" title=" Theoretical throughput for three concurrent flows of 1 Mbps in a half duplex network with a topology as shown in Fig. 3 (node is the source and node is destination) in the case of Shortest path routing, MRC and WMRC models" width="600" /></a></p>
<p>Figure 4: Theoretical throughput for three concurrent flows of 1 Mbps in a half duplex network with a topology as shown in Fig. 3 (node is the source and node is destination) in the case of Shortest path routing, MRC and WMRC models</p>
<p> </p>
<p>Now we use Model 4, WMRC, to find the paths. Since it considers the half-duplex nature of links, modelled as a node capacity limit of 1 Mbps, the WMRC model finds the following three flow paths (shown in Fig. 3-b):</p>
<ul><li><em>f1: {(S1,S2),(S2,S3),(S3,S7)}</em></li>
<li><em>f2: {(S1,S5),(S5,S6),(S6,S7)}</em></li>
<li><em>f3: {(S1,S4),(S4,S8),(S8,S7)}</em></li>
</ul><p>As in the previous case, all links have a capacity of 1 Mbps, and we impose a node capacity limit of 1 Mbps for each node except source and destination, i.e. S1 and S7. As a result of the half-duplex constraint in the WMRC, the impact of node bottlenecks can be minimised, and the aggregate throughput achieved by the above shown 3 paths is 3 Mbps, instead of 2 Mbps of MRC. </p>
<p>This example tries to show how easy it is to add/model new network constraints and features in SCOR, and consequently how easy it is to implement complex QoS routing problems. Our WMRC example is very simple and it only addresses one particular aspect of typical wireless networks, i.e. the half-duplex nature of transmission. The modularity and extendebility of SCOR allows us to easily add further predicates and building blocks, which can model more complex aspects of wireless networks, such as interference.</p>
<h2>7. Evaluation</h2>
<p>The evaluation of SCOR includes two aspects, the first one being the completeness of the API, i.e. the set of predicates, and its ability to concisely express a wide range of QoS routing problems. The second aspect is the efficiency and scalability of finding valid solutions. The completeness aspect of SCOR was briefly discussed in Section 4. SCOR's set of predicates support the modelling of all QoS routing problems, as classified in Fig. 1. Table 2 shows a list of basic and composite QoS routing problems which we were able to model and solve with SCOR. The table shows the SCOR predicates that were used for each problem, as well as the number of lines of SCOR/MiniZinc code (excluding boilerplate code) that were required for the problem formulation. The <em>network path</em> predicate is used in all of these problems and models, and in order to save space, we did not include it in the table.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>Table 2: QoS routing algorithms and predicates to model them in SCOR</p>
<table><tbody><tr><td>
<p><strong>QoS Routing Problem</strong></p>
</td>
<td>
<p> <strong>SCOR Predicates</strong></p>
</td>
<td>
<p><strong>#Lines</strong></p>
</td>
</tr><tr><td>
<p>Shortest Path</p>
</td>
<td>
<p> path cost</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Widest Path (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p> path bottleneck</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Bandwidth-Guarantee (<a href="#Ma_1997" rel="nofollow">Ma & Steenkiste 1997</a>)</p>
</td>
<td>
<p> capacity guarantee</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Bandwidth-Constrained (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p> capacity limit</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Minimum-Loss (<a href="#Moreira_2008" rel="nofollow">Moreira et al. 2008</a>)</p>
</td>
<td>
<p> path cost</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Minimum-Delay (<a href="#Moreira_2008" rel="nofollow">Moreira et al. 2008</a>)</p>
</td>
<td>
<p> path cost</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Minimum-Delay (<a href="#Gallager_1977" rel="nofollow">Gallager 1977</a>)</p>
</td>
<td>
<p> delay</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Delay-Constrained (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p> path cost</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Least-Cost (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p> path cost</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Maximum Residual Capacity (<a href="#Walkowiak_2006" rel="nofollow">Walkowiak 2006</a>)</p>
</td>
<td>
<p> capacity guarantee</p>
</td>
<td>
<p>3</p>
</td>
</tr><tr><td>
<p>Delay-Constrained Least-Cost (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p> path cost </p>
</td>
<td>
<p>4</p>
</td>
</tr><tr><td>
<p>Delay-Delay Jitter-Constrained (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p> path cost </p>
</td>
<td>
<p>4</p>
</td>
</tr><tr><td>
<p>Bandwidth-Delay-Constrained (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p> capacity limit, path cost</p>
</td>
<td>
<p>4</p>
</td>
</tr><tr><td>
<p>Least-Delay Bandwidth-Constrained (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p>capacity limit, path cost</p>
</td>
<td>
<p>4</p>
</td>
</tr><tr><td>
<p>Minimum Cost Bandwidth-Constrained (<a href="#Patel_2004" rel="nofollow">Patel et al. 2004</a>)</p>
</td>
<td>
<p> capacity guarantee, path cost</p>
</td>
<td>
<p>4</p>
</td>
</tr><tr><td>
<p>Delay-Constrained Bandwidth-Optimisation (<a href="#Chen_1998" rel="nofollow">Chen & Nahrstedt 1998</a>)</p>
</td>
<td>
<p>path bottleneck, path cost</p>
</td>
<td>
<p>4</p>
</td>
</tr><tr><td>
<p>Widest Shortest Path (<a href="#Curado_2004" rel="nofollow">Curado & Monteiro 2004</a>)</p>
</td>
<td>
<p>path bottleneck, path cost</p>
</td>
<td>
<p>6</p>
</td>
</tr><tr><td>
<p>Shortest Widest Path (<a href="#Curado_2004" rel="nofollow">Curado & Monteiro 2004</a>)</p>
</td>
<td>
<p>path bottleneck, path cost</p>
</td>
<td>
<p>6</p>
</td>
</tr></tbody></table><p> </p>
<p>Table 2 clearly shows the expressiveness of SCOR and its power to model complex QoS routing problems. Furthermore, we see that the formulation in SCOR is extremely compact, with a maximum of 4 lines of SCOR/MiniZinc code. This is due SCOR's high level of abstraction.</p>
<p>The second, equally important aspect in the evaluation of SCOR is its scalability and ability to quickly and efficiently find valid solutions to the routing problems. For this, we examined the solve-time of the three implemented QoS routing problems for two network topologies and a range of network sizes. We considered grid and fat-tree topologies in our experiments. The fat-tree topology we used is defined in (<a href="#Al_Fares_2008" rel="nofollow">Al-Fares et al. 2008</a>). It is parametrised by , and consists of three layers, with nodes in the core layer, nodes in the aggregation layer, and nodes in the access layer. Each access node (switch) is connected to hosts.</p>
<p>Fig. 5 displays the solve-time for the Least Cost Path and Least Cost Path with Capacity Constraint routing problems with SCOR. For our experiments, we used MiniZinc's default solver. All experiments were run on a Dell PC with Intel Core i7-4790 CPU and 16 GB of RAM, running Linux with the kernel version of 3.13.0-24-generic. The x-axis shows the network size, and the y-axis shows the solve-time in milliseconds. As can be seen, for both routing problems, the solve time remains below 500 ms, even for relatively large network sizes of greater than 350 nodes. This demonstrates the practical feasibility of using SCOR/MiniZinc to solve complex routing problems in near real time.</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034figure_5.jpg" title=" Solve time for the Least Cost Path and Least Cost Path with Capacity Constraint problem in fat-tree and grid topologies with various network sizes"><img alt=" Solve time for the Least Cost Path and Least Cost Path with Capacity Constraint problem in fat-tree and grid topologies with various network sizes" class="image-large" height="378" src="/sites/default/files/images/tja/2017034figure_5.jpg" title=" Solve time for the Least Cost Path and Least Cost Path with Capacity Constraint problem in fat-tree and grid topologies with various network sizes" width="600" /></a></p>
<p>Figure 5: Solve time for the Least Cost Path and Least Cost Path with Capacity Constraint problem in fat-tree and grid topologies with various network sizes</p>
<p> </p>
<p>A key benefit of SCOR is that it shields the user from the complexity of solving hard optimisation problems. SCOR leverages the power of highly sophisticated constrained optimisation solvers, such as those provided with MiniZinc. The advantage of our approach is particularly significant for QoS routing problems for which no efficient solution/algorithm exists, and which rely on heuristics. An example is the maximum residual capacity routing problem (<a href="#Walkowiak_2006" rel="nofollow">Walkowiak 2006</a>).</p>
<p>Fig. 6 compares the solve-time for the maximum residual capacity routing problem in SCOR, with an algorithm using a <em>linear programming (LP)</em> approach, presented in <a href="#Walkowiak_2006" rel="nofollow">Walkowiak (2006</a>). The LP solution is implemented in Python using the NetworkX and PuLP (<a href="#Mitchell_2011" rel="nofollow">Mitchell et al. 2011</a>) libraries. We used the same regular grid and fat-tree topologies of varying sizes as in our previous experiment. As before, the x-axis shows the network size, and the y-axis shows the solve-time in ms. Due to the multiple order of magnitude better performance of SCOR/MiniZinc, we used a logarithmic scale for the y-axis. The LP algorithm was not able to find a solution for a network size of 50 nodes or more, even in a time of 24 hours. In contrast, SCOR/MiniZinc was able to find solutions in under a second, even for networks with more than 350 nodes.</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034figure_6.jpg" title=" The solution time for the Maximum Residual Capacity problem compared to LP in fat-tree and grid topologies with various network sizes"><img alt=" The solution time for the Maximum Residual Capacity problem compared to LP in fat-tree and grid topologies with various network sizes" class="image-large" height="355" src="/sites/default/files/images/tja/2017034figure_6.jpg" title=" The solution time for the Maximum Residual Capacity problem compared to LP in fat-tree and grid topologies with various network sizes" width="600" /></a></p>
<p>Figure 6: The solution time for the Maximum Residual Capacity problem compared to LP in fat-tree and grid topologies with various network sizes</p>
<p> </p>
<p>Hence, SCOR is able to solve complex optimisation problems, such as maximum residual capacity routing, with a speed that is at least as fast as comparable prodecurable programming solutions. The benefit of SCOR lies in the power of its abstraction, its modularity, and simplicity in which complex QoS routing problems can be expressed and solved. </p>
<p>Fig. 7 shows the comparison of solve times of the MRC and WMRC model. The figure compares the solve times for different network sizes and various numbers of concurrent flows in each sub-figures. Fig. 7a compares the solve times for routing a single flow, Fig. 7b two concurrent flows, Fig. 7c three concurrent flows, and finally Fig. 7d compares the solve time for routing four concurrent flows. These results indicate that the added constraint does not increase the solve time significantly, it even reduces the solve time for the WMRC model compared to MRC in some cases (Fig. 7a and 7c).</p>
<p><a class="colorbox colorbox-insert-image" data-colorbox-gallery="gallery-all" href="https://wombilical.net/sites/default/files/images/tja/2017034figure_7.jpg" title=" The solution time for the Maximum Residual Capacity (MRC) model and Wireless Maximum Residual Capacity (WMRC) model in grid topologies with various network sizes in the case a) One flow, b) Two concurrent flows, c) Three concurrent flows, and d) Four concurrent flows"><img alt=" The solution time for the Maximum Residual Capacity (MRC) model and Wireless Maximum Residual Capacity (WMRC) model in grid topologies with various network sizes in the case a) One flow, b) Two concurrent flows, c) Three concurrent flows, and d) Four concurrent flows" class="image-large" height="403" src="/sites/default/files/images/tja/2017034figure_7.jpg" title=" The solution time for the Maximum Residual Capacity (MRC) model and Wireless Maximum Residual Capacity (WMRC) model in grid topologies with various network sizes in the case a) One flow, b) Two concurrent flows, c) Three concurrent flows, and d) Four concurrent flows" width="600" /></a></p>
<p>Figure 7: The solution time for the Maximum Residual Capacity (MRC) model and Wireless Maximum Residual Capacity (WMRC) model in grid topologies with various network sizes in the case a) One flow, b) Two concurrent flows, c) Three concurrent flows, and d) Four concurrent flows</p>
<p> </p>
<p>Similar results regarding the power of CP solvers, supporting our findings, were also reported in (Hartert et al. 2015). The authors considered the use of CP programming to solve routing problems in traditional, non-SDN networks, and reported a multiple order of magnitude faster solve-time of the CP solver compared to an LP approach. In summary, SCOR's expressiveness and solving efficiency of complex QoS routing problems has shown very promising results in both aspects. We have implemented SCOR as a component on the POX SDN controller platform. More details on the implementation are available in our technical report (<a href="#Layeghy_2016" rel="nofollow">Layeghy et al. 2016</a>).</p>
<h2>8. Conclusion</h2>
<p>The main contribution of this work is the introduction of a new northbound interface for SDN, based on constraint-programming techniques. The fundamental goal in the design of this northbound interface is to reduce the complexity of implementing QoS routing and TE applications in SDN, by providing an appropriate level of abstraction. SCOR, the proposed solution, provides the necessary building blocks, i.e. the predicates, to express complex routing problems in a very compact and simple manner, as we have demonstrated. A key aspect is the ease in which predicates can be combined, nested and reused.</p>
<p>A powerful aspect of SCOR, which it inherits from constraint programming, is the separation of the problem formulation and its solution. SCOR's layer of abstraction hides the complexity of the problem solution from the user, and therefore greatly simplifies the implementation of new routing and traffic engineering applications. The increased level of abstraction and simplicity does not at all come at a cost of reduced efficiency. Through the use of powerful generic constraint programming solvers, solutions to complex QoS routing problems can be found faster than through traditional procedural programming solutions, in some cases by orders of magnitude, as we have shown.</p>
<p>While we have focused on the application of SCOR for QoS routing and traffic engineering, we believe it has wider applicability, e.g. in security. We can envisage that security policies can be expressed as constraints in SCOR, and the guaranteed enforcement is delegated to the solver.</p>
<p>As mentioned, SCOR is currently implemented as a component in the POX controller. We are currently working on an implementation of SCOR in ONOS (Berde et al. 2014). We believe that SCOR adds a powerful and practical layer of abstraction to SDN, which greatly simplifies the problem of QoS routing, traffic engineering and possibly a range of other network applications.</p>
<h2>References</h2>
<p><a name="Al_Fares_2008" id="Al_Fares_2008"></a>Al-Fares, M.; Loukissas, A.; Vahdat, A. (2008). <em>A scalable, commodity data center network architecture.</em> Paper presented at the Proceedings of the ACM SIGCOMM 2008 conference on Data communication, Seattle, WA, USA.</p>
<p><a name="Bartak_1999" id="Bartak_1999"></a>Bartak, R. (1999). <em>Constraint Programming: In Pursuit of the Holy Grail.</em> Paper presented at the In Proceedings of the Week of Doctoral Students (WDS99 -invited lecture).</p>
<p><a name="Berde_2014" id="Berde_2014"></a>Berde, P.; Gerola, M.; Hart, J.; Higuchi, Y.; Kobayashi, M.; Koide, T.; Lantz, B.; O'Connor, B.; Radoslavov, P.; Snow, W.; Parulkar, G. (2014). <em>ONOS: towards an open, distributed SDN OS.</em> Paper presented at the Proceedings of the third workshop on Hot topics in software defined networking, Chicago, Illinois, USA.</p>
<p><a name="Bertsekas_1998" id="Bertsekas_1998"></a>Bertsekas, D. P. (1998). <em>Network optimization: continuous and discrete models</em>. Belmont Massachusetts, USA: Athena Scientific.</p>
<p><a name="Chen_1998" id="Chen_1998"></a>Chen, S.; Nahrstedt, K. (1998). An overview of quality-of-service routing for next-generation high-speed networks: problems and solutions. <em>Network, IEEE, 12</em>(6), 64-79. doi:10.1109/65.752646</p>
<p><a name="Curado_2004" id="Curado_2004"></a>Curado, M.; Monteiro, E. (2004). <em>A survey of QoS routing algorithms.</em> Paper presented at the International Conference on Information Technology (ICIT 2004), Istanbul, Turkey.</p>
<p><a name="Ferguson_2013" id="Ferguson_2013"></a>Ferguson, A. D.; Guha, A.; Liang, C.; Fonseca, R.; Krishnamurthi, S. (2013). Participatory networking: an API for application control of SDNs. <em>SIGCOMM Comput. Commun. Rev., 43</em>(4), 327-338. doi:10.1145/2534169.2486003</p>
<p><a name="Gallager_1977" id="Gallager_1977"></a>Gallager, R. G. (1977). A Minimum Delay Routing Algorithm Using Distributed Computation. <em>IEEE Transactions on Communications, 25</em>(1), 73-85. doi:10.1109/TCOM.1977.1093711</p>
<p><a name="Hartert_2015" id="Hartert_2015"></a>Hartert, R.; Filsfils, C.; Vissicchio, S.; Telkamp, T.; Schaus, P.; Francois, P.; Bonaventure, O. (2015). <em>A Declarative and Expressive Approach to Control Forwarding Paths in Carrier-Grade Networks.</em> Paper presented at the ACM Conference on Special Interest Group on Data Communication - SIGCOMM '15, New York.</p>
<p><a name="Moreira" id="Moreira"></a><a name="Kreutz_2015" id="Kreutz_2015"></a>Kreutz, D.; Ramos, F. M. V.; Verissimo, P. E.; Rothenberg, C. E.; Azodolmolky, S.; Uhlig, S. (2015). Software-Defined Networking: A Comprehensive Survey. <em>Proceedings of the IEEE, 103</em>(1), 14-76. doi:10.1109/JPROC.2014.2371999</p>
<p><a name="Layeghy_2016" id="Layeghy_2016"></a>Layeghy, S.; Pakzad, F.; Portmann, M. (2016). SCOR: Software-defined Constrained Optimal Routing Platform for SDN. <em>arXiv preprint arXiv:1607.03243</em>.</p>
<p><a name="Ma_1997" id="Ma_1997"></a>Ma, Q.; Steenkiste, P. (1997). Quality-of-Service Routing for Traffic with Performance Guarantees. In A. Campbell & K. Nahrstedt (Eds.), <em>Building QoS into Distributed Systems</em> (pp. 115-126): Springer US.</p>
<p><a name="Marriott_2014" id="Marriott_2014"></a>Marriott, K.; Stuckey, P. J.; Koninck, L. D.; Samulowitz, H. (2014). A MiniZinc Tutorial. Retrieved from <a href="https://www.minizinc.org/downloads/doc-latest/minizinc-tute.pdf">https://www.minizinc.org/downloads/doc-latest/minizinc-tute.pdf</a></p>
<p><a name="McKeown_2009" id="McKeown_2009"></a>McKeown, N. (2009). Software-defined networking. <em>INFOCOM keynote talk, 17</em>(2), 30-32.</p>
<p><a name="Mir_2014" id="Mir_2014"></a>Mir, N. (2014). <em>Computer and Communication Networks, 2nd Edition</em> (Vol. 1). London: Prentice Hall.</p>
<p><a name="Mitchell_2011" id="Mitchell_2011"></a>Mitchell, S.; OSullivan, M.; Dunning, I. (2011). PuLP: a linear programming toolkit for python. <em>The University of Auckland, Auckland, New Zealand, <a href="http://www">http://www</a>. optimization-online. org/DB_FILE/2011/09/3178. pdf</em>.</p>
<p><a name="Moreira_2008" id="Moreira_2008"></a>Moreira Jr, W. A. M.; Aguiar, E.; Abel?m, A.; Stanton, M. (2008). Using multiple metrics with the optimized link state routing protocol for wireless mesh networks. <em>Simp?Usio Brasileiro de Redes de Computadores e Sistemas DistribuIdos</em>.</p>
<p><a name="Nethercote_2014" id="Nethercote_2014"></a>Nethercote, N.; Marriott, K.; Rafeh, R.; Wallace, M.; Banda, M. ?. G. ?. d. l. (2014). Specification of MiniZinc. In NICTA (Ed.). Victoria Research Lab, Melbourne, Australia: NICTA.</p>
<p><a name="Nethercote_2007" id="Nethercote_2007"></a>Nethercote, N.; Stuckey, P. J.; Becket, R.; Brand, S.; Duck, G. J.; Tack, G. (2007). MiniZinc: Towards a Standard CP Modelling Language. In C. Bessi?re (Ed.), <em>Principles and Practice of Constraint Programming ? CP 2007</em> (Vol. 4741, pp. 529-543): Springer Berlin Heidelberg.</p>
<p><a name="Patel_2004" id="Patel_2004"></a>Patel, M.; Chandrasekaran, R.; Venkatesan, S. (2004). <em>Efficient Minimum-Cost Bandwidth-Constrained Routing in Wireless Sensor Networks.</em> Paper presented at the International Conference on Wireless Networks.</p>
<p><a name="Rossi_2006" id="Rossi_2006"></a>Rossi, F.; Beek, P. V.; Walsh, T. (Eds.). (2006). <em>Handbook of constraint programming</em> (Vol. 1). UK: Elsevier.</p>
<p><a name="Walkowiak_2006" id="Walkowiak_2006"></a>Walkowiak, K. (2006). Maximizing residual capacity in connection-oriented networks. <em>Journal of Applied Mathematics and Decision Sciences, 2006</em>, 18. doi:10.1155/jamds/2006/72547</p>
<p><a name="Yap_2010" id="Yap_2010"></a>Yap, K.-K.; Huang, T.-Y.; Dodson, B.; Lam, M. S.; McKeown, N. (2010). <em>Towards software-friendly networks</em>. Paper presented at the Proceedings of the first ACM asia-pacific workshop on Workshop on systems, New Delhi, India. </p>
</div></div></div><div class="field field-name-field-issue-full-reference field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even"><a href="/journal/ajtde-v5-n1">AJTDE - Vol 5, No 1 - February 2017</a></div></div></div><div class="field field-name-field-article-number field-type-number-integer field-label-above"><div class="field-label">Article Number: </div><div class="field-items"><div class="field-item even">4</div></div></div><div class="field field-name-field-sequence-number field-type-number-integer field-label-above"><div class="field-label">Sequence Number: </div><div class="field-items"><div class="field-item even">5</div></div></div><div class="field field-name-field-tja-author-ref field-type-entityreference field-label-above"><div class="field-label">Author(s): </div><div class="field-items"><div class="field-item even"><a href="/journal/author/siamak-layeghy">Siamak Layeghy</a></div><div class="field-item odd"><a href="/journal/author/farzaneh-pakzad">Farzaneh Pakzad</a></div><div class="field-item even"><a href="/journal/author/marius-portmann">Marius Portmann</a></div></div></div><div class="field field-name-field-tja-article-abstract field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even">In this paper, we introduce SCOR (Software-defined Constrained Optimal Routing), a new Software Defined Networking (SDN) Northbound Interface for QoS routing and traffic engineering. SCOR is based on constraint-programming techniques and is implemented in the MiniZinc modelling language. It provides a powerful, high-level abstraction layer, consisting of 10 basic constraint-programming predicates. A key feature of SCOR is that it is declarative, where only the constraints and utility function of the routing problem need to be expressed, and the complexity of solving the problem is hidden from the user, and handled by a powerful generic solver. We show that the interface (set of predicates) of SCOR is sufficiently expressive to handle all the known and relevant QoS routing problems. We further demonstrate the practicality and scalability of the approach via a number of example scenarios, with varying network topologies, network sizes and number of flows.</div></div></div><div class="field field-name-field-topics field-type-taxonomy-term-reference field-label-hidden"><div class="field-items"><div class="field-item even"><a href="/topics/minizinc" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">MiniZinc</a></div><div class="field-item odd"><a href="/topics/software-defined-networking" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Software Defined Networking</a></div><div class="field-item even"><a href="/topics/computer-networking" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Computer Networking</a></div><div class="field-item odd"><a href="/topics/software-defined-networks-sdn" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Software Defined Networks SDN</a></div><div class="field-item even"><a href="/topics/quality-service-routing" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Quality of Service Routing</a></div><div class="field-item odd"><a href="/topics/constraint-programming" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">constraint programming</a></div><div class="field-item even"><a href="/topics/northbound-interface" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Northbound Interface</a></div></div></div><div class="field field-name-field-journal-cite-as field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Siamak Layeghy, Farzaneh Pakzad, Marius Portmann. [node:field-tja-issue-date:custom:Y]. <em>A New QoS Routing Northbound Interface for SDN</em>. [node:field-journal-full-name], Vol [node:field-volume-number], No [node:field-issue-number], Article 4. <a href="http://doi.org/10.18080/ajtde.v[node:field-volume-number]n[node:field-issue-number].4">http://doi.org/10.18080/ajtde.v[node:field-volume-number]n[node:field-issue-number].4</a>. Published by Telecommunications Association Inc. ABN 34 732 327 053. <a href="https://wombilical.net">https://wombilical.net</a></p>
</div></div></div><span class="a2a_kit a2a_kit_size_32 a2a_target addtoany_list" id="da2a_2">
<a class="a2a_button_facebook"></a>
<a class="a2a_button_linkedin"></a>
<a class="a2a_button_twitter"></a>
<a class="a2a_dd addtoany_share_save" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwombilical.net%2Fjournal%2Fajtde-v5-n1%2Fa4-0&title=A%20New%20QoS%20Routing%20Northbound%20Interface%20for%20SDN"></a>
</span>
<ul class="links list-inline"><li class="addtoany first last"><span><span class="a2a_kit a2a_kit_size_32 a2a_target addtoany_list" id="da2a_1">
<a class="a2a_button_facebook"></a>
<a class="a2a_button_linkedin"></a>
<a class="a2a_button_twitter"></a>
<a class="a2a_dd addtoany_share_save" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwombilical.net%2Fjournal%2Fajtde-v5-n1%2Fa4-0&title=A%20New%20QoS%20Routing%20Northbound%20Interface%20for%20SDN"></a>
</span>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
if(window.da2a)da2a.script_load();
//--><!]]>
</script></span></li>
</ul>Thu, 20 Apr 2017 00:59:04 +0000Brian Louey-Gung1746 at http://wombilical.nethttp://wombilical.net/journal/ajtde-v5-n1/a4-0#comments