インターネットの速度が遅いと感じたら、ほとんどの場合、ルーターを再起動します。場合によっては、これで解決することもあります。 時々、インターネット サービス プロバイダー (ISP) がインターネットを制限していると自動的に想定してしまうことがあります。必ずしもそうとは限りません。すべての速度テストで接続速度が良好に見えても、インターネット接続が不安定になる原因は、特定の問題が発生しているだけかもしれません。

まさにそれが私の場合で、結局解決策は期待していたものとは違っていました。必要なのは、最大転送単位(MTU)を実際の接続制限に合わせることだけでした。そうすると、遅延は解消されました。
クイックリンク
MTU は、リンクをそのまま通過できる最大 IP 負荷を定義します。
セグメント化とヘッダーのオーバーサイズのルールによって、実際のパッケージ サイズが決まります。

MTUは、ネットワーク接続デバイスが断片化せずに許容できる最大のデータパケット(バイト単位)を表します。この数値は、ほとんどのイーサネットネットワークでは通常1500バイトに設定されています。1500という数値は恣意的なものではありません。ルーターは、数十年前のイーサネットフレームワーク設計上の制限に基づいて安全であると想定しており、その制限の多くは現在でも使用されています。
しかし、1500バイトは単なるデータサイズではありません。パケットにはプロトコルオーバーヘッドを表す追加データが当然含まれているからです。典型的なTCPトラフィックでは、このオーバーヘッドには、IPv4ヘッダー用に20バイト、TCPヘッダー用にさらに20バイトが含まれます。これを考慮すると、1500MTU環境では、パケットの最大許容サイズは1460バイトになります。これが、標準的なネットワークにおけるTCPセグメントサイズ(MSS)の上限が1460バイトである理由です。
問題は、パケットが通過しなければならないMTU環境よりも大きい場合に発生します。パケットを正常に通過させる唯一の方法は、ルーターがパケットを小さな部分に分割することです。このプロセスはリソースを大量に消費し、各部分に独自のIPヘッダーがあり、宛先でそれらをすべて再構成する必要があるため、CPUの負荷とキャッシュスペースが増加します。このプロセス自体は帯域幅を低下させることはありません。しかし、パケット配信の複雑さと感度が増します。
実際のインターネット パスでは、使用可能な MTU が 1500 未満に減少することがよくあります。
梱包およびアクセス技術により、利用可能な貨物スペースが減少します。
1500バイトならどこでも使えると思うかもしれませんが、それは間違いです。1500バイトは、多くの家庭向け接続で使用されている最大転送単位(MTU)よりも大きいのです。PPPoE(Point-to-Point over Ethernet)は、一部の光ファイバー接続や多くのDSLオプションで一般的な標準規格です。PPPoEの8バイトの追加コストにより、実効MTUは1492に減少します。そのため、ルーターが1500バイトのパケットを1492ビットのトンネルに流す必要がある場合、フラグメンテーションが発生します。
データを追加のパッケージでカプセル化する必要がある限り、実際のペイロードスペースに影響を及ぼします。例えば、VLANは4バイトのタグを提供します。このタグはトラフィックの仮想ネットワークを識別するために必要ですが、ペイロードを減少させます。キャリアレベルネットワークアドレス変換(CGNAT)とDS-Liteも同様の効果があります。DS-Liteの場合、IPv4トラフィックをIPv6パケット内に挿入することでISPネットワーク全体にトラフィックをルーティングすると、追加のヘッダーが追加されます。VPNは元のパケットを新しいパケットのペイロードとし、新しいパケットには新しいヘッダーが必要になります。
これらはすべて、箱が通過する経路のサイズを増やすことなく、既に梱包されている箱にさらに梱包を追加するようなものです。箱が通過できるのは、分割されている場合のみです。
モバイルネットワークでは、LTEと5Gのベースラインが歴史的にイーサネットよりも低い1500バイトであるため、状況はさらに複雑になります。通信事業者の実装に応じて、MTU値は1420~1480の範囲になります。一般的に、接続制限はパス上の最小MTUに等しくなります。ルーターがこの制限を遵守できない場合、パケットの断片化またはサイレントパケットドロップが発生します。 これがインターネットが遅くなる原因である可能性があります。.
自動 MTU 調整メカニズムは必ずしも障害を防ぐわけではありません。
MTUパス検出、ICMPフィルタリング、ブラックホール動作

少なくとも理論上は、非常に効果的な自動フラグメンテーション対策ソリューションがあります。それはパスMTU検出(PMTUD)と呼ばれています。仕組みは以下のとおりです。デバイスはパケット送信時に「no-fragment」ビットを設定することがあります。このビットにより、受信側ルーターはメッセージで応答します。 ICMP タイプ 3 コード 4ダウンストリーム パケット サイズが MTU を超える場合は、「フラグメンテーションが必要です」。
問題は、実際には多くのファイアウォールがデフォルトでICMPをブロックしていることです。そのため、大きなパケットがドロップされ、ファイアウォールのフィルタリングによって送信者がパケットが大きすぎることに気付くことができません。このパケットドロップにより、TCPは再送を引き起こし、指数関数的なロールバックタイマーを生成します。この状況はMTUブラックホールと呼ばれ、トラフィックが流れているように見えても、大きなパケットが常に失敗する状態です。
最新のオペレーティングシステムは、ICMPに依存せずにパケットサイズを調査する手段として、RFC 4821 Packetization Layer Path MTU Discovery(PLPMTUD)を実装することで、一部の障害を軽減しようと試みています。しかし、ルーター、ISP機器、VPNエンドポイントによっては、断片化が効果的に処理されない場合があります。これは速度テストの結果には現れませんが、実際の影響はレイテンシの変動が蓄積し続けることです。
ルータが MSS インストールを実装している場合、MTU の不一致を修正するのではなくマスクしている可能性があります。そのため、症状が一貫しておらず、一定ではない可能性があります。
MTU を測定して修正すると、エンドツーエンドのパケット フローが正常に戻ります。
計算式さえ理解していれば、正しいMTUを見つけるのは簡単です。pingコマンドを使ってテストする必要がある場合は、IPv4ヘッダーが20バイトで、ICMPが8バイト追加されるため、ヘッダーの合計サイズは28バイトになることに注意してください。つまり、ペイロードが1472バイトの場合、IPv4とICMPの28バイトを加えると、合計は1500バイトになります。この値から、フラグメンテーションが発生しない値になるまでペイロードサイズを減らしてください。使用可能なMTUは、28バイトに成功した最大のペイロードを加えた値になります。
Windows コマンドは次のとおりです。
ping 8.8.8.8 -f -l 1472
`-f` オプションで「Don't Fragment」ビットを設定し、`-l` オプションでペイロードサイズを指定します。目標は、常に成功レスポンスが得られるまでペイロードサイズを減らし続けることです。同等のLinuxコマンドは以下のとおりです。
ping -M do -s 1472 8.8.8.8
macOSでは、ハッシュの扱いがバージョンによって異なるため、状況が少し異なります。以下のツールを使うと、より信頼性の高いMTUパスチェックが可能になります。 mtr Homebrew経由。
特定のパスではブラック ホール状態が発生する可能性があり、他のパスでは発生しない可能性があるため、常に 8.8.8.8 だけでなく複数の宛先 IP アドレスに対して MTU をテストしてください。
必要な固定値がわかったら、ルーターのWANインターフェースでMTUを設定するのが最適です。そうすれば、すべてのデバイスを個別に設定する必要がなくなります。以下の表は、様々な接続タイプにおける概算値を示しています。
| 接続タイプ | 予想される典型的なMTU |
|---|---|
| 標準イーサネット(直接ケーブル/光ファイバー、PPPoEなし) | 1500 |
| PPPoE(DSLまたは一部の光ファイバーインターネットサービスプロバイダー) | 1492 |
| VLAN でラベル付けされたインターネット サービス プロバイダー接続 | 1496~1500(インターネット サービス プロバイダーのアプリケーションによって異なります) |
| LTE / 4G / 5Gモバイルネットワーク | 約1420~1480(通信会社によって異なります) |
| IPSec VPN(トンネリングモード) | 1380~1460(コードとパッケージによって異なります) |
| WireGuard(オリジナルMTU 1500) | 〜1412 |
| OpenVPN(UDPモード) | 1300~1450(設定によって大きく異なります) |










