Embodiments presented in this disclosure generally relate to configuring and connecting devices in extended networks at network fabric edges. More specifically, embodiments disclosed herein relate to reconfiguring extended network nodes from one network configuration to another network configuration without network connection interruption.
Extended network devices (extended network nodes) in networks are often connected in extended networks using plug-and-play configurations and other network configurations that allow for the extended network nodes to be connected to a larger network. While these network configurations and protocols allow for the extended networks to be established, they are often not suitable for, or the best configuration for, long term establishment of the network. Reconfiguring established extended networks from a first configuration to a second more resilient configuration requires manual review and input into each extended network node and requires taking down portions of the network to allow for reconfiguration.
So that the manner in which the above-recited features of the present disclosure can be understood in detail, a more particular description of the disclosure, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate typical embodiments and are therefore not to be considered limiting; other equally effective embodiments are contemplated.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment may be beneficially used in other embodiments without specific recitation.
A system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions. One general aspect includes a method including: closing a first traffic path in a first network configuration for a plurality of extended network nodes to cause the plurality of extended network nodes to use a first alternate traffic path for data traffic transmission, configuring a first set of ports in the plurality of extended network nodes to define a second traffic path in a second network configuration for the plurality of extended network nodes, closing the first alternate traffic path to cause the plurality of extended network nodes to use the second traffic path in the second network configuration for the data traffic transmission, and configuring a second set of ports in the plurality of extended network nodes in the first network configuration into the second network configuration. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
One example embodiment is a system including: a processor; and a memory including instructions which, when executed on the processor, performs an operation. The operation includes: closing a first traffic path in a first network configuration for a plurality of extended network nodes to cause the plurality of extended network nodes to use a first alternate traffic path for data traffic transmission, configuring a first set of ports in the plurality of extended network nodes to define a second traffic path in a second network configuration for the plurality of extended network nodes, closing the first alternate traffic path to cause the plurality of extended network nodes to use the second traffic path in the second network configuration for the data traffic transmission, and configuring a second set of ports in the plurality of extended network nodes in the first network configuration into the second network configuration.
One example embodiment is a computer program product including a non-transitory computer-readable medium program having program instructions embodied therewith, the program instructions executable by a processor to perform an operation. The operation includes: closing a first traffic path in a first network configuration for a plurality of extended network nodes to cause the plurality of extended network nodes to use a first alternate traffic path for data traffic transmission, configuring a first set of ports in the plurality of extended network nodes to define a second traffic path in a second network configuration for the plurality of extended network nodes, closing the first alternate traffic path to cause the plurality of extended network nodes to use the second traffic path in the second network configuration for the data traffic transmission, and configuring a second set of ports in the plurality of extended network nodes in the first network configuration into the second network configuration.
Large network fabrics, such as campus wide fabrics, large scale datacenters, enterprise fabrics, etc., provide primary connectivity to core network devices directly connected to the network fabric. In some examples, the large network fabrics also include lower cost and replaceable/interchangeable extended devices connected to extended networks as extended network nodes. These extended devices provide peripheral services to the campus fabrics and may include internet-of-things and other types of devices that are easily installed and easily interchanged and/or replaced in the wider network. These extended devices in the networks are often connected to extended networks, or networks that extended the network access from the core network fabric, using plug-and-play configurations and other network configurations that allow for the extended network nodes to be connected (and disconnected) to a network.
While these network configurations and protocols provide mechanisms for the extended networks to be provisioned and established, the initial network configurations are often not suitable for long term execution of the network. Additionally, configuring/provisioning extended networks and reconfiguring extended networks from a first configuration to a second more resilient configuration requires manual review and input into each extended network node. The reconfiguration also requires taking down portions of the extended network to allow for reconfiguration.
Furthermore, larger network fabrics often include a multitude of different types of device and configurations to which the extended networks need to connect. Edge devices the extended networks connect through can often vary in configuration and type. The varying types and complexities involved with each of possible configurations at both the edge devices in the larger network and the various configurations in the extended network creates challenges for the network providers. These challenges include setting up, provisioning, and configuring the extended networks as well as ensuring a continued reliable connection to the devices connected through the extended networks.
The systems and methods described herein establish and configure an extended network to provide reliable connections for prolonged durations by reconfiguring an extended network from a first configuration used for network set-up to a more resilient second network configuration used for longer durations in the network.
For example, as shown in
Referring back to
In some examples, the network 105 is an extended network node network for various nodes including the nodes 120, 130, and 140 (and the root node 110 when the root node is an extended network node and/or device). The network 105 has a topology which may include a ring topology as shown in
In some examples, the extended network nodes include device (node) specific network configurations and PNP configurations installed on the nodes which enable on boarding of a next connected extended network node in ring. For example, the node 130, prior to connection to the network 105, includes network configurations and PNP configurations in order to join the network 105 and connect to the nodes 120 and 140.
In some examples, the network 105 and a corresponding associated network graph representing the network 105 are built and configured by a network controller 102 in communication with the root node 110 and other extended network nodes. In some examples, the network 105 is built based on a combination of extended network node addition events (e.g., when a node is available for connection to the network 105 and indicates that connection to nearby devices, etc.), port information (e.g., available ports and configuration on extended network nodes), and network link information in network inventory tables at the extended network nodes and the network controller 102.
In some examples, due to limited information available at the extended network nodes and the network controller 102, the network controller first builds the network 105 and associated network graph with partial/limited information about the extended network nodes in the network 105 and later completes the remaining links in the network 105 and the associated network graph based on other network connection events that can potentially complete the ring/graph.
In some examples, the extended network nodes 120-140 are on-boarded and connected to the network 105 by the network controller 102 by first configuring the root node 110 with PNP startup configurations and network connection configurations (macro/auto configurations) for onboarding of extended network nodes (e.g., the nodes 120-140). In some examples, the network controller 102 configures the root node 110 so that various components such as associated ports of the root node 110 are in a first network configuration protocol such as Spanning Tree Protocol (STP) root for the extended networks. For example root ports, such as ports 111 and 112, at the root node 110 are initially configured as STP root ports during initial configuration of the root node 110.
During onboarding of the extended network nodes, the nodes 120 and 140 are reloaded and configured to enable the connection of the nodes to the root node 110. In some examples, a combination of configured PNP and macros configurations on the root node 110 configure connecting/connected ports between the root node 110 and extended network nodes (e.g., the nodes 120 and 140) as trunk ports (indicating a trunk link and/or an aggregation of links between the connected nodes). For example, the root ports, ports 111 and 112 along with ports 121 and 142 on the nodes 120 and 140, respectively are configured as trunk ports indicating connection to the root node 110.
Once the connection to the network 105 is completed for extended network nodes 120 and 140. The network controller 102 further configures/updates the nodes 120 and 140 with device specific macro and PNP configurations which enables onboarding of adjacent nodes connected in the network 105 to form a complete network topology such as a ring topology.
As part of provisioning and establishing the network 105, the network controller 102 also builds the associated network graph containing edge/root nodes and extended network nodes. In some examples, the network controller 102 builds the network graph using network and device information available as part of PNP device information transmitted from the extended network nodes in the extended network. For example, the information includes medium access control (MAC) address information of remote ports at the extended network nodes. The network controller 102 compares the MAC address information with available information stored in the inventory tables at the network controller 102. The network controller 102 also creates adjacency information for edge and extended network nodes when the MAC address information is available in the inventory tables at the network controller 102.
In some examples, during the formation and configuration of the network 105 and depending on the location of extended network node in the network 105 (e.g., the position in the ring network) some extended network node information may not be available at the network controller 102 when an extended network node is first added to the network. The missing information may also be added to the network graph as other extended network nodes are added and/or when the information becomes available to the network controller 102.
The node 130 may be added to the network 105 in a similar manner as described above for nodes 120 and 140. For example, when the nodes 120 and 140 are provisioned and configured by the network controller 102, macro/auto-configurations as well as PNP startup configuration for connecting the node 130 to the network 105 are stored on the nodes. When node 130 is added to the network graph, some information for both 120 and 140 may not be available in the associated network graph at the network controller 102. For example, node 130 can be added through device macros configured on node 120 and node 140, even in the event that information for one of the remote nodes (e.g., node 120, node 140) is not available in inventory tables of the network controller 102 at the time of addition of node 120. The network controller 102 updates the network graph using partial/limited information and adds the complete information to the graph for the nodes in the graph when the information becomes available.
At every step of provisioning of the network 105 and building of the associated network graph, the network controller 102 can check for completion of the network 105 topology (e.g., completion of a network ring, etc.). In some examples, the network topology is determined to be completed when the network controller detects a loop in the connected nodes, indicating the completion of the topology (e.g., completion of the ring).
In some examples, after establishing the network 105, the network 105 and the extended network nodes are configured in a first network configuration such as STP. For example, as shown in the
The conversion of the network 105 from a first network configuration to a second network configuration presents several challenges. First, a data traffic channel and/or data link layer (layer 2) traffic for the network 105 may not be separate from a network management channel in the second network configuration. Thus, network management traffic from the network controller 102 sent through the network 105 in the second network configuration can affect the data channel of the network 105. This shared data/management channel can break the reachability and/or connection to the extended network node during configuration or reconfiguration into the second network configuration.
Moreover, network management traffic from the network controller 102 should continue to flow during reconfiguration including when an incomplete ring is formed in the network topology, thus the network 105 cannot be reconfigured all at once. The methods and systems described in
Method 200 begins at block 202 where the network controller closes a first traffic path in a first network configuration for a plurality of extended network nodes to cause the plurality of extended network nodes to use a first alternate traffic path for data traffic transmission. In some examples, closing the first traffic path includes closing a first root port for the first traffic path at a root node, where the plurality of extended network nodes use the first alternate traffic path via a second root port at the root node.
For example, as shown in
The network controller 102 also reconfigures a first port from the first network configuration to the second network configuration at a first extended network node proximate to the root node 110. For example, the network controller 102 reconfigures the port 142 from the first configuration to the second configuration.
For example, at block 204, the network controller 102 configures a first set of ports in the plurality of extended network nodes to define a second traffic path in a second network configuration for the plurality of extended network nodes. In some examples, configuring the first set of ports includes configuring a first port at each of the extended network nodes in the network 105. In some examples, configuring the first set of ports is an iterative process that begins at an extended network node that is first hop proximate and/or connected directly to the root node 110 at the closed first traffic path 301. In a ring topology such as shown in
At block 206 and as shown in
Returning back to block 208, the network controller 102 determines if a next subsequent extended network node is connected to the node 130. In this case, method 200 proceeds back to block 210 where the network controller 102 selects the next subsequent extended network node, node 120, and method 200 proceeds back to block 208 where the network controller reconfigures the port 122 from the first network configuration to the second network configuration. At block 208, the network controller 102 determines if a next subsequent extended network node is connected to the node 120. In this instance, the node 120 is connected to the root node 110 and method 200 proceeds to block 212.
At block 212 and as shown in
In some examples, the network controller 102 closes the second root port, port 111, at the root node 110 for the first alternate traffic path, 202 as shown in
At block 214, the network controller 102 configures a remaining or second set of ports in the plurality of extended network nodes in the first network configuration into the second network configuration. In some examples, the second set includes ports at the root node along with ports at the extended network nodes.
For example, at block 216, the network controller 102 reconfigures the first root port and the second root port from the first network configuration to the second network configuration. For example, in
At block at block 218, the network controller 102 reconfigures a second port from the first network configuration to the second network configuration. For example, in
The network controller 102 also reconfigures, at each next subsequent extended network node of the plurality of extended network nodes, a second port from the first network configuration to the second network configuration. For example, the network controller reconfigures the ports 131 and 121 from the first network configuration to the second network configuration. For example, after, the second port at the network node, node 140, is reconfigured to the second network configuration, method 200 proceeds to block 220, where the network controller 102 determines whether there is a next non-root extended network node in the network topology. For example, in the ring topology of network 105, the network controller 102 determines if a next subsequent extended network node is connected to the node 140. In this example, node 130 is connected to the network node, node 140, and method 200 proceeds to block 222 where the network controller 102 selects the next subsequent extended network node, node 130, and reconfigures the port 131 from the first network configuration to the second network configuration at block 218.
Returning back to block 220, the network controller 102 determines if a next subsequent extended network node is connected to the node 130. In this case, method 200 proceeds back to block 222 where the network controller 102 selects the next subsequent extended network node, node 120, and method 200 proceeds back to block 218 where the network controller reconfigures the port 121 from the first network configuration to the second network configuration. At block 220, the network controller 102 determines if a next subsequent extended network node is connected to the node 120. In this instance, the node 120 is connected to the root node 110 and method 200 proceeds to block 224.
At block 224, the network controller 102 completes the second network configuration for the plurality of extended network nodes. In some examples, the second network configuration is completed by opening the second root port at the root node. For example, in
System memory 410 may include a plurality of program modules 415 for performing various functions related to connecting a user device to a protected network, described herein. The program modules 415 generally include program code that is executable by one or more of the processors 405. As shown, the program modules 415 include a reconfiguration module 411, a PNP module 412, and a network graph module 413. In some examples, the program modules 415 may be distributed and/or cloud based applications/modules. Additionally, storage system 420 may include media for storing network configurations 421 (including PNP configurations, the first network configuration and the second network configuration) and network graphs 422 generated by the network controller 102 and the network graph module 413. The information stored in storage system 420 may be updated and accessed by the program modules 415 to perform the methods and functions described herein.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium is any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present disclosure are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments presented in this disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Embodiments of the invention may be provided to end users through a cloud computing infrastructure. Cloud computing generally refers to the provision of scalable computing resources as a service over a network. More formally, cloud computing may be defined as a computing capability that provides an abstraction between the computing resource and its underlying technical architecture (e.g., servers, storage, networks), enabling convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction. Thus, cloud computing allows a user to access virtual computing resources (e.g., storage, data, applications, and even complete virtualized computing systems) in “the cloud,” without regard for the underlying physical systems (or locations of those systems) used to provide the computing resources.
Typically, cloud computing resources are provided to a user on a pay-per-use basis, where users are charged only for the computing resources actually used (e.g. an amount of storage space consumed by a user or a number of virtualized systems instantiated by the user). A user can access any of the resources that reside in the cloud at any time, and from anywhere across the Internet.
The flowchart and block diagrams in the FIGS. illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments. In this regard, each block in the flowchart or block diagrams may represent a module, segment or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
In view of the foregoing, the scope of the present disclosure is determined by the claims that follow.
This application is a continuation of co-pending U.S. patent application Ser. No. 16/566,769 filed Sep. 10, 2019. The aforementioned related patent application is herein incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
9059901 | Kumar C S | Jun 2015 | B1 |
20130343179 | Madaiah | Dec 2013 | A1 |
20170063617 | Sudharshan | Mar 2017 | A1 |
Number | Date | Country | |
---|---|---|---|
20220158930 A1 | May 2022 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16566769 | Sep 2019 | US |
Child | 17650151 | US |