Host devices may exchange messages over a network. As one example, Transmission Control Protocol (TCP) is a transport layer communications standard that can be used to exchange these messages. In particular, using TCP, two devices can open a connection to communicate with each other using an initial handshake sequence. As part of the handshake sequence, the two devices can share corresponding maximum segment size (MSS) parameters, which limit the size of data packets (more specifically, the size of the payload in the packets) that are sent between the devices during the TCP connection.
Host devices may communicate with one another using the Transmission Control Protocol (TCP) standard to exchange messages over a network. To establish a TCP session between hosts (e.g., a client device and a server device), a 3-way handshake using SYN, SYN ACK, and ACK packets may be conveyed between the hosts. In particular, the SYN and SYN ACK packets may each include a maximum segment size (MSS) parameter to indicate the maximum size of the payload that can be sent between the client and server devices (e.g., the SYN packet includes the MSS value indicative of the maximum payload size of packets from the server to the client, and the SYN ACK packet includes the MSS value indicative of the maximum payload size of packets from the client to the server).
To reduce or eliminate the likelihood of packet fragmentation, the TCP MSS value can be updated with a reduced TCP MSS (clamp) value based on a fixed pre-determined end-to-end path Maximum Transmission Unit (MTU) value at an edge router connected to a sending host such that the receiving host receives the reduced TCP MSS value and only sends packets with sizes that conform to the reduced TCP MSS value. However, this approach has several limitations, especially in network environments where paths (and therefore path MTU values) change as network topology and packet routing changes dynamically during operation, where path MTU values for a same path have different values depending on the direction of packet traversal, and/or where a large number of tunnel and path groups are managed therein.
To mitigate these issues in one illustrative example, an ingress module on a router may automatically rewrite a TCP MSS value on an incoming SYN ACK (or TCP SYN) packet based on the MTU values for all of the different paths from the router to the opposite router sending the packet. This may be especially useful for dynamic path selection tunnels where different paths with varying MTU values may be used to convey packets during a TCP session.
Details for the rewriting of a packet size parameter based on network dynamics (as illustrated in the above example) are further described below.
A computer network can include network equipment forming a variety of network devices that interconnect end hosts of the network. Network devices can include switches, bridges, routers, hubs, repeaters, firewalls, wireless access points, devices serving other networking functions, devices that include the functionality of two or more of these devices, and management equipment that manage and control the operation of one or more of these devices. End hosts of the network can include computers, servers, network service devices, and any other suitable types of specialized or general-purpose host equipment, e.g., each running one or more client-side and/or server-side applications.
In the example of
Network portions 8A and 8B may respectively represent two interconnected domains, two interconnected regions (within the same or different domains), and/or two interconnected sites (within the same or different regions). Configurations in which network portions 8A and 8B represent two different sites that are interconnected via network paths 12 (e.g., virtual tunnels) are described herein as an illustrative example. In this manner, network 8 may sometimes be referred to herein as an enterprise network having multiple enterprise network sites 8A and 8B.
As shown in
Network devices in network portion 8A, network devices in network portion 8B, and network devices in other network portions may communicate (e.g., transfer information in the form of network traffic such as data packets) with one another using one or more service provider networks 14. As examples, service provider networks 14 may include one or more internet service provider networks (e.g., the Internet) or other public service provider networks, may include private service provider networks (e.g., multiprotocol label switching (MPLS) networks), may include other types of service provider networks such as telecommunication service provider networks (e.g., an LTE network), etc.
In the example of
Edge router 10-1 and edge router 10-2 may be connected to each other via a number of different network paths 12-1, 12-2, . . . , 12-N. Paths 12 (collectively referring to paths 12-1, 12-2, . . . , 12-N) may each run through any suitable number of network devices (e.g., intervening (hub) routers, no intervening network devices, etc.) in network 8 and through one or more of the same or different service provider networks 14.
The elements and their relative arrangements shown in
These network devices in network 8 may form the underlying (physical) topology of network 8 implementing the WAN. One or more controllers such as controller(s) 16 may be configured to control the underlying network devices (based on routing tables stored at the underlying network devices and/or controller(s) 16) to implement a desired (software-defined) virtual topology that overlays the underlying topology of the WAN. When implemented in this manner, the network (e.g., network 8) may be referred to as a software-defined wide area network (SD-WAN).
In one illustrative arrangement, each path 12 (referring to each instance of paths 12) may implement a virtual tunnel link between router 10-1 and router 10-2 (e.g., through one or more service provider networks 14). Each virtual tunnel link may be a single-virtual-hop path or a multi-virtual-hop path (containing a combination of two or more serially-connected single-virtual-hop paths) between router 10-1 and router 10-2. While any given path 12 may extend across vast geographical locations (e.g., between network devices at different sites, between network devices at different regions, etc.) to connect routers 10-1 and 10-2 and thereby end hosts 20-1 and 20-2 behind them, the path 12 may implement a tunnel as part of the SD-WAN (therefore sometimes referred to herein as a SD-WAN tunnel). In other words, each path 12 implementing a virtual tunnel may have a first virtual tunnel end point at router 10-1 (at the router interface to host 20-1) and may have a second virtual tunnel end point at router 10-2 (at the router interface to host 20-2).
If desired, any of these tunnels may be implemented based on any suitable encapsulation or tunneling method such as Generic Router Encapsulation (GRE), Virtual Extensible LAN (VXLAN), IP Security (IPsec), etc.
If desired, different data packets conveyed between routers 10-1 and 10-2 (e.g., end hosts 20-1 and 20-2) may be dynamically routed through different paths 12. In particular, each path 12 may have associated characteristics or performance metrics (e.g., latency, jitter, loss rate, bandwidth etc.) and associated costs. One or more controller(s) 16 may dynamically update the stored routing tables to perform the dynamic routing of data packets (e.g., based on the type of data packets being routed, based on network load, based on path performance metrics, etc.).
To convey these data packets and ensure the successful delivery of data and message over one or more networks, hosts such as host 20-1 and host 20-2 may communicate with one another using the Transmission Control Protocol (TCP), which enables application programs and computing devices (e.g., hosting the application programs) to exchange messages over the one or more networks in a standardized manner. In particular, TCP supplements the Internet Protocol (IP) in enabling routers (e.g., routers 10-1 and 10-2) to route, during a TCP connection (sometimes referred to as a TCP session), segments of application messages across network portions (e.g., network portions 8A and 8B) connected by one or more service provider networks (e.g., the Internet).
In order to convey data packets through a network path (e.g., a path 12) based on TCP and IP, a packet-sending router sends data (payload) with one or more headers (e.g., an IP header, a TCP header, etc.). In some illustrative configurations, paths 12 may implement one or more (SD-WAN) tunnels, and as such, tunneling headers (header fields used to implement the tunnel functionality) may be used to encapsulate the data payload (e.g., the TCP/IP packet already containing the TCP/IP headers). If desired, other security headers (e.g., an IPsec header) may be used to encapsulate the data payload (e.g., the TCP/IP packet).
IP header 42 may include various data fields (based on IP version) such as a version data field, a protocol data field, a header checksum data field, a source IP address data field, a destination IP address data field, options data fields, a traffic class data field, a flow label data field, a payload length data field, etc.
TCP header 34 may include various data fields such as a source port data field, a destination port data field, a sequence number data field, an acknowledgement number data field, a checksum data field, a flags data field 36, an options data field 38 that can contain zero or more options, etc. In particular, flags data field 36 may include ACK (flag) bit 36-1 and SYN (flag) bit 36-2. Options data field 38 may include a maximum segment size (MSS) data field 38-1 containing MSS data (e.g., an MSS value).
To open a connection using TCP, two hosts may perform a 3-way handshake (e.g., collectively convey a sequence of three messages between the two hosts) that involve the use of ACK bit 36-1, SYN bit 36-2, and MSS data field 38-1, among other data fields.
In the example of
As shown in
SYN packet 30-1 and SYN/ACK packet 30-2 may each include a MSS data field containing a (TCP) MSS value. The MSS value in the corresponding packet may represent the maximum size of a TCP segment (e.g., size of data payload 33) that can be received by the packet transmitting host device of the TCP connection. In particular, device 40-1 (e.g., host device 20-1 in
Relevantly, network paths in the underlying network (e.g., network 8) may each have a path Maximum Transmission Unit (MTU) value indicative of the total size of information (e.g., size of the entire packet, size of the entire frame, etc.) able to be conveyed using the network path. Using network 8 in
While edge routers (e.g., the edge router on the ingress-side of path 12) coupled to the client and the server can perform TCP MSS clamping based on a manual (user) input of a known or default end-to-end path MTU clamp value between the edge routers such that a smaller TCP MSS clamp value (e.g., the end-to-end path MTU value excluding a header length) may overwrite the existing larger TCP MSS value in packets to prevent fragmentation, this approach has many limitations.
In particular, this approach requires manual configuration of the TCP MSS value and requires the knowledge of the path MTU value in a specific direction (opposite of the one that the packet with the TCP MSS clamp value is traversing). However, in asymmetric networks where the MTU value for a path when conveying a packet from the sender to the receiver differs from the MTU value for the same path when conveying packet from the receiver to the sender, the optimal TCP MSS values on both sides may not easily be known and therefore cannot be used (e.g., sub-optimal TCP MSS values are then used). Further, in dynamic networks where routing paths and therefore path MTU values change often, it may be burdensome to manually reconfigure the optimal TCP MSS value in response to each of these changes. Moreover, in large and scaling networks that include a large number of tunnel or path groups, the above-mentioned issues may further be exacerbated by the need to manually determine and configure large numbers of TCP MSS configurations and manually reconfigure the same large number of TCP MSS configurations as the path MTU values change dynamically.
To mitigate these issues or other similar issues (e.g., outside of the context of TCP MSS parameters as part of TCP connection establishment), a router may rewrite the packet size parameter values such as the TCP MSS values based on network dynamics. Configurations in which TCP MSS values are rewritten based on network dynamics are described herein as an example. In these configurations, a router (e.g., on an egress side of a tunnel path) that receives the packet (e.g., SYN packet 30-1 or SYN/ACK packet 30-2) may store path MTU information and update the path MTU information dynamically in response to network and path updates. The router may use the stored (up-to-date) MTU information to determine an optimal TCP MSS value associated with the TCP connection and replace the previous TCP MSS value in the packet with the optimal TCP MSS value.
Router 10-1 may be connected to router 10-2 via three different paths: path 12-1 (the combination of paths 12-1A and 12-1B), path 12-2, and path 12-3. Each of these paths may be tunnel paths (e.g., a virtual tunnel path that overlays underlying network devices). In some arrangements described herein as an illustrative example, network 8 may be a WAN overlaid with a virtual network topology having software-defined routing paths, thereby forming a SD-WAN. Furthermore, in these arrangements, each of paths 12-1, 12-2, and 12-3 may be a dynamic path selection (DPS) tunnel or path. Data packets between router 10-1 and router 10-2 may be conveyed selectively using one or more of the DPS tunnels. As an example, at each given time, a router (e.g., router 10-1 or 10-2) may direct data packets over a DPS tunnel with better or the best characteristics when compared to one or more of the other DPS tunnels as determined based on one or more path metrics such as load, packet loss, latency, jitter, etc.
As shown in
In the example of
In particular, (after receiving a SYN packet at host 20-2) host 20-2 may transmit SYN/ACK packet 30-2 having an MSS value of MSS2 to router 10-2. Router 10-2 may then convey SYN/ACK packet 30-2 having an MSS value of MSS2 to router 10-1 through one of paths 12-1, 12-2, or 12-3. Upon receipt of SYN/ACK packet 30-2, router 10-1 may rewrite the MSS value of MSS2 with an updated MSS value of MSS2′ (and modify any other appropriate data fields such as a checksum data field). Router 10-1 may subsequently transmit SYN/ACK packet 30-2 with the updated MSS value of MSS2′ to host 20-1.
Router 10-1 may determine the updated MSS value to be rewritten into packet 30-2 based on the path MTU values of each of the paths (tunnels) connecting router 10-1 to router 10-2. In particular,
As shown in
In the example of router 10-1 and SYN/ACK packet 30-2 as described in connection with
As shown in
Still referring to
For these multi-virtual-hop paths (e.g., path 12-1), one or more controllers 16 (referred to herein in aggregate as controller 16) may instead determine the overall path MTU across the combination of path portions that make up these paths.
As shown in
If desired, instead of or in addition to the above-mentioned scheme for determining path MTU values for multi-virtual-hop paths internally within controller 16, the determination of path MTU values for multi-virtual-hop paths may occur at each router. As an example, controller 16 may receive path MTU value for path (portion) 12-1B from hub router 10-3 and may send the path MTU value for path 12-1B to router 10-1. Based on the internally determined path MTU value for path (portion) 12-1A and based on the received path MTU value for path 12-1B, router may determine the overall path MTU across the combination of path (portions) 12-1A and 12-1B (e.g., across path 12-1 connecting router 10-1 to router 10-2).
In general, whether calculated at controller 16 or at one of the routers, the overall path MTU value may be the smaller of the two MTU values (or in configurations where more than two portions exist to connect routers 10-1 and 10-2, the smallest of all MTU values across all portions). The overall path MTU value for path 12-1 may be used, along with the path MTU values for paths 12-2 and 12-3 to determine the updated optimal MSS value, e.g., using formulas 46 (
Especially in configurations in which paths 12-1, 12-2, and 12-3 implement dynamic path selection tunnels, it may be desirable to determine the MSS value based on the smallest of the path MTU values across all of the dynamic path selection tunnels because network traffic may be routed through any of the dynamic path selection tunnels. If desired, the determination of MSS values as described in connection with
To illustrate the determination of a minimum MTU value,
Based on the received path MTU value of path 12-1A and the received path MTh value of path 12-B, controller 16 may determine (e.g., calculate) that the overall path 12-1 (across the combination of path portions 12-1A and 12-1B) may be the lesser of the two path MTU values, which is 1450 bytes. Controller 16 may then send the calculated path MTU value of 1450 bytes to router 10-1.
Path 12-2 in
Based on the determined path MTU values of paths 12-1, 12-2, and 12-3, router 10-1 may determine that the most restrictive or minimum MTU value (MTUmin) across paths 12-1, 12-2, and 12-3 is 1300 bytes (e.g., the path MTU value of path 12-2).
To illustrate the determination of an updated optimal MSS value (corresponding to the minimum path MTU value),
As shown in table 52 in
As described in connection with
While some of the processing and/or determination operations described in connection with
As shown in
The router may calculate and store MTU information (e.g., the MTUmin value) for one or more (e.g., all) flow destination VTEP IP addresses in the network. Upon receiving a packet, the router may perform a source IP lookup operation in the overlay routing table to identify the destination VTEP IP address associated with the packet (e.g., and the corresponding network flow thereafter). This identified destination VTEP IP address may be used to lookup the corresponding stored minimum MTU value in table 54.
Accordingly, the router may calculate the updated MSS value based on the determined corresponding MTUmin value to rewrite into the packet. The router may maintain the MTU information during the operation of the router. In particular, the router may initially populate the MTU information for any flow destination IP addresses for which the minimum MTU value has not yet been determined, may update the already populated minimum MTU information for any flow destination IP address for which there are changes in the network paths that might affect path MTU, and/or may generally maintain an up-to-date set of minimum MTU values. If desired, the maintenance of these minimum MTU values may be based on calculating minimum MTU values using formula 46 in
While the illustrative MTU information is shown in
In the examples described in connection with
In particular, processing circuitry 60 may include one or more processors or processing units based on microprocessors on general-purpose processors, microcontrollers, digital signal processors, programmable logic devices such as a field programmable gate array device (FPGA), application specific system processors (ASSPs), application specific integrated circuit (ASIC) processors, etc. Memory circuitry 62 may include volatile memory such as dynamic random-access memory, static random-access memory, etc., and non-volatile memory such as hard-drive storage, solid-state storage, flash memory, etc.
In general, the operations described herein relating to the operation of routers (e.g., routers 10-1 and 10-2) and/or other relevant operations may be stored as (software) instructions on one or more non-transitory computer-readable storage media (e.g., memory circuitry 62) in each network device. The corresponding processing circuitry (e.g., processing circuitry 60) in each network device for these one or more non-transitory computer-readable storage media may process the respective instructions to perform the corresponding router operations.
Portions of processing circuitry 60 and respective portions of memory circuitry 62, collectively, may formed different functional modules in network device 10 because the two portions are often collectively used to process operations to perform these functions (e.g., by sending and/or receiving requests, control signals, data, etc.).
As an illustrative example, network device 10 may include one or more management modules 64-1 implemented using a first portion of processing circuitry 60-1 (e.g., one or more processors) and a first portion of memory circuitry 62-1 (e.g., one or more memories). In this example, a management module 64-1 (e.g., formed from a general-purpose processor that processes instructions stored on a dynamic random-access memory) may form the control plane or control layer of network device 10 (e.g., for managing and controlling operation of other components of network device 10).
Additionally, network device 10 may include one or more packet processing modules 64-2 implemented using a second portion of processing circuitry 60-2 (e.g., one or more processors) and a second portion of memory circuitry 62-2 (e.g., one or more memories). In this example, a packet processing module 64-2 (e.g., formed from packet processing circuitry such as an ASIC processor, an FPGA device, and/or a digital signal processor that operates using a content-addressable memory (CAM)) may form the data or forwarding plane or the data layer of network device 10 (e.g., for handling ingress and egress network packets, e.g., based on the control scheme specified using management module 64-1).
As examples, a packet processing module 64-2 may include one or more ingress pipelines on which newly received (ingress) packets are processed to generate intermediate packets and may include one or more egress pipelines to which the intermediate packets are sent and eventually output from the packet processing module 64-2. In an illustrative configuration, each (ingress and egress) pipeline may include a corresponding parser configured to parse packets (e.g., ingress packets, intermediate packets resulting from an ingress pipeline or other internal processor, etc.) and retrieve packet data within them and may include a corresponding processing engine that processes (modifies) the pipeline-received packet to arrive at resulting egress packets.
Network device 10 may include other components 66 such as one or more input-output ports 68 such as Ethernet ports or network interface ports that provide connections to other network elements (e.g., other routers, modems, controllers) in the network, power ports through which power is supplied to network device 10, or other ports. As examples, each port 68 may be coupled to a corresponding ingress pipeline to process packets received on that port and a corresponding egress pipeline to which packets are output on that port. An internal routing fabric (e.g., within network device 10) may connect corresponding packet processing modules to one another and may connect one or more ingress pipelines (and their corresponding ports) to egress pipelines (and their corresponding ports).
As further shown in
In a similar manner as described above in connection with processing circuitry 60, memory circuitry 62, and input-output ports 68 in network device 10, the corresponding components in controller 16 may be implemented in a similar manner. In particular, processing circuitry 70 may include one or more processors or processing units based on microprocessors on general-purpose processors, microcontrollers, digital signal processors, programmable logic devices such as a field programmable gate array device (FPGA), application specific system processors (ASSPs), application specific integrated circuit (ASIC) processors, etc. Memory circuitry 72 may include volatile memory such as dynamic random-access memory, static random-access memory, etc., and non-volatile memory such as hard-drive storage, solid-state storage, flash memory, etc.
The operations described herein relating to the operation of controller 16 and/or other relevant operations may be stored as (software) instructions on one or more non-transitory computer-readable storage media (e.g., memory circuitry 72) in controller 16. The processing circuitry (e.g., processing circuitry 70) in controller 16 for these one or more non-transitory computer-readable storage media may process the respective instructions to perform the corresponding controller operations (e.g., path information determination operations such as path MTU determination and advertisement operations, network virtualization operations, etc.). Processing circuitry 70 and memory circuitry 72, collectively, may sometimes be referred to herein as the control circuitry of controller 16 because the two are often collectively used to control one or more components of controller 16 to perform these operations (e.g., by sending and/or receiving requests, control signals, data, etc.).
Input-output ports 74 of controller 16 may include network interface ports that provide connections to other network elements (e.g., switches, routers, modems, controllers) in the network, power ports through which power is supplied to controller 16, or other ports. In the example of
In some illustrative arrangements described herein as an example, the management module of network device 10 may perform one or more of operations 82, 84, and 86 to maintain the minimum MTU information (e.g., minimum MTU values). As an example, the memory circuitry portion 62-2 forming a packet processing module 64-2 may store the minimum MTU information. The packet processing module 64-2 may use the stored minimum MTU information to modify packets received at network device 10. Management module 64-1 may update the stored minimum MTU information as network device 10 performs path MTU discovery operations, receives additional path MTU information from a controller, and/or otherwise receives updates indicative of network changes impacting path MTU values.
At operation 82, the management module of network device 10 may perform one or more path MTU discovery or determination operations to identify all paths (e.g., tunnels) directly connected to network device 10 and determine their corresponding path MTU values. In the example of
At operation 84, the management module of network device 10 may gather other path MTU information, e.g., to identify all other relevant paths (e.g., tunnels) indirectly connected to network device 10 and determine their corresponding path MTU values. In the example of
In other words, using router 10-1 in
At operation 86, the management module of network device 10 may calculate the minimum MTU information based on the path MTU information determined internally at operation 82 and/or gathered externally at operation 84 (e.g., using equation 46 in
As shown in
In general, one or more (e.g., all) of operations 82, 84, and 86 may occur or be performed continuously (e.g., with a desired periodicity). As an example, a router may perform a path MTU discovery process (algorithm) periodically, and in response to each instance of path MTU discovery, the router may recalculate the minimum MTU value to determine whether the currently stored minimum MTU value should be replaced with a new (more up-to-date) value. As another example, a controller may periodically gather path MTU information from routers under management and send the path MTU information to routers that lack this path MTU information, and in response to each instance of reception of path MTU information from the controller, the router may recalculate the minimum MTU value to determine whether the currently stored minimum MTU value should be replaced with a new (more up-to-date) value.
At operation 94, the packet processing module of network device 10 may perform a lookup operation in the maintained set of minimum MTU values to determine an applicable minimum MTU value to use for determining the optimal packet size value. As an example, a parser (e.g., in the ingress or egress pipeline) may retrieve the packet source IP address data from the packet. The processing engine (e.g., in the corresponding pipeline) may perform a route lookup operation (e.g., in a virtual overlay routing table) based on the source IP address of the packet to determine the destination VTEP IP address, and may compare the determined destination VTEP IP address to the destination VTEP IP addresses in the stored minimum MTU values table (e.g., table 54 in
At operation 96, the packet processing module of network device 10 may replace the MSS value in the packet with an updated MSS value based on the corresponding minimum MTU value resulting from the lookup operation performed during operation 94. As an example, the updated replacement MSS value may be the corresponding minimum MTU value subtracted by a header length (e.g., 40 bytes in scenario with IP and TCP headers).
At operation 98, the packet processing module of network device 10 may output the packet having the updated MSS value. In the case of SYN/ACK packet 30-2 sent from host 20-2 to host 20-1 (
In general, operations 92, 94, 96, and 98 may be performed (by the packet processing module) for each packet as received by network device 10. While
In general, the operations described herein relating to the maintaining of MTU information (
The foregoing is merely illustrative of the principles of this disclosure and various modifications can be made by those skilled in the art without departing from the scope and spirit of the disclosure.