摘?要:根據(jù)SCTP協(xié)議多宿的特性,提出一種基于可用帶寬的Primary destination address選擇策略方案,可以提高吞吐量并降低丟包率,在仿真平臺NS2上得到了改進算法的驗證。
關(guān)鍵詞:SCTP? 多宿? 可用帶寬?? 仿真
?
IP電話的發(fā)展使通過信令" title="信令">信令網(wǎng)關(guān)在IP網(wǎng)絡(luò)中組建IP信令網(wǎng)成為可能。通過已有的數(shù)據(jù)網(wǎng)絡(luò)處理語音、數(shù)據(jù)、信令,可以減少建立和維護多個網(wǎng)絡(luò)的費用。在PSTN中,NO.7信令仍有重要作用。IETF的信令傳輸工作組(SIGTRAN)為了在IP網(wǎng)絡(luò)上傳輸NO.7信令制定了新的流控制傳輸協(xié)議" title="傳輸協(xié)議">傳輸協(xié)議SCTP(Stream Control Transfer Protocol:RFC2960)[1][7],主要用于IP網(wǎng)絡(luò)中承載PSTN信令。由于SCTP具有適合Internet數(shù)據(jù)和多媒體傳輸 的特性,并可能成為下一代的傳輸層協(xié)議,因此SCTP成為當(dāng)前研究的熱點。
1 SCTP協(xié)議介紹
1.1 SCTP協(xié)議簡介
SCTP被看做“超級TCP”,它不僅沿用了TCP的一些性質(zhì),能夠提供可靠傳輸服務(wù),確保數(shù)據(jù)無誤按序地通過網(wǎng)絡(luò),而且擴展了TCP的許多功能。
SCTP與TCP的最大" title="最大">最大區(qū)別就是SCTP采用了多歸屬(Multi-homing)[2]的機制,因此SCTP中的偶聯(lián)概念要比TCP中的連接概念含義更廣。一個偶聯(lián)的兩個SCTP端點都向?qū)Ψ教峁┮粋€SCTP端口號和一個IP地址列表,每個偶聯(lián)都由兩個SCTP端口號和兩個IP地址列表來識別,多歸屬的端點可以接入到不同類型的網(wǎng)絡(luò)。所以SCTP能在兩個端點間建立穩(wěn)固的通信。一個SCTP偶聯(lián)可以包含多個可能的起源與目的地址的組合,這些組合包含在每個端點的傳送地址列表中。這樣使得一個偶聯(lián)可以在多個傳輸路徑間選擇和切換,提高了網(wǎng)絡(luò)容錯的能力,從而在SCTP中一個多歸屬的主機會因為網(wǎng)絡(luò)物理上的故障導(dǎo)致通信中斷的情況將很少發(fā)生。
SCTP支持關(guān)聯(lián)的多流(Multiple Streams),允許把一個關(guān)聯(lián)的數(shù)據(jù)流分成多個子流來同時處理,在傳輸過程中,只需保持子流內(nèi)部有序而不必保持整個數(shù)據(jù)流的順序,子流不會因為傳輸問題而阻塞其他子流,保持互不干擾,這樣就避免了其他流中數(shù)據(jù)丟失造成的隊頭阻塞情況;支持對SYN泛洪攻擊的抵抗;用戶數(shù)據(jù)無錯誤無重復(fù)地確認(rèn)傳輸通過分組序列間隙報告和選擇性重發(fā)來實現(xiàn);SCTP采用了與TCP相似的流量控制和擁塞控制算法,引用了慢啟動機制;在數(shù)據(jù)分組的確認(rèn)和重傳機制上,采用了選擇性確認(rèn),在一定程度上提高了傳輸效率。
1.2 SCTP工作方式
SCTP是一個面向連接的傳輸協(xié)議,在傳輸數(shù)據(jù)前,網(wǎng)絡(luò)兩端需要建立一個通信連接,在SCTP中,這個連接稱為關(guān)聯(lián)(Association)。圖1是一個關(guān)聯(lián)的例子。
?
所謂的關(guān)聯(lián)可以這樣表述:Association={[10.13.61.10,161.10.31.20:101]:[128.10.11.2:201] },這樣一個SCTP的關(guān)聯(lián)可以擁有兩條端到端的通信路徑,一條是10.13.61.10到128.10.11.2,另一條是161.10.31.20到128.10.11.2,這就體現(xiàn)了SCTP的多宿性。當(dāng)關(guān)聯(lián)建立起來后,協(xié)議會把數(shù)據(jù)流分成多個子流,通過某條路徑來傳輸各子流的數(shù)據(jù)。當(dāng)前路徑不能使用時,關(guān)聯(lián)會自動查找自己的路徑列表,確定一條可用的路徑來繼續(xù)傳輸。
2 基于可用帶寬測試的改進方法
2.1改進原理
SCTP作為一種新興的、并未廣泛應(yīng)用的協(xié)議,存在很多可以改進的地方。本文針對其多宿的特點提出了一種性能改進的方法和基于可用帶寬的Primary destination address選擇策略,以提高SCTP的傳輸性能。
如果能在關(guān)聯(lián)建立初始化或需要調(diào)整Primary destination address時選擇一個可用帶寬最大的通信連接,就能夠提高傳輸?shù)乃俣?,并且動態(tài)地根據(jù)網(wǎng)絡(luò)情況適當(dāng)?shù)卣{(diào)整通信路徑。圖2給出了TCP(Reno)、SCTP和改進SCTP的一個比較??v坐標(biāo)表示當(dāng)前連接所占用的帶寬,橫坐標(biāo)表示時間。對于某一條網(wǎng)絡(luò)路徑,在擁塞點前,三個傳輸協(xié)議的動作基本相同。擁塞出現(xiàn)后,三個協(xié)議都會采用相似的擁塞控制算法,調(diào)整速率,占用的帶寬都會顯著減少。當(dāng)擁塞非常嚴(yán)重,原來路徑很難正常使用時,SCTP會自動調(diào)整通信連接,即轉(zhuǎn)移本關(guān)聯(lián)目的地址。而改進SCTP會根據(jù)現(xiàn)有的幾個可用連接,選擇一條可用帶寬最大的通信連接,所以占用帶寬在調(diào)整后不會小于一般SCTP占用帶寬。對于TCP,最幸運的情況是TCP不會中斷,而是一直維持一個占用帶寬很小的通信連接。所以,在調(diào)整點后,可以看到出現(xiàn)了三個明顯的分支。
?
2.2 改進方案
改進SCTP的方案首先確定Primary destination address調(diào)整時機,其次確定一個及時而且比較準(zhǔn)確的可用帶寬測試模塊,選擇可用帶寬最大的通信連接。
本文考慮了三個Primary destination address調(diào)整時機:SCTP關(guān)聯(lián)初始化、SCTP關(guān)聯(lián)正在使用的連接遇到嚴(yán)重的網(wǎng)絡(luò)擁塞和關(guān)聯(lián)正在使用的連接出現(xiàn)故障中斷。SCTP關(guān)聯(lián)初始化時,通過測試現(xiàn)有幾個連接的可用帶寬,找到對應(yīng)最大帶寬的傳輸接口" title="傳輸接口">傳輸接口來設(shè)定Primary destination address。關(guān)聯(lián)正在使用的連接遇到嚴(yán)重的網(wǎng)絡(luò)擁塞時,如果擁塞持續(xù)時間過長,就應(yīng)該考慮改變傳輸接口,以提高傳輸速度。關(guān)聯(lián)正在使用的連接出現(xiàn)故障中斷時,SCTP默認(rèn)方式是尋找一個可用的通信連接;而改進的方式是在測試可用帶寬后,選擇一個帶寬最大的連接,找到對應(yīng)最大帶寬的傳輸接口來設(shè)定Primary destination address。
帶寬測試模塊用來發(fā)現(xiàn)一個可用帶寬最大的通信連接,作為改進SCTP的一個輔助模塊應(yīng)該在較短時間內(nèi)發(fā)現(xiàn)可用帶寬。這里需要使用自加載周期性探測流SLoPS(Self-Loading Periodic Stream)帶寬測試算法,如工具pathload[3][4]、pathchirp[5]的算法等來設(shè)計測試模塊。根據(jù)現(xiàn)有連接的可用帶寬,選擇可用帶寬最大的通信連接。
2.3方案實現(xiàn)
調(diào)整SCTP源代碼如下:
void SctpAgent::RtxMarkedChunks(SctpRtxLimit_E eLimit)
{
……
?//原SCTP調(diào)整Primary destination的方法,注釋掉
//spRtxDest = GetNextDest(spCurrBuffNodeData->spDest);?
//新的Primary destination設(shè)置方法,上述一行代碼替代為下面代碼
spRtxDest = GetInterfaceMaxAW();
……
}
SctpDest_S SctpAgent::GetInterfaceMaxAW()
{
(1)掃描除當(dāng)前Primary destination外的每個接口,在其上執(zhí)行自載流折半查找算法BinarySearchSL(),測試多個接口對應(yīng)路徑的可用帶寬;
(2) 從測試結(jié)果中找出可用帶寬最大的路徑,返回該路徑對應(yīng)的目的接口;
}
long BinarySearchSL(SctpDest_S *)
{
//自載流折半查找算法實現(xiàn);
}
3 實驗仿真
仿真軟件采用NS2[6],版本為2.29。仿真網(wǎng)絡(luò)結(jié)構(gòu)如圖3,網(wǎng)絡(luò)中布置的兩個主機H0和H1都是多宿的,H0配置有if0、if1和if2三個接口,H1配置有if0、if1和if2三個接口。另外還有6個中間節(jié)點N0、N1、N2、N3、N4和N5。這樣,在主機H0與H1之間形成了三條路徑:(H0_if0,N0,N3,H1_if0)、(H0_if1,N1,N4,H1_if1)和(H0_if2,N2,N5,H1_if2)。
?H0 向H1發(fā)送300KB的數(shù)據(jù),應(yīng)用層采用FTP協(xié)議,傳輸層采用SCTP協(xié)議,比較下面三個場景下數(shù)據(jù)傳輸花費的時間,仿真時間為10秒。
?
場景一,原SCTP實現(xiàn),網(wǎng)絡(luò)中沒有背景流量。
場景二,原SCTP實現(xiàn),模擬在擁塞時默認(rèn)調(diào)整primary-destination的情況。鏈路" title="鏈路">鏈路(N0,N3)上有CBR流,速率為490kbps,形成擁塞;鏈路(N1,N4)上有CBR流,速率為100kbps,可用帶寬為400kbps;鏈路(N2,N5)空閑,可用帶寬為500kbps,路徑(H0_if0,N0,N3,H1_if0)不可用,SCTP自動把傳輸路徑轉(zhuǎn)向下一個可用路徑(H0_if1,N1,N4,H1_if1),調(diào)整primary-destination為H1的if1。
場景三,改進的SCTP實現(xiàn),模擬SCTP在擁塞時根據(jù)可用帶寬最大路徑調(diào)整primary-destination的情況。鏈路(N0,N3)上有CBR流,速率為490kbps,形成擁塞;鏈路(N1,N4)上有CBR流,速率為100kbps,可用帶寬為400kbps;鏈路(N2,N5)空閑,可用帶寬為500kbps。路徑(H0_if0,N0,N3,H1_if0)不可用,改進SCTP,及時發(fā)現(xiàn)三條傳輸路徑上的可用帶寬,并選擇可用帶寬最大的路徑(H0_if2,N2,N5,H1_if2),調(diào)整primary-destination為H1的if2。
圖4對比了這三種場景的數(shù)據(jù)傳輸時間和丟包數(shù)。場景一因為沒有背景流量,網(wǎng)絡(luò)狀況良好,所以傳輸時間最快;場景二因為網(wǎng)絡(luò)中出現(xiàn)了擁塞,傳輸時間延長了;場景三中也出現(xiàn)了擁塞,由于及時選擇了可用帶寬最大路徑作為新路徑的策略,所以傳輸時間明顯要少于場景二;場景一中丟包情況最少,場景二和場景三因為擁塞出現(xiàn)了較多的丟包,二者丟包數(shù)目相當(dāng)也說明采用本文的SCTP改進策略,不會為原來的SCTP帶來其它不良影響。
?
圖5反映了在10秒的仿真過程中,場景二、三中SCTP關(guān)聯(lián)的連接可使用的帶寬情況。此圖說明,場景三中由于按最大可用帶寬調(diào)整了傳輸路徑,擁塞發(fā)生后,原有的數(shù)據(jù)傳輸仍有較大的可用帶寬提供使用。
?
從上述數(shù)據(jù)來看,根據(jù)最大可用帶寬來調(diào)整Primary destination address,可以提高SCTP的吞吐量,加快傳輸速度。
本文提出的基于可用帶寬Primary destination address選擇策略的SCTP協(xié)議改進,在仿真平臺上進行了驗證性實驗,證明改進后可以提高網(wǎng)絡(luò)性能參數(shù),同時存在測量可用帶寬程序運行時間長等缺點,有待下一步改進。
參考文獻
[1]?STEWART R, XIE Q. RFC 2960: Stream control transmissionprotocol[S].2000.
[2]?IYENGAR J R. Concurrent multipath transfer using sctpmultihoming. In SPECTS 2004,San Jose, July 2004.
[3] ?JAIN M, DOVROLIS C. Pathload: A measurement tool for end-to-endAvailable bandwidth. Passive and active measurements workshop, Fort Collins CO., 2002-03.
[4] ?JAIN M and DOVROLIS C. End-to-End available bandwidth: measurement methodology, dynamics, and relation
?with TCP throughput. IEEE/ACM Trans. on Networking,?2003,11(4):537-549.
[5]?RIBEIRO V, RIEDI R, BARANIUK R, et al. Pathchirp:efficient available bandwidth estimation for network paths.?In Proceedings of passive and active measurements (PAM)?workshop, Apr. 2003.
[6]? The Network Simulator-ns-2 [EB/OL].?http://www.isi.edu/nsnam/ns/
[7]? 信息產(chǎn)業(yè)部電信研究院.流控制傳送協(xié)議(SCTP) 技術(shù)規(guī)范(V1.0)[S],2000.