Potential Bug Docker for Windows receiving UDP messages

I run Docker Desktop (4.15.0) on Windows 10 (10.0.19044) and have encountered the odd problem that when running a Linux-container to communicate with a camera (Basler ace) via Ethernet (GigE), I never receive an image in the container.
Establishing a connection to the camera for configuration and triggering it works fine (both via TCP).

Copying the network traffic also shows that the camera actually sends back packages via UDP, but never get into the container.
Now here’s the odd thing: The exact same container and configuration works on a Linux host though.
The problem is reproducible (tested it on two Windows-PCs with activated and deactivated firewall).

Details:
Here is a snipped of the wireshark protocol:

1	0.000000	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Device Mode]
2	0.000449	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Device Mode] Value=0x80000001
3	0.002807	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Message channel Capability]
4	0.003245	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Message channel Capability] Value=0x00000000
5	0.007828	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Stream channels Capability]
6	0.008290	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Stream channels Capability] Value=0xC0000000
7	0.010702	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [GVCP Capability]
8	0.011119	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [GVCP Capability] Value=0xFE0E004F
9	0.013281	<IP address host>	<IP address camera>	GVCP	58	> READMEM_CMD  (0x00000200 (512) bytes)
10	0.014076	<IP address camera>	<IP address host>	GVCP	566	< READMEM_ACK [First Choice of URL for XML device description file]
11	0.016494	<IP address host>	<IP address camera>	GVCP	58	> READMEM_CMD  (0xC0000000 (536) bytes)
12	0.017157	<IP address camera>	<IP address host>	GVCP	590	< READMEM_ACK [Addr:0xC0000000]
13	0.019453	<IP address host>	<IP address camera>	GVCP	58	> READMEM_CMD  (0xC0000218 (536) bytes)
...
177	0.271492	HewlettP_b7:3e:20	Basler_42:38:10	ARP	42	Who has <IP address camera>? Tell <IP address host>
178	0.271849	Basler_42:38:10	HewlettP_b7:3e:20	ARP	60	<IP address camera> is at 00:30:53:42:38:10
...
317	0.487833	<IP address host>	<IP address camera>	GVCP	58	> READMEM_CMD  (0xC0013E40 (352) bytes)
318	0.488437	<IP address camera>	<IP address host>	GVCP	406	< READMEM_ACK [Addr:0xC0013E40]
319	0.678417	192.168.10.35	255.255.255.255	GVCP	60	> DISCOVERY_CMD 
320	0.761697	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [CCP (Control Channel Privilege)] Value=0x00000002
321	0.762147	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
322	0.764929	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Device Mode]
323	0.765373	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Device Mode] Value=0x80000001
324	0.767752	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Message channel Capability]
325	0.768179	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Message channel Capability] Value=0x00000000
326	0.770272	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Stream channels Capability]
327	0.770716	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Stream channels Capability] Value=0xC0000000
328	0.774077	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [GVCP Capability]
329	0.774519	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [GVCP Capability] Value=0xFE0E004F
330	0.777852	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [GVCP Configuration]
331	0.778286	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [GVCP Configuration] Value=0x00000000
332	0.780490	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [GVCP Configuration] Value=0x00040000
333	0.780938	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
334	0.783927	<IP address host>	<IP address camera>	GVCP	58	> READMEM_CMD  (0xE0000000 (40) bytes)
335	0.784468	<IP address camera>	<IP address host>	GVCP	94	< READMEM_ACK [Addr:0xE0000000]
336	0.787069	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
337	0.787527	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
338	0.791497	<IP address host>	<IP address camera>	GVCP	58	> READREG_CMD [Multiple Register Read Command]
339	0.791954	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Multiple ReadReg Ack]
340	0.794473	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Pending Timeout]
341	0.794905	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Pending Timeout] Value=0x000003E8
342	0.797685	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
343	0.798146	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
344	0.801242	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Heartbeat timeout]
345	0.801688	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Heartbeat timeout] Value=0x00000BB8
346	0.805313	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x000B0000]
347	0.805865	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x000B0000] Value=0xE8000000
348	0.809514	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x000B0120]
...
424	1.036258	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00130004]
425	1.036761	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00130004] Value=0x00000000
426	1.039122	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [SCPS0 (Stream Channel #0 Packet Size)]
427	1.039560	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [SCPS0 (Stream Channel #0 Packet Size)] Value=0x400005DC
428	1.042530	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00130004]
429	1.043029	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00130004] Value=0x00000000
430	1.045462	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00130004]
...
801	1.546954	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00040500] Value=0xF8000000
802	1.548792	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
803	1.549207	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
804	1.551223	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00040600]
805	1.551733	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00040600] Value=0xF8000000
806	1.553703	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00040620]
...
1023	1.863534	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00130004] Value=0x00000000
1024	1.865594	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Number of network interfaces]
1025	1.866006	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Number of network interfaces] Value=0x00000001
1026	1.867904	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00130004]
1027	1.868432	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00130004] Value=0x00000000
1028	1.870336	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00138024]
1029	1.870843	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00138024] Value=0x00000000
1030	1.874242	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [GVCP Configuration]
1031	1.874674	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [GVCP Configuration] Value=0x00000000
1032	1.877290	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x000700C0]
1033	1.877804	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x000700C0] Value=0xE8000000
1034	1.879845	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x000700E0]
...
1782	2.952108	<IP address host>	239.255.255.250	SSDP	217	M-SEARCH * HTTP/1.1 
...
1788	2.960215	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00130004] Value=0x00000000
1789	2.962323	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [SCPS0 (Stream Channel #0 Packet Size)]
1790	2.962755	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [SCPS0 (Stream Channel #0 Packet Size)] Value=0x400005DC
...
5781	42.086721	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x000B0100]
5782	42.087282	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x000B0100] Value=0xE8000000
5783	42.090095	<IP address host>	<IP address camera>	GVCP	82	> WRITEREG_CMD [Multiple Register Write Command]
5784	42.090848	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK [Multiple WriteReg Ack] (4/4) (Success) 
5785	42.093459	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Addr:0x00040024] Value=0x00000001
5786	42.094261	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
5787	42.097083	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x0004020C]
5788	42.097603	<IP address camera>	<IP address host>	UDP	86	49152 → 46000 Len=44
5789	42.097635	<IP address host>	<IP address camera>	ICMP	114	Destination unreachable (Port unreachable)
5790	42.097925	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5791	42.097925	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x0004020C] Value=0xC0000000
5792	42.098041	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5793	42.098159	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5794	42.098259	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5795	42.098389	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5796	42.098513	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5797	42.098728	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5798	42.098784	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5799	42.098880	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5800	42.099008	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5801	42.099138	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5802	42.099257	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5803	42.099377	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5804	42.099498	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5805	42.099627	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5806	42.099755	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5807	42.099883	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5808	42.099987	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5809	42.100116	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5810	42.100234	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5811	42.100352	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5812	42.100491	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5813	42.100612	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5814	42.100651	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00040204]
5815	42.100742	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
5816	42.100879	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
...
6161	42.143294	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
6162	42.143414	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
6163	42.143542	<IP address camera>	<IP address host>	UDP	1514	49152 → 46000 Len=1472
6164	42.144637	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00040204] Value=0x00000000
6165	42.347569	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6166	42.348037	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6167	43.104153	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6168	43.104619	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6169	43.859002	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6170	43.859434	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6171	44.612915	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6172	44.613397	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6173	45.367889	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6174	45.368388	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6175	45.710015	<IP address host>	<IP address camera>	GVCP	50	> DISCOVERY_CMD 
6176	45.710530	<IP address camera>	<IP address host>	GVCP	298	< DISCOVERY_ACK (Basler, 24339728)
6177	46.124258	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6178	46.124722	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6179	46.880932	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6180	46.881440	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6181	47.638045	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6182	47.638542	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6183	48.394350	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6184	48.394831	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6185	49.150753	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6186	49.151183	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6187	49.905999	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6188	49.906515	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6189	50.272979	HewlettP_b7:3e:20	Basler_42:38:10	ARP	42	Who has <IP address camera>? Tell <IP address host>
6190	50.273442	Basler_42:38:10	HewlettP_b7:3e:20	ARP	60	<IP address camera> is at 00:30:53:42:38:10
6191	50.660881	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6192	50.661334	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6193	50.677961	192.168.10.35	255.255.255.255	GVCP	60	> DISCOVERY_CMD 
6194	51.416059	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6195	51.416580	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6196	51.989002	<IP address host>	<IP address camera>	UDP	58	62841 → 49152 Len=16
6197	51.989533	<IP address camera>	<IP address host>	ICMP	70	Destination unreachable (Port unreachable)
6198	52.172433	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Heartbeat timeout] Value=0x00000BB8
6199	52.172964	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6200	52.348063	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [Addr:0x00040044] Value=0x00000000
6201	52.348799	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6202	52.352191	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [SCP0 (Stream Channel #0 Port)] Value=0x00000000
6203	52.352875	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6204	52.363528	<IP address host>	<IP address camera>	GVCP	58	> WRITEREG_CMD [MCP (Message Channel Port)] Value=0x00000000
6205	52.364075	<IP address camera>	<IP address host>	GVCP	60	< WRITEREG_ACK (Success) 
6206	52.372065	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00130004]
6207	52.372640	<IP address camera>	<IP address host>	GVCP	60	< READREG_ACK [Addr:0x00130004] Value=0x00000000
6208	52.375307	<IP address host>	<IP address camera>	GVCP	54	> READREG_CMD [Addr:0x00130004]

The windows host <PI address host> is addressed and the relevant ports are forwarded to the container.
See the docker-compose file:

version: "3"
services:
  basler-camera-service:
    container_name: basler-camera
    build:
      dockerfile: Dockerfile
    ports:
      - 5001:5000
      - 3956:3956  # Basler communication
      - 46000:46000 # set Streaming Port to fixed value with pylonViewer
      - 5901:5920 # VNC viewer

I spare you the details on the container with the [Basler Pylon](pylon 7.2.1 Camera Software Suite Linux x86 (64 Bit) - Debian Installer Package | Basler installation to communicate with the camera as it obviously works (on Linux). The streaming is set to multicast and the destination port to 46000.

It seems to only occur on Docker for Windows (BTW: it doesn’t matter whether I use Docker Desktop or spin up a virtual machine with Linux and use Docker from there).