Method and apparatus for input/output link retry, failure and recovery in a computer network
First Claim
1. A method for transmitting data in a network from a source node to a destination node comprising the steps of:
- a) transmitting data in a plurality of packets from said source node to at least one intermediary point, said plurality of packets being assigned a corresponding sequence number;
b) retaining a copy of each packet in a buffer at said source node until receiving an acknowledgment that said each packet was successfully received by said intermediary point; and
c) assigning an intermediate point sequence number to each packet received by the intermediate point, wherein said intermediate point sequence number is independent from said sequence number of said source node.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for transmitting data in a network from a source node to a destination node includes the steps of transmitting data packets from the source node to an intermediary point, and assigning each of the packets a corresponding sequence number. A copy of each packet is stored in a buffer at the source node until receiving an acknowledgment that each packet was successfully received by the intermediary point. Upon successfully reaching the intermediate point, the intermediate point assigns an intermediate point sequence number to each packet. A copy of each packet is retained in a buffer at the intermediate point until receiving an acknowledgment that the packet was successfully received at the next delivery point. Once a particular packet is successfully received at an intermediary point, the particular packet is de-allocated at the source node, as are any other packets in the buffer between the particular packet and the last acknowledged packet. Upon receipt of an error indication, each packet is retransmitted along with all subsequent packets. At the receiving end, all received packets following the packet associated with the error indication are dropped until successfully receiving a retransmitted version of the packet. In addition, a single negative acknowledgment is used to indicate that a packet associated with the negative acknowledgment includes at least one error and to simultaneously indicate that all previous packets received prior to the packet associated with the negative acknowledgment were received correctly. Finally, a link sequence number is assigned to each of packet before transmitting it from a origination point in a link. Subsequently, each new link origination point assigns a sequence number that is independent from the sequence number assigned by the source node or the previous origination point.
120 Citations
20 Claims
-
1. A method for transmitting data in a network from a source node to a destination node comprising the steps of:
-
a) transmitting data in a plurality of packets from said source node to at least one intermediary point, said plurality of packets being assigned a corresponding sequence number;
b) retaining a copy of each packet in a buffer at said source node until receiving an acknowledgment that said each packet was successfully received by said intermediary point; and
c) assigning an intermediate point sequence number to each packet received by the intermediate point, wherein said intermediate point sequence number is independent from said sequence number of said source node. - View Dependent Claims (2, 3, 4)
d) de-allocating a particular packet in the buffer at the source node upon receipt of an acknowledgment associated with said particular packet from said intermediary node; and
e) de-allocating any other packets in the buffer between said particular packet and a last acknowledged packet.
-
-
4. The method according to claim 1, further comprising the steps of:
-
d) retransmitting said each packet and all subsequent packets upon receipt of an error indication; and
e) dropping all received packets following said each packet associated with the error indication until successfully receiving a retransmitted version of said each packet.
-
-
5. A method for transferring data across a fabric in a system area network including a plurality of links using a point to point protocol, said method comprising the steps of:
-
a) transmitting the data in a plurality of packets from point to point, said plurality of packets being assigned a sequence number;
b) retaining each packet in a buffer at a source node until receiving either an acknowledgment indicating that said each packet was successfully received or an error indication that a received version of said each packet included at least one error, while simultaneously transmitting additional packets;
c) using a single negative acknowledgment to indicate that a packet associated with the negative acknowledgment includes at least one error and to simultaneously indicate that all previous packets received prior to the packet associated with the negative acknowledgment were received correctly; and
d) assigning a link sequence number to each of said packets before transmitting each of the packets from a origination point in a link, wherein said link sequence number is independent from said sequence number of said source node. - View Dependent Claims (6, 7, 8)
e) de-allocating a particular packet in the buffer at the source node upon receipt of an acknowledgment associated with said particular packet; and
f) de-allocating any other packets in the buffer between said particular packet and a last acknowledged packet.
-
-
8. The method according to claim 5, further comprising the step of de-allocating all buffered packets following a packet associated with the negative acknowledgment, and retransmitting all packets from the packet associated with the negative acknowledgment including the packet associated with the negative acknowledgment.
-
9. An apparatus for communicating data between two links of a fabric including a plurality of links, said apparatus comprising:
-
a) a first switch being disposed in a first point of a link and transmitting the data in a plurality of packets from the first point in the link to a second point in the link;
said first switch assigning first point sequence numbers to the plurality of packets, said first point sequence numbers being independent from source sequence numbers assigned by a source of the packets;
b) a buffer being disposed in the first point, being coupled to the first switch and storing each packet until receiving either an acknowledgment that said each packet was successfully received or an error indication that a received version of said each packet included at least one error; and
c) a second switch being disposed in the second point, receiving each of the transmitted data packets, and upon receipt of an error free packet sending another acknowledgment to indicate successful receipt of said error free packet and all packets in sequence between a last acknowledged packet and said error free packet, said second switch assigning second point sequence number to said received packets, said second point sequence numbers being independent from said first point sequence numbers. - View Dependent Claims (10, 11, 12)
-
-
13. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform a method having a series of steps for transmitting data between switches in a fabric having a plurality of links, said method comprising the steps of:
-
a) transmitting data in a plurality of packets from a source switch to at least one intermediary switch, said plurality of packets being assigned a corresponding sequence number by the source switch;
b) retaining a copy of each packet in a buffer at said source switch until receiving an acknowledgment that said each packet was successfully received by said intermediary switch; and
c) assigning an intermediate switch sequence number to each packet received by the intermediate switch wherein said intermediate switch sequence number is independent of said sequence number of said sequence number of said source switch. - View Dependent Claims (14, 15, 16)
d) de-allocating a particular packet in the buffer at the source switch upon receipt of an acknowledgment associated with said particular packet from said intermediary switch; and
e) de-allocating any other packets in the buffer between said particular packet and a last acknowledged packet.
-
-
16. The device according to claim 13, wherein the method further comprises the steps of:
-
d) retransmitting said each packet and all subsequent packets upon receipt of an error indication; and
e) dropping all received packets following said each packet associated with the error indication until successfully receiving a retransmitted version of said each packet.
-
-
17. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform a method having a series steps for transmitting data between switches in a fabric having a plurality of links, said method comprising the steps of:
-
a) transmitting the data in a plurality of packets from a first switch to a second switch, said plurality of packets being assigned a sequence number by the first switch;
b) retaining each packet in a buffer at the first switch until receiving either an acknowledgment indicating that said each packet was successfully received or an error indication that a received version of said each packet included at least one error, while simultaneously transmitting additional packets;
c) using a single negative acknowledgment to indicate that a packet associated with the negative acknowledgment includes at least one error and to simultaneously indicate that all previous packets received prior to the packet associated with the negative acknowledgment were received correctly; and
d) assigning a link sequence number to each of said packets before transmitting each of the packets from a second switch, said link sequence number assigned by the second switch being independent of the link sequence number assigned by the first switch. - View Dependent Claims (18, 19, 20)
e) de-allocating a particular packet in the buffer at the first switch upon receipt of an acknowledgment associated with said particular packet; and
f) de-allocating any other packets in the buffer between said particular packet and a last acknowledged packet.
-
-
20. The device according to claim 17, further comprising the step of de-allocating all buffered packets following a packet associated with the negative acknowledgment, and retransmitting all packets from the packet associated with the negative acknowledgment including the packet associated with the negative acknowledgment.
Specification