家とかで使うと気にならないけれど、出先のモバイルルータで作業しているととんでもなく回線速度が遅くて困った。
一応、Webブラウザはそうでもないけれど、api叩く系のコマンドラインがすんごいおそい。
MTUはMaximam Transmission Unitのこと。
ネットワークが1回で送信できるデータサイズのことで、物理媒体ごとにことなる。(光ファイーバー、家庭用ルータ、などにより値はことなる)
MTUを超えたパケットを送信する場合、MTUに合わせてパケットを分割し、それをIPフラグメンテーションといい、ルータ経由時に自動的に行われる。
送信側でサイズを指定できるが、受信側のサイズが小さいと受信することができず、エラーとなる。その場合は、受信側のMTUに合わせて再分割される。
ただし、宛先はすべてのフラグメント化されたパケットが揃うまで再構成を実行しないため、IPフラグメンテーションによる再分割再送信する手順の分だけ処理に時間がかかってしまう。
そのため、ネットワークが不調の場合はMTUが適正でないことがありえる。
こちらのサイトで適正なMTU値を確認できる。
https://www.speedguide.net/analyzer.php
pingで確認する場合。
IPヘッダ20バイト、イーサネットフレーム8バイトが追加されるので、28バイト足したデータサイズを送って確かめる。
1500だと too longと出るので大きい模様。
1 2 3 4 5 6 7 |
yuta ~ ping -s 1528 -M do google.com PING google.com (142.250.206.206) 1528(1556) bytes of data. ping: local error: message too long, mtu=1500 ping: local error: message too long, mtu=1500 ^C --- google.com ping statistics --- 2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1009ms |
1,5,10くらいずつサイズを落としていく
1 2 3 4 5 6 7 |
yuta ~ 1 ping -s 1412 -M do google.com PING google.com (142.250.206.206) 1412(1440) bytes of data. 76 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=1 ttl=114 (truncated) 76 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=2 ttl=114 (truncated) 76 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=3 ttl=114 (truncated) ^C |
ネットワークインターフェース名をip aで確認し、/etc/netplanの下に以下のようなyamlファイルを作る
1 2 3 4 5 6 7 8 |
root@yuta-ThinkPad-X1-Nano-Gen-1:~# cat /etc/netplan/11-wifi.yaml # Let NetworkManager manage all devices on this system network: ethernets: wlp0s20f3: dhcp4: true mtu: 1412 version: 2 |
反映する
1 |
netplan apply |
参考
https://atmarkit.itmedia.co.jp/aig/06network/mtu.html