Ошибка при установке MTU 9000

1. Проблема

При попытке установить значение MTU для логической сети равное 9000 (Jambo Packet) и последующем назначении этой логической сети физическому сетевому адаптеру появляется ошибка:

mtu failed

В лог файлах есть следующие записи:

  • В лог файле messages:

    Mar 16 13:04:33 ps-stand NetworkManager[1604]: <warn>  [1678961073.2031] platform-linux: do-change-link[2]: failure changing link: failure 22 (Invalid argument - mtu greater than device maximum)
    Mar 16 13:04:33 ps-stand NetworkManager[1604]: <warn>  [1678961073.2031] device (enp1s0): mtu: failure to set IPv6 MTU
    Mar 16 13:04:33 ps-stand NetworkManager[1604]: <warn>  [1678961073.2033] platform-linux: do-change-link[2]: failure changing link: failure 22 (Invalid argument - mtu greater than device maximum)
    Mar 16 13:04:33 ps-stand NetworkManager[1604]: <warn>  [1678961073.2035] device (enp1s0): mtu: failure to set IPv6 MTU
  • В логах файлах VDSM можно увидеть какие изменения пытались применится к адаптеру:

    2023-03-16 13:08:23,525+0300 INFO  (jsonrpc/3) [api.network] FINISH setupNetworks error=
    desired
    =======
    ---
    name: enp1s0
    type: ethernet
    state: up
    mtu: 9000
    current
    =======
    ---
    name: enp1s0
    type: ethernet
    state: up
    accept-all-mac-addresses: false
    ethernet:
      auto-negotiation: false
    ethtool:
      feature:
        tx-generic-segmentation: true
        tx-tcp-segmentation: true
      ring:
        rx: 256
        tx: 256
    ipv4:
      enabled: false
    ipv6:
      enabled: false
    lldp:
      enabled: false
    mac-address: 56:6F:4B:F3:00:83
    mtu: 1500
    difference
    ==========
    --- desired
    +++ current
    @@ -2,4 +2,21 @@
     name: enp1s0
     type: ethernet
     state: up
    -mtu: 9000
    +accept-all-mac-addresses: false
    +ethernet:
    +  auto-negotiation: false
    +ethtool:
    +  feature:
    +    tx-generic-segmentation: true
    +    tx-tcp-segmentation: true
    +  ring:
    +    rx: 256
    +    tx: 256
    +ipv4:
    +  enabled: false
    +ipv6:
    +  enabled: false
    +lldp:
    +  enabled: false
    +mac-address: 56:6F:4B:F3:00:83
    +mtu: 1500
     from=::ffff:172.25.1.146,43600, flow_id=b0efccc1-7f6f-4ec1-acca-5814e8a1b8c7 (api:52)
    2023-03-16 13:08:23,526+0300 ERROR (jsonrpc/3) [jsonrpc.JsonRpcServer] Internal server error (__init__:354)
    Traceback (most recent call last):
      File "/usr/lib/python3.6/site-packages/yajsonrpc/__init__.py", line 349, in _handle_request
        res = method(**params)
      File "/usr/lib/python3.6/site-packages/vdsm/rpc/Bridge.py", line 194, in _dynamicMethod
        result = fn(*methodArgs)
      File "<decorator-gen-501>", line 2, in setupNetworks
      File "/usr/lib/python3.6/site-packages/vdsm/common/api.py", line 50, in method
        ret = func(*args, **kwargs)
      File "/usr/lib/python3.6/site-packages/vdsm/API.py", line 1579, in setupNetworks
        supervdsm.getProxy().setupNetworks(networks, bondings, options)
      File "/usr/lib/python3.6/site-packages/vdsm/common/supervdsm.py", line 56, in __call__
        return callMethod()
      File "/usr/lib/python3.6/site-packages/vdsm/common/supervdsm.py", line 54, in <lambda>
        **kwargs)
      File "<string>", line 2, in setupNetworks
      File "/usr/lib64/python3.6/multiprocessing/managers.py", line 772, in _callmethod
        raise convert_to_error(kind, result)
    libnmstate.error.NmstateVerificationError:
    desired
    =======
    ---
    name: enp1s0
    type: ethernet
    state: up
    mtu: 9000
    current
    =======
    ---
    name: enp1s0
    type: ethernet
    state: up
    accept-all-mac-addresses: false
    ethernet:
      auto-negotiation: false
    ethtool:
      feature:
        tx-generic-segmentation: true
        tx-tcp-segmentation: true
      ring:
        rx: 256
        tx: 256
    ipv4:
      enabled: false
    ipv6:
      enabled: false
    lldp:
      enabled: false
    mac-address: 56:6F:4B:F3:00:83
    mtu: 1500
    difference
    ==========
    --- desired
    +++ current
    @@ -2,4 +2,21 @@
     name: enp1s0
     type: ethernet
     state: up
    -mtu: 9000
    +accept-all-mac-addresses: false
    +ethernet:
    +  auto-negotiation: false
    +ethtool:
    +  feature:
    +    tx-generic-segmentation: true
    +    tx-tcp-segmentation: true
    +  ring:
    +    rx: 256
    +    tx: 256
    +ipv4:
    +  enabled: false
    +ipv6:
    +  enabled: false
    +lldp:
    +  enabled: false
    +mac-address: 56:6F:4B:F3:00:83
    +mtu: 1500

2. Решение

Данная проблема может возникать из-за того, что сетевой адаптер не поддерживает определённый размер MTU.

Поддерживаемые значения MTU адаптера можно проверить командой:

ip -d link list

Минимальные и максимальные значения MTU, поддерживаемые физическим адаптером будут доступны в выводе команды:

enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 56:6f:4b:f3:00:a1 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 1500 addrgenmode none numtxqueues 4 numrxqueues 4 gso_max_size 65536 gso_max_segs 65535