Credit-based flow control in lossless ethernet networks
First Claim
1. A system, comprising:
- a hardware processor and logic integrated with and/or executable by the processor or media access control (MAC) functionality of a network port, the logic being configured to;
initialize a link between a receiving endpoint and a sending endpoint, the receiving and sending endpoints being connected in a network fabric, wherein at least one virtual link is created within the link;
negotiate a credit aging duration during initialization of the link, wherein the credit aging duration is determined at least partially based on a speed of the link between the receiving endpoint and the sending endpoint;
receive an amount of available flow credits from the receiving endpoint, wherein the amount of available flow credits are used to determine a capacity to process packets at the receiving endpoint;
transmit one or more packets to the receiving endpoint until all packets are sent or the amount of available flow credits is insufficient to process additional packets; and
expire unused flow credits from the amount of available flow credits as an age of the unused flow credits reaches the credit aging duration,wherein the receiving endpoint and the sending endpoint each track an age of flow credits using a local clock or a synchronized clock, andwherein exchange of flow credits is performed on a per virtual link basis.
3 Assignments
0 Petitions
Accused Products
Abstract
In one embodiment, a system includes a hardware processor and logic integrated with and/or executable by the processor or media access control (MAC) functionality of a network port, the logic being adapted to initialize a link between a receiving endpoint and a sending endpoint, the receiving and sending endpoints being connected in a network fabric, wherein at least one virtual link is created within the link, receive an amount of available flow credits from the receiving endpoint, wherein the amount of available flow credits are used to determine a capacity to process packets at the receiving endpoint, and transmit one or more packets to the receiving endpoint until all packets are sent or the amount of available flow credits is insufficient to process additional packets, wherein exchange of flow credits is performed on a per virtual link basis.
124 Citations
20 Claims
-
1. A system, comprising:
a hardware processor and logic integrated with and/or executable by the processor or media access control (MAC) functionality of a network port, the logic being configured to; initialize a link between a receiving endpoint and a sending endpoint, the receiving and sending endpoints being connected in a network fabric, wherein at least one virtual link is created within the link; negotiate a credit aging duration during initialization of the link, wherein the credit aging duration is determined at least partially based on a speed of the link between the receiving endpoint and the sending endpoint; receive an amount of available flow credits from the receiving endpoint, wherein the amount of available flow credits are used to determine a capacity to process packets at the receiving endpoint; transmit one or more packets to the receiving endpoint until all packets are sent or the amount of available flow credits is insufficient to process additional packets; and expire unused flow credits from the amount of available flow credits as an age of the unused flow credits reaches the credit aging duration, wherein the receiving endpoint and the sending endpoint each track an age of flow credits using a local clock or a synchronized clock, and wherein exchange of flow credits is performed on a per virtual link basis. - View Dependent Claims (2, 3, 4)
-
5. A computer program product for providing credit-based flow control, the computer program product comprising a computer readable storage medium having program code embodied therewith, the program code readable/executable by a processor to:
-
initialize, using the processor, a link between a receiving endpoint and a sending endpoint, the receiving and sending endpoints being connected in a network fabric, the link comprises at least one virtual link; negotiate, using the processor, a credit aging duration during initialization of the link, wherein the credit aging duration is used to expire flow credits after the credit aging duration is reached rendering the flow credits unusable; send, using the processor, an amount of available flow credits to the sending endpoint, wherein the amount of available flow credits are used to determine a capacity to process packets; receive, using the processor, one or more packets from the sending endpoint; decrease, using the processor, the amount of available flow credits by an amount corresponding to data in the one or more packets that is successfully received; and receive, using the processor, replacement flow credits equal to the data in the one or more packets successfully forwarded by the receiving endpoint, wherein exchange of flow credits is performed on a per virtual link basis. - View Dependent Claims (6, 7, 8, 9)
-
-
10. A method for providing credit-based flow control, the method comprising:
-
initializing a link between a receiving endpoint and a sending endpoint, the receiving and sending endpoints being connected in a network fabric, wherein the link comprises at least one virtual link; negotiating a credit aging duration during initialization of the link, wherein the credit aging duration is used to expire flow credits after the credit aging duration is reached, wherein the credit aging duration is determined at least partially based on a speed of the link between the receiving endpoint and the sending endpoint; and in an iterative process until the sending endpoint has no further packets to transmit; sending an amount of available flow credits from the receiving endpoint to the sending endpoint, wherein the amount of available flow credits are used to determine a capacity to process packets at the receiving endpoint; receiving, at the receiving endpoint, one or more packets transmitted from the sending endpoint; decreasing the amount of available flow credits by an amount corresponding to data in the one or more packets that is successfully received by the receiving endpoint; expiring unused flow credits from the amount of available flow credits as an a of the unused flow credits reaches the credit aging durations and receiving, at the receiving endpoint, an amount of flow credits transmitted from the sending endpoint in an amount equivalent to the data in the one or more packets successfully forwarded by the receiving endpoint, wherein exchange of flow credits is performed on a per virtual link basis. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A system, comprising a hardware processor and logic integrated with and/or executable by the processor, the logic being configured to:
-
generate a plurality of flow credits; determine a credit aging duration based at least partially on speeds of links between interface and/or ports, wherein the credit aging duration is used to expire flow credits after the credit aging duration is reached; distribute one or more flow credits to every interface and/or port to be exchanged on a per virtual link basis; and expire unused flow credits from an amount of available flow credits at one or more interface and/or port as an age of the unused flow credits reaches the credit aging duration, wherein the flow credits are exchanged with other devices in order to provide for processing of packets sent thereto, and wherein an amount of flow credits distributed to an interface and/or port is proportionate to at least one of;
a bandwidth of the interface and/or port and according to a predetermined policy. - View Dependent Claims (18, 19, 20)
-
Specification