In the networking technology space, there are various types of packets transmitted between source and destination devices. The most common type of packet is a unicast packet, which is a packet addressed to a single device. Other types of packets include broadcast, multicast, and unknown destination address packets. A broadcast packet is packet addressed to ail devices in a network. A multicast packet is a packet addressed to a group of destination devices in the network. And an unknown destination address packet, as the name suggests, is a packet for which a device (e.g., a switch) does not currently know the destination address. As described in greater detail below, broadcast, multicast, and unknown destination address packets are often handled differently than typical unicast packets, as demonstrated for example by current switch meshing approaches.
Example embodiments are described in the following detailed description and in reference to the drawings, in which:
Switch meshing is a switching technology that links together multiple switches to form a meshed switch domain. The meshed switch domain provides multiple switch paths between source and destination devices, and therefore allows different switch paths to be utilized for different packets. For example, an originating device (e.g., a workstation) can utilize a first path traversing switches 1, 2, and 5 in a meshed switch domain to transmit a unicast packet to a destination device (e.g., a server), and subsequently utilize a second path traversing switches 1, 3, 4, and 5 in the meshed switch domain to transmit another unicast packet to the same destination device. The decision to utilize the first path or the second path may be based on various conditions, such as the status of the switches, the status of the paths, and/or the contents of the packet being sent.
With specific respect to broadcast, multicast, and unknown destination address packets in a meshed switch domain, current switch meshing approaches utilize a single path through the meshed switch domain to propagate all broadcast, multicast, and unknown destination address packets to all switches. The single path originates at one switch and traverses every other switch in the meshed switch domain. This effectively enables the switch to distribute incoming broadcast, multicast, and/or unknown destination address packets to every other switch in the meshed switch domain via a single path. A potential problem with the approach, however, is that a segment in the single path may fail, and, as a result, the switch may not be able to transmit the broadcast, multicast, and/or unknown destination address packets until the path is rebuilt. This may create propagation delays and congestion, which may be unacceptable in certain environments. A further potential problem is that a switch may become inundated with a large number of broadcast, multicast, and/or unknown destination address packets in a short period of time. As a result, a bottleneck may form because all of the packets must be output via a single path. This bottleneck may create transmission delays which, as mentioned above, may not be acceptable in certain environments.
Various embodiments described herein address at least the above by providing a novel and previously unforeseen approach to distributing broadcast, multicast, and unknown destination address packets in a mesh switching environment. More precisely, various embodiments assign clients to different redundant, non-looping paths in the meshed switch domain to distribute broadcast, multicast, and/or unknown destination address packets in a balanced and reliable manner. In addition, various embodiments utilize algorithms to distribute broadcast, multicast, and/or unknown destination address packets in a reliable and balanced manner among the various redundant, non-looping paths in the meshed switch domain.
In one example embodiment, a method is provided. The method comprises creating a plurality of redundant, non-looping paths to a plurality of switches, and providing information to the plurality of switches about the plurality of redundant, non-looping paths. The method further comprises assigning each of a plurality of clients to one of the plurality of redundant, non-looping paths, and providing information to the plurality of switches about which of the plurality of redundant, non-looping paths each client of the plurality of clients is assigned to. Then, in response to receiving a packet from a client of the plurality of clients, the method comprises transmitting the packet on one of the plurality of redundant, non-looping paths to one of the plurality of switches based at least in part on which of the plurality of redundant, non-looping paths the client is assigned to.
In a further embodiment, another method is provided. The method comprises storing an algorithm to apply to incoming packets, creating a plurality of redundant, non-looping paths to a plurality of switches, providing information to the plurality of switches about the plurality of redundant, non-looping paths, and providing information to the plurality of switches about a plurality of attached clients. Moreover, the method comprises receiving a packet from one of the plurality of attached clients, applying information associated with the packet to the algorithm to produce a forwarding result, selecting one of the plurality of redundant, non-looping paths based at least in part on the forwarding result, and transmitting the packet on the selected one of the plurality of redundant, non-looping paths.
In still another embodiment, a system is provided. The system comprises a first switch and a second switch. The first switch is configured to store an algorithm to apply to incoming packets, provide information to a second switch about a plurality of redundant, non-looping paths and attached clients, apply information associated with a received packet to the algorithm to produce a forwarding result, select one of the plurality of redundant, non-looping paths based at least in part on the forwarding result, and transmit the packet on the selected one of the plurality of redundant, non-looping paths. The second switch is configured to store the algorithm to apply to incoming packets, store the information about the plurality of redundant, non-looping paths and the attached clients, receive the packet originating at the first switch, and apply information associated with the received packet to the algorithm to produce a second forwarding result, where the second forwarding result may be the same as the first forwarding result.
Each client 130 is generally a computing device configured to communicatively couple to a switch 110. For example, a client 130 may be a laptop, desktop, tablet, server, workstation, storage device, security appliance, wireless access point, wireless controller, smart phone, medical instrument, scientific instrument, Voice-over-IP (VoIP) phone, or the like. The client 130 may utilize wireless and/or wired mediums (e.g., radio frequency (RF), fiber-optic, coaxial, twisted pair, etc.) to communicate with the switch 110. In some implementations, a switch that is not part of the meshed switch domain may be an intermediate between the client and the switch 110. For example, the client 130 may communicate with a non-mesh switch which in turn communicates with a mesh switch 110.
Each switch 110 is generally a computer networking device that is configured to connect other devices via network segments 140, and to forward packets to and from the other devices via network segments 140 and associated ports 120. In addition, each switch 110 is configured to store forwarding tables 150, and to forward incoming packets based at least in part on information within the forwarding tables 150. For example, switch C in
In addition to the above, and in accordance with the embodiment depicted in
With regard to (i) building a plurality of redundant, non-looping paths to the other switches in the meshed switch domain, switch C in
After a switch builds a plurality of redundant, non-looping paths to the other switches in the meshed switch domain, the switch may (ii) distribute information about the paths to the other switches 110 in the meshed switch domain. For example, switch C may provide switches A, B, and D information about paths 1, 2, and 3. Switch C may provide information about the paths via an inform protocol (e.g., the broadcast inform protocol). The information provided may include, for example, a path identifier (e.g., “path 1”), the type of packets which utilize this path (e.g., broadcast, multicast, and unknown destination address packets), an originating switch identifier (e.g., “switch C”), an originating switch MAC address (e.g., 12:34:56:78:ab:cd), an incoming port identifier for the path (e.g., switch A, port 2), and/or an outgoing port identifier (switch A, port 3). It should be noted that there may be multiple outgoing ports in some instances. For example, with respect to path 3, the information provided to switch B may include a path identifier (e.g., “path 3”), the type of packets which utilize this path (e.g., broadcast multicast, and unknown destination address packets), an originating switch identifier (e.g., “switch C”), an originating switch MAC address (e.g., 12:34:56:78:ab:cd), an incoming port identifier for the path (e.g., switch B, port 11), and/or outgoing port identifiers (e.g., switch B, ports 4 and 5). Upon receiving such information, each switch may update internal forwarding tables 150 with this path information. For example, and with reference to
Prior or subsequent to the switch distributing information about the paths to the other switches 110 in the meshed switch domain, the switch may (iii) assign attached clients to the plurality of redundant, non-looping paths and inform the other switches about the assignments. For example, each client attached to switch C may be assigned to one of the plurality of redundant, non-looping paths built by switch C. Referring to
Thereafter, the switches 110 (iv) utilize the built paths to transmit incoming broadcast, multicast, and/or unknown destination address packets from the clients 130 to other switches 110 according to their respective path assignments. For example, a broadcast packet sent from client Y to switch C will be forwarded on path 1 such that it is output from port 1 on switch C to port 2 on switch A, and from port 8 on switch C to port 7 on switch D. Switch A will receive the broadcast packet and, based on the information in its internal forwarding table 150, output the broadcast packet from port 3 on switch A to port 4 on switch B. As a result, the broadcast packet received from client Y will be distributed to each of switches A, B, and D via assigned path 1. More specifically, the broadcast packet from client Y will be distributed to each of switches A, B, and D without traversing the same link more than once and without being received by the same switch more than once (i.e., path 1 is a non-looping path in the meshed switch domain).
The above-discussed approach illustrated in
The process begins at block 210, when a mesh switch creates a plurality of redundant, non-looping paths to the other switches in the meshed switch domain. This process may comprise the switch utilizing a discovery protocol to identify the various switches, ports, and/or segments in the meshed switch domain, and the switch creating a plurality of redundant, non-looping paths based at least in part on this detected information. The switch may store the information about the created paths in an internal memory comprising a forwarding table. Moreover, at block 220, the switch may provide information about the created paths to the other switches in the domain. This may comprise the switch notifying each switch about paths relevant to the respective switch, or, alternatively, notifying all switches about all paths so that each may be aware of the entire forwarding scheme. As discussed above, such information may be distributed via an inform protocol (e.g., the broadcast inform protocol), which provides path information such as a path identifier (e.g., “path 1”), the type of packets which utilize this path (e.g., broadcast, multicast, and unknown destination address packets), an originating switch identifier (e.g., “switch C”), an originating switch MAC address (e.g., 12:34:56:78:ab:cd), an incoming port identifier for the path (e.g., switch A, port 2), and/or outgoing port identifier(s) (e.g., switch A, port 3) to the other switches.
At block 230, the switch assigns clients to paths. More precisely, the switch assigns all attached clients to one of the plurality of paths built in block 210. This process may be conducted initially when the switch joins the meshed switch domain based on clients attached to the switch at that time, as well as in the future when clients attach to the switch. The switch may store information about the client assignments in an internal forwarding table and, at block 240, the switch may provide information about the client assignment to the other switches in the meshed switch domain. The switch may provide the information via an inform protocol, and the information may comprise, for example, a client identifier (e.g., “client X”), a client MAC address (e.g., 12:34:56:78:cd:00), an assigned path (e.g., path 2), and/or the type of packet to distribute via the assigned paths (e.g., broadcast, multicast, and unknown destination address packets). Upon receiving this assignment information, each switch may update internal forwarding tables so that each switch may know how to handle packets associated with each client.
At block 250, the switch may receive a packet from the client. If the packet is a broadcast, multicast, or unknown destination address packet, the switch may refer to its internal forwarding table and, at block 260, transmit the packets based on the path previously assigned to the client in block 230. The other switches may receive the broadcast, multicast, or unknown destination address packets and, similariy, refer to their internal forwarding table and forward if necessary.
Although not depicted in
It should be noted that the above-described processes described with respect to
Similar to the system 100 depicted in
For example, referring to
It should be noted that the above-mentioned forwarding in
The process begins at block 410, where a switch stores an algorithm to apply to incoming broadcast, multicast, and unknown destination address packets. In particular, each switch in the meshed switch domain stores the same algorithm. These algorithms may be determined by a negotiation process between the various switches in the domain, where a common algorithm that each switch can support is selected. Alternatively, the algorithm may be selected by a single switch and the other switches may be instructed to store and utilize the algorithm. Still further, the algorithm may be determined by a control device and each switch may be instructed to store and utilize the algorithm. As mentioned above, the algorithm may be, for example, a hash function that directly or indirectly maps contents from an incoming broadcast, multicast, and unknown destination address packet to one of a plurality of paths. For example, the hash function may map the packet's source/destination MAC addresses, EtherType, IP protocol, and/or source/destination IP addresses directly or indirectly to one of a plurality of paths.
At block 420, the switch may build a plurality of redundant, non-looping paths to the other switches in the meshed switch domain. This process may comprise the switch utilizing a discovery protocol to identify the various switches, ports, and/or segments in the domain, and creating a plurality of redundant, non-looping paths based at least in part on this detected information. The switch may store information about the created paths in an internal memory comprising a forwarding table. Then, at block 430, the switch may provide information about the created paths to the other switches in the domain. This may comprise the switch notifying each switch about paths relevant to the respective switch, or, alternatively, notifying all switches about all paths so that each may be aware of the entire forwarding scheme. As discussed above, such information may be distributed via an inform protocol (e.g., the broadcast inform protocol), which may provide path information such as a path identifier (e.g., “path 1”), the type of packets which utilize this path (e.g., broadcast, multicast, and unknown destination address packets), an originating switch identifier (e.g., “switch C”), an originating switch MAC address (e.g., 12:34:56:78:ab:cd), an incoming port identifier for the path (e.g., switch A, port 2), and/or an outgoing port identifier (switch A, port 3) to the other switches.
At block 440, the switch may provide information about its attached clients to the other switches in the meshed switch domain. For example, a switch may utilize a MAC inform protocol to inform other switches that various clients are located on the switch. In addition, the switch may inform the other switches that broadcast, multicast, and unknown destination address packets with these clients as the source MAC should be forwarded on one of the switch's paths provided at block 430.
Thereafter, at block 450, the switch may receive a packet from an attached client and, at block 460, apply contents of the packet to the saved algorithm. Then, based at least in part on the algorithm result, the switch forwards the packet on one of the plurality of redundant, non-looping paths. In addition, the switch forwards subsequent packets belonging to the same flow on the same path.
The above-mentioned approach enhances load balancing because broadcast, multicast, and/or unknown destination address packets are forwarded dynamically on a flow-by-flow basis. Therefore, if one client is sending a large number of broadcast packets belonging to different flows, the packets may be dynamically distributed among the various paths through the mesh. Moreover, the above-mentioned approach enhances reliability because, if a segment in a broadcast path were to fail, the traffic assigned to that path could be reassigned to one of the other paths, thus reducing dropped traffic and/or latency, as discussed above.
Turning now to
The non-transitory computer-readable medium 510 may be a device that stores machine readable instructions. For example, the non-transitory computer-readable medium 510 may correspond to any typical storage device that stores instructions, codes, data, and/or other information, and may be one or more of a non-volatile memory, a volatile memory, and/or one or more storage devices. Examples of non-volatile memory include, but are not limited to, electronically erasable programmable read only memory (EEPROM) and read only memory (ROM). Examples of volatile memory include, but are not limited to, static random access memory (SRAM), and dynamic random access memory (DRAM). Examples of storage devices include, but are not limited to, hard disk drives, compact disc drives, digital versatile disc drives, optical devices, and flash memory devices.
The processing device 520 may be a device that generally retrieves and executes the instructions stored in the non-transitory computer-readable medium 510. For example, the processing device may be a central processing unit (CPU), processor, microcontroller, or the like. In some embodiments, the processing device 520 may access the non-transitory computer-readable medium 510 over a bus 530. In other embodiments, the non-transitory computer-readable medium 510 may be integrated with the processing device 520.
The communication interface 540 may be a one or more components within the switch 110 that enable the switch 110 to communicate with other devices (e.g., clients and/or other switches). For example, the communication interface 540 may comprise ports, receivers, transmitters, transceivers, PHYs, and the like.
The computer-readable medium 510, processing device 520, and/or communication interface 540 may collaborate with each other and/or with other components (e.g., an application-specific integrated circuit (ASIC)) to conduct various functions described above with respect to
The present disclosure has been shown and described with reference to the foregoing exemplary embodiments. It is to be understood, however, that other forms, details, and embodiments may be made without departing from the spirit and scope of the disclosure that is defined in the following claims.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/023193 | 1/30/2012 | WO | 00 | 7/16/2014 |