SYSTEM AND METHOD OF OPTIMIZING PATHS IN A NETWORK
A device optimizes the path by receiving path information for the path that includes a series of connections between network elements that enable data to be communicated between the device and another device. The device additionally identifies a path priority from the path information and a plurality of forwarding options for the path from the path information. Furthermore, the device selects one of the plurality of forwarding options using the path priority. In addition, the device configures one of the plurality of forwarding options for the path on one of the plurality of network elements, where the device communicates data to the other device using the path and the selected forwarding option.
Applicant claims the benefit of priority of prior, co-pending provisional application Ser. No. 62/086,164, filed Dec. 1, 2014, the entirety of which is incorporated by reference.
FIELD OF INVENTIONThis invention relates generally to data networking and more particularly to discovering and/or optimizing paths in the data network.
BACKGROUND OF THE INVENTIONA network may take advantage of a network topology that includes an equal cost segment group from one endpoint in the network to another endpoint. This equal cost segment group allows network connections to increase throughput and provide redundancy in case a link in the equal cost segment group goes down. An equal cost segment group can be an aggregation of links from one network device connected to another device or a collection of multiple link paths between network devices. An example of an equal cost segment group is an Equal Cost Multipaths (ECMP) and Link Aggregation Groups (LAG).
A problem with equal cost segments is that the link selection is proprietary and hidden from the network device configuration. This means that a network operator does not have visibility into which type of data uses which of the links available in an equal cost segment group. Each LAG or ECMP configuration appears as a single logical entry in a Forwarding Information Base (FIB) or Routing Information Base (RIB) of the network element. For example, if a LAG includes four links (Links A, B, C, D) between two network elements, which type of data is used for each link depends on the link selection mechanism of the network element transmitting the data. Data destined for one node may be transmitted on Link B, whereas data sourced from another node may be transmitted on Link D. A network element selects which link of an equal cost segment based on the characteristics of the data packet being transmitted. Each network element may have a proprietary selection mechanism and this selection mechanism may vary by device, vendor, or other criteria.
Because a network operator does not know, a priori, which links will be used for which types of data, it is difficult to design a network so that the network can be used efficiently. For example, general best effort web data may be selected to use the same link of an equal cost segment group as latency sensitive data used for a high-speed trading service. It would be useful to probe an equal cost segment group to determine which type of data uses which links. In addition, it would be useful to monitor these links to determine if performance of one of the links is deteriorating before other links of the equal cost segment group. Furthermore, it would be useful to optimize path(s) between clients of a service and that service so as to assign certain links of an equal cost segment and the performance of that service is improved.
SUMMARY OF THE DESCRIPTIONA method and apparatus that discovers, tests, and optimizes paths in a network is described. In an exemplary embodiment, a device discovers a path by discovering a plurality of equal cost segments between the first and second network elements of the plurality of network elements. The device further generates a plurality of test data packets, wherein each of the test data packets has a different characteristic. In addition, the device injects the plurality of test data packets in the first network element such that the first network element transmits the plurality of test data packets to the second network element using the plurality of equal cost segments. The device additionally determines a path for each of the plurality of test data packets by recording which of the plurality of equal cost segments the first network element used to transmit that test data packet.
In another embodiment, the device tests a path by identifying a first equal cost segment, where the first equal cost segment is one of a plurality of equal cost segments coupling the first and second network elements. The device additionally generates a test data packet to traverse the first equal cost segment, where a packet characteristic for the test data packet was discovered by transmitting a plurality of other test data packets across the plurality of equal cost segments. Furthermore, the device injects the test data packet in the first network element such that the first network element transmits the test data packet to the second network element using the first equal cost segment. In addition, the device determines a performance result of the test data packet transmission.
In a further embodiment, the device optimizes the path by receiving path information for the path that includes a series of connections between network elements that enable data to be communicated between the device and another device. The device additionally identifies a path priority from the path information and a plurality of forwarding options for the path from the path information. Furthermore, the device selects one of the plurality of forwarding options using the path priority. In addition, the device configures one of the plurality of forwarding options for the path on one of the plurality of network elements, where the device communicates data to the other device using the path and the selected forwarding option.
Other methods and apparatuses are also described.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
A method and apparatus that discovers, tests, and optimizes paths in a network is described. In the following description, numerous specific details are set forth to provide thorough explanation of embodiments of the present invention. It will be apparent, however, to one skilled in the art, that embodiments of the present invention may be practiced without these specific details. In other instances, well-known components, structures, and techniques have not been shown in detail in order not to obscure the understanding of this description.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.
In the following description and claims, the terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. “Coupled” is used to indicate that two or more elements, which may or may not be in direct physical or electrical contact with each other, co-operate or interact with each other. “Connected” is used to indicate the establishment of communication between two or more elements that are coupled with each other.
The processes depicted in the figures that follow, are performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, etc.), software (such as is run on a general-purpose computer system or a dedicated machine), or a combination of both. Although the processes are described below in terms of some sequential operations, it should be appreciated that some of the operations described may be performed in different order. Moreover, some operations may be performed in parallel rather than sequentially.
The terms “server,” “client,” and “device” are intended to refer generally to data processing systems rather than specifically to a particular form factor for the server, client, and/or device.
A method and apparatus that discovers, tests, and optimizes paths in a network is described. In one embodiment, a device discovers an equal cost segment group between two endpoints in the network, where the equal cost segment group include equal cost segments that each has the same cost to transport data as these other equal cost segments. An equal cost segment group can be a collection of single links or a collection of multi-link segments. How a network element selects a link to use for an equal cost segment group is not evident from the forwarding configuration stored in a forwarding information base (FIB) or routing information base (RIB). This is because an equal cost segment group is treated as a single logical entry in the FIB or RIB and the selection mechanism used by to select a link to transmit data is proprietary to the network element. In one embodiment, a network element selects which link to use in an equal cost segment group based on the packet characteristics of the data being transmitted. An example of an equal cost segment is an Equal Cost Multipath (ECMP) or a Link Aggregation Group (LAG).
The device further probes the equal cost segment group by generating a variety of test data that will be used to transmit using the equal cost segment group. The generated test data has different packet characteristics that probe the equal cost segment group link selection of a network element that transmits the test data. In one embodiment, generated test data varies in packet characteristics, such as source and destination address, source and destination port address, VLAN tag, VxLAN tag, Differentiated Services Code Point (DCSP) bits, and/or other types of packet characteristics. The device further injects this test data so that a network element transmits the test data using equal cost segment group. The device collects that results of the test data injection to determine which of the equal cost segments are used by which test data.
In one embodiment, by determining which the equal cost segments are used for which type of data, the device determines paths across the equal cost segment group for different types of data. With this knowledge, the device can further test each of the equal cost segments in the group to determine the performance of each of the equal cost segments. Selectively testing one or more of the equal cost segments in the group allows for a finer granularity of testing the performance of the group. This is useful, for example, to test if the performance of one of equal cost segments deteriorates even though the overall performance of the equal cost segment group remains acceptable.
In a further embodiment, the device can optimize a path for data that traverses an equal cost segment group. In this embodiment, the device identifies a priority for a path that traverses an equal cost segment group. The device can optimize higher priority paths to traverse equal cost segment of a group that are reserved for this and/or other high priority paths. Alternatively, the device can adjust the configuration of lower priority paths so that these paths do not share some of the equal cost segments of a group with a high priority path. In one embodiment, the device sends instructions to one or more agents to implement the path optimization.
In one embodiment, the network 100 includes network elements 106A-E, where each of the network elements 106A-E is a device that receives and forwards data using one or more network protocols. For example and in one embodiment, a network element 106A-E is a device that provides network access to a network (e.g., physical network, virtualized network, etc.). A network element can be a switch, router, hub, bridge, gateway, etc., or any type of device that can allow access to a network. While in one embodiment, the interconnection between the different network elements is a wired connection (e.g., copper, fiber, etc., and/or a combination thereof), in alternate embodiments, a different type of interconnection is used (e.g., wireless, a combination of wireless and wired, etc.).
In one embodiment, the client 102 couples to network element 106A, which is further coupled to network element 106B via a link aggregation group 110. In one embodiment, the link aggregation group (LAG) 110 is a group of two or more links between network elements that are logically grouped into a single logical link. The LAG is an example of an equal cost segment group. In addition, network element 106B couples to network element 106C across layer-3 network 104. In one embodiment, a layer-3 network routes data using layer-3 information of the data (e.g., the destination Internet Protocol (IP) address of a data packet).
Network element 106C further couples to network elements 106D-E with an equal cost multipath (ECMP) group 112. In one embodiment, the ECMP group 112 is a is a routing strategy where next-hop packet forwarding to a single destination can occur over multiple “best paths” which tie for a top place in routing metric calculations. Many different routing protocols support ECMP (e.g., Open Shortest Path First (OSPF), Intermediate System to Intermediate System (ISIS), Border Gateway Protocol (BGP), and any other type of routing protocol). ECMP can allow some load balancing for data packets being sent to the same destination, by transmitting some data packets through one next hop to that destination and other data packets via a different next hop. Each of the network elements 106D-E couples to the service 108 across layer-2 network 114. Thus, the ECMP group includes two segments: (i) network element 106Cnetwork element 106Eservice 108 and (ii) network element 106Cnetwork element 106Fservice 108.
As described above, there are multiple possible paths in the network 100 that the client 102 and service 108 can use to communicate data between each other. For example and in one embodiment, the client 102 can communicate data with the service 108 using one path via network element 106A over LAG 110 to network element 106B. Network element 106B further communicates the data over layer-3 network 104 (e.g., IP routing) with network element 106C. Network element 106 selects one of the links of the ECMP group 112 to communicate the data to either network elements 106C-E, which communicates the data to the service 108.
In
In one embodiment, each of the network elements 106A-E includes an agent (not illustrated) that discovers information regarding that network elements. This information can be collected and used to discover different paths between the client 102 and service 108. In another embodiment, the agent for a network element 106A-E runs on a different device, but acts as a proxy for that network element. Discovering the paths is further described in
In one embodiment, the collection/data layer 210 receives the configuration data from each of the agents 206A-C and assembles this information so as to discover paths that are available in the network 200. In one embodiment, the collection/data layer 210 determines the paths by determining the available links between the devices in the network 200. For example and in one embodiment, the collection/data layer 210 determines that there are ECMP links between the switch 202A-B and link 212 between switches 202B-C. Using the link information, the collection/data layer 210 determines the path between switches 202A and 202C using ECMP 204 and link 212 via switch 202B. In one embodiment, the collection/data layer 210 is part of a network controller 212. In one embodiment, the network controller 212 includes a path module 214 that includes and/or performs the function of the collection/data layer 210. In another embodiment, each agent 206A-C includes a path module 214 (not illustrated) that can perform the function of the collection/data layer 210
Decisions about which ECMP link (or equivalently, which link of a LAG group) to use for which type of data is not a configuration that is accessible from a network element's configuration data. For example and in one embodiment, even though an ECMP or LAG group can include a large number of links to use, an ECMP group or LAG group is treated as a single logical entry in a Routing Information Base (RIB) or Forwarding Information Base (FIB). Determination of which link is used by one of these groups is a proprietary function of the network element. For example, a network element may hash information in each data packet, such as destination address, source address, port, VLAN characteristics, Ethernet information, protocol information, and/or other types of packet characteristics. Based on the hash value, the network element decides which link of an ECMP or LAG group to use for transmission.
In one embodiment, the collection/data layer 210 can identify which links are used for which type of data by testing the links with a variety of test data across the equal cost segment groups of the network. In this embodiment, for an equal cost segment group, the collection/data layer 210 instructs an agent associated with a network element connected to the equal cost segment group to inject test data to be transmitted on the equal cost segment. The collection/data layer 210 further instructs the agent on the other end(s) of the equal cost segment group to determine which link of the equal cost segment receives the test data in one embodiment, the agent can use a sampling program (e.g., sflow or some other type of sampling program) in conjunction with interface counters to passively measure link utilization by flow type. In another embodiment, an agent can discover an equal cost segment group and initiate the testing of the equal cost segment group by coordinating the testing of the equal costs segment group with other agents.
In one embodiment, the agent initiating the transmission of the test data creates a variety of the test data that is used to test the equal cost segment selection mechanism. In this embodiment, the agent creates the test data by varying different characteristics such as source address, destination address, port, and/or another type of packet characteristic. By creating this test data, the agent probes the link selection mechanism of the network element for an equal cost segment group. The agent injects the test traffic into the network element, which the network element transmits using the equal cost segment group. The agent(s) at the other end of the equal cost segment group records the receipt of the traffic on one of more the receiving end of the equal cost segment group. This data can be used by the receiving agent (or reported to the collection/data layer 210) to determine which type of traffic is transmitted on which segment of an equal cost segment group.
For example and in one embodiment, in
In
In addition to the data collection, the agents 324A-C are each coupled to the policy and data repository layer 316. In one embodiment, the policy and data repository layer 316 constitutes the prescriptive element of the network state, where one or more administrators specify the configuration or policies they wish to enforce and the controller orchestrates this configuration across nodes and agents. In another embodiment, the policy and data repository layer 316 determines policy changes for one or more of the agents 324A-C and sends these changes to the relevant agent. In this embodiment, the policy and data repository layer 316 determines changes to the configuration of the network element(s) in the network 300 and sends the relevant changes to an agent that corresponds that the network element that will have the configuration change.
In one embodiment, the policy and data repository layer 316 can optimize paths in the network 300 and send the changes for the optimization to the relevant agents for implementation on the corresponding network element. In this embodiment, the policy and data repository layer 316 determines forwarding decisions for the path, if the path includes equal cost segment group that arrive at the same destination. For example and in one embodiment, a path between client(s) 308 to the compute node 310A is from client(s) 308 to switch 302A via spine 306A to switches 302B-D and to compute node 310A. In this example, this path can have several different possible options for the data being communicated between client(s) 308 and compute 310A. This is because the path has an ECMP group 316 between switch 302A and the spine 306A. The ECMP group 316 includes two 40-gigabit Ethernet links 318A-B that can either be used for the path. In addition, there are three links between the spine 306A and switches 306B-D that can also be used to communicate data. In this example, there are six possibilities for the path between the client(s) 308 and compute node 310A.
In one embodiment, the policy and data repository layer 316 determines one of the six possibilities for the path and optimizes the forwarding policies on each of the affected network elements. In this embodiment, the policy and data repository layer 316 selects one of the links of the ECMP group 316 and one of the spine 306A-switch 302B-D links to be used for the path data. Using the selected links, the policy and data repository layer 316 sends an instruction to each of the relevant agents to configure the links to use for the data communicated between the client(s) 308 and the compute node 310A. For example and in one embodiment, the policy and data repository layer 316 sends an instruction to the agent 324A to configure switch 302A to forward data from client(s) 308 to compute node 310A using the 40-gigabit Ethernet link 318B. In addition, the policy and data repository layer 316 instructs agent 324B to forward this path data to switch 302D. In response, each of these agents 324A-B makes device configuration changes to the forwarding information for switch 302A and spine 306A, respectively. In this example, agent 324A modifies the ECMP path selection so that the forwarding information base of switch 302A will forward data from the client(s) 308 to compute node 310A using the ECMP 40-gigabit Ethernet link 318B. Furthermore, agent 324B modifies the forwarding information base of spine 306A to forward data from the client(s) 308 to the compute node 310A to forward the data to switch 302D. Additionally, the agent 324B modifies the ECMP path selection so that the forwarding information base of spine 306A will forward data from the compute node 310A to client(s) 308 using the ECMP 40-gigabit Ethernet link 318B. In one embodiment, by implementing the changes of the policy and data repository layer 316, the client(s) 308 and compute node 310A communicate data between them using the compute traffic path 320. In one embodiment, a network controller 330 includes the policy and data repository 316. In one embodiment, the network controller 330 includes a path module 332 that includes the policy and data repository 316 and/or performs the functions of the policy and data repository 316. In one embodiment, each of the agents 324A-C includes a path module 332 (not illustrated).
In one embodiment, the data communicated between the client(s) 308 and the compute node 310A is tagged so that the data can be differentiated by either the switch 302A or spine 306A. For example and in one embodiment, the communicated data is tagged using the Differentiated Services Code Point (DSCP) field in Internet Protocol (IP) packets that is used to transport the communicated data. In this example, the DSCP field can be used by the network elements (e.g., switch 302A and spine 306A) to make forwarding decisions regarding the data. For example and in one embodiment, the 40-gigabit Ethernet link 318B can be reserved for the “assured forwarding” class of data and the 40-gigabit Ethernet link 318A is used for “best effort.” In this example, the data communicated between the client(s) 308 and the compute node 310A is tagged with a “assured forwarding” tag so that this data gets forwarded on the 40-gigabit Ethernet link 318B. It is important to note that this type of forwarding is policy-based forwarding where a type of data is forwarded out different links of the network element based on a class the data matches. This is different from a queuing-based transmission mechanism, which determine which data to send out one interface based on the tagging of the data such as used in Quality of Service type queuing. Thus, the forwarding is selection of an interface to send the data based on data tagging (e.g., policy-based forwarding) as opposed to when to transmit data based on the data tags (e.g., queuing-based data transmission). In another embodiment, different types of data tags can be used to the make the forwarding decisions (e.g., Virtual Local Area Network (VLAN) tags, Virtual eXtension Local Area Network (VxLAN), and/or other types of data tags that can be used to make forwarding decisions). In one embodiment, policy-based routing decisions use the path discovery of equal cost segment groups to modify or optimize discovered paths.
At block 404, process 400 identifies paths in the network. In one embodiment, process 400 identifies paths used across an equal cost segment group. As described above, which links are uses by which type of data is not determinable from a RIB or FIB for equal cost segment group, because the mechanism that a network element uses for selecting a link from an equal cost segment group is proprietary and non-configurable. In one embodiment, process 400 identifies paths by generating a variety of test traffic, transmitting the test traffic across the equal cost segment group, and determining which type of data was sent across which link of the equal cost segment group. Identifying the paths is further described in
Process 400 tests the paths at block 406. In one embodiment, process 400 uses the results from block 404 to determine a path to test. In this embodiment, process 400 selects a path for a service, client, server, or other device that is sensitive to the performance of an equal cost segment group. For example and in one embodiment, process 400 selects a path that is used for a high-speed trading service, where the service is sensitive to latency performance along the path. In this example, the path includes use of an equal cost segment group. Based on the results of identifying the path and the type of data used for the high-speed trading service, process 400 knows which link of the equal cost segment group is used for high-speed trading service. Process 400 generates the test data that will utilize the high-speed trading service path and injects this data into the network. In addition, process 400 records the results of the test and reports the results. Testing a path is further described in
At block 408, process 400 optimizes the paths. In one embodiment, process 400 identifies an optimization for a path and instructs agents to configure corresponding network devices so as to implement the optimization. In one embodiment, process 400 optimizes the path by configuration forwarding-based policy decisions for the data communicated along the path. Optimizing a path is further discussed in
At block 504, process 500 identifies an equal cost segment group from the connectivity information associated with the network element. In one embodiment, an equal cost segment group is a part of the network that includes multiple paths between the same endpoints of the paths and the cost to transmit data across these paths is the same. In one embodiment, cost of the paths can be measured in a variety ways. An equal cost segment group can be, for example, an equal cost multipath (ECMP) or a link aggregate group (LAG). In this embodiment, process 500 identifies the equal cost segment group associated with the network element by interrogating the configuration information of the network element. For example and in one embodiment, the equal cost segment is an entry in a FIB and/or RIB of the network element.
Process 500 probes the identified equal cost segment group to determine which links of the equal cost segment group are used for which type of data at block 506. In one embodiment, process 500 generates a variety of test data, injects this test data for transmission across the equal cost segment group, and receives results of the test data to determine the link utilization of the equal cost segment. Identifying the equal cost segment group usage is further described in
At block 508, process 500 assembles the paths from the equal cost segment group. In one embodiment, a path is a series of one or more links between two end devices in the network and the protocols used to communicate data on that link. The path may further include a selection of one or more links from an equal cost segment group. For example and in one embodiment, a path from client(s) 308 to compute node 310 is compute traffic path 320 as described in
At block 556, process 550 injects the test data packets into the network. In one embodiment, by injecting the test data packets, the network element associated with process 550 transmits the test data packet across the different links of the equal cost segments. In this embodiment, for each of the test data packets, the network element selects the link of the equal cost segment group to transmit that test data packet and transmits this test data packet on that link. For example and in one embodiment, with reference to
Process 550 collects the test results to discover what type of data uses which link on the equal cost segment group at block 558. In one embodiment, process 550 measures the test data packets received on the equal cost segment. In this embodiment, the test data packets include a high resolution timestamp indicating when they were generated. By recording this measurement, process 550 determines the type of data that is transmitted on each link of the equal cost segment. This gives an indication of the selection mechanism used by the transmitting network element. For example and in one embodiment, if a test data packet with a destination address of the compute node 310A and source address with one of the client(s) was received on 40-gigabit link 318B, process 550 would determine that data with these characteristics is selected to be transmitted on the 40-gigabit link 318B.
As described above, how links are utilized in an equal cost segment group can be discovered by transmitting test data packets across the equal cost segment. With the discovered link utilization information, each of the links of an equal cost segment group can be selectively tested to determine performance of that link.
At block 606, process 600 prepares the test data packets to be used for the equal cost segment group segment testing. In one embodiment, process 600 creates the test data packets that will be transmitted on the segment(s) to be tested. For example and in one embodiment, to test the ECMP links used for the compute traffic path 320 as described in
At block 704, process 700 determines the priority level of this path. In one embodiment, a priority level of the path can depend on the type of configuration applied to the path. A higher priority path may have a higher level of QoS configured for the transmission of the data that uses the path (e.g., data along this path is marked with a DSCP bit of “assured forwarding”). Alternatively, a lower priority path may have no QoS assigned to the path or be assigned with a “best effort” designation.
Process 700 identifies forwarding options for the path for network element(s) that have equal cost segments at block 706. In one embodiment, process 700 determines from the path information, that the path include an equal cost segment group, such as ones described in
At block 708, process 700 assigns forwarding decisions to the network element(s) for a path. In one embodiment, process 700 assigns forwarding decisions by determining policy-based forwarding decisions for the network element(s) identified with equal cost segments. In this embodiment, process 700 selects an equal cost segment for the path at one or more of the network element(s) that use an equal cost segment group. For example and in one embodiment, for the compute traffic path 320 as described in
In addition, process 700 creates instructions for the agent(s) to configure the corresponding network element(s) so as to setup the policy-based forwarding decisions. In one embodiment, the agent(s) receive the instructions and configure the corresponding network element(s) to use specific equal cost segments for a path. For example and in one embodiment, for the compute traffic path 320 as described in
As described above, the network elements can make the policy-based forwarding decisions based metadata included in the data (e.g., a DSCP bit, source address, destination address, port, VLAN characteristics, Ethernet information, protocol information, and/or other types of packet characteristics). In one embodiment, process 700 sends instructions to an agent to configure the device to mark the data, so that the data is communicated along the configured path. In this embodiment, the agent can configure the device that originates the data (e.g., the client or compute node) or a device that forwards the data along the path (e.g., a switch or router). For example and in one embodiment, process 700 can send instructions to an agent on the client(s) 308 and/or compute node 310A to mark the data originated by the theses device, such that the data communicated along compute traffic path 320. In this example, the data can be marked with a particular DSCP bit (e.g., “assured forwarding” class of traffic), and/or another type of data marking (e.g., VLAN tag).
As shown in
The mass storage 1212 is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or a flash memory or other types of memory systems, which maintain data (e.g. large amounts of data) even after power is removed from the system. Typically, the mass storage 1212 will also be a random access memory although this is not required. While
Portions of what was described above may be implemented with logic circuitry such as a dedicated logic circuit or with a microcontroller or other form of processing core that executes program code instructions. Thus processes taught by the discussion above may be performed with program code such as machine-executable instructions that cause a machine that executes these instructions to perform certain functions. In this context, a “machine” may be a machine that converts intermediate form (or “abstract”) instructions into processor specific instructions (e.g., an abstract execution environment such as a “process virtual machine” (e.g., a Java Virtual Machine), an interpreter, a Common Language Runtime, a high-level language virtual machine, etc.), and/or, electronic circuitry disposed on a semiconductor chip (e.g., “logic circuitry” implemented with transistors) designed to execute instructions such as a general-purpose processor and/or a special-purpose processor. Processes taught by the discussion above may also be performed by (in the alternative to a machine or in combination with a machine) electronic circuitrydesigned to perform the processes (or a portion thereof) without the execution of program code.
The present invention also relates to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the required purpose, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), RAMs, EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
A machine readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine readable medium includes read only memory (“ROM”); random access memory (“RAM”); magnetic disk storage media; optical storage media; flash memory devices; etc.
An article of manufacture may be used to store program code. An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions. Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).
The preceding detailed descriptions are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the tools used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be kept in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “retrieving,” “receiving,” “determining,” “applying,” “sending,” “forwarding,” “detecting,” “adding,” “communicating,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the operations described. The required structure for a variety of these systems will be evident from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
The foregoing discussion merely describes some exemplary embodiments of the present invention. One skilled in the art will readily recognize from such discussion, the accompanying drawings and the claims that various modifications can be made without departing from the spirit and scope of the invention.
Claims
1. A non-transitory machine-readable medium having executable instructions to cause one or more processing units to perform a method of optimizing a path between two devices that traverses a plurality of network elements in a network, the method comprising:
- receiving path information for the path that includes a series of connections between network elements that enable data to be communicated between the two devices;
- identifying a path priority from the path information;
- identifying a plurality of forwarding options for the path from the path information;
- selecting one of the plurality of forwarding options using the path priority; and
- configuring one of the plurality of forwarding options for the path on one of the plurality of network elements, wherein the devices communicate data between the two device using the path and the selected forwarding option.
2. The non-transitory machine-readable medium of claim 1, wherein the path information further includes a characteristic about the path that is selected from the group consisting of a quality of service applied to the path and an access control list applied to the path.
3. The non-transitory machine-readable medium of claim 1, wherein the plurality of forwarding options is a plurality of equal cost segments of the path and each of the plurality of equal cost segment are between the same devices.
4. The non-transitory machine-readable medium of claim 3, wherein the plurality of equal cost segments of the path are equal cost multipaths.
5. The non-transitory machine-readable medium of claim 4, wherein configuring the one of the plurality of network elements comprises:
- configuring the one of the plurality of network elements to forward data along this path using one of the equal cost multipaths.
6. The non-transitory machine-readable medium of claim 5, wherein configuring the one of the plurality of network elements further comprises:
- configuring other paths to use other ones of the equal cost multipaths.
7. The non-transitory machine-readable medium of claim 1, further comprising:
- marking the data to be communicated on the path;
- deciding which of the plurality of forwarding options to use based on the marking; and
- transmitting the data using the selected one of the plurality of forwarding options.
8. A method of optimizing a path between two devices that traverses a plurality of network elements in a network, the method comprising:
- receiving path information for the path that includes a series of connections between network elements that enable data to be communicated between the two devices;
- identifying a path priority from the path information;
- identifying a plurality of forwarding options for the path from the path information;
- selecting one of the plurality of forwarding options using the path priority; and configuring one of the plurality of forwarding options for the path on one of the plurality of network elements, wherein the devices communicate data between the two device using the path and the selected forwarding option.
9. The method of claim 8, wherein the path information further includes a characteristic about the path that is selected from the group consisting of a quality of service applied to the path and an access control list applied to the path.
10. The method of claim 8, wherein the plurality of forwarding options is a plurality of equal cost segments of the path and each of the plurality of equal cost segment are between the same devices.
11. The method of claim 10, wherein the plurality of equal cost segments of the path are equal cost multipaths.
12. The method of claim 11, wherein configuring the one of the plurality of network elements comprises:
- configuring the one of the plurality of network elements to forward data along this path using one of the equal cost multipaths.
13. The method of claim 12, wherein configuring the one of the plurality of network elements further comprises:
- configuring other paths to use other ones of the equal cost multipaths.
14. The method of claim 8, further comprising:
- marking the data to be communicated on the path;
- deciding which of the plurality of forwarding options to use based on the marking; and
- transmitting the data using the selected one of the plurality of forwarding options.
15. A device that optimizes a path between two devices that traverses a plurality of network elements in a network, the device comprising:
- a processor;
- a memory coupled to the processor though a bus; and
- a process executed from the memory by the processor causes the processor to receive path information for the path that includes a series of connections between network elements that enable data to be communicated between the two devices, identify a path priority from the path information, identify a plurality of forwarding options for the path from the path information, select one of the plurality of forwarding options using the path priority, and configure one of the plurality of forwarding options for the path on one of the plurality of network elements, wherein the devices communicate data between the two device using the path and the selected forwarding option.
16. The device of claim 15, wherein the path information further includes a characteristic about the path that is selected from the group consisting of a quality of service applied to the path and an access control list applied to the path.
17. The device of claim 15, wherein the plurality of forwarding options is a plurality of equal cost segments of the path and each of the plurality of equal cost segment are between the same devices.
18. The device of claim 17, wherein the plurality of equal cost segments of the path are equal cost multipaths.
19. The device of claim 18, wherein the processor configures the one of the plurality of network elements by configuring the one of the plurality of network elements to forward data along this path using one of the equal cost multipaths.
20. The device of claim 19, wherein processor configures the one of the plurality of network elements by configuring other paths to use other ones of the equal cost multipaths.
Type: Application
Filed: Dec 1, 2015
Publication Date: Jun 9, 2016
Inventors: Cyrus John Durgin (Seattle, WA), Brett A. Holton (Seattle, WA), Kelly Ann Wanser (San Francisco, CA)
Application Number: 14/955,939