microsoft / microsoft/msquic

Linux XDP client multi connection issues

Open
#4,641 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug: Platform Triaged
Dominant language
C
Stars
4.8k
Forks
698
Avg merge
2d 22h
Merged PRs (30d)
35

Description

Describe the bug

When client secnetperf running with multi connection using XDP, some packets arrive at normal socket datapath and hit segfault.

Client hits here
https://github.com/microsoft/msquic/pull/4551/files/e2a3ad4c123cec85f648841d61a9eeceba49778d#r1768132268

Affected OS
  • Windows
  • Linux
  • macOS
  • Other (specify below)
Additional OS information

Ubuntu 24.04

MsQuic version

main

Steps taken to reproduce bug

2 Ubuntu 24.04 VMs on Hyper-V on same Azure host (nested VM)

server
./artifacts/bin/linux/x64_Debug_openssl3/secnetperf -exec:maxtput -io:epoll -pollidle:1000

client
./artifacts/bin/linux/x64_Debug_openssl3/secnetperf -target:$TARGET_IP -exec:maxtput -down:10s -ptput:1 -tcp:0 -trimout -watchdog:25000 -pconn:1 -pstream:1 -io:xdp -conns:100

Expected behavior

continue running until the workload ends.

Actual outcome

use epoll datapath and segfault

Additional details

When running with multi-connection, some packets arrive at normal socket datapath for some reason even though all packets are forcibly routed to AF_XDP socket by hack.

hypothesis

  • the packets arrive at normal datapath are mixed with the ones arrive at AF_XDP socket, then break code.
  • netvsc has bug?
  • host layer bug?
  • nested VM bug?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with secnetperf on Ubuntu 24.04 using the server and client commands in the report, especially 100 connections with -io:xdp. Compare the XDP/AF_XDP and epoll datapaths and investigate the reported segfault when packets reach the normal socket path. Done means the multi-connection workload runs to completion without a crash, with the packet-path cause identified.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
networking, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.