Optimal Path Computation Offloading in Network Computing Environments

By offloading path determination to a best path controller, the limitations of the standardized BGP algorithm are overcome, enabling customizable and efficient path selection in software-defined networks.

JP7680547B2Active Publication Date: 2025-05-20ARRCUS INC
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
JP2023546010
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-02-03
Publication Date
2025-05-20
Estimated Expiration
2041-02-03

AI Technical Summary

Technical Problem

In the era of software-defined networking, there is a demand for greater customizability in controlling and customizing network behavior, as the standardized Border Gateway Protocol (BGP) best-path algorithm lacks flexibility for implementing customized path selection algorithms.

Method used

Offloading optimal path determination to an external entity, referred to as a best path controller (BPC), which can implement custom algorithms for identifying the most desirable path between computing instances, independent of the BGP protocol.

Benefits of technology

Enables greater customizability and efficiency in determining optimal paths across networks, reducing bandwidth consumption and enhancing network performance by allowing for tailored path selection strategies.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007680547000001
    Figure 0007680547000001
  • Figure 0007680547000002
    Figure 0007680547000002
  • Figure 0007680547000003
    Figure 0007680547000003
Patent Text Reader

Abstract

A system, method, and device for offloading best path computation in a network computing environment are provided. The method includes storing, by a best path controller, in a memory, a list of paths learned by a device, each of the paths being a route for transmitting data from the device to a destination device. The method includes receiving, by the best path controller, a message from the device. The method includes performing, by the best path controller, a best path computation process and identifying one or more best paths based on the message so that the best path computation process is offloaded from the device to the best path controller. The method includes transmitting the one or more best paths to the device.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to computing networks, and more particularly to optimal path computation for communications between network devices. [Background technology]

[0002] Network computing is a means by which multiple computers or nodes cooperate and communicate with each other over a network. This can be a wide area network (WAN) or a local area network (LAN). Both wide area networks and local area networks allow for interconnection between computers. Local area networks are typically used for smaller, localized networks such as homes, businesses, and schools. Wide area networks cover large areas such as cities and can also connect computers in different countries. Local area networks are typically faster and more secure than wide area networks, but wide area networks allow for wider connectivity. Local area networks are typically owned, controlled, and managed within the organization in which they are deployed, while wide area networks require the connection of two or more of their constituent local area networks, usually via the public Internet or private connections established by a telecommunications provider.

[0003] Local and wide area networks connect computers together to transfer data and other information. Both local and wide area networks require a means to determine the path for passing data from one computing instance to another. This is also called routing. Routing is the process of selecting a path for traffic within a network, between networks, or across networks. The routing process typically directs forwarding based on routing tables that maintain a record of routes to various network destinations. Routing tables may be specified by an administrator, learned by monitoring network traffic, or constructed with the aid of a routing protocol.

[0004] In a small-scale network, a manually configured routing table can be used to determine how information is transferred from one computer to another. The routing table can contain a list of "optimal paths" that indicate the most efficient or desirable path between the source computer and the destination computer. Large-scale networks, including those connected to the public Internet, may rely on complex topologies that can change rapidly, making it impossible to manually construct a routing table. Dynamic routing attempts to solve this problem by automatically constructing a routing table based on information transmitted by routing protocols. With dynamic routing, the network can operate semi-autonomously to avoid network failures and blocks. There are several routing protocols that provide rules or instructions for determining the optimal path between network devices. Examples of dynamic routing protocols and algorithms include the Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Intermediate System - Intermediate System (IS-IS), and Border Gateway Protocol (BGP).

[0005] In some implementations, path selection involves applying a routing metric to multiple routes to select or predict an optimal route. Most routing algorithms use only one network path at a time. Multipath routing techniques allow for the use of multiple alternative paths. In computer networks, routing algorithms can be used to predict the optimal path between two computing instances. Routing algorithms may be based on multiple factors such as bandwidth, network delay, hop count, path cost, load, maximum transmission unit, reliability, and communication cost. A routing table stores a list of optimal paths. A topology database can store a list of optimal paths and can also store additional information.

[0006] In some networks, routing is complicated by the fact that there is not a single entity responsible for selecting the best path. Instead, multiple entities are involved in selecting the best path or even parts of a single path. In the context of computer networking on the Internet, the Internet is divided into autonomous systems (AS), such as Internet Service Providers (ISPs). Each autonomous system controls the routes that include its network. The paths at the autonomous system level are selected based on the Border Gateway Protocol (BGP). Each autonomous system level path includes a set of autonomous systems through which information packets are sent from one computing instance to another. Each autonomous system can have multiple paths from which it can select multiple paths provided by neighboring autonomous systems. Summary of the Invention [Problem to be solved by the invention]

[0007] In the new era of software-defined networking, there is an increasing demand for greater ability to control and customize behavior within the network. BGP is designed to facilitate the use of policies to control the selection of best paths, attributes, and advertisements. However, since the best-path algorithm itself is standardized and essentially fixed, there remains a demand to implement more customizability on top of BGP. [Means for solving the problem]

[0008] In view of the above, disclosed herein are systems, methods, and devices for offloading optimal path determination to an external entity that is free to implement custom algorithms for identifying the most desirable path between one computing instance and another computing instance.

[0009] Non-limiting and non-exhaustive embodiments of the present disclosure are described with reference to the following figures, in which like reference numerals refer to like parts throughout, unless otherwise specified. Advantages of the present disclosure will be more clearly understood by referring to the following description and the accompanying drawings. [Brief description of the drawings]

[0010] [Figure 1] 1 is a schematic diagram of a system of network devices communicating over the Internet. [Diagram 2] 1 is a schematic diagram of a system for offloading optimal path computation from individual devices to an optimal path controller. [Diagram 3] 1 is a schematic diagram of a process flow performed by a state machine in a device running the Border Gateway Protocol (BGP). [Figure 4] 1 is a schematic diagram of a system for offloading storage of optimal path information to a data store. [Diagram 5] 1 is a schematic diagram of a system for offloading storage of optimal path information to a data store. [Figure 6]1 is a schematic diagram of a system for offloading storage of optimal path information to a data store. [Figure 7] 1 is a block diagram of a flow chart of a method for offloading path computation to an optimal path controller. [Figure 8] FIG. 2 is a schematic diagram illustrating components of an exemplary computing device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011] Disclosed herein are systems, methods, and devices for improved routing of data transmissions. In the new era of software-defined networks, there is an increasing demand for greater ability to control and customize operations within computer networks. Disclosed herein are systems, methods, and devices for offloading optimal path determination to an external entity. The external entity is then free to implement custom algorithms that identify the most desirable path for transferring data from one computing instance to another across the Internet.

[0012] The disclosed embodiments are deployed to identify a best path for transmitting data from a first router to a destination router over the Internet. The disclosed embodiments include a best path controller (BPC) that serves as an external entity to the Border Gateway Protocol (BGP) standardized algorithm for determining routing paths. The best path controller may be co-located on the same host that runs BGP. Alternatively, the best path controller may be located on a different host and serve one or more BGP instances.

[0013] A BGP instance is a software daemon that routes information within a network. A BGP instance can run within a switch, a router, or a virtual environment that emulates a switch or router (e.g., a virtual machine on a host device). At a high level, a BGP instance sends all paths it has learned for a prefix to a best path controller. The best path controller responds with a set of best paths among these paths. The best path controller is allowed to change the next hop and attributes of any path. Upon receiving a best path, the BGP instance updates its local Routing Information Base (RIB) and advertises the best path to its neighbors.

[0014] In an embodiment, the method is performed by a best path controller. The method enables offloading best path computation from individual devices (such as routers and switches) on which a BGP instance is running to the best path controller. The method includes storing, by the best path controller, a list of paths learned by the device, the paths being routes for transmitting information from the device to a destination device. The method includes receiving, by the best path controller, a message from the device. In an embodiment, the message is a Network Layer Reachability Information (NLRI) message. The method includes processing, by the best path controller, a best path computation that identifies one or more best paths based on the message. The method includes sending the one or more best paths to the device to offload best path computation processing from the device to the best path controller.

[0015] Switches (also called switching hubs, bridging hubs, or MAC bridges) create networks. Most internal networks use switches to connect computers, printers, phones, cameras, lights, and servers within a building or campus. Switches act as controllers that allow network devices to communicate with each other efficiently. Switches connect devices on computer networks using packet switching, which allows data to be received, processed, and forwarded to the destination device. A network switch is a multi-port network bridge that uses hardware addresses to process and forward data at the data link layer (layer 2) of the Open Systems Interconnection (OSI) model. Some switches can also process data at the network layer (layer 3) by incorporating additional routing capabilities. Such switches are commonly called layer 3 switches or multilayer switches.

[0016] Routers connect networks. Switches and routers perform similar functions, but each performs different functions on a network. Routers are network devices that forward data packets between computer networks. Routers perform traffic directing functions on the Internet. Data sent over the Internet, such as web pages, emails, or other forms of information, is sent in the form of data packets. Packets are typically forwarded from one router to another through the networks that make up an internetwork (e.g., the Internet) until they finally reach the destination node. Routers are connected to multiple data lines from different networks. When a data packet arrives on one of the lines, the router reads the network address information in the packet to determine the ultimate destination. The router then uses information in the router's routing table or routing policy to direct the packet to the next network on its journey. A BGP speaker is a router enabled with the Border Gateway Protocol (BGP).

[0017] Route control is a type of network management aimed at improving Internet connectivity, reducing bandwidth costs, and reducing overall activity between networks. Some route control services include a set of hardware- and software-based products and services that work together to improve overall Internet performance and finetune available Internet bandwidth at minimal cost. Route control can be successful in scenarios where a network or autonomous system procures Internet bandwidth from multiple providers. Route control can assist in the selection of the optimal route for data transmission.

[0018] Some network communication systems are large enterprise-level networks with thousands of processing nodes. These thousands of processing nodes can share bandwidth from multiple Internet Service Providers (ISPs) and handle large volumes of Internet traffic. Such systems can be very complex and need to be properly configured to obtain acceptable Internet performance. If the system is not properly configured for optimal data transmission, Internet access may slow down and the system may consume more bandwidth and traffic. To address this issue, a set of services can be implemented to eliminate or reduce these concerns. This set of services is also known as routing control.

[0019] One embodiment of the routing control mechanism is comprised of hardware and software. The routing control mechanism monitors all outgoing traffic through connections with Internet Service Providers (ISPs). The routing control mechanism assists in selecting the optimal path for efficient transmission of data. The routing control mechanism can calculate the performance and efficiency of all ISPs and select only those ISPs that perform optimally in the applicable area. The route control device can be configured according to predefined parameters regarding cost, performance, and bandwidth.

[0020] A well-known algorithm for determining the best path for data transmission is called the Border Gateway Protocol (BGP). BGP is a path-vector protocol that provides routing information for autonomous systems on the Internet. If BGP is not configured correctly, it can cause serious availability and security issues. Furthermore, by modifying BGP route information, an attacker can redirect large blocks of traffic to reach a specific router before the traffic reaches its intended destination. By implementing the BGP best path algorithm, it can determine the best path to install in the Internet Protocol (IP) routing table for traffic forwarding. BGP routers can be configured to receive multiple paths to the same destination.

