SCTP與TCP的功能對比及應(yīng)用分析

葉凌偉 陳 雁

(重慶移動通信有限責(zé)任公司 重慶 400041)

  摘 要 本文討論了IP網(wǎng)中新一代傳輸協(xié)議——流控制傳輸協(xié)議(SCTP)的特性及應(yīng)用,并對SCTP和TCP的功能和應(yīng)用進行分析比較,可以給協(xié)議的使用者在選擇使用何種協(xié)議時提供參考意見。

  關(guān)鍵詞 流控制傳輸協(xié)議 關(guān)聯(lián) 多宿主機 協(xié)議安全

1 流控制傳輸協(xié)議(SCTP)發(fā)展簡介

  隨著IP網(wǎng)向多業(yè)務(wù)網(wǎng)發(fā)展,尤其是目前IP電話、IP視頻會議等業(yè)務(wù)的發(fā)展,在IP網(wǎng)中傳送信令信息成為必然。目前IP網(wǎng)中信令消息的交換通常是使用TCP或UDP完成,但是這兩個協(xié)議都不能滿足電信運營網(wǎng)中信令承載的要求。

  為適應(yīng)IP網(wǎng)成為電信運營核心網(wǎng)的發(fā)展趨勢,IETF 的信令傳輸工作組(SIGTRAN)一直在研究和制定IP網(wǎng)新一代的傳輸協(xié)議,并在IETF RFC 2960中定義了流控制傳輸協(xié)議(SCTP,Stream Control Transmission Protocol)。SCTP是面向連接的可靠傳送協(xié)議,它向上層應(yīng)用提供了下列服務(wù):

  · 應(yīng)用數(shù)據(jù)的無錯誤無重復(fù)的可靠傳輸;

  · 根據(jù)檢測到的MTU長度進行數(shù)據(jù)包分段處理,避免IP層的分段;

  · 在多個流間的用戶消息有序遞交,及單用戶消息按到達順序遞交的選項;

  · 通過支持關(guān)聯(lián)的多宿主機特性,實現(xiàn)網(wǎng)絡(luò)級容錯。

  SCTP是為傳輸信令業(yè)務(wù)流而制定的,它本身所具有的、優(yōu)于TCP的一些先進協(xié)議機制,如選擇性重傳、無序遞交和支持多種網(wǎng)絡(luò)特性等,使得SCTP能夠在一定程度上滿足高性能傳輸?shù)男枨。而且,SCTP采用了類同TCP的流量控制機制,不存在類似基于UDP的實時媒體流對TCP性能造成的劣化干擾問題和公平性問題。因此,SCTP將有可能取代TCP,成為下一代IP網(wǎng)上面向連接的可靠傳送層協(xié)議。

2 TCP的不足

  TCP是目前Internet上應(yīng)用最廣泛的面向連接的傳送層協(xié)議,它為通信的兩端提供了可靠的數(shù)據(jù)傳輸,而且提供了流量控制和擁塞控制功能。由于原來IP網(wǎng)提供的是“盡力而為(best-effort)”的服務(wù),因此TCP存在許多不足之處:

  · TCP是面向字節(jié)流的。這意味著消息的描述必須由應(yīng)用來完成,而且要在消息結(jié)束時顯示通知TCP以迫使其立即發(fā)送相應(yīng)的數(shù)據(jù)。

  · 許多應(yīng)用只需要信令信息的部分有序,例如屬于同一呼叫或同一會話的消息就是這樣。而TCP只提供嚴格的數(shù)據(jù)按序傳輸,這會導(dǎo)致不必要的隊頭擁塞并使消息的傳輸時延增大。

  · TCP連接直接由一對傳送層地址(IP地址和端口號)識別,無法提供對多宿主機的透明支持。

  · 典型的TCP實現(xiàn)不允許高層應(yīng)用設(shè)定協(xié)議控制參數(shù)。但是一些應(yīng)用可能會需要調(diào)節(jié)傳送層協(xié)議的屬性以滿足其要求,例如某些應(yīng)用有較高的時延要求,而另一些則只要求較高的可靠性。

