2013年3月22日金曜日

AWSのVPCにおけるMTUとMSS設定について

Amazon Web ServicesのVPCを、YAMAHA RTX1100で構築していますが、以下の現象が発生して困っておりました。

viコマンドやls -lコマンドなどを利用した場合に、sshがフリーズしてしまう(再現性あり)


  • VPC内の端末間では現象がおきないことから、VPC(AWSと自社側)の間で何か問題が発生しているっぽい。
  • 特定のコマンドや、特定のディレクトリをリストした場合に現象が出ることから、送受信データに問題があるっぽい。


ということで、疑わしいところはパケットサイズではないかと睨み、MTUのサイズをpingコマンドで探し出してみた。
ping -f -l 1362 -n 1 サーバアドレス ←これはOK
ping -f -l 1363 -n 1 サーバアドレス ←これはNG
ということで、MTUサイズは1362+20(IPヘッダ)+8(ICMPヘッダ)=1390
MSSサイズは、MTU-20(IPヘッダ)-20(TCPヘッダ)となるので、1390-40=1350が正しいサイズになる。

そこで、tunnel select 1とtunnel select 2に
ip tunnel mtu 1390
ip tunnel tcp mss limit 1350
を記載したところ、現象が改善された!

VPCを設定する際に、AWSがルータのコンフィグを自動生成してくれるのだが、このコンフィグではMSSが1387になっているので修正する必要がある(MTUについてはコンフィグには記載なし)。