[0021] The BGP best path algorithm assigns the first valid path as the current best path. The BGP best path algorithm compares the best path to the next path in the list until BGP reaches the end of the list of valid paths. This list provides the rules used to determine the best path. For example, the list can contain indications such as prefer the path with the highest weight, prefer paths with no local preference, prefer paths locally originated by the network or aggregation BGP, prefer the shortest path, prefer the path with the smallest multi-exit discriminator, etc. The BGP best path selection process can be customized.

[0022] In the context of BGP routing, each routing domain is called an autonomous system (AS). BGP helps select a path through the Internet to connect two routing domains. BGP selects a route that passes through the fewest number of autonomous systems, usually called the shortest AS path. In one embodiment, once BGP is enabled, a router pulls a list of Internet routes from its BGP neighbors, which may be ISPs. BGP then scans the list to find routes with the shortest AS paths. These routes may be entered into the router's routing table. Typically, the router selects the shortest path to an AS. BGP uses path attributes to determine how to route traffic to a particular network.

[0023] However, BGP has a number of known problems. In some instances, there are significant problems with the evolution of the routing table. For example, when a user decides to split up a network that was previously a single / 16 network, the user may start advertising new routes. When this happens, every router on the Internet receives each new route. The user may be forced to aggregate or combine multiple routes into a single advertisement. Additionally, there are concerns that users may advertise the Internet. If a large ISP's customers choose to advertise everything, and the ISP accepts multiple routes, all Internet traffic will be sent to the smaller customer's AS. Additionally, BGP has a mechanism to suppress routes that are deemed unreliable. Routes that change or shift frequently are usually identified as unreliable. If routes change frequently, the load on all Internet routes increases due to updates every time a route disappears and reappears.

[0024] Additionally, in the era of software-defined networks, operators are seeking greater ability to control and customize the behavior of their networks. The BGP routing protocol was designed to facilitate the use of policies to control the selection of best paths, attributes, and advertisements. However, the best-path algorithm itself is standardized and fixed in nature. In view of the above, disclosed herein are systems, methods, devices, and means by which BGP offloads best-path determination to an external entity that is free to implement custom algorithms to suit its purposes. The external entity, referred to herein as a best-path controller (BPC), may be co-located on the same host where BGP is running, or may be located on a different host, and may function as one or more BGP instances.

[0025] In an embodiment, a BGP instance can be in the form of a BGP speaker running on a switch or a router. At a high level, a BGP instance sends all paths it has learned for a prefix to a best path controller. The best path controller replies with a set of best paths from among these paths. The best path controller is allowed to change the next hop and attributes of any path. After receiving the best path, the BGP instance updates its local Routing Information Base (RIB) and advertises the best path to applicable neighbors.

[0026] In order to facilitate understanding of the principles based on the present disclosure, the following will refer to the illustrated embodiments and use specific expressions to describe them, without intending to limit the scope of the present disclosure. Any changes and further modifications of the features of the present disclosure exemplified herein, and any additional applications of the principles of the present disclosure exemplified herein, can be easily conceived by those skilled in the art based on the present disclosure, and are included in the scope of the claims.

[0027] Before disclosing and describing the structures, systems, and methods for generating images in low light environments, it is to be understood that the disclosure is not limited to the particular structures, configurations, process steps, and materials disclosed herein, as such structures, configurations, process steps, and materials may vary. It is also to be understood that the terminology used herein is used only for the purpose of describing particular embodiments, and is not intended to be limiting, since the scope of the disclosure shall be limited only by the claims and the equivalents thereof.

[0028] In describing and claiming the subject matter of the present disclosure, the following terminology will be used in accordance with the definitions set out below.

[0029] As used in this specification and the claims, the singular forms "a," "an," and "the" include plural referents unless the context clearly dictates otherwise.

[0030] As used herein, the terms "comprising," "having," "including," "featuring," and their grammatical equivalents are non-exclusive or open-ended terms that do not exclude additional, unrecited elements or method steps.

[0031] As used herein, the word "consisting of" and its grammatical equivalents exclude any element or step not recited in a claim.

[0032] As used herein, the phrase "consisting essentially of" and its grammatical equivalents limit the scope of a claim to the materials or steps specified, and to those materials or steps that do not materially affect the basic and novel properties or characteristics of the claimed disclosure.

[0033] The following description refers to the drawings, in which FIG. 1 is a schematic diagram of a system 100 for connecting devices to the Internet. The system 100 includes a number of local area networks 110 connected by a switch 106. Each of the multiple local area networks 110 can be connected to each other via the public Internet by a router 112. The exemplary system 100 shown in FIG. 1 has two local area networks 110. However, more local area networks 110 may be connected to each other via the public Internet. Each local area network 110 includes a number of computing devices 108 connected to each other by a switch 106. The multiple computing devices 108 may include, for example, desktop computers, laptops, printers, servers, etc. The local area network 110 can communicate with other networks via the public Internet by a router 112. The router 112 connects the multiple networks to each other. The router 112 is connected to an Internet service provider 102. The Internet service provider 102 is connected to one or more network service providers 104. A network service provider 104 communicates with other local network service providers 104 as shown in FIG.

[0034] The switch 106 uses packet switching to connect devices in the local area network 110 so that data can be received, processed, and forwarded to a destination device. The switch 106 can be configured to receive data from a computer, for example, destined for a printer. The switch 106 can receive the data, process the data, and send the data to the printer. The switch 106 can be a layer 1 switch, a layer 2 switch, a layer 3 switch, a layer 4 switch, a layer 7 switch, etc. A layer 1 network device forwards data but does not manage the traffic passing through the device. An example of a layer 1 network device is an Ethernet hub. A layer 2 network device is a multi-port device that processes and forwards data at the data link layer (layer 2) using hardware addresses. A layer 3 switch can perform some or all of the functions typically performed by a router. However, some network switches are limited to supporting a single type of physical network, usually Ethernet, while a router may support different types of physical networks on different ports.

[0035] The router 112 is a network device that forwards data packets between computer networks. In the exemplary system 100 shown in FIG. 1, the router 112 forwards data packets between local area networks 110. However, the router 112 is not necessarily applied to forward data packets between local area networks 110, but may be used to forward data packets between wide area networks, etc. The router 112 performs a traffic direction function on the Internet. The router 112 may have interfaces for different types of physical layer connections, such as copper cable, optical fiber, or wireless transmission. The router 112 may support different network layer transmission standards. By using each network interface, data packets can be forwarded from one transmission system to another. The router 112 may also be used to connect two or more logical groups of computer devices, called subnets, each with a different network prefix. As shown in FIG. 1, the router 112 may provide connections within an enterprise, between an enterprise and the Internet, or between Internet service provider networks. Some routers 112 may be configured to interconnect various Internet service providers or may be used within large corporate networks. Smaller routers 112 typically provide connectivity for home and office networks to the Internet. The routers 112 shown in Figure 1 may represent any router suitable for network transmission, such as edge routers, subscriber edge routers, inter-provider border routers, core routers, Internet backbone, port forwarding, voice / data / fax / video processing routers, etc.

[0036] An Internet Service Provider (ISP) 102 is an organization that provides services for access, use, or participation in the Internet. ISPs 102 can be organized in a variety of forms, such as commercial, community-owned, non-profit, or privately owned. Internet services typically provided by ISPs 102 include Internet access, Internet transit, domain name registration, web hosting, Usenet services, and colocation. ISP 102 as shown in FIG. 1 can represent any suitable ISP, such as a hosting ISP, a transit ISP, a virtual ISP, a toll ISP, a wireless ISP, etc.

[0037] A network service provider (NSP) 104 is an organization that provides bandwidth or network access by providing direct Internet backbone access to Internet service providers. A network service provider may provide access to network access points (NAPs). A network service provider 104 is also called a backbone provider or an Internet provider. Network service providers 104 may include telecommunications providers, data carriers, wireless communication providers, Internet service providers, and cable television operators that provide high-speed Internet access. Network service providers 104 may also include information technology providers.

[0038] The system 100 shown in FIG. 1 is merely exemplary, and many different configurations and systems can be constructed for transmitting data between networks and computing devices. Because network formation is highly customizable, it is desirable to have greater customizability in determining an optimal path for transmitting data between computers or networks. In light of the above, disclosed herein are systems, methods, and devices for offloading optimal path computation to an external device to provide greater customizability in determining an optimal path algorithm that is well suited to a particular enterprise or particular grouping of computers.

[0039] FIG. 2 is a schematic diagram of a system 200 for determining an optimal path between devices. The system 200 includes a plurality of BGP instances R1, R2, R3 for transmitting information. Each of the plurality of BGP instances R1, R2, R3 can be a switch 106 or a router 112. Each of the plurality of BGP instances R1, R2, R3 runs a Border Gateway Protocol (BGP) for routing traffic. Each of the plurality of BGP instances R1, R2, R3 communicates with a best path controller 202. The best path controller 202 is configured to continuously receive a plurality of BGP Network Layer Reachability Information (NLRI) from each BGP instance, perform a best path calculation, and transmit a message of the NLRI together with the best path calculation result to each of the plurality of BGP instances R1, R2, R3. In the disclosed embodiment, the best path controller 202 can be applied to either the switch 106 or the router 112. This provides increased versatility, allowing a single software package for optimal path controller 202 to be applicable to multiple types of hardware.

[0040] 3 is a schematic diagram of a process flow 300 performed by a state machine within a BGP instance. The process flow 300 includes multiple queues for route processing. Upon receiving from an established neighbor, the BGP NLRI is created and first added to a best path queue for best path calculation. The BGP NLRI is moved to a Routing Information Base (RIB) queue before being added to a queue for update generation and advertisement.

[0041] In the process flow 300, upon receiving and processing (302) a BGP update message containing NLRI, it is determined whether the best path controller (BPC) is up and running (304). If the best path controller is up and running, it is moved towards the out-queue 306 for transmission towards the best path controller 324. The best path controller may require the assistance of next hop (NH) tracking (326). In next hop tracking, BGP utilizes the services of the RIB to track the reachability and metric for each next hop. Whenever these attributes change, the RIB notifies BGP. BGP uses the tracking results to recalculate a new set of best paths. Once the best path calculation is complete, the best path controller returns the BGP NLRI containing each best path to the BGP instance via the in-queue 328 and finally moves the NLRI to the RIB queue 316 for further processing.

[0042] If the determination in 304 indicates that the best path controller is not operational, then it is determined whether the next hop has already been tracked (308). If the next hop is not known, then the BGPNLRI is moved to the best path queue 312 only after next hop tracking by the RIB (310). If the determination in 308 indicates that the next hop is known, then the BGPNLRI is moved directly to the best path queue 312 for best path computation (314). The resulting best path is moved to the RIB queue 316.

[0043] Additionally, a RIB download 318 is performed on the items in the RIB queue 316 before they are transferred to the update queue 320. Finally, a generate updates 322 operation is performed.

[0044] To integrate with the best path controller, a new queue may be introduced into the process flow 300. The best path output queue flows out BGP NLRI marked as best path pending towards the best path controller. The best path computation result is returned to the BGP instance via the best path input queue, with the NLRI marked as best path completed.