3 連接與關(guān)聯(lián)

  TCP中的連接是指兩個TCP端點通過“三次握手”過程建立的由一對傳送層地址(IP地址和端口號)識別的傳送通道。

  在SCTP中, TCP中的連接被引申為關(guān)聯(lián)(associ-

ation)。一個關(guān)聯(lián)的兩個SCTP端點都向?qū)Ψ教峁┮粋SCTP端口號和一個IP地址列表,這樣每個關(guān)聯(lián)都由兩個SCTP端口號和兩個IP地址列表來識別。在一個關(guān)聯(lián)內(nèi)的擁塞控制機制與TCP連接的擁塞控制機制類似。

  一個關(guān)聯(lián)是由多個單向的流組成的。各個流之間相對獨立,可以單獨發(fā)送數(shù)據(jù)而不受其他流的影響,也可以共同實現(xiàn)用戶數(shù)據(jù)的有序遞交。流的建立和拆除過程相對獨立、簡單。而關(guān)聯(lián)的建立過程相對而言就比較復(fù)雜,是個“四次握手”過程,而且其中要用到“cookie”的概念。所謂“cookie”實際就是一個含有端點初始信息和加密信息的數(shù)據(jù)塊,它在關(guān)聯(lián)建立時被通信的兩端處理并交換。

4 SCTP的多宿主機特性及應(yīng)用

  SCTP支持傳送層的多宿主機服務(wù)。當網(wǎng)絡(luò)發(fā)生故障時,多宿主機服務(wù)可以增強網(wǎng)絡(luò)的健壯性(robustness)。在某些應(yīng)用場合,這個特性非常重要。SCTP對多宿主機服務(wù)的支持要求關(guān)聯(lián)的一端或兩端在不同的網(wǎng)絡(luò)接口上分配有多個IP地址。

  一般來說,要在通信的兩端實現(xiàn)真正的故障彈性恢復(fù),每個端點都需要有一個以上的IP網(wǎng)絡(luò)接口,以支持多宿主機服務(wù)。在這種情況下,路徑使用的數(shù)量就是所有端點的網(wǎng)絡(luò)接口的最小數(shù),此時端點要正確選擇自己的源地址才能獲得最佳路徑。但是,如果端點總是使用同一個源地址,那么端點就同樣會出現(xiàn)單點故障。因為當端點選擇一個源地址時,它總是選擇數(shù)據(jù)包的源地址來對應(yīng)網(wǎng)絡(luò)接口的IP地址,而在網(wǎng)絡(luò)接口上數(shù)據(jù)包將受到綁定地址的限制。換句話說,由于綁定地址的限制,端點永遠都不能選擇不屬于該SCTP關(guān)聯(lián)的源地址,同時對端端點也必須認可該SCTP關(guān)聯(lián)使用的任何一個源地址。

  當端點在一個多宿主機上時,如果關(guān)聯(lián)的兩端綁定有多個地址,SCTP關(guān)聯(lián)的可用性將大大增強。利用多宿主機這個特性可以在兩個SCTP端點間建立冗余的路徑,這對那些一直尋求在網(wǎng)絡(luò)的傳送層次就能提供容錯機制的應(yīng)用特別有用。要在SCTP的兩個端點間建立冗余路徑,要求兩個端點的設(shè)備都必須有多個接口,并分配多個地址,而且必須配置好路由。

  因此,通過“多宿主機”特性,SCTP提供了較TCP強大得多的路徑狀態(tài)監(jiān)控功能。SCTP可以監(jiān)測遠端地址的可達性,當遠端地址不可達時,它能通過使用備用地址替換主用地址實現(xiàn)故障的自動恢復(fù),而且這一過程不需要上層協(xié)議的干預(yù)。也就是說,“多宿主機”特性可以使一個關(guān)聯(lián)可以在多個傳輸路徑間選擇和切換,從而提高了網(wǎng)絡(luò)級容錯的能力。

