-
Notifications
You must be signed in to change notification settings - Fork 121
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
Unable to send UDP packets larger than MTU to container #1311
Comments
Thanks for your report. The functionality of Your request is an interesting new twist on that in that it's seems to not be purely a "routing" issue. I've added a note to that effect on our internal ticket. The question of what semantics are expected for oversized packet being sent from a local socket to a local interface in an interesting one, I suspect there might be as many answers as there are UDP/IP stacks ;-). Is this is something which you know works between normal processes (ignoring d4m and containers for now) on MacOS? The reason I mention this is that in d4m the concept of "host" is a bit split-brained. There is obviously the MacOS host but there is also a Linux "host" running in the VM. Docker operations which refer to "host" are normally in terms of that second Linux host, whereas users (rightly) expect them to be in terms of the MacOS host and we have various glue code which tries to produce that apparent effect. Currently there is no such glue for This is particularly relevant to you and to the question of expected semantics for local oversized frames is that even if the So, after all that onto your actual problem: Are you sure your UDP frames don't have the DNF bit set in the IP header? That would be one obvious reason for them not to be showing up. Would it be possible to put together a simple end to end repro of what you are seeing, e.g. a simplified version of your MacOS application and a |
This issue has been inactive for more than 14 days while marked as MORE_INFO_EXPIRY_TIMEOUT |
Simple problem demonstration:
Observation on the outside Ethernet interface on macOS:
First and third packets are the two queries from inside Docker. Second packet is the exactly 1500 byte response that does make it to Observation from in between:
There, we see the first query, the response to it, the second query, but not the fragments of the response. |
@MagnusS any way to reopen this? Thank you. |
I can confirm that I have reproduced this today with packets that are fragmented. Testing outside container all traffic is delivered correct. TCPDump shows response received from external to Mac, but traffic never appears inside container. Requests smaller than MTU are delivered. |
Any update? I encountered the same problem. |
Expected behavior
I'm running a container with
--net=host
. From within this container, I'm connecting to a UDP service on the Mac host, using the Mac's wifi IP address (on en0).I would expect the container and the host to be able to exchange UDP packets larger than MTU (at least up to Darwin's configured UDP max size, which is 9216 on my computer).
Actual behavior
If the Mac tries to send a UDP packet which is larger than 1500 bytes, the UDP packet never arrives. To debug with wireshark, I've used this container that allows me to monitor the traffic, and I can see that UDP packets larger than 1500 are never delivered.
In fact, I don't even see IP fragments in wireshark. It looks like the packet is lost somewhere.
Information
Diagnostic ID: C7708C76-F5E1-4567-960A-F9DDAC423F4E
Docker for Mac: version: 1.13.1 (94675c5a7)
macOS: version 10.12.3 (build: 16D32)
The text was updated successfully, but these errors were encountered: