Hello,

I would like to gauge interest in including my upcoming MTU patch into
the 2.5 release, and also to notify you that I am working on this patch,
to avoid effort duplication, if any.

Description of the "MTU auto-negotiation" patch:

        MTU settings will be fully auto-negotiated between server and
        client, making most if not all related options unnecessary,
        such as --tun-mtu, --link-mtu, --mssfix, --fragment, etc.
        Interoperation with old (pre-patch) servers and clients will be
        guaranteed by design and tested with the included test suite.

Summary of operation:
        Peers will use the P_CONTROL_HARD_RESET_* messages to do Path
        MTU discovery, and configure their own send/receive buffers
        accordingly. The "reliable" layer's ability to ACK packets it
        can receive, including repeated packets, is leveraged.
        The algorithm will re-send one or more HARD_RESET_* messsages,
        padded to a larger size, after the initial reset packet is
        acked by the remote, in order to discover the largest packet
        the remote can receive (and thus ack). Regular TLS handshake
        will start after one padded HARD_RESET message is acked, with
        frame buffer parameters set appropriately.

        After the connection is established, Path MTU will be monitored
        with a new PING message over the TLS channel, configurable with
        an option like "--ping-pmtud <number>" that will complement or
        replace the regular "--ping" which is sent over the data
        channel. Each peer will adjust the max size of packet
        transmitted over the link when/if the reliable --ping-pmtud
        indicates the path MTU has decreased.

        The TUN interface MTU setting will be adjusted dynamically
        as a result of link PMTUD results, if possible.

        The patch will generate ICMP messages "fragmentation needed"
        on the TUN interface to handle the case where interface MTU
        cannot be changed, and also the client-to-client communication
        case where a client with a larger link-mtu sends traffic to a
        client with a smaller link-mtu (as described in RFC1191)

        The user-facing configuration like --link-mtu etc, are
        deprecated, and only indicate ceiling values, while the PMTUD
        algo will set buffers to smaller sizes if needed. In the future,
        these options should be completely ignored, and/or obsoleted.

Testing:
        The patch will include a comprehensive test suite that can be
        run (unattended) to verify inter-operation with other versions
        of ovpn, and with various combinations of settings like cipher,
        compression, link MTU, etc. The test suite requires two hosts
        (server and client), with root capability, as to vary the link's
        MTU configuration. The host running the test suite runs
        the server side of the test, and it starts a client with the
        appropriate configuration on the other host, via ssh. It
        requires both test host to have access to a shared filesystem,
        and installed older versions of ovpn in addition to the patched
        version.

I am developing this patch on the 2.3 branch, as that is what I use for
my networking needs, but the files I am touching have not changed in
incompatible ways on the master. At the moment, the "Great
Reformatting" commit is the biggest stumbling block to rebasing this
patch to the master.

Also, I don't have the resources to test it on anything other than
Linux, but I am hoping that the existing continuous integration magic
will help overcome this limitation.

At the moment, I expect it will take another two weeks until the patch
is ready to be released on 2.3

Any comments or offers to assist with testing are welcome. Specifically,
how does this patch fit in with the release plans for 2.5 or 2.6+?

Thank you
Radu Hociung.



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to