Ubuntu Linux で LAN アダプターの MTU を設定する

Network

Ubuntu Linux 20.04.4 LTS にインストールしたイーサーネットアダプター ORICO PTR-FU-BK-BP の MTU 値を変更してジャンボフレームに対応させてみました。


先日に こちら で、ORICO の 2.5GbE 対応イーサーネットアダプター PTR-FU-BK-BP を Ubuntu Linux 20.04.4 LTS で使えるようにしてみましたけれど、このネットワークアダプターの MTU を変更してみました。

MTU について

MTU 値はイーサーネットで通信を行う際の、1回に送信できるデータ量を表す数値です。

標準では 1,500 ですけれど、通信経路も含めてジャンボフレーム対応の機器同士で通信するときには MTU の値を引き上げておくと、両者間で対応できる最大のデータ量で通信できるようになり、通信効率が幾分向上するそうです。

途中経路のイーサーネット HUB などもそのデータ量を扱えないと通信障害が起こることにもつながるそうなので、LAN という規模の小さな環境であっても、設置している HUB の仕様を踏まえて適切な MTU 値を指定する必要があります。ジャンボフレーム対応の HUB であれば、一般的には 9,000 まで指定できるようですけれど、規格的な決まりはないため、機器ごとに最大いくつまでの MTU を扱えるかは把握しておくのが重要そうです。

MTU を設定する

Ubuntu Linux 20.04.4 LTS の MTU は、既定では 1,500 が設定されるようですけれど、設定ファイル /etc/netplan/01-network-manager-all.yaml を調整することで変更できました。

たとえば目的のネットワークインターフェイスの名前が enp5s0 で、その MAC アドレスが 00:e0:4c:66:83:7f だったとすると、次のような設定内容を追記することで MTU の値を指定できます。

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp5s0:
      match:
        macaddress: 00:e0:4c:66:83:7f
      mtu: 9000
      dhcp-identifier: mac
      dhcp4: yes
      dhcp6: yes
      optional: true

この例では、MTU を 9,000 にしています。その他、IP アドレスは DHCP からの自動取得するなどの指定も含めた感じの記載にしてあります。

今回の自分の環境では、使用しているイーサーネット HUB が MTU 15,000 まで対応しているものだったので、ここで指定する MTU の値も 9,000 より大きく設定したかったのですけれど、少なくとも今回使用している PTR-FU-BK-BP では 9,000 より大きい値を指定しても設定が無視される様子だったので 9,000 にしてあります。

設定項目をどこまで指定する必要があるかわからなかったのですけれど、たとえば dhcp4: の指定を書いていないと IP アドレスが適切に割り当てられなかったりしたので、基本的には設定内容をひと通り明記することになりそうな気がします。

MTU の設定を反映する

設定ファイルに記載した MTU 値は、次のようにすることで実際のネットワークインターフェイスに反映できます。

sudo netplan apply

ただしこのとき、次のようなエラーがでることがありました。 そんなときにはもう一回、同じコマンドを実行してあげることでエラーが出ずに設定が反映される様子でした。

WARNING: systemd-networkd is not running, output will be incomplete.

Failed to reload network settings: No such file or directory

Falling back to a hard restart of systemd-networkd.service