5 TCP與SCTP的安全比較

  1. TCP的安全問題

  一些TCP應(yīng)用被公認會受到DoS攻擊。例如,攻擊者可以通過發(fā)送大量的連接建立請求(TCP-SYN數(shù)據(jù)包)來攻擊目的地,有可能來自偽裝的IP地址。被攻擊主機將不停地發(fā)送SYN-ACK數(shù)據(jù)包來回復(fù),并進入SYN-received狀態(tài),甚至SYN隊列將被擠滿(例如,等待建立的連接數(shù)會達到一個極限),而且它將拒絕新的連接建立請求。

  另外,偽裝連接是對TCP的另一個潛在威脅。通過猜測有效的序列號,攻擊者將可能偽裝成一個合法連接。但是,通過使用一個安全的Hashsum算法,對目前SYN-cookie進行偽裝的攻擊的可能性只有1/224。例如當使用SYS-cookie時,要成功作為一個偽裝的連接時,攻擊者將不得不發(fā)送224個數(shù)據(jù)包。

  2. SCTP的安全機制

  SCTP在設(shè)計時就充分考慮了TCP的不足。為防止攻擊者發(fā)送偽裝的SCTP數(shù)據(jù)包到現(xiàn)有的連接中,SCTP的兩端都使用一個稱為“認證標記”的32bit數(shù)據(jù)來確保數(shù)據(jù)包真正屬于現(xiàn)有的連接。因此,除了合并屬于一個連接的源端口和目的端口的地址外,一個有效的SCTP數(shù)據(jù)包還必須有一個正確的標記。

  跟TCP不同的是,SCTP要求在連接建立時必須使用“cookie”。對服務(wù)器來說,必須交換3個信息包(INIT、INIT-ACK、COOKIE-ECHO),才能建立一個完整的新連接!癱ookie”是個長度可變的,包含所有和在服務(wù)器端初始化TCB的相關(guān)數(shù)據(jù),加上使用HMAC來確保它的安全。HMAC是在cookie中用來計算的,是一個保密、服務(wù)器所擁有的key。引入這種機制的目的在于增強協(xié)議的安全性,防止DoS攻擊和偽裝等潛在的攻擊。

  同使用SYN-cookie的TCP相比較,SCTP被攻擊者偽裝的可能性大大降低。因為,攻擊者不得不去猜測包含在cookie中的HMAC值。可能性小于2128。

  值得注意的是,SCTP僅僅試圖來增強網(wǎng)絡(luò)的可用性,它沒有包含任何直接和用戶信息認證、完整性和保密功能的協(xié)議機制,因為這些特性主要取決于IPSec協(xié)議和應(yīng)用層協(xié)議的安全特性。

6 SCTP與TCP的功能及應(yīng)用比較

  由于SCTP也是一個面向連接的協(xié)議,可提供所有TCP能夠提供的傳送層服務(wù)。因此,現(xiàn)有的許多Internet應(yīng)用將面臨選擇使用TCP或SCTP,來滿足他們對傳送層服務(wù)的需求。需要注意的是,對處理成本比較敏感的應(yīng)用,在使用SCTP或TCP得到的服務(wù)是不一樣的,SCTP可以為應(yīng)用提供一個單獨定制的流傳輸,而TCP為應(yīng)用提供的是一對地址。

  當然,SCTP還具有一些TCP所不具備的功能,這樣,在某些應(yīng)用場合,選擇SCTP實現(xiàn)傳送層服務(wù)將是更好的選擇。SCTP在一個連接中可以支持多個獨立用戶信息流的發(fā)送。正確使用該功能,可以有效減少所謂的“head-of-line-blocking”問題帶來的影響,在TCP中出現(xiàn)該問題,主要是因為數(shù)據(jù)包的發(fā)送有嚴格的順序控制。因此,對那些需要在一個連接中同時支持多個邏輯上獨立的信息流傳送的應(yīng)用,SCTP就特別有用。

  SCTP保留有應(yīng)用信息的邊界。當應(yīng)用數(shù)據(jù)不是連續(xù)的字節(jié)流,而是要接收端單獨處理大塊的數(shù)據(jù)包時,該功能就非常有用。相反,TCP在提供可靠數(shù)據(jù)流傳送的同時,并不能指出應(yīng)用中包含的大塊數(shù)據(jù)包。

  SCTP支持沒有指明應(yīng)用類別的用戶信息的傳送,而且能夠保證數(shù)據(jù)的可靠傳送。對那些需要發(fā)送沒有順序的可靠信息流的應(yīng)用,或者喜歡使用自身的信息排序機制的應(yīng)用,SCTP的這個功能就特別有用。

自《中國數(shù)據(jù)通信》


微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料

本周熱點本月熱點

 

  最熱通信招聘

  最新招聘信息