Method and apparatus for rapidly reconfiguring computers networks executing the spanning tree algorithm
Claim Score by NHIP
Abstract
A method that rapidly reconfigures a computer network having a plurality of devices executing the spanning tree algorithm. First, one or more devices are configured and arranged so that one port, providing connectivity to the root, is in the forwarding state and the remaining ports, providing connectivity to the root, are in the blocked state. Next, one or more of the blocked ports are designated as back-up ports. Upon detection of a failure at the active forwarding port, one of the back-up ports immediately transitions from blocked to forwarding, thereby becoming the new active port for the device. Following the transition to a new active port, dummy multicast messages are transmitted, each containing the source address of an entity directly coupled to the affected device or downstream thereof. By examining the dummy multicast messages, other devices in the network learn to use to the new forwarding port of the affected device. Rapid reconfiguration of the network is also provided upon detection of a new or repaired link or device representing a better path toward the root. The method is also compatible with networks supporting virtual local area network (VLAN) designations and allows load balancing among different VLANs.

Term
Term ended
Projected expiry passed 29 November 2019, 6.8 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
2 claims: 1 independent, 1 dependent
- 1Broadest claimClaim Score 30, narrow(NHIP)A method for rapidly re-configuring a computer network having a plurality of access devices and backbone devices each having a unique numeric identifier with a settable portion, each access device including a plurality of ports for coupling the respective access device to at least one of the access and backbone devices and each port having an associated path cost, the method comprising the steps of:decreasing a settable portion of the numeric identifier at a first backbone device below a first default value;for at least one access device, increasing a settable portion of the respective numeric identifier above the first default value and all path costs of the respective ports above a second default value;executing a spanning tree algorithm (i) to elect the first backbone device as a root in response to the step of decreasing and (ii) to place a single port at the at least one access device, providing upstream connectivity to the root, in a forwarding state while further placing all remaining ports of the at least one access device, providing upstream connectivity to the root, in a blocked state in response to the step of increasing, and in response to a failure at the single forwarding port, providing upstream connectivity to the root, of the at least one access device, transitioning a blocked port, providing upstream connectivity to the root, from the blocked state directly to the forwarding state.
86 paragraphs in 5 sections, as filed
FIELD OF THE INVENTION
0001[0001] The present invention relates generally to computer networks, and more specifically, to a method and apparatus for rapidly reconfiguring a computer network following a network change.
BACKGROUND OF THE INVENTION
0002[0002] A computer network typically comprises a plurality of interconnected entities. An entity may consist of any device, such as a computer or end station, that “sources” (i.e., transmits) or “sinks” (i.e., receives) data frames. A common type of computer network is a local area network (“LAN”) which typically refers to a privately owned network within a single building or campus. LANs typically employ a data communication protocol (LAN standard), such as Ethernet, FDDI or token ring, that defines the functions performed by data link and physical layers of a communications architecture (i.e., a protocol stack). In many instances, several LANs may be interconnected by point-to-point links, microwave transceivers, satellite hook-ups, etc. to form a wide area network (“WAN”) or internet that may span an entire country or continent.
0003[0003] One or more intermediate devices are often used to couple LANs together and allow the corresponding entities to exchange information. For example, a switch may be utilized to provide a “switching” function for transferring information, such as data frames, among entities of a computer network. Typically, the switch is a computer and includes a plurality of ports that couple the switch to the other entities. Ports used to couple switches to each other are generally referred to as a trunk ports, whereas ports used to couple a switch to LANs or end stations are generally referred to as local ports. The switching function includes receiving data at a source port from an entity and transferring that data to at least one destination port for receipt by another entity.
0004[0004] Switches typically learn which destination port to use in order to reach a particular entity by noting on which source port the last message originating from that entity was received. This information is then stored by each switch in a block of memory referred to as a filtering database. Thereafter, when a message addressed to a given entity is received on a source port, the switch looks up the entity in its filtering database and identifies the appropriate destination port to utilize in order to reach that entity. If no destination port is identified in the filtering database, the switch floods the message out all ports, except the port on which the message was received. Messages addressed to broadcast or multicast addresses are also flooded.
0005[0005] To prevent the information in the filtering database from becoming stale, each entry is “aged out” by a corresponding timer. Specifically, when an entry is first added to the filtering database, the respective timer is activated. Thereafter, each time the switch receives a subsequent message from this entity on the same source port, it simply resets the timer. Pursuant to standards set forth by the Institute of Electrical and Electronics Engineers (IEEE), the default value of the timer is five minutes. See IEEE Standard 802.1D. Thus, provided the switch receives a message from a particular entity at least every five minutes, the timer will keep being reset and the corresponding entry will not be discarded. If the switch stops receiving messages, the timer will expire and the corresponding entry will be discarded. Once the entry ages out, any messages subsequently received for this entity must be flooded, until the switch receives another message from the entity and thereby learns the correct destination port.
0006[0006] Additionally, most computer networks include redundant communications paths so that a failure of any given link does not isolate any portion of the network. Such networks are typically referred to as meshed or partially meshed networks. The existence of redundant links, however, may cause the formation of circuitous paths or “loops” within the network. Loops are highly undesirable because data frames may traverse the loops indefinitely. Furthermore, as described above, many devices such as switches or bridges replicate (i.e., flood) frames whose destination port is not known or which are directed to broadcast or multicast addresses, resulting in a proliferation of data frames along loops. The resulting traffic effectively overwhelms the network.
0007[0007] Spanning Tree Algorithm
0008[0008] To avoid the formation of loops, devices, such as switches or bridges, execute a spanning tree algorithm. This algorithm effectively “severs” the redundant links within the network. Specifically, switches exchange special messages called bridge protocol data unit (BPDU) frames that allow them to calculate a spanning tree or active topology, which is a subset of the network that is loop-free (i.e., a tree) and yet connects every pair of LANs within the network (i.e., the tree is spanning). Using information contained in the BPDU frames, the switches calculate the tree in accordance with the algorithm and typically elect to sever or block all of the redundant links, leaving a single communications path.
0009[0009] In particular, execution of the spanning tree algorithm causes the switches to elect a single switch, among all the switches within each network, to be the “root” switch. Each switch has a unique numerical identifier (switch ID) and the root is the switch having the lowest switch ID numeric value. In addition, for each LAN coupled to more than one switch, a single “designated switch” is elected that will forward frames from the LAN toward the root. The designated switch is typically the one closest to the root. By establishing designated switches, connectivity to all LANs, where physically possible, is assured.
0010[0010] Each switch within the network also selects one port, known as its “root port” which gives the lowest cost path (e.g., the fewest number of hops, assuming all links have the same cost) from the switch to the root. The root ports and designated switch ports are selected for inclusion in the spanning tree and are placed in a forwarding state so that data frames may be forwarded to and from these ports and thus onto the corresponding paths or links. Ports not included within the spanning are placed in a blocked state. When a port is in the blocked state, data frames will not be forwarded to or received from the port. At the root, all ports are designated ports and are therefore placed in the forwarding state, except for some self-looping ports, if any. A self-looping port is a port coupled to another port at the same switch.
0011[0011] Each BPDU typically includes, in part, the following information: the identifier of the switch assumed to be the root (by the switch transmitting the BPDU), the root path cost to the assumed root and the identifier of the switch transmitting the BPDU. Upon receipt of a BPDU, its contents are examined and compared with similar information (i.e., assumed root ID, lowest root path cost and switch ID) stored by the receiving switch. If the information from the received BPDU is “better” than the stored information, the switch adopts the better information and begins transmitting it (adding the cost associated with the receiving port to the root path cost) through its ports, except for the port on which the “better” information was received. Eventually, all switches will agree on the root and each will be able to identify which of its ports presents the lowest cost path to the root (i.e., its root port).
0012[0012] Depending on the configuration of a given network, the location of the root can significantly affect the distance that messages must travel. For example, many networks include a plurality of switches designated as access switches that provide connectivity to LANs, end stations, etc., and a plurality of backbone switches that, in turn, interconnect the various access switches. If the root is located at an access switch and the principal server utilized by the end stations (i.e., clients) is coupled to a backbone switch, the average distance between end stations and the primary server may be quite high, resulting in inefficient network operation. In addition, the backbone switches may become partitioned as ports between them are blocked. To reduce the average distance and avoid partitioning of the backbone switches, it is desirable to locate the root at a backbone switch. Switch IDs, moreover, include a fixed portion and a settable portion. By substantially decreasing the value of the settable portion of the identifier for a selected switch, a network administrator may “force” the network to choose the selected switch as the root.
0013[0013] To identify which switch should be the designated switch, switches again compare information in received BPDUs with their stored information. If the root path cost stored by a first switch is lower than the root path cost contained in BPDUs received from a second switch, then the first switch is the designated switch. If the root path cost for both the first and second switches is the same, the first switch compares the next informational element in the BPDU, i.e., the switch IDs. If the switch ID of the first switch is less than the ID of the second switch, then the first switch is the designated switch, otherwise the second switch is the designated switch.
0014[0014] In accordance with the spanning tree algorithm, the root switch generates and transmits BPDUs from its ports every hello time which is a settable parameter. Pursuant to IEEE standards, the default hello time is two seconds. In response to receiving BPDUs, switches transmit their own BPDUs. Thus every two seconds BPDUs are propagated through the network. BPDU information, moreover, like entity address information, is subject to being aged out and discarded. Typically, a timer is associated with the BPDU information stored for each port of a switch. The timer is set to a value referred to as the maximum age which is loaded into BPDUs generated by the root switch and copied by the other switches. An example of a default maximum age value is twenty seconds. As BPDUs are received, their contents are examined. If the contents match the information already stored for that port, the timer is reset. Accordingly, by receiving consistent BPDUs every hello time, which is significantly less than the maximum age, the current BPDU information is maintained and the accuracy of the spanning tree or active topology is confirmed.
0015[0015] If a switch stops receiving BPDUs on its root port, indicating a possible link or device failure, the corresponding timer will expire and the information will be discarded. In response, the switch will select a new root port based upon the next best information it has, and begin transmitting BPDUs through its other ports. Similarly, as links or devices are repaired or added, a switch may receive BPDUs containing better information than that stored for a particular port, thereby causing the switch to replace the previously stored information, as described above.
0016[0016] As BPDU information is up-dated and/or timed-out, the spanning tree is recalculated and ports may transition from the blocked state to the forwarding state and vice versa. That is, as a result of new BPDU information, a previously blocked port may learn that it is now the root port or the designated port for a given LAN. Rather than transition directly from the blocked state to the forwarding state, ports transition through two intermediate states: a listening state and a learning state. In the listening state, a port waits for information indicating that it should return to the blocked state. If, by the end of a preset time, no such information is received, the port transitions to the learning state. In the learning state, a port still blocks the receiving and forwarding of frames, but received frames are examined and the corresponding location information is stored, as described above. At the end of a second preset time, the port transitions from the learning state to the forwarding state, thereby allowing frames to be forwarded and received at the port. The time spent in each of the listening and the learning states is referred to as the forwarding delay.
0017[0017] As ports transition between the blocked and forwarding states, entities may appear to move from one port to another. To prevent switches from distributing messages based upon incorrect information, switches quickly age-out and discard the “old” information in their filtering databases. More specifically, upon detection of a change in the spanning tree, switches transmit Topology Change Notification Protocol Data Unit (TCN-PDU) frames toward the root. The format of the TCN-PDU frame is well known (see IEEE 802.1D standard) and, thus, will not be described herein. The TCN-PDU is propagated hop-by-hop until it reaches the root which confirms receipt of the TCN-PDU by setting a topology change flag in all BPDUs subsequently transmitted by the root for a period of time. Other switches, receiving these BPDUs, note that the topology change flag has been set, thereby alerting them to the change in the active topology. In response, switches significantly lower the aging time associated with their filtering databases which, as described above, contain destination information corresponding to the entities within the network. Specifically, switches replace the default aging time of five minutes with the forwarding delay time, which is generally fifteen seconds according to the IEEE standards. Information contained in the filtering databases is thus quickly discarded.
0018[0018] Although the spanning tree algorithm is able to maintain a loop-free tree despite network changes, recalculation of the spanning tree is a time consuming process. For example, as described above, the maximum age of BPDUs (i.e., the length of time that BPDU information is kept) is typically twenty seconds and the forwarding delay time (i.e., the length of time that ports are to remain in each of the listening and learning states) is fifteen seconds. As a result, recalculation of the spanning tree following a network change takes approximately fifty seconds (e.g., twenty seconds for BPDU information to time out, fifteen seconds in the listening state and another fifteen seconds in the learning state).
0019[0019] During this recalculation period, message delivery is often delayed as ports transition between states. That is, ports in the listening and learning states do not forward or receive messages. To the network users, these delays are perceived as service interruptions, which may present significant problems, especially on high-reliable networks. In addition, certain applications, protocols or processes may time-out and shut down during the reconfiguration process, resulting in even greater disruption to the system. Another disadvantage relates to subsequent message distribution. Following the reconfiguration process, messages are flooded across the network until the “new” destination ports are learned and the aging time returned to five minutes. Such flooding of messages often consumes substantial communications and processor resources.
SUMMARY OF THE INVENTION
0020[0020] It is an object of the present invention to provide a method and apparatus for reducing the time necessary to reconfigure the network following a change, such as a link failure or recovery.
0021[0021] It is a further object of the present invention to provide a method and apparatus for defining a series of back-up ports which may immediately begin forwarding data messages following a failure at an active port.
0022[0022] It is another object of the present invention to provide a method and apparatus for defining primary and back-up root devices such that the back-up becomes the new root upon failure of the primary.
0023[0023] Another object of the present invention is to provide a method and apparatus for balancing message traffic across several links of a computer network.
0024[0024] Yet another object of the present invention is to provide a method and apparatus that is compatible with non-enabled devices.
0025[0025] Briefly, the invention relates to a method and apparatus for rapidly reconfiguring a computer network. The network preferably includes a plurality of devices executing the spanning tree algorithm so as to elect a root and place the ports of the devices in either a forwarding or blocked state. In accordance with the method, one or more devices are configured and arranged so that one trunk port is in the forwarding state and other trunk ports are in the blocked state. Additionally, one or more of the blocked ports are designated as back-up ports. Upon detection of a failure at the active forwarding port, the state of one of the back-up ports immediately transitions from blocked to forwarding, thereby becoming the new active port for the device. Advantageously, the selected back-up port does not transition through any intermediary states (such as the listening or learning states) in moving from blocked to forwarding. Accordingly, the time required to transition to a new active port capable of forwarding data messages is substantially reduced.
0026[0026] Upon transition to the new forwarding port, the device begins transmitting “dummy” multicast messages through the new port. These dummy multicast messages carry the source address of each entity that is directly coupled to the device with the new active port or downstream thereof (relative to the root) and are received by other devices in the computer network. Upon receipt, the other devices examine the contents of these messages and note the port on which they were received, which may differ from the port on which messages from these entities were previously received (i.e., before the failure and subsequent replacement of the device's active port). It is through this process that other devices within the network learn to utilize the new forwarding port, rather than the failed port, when directing messages to these entities. Notably, the transition to a new forwarding port is accomplished without other devices having to discard the contents of their filtering databases and, thus, the flooding of messages following a network change is substantially reduced.
0027[0027] In the illustrated embodiment, the method and apparatus manifests, in part, as a series of novel commands that may be entered at the devices. The devices, moreover, may be classified as either access switches or backbone switches. Access switches are preferably coupled to entities (e.g., LANs, end stations, etc.) whereas backbone switches provide the interconnections between access switches. A first command, Become_Root_Primary, is preferably entered at a first backbone switch and significantly lowers the value of the first backbone switch's numeric ID, thereby forcing it to become the root upon execution of the spanning tree algorithm. This command also modifies certain parameters associated with the spanning tree algorithm to further reduce reconfiguration time. A second command, Become_Root_Secondary, preferably entered at a second backbone switch, adjusts the second backbone switch's ID to a value between a default value and the value specified in the Become_Root_Primary command. The Become_Root_Secondary command thus causes the second backbone switch to become the new root upon a failure of the first backbone switch.
0028[0028] A third command, Enable_Uplinkfast, is preferably entered at each access switch. This command substantially increases the values of access switches' IDs, effectively precluding any access switch from becoming the root. This command also increases the path costs associated with each port of the access switches. By raising the path costs, access switches are less likely to become designated switches. As a result, only one trunk port (i.e., the root port) for each access switch is generally placed in the forwarding state. The remaining trunk ports which normally connect the access switch to the corresponding backbone switches are blocked.
0029[0029] The Enable_Uplinkfast command also designates the blocked trunk ports of the corresponding access switch, except self-looping ports, as possible back-up root ports. Upon failure of the current root port, this command additionally configures the access switch to immediately transition one of its blocked trunk ports to the forwarding state and to also begin transmitting dummy multicast messages through the new port, as mentioned above. Upon detection of a new or repaired link or device representing a better path toward the root, this command additionally configures the access switch to transition to the new path without suffering a loss of connectivity. Reconfiguration of the network may thus be accomplished substantially sooner than the time required by the conventional spanning tree algorithm while still avoiding the formation of loops.
BRIEF DESCRIPTION OF THE DRAWINGS
0030[0030] The above and further advantages of the invention may be better understood by referring to the following description in conjunction with the accompanying drawings, in which:
0031[0031]FIG. 1 is a highly schematic diagram of a computer network in accordance with the present invention;
0032[0032]FIG. 2 is a partial block diagram of a device in accordance with a preferred embodiment of the present invention;
0033[0033] FIGS. <b>3</b>A-E are flow diagrams of methods used to rapidly reconfigure the computer network; and
0034[0034]FIG. 4 is a block diagram of a dummy multicast message in accordance with a preferred embodiment of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
0035[0035]FIG. 1 illustrates a partially meshed computer network <b>100</b> in accordance with the present invention. The network <b>100</b> preferably comprises a plurality of local area networks (LANs) <b>102</b>-<b>109</b> each of which is coupled to one or more access switches <b>114</b>-<b>116</b>. Access switches <b>114</b>-<b>116</b> are interconnected with each other through a plurality of backbone switches <b>120</b>-<b>125</b>. Specifically, access switches <b>114</b>-<b>116</b> are generally connected to the backbone switches <b>120</b>-<b>125</b> through a series of links <b>128</b>, such as point-to-point links, although they may be connected via a shared media (e.g., LAN <b>109</b>). The backbone switches <b>120</b>-<b>125</b> are similarly interconnected by links <b>128</b>. Each access switch <b>114</b>-<b>116</b> and backbone switch <b>120</b>-<b>125</b>, moreover, includes a plurality of ports which, if coupled to a LAN <b>102</b>-<b>109</b>, are referred to as local ports <b>118</b> and if coupled to links <b>128</b> are referred to as trunk ports <b>119</b>.
0036[0036] Network <b>100</b> further includes a plurality of servers <b>112</b><i>a</i>-<b>112</b><i>c</i>, such as file servers, print servers, etc., each coupled to the local port <b>118</b> of one or more access or backbone switches. Each LAN <b>102</b>-<b>109</b> includes one or more hosts or end stations (not shown) that may source or sink data frames to one another or to the servers <b>112</b><i>a</i>-<b>112</b><i>c </i>over the network <b>100</b>. One or more routers <b>130</b> and <b>131</b> may also be provided to add functionality to network <b>100</b>. Preferably, each router <b>130</b>, <b>131</b> is coupled to a backbone switch, such as backbone switches <b>120</b> and <b>121</b>, by a corresponding link <b>128</b>.
0037[0037] Links <b>128</b> represent communications paths between various components of the network <b>100</b>, that carry messages, such as data frames, between switches <b>114</b>-<b>116</b>, <b>120</b>-<b>125</b> and routers <b>130</b>, <b>131</b>. In addition, each switch and router, such as access switch <b>114</b>, identifies its local and trunk ports <b>118</b> and <b>119</b> by numbers (e.g., port number one, port number two, port number three, etc.) Switches <b>114</b>-<b>116</b>, <b>120</b>-<b>125</b> and routers <b>130</b>, <b>131</b> are thus able to associate specific ports with the LANs, switches, routers, servers, etc. that are coupled thereto or otherwise accessible through a given port.
0038[0038] It should be understood that the network <b>100</b> of FIG. 1 is meant for illustrative purposes only and that the present invention will operate with other network designs having possibly far more complex topologies. For example, one or more distribution switches may be interleaved between the backbone switches and the access switches, two access switches may be directly connected, etc. It will also be understood to those skilled in the art that there is no distinction from the spanning tree point of view between local and trunk ports or point-to-point links and shared links (e.g., LANs). The distinction between local and trunk ports is made for purposes of explanation only.
0039[0039] As shown, network <b>100</b> includes redundant communication paths interconnecting the access and backbone switches <b>114</b>-<b>116</b> and <b>120</b>-<b>125</b>. The existence of such redundant links prevents portions of the network <b>100</b> from becoming isolated should any constituent link or device fail. Such redundancy, however, also results in the creation of loops, which, as described above, are highly undesirable. To avoid the creation of loops, these switches execute the spanning tree algorithm, as described herein.
0040[0040]FIG. 2 is a partial block diagram of a switch <b>214</b> in accordance with the present invention which corresponds to access switch <b>114</b> of FIG. 1. A switch suitable for use with the present invention is described in commonly owned U.S. patent application Ser. No. 08/623,142 filed Mar. 28, 1996 and entitled INTERSWITCH LINK MECHANISM FOR CONNECTING HIGH-PERFORMANCE NETWORK SWITCHES which is hereby incorporated by reference in its entirety. Switch <b>214</b> includes a plurality of ports <b>230</b> each of which is preferably identified by a number (e.g., port numbers one through eight). Frame transmission and reception objects (not shown) may be associated with each port <b>230</b> such that frames received at a given port <b>230</b> may be captured, and frames to be transmitted by switch <b>214</b> may be delivered to a given port. Frame reception and transmission objects are preferably message storage structures, such as queues.
0041[0041] Switch <b>214</b> further includes a protocol entity <b>232</b>. The protocol entity <b>232</b> preferably includes a rapid reconfiguration entity <b>234</b>, at least one spanning tree state machine engine <b>236</b> and a forwarding entity <b>238</b>. The rapid reconfiguration entity <b>234</b> is coupled to a reconfiguration memory <b>240</b>. Memory <b>240</b> includes a plurality of cells <b>240</b><i>a</i>-<b>240</b><i>e </i>for storing the unique numeric switch identifier (ID) corresponding to switch <b>214</b>, the assigned path cost corresponding to each port <b>230</b> and the values corresponding to the hello time, maximum age and forward delay parameters of the spanning tree algorithm. As set forth above, a switch ID includes a fixed portion and a settable portion.
0042[0042] Each spanning tree engine <b>236</b> is similarly coupled to a spanning tree table <b>242</b> having a plurality of rows and columns. Each row or entry <b>243</b> of table <b>242</b> is preferably associated with a port <b>230</b> of the switch <b>214</b>. The columns or cells, moreover, include a root ID cell <b>242</b><i>a</i>, a root path cost cell <b>242</b><i>b </i>and a corresponding timer cell <b>242</b><i>c</i>. It should be understood that table <b>242</b> may include additional cells.
0043[0043] The forwarding entity <b>238</b> is coupled to a filtering database <b>244</b> configured to store address information corresponding to the entities of network <b>100</b>. Specifically, filtering database <b>244</b> has a plurality of columns or cells, including a destination address cell, a destination port cell and a corresponding timer cell. Each row or entry in the filtering database <b>244</b> preferably corresponds to a particular entity.
0044[0044] It will be understood to those skilled in the art that memory <b>240</b> and tables <b>242</b> and <b>244</b> may be implemented as content addressable memory (CAM) devices and that entities <b>234</b> and <b>238</b> and state machine engine <b>236</b> may comprise registers and combinational logic configured and arranged to produce sequential logic circuits. In the illustrated embodiment, entities <b>234</b> and <b>238</b> and state machine engine <b>236</b> preferably comprise programmable processing elements containing software programs pertaining to the methods described herein and executable by the processing elements. Other computer readable media may also be used to store and execute the program instructions.
0045[0045] The method and apparatus of the present invention is preferably implemented, in part, through the operation of a plurality of novel commands entered at the various switches of the network <b>100</b> (FIG. 1), typically by a user or network administrator.
0046[0046]FIG. 3A is a flow diagram of a Become_Root_Primary command <b>300</b> that is preferably entered at a first backbone switch (e.g., backbone switch <b>120</b>). Selection of the particular backbone switch as the primary root may depend on where the most utilized server, such as server <b>112</b><i>b</i>, is located. That is, to reduce the average distance that messages must travel, the Become_Root_Primary command <b>300</b> is preferably entered at the backbone switch coupled to the most heavily utilized server, as shown at block <b>310</b>. In response to the Become_Root_Primary command <b>300</b>, the rapid reconfiguration entity <b>234</b> of the selected backbone switch <b>120</b>, at block <b>312</b>, modifies the settable portion of the corresponding switch ID stored at reconfiguration memory <b>240</b>. In particular, the value of the switch ID is significantly lowered to ensure that the selected backbone switch <b>120</b> will be elected the root switch upon execution of the spanning tree algorithm. For example, the switch ID may be reduced from the default value of “32768” specified by the IEEE standards to “8192”. In addition, the Become_Root_Primary command, at block <b>314</b>, also modifies the hello time, maximum age and forward delay parameters of the spanning tree algorithm as a function of network diameter as set forth in Table 1. Network diameter is defined by the IEEE 802.1D standard as the maximum number of devices between any two points of attachment of end stations and is an argument of the Become_Root_Primary command <b>300</b>. <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="7"><colspec colname="1" colwidth="70PT" align="left" /><colspec colname="2" colwidth="14PT" align="center" /><colspec colname="3" colwidth="28PT" align="center" /><colspec colname="4" colwidth="14PT" align="center" /><colspec colname="5" colwidth="35PT" align="center" /><colspec colname="6" colwidth="21PT" align="center" /><colspec colname="7" colwidth="35PT" align="center" /><thead><row><entry namest="1" nameend="7" align="center">TABLE 1</entry></row><row><entry /></row><row><entry namest="1" nameend="7" align="center" rowsep="1" /></row><row><entry>Network Diameter</entry><entry>2</entry><entry>3</entry><entry>4</entry><entry>5</entry><entry>6</entry><entry>7</entry></row><row><entry namest="1" nameend="7" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>hello time</entry><entry>1.0</entry><entry>1.0</entry><entry>1.0</entry><entry> 1.0</entry><entry> 1.0</entry><entry> 1.0</entry></row><row><entry>maximum age</entry><entry>6.0</entry><entry>7.0</entry><entry>8.5</entry><entry>10.0</entry><entry>11.5</entry><entry>13.0</entry></row><row><entry>forward delay</entry><entry>4.0</entry><entry>4.8</entry><entry>5.8</entry><entry> 6.8</entry><entry> 7.8</entry><entry> 8.8</entry></row><row><entry namest="1" nameend="7" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0047[0047] These values are then stored at memory <b>240</b> by reconfiguration entity <b>234</b>. To implement the Become_Root_Primary command <b>300</b>, entity <b>234</b> may maintain the information of Table 1 in memory, such as memory <b>240</b>.
0048[0048] In case the first backbone switch <b>120</b> should ever fail, a second command is preferably entered to establish a back-up root. Referring to the flow diagram of FIG. 3B, a Become_Root_Secondary command <b>320</b> is preferably entered at a second backbone switch (e.g., backbone switch <b>121</b>), as shown at block <b>322</b>. The Become_Root_Secondary command <b>320</b> similarly modifies the settable portion of the switch ID of the second backbone switch <b>121</b> that is stored at the respective reconfiguration memory <b>240</b>, as shown by block <b>324</b>. Specifically, the value of the switch ID is modified so as to be between the default IEEE 802.1D value (i.e., “32768”) and the value specified by the Become_Root_Primary command <b>300</b> (i.e., “8192”). For example, the switch ID may be set to “16384”. The Become_Root_Secondary command <b>320</b> also utilizes network diameter as an argument and modifies the hello time, maximum age and forward delay parameters stored at the respective memory <b>240</b> of switch <b>121</b> in accordance with Table 1, as reflected by block <b>326</b>.
0049[0049] It should be understood that other similar commands may be entered to designate third and fourth in line root switches.
0050[0050] Turning next to FIG. 3C, an Enable_Uplinkfast command <b>330</b> is preferably entered at each access switch <b>114</b>-<b>116</b> within the network <b>100</b>, as shown at block <b>332</b>. This command <b>330</b>, at block <b>334</b>, preferably increases the respective switch ID of each of the access switches <b>114</b>-<b>116</b> to preclude any of the access switches <b>114</b>-<b>116</b> from becoming the root. Specifically, the Enable_Uplinkfast command <b>330</b> preferably increases the settable portion of the switch ID stored at respective memory <b>240</b> from the IEEE default value of “32768” to “49152”. At block <b>336</b>, the Enable_Uplinkfast command <b>330</b> also significantly increases the path costs of all the ports of the respective access switch. For example, the path costs stored at memory <b>240</b> for each port are preferably increased from the IEEE default value of “10” (for 100 Mbps ports) to “3000”. The Enable_Uplinkfast command <b>330</b>, at block <b>338</b>, also configures rapid reconfiguration entity <b>234</b> to rapidly transition a blocked port to the forwarding state and to generate and transmit dummy multicast messages, as described below.
0051[0051] Upon start-up, the ports <b>230</b> of each switch, such as switch <b>214</b>, are initially placed in the blocked state and spanning tree engine <b>236</b> begins formulating and transmitting bridge protocol data unit (BPDU) frames from each port <b>230</b>. Presumably, switch <b>214</b> has yet to receive any BPDUs; switch <b>214</b> thus assumes that it is the root and transmits BPDUs from every port <b>230</b> containing its switch ID as the root ID and a root path cost of zero. Spanning tree engine <b>236</b> obtains the switch ID and a maximum age value for loading in BPDUs from entity <b>234</b> and copies the information contained in transmitted BPDUs into its associated spanning tree table <b>242</b>.
0052[0052] As BPDUs are received at the ports <b>230</b> of switch <b>214</b>, they are passed to the spanning tree engine <b>236</b> and processed. Specifically, engine <b>236</b> compares information contained in the received BPDUs with the information stored in table <b>242</b>. If the information from the received BPDU is better (e.g., a presumed root with a lower ID) than the stored information, engine <b>236</b> enters the received information into table <b>242</b>. Engine <b>236</b> also sets the corresponding timer according to the maximum age value in the received BPDU and stops forwarding BPDUs through this port <b>230</b>. Execution of the spanning tree algorithm will converge with the election of a single root by all of the switches in the network <b>100</b>.
0053[0053] As discussed above, location of the root may affect the average distance (i.e., the average number of hops) a message travels and/or cause undesirable partitioning of backbone switches. The conventional spanning tree algorithm, however, simply selects the switch having the lowest ID to become the root, regardless of where in the network <b>100</b> this switch is located. As a result, an access switch is often elected to be the root, causing messages to travel a much higher average distance than if a backbone switch had been elected the root for many network configurations, such as partially meshed distributed networks.
0054[0054] Since the numeric switch ID of the first backbone switch <b>120</b> is lowered to a value below that of all other switches in the network <b>100</b> (through the Become_Root_Primary command <b>300</b>), first backbone switch <b>120</b> is elected the root switch. Thus, all ports of the first backbone switch <b>120</b> are placed in the forwarding state. In addition, since the maximum age and forwarding delay parameters are copied by each switch from BPDUs originating from the root through operation of the spanning tree algorithm, the values selected from the Become_Root_Primary command <b>300</b> (see Table 1) are effectively propagated to all switches <b>114</b>-<b>116</b> and <b>121</b>-<b>125</b> within network <b>100</b> (FIG. 1).
0055[0055] For all LANs coupled to both an access switch and a backbone switch, operation of the above commands <b>300</b>, <b>320</b>, <b>330</b> also results in the respective backbone switch becoming the designated switch, rather than the access switch. In particular, by significantly increasing the path costs (e.g., from “10”, to “3000”) for all ports of the access switches <b>114</b>-<b>116</b>, the Enable_Uplinkfast command <b>330</b> essentially prevents access switches from becoming designated switches on shared media or trunk links when the second switch is a backbone switch. With reference to LAN <b>109</b> which is coupled to both access switch <b>116</b> and backbone switch <b>125</b>, for example, only one switch port connected to LAN <b>109</b> will be deemed the designated switch port by the spanning tree algorithm. Determination of the designated switch, moreover, depends in part on the path costs at the relevant ports of the two switches coupled to LAN <b>109</b>. Since the path costs at access switch <b>116</b> have been increased to “3000”, whereas the path costs at backbone switch <b>125</b> remain at the default value of “100” for ports operating at a data rate of 10 Mb/s or “10” for ports operating at 100 Mb/s, the port at backbone switch <b>125</b> coupled to LAN <b>109</b> will be deemed the designated switch port and placed in the forwarding state. Furthermore, unless the port at access switch <b>116</b> coupled to LAN <b>109</b> represents the root port for switch <b>116</b>, it will be placed in the blocked state.
0056[0056] Significantly, for each access switch <b>114</b>-<b>116</b>, only one port (local or trunk) that represents a path from the access switch to the root (i.e., provides connectivity to the root through links, shared media, switches, etc.) will be forwarding. All other ports (local or trunk) that represent paths from the access switch to the root will be blocked. In other words, only one port at each access switch <b>114</b>-<b>116</b> that provides connectivity to the root will be forwarding.
0057[0057] As messages (i.e., data frames) are subsequently received at the ports <b>230</b>, they are passed to forwarding entity <b>238</b>, assuming the respective port <b>230</b> is in the forwarding state. The forwarding entity <b>238</b> first examines the destination address of the message and performs a look up function at the filtering database <b>244</b>. Assuming an entry is found and a corresponding destination port (e.g., port number four) is identified, the message is switched out onto this port, assuming this port is in the forwarding state. If no entry is found in the filtering database <b>244</b>, the message is flooded out all ports <b>230</b> in the forwarding state, except the port <b>230</b> on which the message was received. The forwarding entity <b>238</b> next examines the source address of the message and performs another look-up at filtering database <b>244</b>. If no entry is found for the source address, a new entry is formed and the source port (e.g., port number eight) on which the message was received is entered as the destination port in the corresponding port column. In addition, a timer associated with this entry is set to the aging time with which forwarding entity <b>238</b> is configured (e.g., five minutes).
0058[0058] Should a change occur in the network <b>100</b>, such as a failure disabling the link coupled to a root port of an access switch, the affected access switch will be able to rapidly reconfigure the network <b>100</b> without the significant interruption or message flooding experienced through conventional operation of the spanning tree algorithm. With reference to switch <b>114</b>, for example, assume that port number three, which is coupled to backbone switch <b>122</b>, is the root port for switch <b>114</b> and thus in the forwarding state. Pursuant to the Enable_Uplinkfast command <b>330</b>, port numbers two and four, which also connect switch <b>114</b> to the backbone switches (i.e., backbone switches <b>122</b> and <b>124</b>), are in the blocked state. If the link <b>128</b> coupled to the port number three at switch <b>114</b> fails, either one of these two other ports (i.e., port numbers two or four) will immediately transition to the forwarding state and begin receiving and sending messages.
0059[0059] First, the time taken to detect such a change is substantially reduced by operation of the novel commands of the present invention. In particular, as shown in FIG. 3A and as provided in Table 1, the Become_Root_Primary command <b>300</b> at block <b>314</b> causes the maximum age value to be significantly lowered from the default value of twenty seconds. For example, if the network diameter is five, the maximum age is reduced to ten seconds. As described above, this value is loaded into BPDUs originating at the root (i.e., backbone switch <b>120</b>), causing it to be propagated to and stored by each switch at its respective reconfiguration memory <b>240</b>. Accordingly, access switches <b>114</b>-<b>116</b> and backbone switches <b>120</b>-<b>125</b> detect failures much sooner since the corresponding BPDU information times out sooner. To prevent BPDU information from being inadvertently discarded due to the reduction in maximum age values, the hello time is also reduced to one second. This increases the frequency with which the root transmits BPDUs.
0060[0060] Rather than wait for the corresponding BPDU information to time out, a link failure may alternatively be detected by a link integrity test which operates at the physical layer of the protocol stack. The link integrity test typically exchanges test messages across the respective link <b>128</b> at a relatively high rate (e.g., every ten milliseconds). Thus, the link integrity test is able to detect a failure much sooner than the spanning tree algorithm, which simply waits for the respective BPDU information to time out and be discarded.
0061[0061]FIG. 3D is a flow diagram of a rapid reconfiguration process <b>340</b> following a link failure according to the present invention. In response to the detection of a failure at port number three (the root port), indicated at block <b>342</b>, rapid reconfiguration entity <b>234</b> at switch <b>214</b> selects a backup port to become the new root port, as shown at box <b>344</b>. Rapid reconfiguration entity <b>234</b> may use the spanning tree algorithm to select the next root port. That is, the blocked trunk port <b>119</b> (e.g., port number four) representing the next lowest root path cost (after the now failed root port) may be selected as the new forwarding port by entity <b>234</b>. Self-looping ports, such as port numbers five and six at switch <b>114</b> are not considered possible back-up ports, even though at least one of these ports will be in the blocked state, since these ports will not provide connectivity to the root.
0062[0062] It should be understood that other methods may be used to select the new root port. For example, the blocked trunk port having the lowest port number (e.g., port number two) may be selected.
0063[0063] Rapid reconfiguration entity <b>234</b>, at block <b>346</b>, then directs the spanning tree state machine engine <b>236</b> to immediately transition the selected back-up port (e.g., port number four) to the forwarding state. That is, the spanning tree engine <b>236</b> does not transition the selected back-up port between the listening or learning states. Instead, the selected back-up port transitions directly to the forwarding state under the direction of rapid reconfiguration entity <b>234</b>, and switch <b>114</b> immediately begins transmitting and receiving messages through this newly activated trunk port <b>119</b> (e.g., port number four).
0064[0064] Since none of the other trunk ports <b>119</b> which connect switch <b>114</b> to, the backbone switches (i.e. to the root) are in the forwarding state no circuitous path or loop will result from the transition directly to the forwarding state. That is, by preventing access switches <b>114</b>-<b>116</b> from becoming the root and configuring the access switches <b>114</b>-<b>116</b> to block all but one of their ports <b>118</b>, <b>119</b> to the backbone switches (i.e., all but one path to the root), through the operation of the above commands, a back-up port may be safely transitioned directly to the forwarding state. Ports <b>118</b>, <b>119</b> that provide connectivity downstream relative to the root (i.e., to the leaves of the spanning tree) need not be blocked, since they cannot cause loops.
0065[0065] Nonetheless, the transition at access switch <b>114</b> from initial root port number three to back-up root port number four may cause entities to appear to “move” relative to other devices. Thus, the identity of the new root port (e.g., port number four) must be propagated to the other devices, such as access switches <b>115</b>-<b>116</b> and backbone switches <b>120</b>-<b>125</b> to prevent messages from being lost or misdirected. Switch <b>114</b>, via rapid reconfiguration entity <b>234</b>, preferably informs the other devices of its new forwarding port by transmitting dummy multicast packets through the new port, as indicated at block <b>348</b>. FIG. 4 is a highly schematic illustration of a dummy multicast message <b>400</b> preferably utilized by rapid reconfiguration entity <b>234</b>. Dummy multicast message <b>400</b> includes a destination address (DA) field <b>410</b> and a source address (SA) field <b>412</b> that may be compatible with the Media Access Control (MAC) layer of the protocol stack. In the preferred embodiment, dummy multicast message <b>400</b> complies with the IEEE 802.3 standard and includes conventional logical link control (LLC) and SubNetwork Access Protocol (SNAP) encapsulation, which are well known to those skilled in the art. Rapid reconfiguration entity <b>234</b> preferably loads DA field <b>410</b> with a multicast address that causes message <b>400</b> to be received by all devices (e.g., access switches <b>114</b>-<b>116</b> and backbone switches <b>120</b>-<b>125</b>) within the network <b>100</b>.
0066[0066] Next, rapid reconfiguration entity <b>234</b> (FIG. 2) loads SA field <b>412</b> with the address of an entity directly coupled to switch <b>114</b>. For example, in a first multicast message <b>400</b>, entity <b>234</b> loads the address of server <b>112</b><i>a </i>into the source address field <b>412</b>. Although multicast message <b>400</b> may further include a data field <b>414</b>, its contents are preferably not asserted by entity <b>234</b>. Multicast message <b>400</b>, having the address of server <b>112</b><i>a </i>loaded in SA field <b>412</b>, is then forwarded through the new root port (i.e., port number four) of switch <b>114</b>. Multicast message <b>400</b> is first received at backbone switch <b>124</b> which examines its contents. In particular, backbone switch <b>124</b> notes that the message is from server <b>112</b><i>a</i>, but that it was received on a different source port than switch <b>124</b> previously associated with server <b>112</b><i>a</i>. That is, prior to the failure at port number three at access switch <b>114</b>, backbone switch <b>124</b> likely associated all entities directly coupled to switch <b>114</b> (including server <b>112</b><i>a</i>) with its port coupled to backbone switch <b>121</b>, which, in turn, accessed such entities via backbone switches <b>120</b> and <b>122</b>.
0067[0067] Since the multicast message <b>400</b> having the source address of server <b>112</b><i>a </i>was received by backbone switch <b>124</b> at a new source port, this new location information is entered by backbone switch <b>124</b> into its filtering database, replacing the previous information that was stored therein. Thereafter, if backbone switch <b>124</b> receives a message intended for server <b>112</b><i>a</i>, it will use this new destination port and the message will be received at port number four of switch <b>114</b>, which is now capable of receiving and forwarding messages. Accordingly, the dummy multicast message <b>400</b> effectively apprises backbone switch <b>124</b> of the change in forwarding ports that occurred at access switch <b>114</b>. Backbone switch <b>124</b> distributes the multicast message <b>400</b> through all of its forwarding ports so that other devices, as necessary, may learn of the new forwarding port (i.e., port number four) at access switch <b>114</b>.
0068[0068] Rapid reconfiguration entity <b>234</b> similarly generates one or more separate multicast messages <b>400</b> for each remaining entity directly coupled to access switch <b>114</b> (i.e., entities or end stations on LANs <b>102</b>-<b>104</b>). In each message <b>400</b>, entity <b>234</b> loads SA field <b>414</b> with the address of the corresponding entity. Each of these messages are similarly forwarded by access switch <b>114</b> through the new forwarding port (i.e., port number four). In addition, entity <b>234</b> generates and transmits one or more multicast messages <b>400</b> for entities reachable through switch <b>114</b> on ports other than its root port. For example, if port number seven at switch <b>114</b> were coupled to another access switch, entity <b>234</b> would transmit multicast messages <b>400</b> carrying the source address of entities directly coupled to this additional access switch as well. Thus, at least one multicast message <b>400</b> is generated and transmitted for each entity directly coupled to or downstream of access switch <b>114</b> (relative to the root). As set forth above, upon receipt of these multicast messages <b>400</b>, the other devices within network <b>100</b> update their corresponding filtering databases with the new destination ports, as necessary.
0069[0069] In the preferred embodiment, entity <b>234</b> is configured to limit the rate at which dummy multicast messages <b>400</b> are transmitted to fifteen messages per one hundred milliseconds or less. This limit on message throughput prevents any access switch from consuming a significant portion of the communications resources of the network <b>100</b> with the transmission of dummy multicast messages <b>400</b>.
0070[0070] The present invention also provides for rapid reconfiguration when a new link (or switch), representing a better path the root for a given switch, is added or recovered. In particular, FIG. 3E is a flow diagram of a rapid configuration process <b>350</b> corresponding to a link recovery or addition in accordance with the present invention. For example, assume that backbone switch <b>121</b> (FIG. 1) is the root and that port number three at access switch <b>114</b> is the root port, since the link <b>128</b> coupled to port number four (which represents a better path cost to root <b>121</b>) is failed. If the link <b>128</b> coupled to port number four is subsequently recovered, switch <b>114</b> will detect the change, as indicated at box <b>352</b>, through the receipt of BPDUs on this port. The recovery of link <b>128</b> may also be detected by the link integrity test, as described above.
0071[0071] As shown at block <b>354</b>, rapid reconfiguration entity <b>234</b> monitors the receipt of messages (e.g., BPDUs) at port number four for a period of time (e.g., thirty seconds) to ensure that the corresponding port at the upstream switch (e.g., backbone switch <b>124</b>) has transitioned to the forwarding state. In particular, since backbone switch <b>124</b> still transitions its ports between the listening and learning intermediary states, entity <b>234</b> at switch <b>114</b> preferably waits a period equal to twice the forwarding delay before starting the transition process. If entity <b>234</b> were to immediately transition to a new port, a loss of connectivity might result as the corresponding upstream port may not be forwarding. While port number four is being monitored, moreover, port number three remains in the forwarding state and messages may continue to be forwarded and received during this time. Next, after allowing all messages queued on the current root port (i.e., port number three) to be sent, rapid reconfiguration entity <b>234</b> transitions the current root port to the blocked state, as indicated at block <b>356</b>. At or about the same instant, rapid reconfiguration entity <b>234</b>, at box <b>358</b>, directs the spanning tree state machine engine <b>236</b> to transition the recovered port (i.e., port number four) directly from the blocked state to the forwarding state without transition through the listening or learning intermediary states. Following this transition, switch <b>114</b> may immediately begin transmitting and receiving frames, including data messages, from this recovered port.
0072[0072] Next, rapid configuration entity <b>234</b> informs the network <b>100</b> (FIG. 1) of the new forwarding port, as reflected by block <b>360</b>. In particular, as described above, entity <b>234</b> generates and transmits dummy multicast messages <b>400</b> for all entities directly coupled to switch <b>114</b> or downstream thereof (relative to the root) through the new forwarding port (i.e., port number four). The transition to a recovered port, which represents a better path to the root, is thus accomplished without the loss of connectivity that otherwise occurs under operation of the conventional spanning tree algorithm. Additionally, the disadvantages caused by the flooding of messages is also avoided.
0073[0073] Since the Enable_Uplinkfast command <b>330</b> is preferably not entered at the backbone switches <b>120</b>-<b>125</b>, these switches do not designate blocked ports as potential back-up ports that may be immediately transitioned to the forwarding state. Nonetheless, through the Become_Root_Primary and Become_Root_Secondary commands <b>300</b>, <b>320</b>, the time required to reconfigure the network following a change at a backbone switch is also reduced. First, as described above, these two commands <b>300</b>, <b>320</b> significantly reduce the maximum age value utilized by all switches in the network <b>100</b>, thereby reducing the time it takes to detect a change. Additionally, the forward delay time is lowered as reflected in Table 1. By reducing the time spent in the listening and learning states, the speed at which network <b>100</b> is reconfigured following a change is substantially improved.
0074[0074] It should be understood that switch <b>114</b>, in addition to generating and transmitting dummy multicast messages <b>400</b> following the detection of a change, may also transmit TCN-PDUs toward the root. As described above, by transmitting TCN-PDUs, switch <b>114</b> will cause devices, such as switches <b>114</b>-<b>116</b> and <b>120</b>-<b>125</b>, to shorten the age out time associated with their filtering databases <b>244</b>. By quickly discarding the contents of their filtering databases <b>244</b>, the possibility of data messages being misdirected or lost is significantly reduced. Furthermore, the transmission of dummy multicast messages <b>400</b>, as described above, quickly informs devices of newly activated ports, thereby reducing the flooding that otherwise occurs when the contents of filtering databases <b>244</b> are discarded.
0075[0075] The above commands <b>300</b>, <b>320</b>, <b>330</b> also reduce the disruptions that may occur upon failure of the root. A failure at the root (e.g., backbone switch <b>120</b>) will suspend the transmission of BPDUs within the network <b>100</b>. The BPDU information stored at the remaining devices, such as access switches <b>114</b>-<b>116</b> and backbone switches <b>121</b>-<b>123</b>, will then time out, based on the particular maximum age value obtained from Table 1. In response, these devices will begin recalculating the spanning tree for the network <b>100</b>. Since the Become_Root_Secondary <b>320</b> command was entered at backbone switch <b>121</b>, its corresponding numeric identifier was significantly lowered, causing backbone switch <b>121</b> to become the new root. The Become_Root_Secondary command <b>320</b> thus ensures that, upon a failure of the primary root (i.e., backbone switch <b>120</b>), the next switch elected to be the root will also be a backbone switch. By carefully selecting the second backbone switch <b>121</b>, the average distance traveled by messages within the network <b>100</b> may be optimized and partitioning of backbone switches avoided. BPDUs originating from the new root (e.g., backbone switch <b>121</b>), moreover, will contain the improved parameters set forth in Table 1, by virtue of the Become_Root_Secondary command <b>320</b>. Thus, switches <b>114</b>-<b>116</b> and <b>120</b>-<b>125</b> will be able to rapidly reconfigure the network <b>100</b> in the face of changes following the election of the new root (e.g., the backbone switch <b>121</b>).
0076[0076] Virtual Local Area Networks
0077[0077] A computer network, such as network <b>100</b> (FIG. 1), may also be segregated into a series of network groups. For example, U.S. Pat. No. 5,394,402, issued on Feb. 28, 1995 to Floyd E. Ross (the “'402 patent”), which is hereby incorporated by referenced in its entirety, discloses an arrangement that is capable of associating any port of a switch with any particular segregated network group. Specifically, according to the '402 patent, any number of physical ports of a particular switch may be associated with any number of groups within the switch by using a virtual local area network (VLAN) arrangement that virtually associates the port with a particular VLAN designation. More specifically, Ross discloses a switch or hub for a segmented virtual local area network with shared media access that associates VLAN designations with at least one local port and further associates those VLAN designations with messages transmitted from any of the ports to which the VLAN designation has been assigned.
0078[0078] The VLAN designation for each local port is stored in a memory portion of the switch such that every time a message is received by the switch on a local port the VLAN designation of that port is associated with the message. Association is accomplished by a flow processing element which looks up the VLAN designation in a memory based on the local port where the message originated. In addition to the '402 patent, an IEEE standards committee is preparing a standard for Virtual Bridged Local Area Networks. See IEEE Standard 802.1Q (draft).
0079[0079] In many cases, it may be desirable to interconnect a plurality of these switches in order to extend the VLAN associations of ports in the network. Ross, in fact, states that an objective of his VLAN arrangement is to allow all ports and entities of the network having the same VLAN designation to interchange messages by associating a VLAN designation with each message. Thus, those entities having the same VLAN designation function as if they are all part of the same LAN. Message exchanges between parts of the network having different VLAN designations are specifically prevented in order to preserve the boundaries of each VLAN segment. For convenience, each VLAN designation is often associated with a different color, such as red, blue, green, etc.
0080[0080] A separate spanning tree or active topology may be defined for each VLAN designation defined within the network. See Cisco IOS VLAN Services document. That is, a first spanning tree may be associated with the red VLAN designation and a second spanning tree associated with the blue VLAN designation. Thus, a given port may be in the forwarding state for a first VLAN designation (e.g., red), but blocked for second VLAN designation (e.g., blue).
0081[0081] In a preferred embodiment, the Become_Root_Primary and Become_Root_Secondary commands <b>300</b>, <b>320</b> are associated with one or more VLAN designations. That is, for the red VLAN designation, the Become_Root_Primary command <b>300</b> may be entered at backbone switch <b>120</b>, whereas, for the blue VLAN designation, it may be entered at backbone switch <b>121</b>. Thus, the root for the spanning tree associated with the red VLAN designation will be at backbone switch <b>120</b> and the root for the blue VLAN designation will be at backbone switch <b>121</b>. By establishing a different root for the various VLAN designations, improved load balancing may be achieved on the network. For example, if the red and blue VLAN designations each generate high message traffic, then, by designating different roots for these VLAN designations, the paths or links followed by messages with the red VLAN designation will be different than the paths or links followed by messages with the blue VLAN designation. Other low-traffic generating VLANs (e.g., yellow and green) may be divided between the two high traffic VLANs. That is, the red and yellow VLAN designations may share backbone switch <b>120</b> as their root, while the blue and green VLAN designations may share backbone switch <b>121</b> as their root. This provides an even greater measure of load balancing within the network <b>100</b>.
0082[0082] In particular, the Become_Root_Primary and Become_Root_Secondary commands <b>330</b>, <b>320</b> may include a VLAN list as a second argument in addition to the network diameter. For example, at first backbone switch <b>120</b>, the Become_Root_Primary command <b>300</b> may be entered with a network diameter of four and a VLAN list identifying the red, yellow, orange and violet VLAN designations as its arguments. At second backbone switch <b>121</b>, the Become_Root_Primary command <b>300</b> may be entered with a network diameter of four and a VLAN list containing the blue, green and magenta VLAN designations as its arguments. In response, switch <b>120</b> will become the root for the red, yellow, orange and violet VLAN designations, while switch <b>121</b> will become the root for the blue, green and magenta VLAN designations.
0083[0083] Further load balancing may be achieved by having access switches select root ports on a per-VLAN basis. This may be accomplished by modifying the path costs for each trunk port of the access switches on a per-VLAN basis. In particular, the Enable_Uplinkfast command may be modified to adjust the path costs for each trunk port at the respective switch on a per-VLAN basis by adding a port number, VLAN designation and respective path cost string as an argument to the Enable_Uplinkfast command. For example, the Enable_Uplinkfast command <b>330</b> may be entered at access switch <b>114</b> with the following argument string: port number two, red, 3100; port number two, blue, 3200; port number three, red, 3200; port number three, blue, 3100; port number four, red, 3300; port number four, blue, 3300. Since port number two has the lowest path cost for the red VLAN designation, this port will generally become the root port for the red VLAN. For the blue VLAN designation, port number three has the lowest path cost and thus will become the root port for the blue VLAN. Accordingly, all messages associated with the red VLAN designation will be forwarded and received at port number two and all messages associated with the blue VLAN designation will be forwarded and received at port number three. By dividing the message streams among different trunk ports <b>119</b>, improved load balancing may be achieved.
0084[0084] Referring again to FIG. 4, in formulating dummy multicast messages following the detection of a change, access switches <b>114</b>-<b>116</b> may append a VLAN tag <b>416</b> to message <b>400</b>. The VLAN tag <b>416</b> is preferably loaded with the VLAN designation corresponding to the entity whose address is loaded into SA field <b>412</b>. Although VLAN tag <b>416</b> may be appended to the message <b>400</b>, as shown, it is preferably inserted after the source address field <b>412</b>. It will be understood to those skilled in the art that tag <b>416</b> may be inserted at other locations.
0085[0085] As switches typically support the creation of up to “1024” different VLAN designations, substantial memory may be needed to store a different path cost for each VLAN per port. In the preferred embodiment, path costs are permitted to take only one of two possible values, one of which is a default value. Accordingly, a “128” byte vector can be utilized per trunk port to represent the path costs for each VLAN designation. That is, each bit of the vector represents one VLAN designation. By parsing each bit, rapid reconfiguration entity <b>234</b> can determine the path cost for each VLAN designation. More specifically, if the bit is asserted, then the path cost for the corresponding VLAN designation will be set to the new value (e.g., “3100”). If a bit is not asserted, then the path cost for the corresponding VLAN designation will remain at the default value (e.g., “3000”).
0086[0086] The foregoing description has been directed to specific embodiments of this invention. It will be apparent, however, that other variations and modifications may be made to the described embodiments, with the attainment of some or all of their advantages. Therefore, it is the object of the appended claims to cover all such variations and modifications as come within the true spirit and scope of the invention.
Contents5
9 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US7352707B2 | Cited by | United States of America | Search report |
| US8582467B2 | Cited by | United States of America | Search report |
| US9979678B2 | Cited by | United States of America | Applicant |
| EP1648119A1 | Cited by | European Patent Office (EPO) | Search report |
| US2006146845A1 | Cited by | United States of America | Pre-grant |
| US9806990B2 | Cited by | United States of America | Applicant |
| US8706848B2 | Cited by | United States of America | Search report |
| EP1677469A1 | Cited by | European Patent Office (EPO) | Search report |
| US9621454B2 | Cited by | United States of America | Applicant |
| US10148521B2 | Cited by | United States of America | Search report |
| US7391744B2 | Cited by | United States of America | Applicant |
| US8539111B2 | Cited by | United States of America | Search report |
| US7126923B1 | Cited by | United States of America | Search report |
| US2010097926A1 | Cited by | United States of America | Pre-grant |
| US9237034B2 | Cited by | United States of America | Search report |
| US7916668B2 | Cited by | United States of America | Applicant |
| US2006212554A1 | Cited by | United States of America | Pre-grant |
| EP1677469A1 | Cited by | European Patent Office (EPO) | Search report |
| US2006007869A1 | Cited by | United States of America | Pre-grant |
| US2003200341A1 | Cited by | United States of America | Pre-grant |
| US8811235B2 | Cited by | United States of America | Search report |
| US2013051218A1 | Cited by | United States of America | Pre-grant |
| US2004252634A1 | Cited by | United States of America | Pre-grant |
| EP1480397A3 | Cited by | European Patent Office (EPO) | Search report |
| US7508774B2 | Cited by | United States of America | Applicant |
| CN1323515C | Cited by | China | Search report |
| EP1480397A2 | Cited by | European Patent Office (EPO) | Applicant |
7 members in 1 office
Priority claims1
| Document | Office | Kind | Date |
|---|---|---|---|
| 99841297 | United States of America | A |
Members7
| Document | Office | Kind | |
|---|---|---|---|
| US6032194A | United States of America | A | |
| US2002052936A1 | United States of America | A1 | |
| US6388995B1 | United States of America | B1 | |
| US2002147800A1 | United States of America | A1 | |
| US6535491B2 | United States of America | B2 | |
| US6976088B1 | United States of America | B1 | |
| US7848264B1 | United States of America | B1 |
4 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF |
Numbers
- Application
- 45006699
Titles
- English
- METHOD AND APPARATUS FOR RAPIDLY RECONFIGURING COMPUTERS NETWORKS EXECUTING THE SPANNING TREE ALGORITHM
Classification
- CPC, 5
- H04L45/48
- H04L12/462
- H04L41/083
- H04L45/28
- H04L45/02
- IPC, 3
- H04L12 24
- H04L12 46
- H04L12 56