概要
このドキュメントは、マルチパス TCP(MPTCP)の概要、フロー検査への影響、および影響されるシスコ製品と影響されないシスコ製品について説明します。
MPTCP の概要
背景説明
インターネットに接続されたホストまたはデータセンター環境内のホストは通常、複数パスによって接続されます。 ただし、TCP をデータ転送に使用している場合、通信は単一のネットワークに制限されます。 代替パスが十分に利用されない場合、2 台のホスト間で複数のパスが輻輳することが可能です。 これらの複数のパスが同時に使用されることで、ネットワーク リソースを効率的に使用することができます。 また、複数の接続を使用することにより、ネットワーク障害に対するより高いスループットと改善された復元力が可能になるため、ユーザ エクスペリエンスが向上します。
MPTCP は、単一のデータ フローが複数の接続に分割され実行できるようにする、通常の TCP の一連の拡張です。 詳細については、RFC6824: TCP Extensions for Multipath Operation with Multiple Addresses を参照してください。
次の図に示すように、MPTCP は送信側のノードで 9 mbps のフローを 3 種類のサブフローに分割することができます。これは受信側のノードで元のデータ フローに集約されます。

MPTCP 接続に参加するデータは、通常の TCP 接続を介した参加と同様に正しく機能します。つまり、 送信されたデータは内部順序配信を保証しました。 MPTCP は、ネットワークのスタックを調整し、トランスポート層で動作するため、アプリケーションによって透過的に使用されます。

セッションの確立
MPTCP は、複数のサブ フローでのデータの分離と再構成をネゴシエートし、オーケストレーションするには、TCP オプションを使用します。 TCP オプション 30 は、MPTCP による包括的な使用のために Internet Assigned Numbers Authority(IANA)によって予約されています。 詳細については、Transmission Control Protocol (TCP) Parameters を参照してください。 通常の TCP セッションの確立では、MP_CAPABLE オプションは最初の同期(SYN)パケットに含まれます。 応答側が MPTCP のネゴシエーションをサポートしていてこれを選択する場合は、SYN 許可(ACK)パケットの MP_CAPABLE オプションで応答します。 このハンドシェイク内で交換されるキーは、将来この MPTCP フローへの他の TCP セッションの参加および削除を認証するために使用されます。
追加のサブフローの参加
必要であると思われる場合、Host-A は Host-B への別のインターフェイスまたはアドレスからの追加のサブフローを開始する場合があります。 最初のサブフローと同様に、このサブフローをもう一方のサブフローにマージすることを指定するには、TCP オプションが使用されます。 最初のサブフローの確立で(ハッシュ アルゴリズムとともに)交換するキーは、追加の要求が本当に Host-A によって送信されていることを確認するために Host-B によって使用されます。 2 番目のサブフローの 4 タプル(送信元 IP、宛先 IP、送信元ポート、宛先ポート)は最初のサブフローのものとは異なります。 このフローはネットワークを介して異なるパスを実行する可能性があります。

アドレスの追加
Host-A に複数のインターフェイスがあり、Host-B に複数のネットワーク接続が存在する場合があります。 Host-B は、B1 に着信する各アドレスからの Host-A が起源のサブフローの結果として、アドレス A1 と A2 について暗黙的に学習します。 Host-B が追加アドレス(B2)を Host-A にアドバタイズして、他のサブフローが B2 に到達できるようにすることが可能です。 これは TCP オプション 30 で実行します。 次の図に示すように、Host-B は Host-A にセカンダリ アドレス(B2)をアドバタイズし、追加で 2 個のサブフローが作成されます。 MPTCP がオープン システム相互接続(OSI)スタックのネットワーク層で動作するため、アドバタイズされる IP アドレスは、IPv4、IPv6、またはその両方の場合があります。 一部のサブフローは、他のサブフローが IPv6 によって伝送されると、IPv4 で同時に伝送されることが可能です。

