Responses to loops in networks having a ring topology

An example communications device may include communication ports and processing circuitry. The communications device may, when the communication device and peer network nodes are connected in a ring topology to form an access network, detect that a loop exists between the access network and a customer network. In response to detecting the loop, the communication device may automatically block any uplink to the customer network that the communication device may have, and send a message to all of the peer network nodes instructing them to block any uplinks to the customer network they may have.

BACKGROUND

Network devices, such as routers, switches, hubs, and the like, communicably connect devices to each other. A network may include multiple network devices connected to one another in a particular arrangement to form a communication infrastructure of the network. The manner in which the various network devices and/or other devices are connected to each other may be referred to as the topology of the network.

One such network topology is a ring topology, in which a group of network devices are connected to each other in a ring, such that each of the network devices in the ring shares a first link with the peer network device adjacent to the network device on one side and shares a second link with the peer network device adjacent to the network device on the other side. Thus, there are two paths from any one network device in the ring to any other network device in the ring (a clockwise path and a counterclockwise path), providing redundancy in the event any link fails. Other devices, such as server blades, personal computers, storage arrays, and the like, may be connected to the network devices that form the ring, and may communicate with each other via the ring of network devices.

DETAILED DESCRIPTION

FIG. 1illustrates an example system100. The example system100illustrated inFIG. 1includes example network devices110, an example customer network120, and example customer devices130.

The network devices110are connected to each other in a ring topology, and thus they may be referred to collectively as a ring network. The network devices110are also connected to the customer network120via uplinks112and to the customer devices130. The network devices110may allow the customer network120to access the customer device130or vice-versa, and thus the network devices110may also be referred to collectively as an access network.

The network devices110include ports111that allow the network devices110to connect to other devices. In particular, each of the network devices110includes two ring ports111-L and111-R, which are each connected to a ring port111-L or111-R of the adjacent network devices110. The network devices may also have ports111-D that may be connected to other devices, such as the customer devices130. In certain example configurations in which a processing block150of the network device110(discussed further below) and the ports111of the network device110are housed in separate chassis, a port111-D may be used to connect the processing block150to the portion of the network device110that houses the ports111. The number of ports111-D illustrated inFIG. 1is merely an example, and any number of such ports111-D (including zero) may be included in any given network device110. The network devices110may also have an uplink port111-U, which is connected to the customer network120.

In some example configurations, any one of the ports111of a given network device110could serve as any one of the ring ports111-L and111-R, the uplink port111-U, and the ports111-D. Whether a given port111is a ring port111-L or111-R, an uplink port111-U, or a port111-D may be determined by which device the given port111is connected to. For example, whichever ports111of a given network device110are connected to another one of the network devices110may be identified as the ring ports111-L111-R. As another example, whichever port111is connected to the customer network120may be identified as the uplink port111-U. As another example, whichever ports111are connected to customer devices130may be identified as ports111-D. In other words, prior to the ports111being connected to any other devices, none of the ports111are necessarily reserved to be the ring ports111-L or111-R, the uplink port111-U, or the ports111-D.

In other example configurations, one or more ports111may be reserved specifically to operate as one of the ring ports111-L or111-R, the uplink port111-U, or the ports111-D. For example, each network device110may have one port111that is specifically configured to function as the uplink port111-U.

The links between adjacent network devices110may be referred to as ring links. A broadcast communication on the ring network will be passed from each network device110to its adjacent peers via the ring links, and because all of the network devices110are connected in a circle such a broadcast communication will end up being distributed to every network device110in the ring network. However, if left unchecked this could result in a loop condition in which the message is repeatedly sent around the ring from network device110to network device110without end. Thus, the network devices110are configured to prevent such loops within the ring network by keeping at least one ring link blocked at any given time, which ensures that any user traffic flowing around the ring will eventually meet a dead-end and stop. An example protocol that implements this may be found in Recommendation G.8032 of the International Telecommunication Union Telecommunication Standardization Sector (ITU-T), which may be referred to as an Ethernet Ring Protection Switching (ERPS) protocol. The ring link that is designated to be blocked may be referred to the ring-protection-link (RPL), and one of the network devices110may be designated as the owner of the RPL (referred to as the RPL owner). In the example system100shown inFIG. 1, the RPL is link113and hence link113is blocked. In the example system110, the RPL owner is the network device110-1. The RPL owner is responsible for blocking the RPL under normal operating conditions. If another link in the ring fails at some point, the RPL owner unblocks the RPL until the failed link is repaired.

