Skip to content
LinkState
Go back

Tracing MSS collapse through stacked overlays

Introduction to TCP Flow and Network Boundaries

Overview of TCP Flow and MTU Budgeting

When dealing with TCP flows across various network boundaries, understanding the Maximum Transmission Unit (MTU) and its impact on the Maximum Segment Size (MSS) is crucial. The MTU refers to the maximum size of a packet that can be transmitted over a network interface without fragmentation. The MSS, on the other hand, is the maximum amount of data that can be sent in a single TCP segment. MTU budgeting errors can lead to MSS expectations being rewritten, resulting in retransmissions and performance issues.

Network Boundaries: veth, Bridge, VXLAN, and WireGuard

The network boundaries discussed are:

TCP Flow Across veth Boundaries

veth Interface Configuration and MTU Settings

To configure a veth interface, use the ip command:

ip link add veth0 type veth peer name veth1
ip link set veth0 up
ip link set veth1 up

By default, the MTU of a veth interface is set to 1500. However, this can be changed using the ip command:

ip link set veth0 mtu 1400

TCP Flow Through veth: Packet Capture and Analysis

To capture packets on a veth interface, use tcpdump:

tcpdump -i veth0 -w capture.pcap

Analyzing the captured packets with Wireshark can help identify any issues with the TCP flow.

If the MTU of the veth interface is not set correctly, it can lead to packet fragmentation and retransmissions. To troubleshoot MTU-related issues, use the ping command with the -M option to specify the MTU:

ping -M do -s 1400 <destination_ip>

If the ping fails, it may indicate an MTU issue.

TCP Flow Across Bridge Boundaries

Bridge Interface Configuration and MTU Settings

To configure a bridge interface, use the ip command:

ip link add br0 type bridge
ip link set br0 up

The MTU of a bridge interface is typically set to the lowest MTU of its member interfaces. However, this can be changed using the ip command:

ip link set br0 mtu 1400

TCP Flow Through Bridge: Packet Capture and Analysis

To capture packets on a bridge interface, use tcpdump:

tcpdump -i br0 -w capture.pcap

Analyzing the captured packets with Wireshark can help identify any issues with the TCP flow.

If the MTU of the bridge interface is not set correctly, it can lead to packet fragmentation and retransmissions. To troubleshoot MTU-related issues, use the ping command with the -M option to specify the MTU:

ping -M do -s 1400 <destination_ip>

If the ping fails, it may indicate an MTU issue.

TCP Flow Across VXLAN Boundaries

VXLAN Tunnel Configuration and MTU Settings

To configure a VXLAN tunnel, use the ip command:

ip link add vxlan0 type vxlan id 100 local <local_ip> remote <remote_ip> dstport 4789
ip link set vxlan0 up

The MTU of a VXLAN tunnel is typically set to 1500, but this can be changed using the ip command:

ip link set vxlan0 mtu 1400

TCP Flow Through VXLAN: Packet Capture and Analysis

To capture packets on a VXLAN tunnel, use tcpdump:

tcpdump -i vxlan0 -w capture.pcap

Analyzing the captured packets with Wireshark can help identify any issues with the TCP flow.

If the MTU of the VXLAN tunnel is not set correctly, it can lead to packet fragmentation and retransmissions. To troubleshoot MTU-related issues, use the ping command with the -M option to specify the MTU:

ping -M do -s 1400 <destination_ip>

If the ping fails, it may indicate an MTU issue.

VXLAN Header Overhead and MTU Budgeting

The VXLAN header adds an overhead of 50 bytes to each packet. This overhead must be taken into account when configuring the MTU of the VXLAN tunnel.

TCP Flow Across WireGuard Boundaries

WireGuard Tunnel Configuration and MTU Settings

To configure a WireGuard tunnel, use the wg command:

wg genkey > private.key
wg genkey > public.key
wg set wg0 listen-port 51820 private-key private.key

The MTU of a WireGuard tunnel is typically set to 1420, but this can be changed using the wg command:

wg set wg0 mtu 1400

TCP Flow Through WireGuard: Packet Capture and Analysis

To capture packets on a WireGuard tunnel, use tcpdump:

tcpdump -i wg0 -w capture.pcap

Analyzing the captured packets with Wireshark can help identify any issues with the TCP flow.

If the MTU of the WireGuard tunnel is not set correctly, it can lead to packet fragmentation and retransmissions. To troubleshoot MTU-related issues, use the ping command with the -M option to specify the MTU:

ping -M do -s 1400 <destination_ip>

If the ping fails, it may indicate an MTU issue.

WireGuard Header Overhead and MTU Budgeting

The WireGuard header adds an overhead of 80 bytes to each packet. This overhead must be taken into account when configuring the MTU of the WireGuard tunnel.

MTU Budgeting Errors and MSS Expectations

How MTU Budgeting Errors Affect TCP Flow

MTU budgeting errors can lead to packet fragmentation and retransmissions, which can significantly impact TCP flow performance.

Rewriting MSS Expectations: Causes and Consequences

If the MTU of a network interface is not set correctly, it can lead to MSS expectations being rewritten, resulting in retransmissions and performance issues.

Retransmissions and Real Payload

How MTU Budgeting Errors Surface as Retransmissions

MTU budgeting errors can lead to packet fragmentation and retransmissions, which can significantly impact TCP flow performance.

Real Payload and Retransmission Triggers

The real payload of a TCP segment can trigger retransmissions if the MTU of the network interface is not set correctly.

Scaling Limitations and Considerations

Scaling veth, Bridge, VXLAN, and WireGuard Networks

When scaling veth, bridge, VXLAN, and WireGuard networks, it is essential to consider the MTU budgeting and MSS expectations.

Troubleshooting and Debugging Techniques

Using tcpdump and Wireshark for Packet Capture and Analysis

To troubleshoot and debug network issues, use tcpdump and Wireshark to capture and analyze packets.

Conclusion and Recommendations

Summary of Key Findings and Takeaways

In this article, we explored the impact of MTU budgeting errors on TCP flow across veth, bridge, VXLAN, and WireGuard boundaries. We discussed the importance of configuring the MTU and MSS settings correctly to ensure optimal performance.

Recommendations for Optimizing TCP Flow and MTU Budgeting

To optimize TCP flow and MTU budgeting, configure the MTU and MSS settings correctly for each network interface, use tcpdump and Wireshark to capture and analyze packets, use ping to test the MTU of the network interface, and use wg to debug WireGuard-related issues.


Share this post on:

Previous Post
Are these retransmissions real or capture artifacts
Next Post
One Packet Through Namespace, Bridge, Conntrack, NAT