1. Technical Field
The present invention is directed to network systems and, more particularly, to a system for configuring switches in a network.
2. Related Art
Various standards have been developed for network developments. One such standard is known as RapidIO. RapidIO is an open-standard, switched fabric that has substantial use in embedded computing environments. Embedded computing systems using RapidIO technology include wireless infrastructures, edge networking systems, storage systems, as well as scientific, military and industrial equipment.
RapidIO networks include a number of processing elements (PEs) that are interconnected by point-to-point links. The PEs may include switch devices and endpoint devices. In a typical RapidIO network topology, the endpoint devices are interconnected with one another through a fabric formed by the switch devices. Endpoint devices communicate with one another using data packets that, among other things, include an identification of the source and destination endpoint devices. The switch devices of the network use the destination data to route the data packet to the proper endpoint device. In a RapidIO system, each switch device of the network includes at least one routing table that is used to control the I/O fabric of the switch so that it relays a received data packet to the proper output port based on the destination endpoint.
On start up, the RapidIO network executes a process to identify and initialize the various components that constitute the network. During the enumeration process, the routing tables of the switches are established. To this end, at least one PE on the network is designated as an enumerating endpoint. The enumerating endpoint queries for the presence of other PEs on the network. When the enumerating endpoint detects a switch on the network, it records the total number of ports on the switch and the port number through which it reached the switch. The remaining ports of the detected switch may then be checked to determine whether other PEs are attached to these remaining ports. If a PE is detected, the enumerating endpoint queries the detected PE to determine whether it is an endpoint device or a switch device.
The next series of steps executed by the enumerating endpoint depends on the result of the PE type query. If the detected PE is a switch device, the enumerating endpoint continues to check all of the ports of the newly detected switch to determine whether other PEs are attached to the ports and, if necessary, executes a further PE type query. This querying of individual switches and switch ports is conducted as a branch type operation where the querying of a branch continues until an endpoint PE is detected. Once the detected PE is an endpoint device, the enumerating endpoint assigns a base device ID to the endpoint device and updates the corresponding routing tables in the switch devices of the network. This process may be executed recursively by the enumerating endpoint for each PE located on the RapidIO network until every port of every switch has been queried.
Pseudocode may be used as an example to implement an enumerating process in a RapidIO network, to assign base device IDs to each endpoint, and to configure the routing tables of the switching devices is discussed and illustrated in RapidIO™ Interconnect Specification Annex 1: Software/System Bring Up Specification, Rev. 1.3, February 2005. The processing represented by this pseudocode, however, has several deficiencies. For example, the process does not describe the enumeration of devices appearing on the network after the initial enumeration is completed. Further, the process does not properly configure routing tables for some network topologies. For example, there are certain situations in which the discovery/enumeration sequence of endpoint devices will result in a network configuration in which two or more endpoint devices are unable to communicate. Finally, the process does not assign base device ID values to switch devices, thereby requiring implementation of complicated maintenance and management operations for the switch devices.
A network is set forth that comprises a plurality of multiple port switches, a plurality of endpoint devices connected to the ports of the plurality of switches, and an enumerating endpoint device that is connected to at least one of the multiple port switches. The enumerating endpoint device configures the routing through multiple port switches based on whether the multiple port switch is on path with respect to a newly discovered processing element or off path with respect to the newly discovered processing element. Each off path switch may be configured so that communication packets destined for the new processing element are routed through the port of the off path switch that the off path switch uses for communications with the enumerating endpoint device. Each on path switch may be configured so that communication packets destined for the newly discovered processing element are routed through the port of the on path switch at which the enumerating endpoint device discovered the new processing element. The network may be implemented as a RapidIO network.
Other systems, methods, features and advantages of the invention will be, or will become, apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the invention, and be protected by the following claims.
The invention can be better understood with reference to the following drawings and description. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. Moreover, in the figures, like referenced numerals designate corresponding parts throughout the different views.
Configuration of the internal switching fabric of the switching devices is placed under the control of enumerating endpoint device 105. enumerating endpoint device 105 executes an enumeration process during initialization of system 100. Device 105 also may execute an enumeration process after initialization to dynamically configure the system 100 in response to the addition and/or removal of an endpoint device.
During the enumeration process, the enumerating endpoint device 105 discovers endpoint devices and configures the switches so that each endpoint device may communicate with every other endpoint device on the system 100. One manner in which device 105 may execute the enumeration process is illustrated generally at 200 of
If a new processing element is found at step 210, then the enumerating endpoint device 105 proceeds to update the switching devices of the system 100. In the exemplary process shown in
The manner in which a switching device is configured by the enumerating endpoint device 105 depends on whether the switching device is an “on path switch” or an “off path switch” with respect to the newly discovered endpoint device that is being enumerated. A switch is considered to be an on path switch when the switch is included in a communication path between the enumerating endpoint device 105 and the newly discovered endpoint device. Otherwise, a switch is considered to be an off path switch.
The distinction between on path switching devices and off path switching devices can be illustrated with reference to system 100 of
The configuration of switching devices that are on path with respect to the newly discovered processing element occurs at step 220 of
The configuration of switching devices that are off path with respect to the newly discovered processing element occurs at step 225 of
The system of
As noted above, switching devices 125 and 130 are on path switches with respect to endpoint device 110 while switching devices 135 and 140 are off path switches with respect to endpoint device 110. The manner in which switching devices 125 and 130 are configured for routing communications for endpoint device 110 differs from the manner in which switching devices 135 and 140 are configured.
In accordance with the process of
Off path switching devices 135 and 140 are configured by device 105 so that communication packets destined for endpoint device 110 are routed through the same port of the switch that is used for routing communications destined for the enumerating endpoint device 105. Consequently, switching device 135 is configured to direct communication packets that are destined for endpoint device 110 to Port 4 of device 135. Similarly, switching device 140 is configured to direct communication packets that are destined for endpoint device 110 to Port 3 of device 140.
Once the switching devices 125, 130, 135 and 140 have been configured in this manner, endpoint device 110 may receive communication packets from any of the other endpoint devices 105, 115, and 120. For example, communications initiated by endpoint device 105 that are destined for device 110 are received at Port 1 of switching device 125. Switching device 125 recognizes the communication packet as a packet that is destined for endpoint device 110 and routes the packet to Port 3 where it is transmitted to Port 1 of switching device 130. Switching device 130 also recognizes that the communication packet is destined for endpoint device 110 and routes the packet to Port 2, where the packet is received by endpoint device 110.
The operation of off path switching devices can be understood by considering the case when endpoint device 115 sends communication packets destined for endpoint device 110. Endpoint device 115 sends its communication packets to Port 3 of switching device 135. As previously noted, switching device 135 has been configured as an off path switching device with respect to endpoint device 110. Consequently, it routes communications destined for device 110 to the same port that the switching device uses to communicate with the enumerating endpoint device 105. In this case, that port may be Port 4 of device 135. The communication packet that is transmitted at Port 4 of device 135 is received at Port 2 of switching device 125 which, in turn, is configured to direct communications destined for endpoint device 110 to Port 3. The communication packets are then received at Port 1 of switching device 130 where they are routed to Port 2 of the same device. Port 2 of switching device 130 is connected to provide the communication packets to endpoint device 110.
The switching device 300 of
A routing table 315 is respectively associated with each bidirectional port. When a communication packet is received at one of the input ports 305, the destination information (i.e., the endpoint device identifier) included in the packet is compared to the information stored in the routing table 315 to determine which output port 310 the switch will use to relay the received communication package. Although switching device 300 uses a routing table for each bidirectional port, other switch architectures may be implemented that, for example, employ a single routing table.
Switch 300 may also include one or more registers 325 that are accessible to the enumerating endpoint device 105. The registers 325 may be used as capability registers that, among other things, identify the device type as well as its processing capabilities. One or more of the registers may also be used to store a base device ID that may be assigned by the enumerating endpoint device 105 during the enumeration process.
If a new processing element is found at step 410, the enumerating endpoint device 105 queries the new processing element to determine its type. In this example, a distinction between the processing element types is made at step 425 based on whether the processing element is a switching device or an endpoint device. The enumerating endpoint device 105 may determine the processing element type, for example, from the capability registers of the processing element. If the newly discovered processing element is a switching device, the enumerating endpoint device 105 may update the routing tables of the newly discovered switch at step 430. The routing tables of the newly discovered switch are updated to establish communication paths from each port of the newly discovered switching device to each endpoint device and switch that has been fully enumerated with a base device ID. If the enumeration process has completed searching all ports of all switching devices for new processing elements, then endpoint device 105 may exit the enumeration process upon completion of step 430.
It the processing element is identified as an endpoint device at step 425, the enumerating endpoint device 105 assigns a base device ID to the endpoint device. Optionally, device 105 may assign a base device ID to the newly discovered switch at step 425 upon completion of step 430. This base device ID is used throughout system 100 for all future communications with the newly discovered processing element. For example, the base device ID may be included in the communication packets to identify the newly discovered processing element as the destination for the packets.
At step 440, the enumerating endpoint device 105 identifies the switching device and switch port that are directly connected to the new processing element. This information is used at step 445 to update the routing tables used by the switching device that is directly connected to the new processing element. Since this initial switching device will be an on path switch, the routing tables of the switching device are updated to direct all communication packets destined for the new processing element through the port identified at step 440. The routing tables for the remaining switching devices that are on path with respect to the new processing element are updated at step 450. Updating of the routing tables may be accomplished by reiteratively ascending the switches of the on path network branch until all on path switches have been updated. As above, the routing tables for each on path switching device are updated so that communication packets destined for the new processing element are routed through the port of the on path switch at which the new processing element was discovered. For example, the routing tables may be updated to store the base device ID for the new processing element, and this base device ID may be used by the switching device as an index to the correct switch port.
The routing tables for switching devices that are off path with respect to the new processing element are updated at step 455. In the illustrated example, the routing tables are updated by reiteratively descending the switches of each off path network branch until all off path switches have been updated. The routing tables for each off path switching device are updated so that communication packets destined for the new processing element are routed through the same port that the off path switching device uses to communicate with the enumerating endpoint device 105. Again, the routing tables may be updated to store the base device ID for the new endpoint device and this base device ID may be used by the switching device as an index to the correct switch port.
The system 100 may execute an initial enumerating process as part of its startup sequence. Subsequent enumerating processes may be executed from time to time on a repeating bases to determine whether endpoint devices have been added to the system 100 and/or removed from the system. For example, detection of new endpoint devices may occur during a polling process in which the enumerating endpoint device 105 searches the network to discover endpoint devices added after completion of the initial enumeration process. Further, the switching devices of the system may be designed to automatically provide an indication to device 105 that a new processing element has been added to one of its ports or that a processing element has been removed from one of its ports.
The foregoing enumeration process is suitable for use in a wide range of network topologies. Although the exemplary enumeration process has been described in connection with a non-looped network topology, the process may also be adapted for use in looped network configurations.
While various embodiments of the invention have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible within the scope of the invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
4887204 | Johnson et al. | Dec 1989 | A |
4897781 | Chang et al. | Jan 1990 | A |
5253342 | Blount et al. | Oct 1993 | A |
5442785 | Roffe et al. | Aug 1995 | A |
5452447 | Nelson et al. | Sep 1995 | A |
5548760 | Healey | Aug 1996 | A |
5566302 | Khalidi et al. | Oct 1996 | A |
5566337 | Szymanski et al. | Oct 1996 | A |
5574903 | Szymanski et al. | Nov 1996 | A |
5577251 | Hamilton et al. | Nov 1996 | A |
5581705 | Passint et al. | Dec 1996 | A |
5590334 | Saulpaugh et al. | Dec 1996 | A |
5734903 | Saulpaugh et al. | Mar 1998 | A |
5787251 | Hamilton et al. | Jul 1998 | A |
5790804 | Osborne | Aug 1998 | A |
5802288 | Ekanadham et al. | Sep 1998 | A |
5991820 | Dean | Nov 1999 | A |
6047323 | Krause | Apr 2000 | A |
6049838 | Miller et al. | Apr 2000 | A |
6157961 | Kessler et al. | Dec 2000 | A |
6321279 | Bonola | Nov 2001 | B1 |
6356904 | Moriyama | Mar 2002 | B1 |
6385659 | Tuel, Jr. | May 2002 | B1 |
6393497 | Arnold et al. | May 2002 | B1 |
6412018 | Tuel, Jr. | Jun 2002 | B1 |
6415332 | Tuel, Jr. | Jul 2002 | B1 |
6434459 | Wong et al. | Aug 2002 | B2 |
6446070 | Arnold et al. | Sep 2002 | B1 |
6466947 | Arnold et al. | Oct 2002 | B2 |
6466996 | Bonola | Oct 2002 | B1 |
6487607 | Wollrath et al. | Nov 2002 | B1 |
6513049 | Moriyama | Jan 2003 | B1 |
6519594 | Li | Feb 2003 | B1 |
6643650 | Slaughter et al. | Nov 2003 | B1 |
6647423 | Regnier et al. | Nov 2003 | B2 |
6697876 | Van der Veen et al. | Feb 2004 | B1 |
6728722 | Shaylor | Apr 2004 | B1 |
6731601 | Krishna et al. | May 2004 | B1 |
6748452 | Elphinstone et al. | Jun 2004 | B1 |
6757903 | Havemose | Jun 2004 | B1 |
6757904 | Woodruff et al. | Jun 2004 | B1 |
6785892 | Miller et al. | Aug 2004 | B1 |
6789077 | Slaughter et al. | Sep 2004 | B1 |
6789126 | Saulpaugh et al. | Sep 2004 | B1 |
6792466 | Saulpaugh et al. | Sep 2004 | B1 |
6850979 | Saulpaugh et al. | Feb 2005 | B1 |
6959264 | Mandal | Oct 2005 | B2 |
6981244 | Kathail et al. | Dec 2005 | B1 |
6985951 | Kubala et al. | Jan 2006 | B2 |
6993746 | Hue | Jan 2006 | B2 |
7058955 | Porkka | Jun 2006 | B2 |
20020069302 | Porkka | Jun 2002 | A1 |
20020129172 | Baskey et al. | Sep 2002 | A1 |
20020147785 | Venkatsubramanian et al. | Oct 2002 | A1 |
20020161848 | Willman et al. | Oct 2002 | A1 |
20030033427 | Brahmaroutu | Feb 2003 | A1 |
20030041096 | Johnson | Feb 2003 | A1 |
20030115366 | Robinson | Jun 2003 | A1 |
20040078543 | Koning et al. | Apr 2004 | A1 |
20040083317 | Dickson et al. | Apr 2004 | A1 |
20040216135 | Heimbeck | Oct 2004 | A1 |
20050044151 | Jiang et al. | Feb 2005 | A1 |
20050149601 | Cox et al. | Jul 2005 | A1 |
20050201272 | Wang et al. | Sep 2005 | A1 |
20050268300 | Lamb et al. | Dec 2005 | A1 |
20060047875 | Aguilar et al. | Mar 2006 | A1 |
20060095724 | Singh | May 2006 | A1 |
20060106995 | Shen | May 2006 | A1 |
20060150200 | Cohen et al. | Jul 2006 | A1 |
20060182137 | Zhou et al. | Aug 2006 | A1 |
20060259671 | Swartzentruber | Nov 2006 | A1 |
20060277284 | Boyd | Dec 2006 | A1 |
20060277285 | Boyd | Dec 2006 | A1 |
Number | Date | Country |
---|---|---|
1 517 575 | Mar 2005 | EP |
WO 00-24205 | Apr 2000 | WO |
Number | Date | Country | |
---|---|---|---|
20070097881 A1 | May 2007 | US |