最初に設定することなく、nicが特定のMTUサイズをサポートしているかどうかを確認する方法を見つけようとしています(実際には、すべてのサーバーのすべてのインターフェイスの理論上の最大MTUを見つけたいと思います)。
Ethtoolのすべての機能を調べ、/ sys/class/netなどを調べましたが、見つけることができるのは現在のMTU値だけです。
それを試さずにインターフェイスでMTUがどのくらい高いかを確認する方法はありますか?
ping
で特定のmtuサイズを送信できます
ping -M do -s <mtu-size> <ip-address>
<ip-address>
は、確認するインターフェースのローカルIPです。
このメソッドを使用する場合、ヘッダーとして追加の28バイトがあることに注意してください。
Message too long
エラーなどが発生するまで、mtuサイズを(ping
コマンドで)増やし続けます。
現在のMTU設定とIP:
[root@centos7 ~]# ip l | grep ens37 | awk '{print $4,$5}'
mtu 1500
[root@dev-worker1 ~]# ip addr show ens37 | grep "inet " | awk '{print $2}'
10.10.10.10/24
現在のMTU設定よりも大きいパケットを送信するが、それでも受け入れられる:
[root@centos7 ~]# ping -M do -s 8972 10.10.10.10
PING 10.10.10.10 (10.10.10.10) 8972(9000) bytes of data.
8980 bytes from 10.10.10.10: icmp_seq=1 ttl=64 time=0.103 ms
8980 bytes from 10.10.10.10: icmp_seq=2 ttl=64 time=0.067 ms
送信が大きすぎます。一部のディストリビューションmayは、実際にはこのメソッドを介して最大値を伝えます。例:Centos7:
[root@centos7 ~]# ping -M do -s 118972 10.10.10.10
Error: packet size 118972 is too large. Maximum is 65507
完了したら、ip link
を使用して、最大に設定できます。
ip link set <interface name> mtu <mtu value>
編集: