A computing network can include any number of devices connected by data links. Some computing networks may be specialized to perform specific types of tasks. For example, a Storage Area Network (SAN) is generally configured to enable access to data storage devices such as disk arrays, tape libraries, jukeboxes, etc.
Some implementations are described with respect to the following figures.
In information technology (IT) systems, computing devices may communicate via a network. For example, a sending device may transfer data to a receiving device using one of multiple paths in the network. However, the network path used to transfer data may become congested in an unexpected manner, and could thus suffer loss of data. For example, the amount of data transferred may cause a data queue to become full, thereby resulting in dropped packets.
As described further below with reference to
In some implementations, the management device 110 may be a computing device including processor(s) 115, memory 120, and machine-readable storage 130. The processor(s) 115 can include a microprocessor, a microcontroller, a processor module or subsystem, a programmable integrated circuit, a programmable gate array, multiple processors, a microprocessor including multiple processing cores, or another control or computing device. The memory 120 can be any type of computer memory (e.g., dynamic random access memory (DRAM), static random-access memory (SRAM), etc.).
In some implementations, the machine-readable storage 130 can include non-transitory storage media such as hard drives, flash storage, optical disks, etc. As shown, the machine-readable storage 130 can include a management module 132 and a network topology 136. In some examples, the management module 132 may be implemented in executable instructions stored in the machine-readable storage 130 (e.g., software and/or firmware). However, the management module 132 can be implemented in any suitable manner. For example, some or all of the management module 132 could be hard-coded as circuitry included in the processor(s) 115 and/or the management device 110. In other examples, some or all of the management module 132 could be implemented on a remote computer (not shown), as web services, and so forth. In another example, the management module 132 may be implemented in one or more controllers of the management device 110.
In some implementations, the network topology 136 may be data representing the devices and configuration of the network 150. For example, the network topology 136 may include data identifying characteristics of the network devices 140, of connections to/from computing devices in the network 150 (not shown), and so forth. In some examples, the network topology 136 may store data in one or more organized structures (e.g., relational tables, extensible markup language (XML) files, flat files, and so forth).
In one or more implementations, the management module 132 may detect a congested path across one or more network devices 140. In response to the detection, the management module 132 may use the network topology 136 to determine an alternative path in the network 150. Further, the management module 132 may modify one or more media access control (MAC) tables in the network devices 140 so that packets sent to a destination MAC address are automatically routed via the alternative path instead of the congested path. In this manner, the congestion may be addressed with minimal loss of packets. The functions of the management module 132 are discussed further below with reference to
Referring now to
In some examples, the switches 250, 255, 270 may include various communication ports P1-P8 to send/receive data. Assume that, at a first point in time, server A 240 and server B 260 have established communication via a first data path including ports P1, P2, P4, P5, P6, and P8. Accordingly, in some implementations, the MAC tables 252, 257 (of switch A 250 and switch B 255, respectively) may include entries indicating the forwarding port for MAC addresses of server A 240 and server B 260.
Referring now to
Referring again to
In one or more implementations, in response to detecting congestion in the first data path, the management device 210 may determine an alternative data path using a network topology 236. For example, the management device 210 may determine that switch A 250 is connected to switch B 255 via a stacking cable 220. Further, in some implementations, the management device 210 may directly modify the MAC tables 252, 257 to specify this alternative data path. For example, referring to
In one or more implementations, the management device 210 may determine whether the congestion in the first data path has been cleared. For example, the management device 210 may receive a notification (e.g., via a SNMP message from switch A 250) indicating that the pause condition at congestion of the first data path has been resolved. In another example, the management device 210 may periodically poll or access switch A 250 and/or TOR switch 270 to determine whether port P4 is no longer congested, and thus port P2 is taken out of a pause flood condition. In some implementations, in response to a determination that the congestion in the first data path has cleared, the management device 210 may determine to return to the first data path. For example, the management device 210 may modify the MAC tables 252, 257 to again specify the first data path.
Referring now to
Block 410 may include receiving, by a network management device, a notification of a pause condition detected at a first port of a network switch, where the first port is included in a first path that is transmitting data between a first computing device and a second computing device, and where a first entry of a media access control (MAC) table of the network switch specifies an association between a MAC address of the second computing device and the first port. For example, referring to
Block 420 may include, in response to the notification of the pause condition, determining, by the network management device, a second path between the first computing device and the second computing device that is not being used to transmit data, where the second path includes a second port of the network switch. For example, referring to
Block 430 may include modifying, by the network management device, the first entry of the MAC table to specify an association between the MAC address of the second computing device and the second port. For example, referring to
Referring now to
Instruction 510 may be executed to detect a pause condition at a first port of a network switch, where the first port is included in a first path transmitting data between a first device and a second device, and where a first entry of a media access control (MAC) table of the network switch specifies an association between a MAC address of the second device and the first port.
Instruction 520 may be executed to, in response to a detection of the pause condition, determine a second path between the first device and the second device based on a network topology (e.g., network topology 136 shown in
Referring now to
Instruction 610 may be executed to detect, by a network management device, a pause condition at a first port of a network switch, where the first port is included in a first path that is transmitting data between a first computing device and a second computing device, and where a first entry of a media access control (MAC) table of the network switch specifies an association between a MAC address of the second computing device and the first port. Instruction 620 may be executed to, in response to a detection of the pause condition, determine, by the network management device, a second path between the first computing device and the second computing device that is not being used to transmit data, where the second path includes a second port of the network switch. Instruction 630 may be executed to modify, by the network management device, the first entry of the MAC table to specify an association between the MAC address of the second computing device and the second port.
Note that, while
In accordance with some implementations, examples are provided for automated recovery of network traffic congestion. In some examples, a management device may detect that a first data path between two devices is congested. In response, the management device may use a network topology to determine an alternative data path between the two devices. The management device may directly modify media access control (MAC) table(s) of one or more network switch so that packets sent to the destination MAC address are forwarded to a port on the alternative data path. In this manner, the congestion may be quickly and automatically addressed with minimal loss of packets. Accordingly, some implementations may provide improved automated recovery from network congestion.
Data and instructions are stored in respective storage devices, which are implemented as one or multiple computer-readable or machine-readable storage media. The storage media include different forms of non-transitory memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices.
Note that the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture can refer to any manufactured single component or multiple components. The storage medium or media can be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions can be downloaded over a network for execution.
In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.