Automatic scaling of network topology using unique identifiers
Unique tag identifiers enable automatic scaling and modification of network topologies, addressing the limitations of manual updates by facilitating seamless integration of new nodes and interfaces.
Patent Information
- Application Number
- JP2025506999
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-08-11
- Filing Date
- 2023-08-08
- Publication Date
- 2025-08-15
AI Technical Summary
Traditional network topology systems lack the ability to automatically scale and modify in response to changes such as new nodes, interfaces, or technologies, requiring manual updates that are difficult and error-prone.
Implementing unique tag identifiers for nodes and interfaces within the network topology, allowing for automatic scaling and modification by decoding these identifiers to update configurations in routers.
This approach eliminates the need for manual intervention, simplifies network topology management, and ensures accurate and efficient scaling and adjustment of network configurations.
Smart Images

Figure 2025526614000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to computing networks, and more particularly to network topologies and routing protocols within a computer network environment. [Background technology]
[0002] Network computing is a means by which multiple computers, or nodes, cooperate and communicate with each other over a network. These include wide area networks (WANs) and local area networks (LANs). Both wide area networks and local area networks allow computers to connect to each other. 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 even connect computers in different countries. Local area networks are typically faster and more secure than wide area networks, but wide area networks allow for broader connectivity. Local area networks are typically owned, controlled, and managed within the organization in which they are deployed, while wide area networks typically require the connection of two or more constituent local area networks, either via the public Internet or private connections established by a telecommunications provider.
[0003] Local and wide area networks connect computers together and allow the transfer of data and other information. Both local and wide area networks require a means to determine the path along which data should be passed from one computing instance to another. This is also known as 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, which maintain records of routes to various network destinations. Routing tables may be specified by an administrator, learned by monitoring network traffic, or constructed with the assistance of a routing protocol.
[0004] Small networks can use manually configured routing tables to determine how information is transferred from one computer to another. Routing tables can contain a list of "best paths," indicating the most efficient or most desirable paths between a starting computer and a final destination computer. Larger networks, including those connected to the public Internet, can rely on complex topologies that can change rapidly, making manual construction of routing tables impossible. Dynamic routing attempts to solve this problem by automatically constructing routing tables based on information conveyed by routing protocols. Dynamic routing allows networks to operate largely autonomously, avoiding network failures or blockages. Several routing protocols exist that provide rules or instructions for determining the best path between network devices. Examples of dynamic routing protocols and algorithms include the Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Enhanced Interior Gateway Routing Protocol (EIGRP), 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 no single entity responsible for selecting the optimal path. Instead, multiple entities are involved in selecting the optimal path or even portions 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 AS controls the routes that encompass its network. AS-level paths are selected based on the Border Gateway Protocol (BGP). Each AS-level path contains a set of ASs through which information packets are sent from one computing instance to another. Each AS can have multiple paths from which it can select multiple paths provided by neighboring ASs. Summary of the Invention [Problem to be solved by the invention]
[0007] It is often important to scale and modify the network topology in real time to account for new nodes, new interfaces, new technologies, etc. However, traditional network topology systems do not allow for automatic scaling and modification of the network topology. [Means for solving the problem]
[0008] With the foregoing in mind, systems, methods, and devices are disclosed herein for automatically scaling network topologies by implementing the unique tag identifiers described herein.
[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 the figures unless otherwise specified. Advantages of the present disclosure will be more clearly understood by referring to the following description and the accompanying drawings. [Brief explanation of the drawings]
[0010] [Figure 1] FIG. 1 is a schematic diagram of an exemplary system of network devices communicating over the Internet. [Figure 2] 1 is a schematic block diagram of an exemplary network topology including a core layer, an edge layer, and a customer layer as known in the prior art; [Figure 3] 1 is a schematic block diagram of an exemplary network topology including a core layer, an edge layer, and a customer layer as known in the prior art; [Figure 4] FIG. 1 is a schematic block diagram of an exemplary network topology including representations of routing protocols and hardware implemented by interfaces and nodes within the network topology. [Figure 5] FIG. 1 is a schematic flow chart diagram of a method for constructing and implementing a network configuration including a unique tag identifier for automatic scaling and reconfiguration. [Figure 6]FIG. 10 is a block diagram illustrating an example format for node-level and interface-level unique tag identifiers. [Figure 7] FIG. 1 is a block diagram illustrating an example network topology including unique tag identifiers for nodes, interfaces, and links. [Figure 8A] FIG. 10 is a block diagram illustrating an exemplary automatically generated configuration template for a unique tag identifier. [Figure 8B] FIG. 10 is a block diagram illustrating an exemplary automatically generated configuration template for a unique tag identifier. [Figure 9] FIG. 1 is a block diagram illustrating an exemplary automatically generated configuration template for an Internet Protocol network topology utilizing unique tag identifiers. [Figure 10] FIG. 1 is a block diagram illustrating an example automatically generated configuration template for a network topology implementing unique tag identifiers. [Figure 11] FIG. 1 is a schematic diagram illustrating components of an exemplary computing device. DETAILED DESCRIPTION OF THE INVENTION
[0011] Disclosed herein are systems, methods, and devices for topology-independent automation of scaling and modifying network topology. The systems, methods, and devices described herein implement the use of "tags," referred to herein as tag identifiers, which are applied to nodes, interfaces, and links within the network topology.
[0012] The tag identifiers described herein are implemented to enable automatic scaling and modification of network topologies for end-to-end configuration and matching. The tag identifiers described herein can be implemented in topologies utilizing Border Gateway Protocol (BGP), Resource Reservation Protocol (RSVP), Internet Protocol Secure (IPSEC), Language Server Protocol (LSP), Virtual Private Network (VPN) protocols, Intermediate System-Intermediate System (IS-IS) protocols, Open Shortest Path First (OSPF) protocols, and other protocols not specified herein. The tag identifiers described herein are topology-independent and protocol-independent.
[0013] In traditional systems, data in the network topology must be manually constructed. Depending on the implementation, this data can include, for example, peer Internet Protocol (IP) addresses, peer Label Switched Path (LSP) IP addresses, interface names, etc. Manually constructing this data and manually mapping each node in the network topology is difficult and inaccurate. Furthermore, these traditional systems overly complicate automation. Traditional systems do not provide a scalable approach for increasing the size of the topology (e.g., for adding additional nodes, interfaces, and links) or for modifying an existing topology. In these traditional systems, when a topology is changed, the data corresponding to the deleted data must be manually updated to remove the node from the configurable list. This change must be updated on each data list at the node level that holds the peer address details of the deleted node. This further impacts the peer state reconciliation process. If the change is not updated, it adversely affects subsequent reconciliation checks on corresponding nodes.
[0014] The tag identifiers described herein solve the above problems. The systems, methods, and apparatus described herein implement tag identifiers that map to network topologies. Once the tag identifiers are implemented, a computer system can automatically scale the network topology by identifying new nodes, decoding the tag identifiers, extracting the new node's information, and creating configurations to send to routers in the topology. This virtually eliminates the need for manual human interaction when scaling and adjusting the network topology.
[0015] Tag identifiers are implemented at the node level (node tag identifier) and interface level (interface tag identifier). Node tag identifiers include the node role, the node number within the protocol, and the node tag identifier name. Interface tag identifiers include information about the protocol and the interface tag identifier name. These tag identifiers are used to automate scaling and adjustment of the network topology.
[0016] The following discussion is provided as further background for the disclosure herein. In a computer network environment, network devices such as switches or routers are utilized to transmit information from one destination to another. In an embodiment, data packages and messages are generated at a first location, such as a computer in a person's home. The data packages and messages are generated by a person interacting with a web browser to provide information to or request information from a remote server accessible over the Internet. In an embodiment, the data packages and messages may be information entered by a person into a form accessible on a web page connected to the Internet. The data packages and messages need to be transmitted to a remote server that is geographically distant from the person's computer. There is likely no direct communication between the router in the person's home and the remote server. Thus, the data packages and messages must "hop" through different network devices before reaching their destination at the remote server. The router in the person's home must determine the route to transmit the data packages and messages through multiple different devices connected to the Internet until the data packages and messages reach their destination at the remote server.
[0017] The process of determining the optimal path from a first location to a destination and forwarding data packages and messages to the next destination is an important function performed by network devices such as switches or routers. The connections between network devices within a network are called network topology. A network topology is the arrangement of elements such as links and nodes within a communication network. A network topology can include wired links, wireless links, or a combination of wired and wireless links between nodes in the network. Some examples of wired links include coaxial cables, telephone lines, power lines, ribbon cables, optical fibers, etc. Some examples of wireless links include satellite, cellular signals, radio signals, free space optical communications, etc. A network topology includes a representation of all nodes (e.g., computers, routers, switches, and other devices) in the network and a representation of the links between the nodes. Disclosed herein are systems, methods, and devices for improving network topology and network routing.
[0018] To further the understanding of this disclosure, some descriptions for a number of network computing devices and protocols are provided.
[0019] A BGP instance is a device for routing information within a network. A BGP instance can take the form of a route reflector appliance. A BGP instance can run on a switch, a router, or a BGP speaker on a switch. 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 from among these paths. The best path controller is allowed to change the next hop and attributes of any path. Upon receiving the best path, the BGP instance updates its local Routing Information Base (RIB) and advertises the best path to its neighbors.
[0020] 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 functionality. Such switches are commonly called Layer 3 switches or multi-layer switches.
[0021] Routers connect networks. Switches and routers perform similar functions, but they perform 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, email, 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 their destination node. Routers are connected to two or more 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 its 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).
[0022] A customer edge (CE) router is a router located on a premises that provides the interface between the provider's core network and the customer's LAN. CE routers, provider routers, and provider edge routers are components in a multiprotocol label switching configuration. Provider routers are located in the core of the provider's or carrier's network. Provider edge routers are located at the edge of the network. Customer edge routers connect to provider edge routers, which in turn connect to other provider edge routers.
[0023] A routing table or routing information base (RIB) is a data table stored in a router or network computer that lists routes to specific network destinations. In some cases, routing tables include route metrics such as distance and weight. Routing tables contain information about the topology of the network immediately surrounding the router where the routing table is stored. Building a routing table is the primary goal of a routing protocol. Statistical routes are entries created in a routing table by non-automatic means and are fixed regardless of the outcome of some network topology discovery procedure. A routing table can contain at least three information fields, including network ID, metric, and next hop fields. The network ID is the destination subnet. The metric is the routing metric of the path the packet will take when sent. The route travels toward the gateway with the lowest metric. The next hop is the address of the next station to which the packet will be sent on its way to the destination. A routing table can also include the quality of service associated with the route, a link filtering criteria list associated with the route, the interface for an Ethernet card, etc.
[0024] To illustrate the concept of a routing table, a routing table can be analogized as using a map to route packages. A routing table is like using a map to route packages to their final destination. When a node needs to send data to another node on the network, it first needs to know where to send the data. If the node cannot directly connect to the destination node, it needs to send the data to another node along the proper route to the destination node. Most nodes do not attempt to calculate which route will work. Instead, the node sends IP packets to a gateway in the LAN, which then determines how to route the data to the correct destination. Each gateway needs to keep track of the direction to route various packages of data, and it uses a routing table to do so. A routing table is a database that tracks paths, like a map, and uses these paths to determine the direction in which to forward traffic. Gateways can also share the contents of these routing tables with other nodes that request the information.
[0025] For hop-by-hop routing, each routing table creates a list, for every reachable destination, of the address of the next device along the path to the destination, e.g., the next hop. Assuming the routing tables are consistent, the algorithm that relays packets to the next hop to the destination may deliver the data anywhere in the network. Hop-by-hop routing is a feature of the IP internetwork layer and the Open Systems Interconnection (OSI) model.
[0026] The Open Systems Interconnection (OSI) model is a conceptual model that characterizes and standardizes the communication functions of computer systems, regardless of their underlying internal structure and technology. The goal of the OSI model is interoperability of diverse communication systems with standard communication protocols. The OSI model divides communication systems into abstraction layers. A layer serves the layer above it and serves the layer below it. For example, a layer that provides error-free communication across a network provides the path needed by the application above it and requests the layer below it to receive and transmit the packets that make up that path. Two instances of the same layer are visualized as connected by a horizontal connection within that layer. Communication protocols allow entities in one host to interact with corresponding entities at the same layer in other hosts. Service definitions such as the OSI model abstractly describe the functions provided by (N-1) layers to (N), where N is one of the layers of protocols operating within the local host.
[0027] 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 suite of hardware- and software-based products and services that work together to improve overall Internet performance and fine-tune 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 selecting the optimal path for data transmission.
[0028] Some network communication systems are large, enterprise-level networks with thousands of processing nodes. These thousands of processing nodes share bandwidth from multiple Internet Service Providers (ISPs) and can handle large volumes of Internet traffic. Such systems can be very complex and must be properly configured to achieve acceptable Internet performance. If the system is not properly configured for optimal data transmission, Internet access speeds can be slowed and system bandwidth consumption and traffic can increase. These concerns can be eliminated or mitigated by implementing a set of services, also known as routing control.
[0029] 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 calculates the performance and efficiency of all ISPs and can select only the ISPs that perform optimally in the applicable area. The route control device can be configured according to predefined parameters regarding cost, performance, and bandwidth.
[0030] 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 a specific router before the traffic reaches its intended destination. By implementing the BGP best path algorithm, the best path to install in the Internet Protocol (IP) routing table for traffic forwarding can be determined. BGP routers can be configured to receive multiple paths to the same destination.
[0031] 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 directives such as prefer the path with the highest weight, prefer paths with no local preference, prefer paths locally originated by a network or aggregation BGP, prefer the shortest path, or prefer the path with the smallest multi-exit discriminator. The BGP best path selection process can be customized.
[0032] In the context of BGP routing, each routing domain is called an autonomous system (AS). BGP assists in selecting a path through the Internet to connect two routing domains. BGP selects the route that passes through the fewest number of autonomous systems, commonly referred to as 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 traverses the list to find the 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.
[0033] Equal Cost Multipath (ECMP) routing is a routing strategy in which next-hop packets forwarded to a single destination can occur over multiple "best paths." The multiple best paths are equal based on a routing metric calculation. Multipath routing can be used with many routing protocols because routing is a hop-by-hop decision limited to a single router. Multipath routing can substantially increase bandwidth by load balancing traffic over multiple paths. However, ECMP routing has many known problems when the strategy is deployed in practice. Disclosed herein are systems, methods, and devices for improving ECMP routing.
[0034] Clos networks can be deployed in telecommunications. A Clos network is a multi-stage circuit-switched network that represents an idealization of a multi-stage switch system. A Clos network includes three stages: an ingress stage, a middle stage, and an egress stage. Each stage is composed of several crossbar switches. Each request enters an ingress crossbar switch and is routed through any available middle stage crossbar switch to the associated egress crossbar switch. A middle stage crossbar switch is available for a particular new request if both the link connecting the ingress switch to the middle stage switch and the link connecting the middle stage switch to the egress switch are free.
[0035] A leaf-spine network topology can be deployed to connect nodes in a computer network. The leaf-spine topology has two layers: a leaf layer and a spine layer. The leaf layer consists of access switches that connect to devices such as servers, firewalls, load balancers, and edge routers. The spine layer consists of switches that perform routing and form the backbone of the network, with all leaf switches interconnected with each spine switch. In a leaf-spine topology, all devices are located the same number of links away from each other and have a predictable, consistent amount of delay or latency for transmitting information.
[0036] A Virtual Local Area Network (VLAN) is a segmented and isolated broadcast domain within a computer network at the data link layer. VLANs apply tags to network frames and process these tags within the network system, making network traffic function and appear as if it is physically on a single network but separated between separate networks. VLANs allow network applications to remain separate even when connected to the same physical network, without the need to deploy multiple sets of cables and network devices.
[0037] A Switched Virtual Interface (SVI) is a virtual interface and port for a managed switch that transmits untagged VLAN packets. Traditionally, switches only transmit traffic to hosts within the same broadcast domain (a single VLAN), and routers handle traffic between different broadcast domains (different VLANs). In such an implementation, network devices in different broadcast domains cannot communicate without a router. When an SVI is implemented, the switch uses a virtual Layer 3 interface to route traffic to other Layer 3 interfaces, eliminating the need for a physical router. VLANs can reduce the load on the network by dividing a LAN into smaller segments and maintaining local traffic within a VLAN. However, because each VLAN has its own domain, a mechanism is needed for one VLAN to transmit data to another without the data passing through a router. SVI is such a mechanism. SVIs are typically based on switches (e.g., Layer 3 and Layer 2 switches). When an SVI is implemented, the switch can recognize packet destinations that are local to the sending VLAN and can switch packets destined for different VLANs. In an embodiment, there is a one-to-one mapping between a VLAN and an SVI. In such an embodiment, only a single SVI is mapped to a VLAN.
[0038] To promote an understanding of the principles underlying the present disclosure, reference will be made to illustrated embodiments and specific language will be used to describe the same, 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, will be readily apparent to those skilled in the art based on the present disclosure, and are encompassed by the appended claims.
[0039] Before disclosing and describing the structures, systems, and methods for tracking the lifecycle of objects in a network computing environment, it is to be understood that the present 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. Furthermore, it is to be understood that the terminology used herein is for the purpose of describing particular embodiments only, and is not intended to be limiting, since the scope of the present disclosure will be limited only by the claims and their equivalents.
[0040] 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.
[0041] As used in this specification and claims, the singular forms "a," "an," and "the" include plural referents unless the context clearly dictates otherwise.
[0042] As used herein, the terms "comprise," "have," "include," "featuring," and their grammatical equivalents are non-exclusive or open-ended terms that do not exclude additional, unrecited elements or method steps.
[0043] As used herein, the phrase "consisting of" and its grammatical equivalents excludes any element or step not recited in a claim.
[0044] 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 materials or steps that do not materially affect the basic and novel properties or characteristics of the claimed disclosure.
[0045] Referring to the drawings, FIG. 1 is a schematic diagram of a system 100 for connecting devices to the Internet. The system 100 includes multiple local area networks 110 connected by a switch 106. Each of the multiple local area networks 110 is connectable to one another via the public Internet by a router 112. The exemplary system 100 shown in FIG. 1 includes two local area networks 110. However, more local area networks 110 may be connected to one another via the public Internet. Each local area network 110 includes multiple computing devices 108 connected to one another via the switch 106. The multiple computing devices 108 may include, for example, desktop computers, laptops, printers, servers, etc. The local area networks 110 can communicate with other networks via the public Internet by a router 112. The router 112 connects the multiple networks to one another. 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. The network service provider 104 communicates with other local network service providers 104 as shown in FIG.
[0046] The switch 106 connects devices within the local area network 110 using packet switching, allowing data to 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 may 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.
[0047] 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 does not necessarily need to forward data packets between local area networks 110, but may also be used to forward data packets between wide area networks, etc. The router 112 performs traffic direction functions 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 can support different network layer transmission standards. Each network interface can be used to forward data packets 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 can provide connectivity within a company, between a company 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 can represent any router suitable for network transmission, such as an edge router, a subscriber edge router, an inter-provider border router, a core router, an Internet backbone, a port forwarding router, a voice / data / fax / video processing router, etc.
[0048] 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, transit ISP, virtual ISP, toll-free ISP, wireless ISP, etc.
[0049] 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 a network access point (NAP). A network service provider 104 is also called a backbone provider or Internet provider. Network service providers 104 can include telecommunications providers, data carriers, wireless communication providers, Internet service providers, and cable television operators that offer high-speed Internet access. Network service providers 104 can also include information technology providers.
[0050] The system 100 shown in Figure 1 is merely exemplary, and many different configurations and systems can be constructed for transmitting data between networks and computing devices. Because networking is highly customizable, it is desirable to provide greater customizability in determining optimal paths 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 better suits a particular enterprise or particular grouping of computers.
[0051] 2 is a schematic block diagram of an exemplary network topology 200. Network topology 200 includes a core layer having nodes P0, P1 through Pn. Network topology 200 includes an edge layer having nodes PE1, PE2 through PEn. Network topology 200 includes a customer layer having nodes CE1, CE2, CE3 through CEn. Network topology 200 illustrates the challenges associated with modifying and expanding a traditional topographical network.
[0052] In traditional systems, network topology 200 requires significant maintenance to ensure that all nodes are configured correctly. Often, network topology 200 is continually updated to add new nodes, modify existing nodes, and remove existing nodes. Each time network topology 200 is updated, the configuration of each node must be updated to reflect the modified network topology 200.
[0053] The BGP topology is laid out from P0 to Pn and between PE1 and PEn from P0 to Pn. In implementation, the network topology 200 is a full mesh of BGP sessions, where there are N-1 sessions from each node to remote nodes. In this case, the topology is implemented by discovering N-1 IP addresses, which can be manually entered by a user. This complicates the manageability of the network topology 200 because every node needs to be updated when a node is added, modified, or deleted.
[0054] An RSVP LSP is deployed between PE1 and PEn. The difficulties described for BGP are also present in RSVP LSP implementations. A VPN is deployed between PE1 and PEn. Each PEn node is configured with a one-to-many interface as part of the VPN. When there is a change in the VPN or the interface, each PE node must be updated. This also creates manageability issues. OSPF is deployed on all links between PE1 and PEn and between P0 and Pn. OSPF experiences the same manageability issues associated with VPN implementations.
[0055] In an exemplary implementation, network topology 200 is implemented as a full-mesh BGP peer network that can be expanded and modified through automated protocols. In some cases, IP addresses must be manually configured and modified, which is difficult to maintain as the topology changes. In this BGP implementation, each node in network topology 200 is associated with N-1 peers. This is achieved by building N-1 loops on each node using data for the necessary peers. This makes it difficult to automate network topology 200, and is not a scalable approach when the number and configuration of nodes in network topology 200 increases or is adjusted. In this network topology 200, when the topology changes, data corresponding to deleted nodes must be manually updated to remove the node from the configurable list. This is difficult to maintain and causes problems with the functionality and effectiveness of the modified topology. Furthermore, all changes must be updated on each node-level data list that holds peer address details. This data further impacts peer state validation. If modifications are not updated, subsequent validation checks of the corresponding nodes are adversely affected.
[0056] In a further exemplary implementation, network topology 200 is implemented as a full-mesh RSVP LSP or IPSEC topology that utilizes automation. In this case, data (e.g., peer LSP IP addresses) must be manually configured, which is difficult to maintain as the topology changes over time. In this RSVP LSP or IPSEC implementation, each node is associated with N-1 peers, which is achieved by creating N-1 loops that utilize data for the necessary LSP peers on each node. This overly complicates the automation and is not a scalable approach as the number and configuration of nodes in the topology increases. In this network topology 200, when the topology changes, data corresponding to deleted nodes must be manually updated to remove the node from the configurable list. This creates manageability issues. These changes must be updated on each node-level data list that holds peer address details. Also, if the changes are not updated throughout network topology 200, this impacts peer status validation.
[0057] 3 is a schematic block diagram of an exemplary network topology 300. Network topology 300 illustrates an exemplary VPN network. Network topology 300 includes a topology having nodes PE1 through PEn. In this example, the requirement is to use automation to build an L3 VPN topology. Data (in this case, interface names) on every node is configured to map to a specific VPN, which must be manually configured. This is difficult to maintain when the topology changes.
[0058] Each node in network topology 300 includes N links and n subinterfaces. To achieve this configuration, N loops must be constructed using data for the necessary links on each node. Thus, network topology 300 must contain n loops within each N loop. This process must be repeated for each node. This overly complicates automation and is not a scalable approach when the number of nodes or links in the topology increases or changes over time. In this traditional system, when the topology is changed, data corresponding to deleted nodes or links must be manually updated to remove the node or link from the configurable list. This creates manageability issues.
[0059] In a further exemplary implementation, network topology 300 is implemented as an automated OSPF / IS-IS topology. In this implementation, data (in this case, interface names) on all nodes must be manually configured. This is difficult to maintain as the topology changes. In this traditional system, when the topology changes, data corresponding to deleted nodes or links must be manually updated to remove the node or link from the configurable list. This creates manageability issues. These changes must be updated on each per-node-level data list that holds link name details. This data also impacts OSPF / IS-IS state validation. If the changes are not updated, they impact subsequent validation checks of the corresponding nodes.
[0060] Figure 4 shows an automated network topology 400. In Figure 4, nodes are shown as specific hardware or technology.
[0061] The automated network topology 400 includes a core layer having nodes P0, P1 through Pn. The automated network topology 400 further includes an edge layer having nodes PE1, PE2 through PEn, as needed. Finally, the automated network topology 400 includes a customer layer having nodes CE1, CE2, CE3 through CEn, as needed. Each of the core layer nodes, edge layer nodes, and customer layer nodes may be supported by any suitable hardware. For example, the P1 through Pn nodes implemented herein require support for the BGP, RSVP, and OSPF protocols. The PE1 through PEn nodes require support for the BGP, MPLS, RSVP, OSPF, and VPN protocols. The CE1 through CEn nodes require support for basic protocols such as static routes.
[0062] As shown in Figure 4, the core layer nodes P0, P1 to Pn may include an MPLS Border Gateway Protocol (BGP) instance. The edge layer nodes PE1, PE2 to PEn may include provider edge routers. The core layer nodes P0, P1 to Pn may communicate with each other via the Open Shortest Path First (OSPF) routing protocol. Furthermore, the core layer nodes may communicate with the edge layer nodes via the OSPF routing protocol. The edge layer nodes may communicate with the customer layer nodes via a virtual private network (VPN).
[0063] The automated network topology 400 implements tag identifiers, including node tag identifiers applied to nodes (e.g., P0, P1, Pn, PE1, PE2, PEn, CE1, CE2, CE3, CEn) and interface tag identifiers applied to interfaces between nodes. The tag identifiers include information about the node's role, the number assigned to the node, the protocol implemented by the node, etc. The tag identifiers allow a computing system to automatically scale the automated network topology 400 and update the path list when nodes or interfaces are added, removed, or modified. The tag identifiers can be stored as part of a topology descriptor file. The topology descriptor file defines the physical connections within the network topology 400, and tags are added to the topology descriptor file under the nodes and under each link. The topology descriptor file can be used as input data to an application program interface (API) configured to build a template of the network topology 400 (see, e.g., the configuration template 800 illustrated in FIGS. 8A and 8B).
[0064] Conventional systems do not implement the tag identifiers described herein. These conventional systems are difficult to automate, and therefore topology modifications must most often be manually entered by users. Conventional systems rely on IP addresses and interface names as part of configuration files or configuration templates. In conventional systems, users must manually build configurations using configuration files or configuration templates as a guide. In conventional systems, users are tasked with manually hard-coding neighbor IP addresses in the network configuration and then loading the network configuration into routers. This makes it difficult to update, propagate, and manage the network when changes to the topology configuration or scale occur.
[0065] In contrast, the tag identifiers described herein are implemented to overcome many of the manageability issues associated with traditional systems. In the system described herein, a user can build a descriptor file containing tag identifiers under nodes and interfaces in a network topology. The tag identifiers allow the scale of the network topology to be expanded by adding nodes, reduced by removing nodes, and modified without manually changing configurations within the network or manually propagating updates to each router.
[0066] The method 500 can be partially input manually by a user and can also be automatically executed by one or more processors in a network topology.
[0067] The method 500 includes constructing 502 a network topology file having one or more tag identifiers. Each of the one or more tag identifiers is configured to uniquely identify an applicable node or interface. The network topology descriptor file template illustrated in FIG. 7 includes a node portion, an interface portion, and a link portion. The tag identifiers are added to the network topology file associated with the nodes and interfaces. An API can read the network topology file and generate a template, such as the template illustrated in FIG. 8.
[0068] The method 500 includes building 504 an auto-configuration template for the network topology that includes data pertaining to each node and interface in the network topology, including one or more indicators indicating what type of technology is run by each node, the interface assigned to the technology, (in the case of a BGP network topology) the nearest neighbor address, and the tag identifier to be configured.
[0069] The method 500 includes deciphering 506 the tag identifiers and extracting node, address, and link data for the network topology. The deciphering process 506 is performed automatically by one or more processors in communication with the network topology. The deciphering process 506 is implemented to identify new nodes in the network topology, remove nodes, or modify nodes. In implementation, an API reads the network topology file and deciphers the tag identifiers, nodes, and interfaces. The API can generate a configuration template, such as the template illustrated in FIG. 8. The template is generated using the deciphered data. If nodes need to be added or removed to decipher the tag identifiers in 506, the API performs this step on the topology descriptor file 700 and then builds a configuration template 800 based on the deciphered topology descriptor file 700.
[0070] The method 500 includes creating a network configuration and transmitting the network configuration to applicable routers 508. The process of creating the network configuration 508 is performed automatically by one or more processors in communication with the network topology.
[0071] 6 is a block diagram illustrating an exemplary format 600 for a tag identifier described herein. The exemplary format 600 for a tag identifier includes node-level and interface-level designations. An example of the node level is "TAG-ROLE-NODE_NUMBER-PROTOCOL-V4_V6-INSTANCE-TAG_NAME." An example of the interface level is "TAG-PROTOCOL-V4 / V6-SCALE-INSTANCE-TAG_NAME."
[0072] The format 600 for tag identifiers is modified depending on the implementation or use case. A format 600 for tag identifiers is defined for each protocol and / or feature. The tag identifiers are modified based on the scale of the node to which the tag identifier is associated, such as whether the tag identifier is implemented in a VPN instance. The API reads the format 600 and constructs new data based on the information stored in the format 600.
[0073] The format 600 may follow different parser specifications as needed and is not limited to the format 600 illustrated in Figure 6. However, the format 600 may adhere to the following naming conventions in different implementations:
[0074] Naming convention for services: [TAG-ROLE-NODE_NUMBER-<SERVICE>-SCALE-INSTANCE-TAG_NAME] <service>-SCALE-INSTANCE-TAG_NAME)]. The tag identifier name is then implemented according to the following rules, depending on the protocol and implementation:
[0075] For L3VPN type V4 [TAG-PE-1-VPN_L3_V4-10-VRF1-VPN1(TAG-PE-1-VPN_L3_V4-10-VRF1-VPN1)],
[0076] [TAG-PE-1-VPN_L3_V6-10-VRF1-VPN1] for L3VPN type V6 (6VPE),
[0077] For 6PE [TAG-PE-1-VPN_6PE-10-VPN2(TAG-PE-1-VPN_6PE-10-VPN2)],
[0078] [TAG-PE-1-VPN_VPLS-10-VRF2-VPN3] for VPLS, and
[0079] For EVPN [TAG-PE-1-VPN_EVPN-10-VRF3-VPN4].
[0080] A node tag identifier (e.g., a node-level tag identifier) may include a role name of the node and a node number associated with the node. The node tag identifier may further include an indication of a feature, protocol, and / or technology domain associated with the node. The node tag identifier may further include an indication of whether scaling should be available within the VPN tag. The node tag identifier should be available on the node.
[0081] The naming convention for services mapping to interfaces is: [TAG-SERVICE-SCALE-INSTANCE-TAG_NAME]. The tag identifier names are then implemented according to the following rules, which are protocol and implementation dependent:
[0082] [TAG-VPN_L3_V4-10-VRF1-VPN1] for L3VPN type V4,
[0083] [TAG-VPN_L3_V6-10-VRF-VPN1] for L3VPN type V6, and
[0084] [TAG-VPN_6PE-10-VPN2] for 6PE.
[0085] An interface tag identifier (e.g., an interface-level tag identifier) may include a tag identifier name. The interface tag identifier may further include an indication of the features, protocol, scale, and / or technology domain associated with the interface.
[0086] Naming convention for protocols: [TAG-ROLE-NODE_NUMBER-PROTOCOL-V4_V6-INSTANCE-TAG_NAME]. Tag identifier names are then implemented according to the following rules, depending on the protocol and implementation:
[0087] When the OSPF protocol is implemented in the topology [TAG-P-1-OSPF-V4-default-OSPF1],
[0088] When the IS-IS protocol is implemented in the topology [TAG-P-1-ISIS-V4-default-ISIS1],
[0089] When BGP is implemented in the topology [TAG-P-1-BGP-V4-default-BGP1],
[0090] When BGP is implemented in the topology [TAG-P-1-BGP-V6-default-BGP2], or
[0091] When BGP is implemented in the topology [TAG-P-1-BGP-V4-vrfl-BGP3].
[0092] Various naming conventions can be selected and implemented based on which protocols are implemented on the nodes and interfaces of the network topology. For example, if OSPF must be enabled on a node, then an OSPF tag identifier is attached to the node on its interface.
[0093] The naming convention for protocol to interface mapping is: [TAG-PROTOCOL-V4 / V6-SCALE-INSTANCE-TAG_NAME]. The tag identifier names are then implemented according to the following rules, which are protocol and implementation dependent.
[0094] When the OSPF protocol is implemented in the topology [TAG-OSPF-V4-10-default-OSPF1],
[0095] When the IS-IS protocol is implemented in the topology [TAG-ISIS-V6-10-default-ISIS1],
[0096] When BGP is implemented in the topology [TAG-BGP-V4-10-default-BGP1],
[0097] When BGP is implemented in the topology [TAG-BGP-V6-10-default-BGP2], or
[0098] When BGP is implemented in the topology [TAG-BGP-V4-10-vrfl-BGP3].
[0099] The naming convention for tunnels is: [TAG-ROLE-NODE_NUMBER-TUNNEL_TYPE-TUNNEL_IDENTIFIER_TAG_NAMES]. Tag identifier names are then implemented according to the following rules, depending on the protocol and implementation:
[0100] When the topology implements the RSVP protocol [TAG-PE-1-RSVP-1_EDGE],
[0101] When the topology implements MPLS protocols such as LDP or RSVP on nodes and / or interfaces [TAG-PE-1-LDP-1_TRANSIT],
[0102] When the topology implements a security protocol on one or more nodes [TAG-EDGE-1-IPSEC-1_EDGE], or
[0103] When a topology implements a security protocol on one or more nodes [TAG-EDGE-1-GRE-1_EDGE].
[0104] Naming convention for QOS (Quality of Service): [TAG-ROLE-NODE_NUMBER-QOS_TYPE-FLAG_OPTION-TAG_NAME]. The name of the tag identifier is then implemented according to the following rules depending on the protocol and implementation: Unique tag identifiers are assigned for the different QOS / COS components listed below, including classifier, queue_properties, WRED, and rewrite.
[0105] [TAG-PE-1-CLASSIFIER-DSCP-CLASS1],
[0106] [TAG-PE-1-QUEUE_PROPERTY-BANDWIDTH-QUEUE1],
[0107] [TAG-PE-1-WRED-ALL_QUEUES-WRED1], or
[0108] [TAG-PE-1-REWRITE-DSCP-REWRITE1].
[0109] The parser specification may include constraint checks on naming conventions. In some implementations, protocol, feature, and / or technology domain information should not be allowed on BOND member links. BOND member links do not hold configuration properties such as protocols and features. Required features are enabled directly on the BOND interface, as adding tag identifiers to member links enables protocols and features that should not be allowed.
[0110] In some implementations, the L2 interface should not have a protocol tag identifier or an L3 feature tag identifier. In some cases, it is important to ensure that L3 protocols such as OSPF, ISIS, and BGP are not enabled on the L2 interface. In these cases, the L3 protocol tag identifier cannot be written to the L2 interface.
[0111] In some implementations, tag identifiers within a VPN should not be added on interfaces that are components of the default instance, and vice versa. An interface can be a component that is part of either the default instance or a VPN VRF instance. An interface should not be a component that is part of both the default instance and a VPN VRF instance. In some cases, it is important to ensure that a VPN VRF instance is not exposed to the default instance.
[0112] In some implementations, tag identifiers for L2 networks should not be added on L3 interfaces, and vice versa. In most implementations, tag identifiers on L2 interfaces should not be added on L3 interfaces because L2 features are incompatible with L3 features. Therefore, tag identifiers configured to enable L2 features should not be part of L3 interfaces, and vice versa.
[0113] In some implementations, the IPV6 family type should not be enabled on an IPV4-only interface, and vice versa. If dual stack (IPV4 and IPV6) is supported, then tag identifiers for IPV4 and IPV6 respectively are enabled.
[0114] 7 is a block diagram illustrating the format for an exemplary topology descriptor file 700 containing tag identifiers for the network topology. The topology descriptor file 700 represents a basic network topology including two routers (represented by nodes r1 and r2) connected back-to-back and defined by point-to-point links (p2p1 and p2p2).
[0115] The topology descriptor file 700 represents a network topology including multiple nodes, interfaces, and links. The topology descriptor file 700 includes data pertaining to an r1 node and an r2 node. Each of the r1 node and the r2 node may represent a router in the network topology. Each of the r1 node and the r2 node includes multiple tag identifiers, including a node tag identifier and multiple independent interface tag identifiers.
[0116] The r1 node includes a node tag identifier that is unique to the r1 router. The node tag identifier for the r1 router may be, for example, [TAG-P-1-ISIS-V4-default-ISIS1] or [TAG-P-1-BGP-V4-default-BGP1_BGP2-AS1], depending on the implementation. This is based on the protocols that are enabled. For example, if BGP is enabled, then the BGP tag identifier is implemented. Furthermore, if ISIS is enabled, then the ISIS tag identifier is implemented. The node tag identifier is stored in the topology descriptor file 700.
[0117] The r1 node further includes multiple interface tag identifiers. Connectivity between two nodes is defined by the "link" section of the topology descriptor file 700 and is not handled by tag identifiers. The link section provides information about the source link name and the destination link name. An example of an interface tag identifier for the r1_1 attachment point is [TAG-ISIS-V4-10-default-ISIS1]. The r1 node further includes a third tag identifier associated with a loopback interface on the r1 node. The loopback interface provides the attachment point for the r1 node to communicate with itself. The loopback interface in the topology enables loopback with automatic IP generation. The loopback interface holds tag identifiers that are used to establish BGP between the loopback interfaces of multiple nodes. These tag identifiers on the loopback interfaces are further used to establish RSVP LSPs between the loopback interfaces.
[0118] Similarly, the r2 node includes a node tag identifier and multiple interface tag identifiers. The r2 router includes an r2_1 connection point that communicates with the r1 router via the r1_1 connection point on the r1 router, and an r2_2 connection point that communicates with the r1 router via the r1_2 connection point on the r1 router. The r2 router also includes a loopback interface that allows the r2 router to communicate with itself. r2 includes a node tag identifier associated with the r2 node itself. Like the node tag identifier associated with r1, the node tag identifier associated with r2 includes indicative information such as the node role, the node identifier or number, the protocol implemented by the node, an indication of whether the node is IPv4 or IPv6, an indication of the instance in which the protocol is implemented, the name of the tag identifier, the AS number of the tag identifier, and a cluster tag identifier for generating a cluster identifier. Additionally, the r2 node includes an interface tag identifier associated with each connection point on the r2 router. In particular, the r2 node includes a first interface tag identifier for the r2_1 interface, a second interface tag identifier associated with the r2_2 interface, and a third interface tag identifier associated with the loopback on the r2 node.
[0119] The topology descriptor file 700 further includes indications of the links within the network topology. The exemplary network topology is a basic network topology including two routers in a back-to-back configuration. Thus, there are point-to-point links from the r1 router to the r2 router via the r1_1 and r2_1 connection points. There are also point-to-point links from the r2 router to the r1 router via the r1_2 and r2_2 connection points.
[0120] The topology descriptor file 700 defines tag identifiers at two levels. The two levels include a first tag identifier level associated with nodes, i.e., node tag identifiers. The second level is associated with connection points or interfaces on the nodes, i.e., interface tag identifiers. The topology descriptor file 700 does not include tag identifiers that define links between nodes. The link portion of the topology descriptor file 700 is used to connect two or more interfaces together. Tag identifiers are only enabled under interfaces. Tag identifiers enabled under interfaces are used to enable protocols. In some implementations, it is not necessary to enable tag identifiers under the link portion of the topology descriptor file 700 because the interface tag identifiers handle all that is needed for each interface.
[0121] Each point-to-point link corresponds to one Internet Protocol (IP) segment. Link portions in a network topology can include point-to-point links. A point-to-point connection specifically refers to a wireless or other connection that links only two computers or circuits. A point-to-point connection is compared to a point-to-multipoint or broadcast connection, where information sent by one node can be received by many nodes.
[0122] A broadcast link exists within one IP segment. A tag is used to identify the broadcast link. A link portion in a network topology can contain a broadcast link. A broadcast link connects two or more nodes and supports broadcast transmission, allowing one node to send data that is received by multiple other nodes. A broadcast connection allows data from a single sending node to be received by many receiving nodes.
[0123] Loopback IPs are configured to discover loopbacks for each node in a network topology. These loopback IP addresses are configured to create unique per-IP loopbacks. Interfaces within a network topology can contain loopback addresses. Loopback addresses can be established within an IP domain system to allow devices to send and receive their own data packets. Loopback addresses are useful for various types of analysis, such as testing and debugging, or to allow routers to communicate in a specific way. When a network topology includes a loopback address, data packets can then be sent through the network and routed back to the same device from which they were sent.
[0124] 8A and 8B are block diagrams illustrating an exemplary automatically generated configuration template 800 for a topology that includes tag identifiers. Template 800 is automatically generated by a processor based on topology descriptor file 700 shown in FIG. 7. Tag identifiers are shown in bold. Template 800 includes configuration details for the network topology, including net addresses, indicators indicating which interfaces to enable, indicators indicating AS numbers, router identifiers, etc. If necessary, a user can manually modify the information in the automatically generated template 800 to change the configuration for the network topology.
[0125] A complete copy of the template 800 is stored locally where the API is executed. The API is configured to generate the template 800 based on the topology descriptor file 700. The template 800 is accessed when the topology and / or scale of the network are modified. When the network is modified, the tags in the topology descriptor file 700 are updated, and then the API is re-executed to generate the template 800. The API reads data from the topology descriptor file 700 to build the template 800, and then stores the template 800 locally. The template 800 is used to build the final configuration of the network, and then pushes that configuration to the routers. Every time the topology descriptor file 700 is modified, the template 800 is rebuilt. This ensures that changes to the topology descriptor file 700 are used to create the modified template 800.
[0126] Figure 9 is a block diagram illustrating an IP auto-generation configuration template 900. Template 900 is used to create point-to-point or multi-point links. In the case of multi-point links, there is a switch between the nodes. Connections to the switch are identified using tag identifiers under each link. This is also used to auto-generate IP addresses for interfaces in the network. Links provide information about how the interfaces are connected to each other so that the API can generate IP addresses within the same segment.
[0127] 10 is a block diagram illustrating an automatically generated template 1000 for a network topology. The template 1000 is automatically generated based on an input file, such as the topology descriptor file 700 shown in FIG.
[0128] Autonomous System (AS) numbers group nodes together with a tag identifier. This generates a tag identifier per 2-byte / 4-byte AS number. When a network runs BGP, it needs an AS number. A network can contain a group of nodes under an AS, and the tag identifier is used to generate the appropriate AS number. Nodes are grouped based on the tag identifier, and then an AS number is generated based on the grouping of nodes.
[0129] Cluster identifiers are implemented by examining the "RR" role names presented in the tag identifier. RR roles are grouped based on the cluster tag identifier. A cluster identifier is implemented for each RR based on the cluster tag identifier. A unique RR cluster identifier is generated for each RR cluster. Members of the cluster are grouped based on the cluster tag. Cluster identifiers are generated for the RR roles within the cluster. RR roles are identified using the roles listed in the tag identifier, and then a cluster unique identifier is generated.
[0130] 11 is a block diagram of an exemplary computing device 1100. Computing device 1100 can be used to perform various procedures as described herein. In one embodiment, computing device 1100 can perform the functions of an asynchronous object manager and can execute one or more application programs. Computing device 1100 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.
[0131] The computing device 1100 includes one or more processors 1102, one or more memory devices 1104, one or more interfaces 1106, one or more mass storage devices 1108, one or more input / output devices 1110, and a display device 1130, all connected to a bus 1112. The processor 1102 includes one or more processors or controllers that execute instructions stored on the memory devices 1104 and / or the mass storage device 1108. The processor 1102 may also include various types of computer-readable media, such as cache memory.
[0132] The memory device 1104 includes a variety of computer-readable media, such as volatile memory (e.g., random access memory (RAM) 1114) and / or non-volatile memory (e.g., read-only memory (ROM) 1116). The memory device 1104 may also include re-writable ROM, such as flash memory.
[0133] The mass storage device 1108 includes various computer-readable media such as magnetic tape, magnetic disks, optical disks, solid-state memory (e.g., flash memory), etc. As shown in Figure 11, an exemplary mass storage device is a hard disk drive 1124. The mass storage device 1108 may also include various drives to allow reading from and / or writing to various computer-readable media. The mass storage device 1108 includes removable media 1126 and / or non-removable media.
[0134] Input / output (I / O) devices 1110 include various devices that allow data and / or other information to be input to or retrieved from computing device 1100. I / O devices 1110 include cursor control devices, a keyboard, a keypad, a microphone, a monitor or other display device, speakers, a printer, a network interface card, a modem, etc.
[0135] Display device 1130 includes any type of device capable of displaying information to one or more users of computing device 1100. Display device 1130 may include, for example, a monitor, a display terminal, a video projection device, etc.
[0136] Interface 1106 includes various interfaces that allow computing device 1100 to interact with other systems, devices, or computing environments. Interface 1106 can include any number of different network interfaces 1120, 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 1118 and a peripheral interface 1122. Interface 1106 can also include one or more user interface elements 1118. Additionally, interface 1106 may include one or more peripheral interfaces, such as an interface for a printer, a pointing device (such as a mouse, trackpad, or any suitable user interface currently known or known to those skilled in the art), a keyboard, etc.
[0137] The bus 1112 allows the processor 1102, memory device 1104, interface 1106, mass storage device 1108, and I / O device 1110 to communicate with each other and with other devices or components connected to the bus 1112. The bus 1112 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.
[0138] 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 1100 and be executed by processor 1102. 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. [Example]
[0139] The following examples relate to further embodiments.
[0140] Example 1 is a method. The method includes generating a configuration template for a network topology based on a topology descriptor file, the network topology including a plurality of nodes, the topology descriptor file including a plurality of unique node tag identifiers, each assigned to a node of the plurality of nodes in the network topology. The method includes decoding each of the plurality of unique node tag identifiers based on the plurality of nodes in the network topology. The method includes generating a network configuration for the network topology.
[0141] Example 2 is a method as in example 1, further comprising providing a network configuration for each of a plurality of routers in the network topology.
[0142] Example 3 is a method such as any of Examples 1 and 2, wherein decrypting each of the plurality of unique node tag identifiers includes identifying a modification in the network topology, the modification including one or more of a new node in the network topology, a deleted node in the network topology, or a modified node in the network topology.
[0143] Example 4 is the method as in any of Examples 1-3, wherein decoding each of the plurality of unique node tag identifiers further includes decoding a topology descriptor file to reflect the modifications.
[0144] Example 5 is the method as in any of Examples 1-4, wherein generating the network configuration includes generating based on the decrypted topology descriptor file.
[0145] Example 6 is the method as in any of Examples 1-5, further including automatically generating a modified network configuration for the network topology each time a new modification is made to the network topology.
[0146] Example 7 is the method as in any of Examples 1-6, wherein generating the configuration template includes implementing an application program interface (API) configured to automatically generate the configuration template based on the topology descriptor file.
[0147] Example 8 is a method such as any of Examples 1-7, wherein each of the plurality of unique node tag identifiers is associated with one or more corresponding nodes, and each of the plurality of unique node tag identifiers includes indication information indicating the roles and protocols of the one or more corresponding nodes.
[0148] Example 9 is the method as in any of Examples 1-8, wherein generating the network configuration includes automatically generating Internet Protocol (IP) addresses for interfaces in the network topology based at least in part on the topology descriptor file.
[0149] Example 10 is a method such as any of Examples 1-9, wherein deciphering each of the plurality of unique node tag identifiers includes identifying modifications made to the network topology, and generating a network configuration for the network topology includes automatically modifying an IP address for at least one of the interfaces based on the modifications made to the network topology.
[0150] Example 11 is a method such as any of Examples 1-10, wherein the configuration template includes configuration data for the network topology including one or more of a net address, an indication of which interfaces in the network topology to enable, an indication of an autonomous system (AS) number, or an indication of a router in the network topology.
[0151] Example 12 is the method as in any of examples 1-11, wherein the configuration template includes an AS number, the AS number grouping two or more nodes together with a single unique node tag identifier.
[0152] Example 13 is a method such as any of Examples 1-12, further including determining whether modifications have been made to the topology descriptor file since the network configuration was generated, automatically generating a modified configuration template for the network topology based on the modified topology descriptor file, and automatically regenerating the modified network configuration based on the modified configuration template.
[0153] Example 14 is the method as in any one of Examples 1 to 13, in which the network topology is a full-mesh Border Gateway Protocol (BGP) network.
[0154] Example 15 is the method as in any of Examples 1-14, wherein the network topology is a full-mesh Resource Reservation Protocol (RSVP) Link State Packet (LSP) network.
[0155] Example 16 is the method as in any of Examples 1-15, wherein the network topology is a virtual private network (VPN).
[0156] Example 17 is the method as in any of Examples 1-16, wherein the network topology operates under an Intermediate System-Intermediate System (IS-IS) routing protocol.
[0157] Example 18 is the method as in any of Examples 1-17, wherein each of the plurality of unique node tag identifiers includes one or more of: a role of the corresponding node, a protocol implemented by the corresponding node, a number of the corresponding node in the network topology, a name of the unique node tag identifier, an AS number of the unique tag identifier, or a cluster tag identifier.
[0158] Example 19 is the method of any of Examples 1-18, further including automatically generating a modified configuration template for the network topology each time the topology descriptor file is modified.
[0159] Example 20 is a method such as any of Examples 1 to 19, further including automatically generating a modified network configuration each time the topology descriptor file is modified, and propagating the modified network configuration to all routers in the network topology.
[0160] A twenty-first embodiment is a system including one or more processors configured to execute the method of any one of the first to twentieth embodiments.
[0161] Example 22 is a non-transitory computer-readable storage medium storing instructions for execution by one or more processors, the instructions including the method of any of Examples 1 to 20.
[0162] The foregoing description has been presented for purposes of illustration and description. The present disclosure is not limited to the precise forms set forth herein. Many modifications and variations are possible in light of the above teachings. Moreover, any or all of the foregoing variations can be combined in any manner to form further combinations of the present disclosure.
[0163] 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, separate applications based on this application, and their equivalents, if any.
[0164] 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.
[0165] The various features disclosed herein provide important advantages and advances in the art, and the following claims are illustrative of some of these features.
[0166] In the foregoing detailed description of the present disclosure, for purposes of streamlining the disclosure, various features of the disclosure are grouped together in a single embodiment. 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, inventive aspects may feature fewer than all features of a single foregoing disclosed embodiment.
[0167] The above-described arrangements are merely illustrative of the application of the principles of the present disclosure. Many 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.
[0168] 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 thereto without departing from the principles and concepts described herein.
[0169] 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. Specific 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.
[0170] The foregoing description has been presented for purposes of illustration and description. The present disclosure is not limited to the precise forms set forth herein. Many modifications and variations are possible in light of the above teachings. Moreover, any or all of the foregoing variations can be combined in any manner to form further combinations of the present disclosure.
[0171] 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, separate applications based on this application, and their equivalents, if any. [Explanation of symbols]
[0172] 100 systems 108 Computing Devices 200 Example Network Topology 300 Example Network Topology 400 Automated Network Topology 500 ways 600 Example Format 700 Topology Descriptor File 800 Configuration Template 900 Configuration Templates 1000 Auto-generated Templates 1100 Computing Devices 1112 Bus< / service>
Claims
1. generating a configuration template for a network topology based on a topology descriptor file, the network topology including a plurality of nodes, the topology descriptor file including a plurality of unique node tag identifiers each assigned to one of the plurality of nodes in the network topology; decrypting each of the plurality of unique node tag identifiers based on the plurality of nodes in the network topology; and generating a network configuration for the network topology; A method comprising:
2. 2. The method of claim 1, further comprising providing the network configuration to each of a plurality of routers in the network topology.
3. Deciphering each of the plurality of unique node tag identifiers includes identifying a modification in the network topology, the modification comprising: a new node in the network topology; a removed node in the network topology, or a modified node in the network topology; 2. The method of claim 1, comprising one or more of:
4. 4. The method of claim 3, wherein decoding each of the plurality of unique node tag identifiers further comprises decoding the topology descriptor file to reflect the modifications.
5. 5. The method of claim 4, wherein generating the network configuration comprises generating based on the decrypted topology descriptor file.
6. 6. The method of claim 5, further comprising automatically generating a modified network configuration for the network topology each time a new modification is made to the network topology.
7. 2. The method of claim 1, wherein generating the configuration template comprises implementing an application program interface (API) configured to automatically generate the configuration template based on the topology descriptor file.
8. 2. The method of claim 1, wherein each of the plurality of unique node tag identifiers is associated with one or more corresponding nodes, and each of the plurality of unique node tag identifiers includes indication information indicating the role and protocol of the one or more corresponding nodes.
9. 2. The method of claim 1, wherein generating the network configuration includes automatically generating Internet Protocol (IP) addresses for interfaces in the network topology based at least in part on the topology descriptor file.
10. 10. The method of claim 9, wherein deciphering each of the plurality of unique node tag identifiers includes identifying modifications made to the network topology, and wherein generating the network configuration for the network topology includes automatically modifying the IP address for at least one of the interfaces based on the modifications made to the network topology.
11. 2. The method of claim 1, wherein the configuration template includes configuration data for the network topology including one or more of a net address, an indication of which interfaces in the network topology to enable, an indication of an autonomous system (AS) number, or an indication of a router in the network topology.
12. The method of claim 1 , wherein the configuration template includes an AS number, the AS number grouping two or more nodes together with a single unique node tag identifier.
13. determining whether the topology descriptor file has been modified since the network configuration was created; automatically generating a modified configuration template for the network topology based on the modified topology descriptor file; and automatically regenerating a modified network configuration based on the modified configuration template; 2. The method of claim 1, comprising:
14. 2. The method of claim 1, wherein the network topology is a fully meshed Border Gateway Protocol (BGP) network.
15. 2. The method of claim 1, wherein the network topology is a full-mesh Resource Reservation Protocol (RSVP) Link State Packet (LSP) network.
16. 10. The method of claim 1, wherein the network topology is a virtual private network (VPN).
17. 10. The method of claim 1, wherein the network topology operates under an Intermediate System-to-Intermediate System (IS-IS) routing protocol.
18. 2. The method of claim 1, wherein each of the plurality of unique node tag identifiers includes one or more of: a role of the corresponding node, a protocol implemented by the corresponding node, a number of the corresponding node in the network topology, a name of the unique node tag identifier, an AS number of the unique tag identifier, or a cluster tag identifier.
19. 10. The method of claim 1, further comprising automatically generating a modified configuration template for the network topology each time the topology descriptor file is modified.
20. 2. The method of claim 1, further comprising automatically generating a modified network configuration each time the topology descriptor file is modified and propagating the modified network configuration to all routers in the network topology.