-
Notifications
You must be signed in to change notification settings - Fork 561
Packet does not reach network adapter #4966
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
You can use pktmon to collect drop events to see if TCPIP, or some other filter driver, is dropping the packet before it reaches the NIC. |
Same thing happened with pktmon. |
If pktmon doesn't show anything, I'd recommend looking at MsQuic logs too to see if things are dropping before it sends. |
After some testing, the cause is found out to be IP_DONTFRAGMENT. |
The QUIC protocol requires disabling IP fragmentation. |
The program is not required to be interoperable with 3rd party programs. I choose msquic as a convenient "reliable udp with encryption", so using a "nonstandard QUIC" shouldn't be an issue. Also I dont quite understand how this "UDP datagrams MUST NOT be fragmented at the IP layer" affects msquic that is built upon UDP. Shouldnt IP fragmentation be transparent to udp(except performance), hence transparent to any quic implementation? |
IP fragmentation complicates many things and breaks a few as well in QUIC (PMTUD). If you want to fork MsQuic, you can obviously do what you wish with it, but as it stands, fragmentation must stay off in MsQuic. |
By the way. The error code caused by IP_DONTFRAGMENT is kind of weird. After changing the &SendData->Sqe.Overlapped argument for WSASendMsg to 0, the error code became WSAEMSGSIZE. |
Closing this since we don't have any logs to investigate. As mentioned, QUIC requires Don't Fragment bits to be set. We'll be happy to reopen if you have more information to go on. |
Describe the bug
Similar to #4592
Of this particular client machine(and perhaps several others exhibiting similar symptom), sometimes it can connect to server for an interval, then it fails for another interval of like 10min.
During unconnectable periods, procmon can see client process sending data, but the packets do not appear in wireshark.
I wrote a testing python script that sends 1 udp packet per second in a loop, running alongside the msquic client. It never fails, even when the quic program is unable to send packets.
I wonder how to debug this problem. What can cause packets to disappear between the point seen in procmon(tcpip.sys?) and nic driver?
Affected OS
Additional OS information
No response
MsQuic version
main
Steps taken to reproduce bug
Run msquic client, which attemps to establish a connection with server
Expected behavior
procmon, wireshark, server all being able to see the data
Actual outcome
only procmon sees the sending activity
Additional details
No response
The text was updated successfully, but these errors were encountered: