Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
First Claim
1. A process for carrying out dual simplex communications in a fibre channel arbitrated loop switch coupling a plurality of fibre channel arbitrated loop nets, comprising:
- receiving and latching an open primitive and at least the source node address thereof identifying the address of said source node and receiving any following buffer credit ready primitives and either storing said ready primitives or counting a number thereof at a source port from a source node on a local fibre channel arbitrated loop net coupled to said source port, said open primitive directed to a remote destination node on the fibre channel arbitrated loop net coupled to a remote destination port;
establishing a front channel connection through a backplane between said source port and said destination port;
converting said open primitive to half duplex and transmitting said half duplex open primitive to said destination node over said front channel;
receiving any ready primitives from said destination node and transmitting them to said source node via a back channel;
receiving a connection request message from a third port coupled to a third node and granting said connection request by a connection grant message to said third port coupled to said third node, said connection grant message naming a backplane channel to use for a back channel connection between said source node and said third node;
establishing a backchannel connection between said source port and said third port through said backplane channel named in said connection grant message;
transmitting an open primitive directed to said source node from said third node to said source port;
comparing a destination node address in said open primitive from said third port to a node address of the open primitive originally received by said source port, and, if the addresses match, quashing the open primitive from said third port and either transmitting one stored ready primitive received from said source node to said third node or transmitting a message which causes said third port to generate at least one ready primitive and transmit it to said third node;
transmitting one frame of data from said third node to said source node via said back channel connection; and
continuing to intercept ready primitives transmitted by said source node and send them to said third node and to receive frames of data transmitted in response to receipt at said third node of said ready primitives and transmit said frames to said source node via said back channel connection and mix said frames of data on said back channel connection with ready primitives received from said destination node.
3 Assignments
0 Petitions
Accused Products
Abstract
A switch, switched architecture and process for transferring data through an FCAL switch is disclosed. The switch uses multiple switch control circuits each coupled to one FCAL network and all connected to a crossbar switch. The switch control circuits are coupled together by a protocol bus for coordination purposes. Local conversations can occur on each FCAL loop and crossing conversations through the switch can occur concurrently. The OPN primitive is used to establish the connection before any data is transferred thereby eliminating the need for buffer memory in the switch control circuits. The destination address of each OPN is used to address a lookup table in each switch control circuit to determine if the destination node is local. If not, the destination is looked up and a connection request made on the protocol bus. If the remote port is not busy, it sends a reply which causes both ports to establish a data path through the backplane crossbar switch.
57 Citations
10 Claims
-
1. A process for carrying out dual simplex communications in a fibre channel arbitrated loop switch coupling a plurality of fibre channel arbitrated loop nets, comprising:
-
receiving and latching an open primitive and at least the source node address thereof identifying the address of said source node and receiving any following buffer credit ready primitives and either storing said ready primitives or counting a number thereof at a source port from a source node on a local fibre channel arbitrated loop net coupled to said source port, said open primitive directed to a remote destination node on the fibre channel arbitrated loop net coupled to a remote destination port; establishing a front channel connection through a backplane between said source port and said destination port; converting said open primitive to half duplex and transmitting said half duplex open primitive to said destination node over said front channel; receiving any ready primitives from said destination node and transmitting them to said source node via a back channel; receiving a connection request message from a third port coupled to a third node and granting said connection request by a connection grant message to said third port coupled to said third node, said connection grant message naming a backplane channel to use for a back channel connection between said source node and said third node; establishing a backchannel connection between said source port and said third port through said backplane channel named in said connection grant message; transmitting an open primitive directed to said source node from said third node to said source port; comparing a destination node address in said open primitive from said third port to a node address of the open primitive originally received by said source port, and, if the addresses match, quashing the open primitive from said third port and either transmitting one stored ready primitive received from said source node to said third node or transmitting a message which causes said third port to generate at least one ready primitive and transmit it to said third node; transmitting one frame of data from said third node to said source node via said back channel connection; and continuing to intercept ready primitives transmitted by said source node and send them to said third node and to receive frames of data transmitted in response to receipt at said third node of said ready primitives and transmit said frames to said source node via said back channel connection and mix said frames of data on said back channel connection with ready primitives received from said destination node.
-
-
2. A process for dual simplex communication using a switch coupling a plurality of fibre channel arbitrated loop nets, comprising:
-
establishing a front channel half duplex data path between a source node and destination node on different fibre channel arbitrated loop nets and stripping and storing or counting any buffer credit ready primitives output by said source node and not transmitting them to said destination node; establishing a back channel data path between a third node and said source node but not transmitting to said source node any open primitive emitted by said third node, and transmitting a number of ready primitives either equal to a number of ready primitives output by said source node or a number of ready primitives needed by said third node to send all the data it has to said source node before closing said back channel data path, transmission of said ready primitives being one at a time; and receiving any ready primitives transmitted by said destination node and mixing them in with data frames and/or primitives transmitted on said back channel data path by said third node so as to exercise flow control on transmissions of data frames from said source node to said destination node.
-
-
3. A process for dual simplex communication using a switch coupling a plurality of fibre channel arbitrated loop nets, comprising:
-
receiving a full duplex open primitive from a source node designating a destination node address, and a source node address, and converting the full duplex format open primitive to a simplex or half duplex format open primitive and establishing a front channel connection to a destination node; storing the full duplex open primitive including at least the source node address in a source port of said switch coupled to said source node; stripping any buffer credit ready primitives output by said source node and not transmitting said ready primitives output by said source node to said destination node of said front channel connection, but either storing or count said ready primitives output by said source node and making them available to a third node to send data to said source node either by transmitting stored ready primitives output by said source node one at a time to said third node or by conveying a number of ready primitives output by said source node to a third port coupled to said third node and synthesizing in said third node a number of ready primitives equal to a value of said count and sending said ready primitives to said third node one at a time; updating a status data in a scoreboard memory of each port to indicate which busy ports are coupled to source nodes of said front channel connection and thus are available to receive frames in dual simplex communication from third nodes; establishing a back channel connection from said third node to said source node of said front channel connection and transmitting an open primitive from said third node to said source port, and using said stored source node address from said open primitive transmitted by said source node and stored in said source port as an access key to compare to the destination node address of said open primitive transmitted to said source port by said third node via said back channel connection and allowing dual simplex communication to proceed on said back channel connection if said source node address matches said destination node address of said open primitive from said third node, but if there is no match, blocking dual simplex communication with this particular third node and closing said back channel connection; deleting said open primitive from said third node in said source port and never transmitting it to said source node if the destination address of the open primitive from said third node matches the stored source address of the stored open primitive from said source node; and receiving data frames transmitted by said third node at said source port with one data frame transmitted in response to each ready received by said third node, and mixing said data frames in with ready primitives received from said destination node via said front channel connection and transmitting the combined data frames and ready primitives to said source node via said back channel connection.
-
-
4. An apparatus for dual simplex communication, the apparatus configured to:
-
establish a front channel half duplex data path between a source node and destination node on different fibre channel arbitrated loop nets; strip, store or count any buffer credit ready primitives output by said source node; establish a back channel data path between a third node and said source node; transmit a number of ready primitives either equal to a number of ready primitives output by said source node or a number of ready primitives needed by said third node to send all the data it has to said source node before closing a back channel connection, wherein, transmission of said ready primitives is performed one at a time; receive any ready primitives transmitted by said destination node; combine the ready primitives with at least one of data frames and primitives transmitted on said back channel connection by said third node so as to exercise flow control on transmissions of data frames from said source node to said destination node.
-
-
5. An apparatus for carrying out dual simplex communications in a fibre channel arbitrated loop switch coupling a plurality of fibre channel arbitrated loop nets, the apparatus configured to:
-
receive and latch an open primitive and at least the source node address thereof identifying the address of said source node; receive any following buffer credit ready primitives; store said ready primitive or count a number thereof at a source port from a source node on a local fibre channel arbitrated loop net coupled to said source port, wherein said open primitive directed to a remote destination node on the fibre channel arbitrated loop net coupled to a remote destination port; receive any ready primitives from said destination node; receive a connection request message from a third port coupled to a third node and granting said connection request by a connection grant message to said third port coupled to said third node, said connection grant message naming a backplane channel to use for a back channel connection between said source node and said third node; establish a backchannel connection between said source port and said third port through said backplane channel named in said connection grant message; transmit an open primitive directed to said source node from said third node to said source port; and continue to intercept ready primitives transmitted by said source node and send them to said third node and to receive frames of data transmitted in response to receipt at said third node of said ready primitives and transmit said frames to said source node via said back channel connection and mix said frames of data on said back channel connection with ready primitives received from said destination node. - View Dependent Claims (6, 7)
-
-
8. An apparatus for dual simplex communication using a switch coupling a plurality of fibre channel arbitrated loop nets, the apparatus configured to:
-
receive a full duplex open primitive from a source node designating a destination node address, and a source node address; convert the full duplex format open primitive to a simplex or half duplex format open primitive; store the full duplex open primitive including at least the source node address in a source port of said switch coupled to said source node; strip any buffer credit ready primitives output by said source node and to store said ready primitives output by said source node and making them available to a third node to send data to said source node either to transmit stored ready primitives output by said source node one at a time to said third node or convey a number of ready primitive output by said source node to a third port coupled to said third node; synthesize in said third node a number of ready primitives equal to a value of said number of ready primitives and send said ready primitives to said third node one at a time; establish a back channel connection from said third node to said source node of a front channel connection and transmit an open primitive from said third node to said source port, and to use said stored source node address as an access key to compare to the destination node address of said open primitive transmitted to said source port by said third node via said back channel connection and to allow dual simplex communication to proceed on said back channel if said source node address matches said destination node address of said open primitive from said third node; and receive data frames transmitted by said third node at said source port with one data frame transmitted in response to each ready received by said third node, and to mix said data frames in with ready primitives received from said destination node via said front channel connection and transmit the combined data frames and ready primitives to said source node via said back channel connection. - View Dependent Claims (9, 10)
-
Specification