IP Library Granted Patent US 6,941,252
Granted Patent B2
US 6,941,252 · App. 09/809,996 · Granted Sep 6, 2005

Striping data frames across parallel fibre channel links

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,941,252
App. No.
09/809,996
Granted
Sep 6, 2005
Kind
B2
Abstract

A method and system for aggregating a plurality of links to simulate a unitary connection among one or more nodes in a fibre channel system includes means for striping data frames across the links. One or more programmable hardware mechanisms, operatively connectable to the links and to nodes in the fabric, also are provided. A program for collecting information about variable link characteristics is included. Programmable hardware mechanisms provide in-order delivery of data frames across the links despite the variable link characteristics.

Claims (67)

1. A method of transmitting a sequence of ordered data frames from a source node over a plurality of communication links to provide in-order delivery of the data frames at a destination node, the method comprising:

computing a link length difference for each pair of communication links based on a link length characteristic of each communication link in the pair;

transmitting to the destination node a first data frame of the ordered data frames over a first link of the communication links;

selecting a second link of the communication links based on the link length difference associated with the first and second links to ensure that a next data frame of the ordered data frames is received at the destination node after the first data frame is received at the destination node; and

transmitting the next data frame over the second link to the destination node.

2. The method of claim 1 wherein the computing operation comprises:

detecting the link length characteristic associated with each communication link; and

computing the link length difference for a pair of communication links based on the detected link length characteristic of each communication link in the pair.

3. The method of claim 1 wherein the computing operation comprises:

detecting the link length characteristic associated with each communication link, wherein the link length difference for a pair of communication links is computed from a difference between the detected link length characteristics of the communication links in the pair.

4. The method of claim 1 further comprising:

maintaining a record identifying a communication link across which a data frame is transmitted.

5. The method of claim 1 further comprising:

maintaining status information on a data frame transmitted across the communication links.

6. The method of claim 1 wherein the selecting operation further comprises:

comparing information about the next data frame with information about other data frames being transmitted across the communication links; and

if the information about the next data frame does not match the information about any of the other data frames, then transmitting the next data frame across any available communication link.

7. The method of claim 1 wherein the selecting operation further comprises:

comparing information about the next data frame with information about other data frames being transmitted across the communication links; and

if the information about the next data frame matches the information about any of the other data frames, then

evaluating a link length difference between the communication link across which the matching data frame was transmitted and another available communication link, and

transmitting the next data frame across the other available communication link, if the evaluated link length difference ensures that the next data frame will be received at the destination node via the other available communication link after the first data frame is received at the destination node.

8. The method of claim 1 wherein the selecting operation further comprises:

comparing information about the next data frame with information about other data frames being transmitted across the communication links; and

if the information about the next data frame matches the information about any of the other data frames, then

evaluating link length differences between the communication link across which the matching data frame was transmitted and other available communication links,

queuing the next data frame, if no evaluated link length difference ensures that the next data frame will be received at the destination node after the first data frame is received at the destination node via the other available communication link, and

transmitting the next data frame across the other available communication link, if a delay introduced by the queuing operation and the evaluated link length difference ensures that the next data frame will be received at the destination node via the other available communication link after the first data frame is received at the destination node.

9. A programmable hardware mechanism storing executable instructions for performing a programmed process that transmits a sequence of ordered data frames from a source node over a plurality of communication links to provide in-order delivery of the data frames at a destination node, the programmed process comprising:

computing a link length difference for each pair of communication links based on a link length characteristic of each communication link in the pair;

transmitting to the destination node a first data frame of the ordered data frames over a first link of the communication links;

selecting a second link of the communication links based on the link length difference associated with the first and second links to ensure that a next data frame of the ordered data frames is received at the destination node after the first data frame is received at the destination node; and

transmitting the next data frame over the second link to the destination node.

10. The programmable hardware mechanism of claim 9 wherein the computing operation comprises:

detecting the link length characteristic associated with each communication link; and

computing the link length difference for a pair of communication links based on the detected link length characteristic of each communication link in the pair.

11. The programmable hardware mechanism of claim 9 wherein the computing operation comprises:

detecting the link length characteristic associated with each communication link, wherein the link length difference for a pair of communication links is computed from a difference between the detected link length characteristics of the communication links in the pair.

12. The programmable hardware mechanism of claim 9 further comprising:

maintaining a record identifying a communication link across which a data frame is transmitted.

13. The programmable hardware mechanism of claim 9 further comprising:

maintaining status information on a data frame transmitted across the communication links.

14. The programmable hardware mechanism of claim 9 wherein the selecting operation further comprises:

comparing information about the next data frame with information about other data frames being transmitted across the communication links; and

if the information about the next data frame does not match the information about any of the other data frames, then transmitting the next data frame across any available communication link.

15. The programmable hardware mechanism of claim 9 wherein the selecting operation further comprises:

comparing information about the next data frame with information about other data frames being transmitted across the communication links; and

if the information about the next data frame matches the information about any of the other data frames, then

evaluating a link length difference between the communication link across which the matching data frame was transmitted and another available communication link, and

transmitting the next data frame across the other available communication link, if the evaluated link length difference ensures that the next data frame will be received at the destination node via the other available communication link after the first data frame is received at the destination node.

16. The programmable hardware mechanism of claim 9 wherein the selecting operation further comprises:

comparing information about the next data frame with information about other data frames being transmitted across the communication links; and

if the information about the next data frame matches the information about any of the other data frames, then

evaluating link length differences between the communication link across which the matching data frame was transmitted and other available communication links,

queuing the next data frame, if no evaluated link length difference ensures that the next data frame will be received at the destination node after the first data frame is received at the destination node via the other available communication link, and

transmitting the next data frame across the other available communication link, if a delay introduced by the queuing operation and the evaluated link length difference ensures that the next data frame will be received at the destination node via the other available communication link after the first data frame is received at the destination node.

17. A system for transmitting a sequence of ordered data frames from a source node over a plurality of communication links to provide in-order delivery of the data frames to a destination node, the system comprising:

a link controller that computes a link length difference for each pair of communication links based on a link length characteristic of each communication link in the pair;

a switch transmitting to the destination node a first data frame of the ordered data frames from the source node over a first link of the communication links;

a transmit queue scheduler that selects a second link of the communication links based on the link length difference associated with the first and second links to ensure that a next data frame of the ordered data frames from the source node is received at the destination node after the first data frame is received at the destination node, wherein the switch transmits the next data frame over the second link to the destination node.

18. The system of claim 17 wherein the link controller detects the link length characteristic associated with each communication link and computes the link length difference for a pair of communication links based on the detected link length characteristic of each communication link in the pair.

19. The system of claim 17 wherein the link controller detects the link length characteristic associated with each communication link, wherein the link length difference for a pair of communication links is computed from a difference between the detected link length characteristics of the communication links in the pair.

20. The system of claim 17 wherein the transmit queue scheduler maintains a record identifying a communication link across which a data frame is transmitted.

21. The system of claim 17 wherein the transmit queue scheduler maintains status information on a data frame transmitted across the communication links.

22. The system of claim 17 wherein the transmit queue scheduler compares information about the next data frame with information about other data frames being transmitted across the communication links, and if the information about the next data frame does not match the information about any of the other data frames, the switch transmits the next data frame across any available communication link.

23. The system of claim 17 wherein the transmit queue scheduler compares information about the next data frame with information about other data frames being transmitted across the communication links, and if the information about the next data frame matches the information about any of the other data frames, the transmit queue scheduler evaluates a link length difference between the communication link across which the matching data frame was transmitted and another available communication link, and transmits the next data frame across the other communication link, if the evaluated link length difference ensures that the next data frame will be received at the destination node via the other available communication link after the first data frame is received at the destination node.

24. The system of claim 17 wherein the transmit queue scheduler compares information about the next data frame with information about other data frames being transmitted across the communication links, and if the information about the next data frame matches the information about any of the other data frames, then the transmit queue scheduler evaluates link length differences between the communication link across which the matching data frame was transmitted and other available communication links, queues the next data frame, if no evaluated link length difference ensures that the next data frame will be received at the destination node after the first data frame is received at the destination node via the other available communication link, and transmits the next data frame across the other available communication link, if a delay introduced by the queuing operation and the evaluated link length difference ensures that the next data frame will be received at the destination node via the other available communication link after the first data frame is received at the destination node.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
RELEASE OF SECURITY INTEREST Recorded Jan 22, 2015
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC
Reel/Frame 034804/0793 →
RELEASE OF SECURITY INTEREST Recorded Jan 21, 2015
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; INRANGE TECHNOLOGIES CORPORATION; FOUNDRY NETWORKS, LLC
Reel/Frame 034792/0540 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2012
From: MCDATA CORPORATION
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 029486/0062 →
SECURITY AGREEMENT Recorded Jan 20, 2010
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION; MCDATA SERVICES CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 023814/0587 →
SECURITY AGREEMENT Recorded Dec 22, 2008
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, INC.; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION
To: BANK OF AMERICA, N.A. AS ADMINISTRATIVE AGENT
Reel/Frame 022012/0204 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 11, 2001
From: NELSON, JEFFREY J.; TREVITT, STEPHEN; GRANT, ROBERT
To: MCDATA CORPORATION
Reel/Frame 011885/0344 →