IP Library Granted Patent US 8,687,653
Granted Patent B2
US 8,687,653 · App. 12/610,173 · Granted Apr 1, 2014

Tunnel path MTU discovery

Inventors: Charles Bransi (San Jose, CA); Adoor Balasubramanian (Cupertino, CA); Li Meng (San Jose, CA)
Assignee: Brocade Communications Systems, Inc.
H04L47/36H04L1/0007
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 8,687,653
App. No.
12/610,173
Granted
Apr 1, 2014
Kind
B2
Abstract

A solution for tunnel path MTU discovery includes, at a first network device configured as an origination endpoint for a tunnel, storing a keep-alive packet having a size of an interface maximum transmission unit (MTU), the keep-alive packet indicating the packet should not be fragmented, the second network device configured as a termination endpoint for the tunnel. If the sending fails, the size of the keep-alive packet is iteratively changed to converge upon a path MTU, where the path MTU is the size of a largest keep-alive packet that can be sent from the first network device to the second network device without fragmentation.

Claims (84)

1. A method comprising:

at a network device configured as an origination endpoint for a tunnel, storing a keep-alive packet having a size of an interface maximum transmission unit (MTU) for sending to a termination endpoint for the tunnel, the keep-alive packet indicating the packet should not be fragmented;

if an acknowledgement keep-alive packet responsive to the sending is not received within a predetermined time, repeating the sending until the acknowledgement keep-alive packet is received or until a predetermined number of keep-alive packets have been sent without receiving the acknowledgement keep-alive packet; and

if the acknowledgement keep-alive packet is not received, iteratively changing the size of the keep-alive packet to converge upon a path MTU, the path MTU comprising the size of a largest keep-alive packet that can be sent from the network device to the termination endpoint without fragmentation.

2. The method of claim 1 wherein the changing comprises performing a binary search for the path MTU.

3. The method of claim 2 wherein the binary search is initially bounded by:

a minimum size comprising the value 8 plus a re-assembly size of a first packet fragment returned to the first network device in response to the first network device sending a second keep-alive packet having a size less than the interface MTU and indicating the second packet may be fragmented; and

a maximum size comprising the interface MTU minus the value 8.

4. The method of claim 1 , further comprising:

after the path MTU is determined, sending a keep-alive packet having a size of the path MTU at a predetermined interval.

5. The method of claim 4 , further comprising:

if the sending of the keep-alive packet having a size of the path MTU fails, repeating the changing.

6. The method of claim 4 , further comprising:

after a predetermined interval, sending a keep-alive packet having a size of the path MTU plus a predetermined amount; and

if the sending of the keep-alive packet having a size of the path MTU plus a predetermined amount succeeds, repeating the storing.

7. The method of claim 6 wherein the predetermined amount is eight bytes.

8. The method of claim 6 wherein the predetermined interval is based at least in part on an interval of a second keep-alive packet used to determine whether the tunnel is operational.

9. The method of claim 1 wherein

the first network device comprises a router; and

the termination endpoint comprises a router.

10. The method of claim 1 wherein the tunnel comprises a Generic Routing Encapsulation (GRE) tunnel.

11. A network device comprising:

a memory; and

one or more processors configured to:

store a keep-alive packet having a size of an interface maximum transmission unit (MTU) for sending to a termination endpoint for the tunnel, the network device configured as an origination endpoint for the tunnel, the keep-alive packet indicating the packet should not be fragmented;

if an acknowledgement keep-alive packet responsive to the sending is not received within a predetermined time, repeat the sending until the acknowledgement keep-alive packet is received or until a predetermined number of keep-alive packets have been sent without receiving the acknowledgement keep-alive packet; and

if the acknowledgement keep-alive packet is not received, iteratively change the size of the keep-alive packet to converge upon a path MTU, the path MTU comprising the size of a largest keep-alive packet that can be sent from the network device to the termination endpoint without fragmentation.

12. The network device of claim 11 wherein the changing comprises performing a binary search for the path MTU.

13. The network device of claim 12 wherein the binary search is initially bounded by:

a minimum size comprising the value 8 plus a re-assembly size of a first packet fragment returned to the first network device in response to the first network device sending a second keep-alive packet having a size less than the interface MTU and indicating the second packet may be fragmented; and

a maximum size comprising the interface MTU minus the value 8.

14. The network device of claim 11 wherein the one or more processors are further configured to:

after the path MTU is determined, send a keep-alive packet having a size of the path MTU at a predetermined interval.

15. The network device of claim 14 wherein the one or more processors are further configured to:

if the sending of the keep-alive packet having a size of the path MTU fails, repeat the changing.

16. The network device of claim 14 wherein the one or more processors are further configured to:

after a predetermined interval, send a keep-alive packet having a size of the path MTU plus a predetermined amount; and

if the sending of the keep-alive packet having a size of the path MTU plus a predetermined amount succeeds, repeat the storing.

17. The network device of claim 16 wherein the predetermined amount is eight bytes.

18. The network device of claim 16 wherein the predetermined interval is based at least in part on an interval of a second keep-alive packet used to determine whether the tunnel is operational.

19. The network device of claim 11 wherein

the network device comprises a router; and

