In the world of physical Ethernets, Gigabit Ethernets also see the 1500 limit as insufficient, and so there is provision in the network stacks of Windows, (embedded) Linux and other operating systems for jumbo frames. The actual MTU is a property of the network card and its driver. There is a procedure for two ends of an Ethernet link to discover the actual MTU in effect.
The Gadget implementation of CDC-ECM (the g_ether module) can be readily patched to support larger MTU’s.
After doing so, here is a little table of results for various MTU’s under 2 tests
1) UPLOAD: transfer a 256MB file from the device to the PC
2) DOWNLOAD: transfer a 256MB file from PC to the device
The Gadget implementation of CDC-ECM (the g_ether module) can be readily patched to support larger MTU’s.
After doing so, here is a little table of results for various MTU’s under 2 tests
1) UPLOAD: transfer a 256MB file from the device to the PC
2) DOWNLOAD: transfer a 256MB file from PC to the device
MTU | UPLOAD speed | DOWNLOAD speed |
1500 bytes | 9 MB/s | 4.15 MB/s |
3000 bytes | 9 MB/s | 4.78 MB/s |
6000 bytes | 11.1 MB/s | 4.42 MB/s |
9000 bytes | 11.1 MB/s | 4.59 MB/s |
12000 bytes | 11.1 MB/s | 4.67 MB/s |
24000 bytes | 9.95 MB/s | 4.64 MB/s |
There is a sweet spot for MTU 9000, a typical Jumbo MTU used by physical networks as well.
Footnote:
- If Linux sets the MTU to 3014, then Windows will report an MTU of 3000. So the MTU on the Linux (device) side should be set to 14 bytes higher than you want Windows to report.
- Implementation -- Belcarra has a simple patch to assist in supporting Jumbo frames for g_ether.