IPSec通信おけるTCP MSS調整機能

開始者 kkondo ‎04-05-2018 05:50 AM (3,408 閲覧回数)

※この記事は以下の記事の日本語訳です。

 

TCP MSS adjustment for IPSec traffic
https://live.paloaltonetworks.com/t5/Learning-Articles/TCP-MSS-adjustment-for-IPSec-traffic/ta-p/749...

 

IPSec通信において、パロアルトネットワークス・ファイアウォールは 3ウェイ ハンドシェイクを介してTCP MSSを自動調整します。これは、VPNの外部インターフェース設定で、TCP MSS調整機能オプションを有効に設定しているのとは関係なく動作するものです。

 

MSS計算結果は以下の2つの値の小さい方を使用します。

 

  1. トンネル・インターフェースのMTU - 40 bytes
  2. インターフェイスMTU、暗号化、認証アルゴリズムをベースに計算したMSS値

 

オリジナル パケット サイズ、暗号化アルゴリズム、認証アルゴリズム、インターフェイスのMTUとの関連性

 

以下の構成について考えてみます :

 

クライアント  ——— パロアルト ——— インターネット  ——— 対向ファイアウォール ——— サーバー

                                 \________________(IPSec) ________________/

 

クライアントMTU : 1500

サーバーMTU: 1500

終端VPN装置インターフェイスのMTU : 1500

トンネル・インターフェースのMTU : 1500

暗号化アルゴリズム : AES-256-CBC

認証アルゴリズム : SHA1

 

ESP オーバーヘッド: (全てはbytes表示)

 

Outer IP Header 20
Sequence Number 4
SPI 4
Initialisation Vector 16
ESP Padding [0-15]
Padding Length 1
Next Header 1
Authentication Data 12
   
Total [58-73]

 

暗号化アルゴリズム (AES-256) 認証アルゴリズム(SHA1)は最大73 bytesのオーバーヘッドを生成します。

 

オリジナル パケット サイズ + 最大オーバーヘッド <= 1500

TCPセグメント + TCPヘッダー + IPヘッダー + 最大オーバーヘッド <= 1500

TCPセグメント + 20 bytes + 20 bytes +  73 bytes <= 1500

TCPセグメント <= 1387 bytes

 

もしMSS1388 bytes使用する場合、ESPヘッダーは1496 bytesとなります。 (パディングは10 bytesのみです)

 

 

上記から、

 

  1. トンネル・インターフェースMTUからのMSS計算結果= 1500 - 20 Bytes (IPヘッダー) - 20 bytes (TCPヘッダー) = 1460 Bytes
  2. インターフェイスMTU, 暗号化, 認証アルゴリズムによるMSS計算結果 = 1388 Bytes

 

最終的なMSS計算結果 : 小さい方 (1460, 1388) = 1388.

 

同様の計算手法は、様々な暗号化/認証アルゴリズムの組み合わせに対して使うことができます。いくつかのよく使われる値は:

 

初期ベクターのサイズ

  • AES : 16 bytes
  • DES : 8 bytes

 

認証データのサイズ

  • MD5/ SHA-1 :  12 bytes
  • SHA-256 : 16 bytes
  • SHA-384 : 24 bytes
  • SHA-512 : 32 bytes

 

パディングされる最大値

  • AES : 15 bytes
  • DES : 7 bytes

 

注意 :

 

  • 上記の値は、PAN-OS 6.0以降のバージョンで試験されたものです。
  • 上記の例にて、もしインターフェイスのMTU1400に設定されていた場合、MSSの結果は1388でなく、1360になるでしょう。

 

上記の計算様式は、IPSecトンネルのMSS調整の計算にも使われます。もしファイアウォールがESPオーバーヘッドを考慮して自動調整をしなければ、TCP調整のために適切なMTUの値をトンネル・インターフェースに設定します。

 

例えば、上記の例で、ファイアウォールがESPオーバーヘッドを考慮してMSS値を調整しないのであれば、トンネル・インターフェースのMTUに 1387 + 40 = 1427 bytes を設定することもできます。これは結果的にMSS値が、1387 bytesに調整されるのと同じになります。

 

これらは、IPSecトネル上で動作する、TCPアプリケーションのパフォーマンスを向上させます。

 

著者: abjain

Ask Questions Get Answers Join the Live Community
寄稿者: