none
How MTU works in Windows 10 RRS feed

  • Question

  • We created a Network driver for our Fibre Channel NIC in Windows 10, using NDIS 6.20.

    We were able to set MTU size to 32768 bytes. The setting was confirmed by using command "netsh interface ipv4 show interfaces". However, NDIS provided our driver with 1500 byte frames only, even we sent 32768 byte data in the socket application. Please help explaining the behavior. What can we do to allow NDIS to provide our driver with more than 1500 byte frames. If there is any limitation in NDIS, what is the maximum MTU size can we use?

    Additional notes: If we set MTU size to 1500 or 1000 bytes, NDIS provided our driver with 1500 or 1000 byte frames as expected. 



    jz




    • Edited by ddc-jz Wednesday, December 18, 2019 2:28 PM
    Wednesday, December 18, 2019 2:12 PM

Answers

  • NDIS usually does not limit your frame sizes. Protocols (such as tcpip.sys) manage their frame size based on properties of underlying miniports. Even if a miniport supports large MTU locally, protocol may decide on limited MTU because routers on the way may drop large packets.

    -- pa

    Tuesday, December 24, 2019 10:45 PM

All replies

  • To begin with.... what "physical medium" does your driver expose to NDIS?

    Do you support any offloads?

    -- pa


    • Edited by Pavel A Thursday, December 19, 2019 1:44 AM
    Thursday, December 19, 2019 1:42 AM
  • Our "physical medium" is NdisPhysicalMedium802_3.

    I believe we do not support offload because the following OIDs are set as not support:

            OID_PM_ADD_PROTOCOL_OFFLOAD:
            OID_PM_REMOVE_PROTOCOL_OFFLOAD:


    jz


    • Edited by ddc-jz Friday, December 20, 2019 1:36 PM
    Thursday, December 19, 2019 5:24 PM
  • NDIS usually does not limit your frame sizes. Protocols (such as tcpip.sys) manage their frame size based on properties of underlying miniports. Even if a miniport supports large MTU locally, protocol may decide on limited MTU because routers on the way may drop large packets.

    -- pa

    Tuesday, December 24, 2019 10:45 PM
  • Investigation revealed that the other end of the link had the MTU=1500. In addition, TCPIP.sys used stored MTU size rather than the driver's, if the MTU size was modified by the "netsh" command with store=persistent.

    jz

    Friday, January 3, 2020 1:53 PM