System and method for optimized calculation of path maximum transmission unit discovery in a network

An information handling system includes a memory to store a set of instructions, and a processor. The processor receives a maximum transmission unit (MTU) packet from a second information handling system via a first portion of a communication path, and in response to the information handling system not being a final destination information handling system compares a current MTU size of the communication path with a next MTU size of the communication path. In response to the next MTU size being smaller than the initial MTU size, the processor replaces the current MTU size with the next MTU size as the current MTU size, otherwise maintains the current MTU size as the current MTU size. The processor also provides the MTU packet to a next information handling system via the next portion of the communication path.

FIELD OF THE DISCLOSURE

This disclosure generally relates to information handling systems, and more particularly relates to calculating a path maximum transmission unit discovery in a network.

BACKGROUND

SUMMARY

An information handling system includes a first node, a second node, and a third node. The first node sends a maximum transmission unit (MTU) packet on a communication path, and an initial MTU size of the communication path is stored a first field of a header of the MTU packet. The second node receives the MTU packet, determines whether a bit is set in a second field of the header of the MTU packet, compares the initial MTU size with a next MTU size of the communication path in response to the bit being set. In response to the next MTU size being smaller than the initial MTU size, the second node replaces the initial MTU size with the next MTU size as a current MTU size within first field of the header of the MTU packet, otherwise the second node maintains the initial MTU size as the current MTU size within first field. The third node receives the MTU packet and generates an acknowledgement (ACK) message. The current MTU size stored in the first field of the header of the MTU packet is stored in a header of the ACK message. The first node receives the ACK message and sets the current MTU size within the field of the header of the ACK message as a path maximum transmission unit discovery value for the communication path from the first node to the third node.

DETAILED DESCRIPTION OF DRAWINGS

The network100includes a network device102, routers104,106, and108, and a network device110. The network100includes a communication path for data packets to be sent from the network device102and to the network device110. In an embodiment, the communication path can be divided into multiple sections or portions in between each component of the network100. For example, a first portion112of the communication path is located between the network device102and the router104, a second portion114is located between the router104and the router106, a third portion116is located between the router106and the router108, and a fourth portion118is located between the router108and the network device110. The network device110can provide a packet120to the network device110via the routers104-108and the portion112-118of the communication path. The packet120can include an Internet Protocol (IP) header122and a payload portion124. Upon the network device110receiving the packet120, the network device110can generate an acknowledgment (ACK) message130to provide to the network device102. The ACK message130includes an IP header132and a payload portion134.

Prior to the network device102providing data packets to the network device104, a path maximum transmission unit discovery (PMTUD) calculation must be perform to determine the data packet size that can be transmitted along the communication path. The maximum transmission unit (MTU) for a communication path is the largest size packet that can be sent in a packet based network such as the Internet. The PMTUD calculation can be performed by the network device102providing a special PMTUD calculation packet or test MTU packet120along the communication path to the network device110. In an embodiment, the payload portion124can be empty or can have a minimum amount of data to prevent the test MTU packet120from being dropped if one of the portions112-118of the communication path has a MTU size that is smaller than the size of the test MTU with a large data payload. The PMTUD calculation with be described with reference toFIGS. 1-6.

The network device102can generate the test MTU packet120having a header122including the MTU size of the portion112of the communication as a total length value202, a bit X of flag204is set, and additional information fields206for the MTU packet as shown inFIG. 2. The additional information fields206in header122can include information that is well known in the art, such as a source IP address for the test MTU packet, a destination IP address, a fragment offset, and the like. The test MTU packet can also include a transmission control protocol (TCP) header208, an application header210, and the payload portion124. The bit X of flag204being set indicates to the next component, such as the router104, that the packet is a test MTU packet and that the packet will include no payload data or a minimum amount of data in the payload portion124.

The network device102can store the MTU size for portion112of the communication path in the total length field202to indicate an initial MTU size for the communication path. For example, the network device102can store the value 6455 in the total length field202. In an embodiment, the MTU size value can be specify the MTU size in octets or eight-bit bytes. The network device102can also set a fragmentation bit212within the header122to indicate that the MTU packet120can be reduced in size, if needed, based on the MTU sizes of the different portions112-118of the communication path. Upon the network device102setting the bit X of flag204, storing the MTU size for portion112in the total length field202, and setting the fragmentation bit212, the network device can provide the test MTU packet to the router104.

The router104can receive the test MTU packet from the network device102. The router104can then check the bit X of the flag field204in the test MTU packet120to determine whether the test MTU packet is a test packet. If the bit X of the flag field204is set, the router104can read the MTU size stored in the total length field202of the test MTU packet120. The router104can also determine the next MTU size for the next portion114of the communication path, such as 3820. The router104can then compare the current MTU size stored in the total length field202with the next MTU size of portion114to determine whether the next MTU size is less than the current MTU size. For example, the current MTU size is 6455 and the next MTU size is 3820, such that the next MTU is less than the current MTU.

When the next MTU size is less than the current MTU size, the router104can replace the MTU size in the total length field202of the MTU packet with the next MTU size, such that the next MTU size, 3820, is the current MTU size in the test MTU packet120as shown inFIG. 3. However, if the next MTU size is not less than the current MTU size in the total length field202, the router104can maintain the current MTU size value within the total length field.

The router104can also verify that the fragmentation bit212is set, and in response to the fragmentation bit being set the router can determine whether next MTU size is less than the test MTU packet size. If the next MTU size is less than the test MTU packet size, the router104can cut short the payload portion124of the test MTU packet to match the next MTU size of portion114of the communication path. The router104can then provide the test packet120to the router106via portion114of the communication path. Thus, the router104can change the current MTU size in the total length field202and can cut the size of the MTU packet120instead of dropping the MTU packet and sending an Internet Control Message Protocol (ICMP) response message to the network device102. The ICMP response message, if sent, would indicate that the MTU packet120was dropped and that the MTU size of the next portion114is less than the size of the MTU packet120.

The router106can receive the test MTU packet from the router104. The router106can then check the bit X of the flag field204in the test MTU packet120to determine whether the test MTU packet is a test packet. If the bit X of the flag field204is set, the router104can read the MTU size stored in the total length field202of the test MTU packet120. The router106can also determine the next MTU size for the next portion116of the communication path, such as 1500. The router106can then compare the current MTU size stored in the total length field202with the next MTU size of portion116to determine whether the next MTU size is less than the current MTU size. For example, the current MTU size, at router106, is 3820 and the next MTU size is 1500, such that the next MTU is less than the current MTU.

When the next MTU size is less than the current MTU size, the router106can replace the MTU size in the total length field202of the MTU packet120with the next MTU size, such that the next MTU size, 1500, is the current MTU size in the test MTU packet120as shown inFIG. 4. However, if the next MTU size is not less than the current MTU size in the total length field202, the router106can maintain the current MTU size value within the total length field.

The router106can also verify that the fragmentation bit212is set, and in response to the fragmentation bit being set the router can determine whether next MTU size is less than the test MTU packet size. If the next MTU size is less than the test MTU packet size, the router106can cut short the payload portion124of the test MTU packet to match the next MTU size of portion116of the communication path. The router106can then provide the test packet120to the router108via portion116of the communication path. Thus, the router106can change the current MTU size in the total length field202and can cut the size of the MTU packet120instead of dropping the MTU packet and sending an ICMP response message to the router104.

The router108can receive the test MTU packet from the router106. The router108can then check the bit X of the flag field204in the test MTU packet120to determine whether the test MTU packet is a test packet. If the bit X of the flag field204is set, the router108can read the MTU size stored in the total length field202of the test MTU packet120. The router108can also determine the next MTU size for the next portion118of the communication path, such as 700. The router108can then compare the current MTU size stored in the total length field202with the next MTU size of portion118to determine whether the next MTU size is less than the current MTU size. For example, the current MTU size, at router108, is 1500 and the next MTU size is 700, such that the next MTU is less than the current MTU.

When the next MTU size is less than the current MTU size, the router108can replace the MTU size in the total length field202of the MTU packet with the next MTU size, such that the next MTU size, 700, is the current MTU size in the test MTU packet120as shown inFIG. 5. However, if the next MTU size is not less than the current MTU size in the total length field202, the router108can maintain the current MTU size value within the total length field.

The router108can also verify that the fragmentation bit212is set, and in response to the fragmentation bit being set the router can determine whether next MTU size is less than the test MTU packet size. If the next MTU size is less than the test MTU packet size, the router108can cut short the payload portion124of the test MTU packet to match the next MTU size of portion118of the communication path. The router108can then provide the test packet120to the network device110via portion118of the communication path. Thus, the router108can change the current MTU size in the total length field202and can cut the size of the MTU packet120instead of dropping the MTU packet and sending an ICMP response message to the router106.

The network device110can receive the test MTU packet from the router108, and can generate an acknowledgement (ACK) message130based on the test MTU packet. The ACK message includes a TCP header602, the IP header132, an application header608, and the payload portion134as shown inFIG. 4. The TCP header602includes a reserved field604that can be utilized by the network device110to provide a final MTU size for the communication path to the network device102. The TCP header602also includes additional information fields606. The additional information fields606in the TCP header602can include information that is well known in the art, such as a source port, a destination port, a sequence number, an acknowledgement number, and the like.

