よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

MTUを変更するには

1回の転送で送信できるデータの最大値を示す値であるMTUのサイズを変更することで、転送速度を向上させることができます。
今回はローカル環境のあるセグメントにおいて、大きなデータを取り扱うため、そのセグメントでの通信においてMTUを大きくすることで転送速度の向上を図ります。
#安定した通信環境でない場合は、MTUを大きくすると逆に転送速度が低下してしまう可能性があるため、ご利用は計画的に。

事前確認

MTUを大きくするには以下のことを確認しておいてください

  • LinuxサーバのNICおよびスイッチがJumboフレーム(※1)に対応していること

※1 Jumboフレームとは、Ethernet標準の最大フレームサイズである1518Byteを超えるフレームサイズのことです。


ではRedHat Linuxにおいての作業手順を残しておきます。

ifconfigで一時的にMTUを変更

以下のifconfigコマンドを発行します。

# ifconfig eth0 mtu 9000

設定されたかどうかを確認するためには、

# ifconfig eth0

これでMTUが9000になっていればOKです。

MTUを固定する方法

ifconfigコマンドでMTUを変更した場合は、サーバの再起動やnetworkの再起動でデフォルト値(1500)にリセットされてしまいます。
ではこのMTUを固定するにはどうしたらよいでしょうか。
各インタフェースを起動する際に実行されるスクリプトである /etc/sysconfig/network-scripts/ifup を見ると、以下のように書いてあります。

・・・(略)
if [ -n "${MTU}" ]; then
ip link set dev ${DEVICE} mtu ${MTU}
fi
・・・(略)

${MTU}に値を設定すればよいため、/etc/sysconfig/network-scripts/ifcfg-eth0 で

MTU=9000

を追記すればサーバ再起動後もMTUを9000にすることができるようになります。

さてこれでLinux側の設定は終了です。

しかしながら、LinuxサーバのMTUが9000になっていたとしてもスイッチのMTUが1500のままだと、スイッチで1500x6にフレームが分割されてしまうため、スイッチのMTUもJumboフレームに対応させなければなりません。

今回はCISCOのL2スイッチ(Catalyst 2960)で以下の設定を追加することでJumboフレームに対応させました。

Switch(config)# system jumbo mtu 9000

設定の確認は以下のコマンドで。

Switch(config)# show system mtu

Linuxサーバとスイッチの両方を設定しなければ、頻繁に分割が発生し、転送速度を向上させることはできませんので、注意してくださいね。