The present invention relates to input/output channel and networking systems, and more particularly to a digital switch which switches Fibre Channel frames at link speeds of up to at least one gigabit per second (i.e., one billion bits per second).
There is a never ending demand for increased computer system performance. A common limiting factor in computer system performance is the path from the main central processing unit (CPU) to storage, or the I/O path. The CPU usually requires data from attached storage many times faster than the I/O path. Fibre Channel is a standard which addresses this I/O bandwidth limitation.
Fibre Channel is an American National Standards Institute (ANSI) set of standards which describes a high performance serial transmission protocol which supports higher level storage and networking protocols such as HIPPI, IPI, SCSI, IP, ATM, FDDI and others. Fibre Channel was created to merge the advantages of channel technology with network technology to create a new I/O interface which meets the requirements of both channel and network users. Channel technology is usually implemented by I/O systems in a closed, structured and predictable environment where network technology usually refers to an open, unstructured and unpredictable environment.
Advantages of Fibre Channel include the following. First, it achieves high performance, which is a critical in opening the bandwidth limitations of current computer to storage and computer to computer interfaces at speeds up to 1 gigabit per second or faster. Second, utilizing fiber optic technology, Fibre Channel can overcome traditional I/O channel distance limitations and interconnect devices over distances of 6 miles at gigabit speeds. Third, it is high level protocol independent, enabling Fibre Channel to transport a wide variety of protocols over the same media. Fourth, Fibre Channel uses fiber optic technology which has very low noise properties. Finally, cabling is simple in that Fibre Channel typically replaces bulky copper cables with small lightweight fiber optic cables.
Fibre Channel supports three different topologies, point-to-point, arbitrated loop and fabric, attached. The point-to-point topology attaches two devices directly. The arbitrated loop topology attaches devices in a loop. The fabric attached topology attaches a device directly to a fabric.
A Fibre Channel fabric is an entity which switches frames between connected devices. Fabric is a word which is synonymous with switch or router. The fabric must route the frame to the appropriate destination port or return a busy if the port is not available.
Because of the high link speeds, Fibre Channel fabrics face unique problems that are not present in current network switch design. Current network switches which support Ethernet, Fast Ethernet or Asynchronous Transfer Mode (ATM) protocols route incoming data at speeds up to ten to one hundred times slower than Fibre Channel fabrics. Current network switches also perform some incoming frame validation and network statistics collection. All these network switch features are more difficult to implement when the incoming frame rate is high, as in the case of Fibre Channel.
Route determination in network switches is usually performed by microprocessors. The requirement to route frames which are entering the fabric at speeds of up to one gigabit per second requires the fabric to route the frame in very little time. Routing depends not only on the incoming frame address but a host of other parameters and current state conditions as well. There are no currently available microprocessors which can in real time route sixteen lines of incoming frames with a link speed of 1 gigabit per second.
Frame validation creates another set of problems. In Fibre Channel fabrics frame validation must be performed at rates up to one hundred times faster than in Ethernet switches.
Statistics collection is also another function which must be performed in real time. Statistics collected are defined by the Fibre Channel fabric Management Information Base (MIB) and include the number of frames transmitted and received, the number of fabric rejects and fabric busies transmitted and received, etc. Gathering statistics for sixteen one gigabit per second ports creates new challenges.
Current fabric realizations use either fast microprocessors or digital signal processors to perform the route determination functions. Typically, processors are single instruction devices which serially decode the instructions and perform the specified function. Digital signal processors contain parallel functions and can perform several functions at one time. Still the problem exists to determine the route for many simultaneous incoming frames at one gigabit per second. Current fabric implementations perform routing on the order of tens of microseconds to hundreds of milliseconds. Ideally, routing should be accomplished in less than one microsecond.
Another problem with fabric realization is the support of the Arbitrated Loop topology. This topology has unique characteristics and requirements. Current fabric implementations do not support this topology.
Efficient support of both connection based classes of service (i.e., Class 1) and connectionless classes of service (i.e., Class 2 and 3) is also a challenge. A fabric must implement a different type of switch core to implement each class of service. Coordination between the different switch cores can be a burdensome task. Current fabric implementations support either a connection based or a connectionless switch core. This leads to inefficiencies, e.g., a connectionless switch core cannot switch Class 1 traffic if routes are not determined in frame time (i.e., less than one microsecond) and a connection switch core is very inefficient when routing Class 2 and Class 3 traffic.
Another problem with fabric realization is the interconnection or networking of fabrics. This is a problem due to the high speeds involved. Determining a network route is sometimes even more difficult than determining a local route. Destination addresses must be matched based not only on all bits matching but also matching a portion of the address. Route priorities should also be implemented to allow backup routes to a destination.
The present invention described and disclosed herein comprises a method and apparatus for transporting Fibre Channel frames between attached devices. The apparatus comprises logic which supports but is not limited to the following features: Transport of Class 1, Class 2 and Class 3 frames, Support for the Arbitrated Loop topology on each link, Support for Fabric point-to-point topology on each link, Route determination in frame arrival time, and Interconnection or Networking of Fabrics.
In one aspect of the invention, the apparatus comprises separate port control modules, one for each attached device, a central router module, a switch core module, a fabric control module and a brouter (bridge/router) module. In the preferred embodiment, the port control modules are connected to the router modules by separate route request connections and separate route response connections. Through this structure, route requests may be provided from the port control module to the router while simultaneously the router provides route request responses to the same port control module. Preferably, a common route request channel is utilized. Thus, apparatus is provided to return a route response to a previously requesting port while other ports are arbitrating and sending route requests to the centralized router, More generally, this apparatus provides for reading resource requests from multiple requesters while at the same time returning resource grant responses to previous requesters.
The router of the subject invention includes many advantageous aspects. In the preferred embodiment, the router includes multiple state machines arranged in series for pipeline operation. Specifically, in the preferred embodiment of the router, a hardware finite state machine operates on the route request and a hardware finite state machine provides the route response. Thus, in this embodiment, the router includes an input for receiving the output of the route request generator of the port control module, an output for sending a route request response to the route request response receiver in the port control module, a hardware finite state machine to receive the route request, and a hardware finite state machine to provide the route response, in combination with a route determination system. Through implementation in hardware, route responses may be made in less than two microseconds, which permits essentially real-time routing at gigahertz frequencies.
In yet another aspect of the router, it routes Fibre Channel frames to a destination port on the Fabric based on a selected portion of the incoming frame's destination address. In the preferred embodiment, Fibre Channel FCPH protocol rules are applied to an incoming frame to determine whether to route the frame or return a fabric reject or busy frames or to discard the frame. Validation of the routing of a Fibre Channel frame is based on the rules defined in the ANSI FCPH standards. In the preferred embodiment, route requests are serviced in a round robin manner from multiple ports.
In another embodiment an apparatus and method is provided to store blocked route requests until either the blocking condition resolves itself or a specified time period expires. Thus, a method for servicing route request from multiple attached devices where the routing is subject to blocked and unblocked conditions may be effective, where the method comprises the steps of servicing a route request which is not blocked, but saving a blocked route request in hardware, preferably in registers, and then servicing that request if the route changes from a blocked to an unblocked condition, in the preferred embodiment, prior to the expiration of a specified time period. In a more general sense, the invention manages the blocking and unblocking of multiple resource requests to a central resource.
In another embodiment an apparatus is provided to handle the scenario when a port input fifo is going to overflow with an incoming Fibre Channel frame. Generally, the incoming data stream is typically provided to an encoder/decoder, from which it is supplied to a buffer. In the event of a data overrun condition to the buffer, overrun prevention logic causes the setting of tag bits to a condition which may be recognized downstream as indicative of a buffer overflow condition.
In another embodiment an apparatus is provided to interleave accesses by the processor on the outgoing port bus in between outgoing frames or when the output fifo is full.
In another embodiment an apparatus is provided to pack requests in a register array in order of first arrival but allow the removal of the requests from anywhere in the array.
It is an object of this invention to provide a fibre channel fabric capable of operating at least 1 gigabit speeds.
It is yet a further object of this invention to permit the establishment of a path through a fabric in real time at gigabit speeds.
It is yet a further object of this invention to provide 1 microsecond or less response time to fibre channel frames.
It is another object of this invention to determine in real time at gigabit speeds that no through path can be established through the fabric.
It is yet another object of this invention to provide a fibre channel fabric capable of simultaneously supporting Class 1, Class 2 and Class 3 service.
It is an object of this invention to provide a fibre channel switching fabric which supports arbitrated loop topology.
It is yet another object of this invention to provide systems and methods adapted for interconnection of multiple fabrics.
It is yet another object of this invention to provide a system which supports Fabric point-to-point topology on each link.
Table of Contents
A. Definitions
B. Fibre Channel Fabric Model
C. Fabric Control Module
D. Fabric Router
E. Port Control
F. Switch Core
G. Router Module
H. Other Documents
For expository convenience, the present invention is referred to as the Fibre Channel Fabric or Fabric, the lexicon being devoid of a succinct descriptive name for a system of the type hereinafter described.
The “Fibre Channel ANSI standard” describes the physical interface, transmission protocol and signaling protocol of a high-performance serial link for support of the higher level protocols associated with HIPPI, IPI, SCSI, IP, ATM and others.
The “Fibre Channel Fabric” comprises hardware and software that switches Fibre Channel frames between attached devices at speeds up to one gigabit per second.
The following discussions will be made clearer by a brief review of the relevant terminology as it is typically (but not exclusively) used.
“Fibre Channel” is an American National Standard for information Systems (ANSI) standard which defines a high performance serial link for support of the higher level protocols associated with HIPPI, IPI, SCSI, IP, ATM, FDDI and others.
“FC-1” defines the Fibre Channel transmission protocol which includes the serial encoding, decoding, and error control.
“FC-2” defines the signaling protocol which includes the frame structure and byte sequences.
“FC-3” defines a set of services which are common across multiple ports of a node.
“FC-4” is the highest level in the Fibre Channel standards set. It defines the mapping between the lower levels of the Fibre Channel and the IPI and SCSI command sets, the HIPPI data framing, IP, and other Upper Level Protocols (ULPs).
“Fibre” is a general term used to cover all transmission media specified in the ANSI X3.230 “Fibre Channel Physical and Signaling Interface (FC-PH)” standard.
A “fabric” is an entity which interconnects various N_Ports attached to it and is capable of routing frames by using only the D_ID information in the FC-2 frame header. The word Fabric can be seen as a synonym with the word switch or router.
“Fabric topology” is a topology that uses the Destination Identifier (D_ID) embedded in the Frame Header to route the frame through a Fabric to the desired destination N_Port.
“Point-to-point topology” allows communication between N_Ports without the use of a Fabric.
A “circuit” is a bidirectional path that allows communication between two L_Ports.
“Arbitrated Loop topology” permits three or more L_Ports to use arbitration to establish a point-to-point circuit. When two L_Ports are communicating, the arbitrated loop topology supports simultaneous, symmetrical bidirectional flow.
“Link Control Facility” is a facility which attaches to an end of a link and manages transmission and reception of data. It is contained within each Port type.
“Port” is a generic reference to an N_Port or F_Port.
An “N_Port” is a hardware entity which includes a Link Control Facility.
An “NL_Port” is an N_Port that contains Arbitrated Loop functions associated with Arbitrated Loop topology.
An “F_Port” is a generic reference to an F_Port or FL_Port.
An “FL_Port” is an F_Port that contains Arbitrated Loop functions associated with Arbitrated Loop topology.
An “L Port” is an N_Port or F_Port that contains Arbitrated Loop functions associated with Arbitrated Loop topology.
A “Node” is a collection of one or more N_Ports controlled by a level above FC-2.
A “dedicated connection” is a communicating circuit guaranteed and retained by the Fabric for two given N_Ports.
A “connection” is the process of creating a Dedicated Connection between two N_Ports.
A “disconnection” is the process of removing a Dedicated Connection between two N_Ports.
A “frame” is an indivisible unit of information used by FC-2.
“Frame content” is the information contained in a frame between its Start-of-Frame and End-of-Frame delimiters, excluding the delimiters.
A “data frame” is a frame containing information meant for FC-4/ULP or the Link application.
“Payload” is the contents of the Data Field of a frame, excluding Optional Headers and fill bytes, if present.
“Source Identifier” or S_ID is the address identifier used to indicate the source Port of the transmitted frame.
“Destination Identifier” or D_ID is the address identifier used to indicate the targeted destination of the transmitted frame.
“Valid frame” is a frame received with a valid Start of Frame (SOF), a valid End of Frame (EOF), valid Data Characters, and proper Cyclic Redundancy Check (CRC) of the Frame Header and Data Field.
“Classes of Service” are different types of services provided by the Fabric and used by the communicating N_Ports.
“Class 1” service is a service which establishes a dedicated connection between communicating N_Ports.
“Class 2” service is a service which multiplexes frames at frame boundaries to or from one or more N_Ports with acknowledgement provided.
“Class 3” service is a service which multiplexes frames at frame boundaries to or from one or more N_Ports without acknowledgement.
“Intermix” is a service which interleaves Class 2 and Class 3 frames on an established Class 1 connection.
A “Gigabit Link Module” is a module which interfaces to the Endec through either a 10-bit or 20-bit interface and interfaces to the Fibre Channel link through either a copper or fiber interface.
An “Encoder/Decoder” or Endec is a device which implements the FC-1 layer protocol.
A “Router” is a module which determines the destination port from an address and other Fibre Channel frame parameters. It is a device which forwards traffic between networks. The forwarding decision is based on network layer information and routing tables, often constructed by routing protocols.
A “Port Control” is a module which reads in a Fibre Channel header, requests a route and forwards the frame to the switch core.
“Credit” is the login credit which represents the number of frames that may be transmitted before receiving an acknowledgement or R_RDY.
“Fabric Login Protocol” is when an N_Port interchanges Service Parameters with the Fabric by explicitly performing the Fabric Login protocol or implicitly through an equivalent method not defined in FC-PH.
“Application Specific Integrated Circuit” or (ASIC), an integrated circuit designed to perform a particular function by defining the interconnection of a set of basic circuit building blocks drawn from a library provided by the circuit manufacturer.
“FPGA” Field Programmable Gate Array, a gate array where the logic network can be programmed into the device after its manufacture. An FPGA consists of an array of logic elements, either gates or lookup table RAMs, flip-flops and programmable interconnect wiring. Most FPGAs are dynamically reprogrammable, since their logic functions and interconnect are defined by RAM cells.
“FIFO” a data structure or hardware buffer from which items are taken out in the same order they were put in.
“Bridge” a device which forwards traffic between network segments based on datalink layer information. These segments would have a common network layer address.
“Router” a device which forwards traffic between networks. The forwarding decision is based on network layer information and routing tables, often constructed by routing protocols.
“Brouter” a device which bridges some packets (i.e. forwards based on datalink layer information) and routes other packets (i.e. forwards based on network layer information). The bridge/route decision is based on configuration information.
“Hub” a device connecting several other devices.
“Serdes” serial encoder/decoder, converts the Fibre Channel serial interface to/from a 10 or 20 bit parallel interface.
“HIPPI” is a computer bus for use over fairly short distances at speeds of 800 and 1600 megabytes per second. HIPPI is described by the ANSI standard X3-T9/88-127.
“SCSI” or Small Computer System Interface is a standard for system-level interfacing between a computer and intelligent devices including hard disks, tape drives, and many more. SCSI is described by the ANSI standard X3.131-1986 and by ISO/IEC 9316.
“ATM” or Asynchronous Transfer Mode is a method for the dynamic allocation of bandwidth using a fixed-size packet, also called a cell.
“SNMP” or Simple Network Management Protocol is an Internet Standard protocol defined in RFC 1157, developed to manage nodes on an IP network.
“MIB” or management information base is a database of managed objects accessed by network management protocols such as SNMP.
“Web” is the World-Wide Web, an Internet client-server distributed information retrieval system which originated from the CERN High-Energy Physics Laboratories in Geneva, Switzerland.
“Web Browser” is a program which allows a person to read information from the Web. The browser gives some means of viewing the contents of nodes (or “pages”) and of navigating from one node to another.
Referring to
The primary function of the Fabric is to receive frames from a source N_Port and route the frames to the destination N_Port whose address identifier is specified in the frames. Each N_Port is physically attached through a link to the Fabric or in the case of an Arbitrated Loop topology attached to the same loop. FC-2 specifies the protocol between the Fabric and the attached N_Ports. A Fabric is characterized by a single address space in which every N_Port has a unique N_Port identifier.
The Fabric model contains three or more F_Ports or FL_Ports. Each F_Port is attached to an N_Port through a link. Each F_Port is bidirectional and supports one or more communication models. The receiving F_Port responds to the sending N_Port according to the FC-2 protocol The Fabric optionally verifies the validity of the frame as it passes through the Fabric. The Fabric routes the frame to the F_Port directly attached to the destination N_Port based on the N_Port identifier (D_ID) embedded in the frame. The address translation and the routing mechanisms within the Fabric are transparent to N_Ports.
There are two Sub-Fabric models, a Connection based model and a Connectionless based model. The Connection based Sub-Fabric provides Dedicated Connections between F_Ports and the N_Ports attached to these F_Ports. A Dedicated Connection is retained until a removal request is received from one of the communicating N_Ports or an exception condition occurs which causes the Fabric to remove the Connection. The Connection based Sub-Fabric is not involved in flow control which is managed end-to-end by the N_Ports. If the Fabric is unable to establish a Dedicated Connection, it returns a busy or reject frame with a reason code.
A Connectionless Sub-Fabric is characterized by the absence of Dedicated Connections. The Connectionless Sub-Fabric multiplexes frames at frame boundaries between an F_Port and any other F_Port and between the N_Ports attached to them. A given frame flows through the Connectionless Sub-Fabric for the duration of the routing. After the frame is routed, the Connectionless Sub-Fabric is not required to have memory of source, routing or destination of the frame. When frames from multiple N_Ports are targeted for the same destination N_Port in Class 2 or Class 3, congestion of frames may occur within the Fabric. Management of this congestion is part of the Connectionless Sub-Fabric and buffer-to-buffer flow control.
The fabrics in
The fabric control module 54 contains a processor and associated hardware. The fabric control module software performs but is not limited to the following functions: (1) Fabric power on self test, (2) Fabric configuration, (3) Broadcast, Simple Name, ARP and Directory services servers, (4) Fabric Loop Attached profile Extended link service command, (5) Management, (6) Network Management SNMP agent, (7) Web based fabric management, (8) Uninterruptable power supply monitoring and control, and (9) Brouter Module Configuration/Control. The Fabric Control module controls and configures the rest of the fabric but is not usually involved in the normal routing of frames.
The fabric Router 52 performs some or all of the following functions: (1) route address matching, (2) route determination based on the ANSI X3T11 rules, (3) route request blocking and unblocking, (4) switch core programming 63, (5) statistics collection and (6) port control module route request/response handling 59, 60, 61, 62, 66, 67, 72, 73.
The fabric Port Control modules (PCM) 51, 70, 74, 75 perform some or all of the following functions: (1) receive Fibre Channel frames from the fiber or copper media 56, 77, 78, (2) perform frame validation, (3) send a route request to the router 59, 61, 66, 72, (4) receives a route response from the router 60, 62, 63, 67, 73, (4) forwards the frame to the switch core 57, 69, and (5) either discards the frame, modifies the frame into a fabric reject (F_RJT) or fabric busy (F_BSY) frame or forwards the frame depending on the route response from the router.
The fabric switch core 53 is a nonblocking N×N matrix switch with 36 bit wide transmit and receive I/Os. The switch core switches frames from the PCMs 51, 70, 74, 75 to the destination PCMs or Brouter Module.
The Brouter Module 55 performs some or all of the following functions: protocol bridging and/or routing function between a Fibre Channel network and the network implemented by the Brouter Module. The Brouter Module “looks” like a Fibre Channel port to the rest of the switch. This is due to a protocol conversion function in the Brouter Module which converts the brouter networked frames to Fibre Channel frames. Converted Fibre Channel frames from the Brouter Module enter the fabric switch through an internal port control module 70. Fibre Channel frames from the fabric switch core enter the Brouter Module through an internal path 76.
The FCM is attached to the rest of the fabric in two different manners: both in-band 80 to the fabric and out of band 79 to the fabric. The in-band connection is through the internal port control module. This connection allows the Fabric Control Module to communicate with both locally and remotely attached Fibre Channel compliant devices via Fibre Channel frames. The FCM connects out of band to the rest of the system for monitoring, initialization and control reasons.
The Fabric Router 52 (
(1) Port Control Route Request Interface (PCRRIM) 130
(2) Port Control Route Response Interface (PCRSPM) 144
(3) Address Table 132
(4) Address Match Module (ADM) 131
(5) Blocked Route Request Table Module (BRTBL) 133
(6) Blocked Route Request Port Register Array (BRRA) 134
(7) Blocked Route Request Timer (BRTMR) 135
(8) Route Request Unblock Determination Module (RRUNB) 136
(9) Route Request Selector (RRS) 137
(10) Route Determination Module (RDM) 138
(11) Route State Table (RST) 139
(12) Router Statistics Gathering Module (RST) 141
(13) Router Control FSM (RCFSM) 140.
1. Port Control Route Request Interface Module (PCRRIM)
The Port Control Route Request Interface Module (PCRRIM) 130 of
The winning PCM port number is registered 585 (
2. Port Control Route Response Interface Module (PCRSPM)
As shown in
As shown in
3. Address Table
The Address Table 132 of
4. Address Match Module (ADM)
The Address Match module 13 (ADM) in
Address Match indication=(address in table==(address mask & D_ID))
The results are then priority decoded based on address priority contained in the address table and the resulting address match signal and port are generated. There is one special mode which is implemented which will preemptively route all frames to the Fabric Control module except frames originating from the Fabric Control module. This allows the fabric control module to process all incoming frames which is useful when the fabric is functioning in certain environments.
5. Blocked Route Request Table (BRTBL)
The Blocked Route Request Table 133 (BRTBL) in
As shown in
6. Blocked Route Request Port Register Array (BRRA)
The Blocked Route Request Port Register Array 134 (BRRA) in
Position 0 numeral 489 contains the newest route request and position 16 numeral 490 contains the oldest route request. Register array contents are shifted by one, from the newest position to the oldest, when the LOADFIFO signal is pulsed to make room for the newest blocked route request port number. The shifting circuit must take into account ‘holes’ in the register array. The algorithm identifies the first free register array entry closest to position 0 and shifts all the entries from position 0 to the free register array entry. The shifting circuit creates a shift vector (STTMP) which is used to load the contents of the individual register array entries. The circuit is shown below in verilog for eight ports.
The shifting vector is then used with the CLRFIFO signal 484 and the dequeue port signal (DEQRQ_SEL) 485 to clear the register array contents.
7. Blocked Route Request Timer (BRTMR)
The Blocked Route Request Timer 135 (BRTMR) in
8. Route Request Unblock Determination Module (RRUNB)
The Route Request Unblock Determination module 136 (RRUNB) in
As shown in
The timeout indication is generated from the BRTMR module 362 in
As shown in
The inputs to multiplexor numeral 395 represent the oldest blocked route request 394 and the oldest blocked route request of a Class 1 frame 408. Multiplexor 395 will give priority to the Class 1 frame port 408 before choosing the oldest non-Class 1 route request 394. The resulting vector 409 is the blocked route request to dequeue.
This circuit can be used to unblock other types of resources besides Fibre Channel route requests. The circuit is implemented as combinatorial logic and selects the blocked route request within one clock.
9. Route Request Selector (RRS)
The Route Request Selector module 137 (RRS) in
10. Route Determination Module (RDM)
The Route Determination module 138 (RDM) in
The TEN[2] term above selects a bit from the test enable vector. Turning the bit off will disable the above rules check. The rule above will assert the DISFRM4 signal if the incoming frame contains an SOFn1 delimiter and the incoming port is not already in a Class 1 connection.
As shown in
Finally
11. Route State Table (RST)
The RST contains a context entry for each port. The context entry is shown in
12. Router Statistics Gathering Module (RSG)
13. Router Control FSM (RCFSM)
The RCFSM is triggered from idle by one of three events: a processor request to read or write a router data structure 470, a blocked route request becoming unblocked 471 or an incoming route request received from a port control module signal 472. The three events are prioritized in case of multiple simultaneous events. The priorities from high to low include: 1) processor request, 2) a blocked route request becoming unblocked and 3) an incoming route request. When a processor updates any of the router fields the router must be in a quiescent state, i.e., not updating any data structure. When a processor requests access to a router data structure the processor signals the RCFSM by asserting the BLKCTLREQ signal. If in idle the RCFSM enters the RTBLKED state 452 and waits until the processor has finished its access. While in the RTBLKED state the RCFSM signals it is in this state by asserting the BLKCTLACK signal. The router processor interface logic will hold off the processor access via a WAIT signal until the BLKCTLACK signal is enabled.
The remaining RCFSM diagram states and description is discussed below. Refer to
Port Control Module (PCM)
The PCM is composed of the following four modules:
(1) Port Control FIFO Module (PCFIFO) 247
(2) Port Control to Route OF Module (PCRTIF) 234
(3) Port Control Main Control FSM (PCFSM) 232
(4) Port Control Configuration/Counter Module (PCCFG) 233
1. Port Control FIFO module (PCFIFO)
The received destination address (D_ID) along with the SOF delimiter is wired to the PCRTIF module 254 to build the route request 260. Finally the PCFIFO is controlled by the PCFSM 232.
The PCFIFO module performs certain frame validations. These validations include party and tag field checking and regeneration, CRC, invalid transmit word and link down while receiving frame validations. When the frame validations fail the PCFIFO automatically inserts the appropriate EOF delimiter 251, either an EOFa, EOFni or EOFdti.
The PCFIFO will build a fabric frame reject (F_RJT) when the route response from the router specifies do to so 261. The PCFIFO builds the fabric reject by changing certain fields in the frame header 241, 242, 244. Since the entire header is not yet in the PCFIFO internal registers a counter is implemented to indicate when to insert the modified header fields. The frame fields which are modified include the R_CTL field 242, the parameter field 244 and potentially the EOF delimiter 245. In addition if there was a payload associated with the frame it is discarded.
The PCFIFO will also build a fabric busy (F_BSY) frame when the route response from the router response specifies to do so 261. The PCFIFO modifies the R_CTL field 242, the type field 243 and potentially the EOF delimiter 245. As in the F_RJT frame modification the payload for the F_BSY frame is discarded.
2. Port Control Main Control Module (PDFSM)
3. Port Control Configuration/Counter Module (PCCFG)
The port control configuration register fields are described below.
4. Port Control to Router Interface Module (PCRTIF)
FIFO Overrun Prevention Logic (FOPL)
Processor/Data Arbitration Logic (PDAL)
The PDAL acts as the arbitrator between processor accesses and transmit data to the Endec. The PDAL accomplishes this by keeping track of when the switch core is transmitting frames to the Endec and inserting processor accesses between frames or when the Endec's internal transmit FIFO is full.
Port Control Hub Module
The integral hub provides many advantages over standalone hubs. These advantages include:
Although the foregoing invention has been described in some detail by way of illustration and example for purposes of clarity and understanding, it may be readily apparent to those of ordinary skill in the art light of the teachings of this invention that certain changes and modifications may be made thereto without departing from the spirit or scope of the appended claims.
ANSI X3.230-1994, “Fibre Channel Physical and Signaling Interface (FC-PH)”.
ANSI X3.297-1996, “Fibre Channel Physical and Signaling Interface (FC-PH-2)”.
ANSI X3.303-1996, “Fibre Channel Physical and Signaling Interface (FC-PH-3)”.
ANSI X3.272-1996, “Fibre Channel Arbitrated Loop (FC-AL)”.
ANSI X3T11 Project #1133-D, “Fibre Channel Arbitrated Loop 2 (FC-AL2)”.
ANSI X3T11/95-41, “Fibre Channel Fabric Generic Requirements (FC-FG), Rev 3.2”
ANSI X3T11 Project 1134-D “(FC-GS2)”.
ANSI X3T11 Project 959-D “Fibre Channel Switch Topology (FC-SW)”.
ANSI X3T11 Project 1235-DT, “Fibre Channel Fabric Loop Attachment (FC-FLA) Rev 2.2”
FCA “N_Port to F_Port Interoperability Profile, Rev 1.0”
This is a continuation of U.S. patent application Ser. No. 13/524,991, filed Jun. 15, 2012 which is a continuation of U.S. patent application Ser. No. 12/749,240, filed Mar. 29, 2010, now U.S. Pat. No. 8,204,045, which is a divisional of U.S. patent application Ser. No. 09/330,755, filed Jun. 11, 1999, now U.S. Pat. No. 7,688,735, which is a divisional of U.S. patent application Ser. No. 08/801,471, filed Feb. 18, 1997, now U.S. Pat. No. 6,185,203. The above-referenced United States patent applications are all hereby incorporated by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
4716575 | Duros et al. | Dec 1987 | A |
4809269 | Gulick | Feb 1989 | A |
4821034 | Anderson et al. | Apr 1989 | A |
4862451 | Closs et al. | Aug 1989 | A |
4958341 | Hemmady et al. | Sep 1990 | A |
4970721 | Aczel et al. | Nov 1990 | A |
5007051 | Dolkas et al. | Apr 1991 | A |
5042032 | Dighe et al. | Aug 1991 | A |
5262625 | Tom et al. | Nov 1993 | A |
5319644 | Liang | Jun 1994 | A |
5341476 | Lowell | Aug 1994 | A |
5412653 | Hoppe et al. | May 1995 | A |
5418780 | Henrion | May 1995 | A |
5432907 | Picazo, Jr. et al. | Jul 1995 | A |
5490007 | Bennett et al. | Feb 1996 | A |
5502719 | Grant et al. | Mar 1996 | A |
5519695 | Purohit et al. | May 1996 | A |
5528584 | Grant et al. | Jun 1996 | A |
5535035 | DeFoster et al. | Jul 1996 | A |
5548590 | Grant et al. | Aug 1996 | A |
5570360 | Klausmeier et al. | Oct 1996 | A |
5592160 | Bennett et al. | Jan 1997 | A |
5592472 | Grant et al. | Jan 1997 | A |
5598541 | Malladi | Jan 1997 | A |
5603064 | Bennett | Feb 1997 | A |
5610745 | Bennett | Mar 1997 | A |
H1641 | Sharman | Apr 1997 | H |
5617413 | Monacos | Apr 1997 | A |
5619497 | Gallagher et al. | Apr 1997 | A |
5619500 | Hiekali | Apr 1997 | A |
5638518 | Malladi | Jun 1997 | A |
5655140 | Haddock | Aug 1997 | A |
5655153 | Sandorfi | Aug 1997 | A |
5659718 | Osman et al. | Aug 1997 | A |
5721828 | Frisch | Feb 1998 | A |
5745727 | Chau et al. | Apr 1998 | A |
5751715 | Chan et al. | May 1998 | A |
5768530 | Sandorfi | Jun 1998 | A |
5768551 | Bleiwess et al. | Jun 1998 | A |
5768623 | Judd et al. | Jun 1998 | A |
5802290 | Casselman | Sep 1998 | A |
5812754 | Lui et al. | Sep 1998 | A |
5828475 | Bennett et al. | Oct 1998 | A |
5841990 | Picazo, Jr. et al. | Nov 1998 | A |
5872822 | Bennett | Feb 1999 | A |
5892913 | Adiga et al. | Apr 1999 | A |
5894481 | Book | Apr 1999 | A |
5898828 | Pignolet et al. | Apr 1999 | A |
5941972 | Hoese et al. | Aug 1999 | A |
5956723 | Zhu | Sep 1999 | A |
5978379 | Chan et al. | Nov 1999 | A |
5991891 | Hahn et al. | Nov 1999 | A |
6005849 | Roach et al. | Dec 1999 | A |
6014383 | McCarthy | Jan 2000 | A |
6014715 | Stoevhase | Jan 2000 | A |
6031842 | Trevitt et al. | Feb 2000 | A |
6038047 | Nava et al. | Mar 2000 | A |
6038217 | Lyles | Mar 2000 | A |
6041381 | Hoese | Mar 2000 | A |
6055228 | DeKoning et al. | Apr 2000 | A |
6057863 | Olarig | May 2000 | A |
6118776 | Berman | Sep 2000 | A |
6138199 | Fleischer | Oct 2000 | A |
6151316 | Crayford et al. | Nov 2000 | A |
6157613 | Watanabe et al. | Dec 2000 | A |
6160813 | Banks et al. | Dec 2000 | A |
6167463 | Arp et al. | Dec 2000 | A |
6185203 | Berman | Feb 2001 | B1 |
6192048 | Nelson et al. | Feb 2001 | B1 |
6192054 | Chan et al. | Feb 2001 | B1 |
6205145 | Yamazaki | Mar 2001 | B1 |
6304910 | Roach et al. | Oct 2001 | B1 |
6314100 | Roach et al. | Nov 2001 | B1 |
6314488 | Smith | Nov 2001 | B1 |
6324181 | Wong et al. | Nov 2001 | B1 |
6356944 | McCarty | Mar 2002 | B1 |
6400730 | Latif et al. | Jun 2002 | B1 |
6414953 | Lamarche et al. | Jul 2002 | B1 |
6426947 | Banker et al. | Jul 2002 | B1 |
6470007 | Berman | Oct 2002 | B1 |
6470026 | Pearson et al. | Oct 2002 | B1 |
6614796 | Black et al. | Sep 2003 | B1 |
6636507 | Miyoshi et al. | Oct 2003 | B1 |
6904053 | Berman | Jun 2005 | B1 |
6961775 | Rao | Nov 2005 | B2 |
6975590 | Killen, Jr. et al. | Dec 2005 | B2 |
7012914 | Berman | Mar 2006 | B2 |
7145877 | Natarajan et al. | Dec 2006 | B2 |
7362769 | Black et al. | Apr 2008 | B2 |
7382790 | Warren et al. | Jun 2008 | B2 |
7484021 | Rastogi et al. | Jan 2009 | B2 |
7522619 | Berman | Apr 2009 | B2 |
7542676 | McGlaughlin | Jun 2009 | B2 |
7664018 | Warren et al. | Feb 2010 | B2 |
7688735 | Berman | Mar 2010 | B1 |
7770208 | Barnett et al. | Aug 2010 | B2 |
7801117 | Berman | Sep 2010 | B2 |
7801118 | Berman | Sep 2010 | B2 |
20030086377 | Berman | May 2003 | A1 |
20030095549 | Berman | May 2003 | A1 |
20050226259 | Berman | Oct 2005 | A1 |
20050226260 | Berman | Oct 2005 | A1 |
20080240137 | Berman | Oct 2008 | A1 |
20090225772 | Berman | Sep 2009 | A1 |
20100183022 | Berman | Jul 2010 | A1 |
Number | Date | Country |
---|---|---|
0 709 987 | Jan 1996 | EP |
Entry |
---|
Chin, “Fibre Channel Offers Another Road to High-Speed Networking and I/O”, Computer Technology Review, vol. 15, no. Suppl., Dec. 21, 1995, 45-47. |
Fibre Channel Switch Fabric (FC-SW) Rev. 3.3, American National Standard for Information Systems, Oct. 21, 1997, iii-x, 1-98. |
Fibre Channel Link Encapsulation (FC-LE), Rev. 1.1, American National Standard for Information Systems, Jun. 26, 1996, i-xv, 1-41. |
Fibre Channel Physical and Signalling Interface-3 (FC-PH-3) Rev. 9.4, American National Standard for Information Systems, Nov. 5, 1997, i-xxi, 1-113. |
Fibre Channel Private Loop SCSI Direct Attach (FC-PLDA) Rev. 2.1, American National Standard for Information Systems, Sep. 22, 1997, i-viii, 1-80,I-1-I-4. |
Fibre Channel Arbitrated Loop (FC-AL-2) Rev. 6.1, American National Standard for Information Systems, Feb. 16, 1998, i-xiv, 1-104. |
Fibre Channel Arbitrated Loop (FC-AL) Rev. 4.5, American National Standard for Information Systems, Jun. 1, 1995, ii-x, 1-92. |
Fibre Channel Generic Services (FC-GS) Rev. 3.1., American National Standard for Information Systems, Aug. 7, 1996, i-xiv, 1-84,I-1-I-2. |
Fibre Channel Single-Byte Command Code Sets (SBCCS) Mapping Protocol (FC-SB) Rev. 3.4., American National Standard for Information Systems, May 26, 1995, i-xiv, 1-102,I-1-I-5. |
Fibre Channel Physical and Signalling Interface-2 (FC-PH-2) Rev. 4.4, American National Standard for Information Systems, Sep. 10, 1996, i-xxii, 1-161,I-1-I-3. |
Fibre Channel Physical and Signalling Interface (FC-PH) Rev. 4.3, American National Standard for Information Systems, Jun. 1, 994, i-xxxiv, 1-388,I-1-I-9, and Table Definitions. |
Fibre Channel Fabric Loop Attachment (FC-FLA), Rev. 2.7, NCITS working draft proposed Technical Report, Aug. 12, 1997, i-xiv, 1-122. |
Malavalli, Distributed Computing With Fibre Channel Fabric:, Digest of Papers, IEEE COMPCON, Feb. 1992, 269-274. |
Malavalli, High Speed Fibre Channel Switching Fabric Services:, Proceedings of SPIE, vol. 1577, Sep. 4, 1991, 216-226. |
Martin, “Fabric Interconnection of Fibre Channel Standard Nodes”, Proceedings of the SPIE, vol. 1784, Sep. 8, 1993, 65-71. |
Meggyesi, “Fibre Channel Overview”, Research Institute for Particle and Nuclear Physics, Aug. 15, 1994, 1-10. |
PCT International Search Report, Jul. 20, 1998. |
Platt, “Traffic Management in Frame Relay Networks”, Computer Networks and ISDN Systems, vol. 23, No. 4, Jan. 1992, 305-316. |
Ravidran, et al., “A Comparison of Blocking and Non-Blocking Packet Switching Techniques in Hierarchical Ring Networks”, IEICE Transactions on Information and Systems 1, vol. E79-D, No. 8, Aug. 1996, 1130-1138. |
Rickard, “Fibre Channel As a Network Backbone”, WESCON, Sep. 27, 1994, 653-659. |
Stephens, et al., “Fibre Channel: The Basics, Frame Routing”, ANCOT Corporation, 1995, 9-1-10-17. |
Stephens, et al., “Fibre Channel: The Basics”, ANCOT Corporation, Jun. 1995, 5-6-5-9. |
Varma, et al., “Using Camp-On to Improve the Performance of a Fibre Channel Switch”, Proceedings of the Conference on Local Computer Networks, 1993, 247-255. |
Number | Date | Country | |
---|---|---|---|
20140199060 A1 | Jul 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09330755 | Jun 1999 | US |
Child | 12749240 | US | |
Parent | 08801471 | Feb 1997 | US |
Child | 09330755 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13524991 | Jun 2012 | US |
Child | 14167441 | US | |
Parent | 12749240 | Mar 2010 | US |
Child | 13524991 | US |