インターフェイスのMTUを次のように設定できます。
ip link set dev eth0 mtu 9000
ただし、異なるインターフェイスと異なるコンピュータには異なる制限があり、エラーが発生しているようです。
Error: mtu greater than device maximum.
私はまず、設定を試みずにNICが特定のMTUサイズをサポートしているかどうかを確認する方法を見つけようとしています。実際には、すべてのサーバーのすべてのインターフェイスの理論的最大のMTUを探したいと思います。
ethtoolのすべての機能を確認して/sys/class/netなどを見てみましたが、私が見つけることができるのは現在MTU値だけでした。
インターフェイスを試さずにインターフェイスでMTUがどれだけ高いかを確認する方法はありますか?
答え1
驚くべきことにip
、この情報は要求されたときに報告されることを発見しました。
ip -d link list
21: enxa44cc8aa52bd: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000 link/ether a4:4c:c8:aa:52:bd brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 9194 addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 16354 gso_max_segs 65535
minmtu
それがmaxmtu
答えです。
答え2
特定のMTUサイズを送信できますping
ping -M do -s <mtu-size> <ip-address>
<ip-address>
確認するインターフェイスのローカル IP。
この方法では、ヘッダーに28バイトが追加されます。
エラーなどがping
発生するまで、コマンドのmtuサイズを増やしてください。Message too long
現在の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
送信容量が大きすぎます。一部のディストリビューション可能この方法は実際に最大値を知らせます。たとえば、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>
編集する:
- 明確にするために、ローカルIPへのpingについて言及し、例を提供しました。
- 私のテスト環境インターフェイスの最大容量は65535バイトなので、一部のディストリビューションで実際の制限を出力するかどうかはわかりません。