인터페이스에서 지원하는 최대 MTU 크기를 얻는 방법은 무엇입니까?

인터페이스에서 지원하는 최대 MTU 크기를 얻는 방법은 무엇입니까?

인터페이스의 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에 대한 핑을 언급하고 예제를 제공했습니다.
  • 내 테스트 환경 인터페이스의 최대 용량은 65535바이트이므로 일부 배포판에서 실제 제한을 출력할지 확실하지 않습니다.

관련 정보