【説明】
“ip tcp adjust-mss”は、Ciscoルーターやスイッチで使用されるコマンドで、TCP Maximum Segment Size(MSS)の調整を行います。MSSは、TCP/IPプロトコルスタックにおいて、TCPデータグラムが一度に送信できる最大サイズを指定します。この値は、IPヘッダーとTCPヘッダーのサイズを除いたもので、通常はMTU(Maximum Transmission Unit)から算出されます。
“ip tcp adjust-mss”コマンドは、主に以下の目的で使用されます。
1.フラグメント化の低減: MSSの調整により、パケットフラグメント化を抑えることができます。パケットがフラグメント化されると、ネットワークのパフォーマンスが低下する可能性があるため、フラグメント化を避けることが重要です。
2.VPNトンネルとMSSの調整: VPNトンネルを使用する際、オリジナルのパケットに追加ヘッダーが付与されます。これにより、MSSがオリジナルのMTUを超える可能性があります。この場合、”ip tcp adjust-mss”コマンドを使用してMSSを調整することで、パケットのフラグメント化を防ぐことができます。
【概要】
- 複数のルータをホップする場合、[ip tcp adjust-mss]をどのルータのどのinterfaceに設定か確認する。
- 各ルータ(interface)で、別々のmssを設定した場合、どうなるのか確認する。
【前提】
- Wiresharkの仕様上、FCS 4byteは除外されるため、結果上もFCS省く
- [ip tcp adjust-mss]はTCPのみに適応され、UDP/ICMPなどは対象外
構成
検証内容1
【ケース0】各ルータでMSSは設定せずデフォルトでPC1とPC2間でTCP通信を行う
【ケース1】R2の【ケース1】のinterfaceで「ip tcp adjust-mss 1000」でPC1とPC2間でTCP通信を行う
【ケース2】R2の【ケース2】のinterfaceで「ip tcp adjust-mss 1000」でPC1とPC2間でTCP通信を行う
【ケース3】R4の【ケース3】のinterfaceで「ip tcp adjust-mss 1000」でPC1とPC2間でTCP通信を行う
コマンド
interface GigabitEthernet X/X ip tcp adjust-mss 1000
検証結果1
【ケース0】各ルータでMSSは設定せずデフォルトでPC1とPC2間でTCP通信を行う
- capture区間① Data 1448byte / Frame 1514byte
- capture区間② Data 1448byte / Frame 1514byte
- capture区間③ Data 1448byte / Frame 1514byte
- capture区間④ Data 1448byte / Frame 1514byte
- capture区間⑤ Data 1448byte / Frame 1514byte
【ケース1】R2の【ケース1】のinterfaceで「ip tcp adjust-mss 1000」でPC1とPC2間でTCP通信を行う
【ケース2】R2の【ケース2】のinterfaceで「ip tcp adjust-mss 1000」でPC1とPC2間でTCP通信を行う
【ケース3】R4の【ケース3】のinterfaceで「ip tcp adjust-mss 1000」でPC1とPC2間でTCP通信を行う
※ケース1~3は結果が同様のため集約する
- capture区間① Data 988byte / Frame 1054byte
- capture区間② Data 988byte / Frame 1054byte
- capture区間③ Data 988byte / Frame 1054byte
- capture区間④ Data 988byte / Frame 1054byte
- capture区間⑤ Data 988byte / Frame 1054byte
検証内容1の考察
- TCP通信(3wayハンドシェーク)の経路にあるルータであれば、どこのルータ(どのインターフェイス)に設定されていても、MSSをadjustすることができる。
検証内容2
ケース4~6で、それぞれmss値を変えた場合、PC2 → PC1へのData/Frameサイズは
ip tcp adjust-mss 1100 ip tcp adjust-mss 800 ip tcp adjust-mss 1200
検証結果2
- capture区間① Data 788byte / Frame 854byte
- capture区間② Data 788byte / Frame 854byte
- capture区間③ Data 788byte / Frame 854byte
- capture区間④ Data 788byte / Frame 854byte
- capture区間⑤ Data 788byte / Frame 854byte
検証内容2の考察
複数のmssの設定があるルータをTCP通信が経由する場合、mssが最小の値を採用する。
TCP 3wayハンドシェーク時にDataサイズは決定される。