Skip to content

[meru-staging][experiment] Raise CXPLAT_MAX_MTU to 3900 - #6497

Draft
Stephen L Peters (StephenLPeters) wants to merge 2 commits into
microsoft:meru-stagingfrom
StephenLPeters:stpete/meru-staging-max-mtu-3900-experiment
Draft

Stephen L Peters (StephenLPeters) wants to merge 2 commits into
microsoft:meru-stagingfrom
StephenLPeters:stpete/meru-staging-max-mtu-3900-experiment

Conversation

@StephenLPeters

Copy link
Copy Markdown

Experiment, not for merge. Builds on #6492.

Raises CXPLAT_MAX_MTU from 1500 to 3900 so DPLPMTUD can probe up to Azure's Mellanox VF MTU limit when an application configures MaximumMtu above 1500. Today, QuicSettingApply clamps MaximumMtu to CXPLAT_MAX_MTU, and the Linux datapath reports CXPLAT_MAX_MTU as the local MTU, so larger packets are impossible regardless of host configuration.

  • Default MaximumMtu (QUIC_DPLPMTUD_DEFAULT_MAX_MTU) stays 1500, so applications that don't opt in are unchanged.
  • Linux sockets use IP_PMTUDISC_PROBE, so probes larger than a host's MTU fail instead of fragmenting.
  • MAX_UDP_PAYLOAD_LENGTH, and therefore the small (non-GRO) I/O buffers, grow with the constant.

Used to measure per-packet CPU savings for Meru storage replication on Azure VMs with accelerated networking.

…oft#6363)

## Description

See microsoft#6362 for the description. This PR removes unnecessary stream
scanning when logging is disabled.

## Benchmark Result
Benchmark client setup:
```
 ./build/tcam/bin/Release/secnetperf -target:localhost -conns:1 -streams:1000 -rstream:1 -run:10s -up:512 -down:4kb -plat:1
```

Original code:
```
Result: 11383 RPS, Latency,us 0th: 10525, 50th: 86901, 90th: 88417, 99th: 123274, 99.9th: 132490, 99.99th: 135393, 99.999th: 137258, 99.9999th: 137265, Max: 137265
```

Patched code:
```
Result: 118139 RPS, Latency,us 0th: 6319, 50th: 8515, 90th: 8892, 99th: 12190, 99.9th: 15922, 99.99th: 25233, 99.999th: 25400, 99.9999th: 25450, Max: 2545
```

Here's the result of secnetperf with different number of streams
| Concurrent streams | Before: p99 latency | After: p99 latency |
Before: RPS | After: RPS |
|---:|---:|---:|---:|---:|
| 1 | 0.088 ms | 0.087 ms | 13,131 | 13,183 |
| 10 | 0.199 ms | 0.191 ms | 78,792 | 81,551 |
| 100 | 1.341 ms | 0.976 ms | 130,504 | 144,176 |
| 1000 | 23.484 ms | 10.773 ms | 52,733 | 133,512 |

## Testing

This PR does not need additional test code.

---------

Co-authored-by: Guillaume Hetier <hetier.guillaume@gmail.com>
(cherry picked from commit 47504f1)
Allow DPLPMTUD to probe up to Azure's Mellanox VF MTU limit when
MaximumMtu is configured above 1500. The default MaximumMtu stays 1500,
and IP_PMTUDISC_PROBE keeps oversized probes from fragmenting on hosts
with a smaller MTU.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d84afdd6-7b22-401b-9969-3c9c762497df

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants