摘 要: 通過SCTP與TCP協(xié)議的比較,分析了SCTP的優(yōu)缺點(diǎn),,并且給出了仿真結(jié)果,。
關(guān)鍵詞: 流控制傳輸協(xié)議(SCTP) 會(huì)話初始協(xié)議(SIP) 隊(duì)頭阻塞
隨著網(wǎng)絡(luò)多媒體業(yè)務(wù)的增多,傳輸控制協(xié)議(Transmission Control Protocol,,TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,,UDP)的局限性日益明顯,為此互聯(lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force,,IEFT)的信令傳輸工作組(SIGTRAN)提出了一種新的面向多媒體通信的流控制傳輸協(xié)議(Stream Control Transmission Protocol,,SCTP)[1],用于在IP網(wǎng)絡(luò)上傳輸公共交換電話網(wǎng)(Public Switched Telephone Network,,PSTN)信令消息[2],。
本文通過仿真比較了SCTP和TCP的性能。尤其對(duì)隊(duì)頭阻塞現(xiàn)象(Head of Line Blocking)進(jìn)行了研究,。為了能夠進(jìn)行公平比較,,需要一個(gè)能夠運(yùn)行在TCP和SCTP上的應(yīng)用層協(xié)議,這里選擇了會(huì)話初始協(xié)議(Session Initiation Protocol,,SIP),。
1 流控制傳輸協(xié)議的基本特性
1.1 TCP與SCTP的安全性比較
TCP中的連接是指2個(gè)TCP端點(diǎn)通過3次握手過程建立的由一對(duì)傳輸層地址識(shí)別的傳輸通道。在SCTP中TCP的連接被引申為由4路握手建立的關(guān)聯(lián)(association),,SCTP 4路握手過程如圖1所示,。4路握手有效地保護(hù)了服務(wù)器不受拒絕服務(wù)攻擊(Denial of Service,DoS),。
TCP 3次握手是SYN Flooding存在的基礎(chǔ),。攻擊者向服務(wù)器發(fā)送大量的SYN報(bào)文,服務(wù)器在發(fā)出SYN-ACK應(yīng)答報(bào)文后若無法收到客戶端的ACK報(bào)文(第3次握手無法完成),,服務(wù)器端將維護(hù)一個(gè)非常大的半連接列表,,且要不斷地對(duì)該列表中的IP進(jìn)行SYN+ACK的重試,會(huì)消耗非常多的CPU時(shí)間和內(nèi)存資源,。服務(wù)器端將因?yàn)槊τ谔幚砉粽邆卧斓腡CP連接請(qǐng)求而無暇理睬客戶的正常請(qǐng)求,,此時(shí)從客戶角度來看,服務(wù)器失去了響應(yīng),。
而在一次SCTP 4路握手中,,INIT消息的接收端不必保存任何狀態(tài)信息或者分配任何資源,這樣就可防范SYN Flooding等拒絕服務(wù)攻擊,。它在發(fā)送INIT-ACK消息時(shí),,采用了狀態(tài)Cookie機(jī)制。該Cookie具有發(fā)送端建立自己狀態(tài)所需的全部信息,。INIT和INIT-ACK都必須包含建立初始狀態(tài)所需的一組參數(shù),。交換完規(guī)定的這些消息之后,INIT的發(fā)送端以COOKIE-ECHO消息的方式發(fā)送回狀態(tài)Cookie。接收端則根據(jù)所接收到的COOKIE-ECHO中的狀態(tài)Cookie,,完整地重建自己的狀態(tài),,并回送COOKIE-ACK來確認(rèn)關(guān)聯(lián)已建立。COOKIE-ECHO和COOKIE-ACK都可將用戶數(shù)據(jù)消息綁定到各自的包中,。采用以上這種方式,, 即使接收再多的INIT消息, 接收端也沒有任何資源的消耗,。
1.2 SCTP的多流特性
SCTP的包格式如圖2所示,。每個(gè)連接可以包含多個(gè)流,每個(gè)流都通過它的流ID來確定,。而流的個(gè)數(shù)在前面敘述的4路握手中定義,。每個(gè)數(shù)據(jù)塊都屬于一個(gè)流;每個(gè)流都獨(dú)立地遞交給應(yīng)用層,。流的獨(dú)立遞交解決了TCP中存在的隊(duì)頭阻塞問題,。當(dāng)多個(gè)邏輯會(huì)話通過一個(gè)TCP連接傳輸時(shí)會(huì)發(fā)生如下現(xiàn)象:當(dāng)網(wǎng)頁中包含有圖像時(shí),圖像和文本通過一個(gè)TCP連接傳輸,。如果圖像數(shù)據(jù)丟失,,文本數(shù)據(jù)的傳輸就必須等待圖像數(shù)據(jù)重傳。這樣,,一個(gè)邏輯會(huì)話就會(huì)因?yàn)榱硪粋€(gè)邏輯會(huì)話的丟失而阻塞,。該現(xiàn)象在http/1.1中常發(fā)生。當(dāng)使用SCTP作為傳輸協(xié)議時(shí),,每個(gè)應(yīng)用層級(jí)的會(huì)話都會(huì)被分配到各自的流中,,這樣,一個(gè)流中數(shù)據(jù)的丟失不會(huì)影響其他流的傳輸,。
1.3 多宿主特性
為了增強(qiáng)魯棒性,,服務(wù)器通常都裝備多個(gè)網(wǎng)絡(luò)接口。這樣的服務(wù)器被稱為多宿主服務(wù)器,。在連接建立階段,,一個(gè)SCTP端能提供一個(gè)IP地址列表,其中一個(gè)地址作為主地址,,正常情況下使用該地址作為傳輸數(shù)據(jù)的目的地址,。一旦當(dāng)前的主目的地址變?yōu)椴豢捎茫瑒t終端將啟用列表中的其他地址,。
2 仿真實(shí)驗(yàn)
采用Network Simulator(ns-2)作為仿真平臺(tái),。試驗(yàn)使用的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖3所示,節(jié)點(diǎn)1和節(jié)點(diǎn)6之間是TCP連接,,除了節(jié)點(diǎn)4和5之間帶寬為1.7Mbps外,,其余有直接相連的2個(gè)節(jié)點(diǎn)之間帶寬均為10Mbps,這樣路由4、5之間成為整個(gè)網(wǎng)絡(luò)的瓶頸,。若所有直接相連的節(jié)點(diǎn)間延遲均設(shè)定為15ms,,使得2個(gè)SIP端點(diǎn)間的總傳輸延遲為45ms,相當(dāng)于北京到紐約的2個(gè)SIP端點(diǎn)的傳輸延遲,。設(shè)T1表示發(fā)送方SIP數(shù)據(jù)包交給傳輸層的時(shí)間,,T2表示到達(dá)接收方應(yīng)用層的時(shí)間,則Td=T2-T1為所要測(cè)定的延遲時(shí)間,。
進(jìn)行如下3種情況的實(shí)驗(yàn),。
(1)在無競(jìng)爭(zhēng)環(huán)境下,,分別采用TCP和SCTP作為傳輸層協(xié)議在節(jié)點(diǎn)2和7之間傳輸SIP消息,。在該情況下,不存在競(jìng)爭(zhēng),,丟包是因?yàn)榘l(fā)送端發(fā)送速度過快而路由緩沖區(qū)有限引起,。設(shè)定傳輸速度為1.7Mbps×78%=1.326Mbps,這是因?yàn)樵趥鬏斔俣葹槠款i速度的78%時(shí),,隊(duì)頭阻塞產(chǎn)生的效果最為明顯,。當(dāng)設(shè)定的傳輸速度超過1.4Mbps時(shí),可以發(fā)現(xiàn)系統(tǒng)變得不穩(wěn)定,,平均延遲急劇增大,。而當(dāng)設(shè)定的傳輸速度低于0.85Mbps時(shí),基本上沒有丟包現(xiàn)象產(chǎn)生,,也就觀察不到隊(duì)頭阻塞現(xiàn)象,。統(tǒng)計(jì)結(jié)果如表1所示。(2)在無競(jìng)爭(zhēng)環(huán)境下,,當(dāng)把傳輸速度逐漸減小至1.7Mbps×50%=0.85Mbps時(shí),,該情況下沒有丟包現(xiàn)象,人為設(shè)定路由器的隨機(jī)丟包概率,。通過路由4的丟包率改變(分別為0.2%和0.3%)來獲得2組數(shù)據(jù),,數(shù)據(jù)統(tǒng)計(jì)信息如表2所示。(3)在存在TCP競(jìng)爭(zhēng)的環(huán)境下,,分2次進(jìn)行:①只有一個(gè)TCP連接參與競(jìng)爭(zhēng),,節(jié)點(diǎn)1、6之間使用TCP傳輸一個(gè)巨大的文件來和節(jié)點(diǎn)2,、7之間的SIP傳輸競(jìng)爭(zhēng),,SIP傳輸速度為1.7Mbps×40%=0.68Mbps。②參與競(jìng)爭(zhēng)的TCP連接為2個(gè),,節(jié)點(diǎn)1,、6和節(jié)點(diǎn)3、8之間使用TCP傳輸一個(gè)巨大的文件來和節(jié)點(diǎn)2、7之間的SIP傳輸競(jìng)爭(zhēng),,SIP傳輸速度為1.7Mbps×30%=0.51Mbps,,數(shù)據(jù)的統(tǒng)計(jì)信息如表3所示。
3 試驗(yàn)數(shù)據(jù)分析
表1,、2,、3是仿真試驗(yàn)的結(jié)果。在每個(gè)仿真中,,為避免慢啟動(dòng)影響試驗(yàn)結(jié)果,,在計(jì)算平均延遲時(shí)忽略前1 000個(gè)數(shù)據(jù)包。另外需要說明的是,,3個(gè)表中的置信區(qū)間均指SCTP和TCP的延遲差置信水平為95%的置信區(qū)間,。
如表1所示,SCTP和TCP的延遲差置信水平為95%的置信區(qū)間為(-7.01,,0.16),,該區(qū)間包括0。這表明該情況下隊(duì)頭阻塞不是引起延遲的重要因素,。因?yàn)镾CTP具備隊(duì)頭阻塞避免的能力,,但是二者的延遲相差不大。
分析在隨機(jī)丟包情況下的隊(duì)頭阻塞行為,。如表2所示,,路由2丟包率為0.2%時(shí),SCTP和TCP的延遲差置信水平為95%的置信區(qū)間為(-10.37,,5.01),;路由2丟包率為0.3%時(shí),置信區(qū)間為(-14.22,,7.92),,2個(gè)區(qū)間都包括0。這表明,,從統(tǒng)計(jì)意義上來說,,在這2種情況下隊(duì)頭阻塞依然不是引起延遲的重要因素。雖然SCTP具備隊(duì)頭阻塞避免能力,,但是SCTP的平均延遲與TCP的平均延遲相比,,并沒有較大改善。
從表3可以看出,,當(dāng)TCP和SCTP共存時(shí),,SCTP和TCP的延遲差置信水平為95%的置信區(qū)間不包括0。這說明該情況下,,SCTP因?yàn)楸苊饬岁?duì)頭阻塞,,而比TCP有更低的延遲,。毫無疑問,隊(duì)頭阻塞所導(dǎo)致的傳輸性能下降與丟包率成正比,,因而只有在負(fù)荷較大,,擁塞發(fā)生較多導(dǎo)致網(wǎng)絡(luò)丟包率較高的情況下(在表3的試驗(yàn)中,最大延遲甚至達(dá)到1 863ms),,隊(duì)頭阻塞才會(huì)成為影響傳輸性能的重要因素,。然而,在這種情況下,,即使是擁有避免隊(duì)頭阻塞功能的SCTP,,也無法提供令人滿意的傳輸延遲。
4 結(jié) 論
SCTP有很多優(yōu)于TCP的地方,。SCTP使服務(wù)器有效地避免了DoS攻擊,;SCTP的“多宿主機(jī)”特性提高了關(guān)聯(lián)的網(wǎng)絡(luò)級(jí)容錯(cuò)能力;SCTP面向消息,;SCTP既支持有序傳輸也支持無序傳輸,。然而,,仿真試驗(yàn)表明,,在一般的網(wǎng)絡(luò)環(huán)境下SCTP的隊(duì)頭阻塞避免機(jī)制并未給其性能帶來很大提升。在適合信令傳輸?shù)木W(wǎng)絡(luò)環(huán)境下,,SCTP和TCP的平均延遲從統(tǒng)計(jì)意義上說沒有太大區(qū)別,。而在網(wǎng)絡(luò)丟包率較高的(接上頁)
情況下, SCTP比TCP的性能只是稍有提高,。SCTP采用了和TCP一樣的基于窗口的擁塞控制機(jī)制,,理論上并不適合作為信令傳輸?shù)膿砣刂茩C(jī)制,因而將來還需要研究更適合于信令傳輸?shù)膿砣刂茩C(jī)制,??傮w而言,SCTP較TCP更能滿足高性能傳輸?shù)囊?,隨著IP網(wǎng)絡(luò)的迅猛發(fā)展,,SCTP一定會(huì)有更廣闊的應(yīng)用空間。
參考文獻(xiàn)
1 Stewart R.Stream Control Transmission Protocol.RFC 2960,,2000
2 Coene L,,Pastor J.Telephony Signaling Transport over SCTP Applicability Statement.IETF Internet Draft(Work in progress),2002
3 Rosenberg J.SIP:Session Initiation Protocol.RFC 3261,,2002
4 Rosenberg J,,Schulzrinne H,Camarillo G.The Stream Control Transmission Protocol as a Transport for the Session Initiation Protocol.IETF Internet Draft(Work in progress),,2002