The customer network120can be any network or network segment that uses the network devices110to access the customer devices130. It is referred to herein as a “customer” network120because it uses the services of the network devices110to access the customer devices130, and thus may be considered as a customer of the network devices110. However, this usage of the word “customer” should not be interpreted to imply that the customer network120necessarily purchases these services, or that an owner and/or operator of the customer network120are necessarily a different entity from the owner and/or operator of the network devices110.

The customer devices130may be any devices that can be connected to the network devices110and that can communicate with the customer network120. For example, the customer devices130may be servers, workstations, personal computers, storage devices (such as hard disk drives), security cameras, sensors, and so on. In the example shown inFIG. 1, two network devices110are connected to each customer device130for redundancy, but this is merely one example configuration and other configurations could be used. The customer devices130are referred to herein as “customer” devices130because the customer network120accesses the customer devices130via the network devices110(or vice versa). However, this usage of the word “customer” should not be interpreted to imply that the customer devices130are owned and/or operated by the same entity as the customer network120, or that the customer devices130are exclusive to the customer network120.

In one example arrangement, the network devices110and the customer devices130may form a storage-area-network (SAN), which provides data storage for the customer network120. In this case, the customer devices130may be storage arrays. In one application of this example, a service provider may own and/or operate the SAN, and may run the customer devices130and provide access thereto (via the network devices110) as a service to the customer network120. In another application of this example, the customer network120and the SAN are merely different segments of a larger network owned and/or operated by the same entity.

The network devices110may be configured to form a customer virtual local-area-network (VLAN), which may include the customer devices130. A ULAN is a broadcast domain of a computer network that is isolated from other broadcast domains of the network at the data link layer, where a broadcast domain is a logical division in which all nodes thereof can reach each other by broadcast or multicast at the data link layer. A VLAN may be formed, for example, by assigning certain ports111of a network device110to the VLAN, such that when the network device110receives a broadcast message for the VLAN, the network device110passes that message on to only those of its ports that are assigned to that VLAN. A VLAN may also be formed, for example, by logically associating specific devices with VLANs and tagging packets with a VLAN identifier, such that the network device110passes received packets on to only those devices that are associated with the VLAN that is indicated by the packet's tag. The customer VLAN may allow the customer network120to access the customer devices130, while keeping other domains of the network logically isolated from the customer network120and/or the customer devices130. Although only one customer VLAN is illustrated inFIG. 1, there may be multiple customer VLANs formed on the network devices110, which may each be connected to a different customer network.

The network devices110may also be configured to form a management VLAN. The management VLAN may include the network devices110themselves, and may also include other management devices (not illustrated), such as management servers. In certain example configurations in which the processing block150of the network device110and the ports111of the network device110are housed in separate chassis, the chassis housing the processing block150of the network device110may also be included within the management VLAN. The management VLAN may allow messages related to managing the network devices110to be communicated between the network devices110while keeping these messages logically isolated from other domains of the network, such as the customer ULAN.

As illustrated inFIG. 1, logical links associated with the customer VLAN (shown in solid lines) and logical links associated with the management VLAN (shown in dashed lines) may share the same physical link in some circumstances. For example, the ring links, which connect the ring port111-L of one network device110to the ring port111-R of another network device110, may carry both customer VLAN and management VLAN traffic. Management VLAN traffic may be given a higher priority than customer ULAN traffic.

The uplink port111-U of each network device110that is connected to the customer network120forms part of an uplink112to the customer network120. InFIG. 1, each of the network devices110-1through110-4has an uplink112to the customer network120, but this need not necessarily be the case. A minimum of one network device110should have an uplink112to the network120. Multiple uplinks to the network120may provide redundancy and allow for load balancing. Generally, the network devices110attempt to keep at most one of the uplinks112unblocked (i.e., able to carry traffic to/from the customer network120) at any given time, with the other uplinks112being blocked. This is done in order to prevent loops occurring between the ring network and the customer network120. When two uplinks112are unblocked at the same time, a loop could occur between the ring network and the customer network120, which can result in diminishing the performance of the network.

The blocking of an uplink112may include, for example, deactivating the associated uplink port111-U, which cuts the connection to the network120entirely. However, the uplink112may also be blocked without deactivating the associated uplink port111-U; for example, the uplink port111-U may be assigned to a VLAN that is isolated from the customer VLAN. This has the effect of preventing any customer traffic from flowing through the uplink port111-U (i.e., blocking the uplink112), but allows the connection to remain active with the customer network120. The blocked uplinks112are indicated inFIG. 1with an X on their link.

Although the network devices110attempt to keep at most one of the uplinks112unblocked at any given time in order to prevent loops between the ring network and the customer network120, the network devices110are not always able to ensure that this is the case. In particular, there are scenarios in which multiple uplinks112might end up being unblocked at the same time despite the efforts of the network devices110. For example, two uplinks112might be activated simultaneously, which could potentially result in both uplinks112remaining unblocked. Thus, the network devices110are configured to detect such loops and to resolve the loops appropriately (discussed further below). These loops between the ring network and the customer network120are different than the loops within the ring network that were described above, and the loops between the ring network and the customer network120are not prevented or corrected by the ring protection protocols such as G.8032.

Hereinafter, references to a loop should be understood to mean a loop between the ring network and the customer network120, rather than a loop within the ring network, unless specifically indicated otherwise.

Each of the network devices110may be configured to detect the existence of a loop between the ring network and the customer network120. Any methods for detecting such loops may be used. For example, the network device110may have a switch driver that is programmed with a field processor rule that identifies any received packets whose source MAC address is the same as a MAC address associated with the network device110. If such a packet is received, this would indicate a loop exists that includes the network device110.

The network devices110may each be configured to take certain actions in response to detecting a loop. In particular, the network device110that detects the loop may automatically block its own uplink112to the customer network120(if it has an uplink112). For example, the uplink port111-U may be disabled or placed into an isolated VLAN. In addition, the network device110that detected the loop may automatically broadcast a message to all of the other network devices110via the management VLAN notifying them that the loop was detected and instructing them to block their uplinks112(if they have one). Upon receiving this notification, each network device110may automatically block its own uplink112. Because the management ULAN may have a higher priority than the customer VLAN, the loop detection message may be ensured to be delivered to the network devices110despite the network congestion that may result from a loop.

The instruction to the network devices110to block their uplinks112may be any message that will automatically cause a recipient network device110to block its uplink112(if it has one), regardless of whether the message may be described as a notification, a command, an instruction, a request, or anything else. Thus, for example, a notification that a loop was detected may also be an instruction to a network device110to block its uplink112if the network device110is configured to automatically block its uplink in response to being notified that a loop exists.

The network device110that is the RPL owner may perform additional operations beyond those described above in response to a loop detection event. In particular, if the RPL owner receives a message that includes the notification that a loop exists, the RPL owner may automatically broadcast another message to all of the network devices110via the management VLAN instructing them to block their uplinks112. This additional message provides a layer of redundancy to ensure that all of the network devices110receive a message instructing them to block their uplink112. This message from the RPL owner may also serve as an acknowledgement to the network device110that detected the loop, acknowledging that the RPL owner received the initial loop-detected message.

Thus, after the various loop-detection messages have been sent (which may include messages from both the network device110that detected the loop and from the RPL owner), every uplink112in the system110should be blocked. This will automatically stop any loop between the ring network and the customer network120.

Because the network device110that detects the loop not only blocks its own uplink112, but also instructs the other network devices110to block their uplinks112, the loop is more assuredly shut down than if the network device110had only shut down its own uplink112, since multiple network devices110do not have to independently detect the loop before all of the uplinks112are blocked.

In addition to the operations described above, the network device110that is the RPL owner may also be responsible for automatically recovering from the loop and the shutdown of traffic that results. In particular, when the RPL owner becomes aware of the existence of a loop (whether by detecting the loop itself, or by being notified by another network device110), the RPL owner may start a recovery timer and wait for a particular amount of time to elapse. If another loop detection message is not received before the designated amount of time elapses, then the RPL owner may automatically select an uplink112to unblock, and send a message via the management VLAN instructing only the network device112that has the selected uplink112to unblock the uplink112. Note that, as used herein, selecting an uplink112may include indirectly selecting the uplink112; for example, selecting a network device110may be an indirect selection of the uplink112that is associated with the selected network device110.

Thus, the system100automatically recovers from the loop condition and resumes normal operations without requiring an administrator to recover the system. Furthermore, because all of the uplinks112are blocked when the RPL owner begins recovery operations, and because only one network device110is instructed by the RPL owner at this time to unblock its uplink112, it can be ensured that after the recovery operation only one uplink112will be unblocked, which should prevent any loops from recurring (at least until some network configuration is changed that might result in a loop).

The uplink112that is selected by the RPL owner for unblocking may be the same uplink112that was previously unblocked, or may be a different uplink112. The RPL owner may know which network devices110have uplinks112by, for example, having each network device110that has an uplink112send a message to the RPL owner notifying the RPL owner that it has a uplink112, and the RPL owner may maintain a table of the network devices110with uplinks112. The RPL owner may select the uplink112(or select a network device110that has an uplink112) based on any criteria. For example, the RPL owner may use information about previous network traffic of the ring network and/or the customer network120to select an uplink112that will result in suitable network performance. For example, if a particular edge device of the customer network120is highly congested, selecting the uplink112that connects to this edge device may result in less than suitable network throughput, while selecting an uplink112that is connecting to an edge device with comparatively little congestion may result in suitable network throughput. As another example, the RPL owner may select the uplink112that is to be unblocked randomly or in a round-robin fashion. As another example, the RPL owner may maintain a list of network devices110that have uplinks112and may select a first network device110registered in the list.

Of course, it is possible that the RPL owner is also the network device110that initially detects the loop, in which case the RPL owner may perform the same operations that any other network device110would perform if they detected the loop, in addition to the operations described above that are specific to the RPL owner.

FIG. 2is a conceptual diagram illustrating an example configuration of one of the network devices110. The example network device110may include a processing block150in addition to the ports111that were already mentioned above. The processing block150may include, for example, processing circuitry151and a memory152. The processing circuitry151may be any circuitry capable of executing machine-readable instructions, such as a central processing unit (CPU), a microprocessor, a microcontroller device, a digital signal processor (DSP), etc. The memory152may be any non-transitory machine readable medium, which may include volatile storage media (e.g., DRAM, SRAM, etc.) and/or non-volatile storage media (e.g., PROM, EPROM, EEPROM, NVRAM, hard drives, optical disks, etc.). The memory152may store machine-readable instructions that, when executed by the processing circuitry151, cause the network device110to perform operations described herein. For example, the memory153may include loop resolution instructions153, which may include instructions to perform any of the operations described herein, such as the operations described inFIGS. 3-6. The memory152may be one example of the non-transitory computer readable medium1000illustrated inFIG. 6, in which case the interface controller instructions153would correspond to the interface controller instructions1010(described below). The processing block150may also include, in addition to or in lieu of the processing circuitry151and memory152, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), an application-specific instruction set processor (ASIP), or the like, configured to perform certain operations described herein. Although only one processing circuitry151and one memory152are illustrated, multiple instances of these may be included as components of the network device110.

In certain examples, the processing block150is not necessarily included within the same chassis or physical device as the ports111. For example, the network device110could be a collection of physically distinct devices or modules that are communicably connected, such as one device that includes the ports111and another device that includes some or all of the processing block150. For example, a network switch may include the ports111and a separate switch controller may include some or all of the processing block150. In such an example, the switch controller may be connected to its corresponding network switch via a communications interface, such as via one of the ports111or via some other dedicated interface. In such an example, certain portions of the processing block150might be included in the switch, such as a switch driver and/or various DSPs, ASICs, FPGAs, or ASIPs, while certain other portions of the processing block150, such as processing circuitry151and a memory152, may be included in the switch controller. In such an example, the various portions of the processing block150, which may be distributed across the switch device and the separate controller device, may work together to control various operations of the network device110.

In other examples, all of the processing block150may be included within the same chassis as the ports111. For example, the network device110may be a network switch that has its own internal processing circuitry151that is sufficient to allow the switch to perform the operations described herein without requiring a distinct switch controller. For example, the network device110may be a network switch that includes its own processing circuitry151and memory152, where the memory152includes instructions to perform operations described herein.

FIG. 3illustrates an example process for resolving a loop. The example process may be performed, for example, by the processing block150of the example network device110. For example, processing circuitry151may execute machine-readable instructions that cause the network device110to perform the operations of the example process.

In block301, a network device110detects that a loop exists between the customer network120and the ring network.

In block302, in response to the detection of block301, the network device110that detected the loop automatically blocks its own uplink112to the customer network120.

In block303, the network device110that detected the loop automatically sends a message to the other network devices110of the ring that instructs them to block their own uplinks.

FIG. 4illustrates another example process for resolving a loop. The example process may be performed, for example, by the processing block150of the example network device110. For example, processing circuitry151may execute machine-readable instructions that cause the network device110to perform the operations of the example process.

In block401, a network device110receives a notification from another network device110that a loop between the ring network and the customer network120was detected.

In block402, in response to the notification of block401, the network device110that received the notification automatically blocks its own uplink112to the customer network120.

In block403, it is determined whether the network device110that received the notification is the RPL owner node. If so (block403=YES), then the process proceeds to block A, which continues inFIG. 5. If not (block403=NO), the process ends.

FIG. 5illustrates a continuation of the example process ofFIG. 4starting with block A. Block A is reached when the network device110that received the notification is the RPL owner node (block403=YES).

In block501, the RPL owner sends a message to all of the network devices110in the ring network instructing them to block their uplinks112to the customer network120.

In block502, the RPL owner starts a recovery timer.

In block503, it is determined whether another loop-detected message is received from one of the network devices110. If so (block503=YES), then the process proceeds to block504and the recovery timer is canceled, another message is sent (block501), and the recovery timer is restarted (block502). If not (block503=NO), then the process proceeds to block505.

In block505, it is determined whether the recovery timer has reached a specific value T (i.e., whether a recovery waiting period has ended). If not (block505=NO), then the process returns to block503, and continues to loop between blocks503and505until either another loop-detected message is received (block503=YES) or the recovery waiting period ends (block505=YES). When block505is eventually answered YES, then the process proceeds to block506.

In block506, the RPL owner selects one of the uplinks112to unblock.

In block507, the RPL owner instructs the network device110that has the selected uplink112to unblock the selected uplink112.

FIG. 6illustrates an example non-transitory computer readable medium1000, The non-transitory computer readable medium1000may include volatile storage media (e.g., DRAM, SRAM, etc.) and/or non-volatile storage media (e.g., PROM, EPROM, EEPROM, NVRAM, hard drives, optical disks, etc.). The non-transitory computer readable medium1000may store machine-readable instructions that are configured to, when executed by processing circuitry (such as the processing circuitry151) of a network device (such as the network device110), cause the network device to perform operations described above, such as the operations described inFIGS. 3-5, The memory152may be one example of the non-transitory computer readable medium1000.

For example, the non-transitory computer readable medium1000may include loop resolution instructions1010. The loop resolution instructions1010may be to implement certain operations described above, such as the operations described inFIGS. 3-5. The loop resolution instructions1010may include, for example, instructions to respond to detecting a loop1011, instructions to respond to receiving a loop-detection notification1012, instructions to respond to receiving a loop-detection notification as an RPL owner1013, and instructions to recover from a loop as an RPL owner1014. The loop resolution instructions1010may include additional instructions (not illustrated) to implement any or all of the operations described herein.

The instructions to respond to detecting a loop1011may include, for example, instructions to detect that a loop exists between an access network in a ring topology and a customer network112, and in response to detecting the loop, automatically: block any uplink112to the customer network120that the network device110may have, and send a message to all of the peer network nodes instructing them to block any uplinks112to the customer network120they may have.

The instructions to respond to receiving a loop-detection notification1012may include, for example, instructions to, in response to receiving a message from a peer network nodes instructing the network device110to block its uplink112, block any uplink112to the customer network120that the network device110may have.

The instructions to respond to receiving a loop-detection notification as an RPL owner1013may include, for example, instructions to, in response to receiving a notification that a loop exists between a ring network and a customer network120, automatically send a message to all network nodes of the ring network instructing them to block any uplinks112they may have to the customer network120.

The instructions to recover from a loop as an RPL owner1014may include, for example, instructions to, if a particular period of time elapses after sending the message without receiving another notification that a loop exists between the ring network and the customer network120, automatically select one of the network nodes that has an uplink112connection to the customer network120and instruct the selected network node to unblock its uplink to the customer network120.

The foregoing describes techniques for automatically responding to loops between a ring network and a customer network, and techniques for automatically recovering from the same. While the above disclosure has been shown and described with reference to the foregoing examples, it should be understood that other forms, details, and implementations may be made without departing from the spirit and scope of this disclosure.