葉凌偉 陳 雁
(重慶移動(dòng)通信有限責(zé)任公司 重慶 400041)
摘 要 本文討論了IP網(wǎng)中新一代傳輸協(xié)議——流控制傳輸協(xié)議(SCTP)的特性及應(yīng)用,并對SCTP和TCP的功能和應(yīng)用進(jìn)行分析比較,可以給協(xié)議的使用者在選擇使用何種協(xié)議時(shí)提供參考意見。
關(guān)鍵詞 流控制傳輸協(xié)議 關(guān)聯(lián) 多宿主機(jī) 協(xié)議安全
1 流控制傳輸協(xié)議(SCTP)發(fā)展簡介
隨著IP網(wǎng)向多業(yè)務(wù)網(wǎng)發(fā)展,尤其是目前IP電話、IP視頻會(huì)議等業(yè)務(wù)的發(fā)展,在IP網(wǎng)中傳送信令信息成為必然。目前IP網(wǎng)中信令消息的交換通常是使用TCP或UDP完成,但是這兩個(gè)協(xié)議都不能滿足電信運(yùn)營網(wǎng)中信令承載的要求。
為適應(yīng)IP網(wǎng)成為電信運(yùn)營核心網(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ù)的無錯(cuò)誤無重復(fù)的可靠傳輸;
· 根據(jù)檢測到的MTU長度進(jìn)行數(shù)據(jù)包分段處理,避免IP層的分段;
· 在多個(gè)流間的用戶消息有序遞交,及單用戶消息按到達(dá)順序遞交的選項(xiàng);
· 通過支持關(guān)聯(lián)的多宿主機(jī)特性,實(shí)現(xiàn)網(wǎng)絡(luò)級容錯(cuò)。
SCTP是為傳輸信令業(yè)務(wù)流而制定的,它本身所具有的、優(yōu)于TCP的一些先進(jìn)協(xié)議機(jī)制,如選擇性重傳、無序遞交和支持多種網(wǎng)絡(luò)特性等,使得SCTP能夠在一定程度上滿足高性能傳輸?shù)男枨。而且,SCTP采用了類同TCP的流量控制機(jī)制,不存在類似基于UDP的實(shí)時(shí)媒體流對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é)束時(shí)顯示通知TCP以迫使其立即發(fā)送相應(yīng)的數(shù)據(jù)。
· 許多應(yīng)用只需要信令信息的部分有序,例如屬于同一呼叫或同一會(huì)話的消息就是這樣。而TCP只提供嚴(yán)格的數(shù)據(jù)按序傳輸,這會(huì)導(dǎo)致不必要的隊(duì)頭擁塞并使消息的傳輸時(shí)延增大。
· TCP連接直接由一對傳送層地址(IP地址和端口號)識別,無法提供對多宿主機(jī)的透明支持。
· 典型的TCP實(shí)現(xiàn)不允許高層應(yīng)用設(shè)定協(xié)議控制參數(shù)。但是一些應(yīng)用可能會(huì)需要調(diào)節(jié)傳送層協(xié)議的屬性以滿足其要求,例如某些應(yīng)用有較高的時(shí)延要求,而另一些則只要求較高的可靠性。
3 連接與關(guān)聯(lián)
TCP中的連接是指兩個(gè)TCP端點(diǎn)通過“三次握手”過程建立的由一對傳送層地址(IP地址和端口號)識別的傳送通道。
在SCTP中, TCP中的連接被引申為關(guān)聯(lián)(associ-
ation)。一個(gè)關(guān)聯(lián)的兩個(gè)SCTP端點(diǎn)都向?qū)Ψ教峁┮粋(gè)SCTP端口號和一個(gè)IP地址列表,這樣每個(gè)關(guān)聯(lián)都由兩個(gè)SCTP端口號和兩個(gè)IP地址列表來識別。在一個(gè)關(guān)聯(lián)內(nèi)的擁塞控制機(jī)制與TCP連接的擁塞控制機(jī)制類似。
一個(gè)關(guān)聯(lián)是由多個(gè)單向的流組成的。各個(gè)流之間相對獨(dú)立,可以單獨(dú)發(fā)送數(shù)據(jù)而不受其他流的影響,也可以共同實(shí)現(xiàn)用戶數(shù)據(jù)的有序遞交。流的建立和拆除過程相對獨(dú)立、簡單。而關(guān)聯(lián)的建立過程相對而言就比較復(fù)雜,是個(gè)“四次握手”過程,而且其中要用到“cookie”的概念。所謂“cookie”實(shí)際就是一個(gè)含有端點(diǎn)初始信息和加密信息的數(shù)據(jù)塊,它在關(guān)聯(lián)建立時(shí)被通信的兩端處理并交換。
4 SCTP的多宿主機(jī)特性及應(yīng)用
SCTP支持傳送層的多宿主機(jī)服務(wù)。當(dāng)網(wǎng)絡(luò)發(fā)生故障時(shí),多宿主機(jī)服務(wù)可以增強(qiáng)網(wǎng)絡(luò)的健壯性(robustness)。在某些應(yīng)用場合,這個(gè)特性非常重要。SCTP對多宿主機(jī)服務(wù)的支持要求關(guān)聯(lián)的一端或兩端在不同的網(wǎng)絡(luò)接口上分配有多個(gè)IP地址。
一般來說,要在通信的兩端實(shí)現(xiàn)真正的故障彈性恢復(fù),每個(gè)端點(diǎn)都需要有一個(gè)以上的IP網(wǎng)絡(luò)接口,以支持多宿主機(jī)服務(wù)。在這種情況下,路徑使用的數(shù)量就是所有端點(diǎn)的網(wǎng)絡(luò)接口的最小數(shù),此時(shí)端點(diǎn)要正確選擇自己的源地址才能獲得最佳路徑。但是,如果端點(diǎn)總是使用同一個(gè)源地址,那么端點(diǎn)就同樣會(huì)出現(xiàn)單點(diǎn)故障。因?yàn)楫?dāng)端點(diǎn)選擇一個(gè)源地址時(shí),它總是選擇數(shù)據(jù)包的源地址來對應(yīng)網(wǎng)絡(luò)接口的IP地址,而在網(wǎng)絡(luò)接口上數(shù)據(jù)包將受到綁定地址的限制。換句話說,由于綁定地址的限制,端點(diǎn)永遠(yuǎn)都不能選擇不屬于該SCTP關(guān)聯(lián)的源地址,同時(shí)對端端點(diǎn)也必須認(rèn)可該SCTP關(guān)聯(lián)使用的任何一個(gè)源地址。
當(dāng)端點(diǎn)在一個(gè)多宿主機(jī)上時(shí),如果關(guān)聯(lián)的兩端綁定有多個(gè)地址,SCTP關(guān)聯(lián)的可用性將大大增強(qiáng)。利用多宿主機(jī)這個(gè)特性可以在兩個(gè)SCTP端點(diǎn)間建立冗余的路徑,這對那些一直尋求在網(wǎng)絡(luò)的傳送層次就能提供容錯(cuò)機(jī)制的應(yīng)用特別有用。要在SCTP的兩個(gè)端點(diǎn)間建立冗余路徑,要求兩個(gè)端點(diǎn)的設(shè)備都必須有多個(gè)接口,并分配多個(gè)地址,而且必須配置好路由。
因此,通過“多宿主機(jī)”特性,SCTP提供了較TCP強(qiáng)大得多的路徑狀態(tài)監(jiān)控功能。SCTP可以監(jiān)測遠(yuǎn)端地址的可達(dá)性,當(dāng)遠(yuǎn)端地址不可達(dá)時(shí),它能通過使用備用地址替換主用地址實(shí)現(xiàn)故障的自動(dòng)恢復(fù),而且這一過程不需要上層協(xié)議的干預(yù)。也就是說,“多宿主機(jī)”特性可以使一個(gè)關(guān)聯(lián)可以在多個(gè)傳輸路徑間選擇和切換,從而提高了網(wǎng)絡(luò)級容錯(cuò)的能力。
5 TCP與SCTP的安全比較
1. TCP的安全問題
一些TCP應(yīng)用被公認(rèn)會(huì)受到DoS攻擊。例如,攻擊者可以通過發(fā)送大量的連接建立請求(TCP-SYN數(shù)據(jù)包)來攻擊目的地,有可能來自偽裝的IP地址。被攻擊主機(jī)將不停地發(fā)送SYN-ACK數(shù)據(jù)包來回復(fù),并進(jìn)入SYN-received狀態(tài),甚至SYN隊(duì)列將被擠滿(例如,等待建立的連接數(shù)會(huì)達(dá)到一個(gè)極限),而且它將拒絕新的連接建立請求。
另外,偽裝連接是對TCP的另一個(gè)潛在威脅。通過猜測有效的序列號,攻擊者將可能偽裝成一個(gè)合法連接。但是,通過使用一個(gè)安全的Hashsum算法,對目前SYN-cookie進(jìn)行偽裝的攻擊的可能性只有1/224。例如當(dāng)使用SYS-cookie時(shí),要成功作為一個(gè)偽裝的連接時(shí),攻擊者將不得不發(fā)送224個(gè)數(shù)據(jù)包。
2. SCTP的安全機(jī)制
SCTP在設(shè)計(jì)時(shí)就充分考慮了TCP的不足。為防止攻擊者發(fā)送偽裝的SCTP數(shù)據(jù)包到現(xiàn)有的連接中,SCTP的兩端都使用一個(gè)稱為“認(rèn)證標(biāo)記”的32bit數(shù)據(jù)來確保數(shù)據(jù)包真正屬于現(xiàn)有的連接。因此,除了合并屬于一個(gè)連接的源端口和目的端口的地址外,一個(gè)有效的SCTP數(shù)據(jù)包還必須有一個(gè)正確的標(biāo)記。
跟TCP不同的是,SCTP要求在連接建立時(shí)必須使用“cookie”。對服務(wù)器來說,必須交換3個(gè)信息包(INIT、INIT-ACK、COOKIE-ECHO),才能建立一個(gè)完整的新連接!癱ookie”是個(gè)長度可變的,包含所有和在服務(wù)器端初始化TCB的相關(guān)數(shù)據(jù),加上使用HMAC來確保它的安全。HMAC是在cookie中用來計(jì)算的,是一個(gè)保密、服務(wù)器所擁有的key。引入這種機(jī)制的目的在于增強(qiáng)協(xié)議的安全性,防止DoS攻擊和偽裝等潛在的攻擊。
同使用SYN-cookie的TCP相比較,SCTP被攻擊者偽裝的可能性大大降低。因?yàn),攻擊者不得不去猜測包含在cookie中的HMAC值?赡苄孕∮2128。
值得注意的是,SCTP僅僅試圖來增強(qiáng)網(wǎng)絡(luò)的可用性,它沒有包含任何直接和用戶信息認(rèn)證、完整性和保密功能的協(xié)議機(jī)制,因?yàn)檫@些特性主要取決于IPSec協(xié)議和應(yīng)用層協(xié)議的安全特性。
6 SCTP與TCP的功能及應(yīng)用比較
由于SCTP也是一個(gè)面向連接的協(xié)議,可提供所有TCP能夠提供的傳送層服務(wù)。因此,現(xiàn)有的許多Internet應(yīng)用將面臨選擇使用TCP或SCTP,來滿足他們對傳送層服務(wù)的需求。需要注意的是,對處理成本比較敏感的應(yīng)用,在使用SCTP或TCP得到的服務(wù)是不一樣的,SCTP可以為應(yīng)用提供一個(gè)單獨(dú)定制的流傳輸,而TCP為應(yīng)用提供的是一對地址。
當(dāng)然,SCTP還具有一些TCP所不具備的功能,這樣,在某些應(yīng)用場合,選擇SCTP實(shí)現(xiàn)傳送層服務(wù)將是更好的選擇。SCTP在一個(gè)連接中可以支持多個(gè)獨(dú)立用戶信息流的發(fā)送。正確使用該功能,可以有效減少所謂的“head-of-line-blocking”問題帶來的影響,在TCP中出現(xiàn)該問題,主要是因?yàn)閿?shù)據(jù)包的發(fā)送有嚴(yán)格的順序控制。因此,對那些需要在一個(gè)連接中同時(shí)支持多個(gè)邏輯上獨(dú)立的信息流傳送的應(yīng)用,SCTP就特別有用。
SCTP保留有應(yīng)用信息的邊界。當(dāng)應(yīng)用數(shù)據(jù)不是連續(xù)的字節(jié)流,而是要接收端單獨(dú)處理大塊的數(shù)據(jù)包時(shí),該功能就非常有用。相反,TCP在提供可靠數(shù)據(jù)流傳送的同時(shí),并不能指出應(yīng)用中包含的大塊數(shù)據(jù)包。
SCTP支持沒有指明應(yīng)用類別的用戶信息的傳送,而且能夠保證數(shù)據(jù)的可靠傳送。對那些需要發(fā)送沒有順序的可靠信息流的應(yīng)用,或者喜歡使用自身的信息排序機(jī)制的應(yīng)用,SCTP的這個(gè)功能就特別有用。
自《中國數(shù)據(jù)通信》