The network device110can read the MTU value stored in the total length field202, such as 700 inFIG. 5, and can set this as a final MTU size for the communication path between the network devices102and110. The network device can then store the final MTU size, 700, within the reserved field604of the TCP header602of the ACK message130as shown inFIG. 6. The network device110can then provide the ACK message130to the network device102as shown inFIG. 1.

The network device102can receive the ACK message130and read the final MTU size from the reserved field604of the ACK message130. The network device102can then set the final MTU size from the ACK message130as the PMTUD value for the communication path including the portions112-118and the routers104-108in between the network devices102and108. The network device102can utilize the PMTUD value when sending non-test MTU packets. For example, the network device102can verify that the size of a packet to be transmitted to the network device110is equal to or less than the PMTUD value for the communication path.

FIG. 7shows a method700for determining a path maximum transmission unit size for the network. At block702, a maximum transmission unit (MTU) size is determined for a first portion of a communication path. In an embodiment, first portion can be between the network device102and the router104ofFIG. 1. A test MTU packet is created at block704. In an embodiment, the test MTU packet includes the MTU size of the first portion as a current MTU size stored in a first field of a header of the test MTU packet, and includes a bit in a second field of the header being set. At block706, the test MTU packet is provided to a next information handling system in a network via the first portion of the communication path. In an embodiment, the next information handling system can be anyone of the routers104-108and network device110ofFIG. 1. The test MTU packet is received at the next information handling system at block708.

At block710, a determination is made whether the next information handling system is a final destination device in the communication path. If the next information handling system is the final destination device, the flow continues at block724, otherwise the flow continues at block712and a determination is made whether the bit in the second field of the header of the test MTU packet is set. If the bit in the second field is not set, the packet is dropped, based on the packet not being a test MTU packet at block714. If the bit is set, the next MTU size for a next portion of the communication path is determined at block716. At block718, a determination is made whether the next MTU size is less than the current MTU size. If the next MTU size is less than the current MTU size, then the current MTU size is replaced with the next MTU size within the header at block720and the flow continues as stated above at block706. However, if the next MTU size is not less than the current MTU size, then the current MTU size is maintained within the header at block722and the flow continues at block706.

At block724, an acknowledgement (ACK) message is generated. In an embodiment, the ACK message includes the current MTU size in a third field of a header of the ACK message. At block726, the ACK message is received at an initial network device. In an embodiment, the initial network device is the network device102ofFIG. 1. The current MTU size within the header of the ACK message is set as a path maximum transmission unit discovery value for the communication path at block728.

FIG. 8shows a method800for determining a path maximum transmission unit size for the network. At block802, a maximum transmission unit (MTU) packet is received at a router in a network. In an embodiment, the MTU packet can be received at any of the routers104,106, and108ofFIG. 1, and can be received from the network device102, or one of the routers104and106ofFIG. 1. In an embodiment, the MTU packet is provided along a transmission path between two network devices to determine the MTU discovery value for the transmission path. A determination is made that a flag is set in a header of the MTU packet at block804. In an embodiment, the flag being set indicates that the packet is a MTU calculation packet and that the packet will not have a payload, or with have a minimum data payload. At block806, a current MTU size of the MTU packet is compare with a next MTU size of the transmission path. In an embodiment, the current MTU size is the MTU value for the portion of the transmission path between the network device or router that the MTU packet was received from and router that received the MTU packet, and the next MTU size is the MTU value between the router that received the MTU packet and the next router in the transmission path.

At block808, a determination is made whether the next MTU size is less than the current MTU size. If the next MTU size is less than the current MTU size, then the current MTU size is replaced with the next MTU size within the header at block810. However, if the next MTU size is not less than the current MTU size, then the current MTU size is maintained within the header at block812. At block814, the MTU packet is received at an end network device. An acknowledgement (ACK) message is generated, at the end network device, based on MTU size within the header of the MTU packet at block816. At block818, the ACK message is received at an initial network device. The MTU size within the header of the ACK message is set as a path maximum transmission unit discovery value for the communication path at block820.

As shown inFIG. 9, an information handling system900, such as the network device102or110, can include a first physical processor902coupled to a first host bus904and can further include additional processors generally designated as nthphysical processor906coupled to a second host bus908. The first physical processor902can be coupled to a chipset910via the first host bus904. Further, the nthphysical processor906can be coupled to the chipset910via the second host bus908. The chipset910can support multiple processors and can allow for simultaneous processing of multiple processors and support the exchange of information within information handling system900during multiple processing operations.

According to one aspect, the chipset910can be referred to as a memory hub or a memory controller. For example, the chipset910can include an Accelerated Hub Architecture (AHA) that uses a dedicated bus to transfer data between first physical processor902and the nthphysical processor906. For example, the chipset910, including an AHA enabled-chipset, can include a memory controller hub and an input/output (I/O) controller hub. As a memory controller hub, the chipset910can function to provide access to first physical processor902using first bus904and nthphysical processor906using the second host bus908. The chipset910can also provide a memory interface for accessing memory912using a memory bus914. In a particular embodiment, the buses904,908, and914can be individual buses or part of the same bus. The chipset910can also provide bus control and can handle transfers between the buses904,908, and914.

According to another aspect, the chipset910can be generally considered an application specific chipset that provides connectivity to various buses, and integrates other system functions. For example, the chipset910can be provided using an Intel® Hub Architecture (IHA) chipset that can also include two parts, a Graphics and AGP Memory Controller Hub (GMCH) and an I/O Controller Hub (ICH). For example, an Intel 820E, an 815E chipset, or any combination thereof, available from the Intel Corporation of Santa Clara, Calif., can provide at least a portion of the chipset910. The chipset910can also be packaged as an application specific integrated circuit (ASIC).

The information handling system900can also include a video graphics interface922that can be coupled to the chipset910using a third host bus924. In one form, the video graphics interface922can be an Accelerated Graphics Port (AGP) interface to display content within a video display unit926. Other graphics interfaces may also be used. The video graphics interface922can provide a video display output928to the video display unit926. The video display unit926can include one or more types of video displays such as a flat panel display (FPD) or other type of display device.

The information handling system900can also include an I/O interface930that can be connected via an I/O bus920to the chipset910. The I/O interface930and I/O bus920can include industry standard buses or proprietary buses and respective interfaces or controllers. For example, the I/O bus920can also include a Peripheral Component Interconnect (PCI) bus or a high speed PCI-Express bus. In one embodiment, a PCI bus can be operated at approximately 33 MHz and a PCI-Express bus can be operated at more than one speed, such as 2.5 GHz, 5 GHz, 8 GHz, and 16 GHz. PCI buses and PCI-Express buses can be provided to comply with industry standards for connecting and communicating between various PCI-enabled hardware devices. Other buses can also be provided in association with, or independent of, the I/O bus920including, but not limited to, industry standard buses or proprietary buses, such as Industry Standard Architecture (ISA), Small Computer Serial Interface (SCSI), Inter-Integrated Circuit (I2C), System Packet Interface (SPI), or Universal Serial buses (USBs).

In an alternate embodiment, the chipset910can be a chipset employing a Northbridge/Southbridge chipset configuration (not illustrated). For example, a Northbridge portion of the chipset910can communicate with the first physical processor902and can control interaction with the memory912, the I/O bus920that can be operable as a PCI bus, and activities for the video graphics interface922. The Northbridge portion can also communicate with the first physical processor902using first bus904and the second bus908coupled to the nthphysical processor906. The chipset910can also include a Southbridge portion (not illustrated) of the chipset910and can handle I/O functions of the chipset910. The Southbridge portion can manage the basic forms of I/O such as Universal Serial Bus (USB), serial I/O, audio outputs, Integrated Drive Electronics (IDE), and ISA I/O for the information handling system900.

The information handling system900can further include a disk controller932coupled to the I/O bus920, and connecting one or more internal disk drives such as a hard disk drive (HDD)934and an optical disk drive (ODD)936such as a Read/Write Compact Disk (R/W CD), a Read/Write Digital Video Disk (R/W DVD), a Read/Write mini-Digital Video Disk (R/W mini-DVD), or other type of optical disk drive.

Although only a few exemplary embodiments have been described in detail in the exemplary embodiments without materially departing from the novel teachings and advantages of the embodiments of the present disclosure. For example, the methods described in the present disclosure can be stored as instructions in a computer readable medium to cause a processor, such as chipset910, to perform the method. Additionally, the methods described in the present disclosure can be stored as instructions in a non-transitory computer readable medium, such as a hard disk drive, a solid state drive, a flash memory, and the like. Accordingly, all such modifications are intended to be included within the scope of the embodiments of the present disclosure as defined in the following claims. In the claims, means-plus-function clauses are intended to cover the structures described herein as performing the recited function and not only structural equivalents, but also equivalent structures.