最近あまり聞かないが、通信をやっていると避けて通れないMTU値。
MTUとは
インターネットを利用する際、最近は専門的な知識を持ち得なくても、結構普通に通信出来てしまっている事が当たり前になっている。
だから普段はあまり悩む事などないのが常だが、それはデフォルトで一定の設定が決め打ちで用意されていて、その設定で通信しているから、知らなくても通信できる、というのが世の中の当たり前になっている。
ところが、実はこの当たり前のデフォルト値は、あくまでも通信ができる、という事を前提にしているだけで、効率の良い通信をしているという事とは違うのである。
通信の世界では、適正な設定値は常に一定ではなく、通信経路の中で設定されている値と異なると通信ロスが発生する事もあるのである。
MTU値とは、1回の通信で転送可能な最大のデータサイズを意味する。
難しい話になるので、簡単にさわりだけ書くと、我々がよく耳にするイーサネットと、それよりも規模の大きいネットワーク層の通信で利用される規格とでは、こうした通信する仕組みが異なっていたりして、この設定値が違っていたりする。その食い違いを各通信機器が吸収し、大きすぎるデータを分割したりする。この分割処理の事をIPフラグメンテーションという。
通信をより効率よく行うには、このIPフラグメンテーションが起きないデータサイズにする事が理想なのだが、これを調整するため、MTU値を変えるのである。
イーサネットではこのMTU値は1,500と定めているので、基準は1,500になるのだが、通信経路の特定のところの機器でこの1,500と異なるMTU値にしていると、ここでIPフラグメンテーションが発生してしまう。
通信を早くする為には、このIPフラグメンテーションを起こさないようにする事が重要で、そのためにMTU値を変更して対応する。
実際には、IPv4通信において、このMTU値が異なっていたとしても、IPフラグメンテーションを通信パケットの送信回数を増やす事で解決してくれるので、通信できないという事はないのだが、最適値にする事でバケット送信回数を減らし、通信そのものを速くする事ができる。
で、このMTU値を推し量る事ができるサイトがある。ここで調べると、現在の環境としてのMTU値が判る。
https://www.speedguide.net/analyzer.php
PPPoEとIPoEで違う?
で、以前PPPoE通信をしていた時は、ウチのMTU値は「1454」だった。
それを数年前、IPv6に移行するとしてIPoE通信に切替えたが、その時以来、MTU値は見ていなかった。
で、調べて見たら…なんと「1460」に変わっていたのである。
通信経路が変わった事で、MTU値が変わったようである。
今年の年始に新PCを組み上げた事、現在はIPv6に移行した事、少なくともこの2点において以前とは環境が異なっているので、一度MTU値を見直す事にした。
イーサネットは規格上MTU値を1500としているので、Windowsでのイーサネット機器はMTU値が全て1500に設定されている。
なので、まずOSでコントロールしているイーサネットに関してMTU値を1460にした。
これは管理者権限のコマンドプロンプトで直接設定した。
まず最初に以下をコマンドプロンプトに入力した。
netsh interface ipv4 show interface
これを実行するとOSでIPv4通信するデバイス情報とその状態が表示される。
表示されているイーサネット、Wi-Fiに関するデバイスのIdxを指定して、MTU値を変更するが、その変更は以下のコマンドで実行する。
netsh interface ipv4 set interface (Idx番号) mtu=1460(MTU値)
たとえばIdx番号が3ならば、以下のようになる。
netsh interface ipv4 set interface 3 mtu=1460
複数のデバイスがあるようなら、これをデバイスの数だけ実行する。
Windowsの設定はこれで良いのだが、ここでそういえばルーターはどうなってるんだろう? と思いつき、WXR-5950AX12のMTU値を確認してみた。
すると…なんとこちらも1500になっていたので、コイツを1460に設定しなおしてみたところ…大問題が発生。なんとインターネットへの接続が全くできなくなったのである。
ルーターは元に戻す
大前提として、インターネットへのリンク確立ができなくなっては意味がない。
という事で、WXR-5950AX12のMTU値をとりあえず元の1500に設定し直す。
正直、WXR-5950AX12はヒトクセもフタクセもあるので、通信ができなくなったというだけでドキドキモノである。
とりあえず元に戻した段階でv6プラスのリンクが確立できたので、これ以上、設定を追い込む事は止めることにした。
とりあえずWindowsのイーサネットはMTU値を1460にする事ができたので、PCからの送信データサイズは1460の設定値で今後は通信できるだろう。
しかし…なぜルーターのMTU値を変更したのがマズかったのだろうか?
この辺り、私の知識が中途半端なのも問題だと言える。
ちなみにこのMTU値だが、PCだけでなくNintendo SwitchやPlayStation4、5でも設定値がある。
どこかのタイミングでこれらも見直す事で通信の効率化は図れるのではないかと思うが…判らなければ触らない、という方がよいのかもしれない。