the termination endpoint comprises a router.

20. The network device of claim 11 wherein the tunnel comprises a Generic Routing Encapsulation (GRE) tunnel.

21. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method, the method comprising:

at a network device configured as an origination endpoint for a tunnel, storing a keep-alive packet having a size of an interface maximum transmission unit (MTU) for sending to a termination endpoint for the tunnel, the keep-alive packet indicating the packet should not be fragmented;

if an acknowledgement keep-alive packet responsive to the sending is not received within a predetermined time, repeating the sending until the acknowledgement keep-alive packet is received or until a predetermined number of keep-alive packets have been sent without receiving the acknowledgement keep-alive packet; and

if the acknowledgement keep-alive packet is not received, iteratively changing the size of the keep-alive packet to converge upon a path MTU, the path MTU comprising the size of a largest keep-alive packet that can be sent from the network device to the termination endpoint without fragmentation.

22. A network device comprising:

means for, at a network device configured as an origination endpoint for a tunnel, storing a keep-alive packet having a size of an interface maximum transmission unit (MTU) for sending to a termination endpoint for the tunnel, the keep-alive packet indicating the packet should not be fragmented;

means for, if an acknowledgement keep-alive packet responsive to the sending is not received within a predetermined time, repeating the sending until the acknowledgement keep-alive packet is received or until a predetermined number of keep-alive packets have been sent without receiving the acknowledgement keep-alive packet; and

means for, if the acknowledgement keep-alive packet is not received, iteratively changing the size of the keep-alive packet to converge upon a path MTU, the path MTU comprising the size of a largest keep-alive packet that can be sent from the network device to the termination endpoint without fragmentation.

23. A method comprising:

at a network device configured as a termination endpoint for a tunnel, determining whether a keep-alive packet received via the tunnel has been fragmented;

if the keep-alive packet has been fragmented, updating a header of the keep-alive packet to indicate a size of a first fragment of the fragmented keep-alive packet; and

storing the updated keep-alive packet for sending, via the tunnel, to an origination endpoint for the tunnel, the fragment size for use in determining, by the origination endpoint, a path maximum transmission unit (MTU), the path MTU comprising the size of a largest keep-alive packet that can be sent from the origination endpoint to the network device without fragmentation.

24. The method of claim 23 wherein the determining a path MTU comprises performing a binary search initially bounded by:

a minimum size comprising the value 8 plus the fragment size; and

a maximum size comprising an interface MTU minus the value 8.

25. The method of claim 23 wherein

the network device comprises a router; and

the origination endpoint comprises a router.

26. The method of claim 23 wherein the tunnel comprises a Generic Routing Encapsulation (GRE) tunnel.

27. A network device comprising:

a memory; and

one or more processors configured to:

determine whether a keep-alive packet received via a tunnel has been fragmented, the network device configured as a termination endpoint for the tunnel;

if the keep-alive packet has been fragmented, update a header of the keep-alive packet to indicate a size of a first fragment of the fragmented keep-alive packet; and

store the updated keep-alive packet for sending, via the tunnel, to an origination endpoint for the tunnel, the fragment size for use in determining, by the origination endpoint, a path maximum transmission unit (MTU), the path MTU comprising the size of a largest keep-alive packet that can be sent from the origination endpoint to the network device without fragmentation.

28. The network device of claim 27 wherein the one or more processors are further configured to determine the path MTU by performing a binary search initially bounded by:

a minimum size comprising the value 8 plus the fragment size; and

a maximum size comprising an interface MTU minus the value 8.

29. The network device of claim 27 wherein

the network device comprises a router; and

the origination endpoint comprises a router.

30. The network device of claim 27 wherein the tunnel comprises a Generic Routing Encapsulation (GRE) tunnel.

31. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method, the method comprising:

at a network device configured as a termination endpoint for a tunnel, determining whether a keep-alive packet received via the tunnel has been fragmented;

if the keep-alive packet has been fragmented, updating a header of the keep-alive packet to indicate a size of a first fragment of the fragmented keep-alive packet; and

storing the updated keep-alive packet for sending, via the tunnel, to an origination endpoint for the tunnel, the fragment size for use in determining, by the origination endpoint, a path maximum transmission unit (MTU), the path MTU comprising the size of a largest keep-alive packet that can be sent from the origination endpoint to the network device without fragmentation.

32. A network device comprising:

means for, at a network device configured as a termination endpoint for a tunnel, determining whether a keep-alive packet received via the tunnel has been fragmented;

means for, if the keep-alive packet has been fragmented, updating a header of the keep-alive packet to indicate a size of a first fragment of the fragmented keep-alive packet; and

means for storing the updated keep-alive packet for sending, via the tunnel, to an origination endpoint for the tunnel, the fragment size for use in determining, by the origination endpoint, a path maximum transmission unit (MTU), the path MTU comprising the size of a largest keep-alive packet that can be sent from the origination endpoint to the network device without fragmentation.

Assignments (5)
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2009
From: BRANSI, CHARLES; BALASUBRAMANIAN, ADOOR; MENG, LI
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 023563/0997 →
Continuity (1)
Related Publication 20110103399A1 · May 5, 2011