Claims
- 1. A method comprising:
establishing a network link between a first port on a first network switch and a second port on a second network switch; determining if one or more virtual channels are supported on the network link; if it is determined that the one or more virtual channels are supported on the network link:
determining a number of credits allocated for each of the one or more virtual channels on the network link; transmitting a first one or more packet flows from the first network switch to the second network switch, wherein each of the first one or more packet flows is transmitted on a corresponding one of the plurality of virtual channels; and performing credit-based flow control for each of the first one or more packet flows on the corresponding virtual channel using the number of credits allocated for the corresponding virtual channel on the network link.
- 2. The method as recited in claim 1, further comprising:
after said determining the number of credits allocated for each of the one or more virtual channels on the network link:
the first network switch receiving a second one or more packet flows from the second network switch, wherein each of the second one or more packet flows is transmitted on a corresponding one of the plurality of virtual channels; and performing credit-based flow control for each of the second one or more packet flows on the corresponding virtual channel, wherein said credit-based flow control for the particular packet flow uses the number of credits allocated for the corresponding virtual channel on the network link.
- 3. The method as recited in claim 1, wherein said determining if the one or more virtual channels are supported on the network link comprises:
the first network switch sending one or more login frames to the second network switch; and the second network switch sending one or more login acknowledgement frames to the first network switch in response to the one or more login frames sent from the first network switch.
- 4. The method as recited in claim 3, wherein each of the one or more login frames includes at least one of a requested number of egress virtual channels that the first network switch desires to establish on the network link, a supported number of ingress virtual channels supported by the first network switch on the network link, a requested egress packet size for each of the egress virtual channels that the first network switch desires to establish on the network link, and a supported ingress packet size for each of the ingress virtual channels supported by the first network switch on the network link.
- 5. The method as recited in claim 1, wherein said determining if the one or more virtual channels are supported on the network link comprises:
determining a number of egress virtual channels that are supported by the first network switch on the network link and an equal number of ingress virtual channels that are supported by the second network switch on the network link; wherein each of the egress virtual channels on the first network switch is associated with exactly one of the ingress virtual channels on the second network switch.
- 6. The method as recited in claim 1, wherein said determining if the one or more virtual channels are supported on the network link comprises:
determining a number of egress virtual channels that are supported by the first network switch on the network link and a corresponding number of ingress virtual channels that are supported by the second network switch on the network link; wherein each of the egress virtual channels on the first network switch is associated with exactly one of the ingress virtual channels on the second network switch.
- 7. The method as recited in claim 6, wherein said determining if the one or more virtual channels are supported on the network link further comprises:
determining a number of ingress virtual channels that are supported by the first network switch on the network link and a corresponding number of egress virtual channels that are supported by the second network switch on the network link; wherein each of the ingress virtual channels on the first network switch is associated with exactly one of the egress virtual channels on the second network switch.
- 8. The method as recited in claim 1, further comprising:
if it is determined that the one or more virtual channels are supported on the network link:
calculating an egress packet size for each of the one or more virtual channels on the first network switch and a corresponding ingress packet size for each of the one or more virtual channels on the second network switch; wherein the egress packet size for each of the one or more virtual channels on the first network switch is equal to the ingress packet size for the corresponding virtual channel on the second network switch.
- 9. The method as recited in claim 8, further comprising:
if it is determined that the one or more virtual channels are supported on the network link:
calculating an ingress packet size for each of the one or more virtual channels on the first network switch and a corresponding egress packet size for each of the one or more virtual channels on the second network switch; wherein the ingress packet size for each of the one or more virtual channels on the first network switch is equal to the egress packet size for the corresponding virtual channel on the second network switch.
- 10. The method as recited in claim 1, wherein said determining the number of credits allocated for each of the one or more virtual channels on the network link comprises:
the first network switch sending one or more credit initialization frames to the second network switch; and the second network switch sending one or more credit initialization acknowledgement frames to the first network switch in response to the one or more credit initialization frames sent from the first network switch.
- 11. The method as recited in claim 10, wherein the one or more credit initialization frames each include information on an allocated number of credits on the first network switch for each of the one or more virtual channels supported on the network link.
- 12. The method as recited in claim 1, wherein said determining the number of credits allocated for each of the one or more virtual channels on the network link comprises the first network switch and the second network switch each determining the number of credits allocated on the other network switch for each of the one or more virtual channels on the network link.
- 13. The method as recited in claim 1, wherein said performing credit-based flow control comprises tracking credit usage for each of the one or more virtual channels on both the first network switch and the second network switch.
- 14. The method as recited in claim 13, wherein said performing credit-based flow control further comprises stopping a packet flow on one of the one or more virtual channels if credits available for the packet flow on the virtual channel drop to zero.
- 15. The method as recited in claim 13, wherein said performing credit-based flow control further comprises synchronizing the tracking of credit usage for each of the one or more virtual channels between the first network switch and the second network switch.
- 16. The method as recited in claim 15, wherein said synchronizing comprises:
the first network switch sending a credit synchronization message to the second network switch, wherein the credit synchronization message includes a current number of unused credits for each of the one or more virtual channels being supported in the egress direction on the first network switch; the second network switch sending a credit synchronization acknowledgement message to the first network switch in response to the credit synchronization message, wherein the credit synchronization acknowledgement message includes:
a current number of unused credits for each of the one or more virtual channels being supported in the ingress direction on the second network switch; and the current number of unused credits for each of the one or more virtual channels received in the credit synchronization message.
- 17. The method as recited in claim 16, wherein said synchronizing further comprises:
the first network switch updating the current number of unused credits for each of the one or more virtual channels being supported in the egress direction on the first network switch; wherein said updating uses the current number of unused credits for the particular virtual channel being supported in the ingress direction on the second network switch received in the credit synchronization acknowledgement message and the current number of unused credits for the particular virtual channel received in the credit synchronization acknowledgement message.
- 18. The method as recited in claim 1, wherein said performing credit-based flow control comprises the second network switch sending a virtual channel ready frame to the first network switch, wherein the virtual channel ready frame indicates available credits on the second network switch for receiving packets on the one or more virtual channels.
- 19. The method as recited in claim 1, further comprising transmitting a separate packet flow from the first network switch to the second network switch over the network link during said transmitting the first one or more packet flows, wherein the separate packet flow is not transmitted on a virtual channel.
- 20. The method as recited in claim 1, wherein the first one or more packet flows include at least one packet flow comprising storage packets.
- 21. The method as recited in claim 1, wherein the first one or more packet flows include at least one packet flow comprising Storage over Internet Protocol (SoIP) packets each encapsulating one or more Fibre Channel packets.
- 22. The method as recited in claim 1, wherein the network link supports Gigabit Ethernet, and wherein the first one or more packet flows include at least one packet flow comprising one or more Gigabit Ethernet packets.
- 23. A method comprising:
establishing one or more virtual channels on a network link between a first network switch and a second network switch; initializing credit-based flow control credits for each of the one or more virtual channels; transmitting a first one or more packet flows from the first network switch to the second network switch on the one or more virtual channels, wherein each of the first one or more packet flows is transmitted on a corresponding one of the plurality of virtual channels; and performing credit-based flow control for each of the first one or more packet flows on the corresponding virtual channel; wherein the first one or more packet flows includes at least one packet flow comprising storage packets.
- 24. The method as recited in claim 23, wherein, in said performing the credit-based flow control, the credits are maintained for each of the one or more virtual channels to reduce packet loss from the first one or more packet flows and to distribute resources among the one or more virtual channels on each of the two network switches.
- 25. The method as recited in claim 23, further comprising:
transmitting a second one or more packet flows from the second network switch to the first network switch on the one or more virtual channels, wherein each of the second one or more packet flows is transmitted on a corresponding one of the plurality of virtual channels; and performing credit-based flow control for each of the second one or more packet flows on the corresponding virtual channel.
- 26. The method as recited in claim 23, further comprising transmitting a separate packet flow from the first switch to the second switch over the network link during said transmitting the first one or more packet flows, wherein the separate packet flow is not transmitted on a virtual channel.
- 27. The method as recited in claim 23, wherein the network link supports Gigabit Ethernet, and wherein the first one or more packet flows includes at least one packet flow comprising Gigabit Ethernet packets.
- 28. A method comprising:
establishing a plurality of virtual channels on a Gigabit Ethernet link between a first network switch and a second network switch; and transmitting a first plurality of Storage over Internet Protocol (SoIP) packets each encapsulating one or more Fibre Channel packets from the first network switch to the second network switch on a first of the one or more virtual channels; wherein credit-based flow control is performed for the first virtual channel to reduce packet loss from the first plurality of SoIP packets.
- 29. The method as recited in claim 28, further comprising:
transmitting a second plurality of Storage over Internet Protocol (SoIP) packets each encapsulating one or more Fibre Channel packets from the second network switch to the first network switch on a second of the one or more virtual channels; wherein credit-based flow control is performed for the second virtual channel to reduce packet loss from the second plurality of SoIP packets.
- 30. A network switch comprising:
one or more ports for sending and receiving packets; packet transport logic configured to:
establish one or more virtual channels on a network link between one of the one or more ports on the network switch and another network switch; determine a number of credits allocated for each of the one or more virtual channels on the network link; transmit a first one or more packet flows to the other network switch, wherein each of the first one or more packet flows is transmitted on a corresponding one of the plurality of virtual channels; and perform credit-based flow control for each of the first one or more packet flows on the corresponding virtual channel using the number of credits allocated for the corresponding virtual channel on the network link.
- 31. The network switch as recited in claim 30, wherein, after said determining the number of credits allocated for each of the one or more virtual channels on the network link, the packet transport logic is further configured to:
receive a second one or more packet flows from the other network switch, wherein each of the second one or more packet flows is transmitted on a corresponding one of the plurality of virtual channels; and perform credit-based flow control for each of the second one or more packet flows on the corresponding virtual channel, wherein said credit-based flow control for the particular packet flow uses the number of credits allocated for the corresponding virtual channel on the network link.
- 32. The network switch as recited in claim 30, wherein, in said establishing the one or more virtual channels on the network link, the packet transport logic is further configured to:
send one or more login frames to the other network switch; and receive one or more login acknowledgement frames from the other network switch in response to the one or more login frames sent from the network switch; wherein each of the one or more login frames includes at least one of a requested number of egress virtual channels that the network switch desires to establish on the network link, a supported number of ingress virtual channels supported by the network switch on the network link, a requested egress packet size for each of the egress virtual channels that the network switch desires to establish on the network link, and a supported ingress packet size for each of the ingress virtual channels supported by the network switch on the network link.
- 33. The network switch as recited in claim 30, wherein, in said establishing the one or more virtual channels on the network link, the packet transport logic is further configured to:
determine a number of egress virtual channels and a number of ingress virtual channels that are supported by the network switch on the network link; wherein the number of egress virtual channels supported on the network switch is equal to a number of ingress virtual channels supported on the other network switch, and wherein the number of ingress virtual channels supported on the network switch is equal to a number of egress virtual channels supported on the other network switch.
- 34. The network switch as recited in claim 30, wherein the packet transport logic is further configured to:
calculate an egress packet size and an ingress packet size for each of the one or more virtual channels on the network switch; wherein the egress packet size for each of the one or more virtual channels on the network switch is equal to an ingress packet size for the corresponding virtual channel on the other network switch, and wherein the ingress packet size for each of the one or more virtual channels on the network switch is equal to an egress packet size for the corresponding virtual channel on the other network switch.
- 35. The network switch as recited in claim 30, wherein, in said determining the number of credits allocated for each of the one or more virtual channels on the network link, the packet transport logic is further configured to:
send one or more credit initialization frames to the other network switch, wherein the one or more credit initialization frames each include information on an allocated number of credits on the network switch for each of the one or more virtual channels supported on the network link; and receive one or more credit initialization acknowledgement frames from the other network switch in response to the one or more credit initialization frames sent from the network switch.
- 36. The network switch as recited in claim 30, wherein, in said determining the number of credits allocated for each of the one or more virtual channels on the network link, the packet transport logic is further configured to determine the number of credits allocated on the other network switch for each of the one or more virtual channels on the network link.
- 37. The network switch as recited in claim 30, wherein, in said performing credit-based flow control, the packet transport logic is further configured to track credit usage for each of the one or more virtual channels on the network switch.
- 38. The network switch as recited in claim 37, wherein, in said performing credit-based flow control, the packet transport logic is further configured to stop a packet flow on one of the one or more virtual channels if available credits for the packet flow on the virtual channel drop to zero.
- 39. The network switch as recited in claim 37, wherein, in said performing credit-based flow control, the packet transport logic is further configured to synchronize the tracking of credit usage for each of the one or more virtual channels between the network switch and the other network switch.
- 40. The network switch as recited in claim 39, wherein, in said synchronizing, the packet transport logic is further configured to:
send a credit synchronization message to the other network switch, wherein the credit synchronization message includes a current number of unused credits for each of the one or more virtual channels being supported in the egress direction on the network switch; receive a credit synchronization acknowledgement message from the other network switch in response to the credit synchronization message, wherein the credit synchronization acknowledgement message includes:
a current number of unused credits for each of the one or more virtual channels being supported in the ingress direction on the other network switch; and the current number of unused credits for each of the one or more virtual channels received in the credit synchronization message; and update the current number of unused credits for each of the one or more virtual channels being supported in the egress direction on the network switch using the current number of unused credits for the particular virtual channel being supported in the ingress direction on the other network switch received in the credit synchronization acknowledgement message and the current number of unused credits for the particular virtual channel received in the credit synchronization acknowledgement message.
- 41. The network switch as recited in claim 30, wherein, in said performing credit-based flow control, the packet transport logic is further configured to receive a virtual channel ready frame from the other network switch, wherein the virtual channel ready frame indicates available credits on the other network switch for receiving packets on the one or more virtual channels.
- 42. The network switch as recited in claim 30, wherein the packet transport logic is further configured to transmit a separate packet flow from the network switch to the other network switch over the network link during said transmitting the first one or more packet flows, wherein the separate packet flow is not transmitted on a virtual channel.
- 43. The network switch as recited in claim 30, wherein the first one or more packet flows include at least one packet flow comprising Storage over Internet Protocol (SoIP) packets each encapsulating one or more Fibre Channel packets.
- 44. The network switch as recited in claim 30, wherein the network link supports Gigabit Ethernet, and wherein the first one or more packet flows include at least one packet flow comprising one or more Gigabit Ethernet packets.
- 45. A network comprising:
a first network switch comprising one or more ports for sending and receiving packets; and a second network switch comprising one or more ports for sending and receiving packets; wherein the first network switch is configured to:
establish a Gigabit Ethernet link between a first port on the first network switch and a second port on the second network switch; establish a plurality of virtual channels on the Gigabit Ethernet link; and transmit a first one or more packet flows comprising Storage over Internet Protocol (SoIP) packets each encapsulating one or more Fibre Channel packets to the second network switch on a first of the one or more virtual channels.
- 46. The network as recited in claim 45, wherein the first network switch is further configured to perform credit-based flow control for the first virtual channel.
- 47. The network as recited in claim 45, wherein the second network switch is configured to:
transmit a second one or more packet flows comprising SoIP packets each encapsulating one or more Fibre Channel packets to the first network switch on a second of the one or more virtual channels; and perform credit-based flow control for the second virtual channel.
- 48. A network comprising:
a first network switch comprising one or more ports for sending and receiving packets; and a second network switch comprising one or more ports for sending and receiving packets; wherein the first network switch is configured to:
establish a network link between a first port on the first network switch and a second port on the second network switch; establish one or more virtual channels on the network link; initialize credit-based flow control credits for each of the one or more virtual channels; transmit a first one or more packet flows to the second network switch on the one or more virtual channels, wherein each of the first one or more packet flows is transmitted on a corresponding one of the plurality of virtual channels; and perform credit-based flow control for each of the first one or more packet flows on the corresponding virtual channel.
- 49. The network as recited in claim 48, wherein the first network switch is further configured to:
receive a second one or more packet flows from the second network switch on the one or more virtual channels, wherein each of the second one or more packet flows is received on a corresponding one of the plurality of virtual channels; and perform credit-based flow control for each of the second one or more packet flows on the corresponding virtual channel.
- 50. The network as recited in claim 48, wherein the first one or more packet flows include at least one packet flow comprising Storage over Internet Protocol (SoIP) packets.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 60/309,032, filed Jul. 31, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60309032 |
Jul 2001 |
US |