Nmstate

A Declarative API for Host Network Management

View on GitHub

MultiPath TCP

MultiPath TCP(MPTCP support is introduced by nmstate 2.2.0 and requires NetworkManager 1.40 or greater.

By assigning MPTCP flags to IP address, MPTCP enabled TCP connection could be benefit from extra TCP subflows. Nmstate could query out the MPTCP flags of each IP address found on specific interface, but only support assigning the same MPTCP flags to all the IP addresses of this interface.

To enable MPTCP use case, beside using nmstate to configure MPTCP flags on IP address, you might also need(depend on your linux distributions kernel config), these actions should be done before nmstate and persistent by yourself:

These commands is only for testing purpose, please check with MPTCP documents and technical support for detail.

Example to add ‘subflow’ and ‘signal’ MPTCP flags to all IP of eth1.

---
interfaces:
  - name: eth1
    type: ethernet
    state: up
    mptcp:
      address-flags:
        - subflow
        - signal
    ipv4:
      enabled: true
      dhcp: false
      address:
        - ip: 192.0.2.2
          prefix-length: 24

Example on querying MPTCP of eth1:

---
interfaces:
  - name: eth1
    type: ethernet
    state: up
    mptcp:
      address-flags:
        - subflow
        - signal
    ipv4:
      enabled: true
      dhcp: false
      address:
        - ip: 192.0.2.2
          prefix-length: 24
          mptcp-flags:
            - subflow
            - signal

Limitations

How to tell MPTCP is working.