[0045] The connection to the best path controller can be established over any reliable transport. Examples include gRPC (Remote Procedure Call), HTTP (Hyper Text Transfer Protocol), or a custom IPC (Inter-Process Communication). The message format for the stream can be defined using binary formats such as Protocol Buffers (Protobuf), Thrift Protocol, or text formats such as JSON (JavaScript Object Notation) and XML (eXtensible Markup Language). In an embodiment, the BGP instance and the best path controller implementation must agree on the transport and format.

[0046] In an embodiment, a BGP instance learns an NLRI from a BGP neighbor. Instead of locally computing the best path for the NLRI, the BGP instance sends a message to the best path controller that includes the NLRI and all paths and their attributes that it has learned so far. This message can be sent when the NLRI is first learned or when the set of paths for that NLRI changes. The best path controller is expected to identify one or more paths that are the best paths and return the best path computation result to the NLRI. Note that the best path controller can use the computation result message to update the next hop or attributes of any path. The BGP instance holds the NLRI in a best path queue while waiting for the reply from the best path controller. Upon receiving the computation result message from the best path controller, the BGP instance de-queues the NLRI from the best path queue and re-queues the NLRI to the RIB installation queue if the NLRI needs to be installed in the RIB or to the update creation queue for announcement to the BGP neighbors.

[0047] To ensure high throughput, a BGP instance can send NLRI messages to the best path controller asynchronously. The BGP instance does not have to wait for the computation results to come back before sending additional messages for the same NLRI. Thus, multiple messages can be in progress for the same NLRI. Each NLRI message contains a version number field that ensures unique identification across all messages received from a BGP instance. In an instance where the best path controller receives multiple messages for the same NLRI in succession from the same BGP instance, the best path controller can choose to reply with the results of the most recent message it received for that NLRI. The NLRI message contains a version number that can be used to identify the most recent message. The BGP instance expects the best path controller to reply with the results of the most recent version of that NLRI. Until it receives such a message, the BGP instance suspends advertisement and other processing of that NLRI.

[0048] The best path controller can also send a Result message unilaterally. In such an embodiment, the best path controller sends the Result message not in response to an NLRI message sent by the BGP instance. This is useful in instances where a policy change requires the best path to be recalculated and sent proactively. In this case, the best path controller must include the latest version number of the NLRI in the Result message.

[0049] In addition to best-path computation messages, the best-path controller can also act as a consumer of next-hop reachability changes. When the reachability parameters of the next hop corresponding to the best path change, the best-path controller can recompute a new best path and send the new best path to the BGP instance. Next-hop tracking is a registration service, usually provided by the RIB, where the best-path controller can register one or more next-hops that it is interested in.

[0050] In an embodiment, the best-path function is performed by a separate process. In such an embodiment, it is important to handle failures and restart both the best-path controller and the BGP instance. To handle these scenarios, the implementation can be re-partitioned to the graceful restart mechanism described herein. When a BGP instance is restarted, the best-path controller retains the state it previously learned from its peers. Upon detecting that a BGP instance has restarted, either through a transport disconnection or an explicit signal, the best-path controller marks all information learned from that BGP instance as stale. When a BGP instance re-learns NLRI from a neighboring BGP instance, the BGP instance resends the NLRI to the best-path controller. The best-path controller replies with a Result message as normal. Note that the best-path controller marks newly received routes as new. Once the BGP instance has sent all NLRI, indicated by an explicit End-of-RIB (EoR) marker or a timer, the best-path controller purges all NLRI that is still marked as stale.

[0051] The above embodiment can also be applied to a scenario where the best path controller crashes and is restarted. In this scenario, the BGP instance maintains the best paths pre-computed by the best path controller. When the best path controller restarts, the BGP instance marks all best paths as stale and resends the NLRI and their paths to the best path controller. Upon receiving the best path results, the BGP instance updates the corresponding entries and marks them as new. Once the BGP instance receives the results of all the NLRIs, the BGP instance purges the best paths that are still marked as stale.

[0052] 4 is a schematic diagram of a system 400 for offloading storage of route and optimal path computations to a data store 402. The system includes a data store 402 in communication with multiple BGP instances R1, R2, R3, Rn. The data store 402 includes an index server 404 in communication with metadata 406. The metadata 406 indicates where particular data is located within a shared disk storage 412. The shared disk storage 412 includes multiple data storage devices 412a, 412b, 412c, 412n. The index server 404 is in communication with a processing platform 408, which has access to the shared disk storage 412. The index server 404 is configured to indicate to the processing platform 408 where particular data is located within the shared disk storage 412. The index server 404 makes this determination based on the metadata 406. The data store 402 includes a host server 410 in communication with the processing platform 408. The host server 410 enables the processing platform 408 to write to the shared disk storage 412 by updating, adding, or deleting information in the shared disk storage 412. The processing platform 408 may include multiple hosts, each having a processor and cache storage. Each host is configured to read and write information in the shared disk storage 412.

[0053] 5 illustrates an embodiment of offloading information to a local data store 402 of a switch or router. The switch or router further includes hardware 516 and a software stack 514. The hardware 516 provides the physical connections that allow the transmission of data packets between computers or networks. The software stack 514 includes instructions that are executed by a processor or hardware 516 to determine an optimal path and forward the data packet along the optimal path to its destination device.

[0054] 6 illustrates an embodiment of offloading information to a data store 602 accessible on a cloud network 614. In an embodiment, the data store 602 is a cloud-based database accessible by multiple BGP instances R1, R2, R3, Rn.

[0055] 7 is a block diagram of a method 700 for offloading optimal path computation to an optimal path controller. The method 700 is performed by the optimal path controller 202, as described herein. The optimal path controller 202 may communicate with one or more devices to transmit data to a destination device. The one or more devices may be BGP instances, such as routers 112 or switches 106. The optimal path controller 202 may be located locally within the one or more devices, or the optimal path controller 202 may be located external to each of the one or more devices.

[0056] Method 700 begins with best path controller 202 storing (702) a list of NLRIs learned by the device, the NLRIs including routes for sending data from the device to a destination device. The list of NLRIs may include all NLRIs learned by the device, all non-stale NLRIs used by the device, NLRIs belonging to the device and other devices, NLRIs less than all NLRIs learned by the device, etc. Method 700 continues with best path controller 202 receiving (704) an update message from the device. The update message may include network layer reachability information (NLRI) messages exchanged between the BGP router and best path controller 202. The NLRI may include a length and a prefix. Method 700 continues with best path controller 202 performing a best path computation process and identifying (706) one or more best paths based on the update message such that best path computation process is offloaded from the device to the best path controller. The one or more best paths may be different or the same as the best paths stored in the list of paths learned by the device. The method 700 continues with the optimal path controller 202 sending 708 the one or more optimal paths to the device.

[0057] 8 is a block diagram of an exemplary computing device 800. Computing device 800 can be used to perform various procedures as described herein. Computing device 800 can perform various monitoring functions as described herein and can execute one or more application programs, such as the functions or application programs described herein. Computing device 800 can be any of a wide variety of computing devices, such as a desktop computer, an in-dash computer, a vehicle control system, a notebook computer, a server computer, a handheld computer, a tablet computer, etc.

[0058] The computing device 800 includes one or more processors 802, one or more memory devices 804, one or more interfaces 806, one or more mass storage devices 808, one or more input / output devices 810, and a display device 830, all of which are connected to a bus 812. The processor 802 includes one or more processors or controllers that execute instructions stored in the memory device 804 and / or the mass storage device 808. Also, the processor 802 can include various types of computer-readable media such as cache memory.

[0059] The memory device 804 includes various computer-readable media such as volatile memory (e.g., random access memory (RAM) 814) and / or non-volatile memory (e.g., read-only memory (ROM) 816). Also, the memory device 804 can include rewritable ROM such as flash memory.

[0060] The mass storage device 808 includes various computer-readable media such as magnetic tape, magnetic disk, optical disk, solid-state memory (such as flash memory), etc. As shown in FIG. 8, a specific mass storage device is a hard disk drive 824. The mass storage device 808 can also include various drives to enable reading from and / or writing to various computer-readable media. The mass storage device 808 includes removable media 826 and / or non-removable media.

[0061] The input / output (I / O) device 810 includes various devices that enable inputting data and / or other information into the computing device 800 or retrieving it from the computing device 800. The I / O device 810 includes a cursor control device, keyboard, keypad, microphone, monitor or other display device, speaker, printer, network interface card, modem, etc.

[0062] Display device 830 includes any type of device capable of displaying information to one or more users of computing device 800. Display device 830 may include, for example, a monitor, a display terminal, a video projection device, and the like.

[0063] The interface 806 includes various interfaces that allow the computing device 800 to interact with other systems, devices, or computing environments. The interface 806 may include any number of different network interfaces 820, such as interfaces to a local area network (LAN), a wide area network (WAN), a wireless network, and the Internet. Other interfaces include a user interface 818 and a peripheral interface 822. The interface 806 may also include one or more user interface elements 818. Additionally, the interface 806 may include one or more peripheral interfaces, such as an interface for a printer, a pointing device (such as a mouse, a trackpad, or any suitable user interface now known to those of skill in the art or hereafter developed), a keyboard, etc.

[0064] The bus 812 allows the processor 802, memory device 804, interface 806, mass storage device 808, and I / O devices 810 to communicate with each other and with other devices or components connected to the bus 812. The bus 812 may represent one or more of several types of bus structures, such as a system bus, a PCI bus, an IEEE bus, a USB bus, etc.

[0065] Although programs and other executable program components are illustrated herein as separate blocks for purposes of illustration, such programs and components may reside at various times in different storage components of computing device 800 and be executed by processor 802. Alternatively, the systems and procedures described herein may be implemented in hardware or a combination of hardware, software, and / or firmware. For example, one or more application specific integrated circuits (ASICs) may be programmed to perform one or more of the systems and procedures described herein.

[0066] The above description has been presented for purposes of illustration and description. The present disclosure is not limited to the precise form set forth herein. Many modifications and variations are possible in light of the above teachings. Moreover, any or all of the above variations can be combined in any manner to form further combinations of the present disclosure.

[0067] Moreover, although specific embodiments of the present disclosure have been described and illustrated, the present disclosure is not limited to the specific forms or arrangements of parts so described and illustrated. The scope of the present disclosure is defined by the claims of this application, or any future claims filed based on this application, and any equivalents thereof. EXAMPLES

[0068] The following examples relate to further embodiments.

[0069] Example 1 is a method of offloading best path computation to a best path controller in a network computing environment. The method includes storing, by the best path controller, a list of a plurality of paths learned by the device, the plurality of paths being a plurality of routes for transmitting information from the device to a destination device. The method includes receiving, by the best path controller, a message from the device, the message being a Network Layer Reachability Information (NLRI) message. The method includes performing, by the best path controller, a best path computation process and identifying one or more best paths based on the message such that the best path computation process is offloaded from the device to the best path controller. The method includes transmitting the one or more best paths to the device.

[0070] Example 2 is the method according to example 1, in which the device is a router or a switch.

[0071] Example 3 is the method according to example 1 or 2, wherein the device runs a Border Gateway Protocol (BGP).

[0072] Example 4 is the method according to any of Examples 1 to 3, further comprising: updating a next hop of any path in the list of paths based on one or more optimal paths calculated by the optimal path controller.

