Q. VPNはなぜこんなに遅いの?
A. MTUの調整ができていないから
インターネットVPN経由の通信が明らかに遅い場合、MTU▼の調整ができていないことがある。MTUとは1回の転送で送れるパケットの最大容量で、回線ごとに決められている。NCS&A 可視化・プラットフォーム事業部の平岩 雅俊さんは、「MTUのサイズが合ってないとパケット分割が発生し遅くなる。これはVPNでよくあるトラブルの一つ」と言う。
一例として、LAN内のパソコンからインターネットVPN経由で通信する様子を見てみよう。LANで使うイーサネットのMTUは1500バイト。VPNのMTUはVPNルーターによって異なるが、ここでは1454バイトとする。MTUのサイズを調整していない場合、パソコンが1500バイトのパケットを送信すると、VPNルーターはパケットを1454バイト以下になるように分割してVPN上へ送り出す。このようなパケット分割が発生することで、スループットが落ちる。
場合によっては、正常な通信ができなくなることもある。パケットのヘッダー内に分割を禁止するフラグ(DFビット)が立っていると、VPNルーターは分割できないためパケットを破棄し、送信元に対してエラーを伝えるICMPパケットを送る▼。このICMPパケットが途中にあるファイアウォールなどで遮断されると、通信が途切れてしまう。
MTUの調整など対策が必須
このような場合、主な対策として次の三つが考えられる。
一つめは、パソコンから送信するパケットのサイズをVPNのMTUに合わせて小さくすること。パソコンの設定でMTUを変更すればよい。サーバーのMTUを調整することもある。
二つめは、ルーターのMSS▼の設定値を、MTUを考慮した値に変更すること。MSSはTCPで転送可能なデータ(セグメント▼)の最大値である。これにより、TCPのネゴシエーション▼時に、VPNのMTUに見合ったデータサイズを通知できる。
三つめは、IPsecで暗号化する前にパケットを分割する機能を使うこと▼。暗号化後にパケットを分割すると、対向ルーターが分割されたパケットを組み立ててから復号しなければならず、パフォーマンスが低下する。IPsecの暗号化前に分割することでこのような事態を回避できる。
Maximum Transmission Unitの略。
このときのICMPパケットは、パケット分割が必要であることと、回線のMTUを伝える。送信元はMTUを調整してパケットを再送信する。この仕組みをPath MTU Discoveryと呼ぶ。
Maximum Segment Sizeの略。
TCPでやり取りするデータ(ヘッダー含む)の単位。
TCPの接続を確立するために、送信元と宛先の機器が通信に必要な情報をやり取りし、パラメーターを決定すること。
この機能を持たないルーターもある。