US10057158B2 - Control device discovery in networks having separate control and forwarding devices - Google Patents

Control device discovery in networks having separate control and forwarding devices Download PDF

Info

Publication number
US10057158B2
US10057158B2 US15/177,170 US201615177170A US10057158B2 US 10057158 B2 US10057158 B2 US 10057158B2 US 201615177170 A US201615177170 A US 201615177170A US 10057158 B2 US10057158 B2 US 10057158B2
Authority
US
United States
Prior art keywords
forwarding
packet
forwarding device
path
control device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US15/177,170
Other versions
US20160285742A1 (en
Inventor
William Thomas Sella
James Michael Sella
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Level 3 Communications LLC
Original Assignee
Level 3 Communications LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Level 3 Communications LLC filed Critical Level 3 Communications LLC
Priority to US15/177,170 priority Critical patent/US10057158B2/en
Assigned to tw telecom holdings, inc. reassignment tw telecom holdings, inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SELLA, JAMES MICHAEL, SELLA, WILLIAM THOMAS
Assigned to LEVEL 3 COMMUNICATIONS, LLC reassignment LEVEL 3 COMMUNICATIONS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: tw telecom holdings, inc.
Publication of US20160285742A1 publication Critical patent/US20160285742A1/en
Priority to US16/105,880 priority patent/US10673741B2/en
Application granted granted Critical
Publication of US10057158B2 publication Critical patent/US10057158B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/124Shortest path evaluation using a combination of metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/121Shortest path evaluation by minimising delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/123Evaluation of link metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/26Route discovery packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • H04L45/507Label distribution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Definitions

  • This field is generally related to network routing.
  • a communication network may, for example, provide a network connection that allows data to be transferred between two geographically remote locations.
  • a network connection may span multiple links connecting communication devices such as routers.
  • Networks may have different topologies depending on how the links are interconnected through communication devices. Given a particular network topology, multiple routes may be available between a source and destination. Some routes may be more desirable than others depending on current capacity and usage.
  • Border Gate Protocol Border Gate Protocol
  • SDNs Software Defined Networks
  • a computer-implemented method discovers routes from network forwarding devices to a routing control device.
  • the discovery method includes receiving a control packet on a port of a forwarding device. The method then, based at least in part on the port that received the control packet, identifies which port on the forwarding device to forward data to reach the routing control device.
  • the method sends a command to the routing control device on the identified port. The command instructs the routing control device to determine a path through the forwarding devices to a destination and to configure the forwarding devices to forward the new data stream along the determined path. The method then forwards the new data stream according to the configuration commands of the routing control device.
  • FIG. 1A is a diagram that illustrates a routing control device that sends control packets to a forwarding device.
  • FIG. 1B is a diagram that illustrates forwarding devices flooding control packets throughout the network.
  • FIG. 1C is a diagram that illustrates how the control device collects information reflecting the network topology.
  • FIG. 2 is a flowchart that illustrates a method for finding a path from the control device to a forwarding device.
  • FIG. 3 is a flowchart that illustrates a method for setting up a path from each forwarding device to the control device.
  • FIG. 4A is a diagram that illustrates a network connection using a path from a forwarding device to the control device.
  • FIG. 4B is a diagram that illustrates the routing control device setting up a fast path.
  • FIG. 5 is a diagram that illustrates a network with multiple control devices.
  • FIG. 6 is a diagram that illustrates modules of a control device and a forwarding device.
  • SDN routing techniques use global knowledge of the network topology to route packets efficiently. These techniques use a routing control device and forwarding devices separate from each other. When a forwarding device receives a new data flow through a network, the forwarding device contacts the routing control device to determine a new path for the data flow. The routing control device determines the new path through the network's forwarding devices and configures the forwarding devices accordingly.
  • the routing control device and forwarding devices need to be configured with network information.
  • the forwarding devices need to know how to route data to the routing control device.
  • the routing control device needs to know the network topology to determine a path through the network. Manually configuring this information can be time-consuming and error-prone.
  • the routing control device is connected to a forwarding device and sends control packets to it.
  • the control packet contains the address of the control device as its source address in an address field.
  • the control device also attaches a serial number to each control packet.
  • the forwarding device attaches performance information that indicates, for example, how long it would take for the network to send information from the forwarding device to the routing control device. Then, the forwarding device broadcasts, or floods, the control packet on its other ports, which are connected to other forwarding devices. And, if the other forwarding devices have not previously rebroadcasted a packet with better performance information, they update the performance information and re-broadcast the packet.
  • the forwarding devices As the forwarding devices receive the control packets, they remember which port the control packet received the packet with the best performance information. This port, the forwarding device knows, is on the fastest route to the routing control device. And, each forwarding device can request that a label-switched path be set up on that route to the routing control device.
  • the forwarding devices send information concerning their neighborhood network topology and network condition to the control device.
  • the control device can create a database of global network topology and network condition. This topology database enables the control device to establish a path between a sources forwarding device and a destination forwarding device in the network.
  • the controller may, at any later time, determine a better path for the communications between the forwarding device and the controller using another method which may utilize more complete topology and performance information. If this better path is determined, the existing path may be replaced by the controller resignalling the specific new path and then eliminating the existing path.
  • the Detailed Description that follows is divided into five sections.
  • the first section describes, with respect to FIGS. 1A-1C , a control device in the network sending control packets to each forwarding device, and gathering topology and network condition information from the forwarding devices.
  • the second section describes, with respect to FIGS. 2-3 , setting up bidirectional connections between the control device and each forwarding device.
  • the third section describes, with respect to FIGS. 4A-B , using the control device to establish and transfer data without requiring edge routers to buffer a large amount of packets.
  • the fourth section describes, with respect to FIG. 5 , using multiple control devices in the network.
  • the fifth and final section describes, with respect to FIG. 6 , a control device system and its modules and a forwarding device system and its modules.
  • FIG. 1A is a diagram 100 illustrating a communication network.
  • the communication network may be a local area network (LAN), metropolitan area network (MAN), or wide area network (WAN). It may utilize any point-to-point or multipoint-to-multipoint networking protocols.
  • the network access protocols used may include, for example, Multi Protocol Label Switching (MPLS), Ethernet, Asynchronous Transfer Mode (ATM), High-Level Data Link Control (HDLC), or Packet Relay.
  • MPLS Multi Protocol Label Switching
  • ATM Asynchronous Transfer Mode
  • HDLC High-Level Data Link Control
  • Packet Relay Packet Relay
  • the communication network includes a plurality of forwarding devices, such as forwarding devices 104 , 106 , 108 , 110 , and 112 , interconnected by links.
  • Forwarding devices are devices that forward packets, including devices at the data link layer (OSI layer 2) and the network layer (OSI layer 3).
  • the communication network also includes a routing control device 102 .
  • Routing control device 102 may be connected to at least one forwarding device, for example forwarding device 104 .
  • Routing control device 102 may be geographically remote from other forwarding devices in the network.
  • a user may send data from a source forwarding device, for example forwarding device 106 , to a destination forwarding device, for example 110 .
  • the data may be a stream divided into packets, and each packet may specify forwarding device 110 , or another downstream device, as its destination.
  • Routing control device 102 provides intelligent routing for establishing a network connection. To do so, the control device 102 requires knowledge of the topology and the condition of the network links and devices. Routing control device 102 is directly connected a forwarding device 104 . For the control device to gain knowledge of the network, the control device 102 sends a control packet 120 to the forwarding device 104 .
  • Control packet 120 may include an indication that the packet is a control packet, an identifier of routing control device 102 , such as its Media Access Control address, and a serial number of the packet.
  • the control device 102 may send a new control packet at uniform time intervals. Each time control device 102 sends a new packet, control device 102 may increment the serial number, sending the new control packet out with a different number.
  • control packet 120 may include the following information:
  • Type Flag C (for control packet)
  • routing control device 102 sends the control packet 120 to the adjacent forwarding device 104 , the network forwarding devices flood the packet across the network as illustrated in FIG. 1B .
  • FIG. 1B is a diagram illustrating the network forwarding devices flooding a control packet across the network. After receiving control packet 120 , the forwarding device 104 may send out the control packet on all its ports other than the port that received it.
  • the control device may include its address and a serial number in the control packet.
  • the forwarding device 104 may make two modifications. First, it may add its own identifier (such as its MAC address) to the control packet. This address is added to an address field in the control packet for keeping track of all the forwarding devices the control packet travels through. Second, forwarding device 104 may modify a performance metric in the control packet.
  • the performance metric can include, for example, the delay in sending the control packet from control device 102 to forwarding device 104 . This delay information may be collected, for example, by forwarding device 104 using Link Layer Discovery Protocol (LLDP) packet exchanges. The delay may be determined as a moving average or otherwise smoothed out to prevent volatile changes as the network reacts to changes in traffic volume.
  • LLDP Link Layer Discovery Protocol
  • forwarding device 104 forwards the control packet on its other ports as control packets 142 , 144 , and 146 .
  • all three control packets 142 , 144 , and 146 may contain the same information.
  • the control packets 142 , 144 , and 146 may include the following information:
  • Type Flag C (for control packet)
  • Forwarding device 104 forwards control packet 144 on link 114 to forwarding device 106 ; control packet 142 on link 116 to forwarding device 108 ; and control packet 146 on link 118 to forwarding device 110 .
  • forwarding device 106 receives the control packet 144 , it adds its own address to the address field and updates the performance metric of the control packet to generate a control packet 148 .
  • forwarding device 106 may add the delay to transmit data from forwarding device 106 to forwarding device 104 .
  • the control packet 148 may include the following information:
  • Type Flag C (for control packet)
  • Forwarding device 106 transmits packet 148 on link 122 to forwarding device 108 .
  • Forwarding device 108 receives control packets 142 and 144 . Using the delay information in each of these two control packets, forwarding device 108 can choose to establish a path with less delay to the control device 102 . Using the address sequence field in the control packet, forwarding device 108 can know to get to the control device, which neighboring forwarding device it needs to communication with.
  • forwarding device 108 may know that the time to transmit data to forwarding device 106 on link 120 is 3 ns, and that the time to transmit data to forwarding device 104 on link 116 is 9 ns. Adding that to the performance metrics received in packet 148 and 142 , forwarding device 108 can determine that transmission to control device 102 via forwarding device 106 takes 10 ns, while transmission via forwarding device 104 takes 14 ns. For that reason, forwarding device 108 may choose to route data to control device 102 via forwarding device 106 , and not device 104 , taking the faster path.
  • forwarding device 108 may reforward control packets 142 and 148 . If forwarding device 108 receives the packet denoting the faster path-in this case, packet 148 —before the packet denoting the slower path-in this case, packet 142 —the forwarding device 108 may not forward the slower packet. This is because forwarding device 108 knows that any data headed to control device 102 should take the faster path through forwarding device 106 , regardless of whether it originated from forwarding device 108 or another forwarding device, such as device 112 .
  • forwarding device 108 may establish a bi-directional path with forwarding device 106 .
  • forwarding device 108 sets a rule in its routing table, which also may be referred to a forwarding table, that in order to get to the control device, it sends a packet on a specific port (the port that it received control packet 144 ) and with a particular label. This information is communicated with forwarding device 106 , so both forwarding devices follow the same rule. Therefore, when the forwarding device 106 receives the packet from forwarding device 108 with the set label and on the set port, it knows that this packet is intended for control device 102 .
  • forwarding device 106 knows to forward traffic for control device 102 through forwarding device 104 . So, forwarding device 106 sets up a label with forwarding device 104 to route data to control device 102 . Labels may also be set up to route data from control device 102 through forwarding device 106 to forwarding device 104 in a similar manner.
  • each forwarding device can discover how to communicate with the control device and set up a label-switched path to the control device. As described below with respect to FIGS. 4A-B when the forwarding device receives a new data stream, the forwarding device may forward packets from the new data stream to the control device until the control device sets up a path for the packets through the network.
  • embodiments may also use the label-switched path to help the control device discover the topology information of the network as illustrated in FIG. 1C .
  • FIG. 1C is a diagram 170 that illustrates control device 102 collecting information reflecting the network topology.
  • Each forwarding device sends information to the routing control device that shows what forwarding devices it is connected to, and what the conditions of the surrounding links and forwarding devices are.
  • Conditions of surrounding links and forwarding devices can include, for example, traffic and congestion information, latency, packet loss rate, jitter, etc. This information may be collected, for example, using Link Layer Discovery Protocol (LLDP).
  • LLDP Link Layer Discovery Protocol
  • the forwarding devices send this information periodically. And, the forwarding devices use the paths established between them and the control device to send this information.
  • a path for forwarding device 108 to the control device 102 is established.
  • This path includes forwarding devices 108 , 106 , and 104 .
  • Forwarding device 108 sends the information including its surrounding topology to the control device 102 .
  • forwarding device 108 sends this information in a packet 172 to routing control device 102 .
  • Routing control device 102 uses the topology information it receives from all of the forwarding devices including forwarding device 108 , creates a database 174 that reflects the topology of the network of the forwarding devices.
  • FIG. 2 is a flowchart that illustrates a method 200 for finding a path from the control device to a forwarding device.
  • the control device physically connects to a forwarding device of the network of forwarding devices.
  • the control device sends a control (or discovery) packet, for example a Link Layer Discovery Protocol (LLDP) packet, to the forwarding device it is connected to.
  • LLDP Link Layer Discovery Protocol
  • the forwarding device receiving the packet at step 206 verifies whether the packet originated from a control device.
  • the forwarding device can verify that the packet is from a control device by, for example, checking to see if a particular flag is raised.
  • the control packet includes a performance metric that shows conditions of the network links or network devices.
  • the metric can show link latency. Therefore, in this example, a lower metric shows a lower latency therefore a better performance.
  • the metric can also be a function of multiple conditions such as latency, packet loss, jitter etc.
  • Each forwarding device that receives the control packet updates the performance metric.
  • the updated metric for example, shows the additional latency for the control packet to reach the forwarding device from a previous, or upstream, forwarding device.
  • the forwarding device floods the control packet on all its ports other than the port where the control packet was received.
  • a forwarding device may receive again the same control packet that it had received before. This may happen because the control packets are flooded through the network.
  • the forwarding device can recognize the repeat control packet by the unique serial number that the control device attaches to each control packet.
  • the forwarding device checks to see if packet's performance metric is better than previous metrics received from the control device. If the metric is the best performance metric among all control packets received by the forwarding device, at step 210 , the forwarding device stores packet's incoming port as the best way to reach the control device.
  • the forwarding device checks the serial number to determine whether the control packet has been previously forwarded, to avoid a control packet from indefinitely circulating through the network. Since the control packet adds a unique serial number to each control packet it generates, the forwarding devices can use the serial number of a control packet to determine whether it has previously forwarded the control packet or not. Or, the forwarding devices can use the serial number to determine whether the current control packet is out of date if, for example, they had previously forwarded a more recent control packet with a greater serial number. A number of other mechanisms may be used to avoid indefinitely circulating packets through the network such as hashes or checksums of at least a portion of the control packet.
  • the forwarding device determines whether the packet has not previously been forwarded and includes a metric showing the best performance. If either the control packet does not show the best performance metric, or it has been previously forwarded by the forwarding device, the forwarding device discards the packet and the process ends.
  • Step 216 is described in details in the description of FIG. 3 below.
  • the forwarding device updates the performance metric to reflect the performance of the link connecting the upstream forwarding device and the current forwarding device, and the performance of the two forwarding devices themselves.
  • the receiving forwarding device floods the packet on all its ports, other than the port where it received the control packet. In this way, the updated control pack is sent to other forwarding devices.
  • the other forwarding devices repeat the process from step 206 , processing the packet in the same manner.
  • FIG. 3 is a flowchart that illustrates a method 216 for setting up a path between forwarding devices 104 and 106 .
  • forwarding device 104 is an upstream forwarding device for 106 .
  • forwarding device 106 receives from the upstream forwarding device 104 a new control packet and the new control packet has the best performance characteristics to date. For this reason, a path is set up at step 216 in FIG. 2 .
  • forwarding device 106 sends request to the next upstream forwarding device for a path to the control device.
  • Forwarding device 104 determines a label for establishing the path.
  • Forwarding device 104 sends this label to forwarding device 106 , at step 308 .
  • Forwarding device 106 establishes this label rule accordingly in its routing table at step 304 .
  • forwarding device 104 requests path to control device.
  • forwarding device 104 may request a label from another upstream forwarding device, repeating steps 302 , 306 , 308 , and 310 .
  • Forwarding device 104 establishes label rule in its routing table at step 312 .
  • forwarding device 104 after receiving the request from forwarding device 106 at step 302 , chooses label L 1 for the path between the two. After sending this label to forwarding device 106 , forwarding device 106 will enclose this label on all the data packets destined to the control device.
  • forwarding device 104 upon receiving data packets with label L 1 on the port connected to the forwarding device 106 , forwards the packets to the control device.
  • forwarding device 104 may know (having established a label rule at step 312 ) to forward on a particular port with a particular label. In this way a path from the forwarding device to the control device is established.
  • a path may be established in the other direction: from the control device to the forwarding device in a similar manner.
  • each forwarding device may set up a label in its routing table.
  • the entry in the routing table may include the associated port to route the data to.
  • a path between the control device to and from each forwarding device in the network exists.
  • forwarding device 106 uses this path to send data to the control device. And vice versa, the control device uses this path for sending data to the forwarding device 106 .
  • FIG. 4A shows a diagram 400 illustrating a data stream from network user 442 addressed to server 444 .
  • the data stream includes packets 402 , 404 , 406 , 408 , 410 , and 412 .
  • packet 402 When the first packet of the data stream—packet 402 —reaches forwarding device 106 , it is routed to control device 102 .
  • Control device 102 determines that this packet belongs to a new connection and starts the process of establishing a fast path for the connection, which does not flow through the control device 102 .
  • Forwarding device 106 may buffer packets 404 and 406 or may forwards those packets onto control device 102 , just as it did with the first packet 402 .
  • control device 104 After the control device receives the first packet, it sends the packet to forwarding device 104 .
  • Forwarding device 104 using the destination address included in the packet, and the paths set up at step 216 in FIGS. 2 and 3 , forwards the packet to the corresponding port with the corresponding label.
  • the control device computes a path from the source to the destination.
  • the path comprises network links and routers, but not the control device.
  • the control device uses the MPLS protocol to create a label-switched path (LSP) for the data stream.
  • LSP label-switched path
  • the control device may take into account current or historical bandwidth usage. For example, the control device may consider network usage during previous weeks (or another cyclical period).
  • the control device may also create multiple paths for the connection to enable load balancing on multiple paths.
  • the control device may also take into account latency, jitter, packet loss, or any other performance metric across various paths, the user's service level agreement, or the type of data being transferred. For example, broadcast video data may require a great deal of bandwidth, but latency may be relatively unimportant. Voice-over-IP (VoIP) data, on the other hand, may not require as much bandwidth, but latency may be more important. For broadcast video data, the control device could select a high-bandwidth, high-latency path, and, for VoIP data, the control device could select a low-bandwidth, low-latency path.
  • VoIP Voice-over-IP
  • control device may route data through a particular server. For example, data having a certain type or directed to a certain destination may need to be scrubbed by a particular scrubbing server en route.
  • the scrubbing server may be used to scan the data for malicious content, to monitor incoming data, or to perform other analysis on the data.
  • the control device may determine such that it goes through the particular scrubbing server or set of servers.
  • the control device After determining the fast path, the control device updates routing tables for each forwarding device along the path. If multiple paths are computed for the data stream, the control device creates routing tables in accordance with all the paths. In one embodiment, the updated routing tables may instruct the forwarding device how to forward packets having a particular combination of source/destination addresses and source/destination ports. In an alternative embodiment, the data stream may be identified with a label and the updated routing table may indicate how to forward packets having the label.
  • the control device sends updated routing tables to network routers.
  • the control device can use the paths established to all the forwarding devices in step 216 to send the routing tables.
  • An example of how the routers are configured is illustrated in FIG. 4B .
  • FIG. 4B shows a diagram 420 illustrating how control device 102 configures the network forwarding devices to establish the path between user 442 and server 444 .
  • control device 102 determines that the data stream between user 442 and server 444 follows the path including links 120 , 122 , 124 and forwarding devices 106 , 108 , 112 , and 110 .
  • the control device 102 sends the updated routing tables using the configuring commands 422 , 424 , 426 , and 428 .
  • command 422 instructs forwarding device 106 to forward packets in the data stream to link 120 ;
  • command 424 instructs forwarding device 108 to forward packets in the data stream to link 122 ;
  • command 426 instructs forwarding device 112 to forward packets in the data stream to link 124 ;
  • command 428 instructs forwarding device 110 to forward packets in the data stream to link 124 .
  • routers along the path are configured from the egress point (forwarding device 104 ) to the ingress point (forwarding device 106 ).
  • command 428 configures forwarding device 110 .
  • command 426 configures forwarding device 112 .
  • command 424 configures forwarding device 108 .
  • command 422 configures forwarding device 106 .
  • control device 102 On receipt of these packets, control device 102 routes them to their destination using the previously determined default path at step 216 in FIG. 2 . In this way, while the path through the network is being established (as illustrated in FIG. 4B ), packets continue to be routed to their destination, avoiding the need to buffer the initial packets in the edge router.
  • data flows along the fast path set up by the control device.
  • data may flow at a greater rate through the forwarding devices and lower end to end latency, since it no longer goes through the control device.
  • FIG. 5 is a diagram that illustrates a network with multiple control devices.
  • control device 102 is connected to forwarding device 104
  • control device 504 is connected to forwarding device 110
  • control device 506 is connected to forwarding device 506 .
  • each control device 102 , 504 or 506 sends control packets, periodically or at different time intervals to the forwarding device directly connected to it. And following the same process as illustrated in FIG. 2 , each control device establishes two-directional paths to each forwarding device in the network.
  • Each forwarding device in the example embodiment of FIG. 5 , sends information showing the topology of its neighboring forwarding devices and the network condition information to each control device in the network.
  • forwarding devices use the bi-directional paths established at step 216 of process 200 , to send this information.
  • forwarding devices send this information to control devices periodically or at different time intervals.
  • a single physical network may be mirrored on multiple control devices with multiple topology databases for redundancy purposes. Each of these control devices has paths established between themselves and each router in the network. In the event that a default path to one control device is failed, traffic may choose a path to a different control device.
  • each forwarding device picks one control device at a time for forwarding data and establishing a fast path to a destination.
  • the forwarding device can pick any one of the control devices based on a choosing algorithm.
  • the choosing algorithm can be, for example, a round robin algorithm.
  • the forwarding device may also consider network load or number of new connections a control device is setting up at a time in the algorithm for choosing a control device.
  • the forwarding device may ask the controller with the lowest latency to establish a fast path to a destination.
  • the round robin approach may be used in conjunction with the lowest-latency approach.
  • a device may choose to balance traffic across multiple paths to the controllers, perhaps by rounding the metric to a closest 5 for example, therefore treating performance values of 3, 4, 5, 6, 7 as the same as a value of 5.
  • the forwarding device may adopt a round robin algorithm to select the controller to create the fast path. This helps to limit the impact of slight modifications in the performance values as the network reacts to real world situations.
  • control devices in the network need not be synchronized with one another. If a control device fails, after not receiving control packets from that control device for a period of time, forwarding devices remove the labels for maintaining a path to that control device. Forwarding devices continue using other control devices with the same choosing algorithm such as round robin.
  • Having multiple control devices highly increases the resiliency of the network. If a control device fails, or a link connecting to a control device fails, forwarding devices can continue using other control devices in the network. Multiple control devices also help balancing load in the network. By intelligently choosing a control device that has a lesser number of new connection requests, or by choosing a control device with the best path to, such as the path with lowest latency, forwarding devices can avoid congested segments of the network when requesting a new connection.
  • FIG. 6 shows a diagram 600 illustrating control device 102 and its modules and forwarding device 104 and its modules.
  • control device 102 includes a controller discovery module 610 , a path determination module 608 , a data forward module 612 , and a topology database 606 .
  • the various modules may operate as described above with respect to the method in FIG. 2 .
  • Controller discovery module 610 is configured to determine a topology of the network of the forwarding devices.
  • the controller discovery module 610 sends control packets to the forwarding device directly attached to the control device.
  • the control packets include the address of the control device and a serial number. Using the combination of the address and the serial number each control packet can be uniquely identified throughout the network.
  • each forwarding device receiving a control packet adds its own address to the control packet. Also, each forwarding device updates the metric showing network characteristics to each control packet.
  • a forwarding device Upon receiving a control packet, a forwarding device knows the path the control packet has traveled to arrive at the forwarding device from the control packet. Also using the performance metric information, the forwarding device knows which path, among multiple paths traveled by multiple forwarding packets, is the best path to the control device, as described by process 200 . Therefore forwarding devices can dynamically update the best path to the control device.
  • controller discovery module 610 receives topology and network condition information from the forwarding devices in the network. Using this information and similar information from other forwarding devices in the network, controller discovery module 610 creates a topology database 606 .
  • Topology database 606 stores the discovered topology of the forwarding devices in the network. Topology database 606 reflects the current topology of how forwarding devices and links are connected together. Also, topology database 606 stores information showing the current condition of the network. Condition of the network can include latency, packet loss, congestion or jitter on network links or devices.
  • Path determination module 608 establishes paths for new network connections. Upon a request for connection from a source forwarding device, path determination module 608 determines a connection path from the source forwarding device to a destination forwarding device. To determine a path, path determination module 608 uses topology database 606 . Using the topology and network condition information stored in the topology database 606 , path determination module 608 can find an optimum path from the source forwarding device to a destination. The optimum path can, for example, be a shortest path, or a path with least delay, or a path with least packet loss.
  • path determination module 608 After determining that path for a connection, path determination module 608 also sends configuring commands to each forwarding device on the determined path. As illustrated in the example embodiment in FIG. 4B , path determination module creates and sends the configuring commands 422 , 424 , 426 , and 428 . The configuring commands configure the corresponding forwarding devices. The configured forwarding devices route packets belonging to the connection on the path determined for the connection by path determination module 608 .
  • Data forward module 612 carries the initial packets for the requested connection while path determination modules determine the path for the connection and configures the forwarding device by sending configuring commands. As illustrated in FIG. 4A , the initial packets 402 , 404 , 406 , 408 , and 410 are forwarded to the control module over the path from the source forwarding device to the control device. Data forwarding module 612 forwards the initial packets over the path from the control device to the destination forwarding device, while the connection path is being established.
  • forwarding device 104 includes a path request module 622 , a switch discovery module 624 , a routing table 626 , and a performance metric module 628 .
  • Path request module 622 after receiving a request for a new data connection at the forwarding device, sends a message to the routing control device requesting establishing a connection path.
  • the path request module 622 uses the path to the control device, set up at step 216 of process 200 , to send the request for establishing connection path.
  • the path request instructs the routing control device to determine a path from the source forwarding device to a destination forwarding device.
  • the path determination module 608 determines the connection path and configures the forwarding devices to forward the new data stream along the determined path.
  • Switch discovery module 624 receives the control packets sent by the controller discovery module 610 of the control device. Switch discovery module 624 determines a path from the forwarding device to the control device as shown in step 216 of method 200 . In an embodiment, switch discovery module 624 makes this determination based on the information in the control packet and the port on which it receives the control packet.
  • switch discovery module 624 identifies, based in part on the port that received the control packet, which port on the forwarding device to forward data to reach the routing control device.
  • switch discovery module 624 determines the label to route to control device, as shown in step 306 of method 300 .
  • Switch discovery module 624 also, after determining whether a received control packet indicates a best performance path and is not already forwarded on other ports of the forwarding device, as shown in step 214 of process 200 , floods the control packet on its ports other that the port where it has received the control packet.
  • Routing table 626 of a forwarding device contains information on how to forward a data packet in the network.
  • Configuring commands 422 , 424 , 426 , and 428 update the routing table in the forwarding devices with information on how to forward a packet.
  • the switch discovery module 624 establishes forwarding rules in the routing table 626 based on the determined labels.
  • Performance metric module 628 updates the performance metric field of an incoming control packet.
  • An incoming control packet includes a field that contains a network performance metric of the path from the control device up to the previous forwarding device.
  • the performance metric module updates the performance metric field so that it reflects the performance of the path up to the current forwarding device.
  • Performance metric module 628 also determines whether the forwarding device has previously forwarded another control packet, with a better performance metric.
  • Performance metric module 628 informs the switch discovery module 624 of whether a previous same control packet with a better metric has been flooded on the forwarding device ports.
  • the term “user,” as used herein, may encompass both a customer of the network connectivity service, such as an employee of a business that utilizes the network connectivity service, and a network administrator of the service provider itself. Users may also be at different companies or organizations.
  • Topology database 606 may be any stored type of structured memory, including a persistent memory.
  • each database may be implemented as a relational database or file system.
  • Each of the devices and modules in FIG. 6 may be implemented in hardware, software, firmware, or any combination thereof.
  • Each of the devices and modules in FIG. 6 may be implemented on the same or different computing devices.
  • Such computing devices can include, but are not limited to, a personal computer, a mobile device such as a mobile phone, workstation, embedded system, game console, television, set-top box, or any other computing device.
  • a computing device can include, but is not limited to, a device having a processor and memory, including a non-transitory memory, for executing and storing instructions.
  • the memory may tangibly embody the data and program instructions.
  • Software may include one or more applications and an operating system.
  • Hardware can include, but is not limited to, a processor, a memory, and a graphical user interface display.
  • the computing device may also have multiple processors and multiple shared or separate memory components.
  • the computing device may be a part of or the entirety of a clustered or distributed computing environment or server farm.
  • Identifiers such as “(a),” “(b),” “(i),” “(ii),” etc., are sometimes used for different elements or steps. These identifiers are used for clarity and do not necessarily designate an order for the elements or steps.

Abstract

A Software Defined Network (SDN) includes a plurality of forwarding devices and a routing control device located separate from the forwarding devices. The routing control device, establishes paths to and from the network forwarding devices. Using such paths, forwarding devices send the routing control device information reflecting the topology if the network. Embodiments disclosed herein enable automatic discovery of the topology of the network and the paths to and from the routing control device.

Description

BACKGROUND
Field
This field is generally related to network routing.
Related Art
A communication network may, for example, provide a network connection that allows data to be transferred between two geographically remote locations. A network connection may span multiple links connecting communication devices such as routers. Networks may have different topologies depending on how the links are interconnected through communication devices. Given a particular network topology, multiple routes may be available between a source and destination. Some routes may be more desirable than others depending on current capacity and usage.
Traditional routing algorithms rely on local information each router has from its neighboring links and devices to route data. A router maintains such information in a routing table. And based on the destination address of an incoming packet, a router uses its routing table to forward the packet to a specific neighboring device. To develop the routing table, each router uses a protocol like Border Gate Protocol (BGP) to exchange routing and reachability information with local neighboring routers. In this way, each router both forwards packets and conducts control functions to update its own routing table.
While using local information may be desirable in some contexts, it may not always route data efficiently. To route data more efficiently, another technique, referred to as Software Defined Networks (SDNs), separates the control and forwarding functions into separate devices. The control device uses a global knowledge of the network topology to determine a path through the network of forwarding devices for individual data flows. In this way, the routing control device may, for example, establish paths that minimize delay or maximize bandwidth through the network.
BRIEF SUMMARY
In an embodiment, a computer-implemented method discovers routes from network forwarding devices to a routing control device. The discovery method includes receiving a control packet on a port of a forwarding device. The method then, based at least in part on the port that received the control packet, identifies which port on the forwarding device to forward data to reach the routing control device. In response to receipt of a new data stream at the forwarding device, the method sends a command to the routing control device on the identified port. The command instructs the routing control device to determine a path through the forwarding devices to a destination and to configure the forwarding devices to forward the new data stream along the determined path. The method then forwards the new data stream according to the configuration commands of the routing control device.
System and computer program product embodiments are also disclosed.
Further embodiments, features, and advantages of the invention, as well as the structure and operation of the various embodiments, are described in detail below with reference to accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate the present disclosure and, together with the description, further serve to explain the principles of the disclosure and to enable a person skilled in the relevant art to make and use the disclosure.
FIG. 1A is a diagram that illustrates a routing control device that sends control packets to a forwarding device.
FIG. 1B is a diagram that illustrates forwarding devices flooding control packets throughout the network.
FIG. 1C is a diagram that illustrates how the control device collects information reflecting the network topology.
FIG. 2 is a flowchart that illustrates a method for finding a path from the control device to a forwarding device.
FIG. 3 is a flowchart that illustrates a method for setting up a path from each forwarding device to the control device.
FIG. 4A is a diagram that illustrates a network connection using a path from a forwarding device to the control device.
FIG. 4B is a diagram that illustrates the routing control device setting up a fast path.
FIG. 5 is a diagram that illustrates a network with multiple control devices.
FIG. 6 is a diagram that illustrates modules of a control device and a forwarding device.
The drawing in which an element first appears is typically indicated by the leftmost digit or digits in the corresponding reference number. In the drawings, like reference numbers may indicate identical or functionally similar elements.
DETAILED DESCRIPTION
As mentioned above, SDN routing techniques use global knowledge of the network topology to route packets efficiently. These techniques use a routing control device and forwarding devices separate from each other. When a forwarding device receives a new data flow through a network, the forwarding device contacts the routing control device to determine a new path for the data flow. The routing control device determines the new path through the network's forwarding devices and configures the forwarding devices accordingly.
To operate, the routing control device and forwarding devices need to be configured with network information. In particular, to request that a new path be created through the interconnected forwarding devices, the forwarding devices need to know how to route data to the routing control device. And, the routing control device needs to know the network topology to determine a path through the network. Manually configuring this information can be time-consuming and error-prone.
Embodiments disclosed here enable topology information to be discovered automatically. In an embodiment, the routing control device is connected to a forwarding device and sends control packets to it. The control packet contains the address of the control device as its source address in an address field. The control device also attaches a serial number to each control packet.
The forwarding device attaches performance information that indicates, for example, how long it would take for the network to send information from the forwarding device to the routing control device. Then, the forwarding device broadcasts, or floods, the control packet on its other ports, which are connected to other forwarding devices. And, if the other forwarding devices have not previously rebroadcasted a packet with better performance information, they update the performance information and re-broadcast the packet.
As the forwarding devices receive the control packets, they remember which port the control packet received the packet with the best performance information. This port, the forwarding device knows, is on the fastest route to the routing control device. And, each forwarding device can request that a label-switched path be set up on that route to the routing control device.
With the paths established, the forwarding devices send information concerning their neighborhood network topology and network condition to the control device. Using such information from all forwarding devices, the control device can create a database of global network topology and network condition. This topology database enables the control device to establish a path between a sources forwarding device and a destination forwarding device in the network.
Once this path is established to the controller, the controller may, at any later time, determine a better path for the communications between the forwarding device and the controller using another method which may utilize more complete topology and performance information. If this better path is determined, the existing path may be replaced by the controller resignalling the specific new path and then eliminating the existing path.
The Detailed Description that follows is divided into five sections. The first section describes, with respect to FIGS. 1A-1C, a control device in the network sending control packets to each forwarding device, and gathering topology and network condition information from the forwarding devices. The second section describes, with respect to FIGS. 2-3, setting up bidirectional connections between the control device and each forwarding device. The third section describes, with respect to FIGS. 4A-B, using the control device to establish and transfer data without requiring edge routers to buffer a large amount of packets. The fourth section describes, with respect to FIG. 5, using multiple control devices in the network. The fifth and final section describes, with respect to FIG. 6, a control device system and its modules and a forwarding device system and its modules.
Control Device and Control Packets
FIG. 1A is a diagram 100 illustrating a communication network. The communication network may be a local area network (LAN), metropolitan area network (MAN), or wide area network (WAN). It may utilize any point-to-point or multipoint-to-multipoint networking protocols. The network access protocols used may include, for example, Multi Protocol Label Switching (MPLS), Ethernet, Asynchronous Transfer Mode (ATM), High-Level Data Link Control (HDLC), or Packet Relay.
The communication network includes a plurality of forwarding devices, such as forwarding devices 104, 106, 108, 110, and 112, interconnected by links. Forwarding devices are devices that forward packets, including devices at the data link layer (OSI layer 2) and the network layer (OSI layer 3).
The communication network also includes a routing control device 102. Routing control device 102 may be connected to at least one forwarding device, for example forwarding device 104. Routing control device 102 may be geographically remote from other forwarding devices in the network.
In an example, a user may send data from a source forwarding device, for example forwarding device 106, to a destination forwarding device, for example 110. The data may be a stream divided into packets, and each packet may specify forwarding device 110, or another downstream device, as its destination.
Routing control device 102 provides intelligent routing for establishing a network connection. To do so, the control device 102 requires knowledge of the topology and the condition of the network links and devices. Routing control device 102 is directly connected a forwarding device 104. For the control device to gain knowledge of the network, the control device 102 sends a control packet 120 to the forwarding device 104.
Control packet 120 may include an indication that the packet is a control packet, an identifier of routing control device 102, such as its Media Access Control address, and a serial number of the packet. In an embodiment the control device 102 may send a new control packet at uniform time intervals. Each time control device 102 sends a new packet, control device 102 may increment the serial number, sending the new control packet out with a different number.
In an illustrative example, control packet 120 may include the following information:
Type Flag: C (for control packet)
MAC Address of Control Device: 01:23:45:67:89:ab
Serial No. of Control Packet: 1
Once routing control device 102 sends the control packet 120 to the adjacent forwarding device 104, the network forwarding devices flood the packet across the network as illustrated in FIG. 1B.
FIG. 1B is a diagram illustrating the network forwarding devices flooding a control packet across the network. After receiving control packet 120, the forwarding device 104 may send out the control packet on all its ports other than the port that received it.
As mentioned above, when routing control device 102 generates control packet 120, the control device may include its address and a serial number in the control packet. As forwarding device 104 receives the control packet, and before forwarding it, the forwarding device 104 may make two modifications. First, it may add its own identifier (such as its MAC address) to the control packet. This address is added to an address field in the control packet for keeping track of all the forwarding devices the control packet travels through. Second, forwarding device 104 may modify a performance metric in the control packet. The performance metric can include, for example, the delay in sending the control packet from control device 102 to forwarding device 104. This delay information may be collected, for example, by forwarding device 104 using Link Layer Discovery Protocol (LLDP) packet exchanges. The delay may be determined as a moving average or otherwise smoothed out to prevent volatile changes as the network reacts to changes in traffic volume.
With those two modifications, forwarding device 104 forwards the control packet on its other ports as control packets 142, 144, and 146. At this point, all three control packets 142, 144, and 146 may contain the same information. Continuing the example above and assuming the MAC address of forwarding device 104 is 02:02:02:02:02:bc and the delay between control device 102 and forwarding device 104 is 5 ns, the control packets 142, 144, and 146 may include the following information:
Type Flag: C (for control packet)
MAC Address of Control Device: 01:23:45:67:89:ab
Serial No. of Control Packet: 1
Addresses of Intermediate Forwarding Devices: 02:02:02:02:02:bc
Performance Metric: 5 ns
Forwarding device 104 forwards control packet 144 on link 114 to forwarding device 106; control packet 142 on link 116 to forwarding device 108; and control packet 146 on link 118 to forwarding device 110.
Once forwarding device 106 receives the control packet 144, it adds its own address to the address field and updates the performance metric of the control packet to generate a control packet 148. For example, forwarding device 106 may add the delay to transmit data from forwarding device 106 to forwarding device 104. Continuing the example above and assuming the MAC address of forwarding device 106 is 03:03:03:03:03:cd and the delay between controller 102 and forwarding device 104 is 2 ns, the control packet 148 may include the following information:
Type Flag: C (for control packet)
MAC Address of Control Device: 01:23:45:67:89:ab
Serial No. of Control Packet: 1
Addresses of Intermediate Forwarding Devices: 02:02:02:02:02:bc, 03:03:03:03:03:cd
Performance Metric: 7 ns
Forwarding device 106 transmits packet 148 on link 122 to forwarding device 108.
Forwarding device 108 receives control packets 142 and 144. Using the delay information in each of these two control packets, forwarding device 108 can choose to establish a path with less delay to the control device 102. Using the address sequence field in the control packet, forwarding device 108 can know to get to the control device, which neighboring forwarding device it needs to communication with.
For example, forwarding device 108 may know that the time to transmit data to forwarding device 106 on link 120 is 3 ns, and that the time to transmit data to forwarding device 104 on link 116 is 9 ns. Adding that to the performance metrics received in packet 148 and 142, forwarding device 108 can determine that transmission to control device 102 via forwarding device 106 takes 10 ns, while transmission via forwarding device 104 takes 14 ns. For that reason, forwarding device 108 may choose to route data to control device 102 via forwarding device 106, and not device 104, taking the faster path.
Also, forwarding device 108 may reforward control packets 142 and 148. If forwarding device 108 receives the packet denoting the faster path-in this case, packet 148—before the packet denoting the slower path-in this case, packet 142—the forwarding device 108 may not forward the slower packet. This is because forwarding device 108 knows that any data headed to control device 102 should take the faster path through forwarding device 106, regardless of whether it originated from forwarding device 108 or another forwarding device, such as device 112.
Having determined the best path to control device 102 is through forwarding device 106, forwarding device 108 may establish a bi-directional path with forwarding device 106. In an embodiment, to establish this bi-directional path, forwarding device 108 sets a rule in its routing table, which also may be referred to a forwarding table, that in order to get to the control device, it sends a packet on a specific port (the port that it received control packet 144) and with a particular label. This information is communicated with forwarding device 106, so both forwarding devices follow the same rule. Therefore, when the forwarding device 106 receives the packet from forwarding device 108 with the set label and on the set port, it knows that this packet is intended for control device 102. Similarly, forwarding device 106 knows to forward traffic for control device 102 through forwarding device 104. So, forwarding device 106 sets up a label with forwarding device 104 to route data to control device 102. Labels may also be set up to route data from control device 102 through forwarding device 106 to forwarding device 104 in a similar manner.
In this way, by analyzing and reforwarding control packets from a control device, each forwarding device can discover how to communicate with the control device and set up a label-switched path to the control device. As described below with respect to FIGS. 4A-B when the forwarding device receives a new data stream, the forwarding device may forward packets from the new data stream to the control device until the control device sets up a path for the packets through the network.
In addition to using the label-switched path to forward data to the control device, embodiments may also use the label-switched path to help the control device discover the topology information of the network as illustrated in FIG. 1C.
FIG. 1C is a diagram 170 that illustrates control device 102 collecting information reflecting the network topology.
Each forwarding device sends information to the routing control device that shows what forwarding devices it is connected to, and what the conditions of the surrounding links and forwarding devices are. Conditions of surrounding links and forwarding devices can include, for example, traffic and congestion information, latency, packet loss rate, jitter, etc. This information may be collected, for example, using Link Layer Discovery Protocol (LLDP). In an embodiment, the forwarding devices send this information periodically. And, the forwarding devices use the paths established between them and the control device to send this information.
In the example shown in FIG. 1C, a path for forwarding device 108 to the control device 102 is established. This path includes forwarding devices 108, 106, and 104. Forwarding device 108 sends the information including its surrounding topology to the control device 102. In an example, forwarding device 108 sends this information in a packet 172 to routing control device 102.
Routing control device 102, using the topology information it receives from all of the forwarding devices including forwarding device 108, creates a database 174 that reflects the topology of the network of the forwarding devices.
Establishing Paths to and from the Control Device
FIG. 2 is a flowchart that illustrates a method 200 for finding a path from the control device to a forwarding device.
At step 202, the control device physically connects to a forwarding device of the network of forwarding devices. At step 204, the control device sends a control (or discovery) packet, for example a Link Layer Discovery Protocol (LLDP) packet, to the forwarding device it is connected to.
The forwarding device receiving the packet, at step 206 verifies whether the packet originated from a control device. In an example, the forwarding device can verify that the packet is from a control device by, for example, checking to see if a particular flag is raised.
The control packet includes a performance metric that shows conditions of the network links or network devices. For example the metric can show link latency. Therefore, in this example, a lower metric shows a lower latency therefore a better performance. The metric can also be a function of multiple conditions such as latency, packet loss, jitter etc.
Each forwarding device that receives the control packet, updates the performance metric. The updated metric, for example, shows the additional latency for the control packet to reach the forwarding device from a previous, or upstream, forwarding device. After updating the metric, the forwarding device floods the control packet on all its ports other than the port where the control packet was received.
A forwarding device may receive again the same control packet that it had received before. This may happen because the control packets are flooded through the network. The forwarding device can recognize the repeat control packet by the unique serial number that the control device attaches to each control packet.
The forwarding device, at step 208, checks to see if packet's performance metric is better than previous metrics received from the control device. If the metric is the best performance metric among all control packets received by the forwarding device, at step 210, the forwarding device stores packet's incoming port as the best way to reach the control device.
At step 212, the forwarding device checks the serial number to determine whether the control packet has been previously forwarded, to avoid a control packet from indefinitely circulating through the network. Since the control packet adds a unique serial number to each control packet it generates, the forwarding devices can use the serial number of a control packet to determine whether it has previously forwarded the control packet or not. Or, the forwarding devices can use the serial number to determine whether the current control packet is out of date if, for example, they had previously forwarded a more recent control packet with a greater serial number. A number of other mechanisms may be used to avoid indefinitely circulating packets through the network such as hashes or checksums of at least a portion of the control packet.
The forwarding device, at step 214, determines whether the packet has not previously been forwarded and includes a metric showing the best performance. If either the control packet does not show the best performance metric, or it has been previously forwarded by the forwarding device, the forwarding device discards the packet and the process ends.
If the control packet contains the best performance metric and is not previously forwarded, the process 200 sets up path at step 216. Step 216 is described in details in the description of FIG. 3 below.
Next, at step 218, the forwarding device updates the performance metric to reflect the performance of the link connecting the upstream forwarding device and the current forwarding device, and the performance of the two forwarding devices themselves. Next, at step 220, the receiving forwarding device floods the packet on all its ports, other than the port where it received the control packet. In this way, the updated control pack is sent to other forwarding devices.
The other forwarding devices repeat the process from step 206, processing the packet in the same manner.
FIG. 3 is a flowchart that illustrates a method 216 for setting up a path between forwarding devices 104 and 106. As an example, if a control packet has traveled to forwarding device 106, from the forwarding device 104, forwarding device 104 is an upstream forwarding device for 106.
Continuing the above with respect to FIGS. 1A-B and 2, assume forwarding device 106 receives from the upstream forwarding device 104 a new control packet and the new control packet has the best performance characteristics to date. For this reason, a path is set up at step 216 in FIG. 2.
At step 302, forwarding device 106 sends request to the next upstream forwarding device for a path to the control device. Forwarding device 104 at step 306 determines a label for establishing the path. Forwarding device 104 sends this label to forwarding device 106, at step 308. Forwarding device 106 establishes this label rule accordingly in its routing table at step 304.
At step 310, forwarding device 104 requests path to control device. To create a path, forwarding device 104 may request a label from another upstream forwarding device, repeating steps 302, 306, 308, and 310. Forwarding device 104 establishes label rule in its routing table at step 312.
For example, forwarding device 104, after receiving the request from forwarding device 106 at step 302, chooses label L1 for the path between the two. After sending this label to forwarding device 106, forwarding device 106 will enclose this label on all the data packets destined to the control device.
In this example, forwarding device 104, upon receiving data packets with label L1 on the port connected to the forwarding device 106, forwards the packets to the control device. To forward packets to the control device, forwarding device 104 may know (having established a label rule at step 312) to forward on a particular port with a particular label. In this way a path from the forwarding device to the control device is established.
Also, a path may be established in the other direction: from the control device to the forwarding device in a similar manner. In that case, each forwarding device may set up a label in its routing table. The entry in the routing table may include the associated port to route the data to.
After such paths are established among forwarding devices in the network, a path between the control device to and from each forwarding device in the network exists. In the example of FIG. 3, after the path is established between forwarding device 106, forwarding device 104, and the control device, forwarding device 106 uses this path to send data to the control device. And vice versa, the control device uses this path for sending data to the forwarding device 106.
Establishing Fast Paths for New Data Streams
FIG. 4A shows a diagram 400 illustrating a data stream from network user 442 addressed to server 444. The data stream includes packets 402, 404, 406, 408, 410, and 412. When the first packet of the data stream—packet 402—reaches forwarding device 106, it is routed to control device 102. Control device 102 determines that this packet belongs to a new connection and starts the process of establishing a fast path for the connection, which does not flow through the control device 102.
In the example, after packet 402, packets 404 and 406 are also sent. Forwarding device 106 may buffer packets 404 and 406 or may forwards those packets onto control device 102, just as it did with the first packet 402.
After the control device receives the first packet, it sends the packet to forwarding device 104. Forwarding device 104, using the destination address included in the packet, and the paths set up at step 216 in FIGS. 2 and 3, forwards the packet to the corresponding port with the corresponding label.
Next, the control device computes a path from the source to the destination. The path comprises network links and routers, but not the control device. For example, using the MPLS protocol, the control device creates a label-switched path (LSP) for the data stream. To determine the path, the control device may take into account current or historical bandwidth usage. For example, the control device may consider network usage during previous weeks (or another cyclical period). The control device may also create multiple paths for the connection to enable load balancing on multiple paths.
The control device may also take into account latency, jitter, packet loss, or any other performance metric across various paths, the user's service level agreement, or the type of data being transferred. For example, broadcast video data may require a great deal of bandwidth, but latency may be relatively unimportant. Voice-over-IP (VoIP) data, on the other hand, may not require as much bandwidth, but latency may be more important. For broadcast video data, the control device could select a high-bandwidth, high-latency path, and, for VoIP data, the control device could select a low-bandwidth, low-latency path.
In another embodiment, the control device may route data through a particular server. For example, data having a certain type or directed to a certain destination may need to be scrubbed by a particular scrubbing server en route. The scrubbing server may be used to scan the data for malicious content, to monitor incoming data, or to perform other analysis on the data. In that embodiment, the control device may determine such that it goes through the particular scrubbing server or set of servers.
After determining the fast path, the control device updates routing tables for each forwarding device along the path. If multiple paths are computed for the data stream, the control device creates routing tables in accordance with all the paths. In one embodiment, the updated routing tables may instruct the forwarding device how to forward packets having a particular combination of source/destination addresses and source/destination ports. In an alternative embodiment, the data stream may be identified with a label and the updated routing table may indicate how to forward packets having the label.
The control device sends updated routing tables to network routers. The control device can use the paths established to all the forwarding devices in step 216 to send the routing tables. An example of how the routers are configured is illustrated in FIG. 4B.
FIG. 4B shows a diagram 420 illustrating how control device 102 configures the network forwarding devices to establish the path between user 442 and server 444.
In FIG. 4B, control device 102 determines that the data stream between user 442 and server 444 follows the path including links 120, 122, 124 and forwarding devices 106, 108, 112, and 110. To configure the forwarding devices, the control device 102 sends the updated routing tables using the configuring commands 422, 424, 426, and 428.
These configuring commands configure all the forwarding devices on the fast path connecting user 442 to destination 444. In particular, command 422 instructs forwarding device 106 to forward packets in the data stream to link 120; command 424 instructs forwarding device 108 to forward packets in the data stream to link 122; command 426 instructs forwarding device 112 to forward packets in the data stream to link 124; and command 428 instructs forwarding device 110 to forward packets in the data stream to link 124.
In an embodiment, to ensure that packets continue to flow through the control device until the path is fully established, routers along the path are configured from the egress point (forwarding device 104) to the ingress point (forwarding device 106). First, command 428 configures forwarding device 110. Second, command 426 configures forwarding device 112. Third, command 424 configures forwarding device 108. Fourth, command 422 configures forwarding device 106.
Referring back to FIG. 4A, until the path is established, user 442 continues to transmit packets of the data stream— packets 402, 404, and 406. As mentioned above, forwarding device 106 continues to direct these packets on the path to control device 102.
On receipt of these packets, control device 102 routes them to their destination using the previously determined default path at step 216 in FIG. 2. In this way, while the path through the network is being established (as illustrated in FIG. 4B), packets continue to be routed to their destination, avoiding the need to buffer the initial packets in the edge router.
Once the path is set up (e.g., the forwarding devices are configured with their new routing tables), data flows along the fast path set up by the control device. At this point, data may flow at a greater rate through the forwarding devices and lower end to end latency, since it no longer goes through the control device.
Multiple Control Devices
FIG. 5 is a diagram that illustrates a network with multiple control devices. In an example embodiment shown in FIG. 5, control device 102 is connected to forwarding device 104, control device 504 is connected to forwarding device 110, and control device 506 is connected to forwarding device 506.
In the example embodiment, each control device 102, 504 or 506 sends control packets, periodically or at different time intervals to the forwarding device directly connected to it. And following the same process as illustrated in FIG. 2, each control device establishes two-directional paths to each forwarding device in the network.
Each forwarding device, in the example embodiment of FIG. 5, sends information showing the topology of its neighboring forwarding devices and the network condition information to each control device in the network. In the embodiment, forwarding devices use the bi-directional paths established at step 216 of process 200, to send this information. In an embodiment, forwarding devices send this information to control devices periodically or at different time intervals.
A single physical network may be mirrored on multiple control devices with multiple topology databases for redundancy purposes. Each of these control devices has paths established between themselves and each router in the network. In the event that a default path to one control device is failed, traffic may choose a path to a different control device.
In an example embodiment, each forwarding device picks one control device at a time for forwarding data and establishing a fast path to a destination. In the embodiment, the forwarding device can pick any one of the control devices based on a choosing algorithm. The choosing algorithm can be, for example, a round robin algorithm. The forwarding device may also consider network load or number of new connections a control device is setting up at a time in the algorithm for choosing a control device. In addition, the forwarding device may ask the controller with the lowest latency to establish a fast path to a destination. The round robin approach may be used in conjunction with the lowest-latency approach. For example, a device may choose to balance traffic across multiple paths to the controllers, perhaps by rounding the metric to a closest 5 for example, therefore treating performance values of 3, 4, 5, 6, 7 as the same as a value of 5. Among those controllers with the lowest rounded metric, the forwarding device may adopt a round robin algorithm to select the controller to create the fast path. This helps to limit the impact of slight modifications in the performance values as the network reacts to real world situations.
In an embodiment, control devices in the network need not be synchronized with one another. If a control device fails, after not receiving control packets from that control device for a period of time, forwarding devices remove the labels for maintaining a path to that control device. Forwarding devices continue using other control devices with the same choosing algorithm such as round robin.
Having multiple control devices highly increases the resiliency of the network. If a control device fails, or a link connecting to a control device fails, forwarding devices can continue using other control devices in the network. Multiple control devices also help balancing load in the network. By intelligently choosing a control device that has a lesser number of new connection requests, or by choosing a control device with the best path to, such as the path with lowest latency, forwarding devices can avoid congested segments of the network when requesting a new connection.
Control Device and Forwarding Device Modules
FIG. 6 shows a diagram 600 illustrating control device 102 and its modules and forwarding device 104 and its modules.
In particular, control device 102 includes a controller discovery module 610, a path determination module 608, a data forward module 612, and a topology database 606. The various modules may operate as described above with respect to the method in FIG. 2.
Controller discovery module 610 is configured to determine a topology of the network of the forwarding devices. The controller discovery module 610 sends control packets to the forwarding device directly attached to the control device. The control packets include the address of the control device and a serial number. Using the combination of the address and the serial number each control packet can be uniquely identified throughout the network.
As control packets travel through the network, each forwarding device receiving a control packet adds its own address to the control packet. Also, each forwarding device updates the metric showing network characteristics to each control packet. Upon receiving a control packet, a forwarding device knows the path the control packet has traveled to arrive at the forwarding device from the control packet. Also using the performance metric information, the forwarding device knows which path, among multiple paths traveled by multiple forwarding packets, is the best path to the control device, as described by process 200. Therefore forwarding devices can dynamically update the best path to the control device.
After a path to a forwarding device is set up, controller discovery module 610 receives topology and network condition information from the forwarding devices in the network. Using this information and similar information from other forwarding devices in the network, controller discovery module 610 creates a topology database 606.
Topology database 606 stores the discovered topology of the forwarding devices in the network. Topology database 606 reflects the current topology of how forwarding devices and links are connected together. Also, topology database 606 stores information showing the current condition of the network. Condition of the network can include latency, packet loss, congestion or jitter on network links or devices.
Path determination module 608 establishes paths for new network connections. Upon a request for connection from a source forwarding device, path determination module 608 determines a connection path from the source forwarding device to a destination forwarding device. To determine a path, path determination module 608 uses topology database 606. Using the topology and network condition information stored in the topology database 606, path determination module 608 can find an optimum path from the source forwarding device to a destination. The optimum path can, for example, be a shortest path, or a path with least delay, or a path with least packet loss.
After determining that path for a connection, path determination module 608 also sends configuring commands to each forwarding device on the determined path. As illustrated in the example embodiment in FIG. 4B, path determination module creates and sends the configuring commands 422, 424, 426, and 428. The configuring commands configure the corresponding forwarding devices. The configured forwarding devices route packets belonging to the connection on the path determined for the connection by path determination module 608.
Data forward module 612 carries the initial packets for the requested connection while path determination modules determine the path for the connection and configures the forwarding device by sending configuring commands. As illustrated in FIG. 4A, the initial packets 402, 404, 406, 408, and 410 are forwarded to the control module over the path from the source forwarding device to the control device. Data forwarding module 612 forwards the initial packets over the path from the control device to the destination forwarding device, while the connection path is being established.
In the example embodiment shown in FIG. 6, forwarding device 104 includes a path request module 622, a switch discovery module 624, a routing table 626, and a performance metric module 628.
Path request module 622, after receiving a request for a new data connection at the forwarding device, sends a message to the routing control device requesting establishing a connection path. The path request module 622 uses the path to the control device, set up at step 216 of process 200, to send the request for establishing connection path. The path request instructs the routing control device to determine a path from the source forwarding device to a destination forwarding device. The path determination module 608 then determines the connection path and configures the forwarding devices to forward the new data stream along the determined path.
Switch discovery module 624 receives the control packets sent by the controller discovery module 610 of the control device. Switch discovery module 624 determines a path from the forwarding device to the control device as shown in step 216 of method 200. In an embodiment, switch discovery module 624 makes this determination based on the information in the control packet and the port on which it receives the control packet.
In order to establish the path from the forwarding device to the control device, switch discovery module 624 identifies, based in part on the port that received the control packet, which port on the forwarding device to forward data to reach the routing control device.
In an embodiment, if the performance metric in the control packet arriving from a neighboring device shows a path from the control device to the forwarding device with best performance, switch discovery module 624 determines the label to route to control device, as shown in step 306 of method 300.
Switch discovery module 624 also, after determining whether a received control packet indicates a best performance path and is not already forwarded on other ports of the forwarding device, as shown in step 214 of process 200, floods the control packet on its ports other that the port where it has received the control packet.
Routing table 626 of a forwarding device contains information on how to forward a data packet in the network. Configuring commands 422, 424, 426, and 428 update the routing table in the forwarding devices with information on how to forward a packet. Also after receiving a label for setting up a path to control device 102, the switch discovery module 624 establishes forwarding rules in the routing table 626 based on the determined labels.
Performance metric module 628 updates the performance metric field of an incoming control packet. An incoming control packet includes a field that contains a network performance metric of the path from the control device up to the previous forwarding device. The performance metric module updates the performance metric field so that it reflects the performance of the path up to the current forwarding device.
Performance metric module 628 also determines whether the forwarding device has previously forwarded another control packet, with a better performance metric.
Performance metric module 628 informs the switch discovery module 624 of whether a previous same control packet with a better metric has been flooded on the forwarding device ports.
CONCLUSION
The term “user,” as used herein, may encompass both a customer of the network connectivity service, such as an employee of a business that utilizes the network connectivity service, and a network administrator of the service provider itself. Users may also be at different companies or organizations.
Topology database 606 may be any stored type of structured memory, including a persistent memory. In examples, each database may be implemented as a relational database or file system.
Each of the devices and modules in FIG. 6 may be implemented in hardware, software, firmware, or any combination thereof.
Each of the devices and modules in FIG. 6 may be implemented on the same or different computing devices. Such computing devices can include, but are not limited to, a personal computer, a mobile device such as a mobile phone, workstation, embedded system, game console, television, set-top box, or any other computing device. Further, a computing device can include, but is not limited to, a device having a processor and memory, including a non-transitory memory, for executing and storing instructions. The memory may tangibly embody the data and program instructions. Software may include one or more applications and an operating system. Hardware can include, but is not limited to, a processor, a memory, and a graphical user interface display. The computing device may also have multiple processors and multiple shared or separate memory components. For example, the computing device may be a part of or the entirety of a clustered or distributed computing environment or server farm.
Identifiers, such as “(a),” “(b),” “(i),” “(ii),” etc., are sometimes used for different elements or steps. These identifiers are used for clarity and do not necessarily designate an order for the elements or steps.
The present invention has been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.
The foregoing description of the specific embodiments will so fully reveal the general nature of the invention that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present invention. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
The breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims (12)

What is claimed is:
1. A computer implemented method comprising:
(a) sending, from a routing control device, to a forwarding device of a plurality of forwarding devices, a control packet, wherein the control packet includes an address of the routing control device, a serial number of the control packet, and a performance metric, wherein the forwarding device sends the control packet to another forwarding device in the plurality of forwarding devices, and wherein the forwarding device updates the performance metric to indicate an estimated time to route a packet from the forwarding device to the routing control device;
(b) periodically receiving, on the routing control device, messages from the forwarding device, each message identifying the forwarding device and other forwarding devices in the plurality of forwarding devices that the forwarding device is connected to;
(c) constructing a topology database representing a topology of the network based on the messages received in (b);
(d) constructing a default path based on the messages received in (b);
(e) receiving, on the routing control device, a message, wherein the message requests the routing control device to determine a path through the plurality of forwarding devices to forward packets of a data stream;
(f) receiving, on the routing control device, at least one packet of the data stream;
(g) prior to determining the path through the plurality of forwarding devices, routing the at least one packet using the default path;
(h) determining the path through the plurality of forwarding devices, based at least on the topology database, the determined path comprising a subset of the plurality of forwarding devices and connecting a source of the data stream to a destination of the data stream; and
(i) sending configuration messages to each forwarding device in the subset of the plurality of forwarding devices to instruct each forwarding device to forward packets of the data stream along the determined path.
2. The method of claim 1, wherein the sending (i) comprises:
sending a configuration message to another forwarding device in the subset of the plurality of forwarding devices and directly connected to the destination of the data stream, and
repeatedly sending configuration messages to other forwarding devices in the subset of the plurality of forwarding devices in the reverse order of the path from the source of the data stream to the destination of the data stream.
3. The method of claim 1, wherein the determining (h) comprises:
determining the path to route through a destination server.
4. The method of claim 1, wherein the control packet further includes a metric indicating one or more of congestion information, latency, packet loss rate, and jitter, encountered in routing a packet from the forwarding device or the other forwarding devices to the routing control device.
5. The method of claim 1, wherein the forwarding device sends a label to another forwarding device in the subset of the plurality of forwarding devices, wherein the label, when attached to a packet received at the forwarding device indicates to the forwarding device to forward the packet toward the routing control device.
6. The method of claim 1, wherein the forwarding device adds an address of the forwarding device to the control packet prior to sending the control packet to the another forwarding device.
7. A program storage device tangibly embodying a program of instructions executable by at least one machine to perform a method for discovering routes between a plurality of forwarding devices in a network via a routing control device, the method comprising:
(a) sending, from routing control device, to a forwarding device from a plurality of forwarding devices, a control packet, wherein the control packet includes an address of the routing control device, a serial number of the control packet, and a performance metric, wherein the forwarding device sends the control packet to another forwarding device in the plurality of forwarding devices, and wherein the forwarding device updates the performance metric to indicate an estimated time to route a packet from the forwarding device to the routing control device;
(b) periodically receiving, on the routing control device, messages from the forwarding device, each message identifying the forwarding device and other forwarding devices in the plurality of forwarding devices that the forwarding device is connected to;
(c) constructing a topology database representing a topology of the network based on the messages received in (b);
(d) constructing a default path based on the messages received in (b);
(e) receiving, on the routing control device, a message, wherein the message requests the routing control device to determine a path through the plurality of forwarding devices to forward packets of a data stream;
(f) receiving, on the routing control device, at least one packet of the data stream;
(g) prior to determining the path through the plurality of forwarding devices, routing the at least one packet using the default path;
(h) determining the path through the plurality of forwarding devices, based at least on the topology database, the determined path comprising a subset of the plurality of forwarding devices and connecting a source of the data stream to a destination of the data stream; and
(i) sending configuration messages to each forwarding device in the subset of the plurality of forwarding devices to instruct each forwarding device to forward packets of the data stream along the determined path.
8. The program storage device of claim 7, wherein the sending (i) comprises:
sending a configuration message to another forwarding device in the subset of the plurality of forwarding devices and directly connected to the destination of the data stream, and
repeatedly sending configuration messages to other forwarding devices in the subset of the plurality of forwarding devices in the reverse order of the path from the source of the data stream to the destination of the data stream.
9. The program storage device of claim 7, wherein the determining (h) comprises:
determining the path to route through a destination server.
10. The program storage device of claim 7, wherein the control packet further includes a metric indicating one or more of congestion information, latency, packet loss rate, and jitter, encountered in routing a packet from the forwarding device or another forwarding device of the other forwarding devices to the routing control device.
11. The program storage device of claim 7, wherein the forwarding device sends a label to another forwarding device in the subset of the plurality of forwarding devices, wherein the label, when attached to a packet received at the forwarding device indicates to the forwarding device to forward the packet toward the routing control device.
12. The program storage device of claim 7, wherein the forwarding device adds an address of the forwarding device to the control packet prior to sending the control packet to the another forwarding device.
US15/177,170 2014-02-24 2016-06-08 Control device discovery in networks having separate control and forwarding devices Active 2034-04-09 US10057158B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/177,170 US10057158B2 (en) 2014-02-24 2016-06-08 Control device discovery in networks having separate control and forwarding devices
US16/105,880 US10673741B2 (en) 2014-02-24 2018-08-20 Control device discovery in networks having separate control and forwarding devices

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/188,027 US8989199B1 (en) 2014-02-24 2014-02-24 Control device discovery in networks having separate control and forwarding devices
US14/667,407 US9374296B2 (en) 2014-02-24 2015-03-24 Control device discovery in networks having separate control and forwarding devices
US15/177,170 US10057158B2 (en) 2014-02-24 2016-06-08 Control device discovery in networks having separate control and forwarding devices

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US14/667,407 Continuation US9374296B2 (en) 2014-02-24 2015-03-24 Control device discovery in networks having separate control and forwarding devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/105,880 Continuation US10673741B2 (en) 2014-02-24 2018-08-20 Control device discovery in networks having separate control and forwarding devices

Publications (2)

Publication Number Publication Date
US20160285742A1 US20160285742A1 (en) 2016-09-29
US10057158B2 true US10057158B2 (en) 2018-08-21

Family

ID=52669405

Family Applications (4)

Application Number Title Priority Date Filing Date
US14/188,027 Active US8989199B1 (en) 2014-02-24 2014-02-24 Control device discovery in networks having separate control and forwarding devices
US14/667,407 Active US9374296B2 (en) 2014-02-24 2015-03-24 Control device discovery in networks having separate control and forwarding devices
US15/177,170 Active 2034-04-09 US10057158B2 (en) 2014-02-24 2016-06-08 Control device discovery in networks having separate control and forwarding devices
US16/105,880 Active US10673741B2 (en) 2014-02-24 2018-08-20 Control device discovery in networks having separate control and forwarding devices

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US14/188,027 Active US8989199B1 (en) 2014-02-24 2014-02-24 Control device discovery in networks having separate control and forwarding devices
US14/667,407 Active US9374296B2 (en) 2014-02-24 2015-03-24 Control device discovery in networks having separate control and forwarding devices

Family Applications After (1)

Application Number Title Priority Date Filing Date
US16/105,880 Active US10673741B2 (en) 2014-02-24 2018-08-20 Control device discovery in networks having separate control and forwarding devices

Country Status (7)

Country Link
US (4) US8989199B1 (en)
EP (1) EP2911348B1 (en)
JP (1) JP6576006B2 (en)
CN (1) CN106063195B (en)
CA (1) CA2882535C (en)
HK (1) HK1213383A1 (en)
WO (1) WO2015127107A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180359174A1 (en) * 2014-02-24 2018-12-13 Level 3 Communications, Llc Control device discovery in networks having separate control and forwarding devices

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102938722B (en) * 2012-10-30 2017-11-10 中兴通讯股份有限公司 The method and device that a kind of network equipment periodic protocol is given out a contract for a project
US10749711B2 (en) 2013-07-10 2020-08-18 Nicira, Inc. Network-link method useful for a last-mile connectivity in an edge-gateway multipath system
US10454714B2 (en) 2013-07-10 2019-10-22 Nicira, Inc. Method and system of overlay flow control
US10700958B2 (en) 2015-04-01 2020-06-30 Neutrona Networks International Llc Network management system with traffic engineering for a software defined network
US10498652B2 (en) 2015-04-13 2019-12-03 Nicira, Inc. Method and system of application-aware routing with crowdsourcing
US10425382B2 (en) 2015-04-13 2019-09-24 Nicira, Inc. Method and system of a cloud-based multipath routing protocol
US10135789B2 (en) 2015-04-13 2018-11-20 Nicira, Inc. Method and system of establishing a virtual private network in a cloud service for branch networking
US9882806B2 (en) * 2015-06-03 2018-01-30 Cisco Technology, Inc. Network description mechanisms for anonymity between systems
CN106411549A (en) * 2015-07-30 2017-02-15 中兴通讯股份有限公司 Processing method and apparatus of layer adjacency automatic discovery
CN107204924B (en) 2016-03-18 2020-09-25 华为技术有限公司 Link discovery method and device
CN106685730B (en) * 2017-01-23 2020-02-11 苏州浪潮智能科技有限公司 Sdn network system with separated configuration management and control
US20180219765A1 (en) 2017-01-31 2018-08-02 Waltz Networks Method and Apparatus for Network Traffic Control Optimization
US11121962B2 (en) 2017-01-31 2021-09-14 Vmware, Inc. High performance software-defined core network
US10992558B1 (en) * 2017-11-06 2021-04-27 Vmware, Inc. Method and apparatus for distributed data network traffic optimization
US11252079B2 (en) 2017-01-31 2022-02-15 Vmware, Inc. High performance software-defined core network
US11706127B2 (en) 2017-01-31 2023-07-18 Vmware, Inc. High performance software-defined core network
US20200036624A1 (en) 2017-01-31 2020-01-30 The Mode Group High performance software-defined core network
US10992568B2 (en) 2017-01-31 2021-04-27 Vmware, Inc. High performance software-defined core network
US10778528B2 (en) 2017-02-11 2020-09-15 Nicira, Inc. Method and system of connecting to a multipath hub in a cluster
CN108429652A (en) * 2017-02-14 2018-08-21 中兴通讯股份有限公司 Distal end traffic mirroring control method, implementation method and relevant device based on SDN
CN106713146B (en) * 2017-02-27 2020-12-18 台州市吉吉知识产权运营有限公司 Method, device and system for implementing router discovery protocol based on software defined network
US10433201B2 (en) 2017-03-17 2019-10-01 Electronics And Telecommunications Research Institute Method for transmitting and receiving packet in transport network
US10523539B2 (en) 2017-06-22 2019-12-31 Nicira, Inc. Method and system of resiliency in cloud-delivered SD-WAN
CN109286564B (en) * 2017-07-20 2022-06-07 迈普通信技术股份有限公司 Message forwarding method and device
US11115480B2 (en) 2017-10-02 2021-09-07 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US10999165B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Three tiers of SaaS providers for deploying compute and network infrastructure in the public cloud
US11089111B2 (en) 2017-10-02 2021-08-10 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US11005684B2 (en) 2017-10-02 2021-05-11 Vmware, Inc. Creating virtual networks spanning multiple public clouds
US10999100B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider
US11223514B2 (en) 2017-11-09 2022-01-11 Nicira, Inc. Method and system of a dynamic high-availability mode based on current wide area network connectivity
US10841670B2 (en) * 2018-02-13 2020-11-17 Juniper Networks, Inc. Methods and apparatus for consistency check in disaggregated dense wavelength-division multiplexing (DWDM) systems
US11108640B2 (en) * 2018-12-20 2021-08-31 Advantest Corporation Controlling devices in a decentralized storage environment
US11233730B2 (en) * 2019-07-09 2022-01-25 Nvidia Corporation Network routing using aggregated links
US11153230B2 (en) 2019-08-27 2021-10-19 Vmware, Inc. Having a remote device use a shared virtual network to access a dedicated virtual network defined over public clouds
US11611507B2 (en) 2019-10-28 2023-03-21 Vmware, Inc. Managing forwarding elements at edge nodes connected to a virtual network
US11489783B2 (en) 2019-12-12 2022-11-01 Vmware, Inc. Performing deep packet inspection in a software defined wide area network
US11394640B2 (en) 2019-12-12 2022-07-19 Vmware, Inc. Collecting and analyzing data regarding flows associated with DPI parameters
US11606712B2 (en) 2020-01-24 2023-03-14 Vmware, Inc. Dynamically assigning service classes for a QOS aware network link
US11245641B2 (en) 2020-07-02 2022-02-08 Vmware, Inc. Methods and apparatus for application aware hub clustering techniques for a hyper scale SD-WAN
US11363124B2 (en) 2020-07-30 2022-06-14 Vmware, Inc. Zero copy socket splicing
US11444865B2 (en) 2020-11-17 2022-09-13 Vmware, Inc. Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN
US11575600B2 (en) 2020-11-24 2023-02-07 Vmware, Inc. Tunnel-less SD-WAN
US11601356B2 (en) 2020-12-29 2023-03-07 Vmware, Inc. Emulating packet flows to assess network links for SD-WAN
CN116783874A (en) 2021-01-18 2023-09-19 Vm维尔股份有限公司 Network aware load balancing
US11381499B1 (en) 2021-05-03 2022-07-05 Vmware, Inc. Routing meshes for facilitating routing through an SD-WAN
US11729065B2 (en) 2021-05-06 2023-08-15 Vmware, Inc. Methods for application defined virtual network service among multiple transport in SD-WAN
US11489720B1 (en) 2021-06-18 2022-11-01 Vmware, Inc. Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics
US11375005B1 (en) 2021-07-24 2022-06-28 Vmware, Inc. High availability solutions for a secure access service edge application
US20230034229A1 (en) * 2021-07-30 2023-02-02 Cisco Technology, Inc. Network monitoring agent hubs
US11943146B2 (en) 2021-10-01 2024-03-26 VMware LLC Traffic prioritization in SD-WAN
US11909815B2 (en) 2022-06-06 2024-02-20 VMware LLC Routing based on geolocation costs

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4771424A (en) * 1985-09-20 1988-09-13 Hitachi, Ltd. Routing control method in a packet switching network
US20020018449A1 (en) 1999-06-18 2002-02-14 Digital Island, Inc. On-demand overlay routing for computer-based communication networks
US20020085553A1 (en) 2000-12-28 2002-07-04 Maple Optical Systems, Inc. Technique for forwarding multi-cast data packets
US20020136223A1 (en) * 2000-12-19 2002-09-26 Ho Ka K. Method and apparatus for interworking PNNI with the signalling and routing protocols used in MPLS networks
US20030091011A1 (en) 2001-08-15 2003-05-15 Roberts Robin U. System and method for performing soft handoff in a wireless data network
US20040100953A1 (en) 2002-10-11 2004-05-27 Maoke Chen Dynamic tunneling peering with performance optimization
US20050111428A1 (en) 2003-11-25 2005-05-26 Philip Orlik Power and delay sensitive ad-hoc communication networks
US20070286185A1 (en) * 2003-12-22 2007-12-13 Anders Eriksson Control of Mobile Packet Streams
US7466655B1 (en) 2003-09-16 2008-12-16 Cisco Technology, Inc. Ant-based method for discovering a network path that satisfies a quality of service equipment
US20110261723A1 (en) 2009-10-06 2011-10-27 Nec Corporation Network system, controller, method and program
US20110317701A1 (en) 2010-01-05 2011-12-29 Nec Corporation Communication system, control device, processing rule setting method, packet transmission method, and program
WO2012081202A1 (en) 2010-12-14 2012-06-21 Nec Corporation Communication control system, control device, communication control method, and communication control program
US20130034104A1 (en) 2011-08-02 2013-02-07 Telefonaktiebolaget L M Ericsson (Publ) Packet Broadcast Mechanism in a Split Architecture Network
US20130077481A1 (en) 2010-01-05 2013-03-28 Nec Corporation Network system and network redundancy method
US20130148667A1 (en) 2010-08-20 2013-06-13 Takayuki Hama Communication system, control apparatus, communication method, and program
US20130188493A1 (en) 2010-11-01 2013-07-25 Nec Corporation Communication system, control apparatus, packet forwarding path control method, and program
US20130194914A1 (en) 2012-01-26 2013-08-01 Brocade Communications Systems, Inc. Link aggregation in software-defined networks
US8787388B1 (en) 2011-08-29 2014-07-22 Big Switch Networks, Inc. System and methods for forwarding packets through a network
US20140241367A1 (en) 2011-12-27 2014-08-28 Nec Corporation Communication system, controller, communication method, and program
US20140307742A1 (en) 2011-06-02 2014-10-16 Nec Corporation Communication system, control device, forwarding node, and control method and program for communication system
US20150117194A1 (en) 2012-04-16 2015-04-30 Nec Corporation Network Control Method and Device
US20150249587A1 (en) 2012-09-20 2015-09-03 Ntt Docomo, Inc. Method and apparatus for topology and path verification in networks

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080189769A1 (en) * 2007-02-01 2008-08-07 Martin Casado Secure network switching infrastructure
US20080212585A1 (en) * 2007-03-01 2008-09-04 Russell White Preventing Loops during Recovery in Network Rings Using Cost Metric Routing Protocol
EP2544417B1 (en) * 2010-03-05 2014-11-12 Nec Corporation Communication system, path control apparatus, packet forwarding apparatus and path control method
US8989199B1 (en) 2014-02-24 2015-03-24 Level 3 Communications, Llc Control device discovery in networks having separate control and forwarding devices

Patent Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4771424A (en) * 1985-09-20 1988-09-13 Hitachi, Ltd. Routing control method in a packet switching network
US20020018449A1 (en) 1999-06-18 2002-02-14 Digital Island, Inc. On-demand overlay routing for computer-based communication networks
US20020136223A1 (en) * 2000-12-19 2002-09-26 Ho Ka K. Method and apparatus for interworking PNNI with the signalling and routing protocols used in MPLS networks
US20020085553A1 (en) 2000-12-28 2002-07-04 Maple Optical Systems, Inc. Technique for forwarding multi-cast data packets
US20030091011A1 (en) 2001-08-15 2003-05-15 Roberts Robin U. System and method for performing soft handoff in a wireless data network
US20040100953A1 (en) 2002-10-11 2004-05-27 Maoke Chen Dynamic tunneling peering with performance optimization
US7466655B1 (en) 2003-09-16 2008-12-16 Cisco Technology, Inc. Ant-based method for discovering a network path that satisfies a quality of service equipment
US20050111428A1 (en) 2003-11-25 2005-05-26 Philip Orlik Power and delay sensitive ad-hoc communication networks
US20070286185A1 (en) * 2003-12-22 2007-12-13 Anders Eriksson Control of Mobile Packet Streams
US20110261723A1 (en) 2009-10-06 2011-10-27 Nec Corporation Network system, controller, method and program
US20110317701A1 (en) 2010-01-05 2011-12-29 Nec Corporation Communication system, control device, processing rule setting method, packet transmission method, and program
US20130077481A1 (en) 2010-01-05 2013-03-28 Nec Corporation Network system and network redundancy method
US20130148667A1 (en) 2010-08-20 2013-06-13 Takayuki Hama Communication system, control apparatus, communication method, and program
EP2608462A1 (en) 2010-08-20 2013-06-26 Nec Corporation Communication system, control apparatus, communication method and program
US20130188493A1 (en) 2010-11-01 2013-07-25 Nec Corporation Communication system, control apparatus, packet forwarding path control method, and program
WO2012081202A1 (en) 2010-12-14 2012-06-21 Nec Corporation Communication control system, control device, communication control method, and communication control program
US20140307742A1 (en) 2011-06-02 2014-10-16 Nec Corporation Communication system, control device, forwarding node, and control method and program for communication system
US20130034104A1 (en) 2011-08-02 2013-02-07 Telefonaktiebolaget L M Ericsson (Publ) Packet Broadcast Mechanism in a Split Architecture Network
US8787388B1 (en) 2011-08-29 2014-07-22 Big Switch Networks, Inc. System and methods for forwarding packets through a network
US20140241367A1 (en) 2011-12-27 2014-08-28 Nec Corporation Communication system, controller, communication method, and program
US20130194914A1 (en) 2012-01-26 2013-08-01 Brocade Communications Systems, Inc. Link aggregation in software-defined networks
US20150117194A1 (en) 2012-04-16 2015-04-30 Nec Corporation Network Control Method and Device
US20150249587A1 (en) 2012-09-20 2015-09-03 Ntt Docomo, Inc. Method and apparatus for topology and path verification in networks

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
Canadian Examination Report, dated Jan. 7, 2016, Application No. 2,882,535, Filed Feb. 20, 2015, 2 pages.
European Examination Report, dated Jan. 2, 2017, Application No. 15155929.1, filed Feb. 20, 2015; 6 pgs.
Extended European Search Report, dated May 15, 2015, Application No. 15155929.1, Filed Feb. 20, 2015, 9 pages.
International Preliminary Report on Patentability, dated Aug. 30, 2016, Int'l Appl. No. PCT/US15/016658, Int'l Filing Date Feb. 19, 2015; 6 pgs.
International Search Report, dated May 29, 2015, International Application No. PCT/US2015/016658, International Filing Date Feb. 19, 2015, 3 pages.
U.S. Appl. No. 14/667,407, filed Mar. 24, 2015, Notice of Allowance Communication, dated Mar. 22, 2016, 8 pages.
U.S. Appl. No. 14/667,407, filed Mar. 24, 2015, Office Action Communication, dated Oct. 27, 2015, 12 pages.
Written Opinion of the International Searching Authority, dated May 29, 2015, International Application No. PCT/US2015/016658, International Filing Date Feb. 19, 2015, 4 pages.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180359174A1 (en) * 2014-02-24 2018-12-13 Level 3 Communications, Llc Control device discovery in networks having separate control and forwarding devices
US10673741B2 (en) * 2014-02-24 2020-06-02 Level 3 Communications, Llc Control device discovery in networks having separate control and forwarding devices

Also Published As

Publication number Publication date
US20180359174A1 (en) 2018-12-13
CN106063195B (en) 2019-05-28
US9374296B2 (en) 2016-06-21
CA2882535C (en) 2017-01-10
US20150244610A1 (en) 2015-08-27
CN106063195A (en) 2016-10-26
JP6576006B2 (en) 2019-09-18
EP2911348B1 (en) 2017-12-20
EP2911348A1 (en) 2015-08-26
US20160285742A1 (en) 2016-09-29
US10673741B2 (en) 2020-06-02
US8989199B1 (en) 2015-03-24
JP2017506462A (en) 2017-03-02
HK1213383A1 (en) 2016-06-30
CA2882535A1 (en) 2015-07-20
WO2015127107A1 (en) 2015-08-27

Similar Documents

Publication Publication Date Title
US10673741B2 (en) Control device discovery in networks having separate control and forwarding devices
US11134006B2 (en) Loop conflict avoidance in a spine-and-leaf network topology
US10666563B2 (en) Buffer-less virtual routing
US9154410B2 (en) Resiliency-aware hybrid design of controller-switch connectivity in a split-architecture system
US20150365328A1 (en) Flow-based load balancing
US20140140210A1 (en) Network system and load balancing method
US8667174B2 (en) Method and system for survival of data plane through a total control plane failure

Legal Events

Date Code Title Description
AS Assignment

Owner name: LEVEL 3 COMMUNICATIONS, LLC, COLORADO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TW TELECOM HOLDINGS, INC.;REEL/FRAME:038922/0676

Effective date: 20141120

Owner name: TW TELECOM HOLDINGS, INC., COLORADO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SELLA, WILLIAM THOMAS;SELLA, JAMES MICHAEL;REEL/FRAME:038922/0614

Effective date: 20140224

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4