Electronic data systems are frequently interconnected using network communication systems. Area-wide networks and channels are two approaches that have been developed for computer network architectures. Traditional networks (e.g., LAN's and WAN's) offer a great deal of flexibility and relatively large distance capabilities. Channels, such as the Enterprise System Connection (ESCON) and the Small Computer System Interface (SCSI), have been developed for high performance and reliability. Channels typically use dedicated short-distance connections between computers or between computers and peripherals.
Features of both channels and networks have been incorporated into a new network standard known as “Fibre Channel.” Fibre Channel systems combine the speed and reliability of channels with the flexibility and connectivity of networks. Fibre Channel products currently can run at very high data rates, such as 266 Mbps or 1062 Mbps. These speeds are sufficient to handle quite demanding applications, such as uncompressed, full motion, high-quality video. ANSI specifications, such as X3.230-1994, define the Fibre Channel network. This specification distributes Fibre Channel functions among five layers. The five functional layers of the Fibre Channel are: FC-0—the physical media layer; FC-1—the coding and encoding layer; FC-2—the actual transport mechanism, including the framing protocol and flow control between nodes; FC-3—the common services layer; and FC-4—the upper layer protocol.
There are generally three ways to deploy a Fibre Channel network: simple point-to-point connections; arbitrated loops; and switched fabrics. The simplest topology is the point-to-point configuration, which simply connects any two Fibre Channel systems directly. Arbitrated loops are Fibre Channel ring connections that provide shared access to bandwidth via arbitration. Switched Fibre Channel networks, called “fabrics”, are a form of cross-point switching.
Conventional Fibre Channel Arbitrated Loop (“FC-AL”) protocols provide for loop functionality in the interconnection of devices or loop segments through node ports. However, direct interconnection of node ports is problematic in that a failure at one node port in a loop typically causes the failure of the entire loop. This difficulty is overcome in conventional Fibre Channel technology through the use of hubs. Hubs include a number of hub ports interconnected in a loop topology. Node ports are connected to hub ports forming a star topology with the hub at the center. Hub ports which are not connected to node ports or which are connected to failed node ports are bypassed. In this way, the loop is maintained despite removal or failure of node ports.
More particularly, FIG. 1A illustrates a conventional loop configuration 100. Four node ports 101, 102, 104, 106 are shown joined together node port to node port. Each node port represents a connection to a device or to another loop. Node port 101 is connected to node port 102 such that data is transmitted from node port 101 to node port 102. Node port 102 is in turn connected to node port 104 which is in turn connected to node port 106. Node port 106 is connected to the first node port, node port 101. In this manner, a loop datapath is established; from node port 101 to node port 102 to node port 104 to node port 106 back to node port 101.
FIG. 1B illustrates a loop 107 where node ports 108, 110, 112, 114 are organized in a physical star topology with a hub 116 in the center. Node port 108 is connected to a hub port 118 in hub 116 as are node ports 110, 112 and 114 to their own respective hub ports 120, 122, and 124. Internal to hub 116 is a loop, where hub ports 118-124 of hub 116 form a loop datapath similar to the conventional loop configuration shown in FIG. 1A.
The use of a hub as a central component to a loop network allows for operation when one or more hub ports are not connected to node ports, or one or more hub ports are connected to node ports which have failed, by bypassing such hub ports. Each hub port typically contains circuitry which provides a bypass mode for the hub port. When a hub port is in bypass mode, data received by the hub port from the previous hub port in the loop is passed directly to the next hub port in the loop.
An additional advantage of the use of hubs is that node ports may be hot insertable. Hot insertable functionality allows the insertion and removal of node ports from a loop without powering down the entire loop or the hub and then restarting again. However, as a result of this hot insertability, the addresses of node ports attached to a loop are not always properly maintained.
Under FC-AL protocols, a loop initialization process is used to provide each node port attached to the loop with a unique address, referred to as an Arbitrated Loop Physical Address (“AL_PA”). Loop initialization is invoked under FC-AL protocols by generating a sequence of Loop Initialization Primitive (“LIP”) ordered sets. In a loop which is not hot insertable, after insertion or removal of a node port the entire loop is restarted and re-initialized. In a hot insertable loop, the loop is not always restarted and so is not necessarily re-initialized upon each insert or removal. As a result, when a new node port is inserted into the loop a unique address may not necessarily be generated if the loop is not re-initialized.
In addition, a hub port may be connected to a hub port on another hub. When hubs are linked one hub to another through hub ports, sometimes hubs do not properly initiate an initialization routine upon insertion, especially in the case of quiescent hubs (i.e., no loop traffic at the time of insertion). At this point there is a possibility of address conflicts between the node ports on the first hub and the node ports on the second hub.
Such an address conflict problem is illustrated in FIGS. 2A and 2B. As shown in FIG. 2A, four node ports A1, B1, C1, D1, are linked to a hub 200. Three node ports A2, B2, C2, are connected to a hub 202. The numbers 1 and 2 are illustrative only and in fact the addresses for each node port are still represented by the letter A, B, C, or D. At this point, each node port has a unique address within its own loop. However, when hubs 200 and 202 are joined, as shown in FIG. 2B, the addresses for the node ports are no longer necessarily unique. In the single loop shown in FIG. 2B, two node ports have address A, two node ports have address B, and two node ports have address C. Upon detecting an address conflict, an error is generated which starts an initialization sequence, ultimately resulting in unique addresses for each node port. However, before that conflict is detected, messages may still continue to pass which are received by incorrect node ports resulting in possible data corruption.
For example, in the situation shown in FIG. 2A, when node port B1 sends data to node port A1, the hub ports are adjacent and node port A1 receives the data from node port B1 possibly without an error. As shown in FIG. 2B, the connection from node port B1 to node port A1 may begin without generating an address conflict because messages from B1 successfully pass along the loop to node port A1, the intended destination, as long as node port B2 was not arbitrating.
However, when node port A1 attempts to send data to node port B1, data corruption may result. In the situation shown in FIG. 2A, the data is sent from node port A1, past node port C1, past node port D1, and then to node port B1, the intended destination. However, in the situation shown in FIG. 2B, data passes from node port A1, past node port C1, past node port D1, through the hub ports connecting hub 200 and hub 202, past node port C2 and is received by node port B2. As noted above, the numerals indicate only the difference between node ports from hub 200 and node ports from hub 202. From node port A1's perspective, node port B2 is indistinguishable from node port B1. Node port A1 sends data addressed to node port B. Similarly, node port B2 accepts data which is addressed to node port B. Accordingly, node port B2 receives data addressed to node port B, though node port A1 intended the data to be received by node port B1. Thus, “B” is not a unique address. Neither node port A1 nor node port B2 is aware of the existence of either node port B2 or node port A1. As a result, depending on the nature of the transaction entered into, data corruption may result. At some point, a proper error may be generated resulting in the initialization sequence. That may be too late, however, to prevent or recover from unwanted data corruption.
The inventors have determined that it would be desirable to provide a loop network hub which can provide unique addresses upon insertion of a new node port or a new hub into a loop by forcing the loop to initialize before data corruption occurs.