Embodiments described herein include segment routing in high performance telecommunications networks.
A fundamental operation in networks is routing packets from source to destination. In internet protocol (IP) networks, routing may be done along shortest paths by a routing protocol like open shortest path first (OSPF) or intermediate system to intermediate system (IS-IS). These shortest path based routing protocols ensure loop-free delivery of packets. When using shortest path routing, all traffic between a given source (S) and destination (D) is routed on the shortest path between the source and destination. If the traffic is greater than expected, it is not possible to shift this traffic along alternate paths even if spare bandwidth is available elsewhere in the network. This is one of the major drawbacks of shortest path routing. Increasingly traffic has to be routed through middle boxes like load balancers and firewalls. Also, it is not possible to exert fine grained control on the paths if shortest path routing is used.
A brief summary of various embodiments is presented below. Some simplifications and omissions may be made in the following summary, which is intended to highlight and introduce some aspects of the various embodiments, but not to limit the scope of the invention. Detailed descriptions of embodiments adequate to allow those of ordinary skill in the art to make and use the inventive concepts will follow in later sections.
Various embodiments relate to a method of determining a maximum flow network path between a source node and a destination node using segment routing when constrained by a maximum number of hops, the method including establishing a segment graph, calculating the bandwidth capacity of each link in the segment graph, calculating the multiplicity for each link in the segment graph, initializing a predecessor array indicating the predecessor node for each node and hop value, for each link in the segment graph and for each hop value up to the maximum number of hops: determining the maximum bandwidth path to the end of each segment and the associated number of hops based upon the bandwidth capacity, updating a value of the predecessor array when the maximum bandwidth path to the end of segment is determined, and determining the maximum flow network path based upon the predecessor array.
The method may include updating the value of the predecessor array includes choosing the path with the fewest links when two different paths to the end of the segment have the same maximum bandwidth.
The maximum bandwidth value D1(v,j) for each value of j may be initialized to D1(v,j−1), where v is an index indicating nodes in the network and j is an index indicating a hop value from 1 to h, where h is the maximum hop value.
The number of links value D2(v,j) for each value of j may be initialized to D2(v,j−1), where v is an index indicating nodes in the network and j is an index indicating a hop value from 1 to h, where h is the maximum hop value.
Determining the maximum bandwidth path to the end of each segment and the associated number of hops may include determining when min {D1(u,j−1),
The method may include setting D1(v,j)=min {D1(u,j−1),
The method may include setting D2(v,j)=D2(u,j−1)+μ(q) and setting PRED(v,j)=u, when min {D1(u,j−1),
The method may include setting D1(v,j)=min {D(u,j−1),
Various embodiments also relate to a non-transitory computer readable medium including program instructions for causing a computer processor to perform a method of determining a maximum flow network path between a source node and a destination node using segment routing when constrained by a maximum number of hops, the machine-readable storage medium including instructions for establishing a segment graph, instructions for calculating the bandwidth capacity of each link in the segment graph, instructions for calculating the multiplicity for each link in the segment graph, instructions for initializing a predecessor array indicating the predecessor node for each node and hop value, instructions for each link in the segment graph and for each hop value up to the maximum number of hops: instructions for determining the maximum bandwidth path to the end of each segment and the associated number of hops based upon the bandwidth capacity, instructions for updating a value of the predecessor array when the maximum bandwidth path to the end of segment is determined, and instructions for determining the maximum flow network path based upon the predecessor array.
Embodiments may include a non-transitory machine-readable storage medium, wherein updating the value of the predecessor array may include choosing the path with the fewest links when two different paths to the end of the segment have the same maximum bandwidth.
Embodiments may include a non-transitory machine-readable storage medium, wherein the maximum bandwidth value D1(v,j) for each value of j may be initialized to D1(v,j−1), where v is an index indicating nodes in the network and j is an index indicating a hop value from 1 to h, where h is the maximum hop value.
Embodiments may include a non-transitory machine-readable storage medium, wherein the number of links value D2(v,j) for each value of j may be initialized to D2(v,j−1), where v is an index indicating nodes in the network and j is an index indicating a hop value from 1 to h, where h is the maximum hop value.
Embodiments may include a non-transitory machine-readable storage medium, wherein determining the maximum bandwidth path to the end of each segment and the associated number of hops may include determining when min {D1(u,j−1),
Embodiments may include a non-transitory machine-readable storage medium, further including instructions for setting D1(v,j)=min {D1(u,j−1),
Embodiments may include a non-transitory machine-readable storage medium, further including instructions for setting D2(v,j)=D2(u,j−1)+μ(q) and setting PRED(v,j)=u, when min {D1(u,j−1),
Embodiments may include a non-transitory machine-readable storage medium, further including instructions for setting D1(v,j)=min {D1(u,j−1),
Additional objects and features of the invention will be more readily apparent from the following detailed description and appended claims when taken in conjunction with the drawings. Although several embodiments are illustrated and described, like reference numerals identify like parts in each of the figures, in which:
It should be understood that the figures are merely schematic and are not drawn to scale. It should also be understood that the same reference numerals are used throughout the figures to indicate the same or similar parts.
The descriptions and drawings illustrate the principles of various example embodiments. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the invention and are included within its scope. Furthermore, all examples recited herein are principally intended expressly to be for pedagogical purposes to aid the reader in understanding the principles of the invention and the concepts contributed by the inventor(s) to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Additionally, the term, “or,” as used herein, refers to a non-exclusive or (i.e., and/or), unless otherwise indicated (e.g., “or else” or “or in the alternative”). Also, the various embodiments described herein are not necessarily mutually exclusive, as some embodiments can be combined with one or more other embodiments to form new embodiments. As used herein, the terms “context” and “context object” will be understood to be synonymous, unless otherwise indicated. Descriptors such as “first,” “second,” “third,” etc., are not meant to limit the order of elements discussed, are used to distinguish one element from the next, and are generally interchangeable.
Segment routing provides a flexible routing mechanism in internet protocol multi-protocol label switching (IP-MPLS) networks. A price that is paid for flexibility in segment routing is overhead incurred in specifying the segment end-points in a packet header. Because a MPLS label handling mechanism may be used to process the segment routing header at the nodes, there are typically practical restrictions on the label stack depth. This constraint on the label stack depth is equivalent to restricting the number of segments in any path on which traffic is routed.
According to embodiments described herein a distinction may be made between routing a connection and routing flows. When a connection is routed in a network, all packets belonging to this connection will take the same path between its end points. This is done such that packets arrive to a destination in the same sequence in which they were transmitted. Therefore in a connection routing problem an objective is to determine a single path between connection endpoints that have sufficient bandwidth to carry the connection. Flows may be defined as an aggregation of connections. When routing a flow, there is no restriction to finding a single path for the flow. Instead, a set of paths may be found between the flow end points such that the sum of the bandwidth along these paths equals the total bandwidth for the flow.
A hop is one portion of the path between source and destination. Data packets pass through bridges, routers and gateways as they travel between source and destination. Each time packets are passed to the next network device, a hop occurs. A hop count refers to the number of intermediate devices such as routers through which data must pass between source and destination, rather than flowing over a single wire.
As illustrated in
Various notations are used herein. A network G=(N,E) may be given where the nodes are the routers connected by directed links. Link e has an Internet Gateway Protocol (IGP) link weight w(e) and capacity c(e). The network uses segment routing and the label stack depth is restricted to be at most h. Therefore any path from source to destination can have at most h segments. Note that when there are multiple shortest paths between nodes, the network can split traffic across these equal cost paths (ECMP). The set SP(u,v) includes of all links that belong in any shortest path. Fw(e) denotes the fraction of flow on link e when one unit of flow is sent from u to v. In order to explicitly model the segments, the segment graph GS of the given network G may be constructed. The segment graph is an overlay network on the physical topology G. Corresponding to link q=(u,v) in the segment graph is the set of all links in the set SP(u,v). The set of links may be denoted in the underlying graph corresponding to link q in the segment graph by SP(q).
Regarding hop constrained widest path, one question that may arise when routing connections between given source and destination nodes is determining the highest bandwidth connection that can be routed between the source and destination. Before addressing the question of finding the widest path in segment networks, the algorithm to find the widest path in graph is reviewed.
A widest path in a graph is described herein. A directed graph may have capacity c(e) on link e, a source node s and destination node d. For any path P between s and d, width Ω(P) of the path P to be the minimum capacity link on the path is defined as:
A hop constrained widest path for segment routing according to embodiments described herein will be described. The algorithm in
Each link in the segment graph corresponds to the shortest path (or shortest path directed to a cyclic graph in the case of ECMP) in the physical topology. Therefore the capacity of a link in the segment graph may be computed based on the capacity of the links in the shortest path in the physical topology.
A path in the segment graph may traverse a link in the physical topology more than once. This fact may be taken into consideration when computing the capacity of a link in the segment graph.
The algorithm ignores the hop limit and therefore may be modified to include the constraint that the number of hops in the segment graph cannot exceed h.
Consider a link q in the segment graph. If the ECMP is not enabled, then SP(q) represents the unique shortest path that will be used to route traffic between the nodes a(q) and b(q). In this case, the capacity of link q in the segment graph is the minimum capacity link belonging to SP(q) the physical topology. If ECMP is enabled, then traffic can be split on multiple paths between a(q) and b(q). The exact path taken by a connection will depend on a hash computed on the packet header belonging to the connection. Therefore, a lower limit on the minimum connection bandwidth when link q in the segment graph is used is ē(q)=mine∈SP(q)c(e). We can use
Therefore a path in the segment graph will be non-overlapping if and only if for any two segments q,r on the path we have SP(q)∩SP(r)=ø. For any non-overlapping path P in the segment graph, the width of the path Ω(P)=minq∈P
According to embodiments described herein, there may exist a non-overlapping widest path between any two connected nodes in a network, such as any source-destination pair.
The multiplicity μ(q) of a link q in the segment graph may be defined as the number of links in the shortest path in the physical topology corresponding to q as follows:
μ(q)=|SP(q)|.
The multiplicity μ(P) of a path P in the segment graph is the sum of the multiplicity of the links in the path, i.e., μ(P)=Σe∈Pμ(e). The minimum multiplicity widest path is the path between a source and destination is the widest path between the source and destination that has the minimum multiplicity. The minimum multiplicity widest path is non-overlapping.
The path can have at most h hops. The path should be the widest h-hop path. Among all the widest h-hop paths, the algorithm may output one with minimum multiplicity, i.e., the path should use the minimum number of links in the physical layer.
Picking a path with at most h hops can be done using a variant of the Bellman Ford with the widest shortest path algorithm on the segment graph. The capacity of link q, is set to
To implement the widest path algorithm, at a first step the bandwidth capacity
Beginning with a first, outside, FOR loop, the algorithm iterates through all the links in the segment graph once for each hop limit from 1 to h. At every iteration starting at j=1, the loop determines how many segments have a widest path from s to v not having more than one hop. Then at every iteration starting at j=2, the loop determines how many segments have a widest path from s to v not having more than two hops, until the maximum number of hops is reached.
In the inside FOR loop, the algorithm takes the shortest path from s to v, which has at most h hops. Inside the loop, shortest path from s to v not having more than j hops is equal to the shortest path from node 1 to node v not having more than j−1 hops. When link q=(u,v) is processed for hop j, and min {D1(u,j−1),
Thus the widest path to node u using j−1 hops and the capacity of the link from u to u, if a minimum of that relationship is greater than the value at the jth hop between s and u, then that is no longer the path, the new path is wider, and the new path replaces the former path. If there is a tie, the algorithm breaks the tie in favor of the path having a fewer number of links in the segment graph. The tiebreaker is represented by the “else if” event. If it is greater than, then the algorithm sets the D1 value to D2. D1 keeps track of the widest bandwidth. D2 keeps track of the number of links. Adding the current number of links, the algorithm indicates how many links are associated with the widest bandwidth. Thus the algorithm finds the widest path having the minimum number of underlying links.
It should be apparent from the foregoing description that various exemplary embodiments of the invention may be implemented in hardware. Furthermore, various exemplary embodiments may be implemented as instructions stored on a non-transitory machine-readable storage medium, such as a volatile or non-volatile memory, which may be read and executed by at least one processor to perform the operations described in detail herein. A non-transitory machine-readable storage medium may include any mechanism for storing information in a form readable by a machine, such as a personal or laptop computer, a server, or other computing device. Thus, a non-transitory machine-readable storage medium may include read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash-memory devices, and similar storage media and excludes transitory signals.
Although the various exemplary embodiments have been described in detail with particular reference to certain exemplary aspects thereof, it should be understood that the invention is capable of other embodiments and its details are capable of modifications in various obvious respects. As is readily apparent to those skilled in the art, variations and modifications can be effected while remaining within the spirit and scope of the invention. Accordingly, the foregoing disclosure, description, and figures are for illustrative purposes only and do not in any way limit the invention, which is defined only by the claims.