【Linux】Path MTUとは?

Linux

どーも!marusukeです!

tracepathコマンドを実行したときに表示されるpmtu:Path MTUについてです!

Path MTUとは?

Path MTU (PMTU) とは、送信元から宛先までのネットワーク経路上で、通過するすべてのネットワークデバイスが許容する最大のパケットサイズ(MTU: Maximum Transmission Unit)のことです

ネットワーク上では、パケットのサイズが大きすぎると途中のルーターやデバイスで処理できない場合があります。そのため、送信元が経路上の最小MTUを考慮してパケットサイズを調整する必要があります

例:tracepathとPath MTU

tracepathコマンドを実行した例です

出力には経路上のMTU情報が含まれており、次のように表示されます

tracepath example.com
1?: [LOCALHOST] pmtu 1500
1: router.local 0.234ms
2: 192.168.1.1 1.432ms
3: 10.0.0.1 4.678ms
4: 203.0.113.1 12.345ms
5: example.com 15.678ms reached
Resume: pmtu 1400 hops 5 back 4

この例では、pmtu 1500 で経路上の最大パケットサイズが1500バイトに設定されており、最後にpmtu 1400が表示されています。これは、経路上のあるデバイスが1400バイトまでしか許容しないことを意味します

Path MTUが重要な理由

  1. 断片化の防止
    大きすぎるパケットは、途中のルーターで分割(フラグメント化)される場合があります。パケットの分割が発生すると、通信の効率が低下したり、パケットロスが発生する可能性があります。Path MTUを利用することで、断片化を回避できます
  2. 通信効率の向上
    最適なパケットサイズを選択することで、通信の効率を高めることができます。パケットが大きすぎる場合はフラグメント化が起こり、小さすぎる場合はヘッダー部分のオーバーヘッドが増加します
  3. ネットワークの安定性
    正確なPath MTUを利用することで、途中経路での通信トラブルを減らし、より安定した通信が可能になります

Path MTU Discovery (PMTUD)

Path MTU Discovery(Path MTUを発見する仕組み)は、送信元が宛先までの経路上で使用できる最小MTUを自動的に検出するメカニズムです。この仕組みでは、送信元が特定のパケットサイズを試行し、経路上のデバイスがそのサイズを許容するかを確認します

  • IPv4では、Don’t Fragment (DF) フラグを利用して断片化を防ぎつつ、許容されない場合にはICMPエラーメッセージ(Destination Unreachable: Fragmentation Needed)を受け取ることでMTUを調整します
  • IPv6では送信元が適切なパケットサイズで送信する必要があるため、送信元は常にPath MTUを意識する必要があります

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました