Fiber channel CRC for internal error checking on a switching platform
First Claim
1. A fibre channel interface to a fibre channel communications line comprising:
- a) an external interface connected to the communications line so as to receive and transmit fibre channel frames having headers and data payloads over the communications line;
b) a fibre channel controller receiving frames from the external interface; and
c) a CRC module connected so as to monitor data flowing between the external interface and the fibre channel controller;
the CRC module having i) a first CRC generator that generates a CRC value based on a starting value and data to be analyzed ii) a first frame header processor with circuitry to analyze headers and transmit data payloads to the CRC generator as data to be analyzed; and
iii) a first memory in communication with the first CRC generator that stores intermediate CRC values for a sequence for later use by the first CRC generator as the starting value when analyzing a next frame in the sequence.
6 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus is presented for performing a sequence-level CRC calculation on fiber channel communications within a switching platform domain. Specifically, the disclosed invention utilizes a CRC generator to monitor data communication between an external interface and a fiber channel controller. The CRC generator searches the data communication for frames that contain the type of data for which a sequence-level CRC is desired, such as for a sequence containing SCSI data. When found, the CRC generator performs an 8B/10B decode, strips off any fill bytes, and performs a CRC calculation on the data payload. If the found frame is the first frame in the sequence, the CRC is done starting with a reset value. If the frame is not the first, an intermediate value containing the previous CRC calculation results for this sequence is retrieved and used to perform the CRC calculations. Upon completion of the calculation for the frame, a determination is made whether the sequence is complete. If so, the calculated value is the sequence-level CRC. If not, the calculated value is stored in memory for use with the next frame in that sequence. With inbound data, the calculated sequence-level CRC is appended to the end of the data comprising that sequence. With outbound data, the calculated value is compared with the appended, expected value, and a CRC error is generated if the values do not match. The sequence-level CRC value appended to the sequence data is typically removed before the data exits the switching platform domain.
-
Citations
27 Claims
-
1. A fibre channel interface to a fibre channel communications line comprising:
-
a) an external interface connected to the communications line so as to receive and transmit fibre channel frames having headers and data payloads over the communications line;
b) a fibre channel controller receiving frames from the external interface; and
c) a CRC module connected so as to monitor data flowing between the external interface and the fibre channel controller;
the CRC module havingi) a first CRC generator that generates a CRC value based on a starting value and data to be analyzed ii) a first frame header processor with circuitry to analyze headers and transmit data payloads to the CRC generator as data to be analyzed; and
iii) a first memory in communication with the first CRC generator that stores intermediate CRC values for a sequence for later use by the first CRC generator as the starting value when analyzing a next frame in the sequence. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
iv) a second CRC generator that generates a CRC value based on a starting value and data to be analyzed; and
v) a second frame header processor with circuitry to analyze headers and transmit data payloads to the CRC generator as data to be analyzed;
wherein the first CRC generator and the first frame header processor both process incoming data over the external interface while the second CRC generator and the second frame header processor both process outgoing data over the external interface.
-
-
10. The fibre channel interface of claim 9, wherein the first memory is in communication with the second CRC generator to store intermediate CRC values for later use by the second CRC generator as the starting value when analyzing a next frame in the sequence.
-
11. The fibre channel interface of claim 9, further comprising a second memory in communication with the second CRC generator, the second memory storing intermediate CRC values for later use by the second CRC generator as the starting value when analyzing a next frame in the sequence.
-
12. In a switching platform having
a) a communications bus; -
b) a system buffer connected to the communications bus;
c) a first interface connected the communications bus;
d) a fibre channel interface connected to a fibre channel communications line and the communications bus; and
e) a processor connected to the communications bus, the processor translating data between the first interface and the fibre channel interface using the system buffer as temporary storage;
an improved fibre channel interface wherein the fibre channel interface comprises;
i) a CRC generator that generates a CRC value based on a starting value and data to be analyzed;
ii) a frame header processor that monitors communications between the communications bus and the fibre channel communications line at the level of a fibre channel frame, the frame header processor having circuitry to analyze a header within the frame to determine the type of data within the frame and a sequence to which the frame belongs, the frame header processor being in communication with the CRC generator so as to transmit a data payload of the frame to the CRC generator as data to be analyzed; and
iii) memory in communication with the CRC generator that stores intermediate CRC values for later use by CRC generator as the starting value when analyzing a next frame in the sequence. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A method for calculating a sequence-level CRC calculation for fibre channel data comprising:
-
a) performing a CRC calculation on a data payload of a first frame to create an intermediate CRC calculation;
b) storing the intermediate CRC calculation so as to associate the intermediate CRC calculation with the fibre channel sequence of which the first frame is a member;
c) retrieving the intermediate CRC calculation when an additional frame is received that belongs to the same fibre channel sequence as the first frame;
d) using the intermediate CRC calculation as the starting point to perform a CRC calculation on the data payload of the additional frame to create a new intermediate CRC calculation;
e) storing the new intermediate CRC calculation if the additional frame is not the last frame of the sequence; and
f) performing steps c, d, and e until the last frame of the sequence has been received and used to perform the CRC calculation. - View Dependent Claims (23, 24, 25, 26, 27)
-
Specification