Adaptively maintaining sequence numbers on high availability peers
First Claim
1. A method comprising:
- receiving, with a primary network element of a high-availability cluster, a first packet of a packet flow, the first packet having a first sequence number;
receiving, with the primary network element, a second packet of the packet flow, the second packet having a second sequence number;
calculating a first difference value comprising a difference between the second sequence number and the first sequence number;
after determining that the first difference value exceeds a first update window size value associated with the packet flow, wherein the first update window size value is based on a window size value associated with the packet flow and a window scale factor associated with the packet flow, sending, with the primary network element, a first update message comprising the second sequence number to a backup network element of the high-availability cluster;
receiving a modified window size value for the packet flow;
calculating a second update window size value according to the modified window size value and the window scale factor;
receiving a third packet of the packet flow, the third packet having a third sequence number;
calculating a second difference value comprising a difference between the third sequence number and the second sequence number; and
after determining that the second difference value exceeds the second update window size value, sending a second update message comprising the third sequence number to the backup network element.
1 Assignment
0 Petitions
Accused Products
Abstract
A primary network element of a high availability cluster periodically synchronizes sequence numbers with a backup network element of the cluster. The primary determines the periodicity of updates according to a window size and a scale factor. The backup uses probe packets after switchover to discover the current sequence number. In one example, the primary network element includes an interface to receive first and second packets of a packet flow, a control unit to determine whether a difference between sequence numbers of the first and second packets exceeds an update window size value associated with the packet flow that is based on a window size value and a window scale factor associated with the packet flow, and a backup network interface configured to send an update message comprising the second sequence number to the backup network element of the high-availability cluster.
73 Citations
30 Claims
-
1. A method comprising:
-
receiving, with a primary network element of a high-availability cluster, a first packet of a packet flow, the first packet having a first sequence number; receiving, with the primary network element, a second packet of the packet flow, the second packet having a second sequence number; calculating a first difference value comprising a difference between the second sequence number and the first sequence number; after determining that the first difference value exceeds a first update window size value associated with the packet flow, wherein the first update window size value is based on a window size value associated with the packet flow and a window scale factor associated with the packet flow, sending, with the primary network element, a first update message comprising the second sequence number to a backup network element of the high-availability cluster; receiving a modified window size value for the packet flow; calculating a second update window size value according to the modified window size value and the window scale factor; receiving a third packet of the packet flow, the third packet having a third sequence number; calculating a second difference value comprising a difference between the third sequence number and the second sequence number; and after determining that the second difference value exceeds the second update window size value, sending a second update message comprising the third sequence number to the backup network element. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method comprising:
-
receiving, with a primary network element of a high-availability cluster, a first packet of a packet flow, the first packet having a first sequence number; receiving, with the primary network element, a second packet of the packet flow, the second packet having a second sequence number; receiving a synchronization (SYN) packet of the packet flow, a synchronization-acknowledgement (SYN-ACK) packet associated with the packet flow, and an ACK packet of the packet flow; retrieving a window size value and a window scale factor from at least one of the SYN packet, the SYN-ACK packet, and the ACK packet; calculating a difference value comprising a difference between the second sequence number and the first sequence number; after determining that the difference value exceeds an update window size value associated with the packet flow, wherein the update window size value is based on the window size value associated with the packet flow and the window scale factor associated with the packet flow, sending, with the primary network element, an update message comprising the second sequence number to a backup network element of the high-availability cluster; and sending the window size value and the window scale factor value to the backup network element. - View Dependent Claims (7)
-
-
8. A method comprising:
-
receiving, with a primary network element of a high-availability cluster, a first packet of a packet flow, the first packet having a first sequence number; receiving, with the primary network element, a second packet of the packet flow, the second packet having a second sequence number; calculating a first difference value comprising a difference between the second sequence number and the first sequence number; after determining that the first difference value exceeds an update window size value associated with the packet flow, wherein the update window size value is based on a window size value associated with the packet flow and a window scale factor associated with the packet flow, sending, with the primary network element, a first update message comprising the second sequence number to a backup network element of the high-availability cluster; receiving a third packet of the packet flow, the third packet having a third sequence number; calculating a second difference value comprising a difference between the third sequence number and the second sequence number; and after determining that the second difference value exceeds the update window size value, sending a second update message comprising the third sequence number to the backup network element.
-
-
9. A method comprising:
-
receiving, with a primary network element of a high-availability cluster, a first packet of a first packet flow, the first packet having a first sequence number; receiving, with the primary network element, a second packet of the first packet flow, the second packet having a second sequence number; calculating a first difference value comprising a difference between the second sequence number and the first sequence number; after determining that the first difference value exceeds a first update window size value associated with the packet flow, wherein the first update window size value is based on a first window size value associated with the first packet flow and a first window scale factor associated with the first packet flow, sending, with the primary network element, a first update message comprising the second sequence number to a backup network element of the high-availability cluster; receiving a third packet of a second packet flow, the third packet having a third sequence number; receiving a fourth packet of the second packet flow, the fourth packet having a fourth sequence number; calculating a second difference value comprising a difference between the fourth sequence number and the third sequence number; and after determining that the second difference value exceeds a second update window size value associated with the second packet flow, wherein the second update window size value is based on a second window size value associated with the second packet flow and a second window scale factor associated with the second packet flow, sending a second update message comprising the fourth sequence number to the backup network element, wherein the second update message is associated with the second packet flow.
-
-
10. A primary network element of a high-availability cluster configured to operate in a cluster mode, the network element comprising:
-
a network interface configured to receive a first packet of a packet flow, the first packet having a first sequence number, to receive a second packet of the packet flow, the second packet having a second sequence number, to receive a modified window size value for the packet flow, and to receive a third packet of the packet flow, the third packet having a third sequence number; a control unit configured to calculate a first difference value comprising a difference between the second sequence number and the first sequence number, to determine whether the first difference value exceeds a first update window size value associated with the packet flow, wherein the first update window size value is based on a window size value associated with the packet flow and a window scale factor associated with the packet flow, to calculate a second update window size value according to the modified window size value and the window scale factor, to calculate a second difference value comprising a difference between the third sequence number and the second sequence number, and to determine whether the second difference value exceeds the second update window size value; and a backup network interface configured to send a first update message comprising the second sequence number to a backup network element of the high-availability cluster when the first difference value exceeds the first update window size and to send a second update message comprising the third sequence number to the backup network element when the second difference value exceeds the second update window size. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A primary network element of a high-availability cluster configured to operate in a cluster mode, the network element comprising:
-
a computer-readable medium comprising a flow table; a network interface configured to receive a first packet of a packet flow, the first packet having a first sequence number, to receive a second packet of the packet flow, the second packet having a second sequence number, and to receive a synchronization (SYN) packet of the packet flow, a synchronization-acknowledgement (SYN-ACK) packet associated with the packet flow, and an ACK packet of the packet flow; a control unit configured to retrieve a window size value and a window scale factor from at least one of the SYN packet, the SYN-ACK packet, and the ACK packet and store the window size value and the window scale factor in an entry of the flow table, wherein the entry is associated with the packet flow, to calculate a difference value comprising a difference between the second sequence number and the first sequence number, and to determine whether the difference value exceeds an update window size value associated with the packet flow, wherein the update window size value is based on a window size value associated with the packet flow and a window scale factor associated with the packet flow; and a backup network element interface configured to send the window size value and the window scale factor value to the backup network element, and to send an update message comprising the second sequence number to a backup network element of the high-availability cluster.
-
-
18. A non-transitory computer-readable storage medium encoded with instructions for causing a programmable processor of a primary network element of a high-availability cluster to:
-
calculate a first update window size value associated with a packet flow based on a first window size value associated with the packet flow and a window scale factor associated with the packet flow; receive a first packet of the packet flow, the first packet having a first sequence number; receive a second packet of the packet flow, the second packet having a second sequence number; calculate a first difference value comprising a difference between the second sequence number and the first sequence number; determine whether the first difference value exceeds the first update window size value; send a first update message comprising the second sequence number to a backup network element of the high-availability cluster when the difference value is determined to exceed the update window; receive a modified window size value for the packet flow; calculate a second update window size value according to the modified window size value and the window scale factor; receive a third packet of the packet flow, the third packet having a third sequence number; calculate a second difference value comprising a difference between the third sequence number and the second sequence number; and after determining that the second difference value exceeds the second update window size value, send a second update message comprising the third sequence number to the backup network element.
-
-
19. A method comprising:
-
receiving, with a backup network element of a high-availability cluster, a first update message from a primary network element of the high-availability cluster, wherein the first update message comprises a first sequence number of a packet of a packet flow, wherein a difference between the first sequence number and a previously received sequence number corresponds to a first update window size; receiving, with the backup network element, a second update message from the primary network element, wherein the second update message comprises a second sequence number, wherein a difference between the second sequence number and the first sequence number corresponds to a second update window size; receiving, with the backup network element, a message indicating that the backup network element is to become active and act as a primary network element; after becoming active, sending, with the backup network element, probe packets to a client device of the packet flow and a server device of the packet flow, wherein the probe packets each comprise a probe sequence number equal to the second sequence number; receiving, with the backup network element, at least one of a retransmission comprising a current sequence number from the client device or an acknowledgement message comprising the current sequence number from the server device; and associating the current sequence number received from the retransmission or the acknowledgement message with the packet flow. - View Dependent Claims (20, 21, 22)
-
-
23. A backup network element of a high-availability cluster configured to operate in a cluster mode, the backup network element comprising:
-
a primary network element interface configured to receive a first update message from a primary network element of the high-availability cluster, wherein the first update message comprises a first sequence number of a packet of a packet flow, wherein a difference between the first sequence number and a previously received sequence number corresponds to a first update window size, to receive a second update message from the primary network element, wherein the second update message comprises a second sequence number, wherein a difference between the second sequence number and the first sequence number corresponds to a second update window size, and to receive an activate message indicating that the backup network element is to become active and act as a primary network element; one or more network interfaces configured to send probe packets to a client device of the packet flow and a server device of the packet flow, wherein the probe packets each comprise a probe sequence number equal to the second sequence number, and to receive at least one of a retransmission comprising a current sequence number from the client device or an acknowledgement message comprising the current sequence number from the server device; and a control unit configured to cause the backup network element to become active in response to the activate message and to associate the current sequence number received from the retransmission or the acknowledgement message with the packet flow. - View Dependent Claims (24, 25)
-
-
26. A non-transitory computer-readable storage medium encoded with instructions for causing a programmable processor of a backup network element of a high-availability cluster to:
-
receive a first update message from a primary network element of the high-availability cluster, wherein the first update message comprises a sequence number of a packet of a packet flow, wherein a difference between the first sequence number and a previously received sequence number corresponds to a first update window size; receive a second update message from the primary network element, wherein the second update message comprises a second sequence number, wherein a difference between the second sequence number and the first sequence number corresponds to a second update window size receive a message indicating that the backup network element is to become active and act as a primary network element; after becoming active, send probe packets to a client device of the packet flow and a server device of the packet flow, wherein the probe packets each comprise a probe sequence number equal to the second sequence number; receive at least one of a retransmission comprising a current sequence number from the client device or an acknowledgement message comprising the current sequence number from the server device; and associate the current sequence number received from the retransmission or the acknowledgement message with the packet flow. - View Dependent Claims (27, 28, 29)
-
-
30. A system forming a high-availability cluster of network devices, the system comprising:
-
a primary network element comprising; a network interface configured to receive a first packet of a packet flow, the first packet having a first sequence number, to receive a second packet of the packet flow, the second packet having a second sequence number, to receive a modified window size value for the packet flow, and to receive a third packet of the packet flow, the third packet having a third sequence number; a first control unit configured to calculate a first difference value comprising a difference between the second sequence number and the first sequence number, to determine whether the first difference value exceeds a first update window size value associated with the packet flow, wherein the first update window size value is based on a window size value associated with the packet flow and a window scale factor associated with the packet flow, to calculate a second update window size value according to the modified window size value and the window scale factor, to calculate a second difference value comprising a difference between the third sequence number and the second sequence number, and to determine whether the second difference value exceeds the second update window size value; and a backup network interface; and a backup network element comprising; a primary network element interface configured to receive a first update message from the primary network element, wherein the update message comprises the second sequence number, to receive a second update message comprising the third sequence number from the primary network element, and to receive an activate message indicating that the backup network element is to become active and act as a primary network element; one or more network interfaces configured to send probe packets to a client device of the packet flow and a server device of the packet flow, wherein the probe packets each comprise a probe sequence number equal to the second sequence number, to receive at least one of a retransmission comprising a current sequence number from the client device or an acknowledgement message comprising the current sequence number from the server device, and a second control unit configured to cause the backup network element to become active in response to the activate message and to associate the current sequence number received from the retransmission or the acknowledgement message with the packet flow, wherein the backup network interface of the primary network element is configured to send the first update message comprising the second sequence number to the backup network element when the first difference value exceeds the first update window size and to send the second update message comprising the third sequence number to the backup network element when the second difference value exceeds the second update window size.
-
Specification