1. Field of the Invention
The present invention relates to fibre channel systems, and more particularly, multi-speed cut through routing in fibre channel switches.
2. Background of the Invention
Fibre channel is a set of American National Standard Institute (ANSI) standards, which provide a serial transmission protocol for storage and network protocols such as HIPPI, SCSI, IP, ATM and others. Fibre channel provides an input/output interface to meet the requirements of both channel and network users.
Fibre channel supports three different topologies: point-to-point, arbitrated loop and fibre channel fabric. The point-to-point topology attaches two devices directly. The arbitrated loop topology attaches devices in a loop. The fibre channel fabric topology attaches host systems directly to a fabric, which are then connected to multiple devices. The fibre channel fabric topology allows several media types to be interconnected.
Fibre channel is a closed system that relies on multiple ports to exchange information on attributes and characteristics to determine if the ports can operate together. If the ports can work together, they define the criteria under which they communicate.
In fibre channel, a path is established between two nodes where the path's primary task is to transport data from one point to another at high speed with low latency, performing only simple error detection in hardware.
Fibre channel fabric devices include a node port or “N_Port” that manages fabric connections. The N_port establishes a connection to a fabric element (e.g., a switch) having a fabric port or F_port. Fabric elements include the intelligence to handle routing, error detection, recovery, and similar management functions.
A fibre channel switch is a multi-port device where each port manages a simple point-to-point connection between itself and its attached system. Each port can be attached to a server, peripheral, I/O subsystem, bridge, hub, router, or even another switch. A switch receives messages from one port and automatically routes it to another port. Multiple calls or data transfers happen concurrently through the multi-port fibre channel switch.
Fibre channel switches use memory buffers to hold frames received and sent across a network. Associated with these buffers are credits, which are the number of frames that a buffer can hold per fabric port.
Often a fibre channel switch is coupled between devices that use varying data rates to transfer data. The mismatch in the data transfer rates can result in inefficient use of the overall bandwidth. An illustration of this problem is shown in FIG. 2. FIG. 2 shows switches 207 and 209 coupled by a 10 gigabits (“G”) link 208. Host systems 203 and 202 are coupled to switch 207 by 2G links 204 and 205, respectively. Host system 201 is coupled by a 1G link 206. A target 213 is coupled to switch 209 by a 1G link 210, while targets 214 and 215 are coupled by 2G links 211 and 212, respectively.
As is shown in FIG. 2, host 203 can send data at 2G to target 213 that can receive data at 1G. Since target 213 receives data at a lower rate that can fill the receive buffers in switch 209 resulting in bandwidth degradation.
Conventional fibre channel switches are inefficient and have latency issues, especially in a situation described above with respect to FIG. 2. Conventional switches use cut through routing to solve some of the latency issues. Cut through routing is the practice of transferring frames through a buffer before the end of the frame is received. This allows simultaneous write and read and is intended to reduce latency.
The problem with conventional cut through routing arises when they are written at a lower rate and read at a higher rate. For example, as shown in FIG. 2, data is written at 2G and 1G and read out at 10G. This will exhaust all current frame data because of the fast read. A receive buffer read control system is designed to stop reading when the read address catches up with the write address. Hence, data through a switch crossbar will have gaps between valid Words. This will reduce the effective transfer rate for the incoming port. If the transmit buffer were set to a faster rate and incoming data to a transmit buffer slows down due to incoming port transfer rate, the transmit buffer will run out of data to transfer. This will corrupt frame data that is being transmitted from the port.
Therefore, what is required is an efficient cut through routing technique that can accommodate varying port transfer rates.