簡介
本檔案將提供多路徑TCP(MPTCP)的概覽、其對流量檢查的影響以及受多路徑TCP影響和不受多路徑TCP影響的思科產品。
MPTCP概述
背景資訊
連線到Internet或資料中心環境內的主機通常通過多個路徑連線。但是,當使用TCP進行資料傳輸時,通訊將限於一條網路路徑。兩個主機之間的某些路徑可能會擁塞,但備用路徑未得到充分利用。如果同時使用這些多個路徑,則可能會更有效地使用網路資源。此外,多連線的使用增強了使用者體驗,因為它提供了更高的吞吐量並提高了對網路故障的可復原性。
MPTCP是對常規TCP進行的一組擴展,它允許單個資料流在多個連線上分離和傳輸。請參閱RFC6824:如需詳細資訊,請參閱使用多個位址的多路徑操作的TCP擴充模組。
如圖所示,MPTCP能夠在傳送方節點上將9mbps流分成三個不同的子流,然後將其聚合回接收節點上的原始資料流。
進入MPTCP連線的資料的作用與通過常規TCP連線時完全相同;所傳輸的資料保證按序傳送。由於MPTCP可調整網路堆疊並在傳輸層內運行,因此應用可透明使用該協定。
會話建立
MPTCP使用TCP選項來協商和協調多個子流上資料的分離和重組。TCP選項30由Internet編號指派機構(IANA)保留,供MPTCP獨佔使用。如需詳細資訊,請參閱傳輸控制通訊協定(TCP)引數。在建立常規TCP作業階段時,初始同步(SYN)封包中包含一個MP_CAPABLE選項。如果回應者支援並選擇交涉MPTCP,它也會使用SYN-acknowledge(ACK)封包中的MP_CAPABLE選項進行回應。在此握手過程中交換的金鑰將在未來使用,以驗證將其他TCP會話加入和刪除到此MPTCP流的過程。
加入其他子流
在必要時,主機A可能會啟動從不同介面或位址到主機B的額外子流量。與初始子流一樣,使用TCP選項來表示希望將該子流與其他子流合併。Host-B使用在初始子流建立中交換的金鑰(連同雜湊演算法),以確認連線請求確實由Host-A傳送。次要子流4元組(源IP、目標IP、源埠和目標埠)與主要子流的不同;此流量可能採用不同的網路路徑。
新增地址
主機A有多個介面,而主機B可能有多個網路連線。主機B從每個目的地為B1的地址Host-A來源子流隱式地獲知地址A1和A2。主機B可能將其附加地址(B2)通告給主機A,以便向B2生成其他子流。這通過TCP選項30完成。如下圖所示,Host-B將輔助地址(B2)通告給Host-A,並建立兩個附加子流。因為MPTCP在開放系統互聯(OSI)堆疊的網路層上運行,所以通告的IP地址可以是IPv4、IPv6或同時是IPv4、IPv6地址。某些子流可以通過IPv4同時傳輸,而其他子流可以通過IPv6傳輸。
分段、多路徑和重組
由應用程式提供給MPTCP的資料流必須由傳送方分段並在多個子流之間分佈。然後,必須將其重組為單個資料流,然後才能將其傳遞回應用程式。
MPTCP檢查每個子流的效能和延遲,並動態調整資料分佈以獲得最高聚合吞吐量。在資料傳輸過程中,TCP報頭選項包括有關MPTCP序列/確認號、當前子流序列/確認號以及校驗和的資訊。
對流量檢測的影響
許多安全裝置可能會將未知的TCP選項清零或替換為No Option(NOOP)值。如果網路裝置對初始子流上的TCP SYN資料包執行此操作,MP_CAPABLE通告將被刪除。因此,伺服器認為使用者端不支援MPTCP,它會回覆為正常的TCP作業。
如果保留了此選項,並且MPTCP能夠建立多個子流,則網路裝置進行的線上資料包分析可能無法可靠地運行。這是因為只有部分資料流被轉移到每個子流。協定檢查對MPTCP的影響可能各不相同,從無到完全中斷服務。效果因檢查的資料內容和數量而異。封包分析可能包括防火牆應用層閘道(ALG或fixup)、網路位址轉譯(NAT)ALG、應用可見性與控制(AVC)、網路型應用程式辨識(NBAR)或入侵偵測服務(IDS/IPS)。 如果您的環境中需要應用檢測,建議啟用清除TCP選項30。
如果由於加密而無法檢查流,或者協定未知,則內聯裝置應該對MPTCP流沒有影響。
受MPTCP影響的思科產品
以下產品受MPTCP影響:
- 調適型安全裝置(ASA)
- Cisco Firepower威脅防禦
- 入侵防禦系統(IPS)
- Cisco IOS-XE和IOS®
- 應用程式控制引擎(ACE)
本文檔後面的部分將詳細介紹每個產品。
ASA
TCP操作
預設情況下,Cisco ASA防火牆將不受支援的TCP選項(包括MPTCP選項30)替換為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威脅防禦
TCP操作
由於FTD對IPS/IDS服務執行深入封包檢查,因此建議不要修改tcp對應以允許TCP選項通過。
Cisco IOS 防火牆
內容型存取控制(CBAC)
CBAC不會從TCP資料流中刪除TCP選項。MPTCP通過防火牆建立連線。
區域型防火牆(ZBFW)
Cisco IOS和IOS-XE ZBFW不會從TCP資料流中刪除TCP選項。MPTCP通過防火牆建立連線。
ACE
預設情況下,ACE裝置會從TCP連線中刪除TCP選項。MPTCP連線回退到常規TCP操作。
可以通過tcp-options 命令將ACE裝置配置為允許TCP選項,如Cisco ACE應用控制引擎Security Guide vA5(1.0)的配置ACE處理TCP選項部分所述。但是,並非總是建議這樣做,因為輔助子流可能均衡到不同的實際伺服器,因此連線失敗。
不受MPTCP影響的思科產品
通常,不檢查TCP流或第7層資訊的任何裝置也不會改變TCP選項,因此對MPTCP應該是透明的。這些裝置可能包括:
- Cisco 5000系列ASR(Starent)
- 廣域應用程式服務(WAAS)
- 電信級服務網路(CGN)(電信級服務引擎(CGSE)刀鋒(在電信級路由系統(CRS)-1)
- 所有乙太網路交換器產品
- 所有路由器產品(除非啟用防火牆或NAT功能;如需詳細資訊,請參閱檔案前面的受MPTCP影響的思科產品一節)