[0073] Example 5 is a method described in any of Examples 1 to 4, wherein receiving a message (NLRI message) from the device includes asynchronously receiving multiple messages from the device, and performing a best path calculation includes performing a best path calculation on an latest version of network layer reachability information (NLRI) based on the multiple messages.

[0074] Example 6 is a method as described in any of Examples 1 to 5, wherein each of the multiple messages includes a version number field having a unique identification across all messages received from the device for a single NLRI.

[0075] Example 7 is a method described in any of Examples 1 to 6, further including: re-performing an optimal path calculation in response to the policy change, generating a result message including one or more optimal paths based on the re-performing the optimal path calculation, and returning the result message to the device.

[0076] Example 8 is a method according to any of Examples 1 to 7, further comprising receiving, by the optimal path controller, a next hop reachability update for a path in the list of paths learned by the device, re-performing an optimal path calculation in response to receiving the next hop reachability update, generating a result message including one or more optimal paths based on the re-performing optimal path calculation, and returning the result message to the device.

[0077] Example 9 is the method of any of Examples 1 to 8, further including determining that the device has restarted; maintaining, by the optimal path controller, a list of the plurality of paths learned by the device; marking each path in the list of the plurality of paths learned by the device as stale in response to determining that the device has restarted; receiving a new path from the device in response to the device relearning the new path; and purging the stale path that matches the new path from the list of the plurality of paths.

[0078] Example 10 is the method according to any one of Examples 1 to 9, wherein the optimum path calculation is customized for the device and other devices in the device's network.

[0079] Example 11 is a system. The system includes a device in a network, the device configured to transmit information from the device to a destination device. The system includes an optimal path controller in communication with the device, the optimal path controller including a processor configurable to execute instructions stored in a non-transitory computer-readable storage medium. The instructions include storing in a memory a list of a plurality of paths learned by the device and receiving a message from the device, each of the plurality of paths being a route for transmitting data from the device to a destination device. The instructions include performing an optimal path computation process and identifying one or more optimal paths based on the message such that the optimal path computation process is offloaded from the device to the optimal path controller. The instructions include transmitting the one or more optimal paths to the device.

[0080] Example 12 is the system of example 11, wherein the device is a router or a switch, and the device runs a Border Gateway Protocol (BGP).

[0081] Example 13 is a system described in example 11 or 12, wherein the instructions further include updating a next hop of any path in the list of paths based on one or more optimal paths calculated by the optimal path controller.

[0082] Example 14 is a system described in any of Examples 11 to 13, wherein the instructions for receiving a message from the device include asynchronously receiving multiple messages from the device, and for performing an optimal path calculation include performing an optimal path calculation on an latest version of the multiple messages.

[0083] Example 15 is a system described in any of Examples 11 to 14, wherein the instructions further include re-performing an optimal path calculation in response to the policy change, generating a result message including one or more optimal paths based on the re-performing the optimal path calculation, and returning the result message to the device.

[0084] Example 16 is a non-transitory computer-readable storage medium storing instructions for execution by one or more processors. The instructions include storing a list of a plurality of paths learned by the device, the plurality of paths being a plurality of routes for transmitting information from the device to a destination device. The instructions include receiving a message from the device. The instructions include performing an optimal path computation process, identifying one or more optimal paths based on the message such that the optimal path computation process is offloaded from the device to an optimal path controller, and transmitting the one or more optimal paths to the device.

[0085] Example 17 is the non-transitory computer-readable storage medium of Example 16, wherein the instructions further include re-performing the optimal path calculation in response to the policy change, generating a result message including one or more optimal paths based on re-performing the optimal path calculation, and returning the result message to the device.

[0086] Example 18 is the non-transitory computer-readable storage medium of Example 16 or 17, wherein the instructions further include receiving, by the optimal path controller, a next hop reachability update for a path in the list of paths learned by the device, re-performing an optimal path calculation in response to receiving the next hop reachability update, generating a result message including one or more optimal paths based on re-performing the optimal path calculation, and returning the result message to the device.

[0087] Example 19 is a non-transitory computer-readable storage medium according to any of Examples 16 to 18, wherein the instructions further include determining that the device has restarted, maintaining, by the optimal path controller, a list of multiple paths (multiple NLRIs) learned by the device, marking each path in the list of multiple paths learned by the device as stale in response to determining that the device has restarted, and receiving a new path from the device in response to the device re-learning the new path, and purging the stale path that matches the new path from the list of the multiple paths.

[0088] Example 20 is the non-transitory computer-readable storage medium of any of Examples 16 to 19, in which the optimal path calculation is customized for the device and other devices in the device's network.

[0089] It should be noted that any features of the above-described configurations, examples, and embodiments may be combined in a single embodiment, including any combination of features from any of the configurations, examples, and embodiments disclosed herein.

[0090] Various features disclosed herein provide important advantages and advances in the art, some of which are exemplified in the following claims.

[0091] In the foregoing detailed description of the disclosure, various features of the disclosure are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed disclosure requires more features than are expressly recited in each claim. That is, an aspect of the invention may include fewer than all features of a single previously disclosed embodiment.

[0092] The above arrangements are merely illustrative of the application of the principles of the present disclosure. Numerous modifications and alternative arrangements may be devised by those skilled in the art without departing from the spirit and scope of the present disclosure, and the appended claims are intended to cover all such modifications and arrangements.

[0093] Thus, while the present disclosure has been illustrated in the drawings and described in detail above, it will be apparent to those skilled in the art that numerous modifications, including but not limited to variations in size, material, shape, form, function, operation, assembly, and use, may be made without departing from the principles and concepts described herein.

[0094] Additionally, the functions described herein may be implemented in one or more of hardware, software, firmware, digital components, or analog components, where appropriate. For example, one or more application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) may be programmed to implement one or more of the systems and procedures described herein. Certain terms are used throughout the description and claims to refer to particular system components. Those skilled in the art will recognize that components may be referred to by different names. This document does not intend to distinguish between components that differ in name but function.

[0095] The above description has been presented for purposes of illustration and description. The present disclosure is not limited to the precise form set forth herein. Many modifications and variations are possible in light of the above teachings. Moreover, any or all of the above variations can be combined in any manner to form further combinations of the present disclosure.

[0096] Moreover, although specific embodiments of the present disclosure have been described and illustrated, the present disclosure is not limited to the specific forms or arrangements of parts so described and illustrated. The scope of the present disclosure is defined by the claims of this application, or any future claims filed based on this application, and any equivalents thereof. [Explanation of symbols]

[0097] 100 Systems 108 Computing Devices 200 Systems 300 Process Flow 400 Systems 700 methods 800 computing devices 812 Bus

Claims

1. storing in memory a list of a plurality of paths learned by the device by a best path controller, each of the plurality of paths being a route for transmitting data from the device to a destination device; receiving, by a Border Gateway Protocol (BGP) instance running on the device, Network Layer Reachability Information (NLRI) messages from neighbors of the device; Queueing the NLRI message by the BGP instance; forwarding, by the BGP instance, the NLRI message to the best path controller while retaining the NLRI message in the queue; receiving, by the optimal path controller, the NLRI message from the device; performing, by the best path controller, a best path computation process and identifying one or more best paths based on the NLRI message such that the best path computation process is offloaded from the device to the best path controller; transmitting the one or more optimal paths to the device; dequeuing, by the BGP instance, the NLRI message from the queue in response to receiving the one or more optimal paths. The method according to claim 1, further comprising:

2. 2. The method of claim 1, wherein the device is a router or a switch.

3. 2. The method of claim 1, further comprising updating, by the optimal path controller, a next hop for any path in the list of paths based on the one or more optimal paths calculated by the optimal path controller.

4. receiving the NLRI message from the device includes asynchronously receiving a plurality of NLRI messages from the device, the plurality of NLRI messages including the NLRI message; and performing the best path calculation includes performing the best path calculation on an updated version of network layer reachability information (NLRI) based on the plurality of NLRI messages.

2. The method of claim 1 .

5. 5. The method of claim 4, wherein each NLRI message of the plurality of NLRI messages includes a version number field that uniquely identifies each NLRI message within the plurality of NLRI messages received from the device for a single NLRI.

6. The method further comprises: re-performing said optimum path calculation in response to a policy change; generating a result message including one or more optimal paths based on re-performing the optimal path calculation; and returning the result message to the device; 2. The method of claim 1, comprising:

7. The method further comprises: receiving, by the best path controller, next hop reachability updates for paths in the list of paths learned by the device; re-performing the best path calculation in response to receiving the next hop reachability update; generating a result message including one or more optimal paths based on re-performing the optimal path calculation; and returning the result message to the device; 2. The method of claim 1, comprising:

8. The method further comprises: determining that the device has rebooted; maintaining, by the best path controller, a list of the plurality of paths learned by the device; marking each path in the list of paths learned by the device as stale in response to determining that the device has rebooted; receiving the new path from the device in response to the device relearning the new path; and purging old paths that match the new path from the list of paths; 2. The method of claim 1, comprising:

9. 2. The method of claim 1, wherein the optimum path calculation is customized for the device and other devices within the device's network.

10. The system, The devices in the network an optimal path controller in communication with the device; Including, The device comprises: receiving, by a Border Gateway Protocol (BGP) instance running on the device, Network Layer Reachability Information (NLRI) messages from neighbors of the device; Queueing the NLRI message by the BGP instance; while holding the NLRI message in the queue, forwarding the NLRI message by the BGP instance to the best path controller in communication with the device; the optimal path controller includes a processor configurable to execute instructions stored in a non-transitory computer-readable storage medium; The instruction: storing in memory a list of a plurality of paths learned by the device, each of the plurality of paths being a route for transmitting data from the device to a destination device; receiving the NLRI message from the device; performing a best path computation process and identifying one or more best paths based on the NLRI message such that the best path computation process is offloaded from the device to the best path controller; and transmitting the one or more optimal paths to the device; Including, the device is further configured to dequeue the NLRI message in response to receiving the one or more optimal paths from the optimal path controller. A system characterized by:

11. The system of claim 10, wherein the device is a router or a switch.

12. 11. The system of claim 10, wherein the instructions further comprise updating a next hop for any path in the list of paths based on the one or more optimal paths calculated by the optimal path controller.

13. The instruction: receiving the NLRI message from the device includes asynchronously receiving a plurality of NLRI messages from the device, the plurality of NLRI messages including the NLRI message; and performing the best path calculation includes performing the best path calculation on an updated version of network layer reachability information (NLRI) based on the plurality of NLRI messages. The system of claim 10.

14. The instructions further include: re-performing said optimum path calculation in response to a policy change; generating a result message including one or more optimal paths based on re-performing the optimal path calculation; and returning the result message to the device; 11. The system of claim 10, further comprising:

Citation Information

Patent Citations

  • Route control method based on route control protocol using link availability rate, node device and program

    JP2010183526A

  • Sequential message processing

    JP2011526014A

  • Border gateway protocol (BGP) routing policy manager, relay, and monitor

    US20080013551A1

  • Event triggered traceroute for optimized routing in a computer network

    US20090198832A1

  • Accelerated Routing Convergence

    US20120269198A1