セグメンテーション、マルチパス、および再構成
アプリケーションが MPTCP に付与したデータ ストリームは、送信側が複数のサブフローにセグメント化して配信する必要があります。 その後、このデータ ストリームをアプリケーションに再配信する前に、1 つのデータ ストリームに再構成する必要があります。
MPTCP は、各サブフローのパフォーマンスと遅延を調べ、最も高い総スループットを取得するにはダイナミックにデータの配信を調整します。 データ転送時に、TCP ヘッダー オプションは、MPTCP のシーケンス番号と確認応答番号、現在のサブフロー シーケンス番号と確認応答番号、およびチェックサムに関する情報を含めます。
フロー検査の影響
多くの安全 装置は zero-out または未知 TCP オプションをオプション(NOOP)値と取り替えるためにかもしれませんでした。 ネットワーク デバイスが最初のサブフローで TCP SYN パケットにこれを実行すると、MP_CAPABLE アドバタイズメントは破棄されます。 この結果、サーバはクライアントが MPTCP をサポートしていないと判断し、通常の TCP 動作に戻ります。
オプションが維持され、MPTCP が複数の副フローを確立できればネットワークデバイスによるインライン パケット 分析は確実に機能しないかもしれません。 これはデータ フローの一部だけが各サブフローに引き継がれるためです。 MPTCP へのプロトコル インスペクションの影響は、何もない場合もあればサービスが完全に中断される場合もあります。 影響は検査するデータの内容と程度によって変わってきます。 パケット 分析はファイアウォール アプリケーション層ゲートウェイ(ALG かフィックスアップ)、ネットワーク アドレス変換(NAT) ALG、Application Visibility and Control(AVC) (AVC)、Network-Based Application Recognition(NBAR)または侵入検知 サービス(IDS/IPS)を含むかもしれません。 アプリケーション インスペクションが環境に必要な場合、TCP オプション 30 の削除をイネーブルにすることを推奨します。
暗号化が原因でフローが検査されない場合、あるいはプロトコルが不明な場合は、インライン装置の MPTCP フローへの影響はありません。
MPTCP の影響を受けるシスコ製品
次の製品は MPTCP による影響を受けます:
- Adaptive Security Appliance(ASA)[AdaptiveSecurityApplianceASA]
- Cisco Firepower Threat Defense
- 侵入防御システム(IPS)
- Cisco IOS XE および IOS ®
- Application Control Engine(ACE)
各製品は、このドキュメントの後の項で詳細に説明します。
ASA
TCP の動作
デフォルトでは、Cisco ASA ファイアウォールは、MPTCP オプション 30 などのサポートされていない TCP オプションを NOOP オプション(オプション 1)と置き換えます。 MPTCP オプションを許可するには、次の設定を使用します:
- デバイスから TCP オプション 30(MPTCP で使用)を許可するポリシーを定義します:
tcp-map my-mptcp
tcp-options range 30 30 allow
- トラフィックの選択を定義します:
class-map my-tcpnorm
match any
- トラフィックからアクションへのマップを定義します:
policy-map my-policy-map
class my-tcpnorm
set connection advanced-options my-mptcp
- ボックスまたはインターフェイスごとにこれをアクティブ化します:
service-policy my-policy-map global
プロトコル インスペクション
ASA は多くのプロトコルのインスペクションをサポートしています。 インスペクション エンジンのアプリケーションへの影響は異なります。 インスペクションが必要な場合、上記の TCP マップを適用しないことを推奨します。
Cisco Firepower Threat Defense
TCP の動作
FTD が TCP オプションを許可するために TCP MAP を修正するように実行すると同時に IPS/IDS のための強度のパケット インスペクションはそれを推奨されません保守します。
Cisco IOS ファイアウォール
コンテキストベース アクセス コントロール(CBAC)
CBAC は TCP ストリームから TCP オプションを取除きません。 MPTCP は、ファイアウォールを経由して接続を作成します。
ゾーンベース ファイアウォール(ZBFW)
Cisco IOS および IOS XE ZBFW は TCP ストリームから TCP オプションを取除きません。 MPTCP は、ファイアウォールを経由して接続を作成します。
ACE
デフォルトでは、ACE デバイスは TCP 接続から TCP オプションを排除します。 MPTCP 接続は、通常の TCP 動作にフォールバックします。
ACE デバイスは設定に記述されているように TCP オプション コマンドによって TCP オプションを、許可するためにどのようにのセキュリティ ガイド vA5(1.0) の ACE ハンドル TCP オプション セクション、Cisco ACE アプリケーション コントロール エンジン設定されるかもしれません。 ただし、2 番目のサブフローが異なる実サーバに分散されて、接続が失敗する場合があるので、これが常に推奨されるわけではありません。
MPTCP によって影響を受けないシスコ製品
通常、TCP フローを点検しないかまたはレイヤ7 がまた情報 TCP オプションを変えないどのデバイスでも、その結果 MPTCP に対して透過的であり。 これらのデバイスには次のようなものがあります:
- Cisco 5000 シリーズ ASR(Starent)
- Wide Area Application Services(WAAS)
- キャリアグレードの NAT(CGN)(Carrier Routing System(CRS)のキャリアグレードのサービス エンジン(CGSE)ブレード)
- すべてのイーサネット スイッチ製品
- すべてのルータ製品(ファイアウォールまたは NAT 機能がイネーブルになっていない場合。 資料の MPTCP セクションによって詳細については先に影響を与えられるシスコ製品を参照して下さい)