摘 要: 傳統(tǒng)網(wǎng)絡(luò)流量控制系統(tǒng)在網(wǎng)絡(luò)出口運(yùn)行,只能緩解出口擁塞,不能真正控制網(wǎng)絡(luò)流量。研究網(wǎng)絡(luò)流量控制技術(shù),分析出口擁塞產(chǎn)生的根源,引入源抑制思想,從源頭控制用戶流量,構(gòu)建新型的網(wǎng)絡(luò)流量控制系統(tǒng),實(shí)現(xiàn)帶寬的合理分配和高效使用。通過(guò)建立源抑制機(jī)制,設(shè)計(jì)通信協(xié)議,在網(wǎng)關(guān)和接入交換機(jī)之間聯(lián)動(dòng),共同控制網(wǎng)絡(luò)流量。在Linux環(huán)境下實(shí)現(xiàn)和測(cè)試系統(tǒng),試驗(yàn)表明源抑制機(jī)制能有效控制網(wǎng)絡(luò)流量。
關(guān)鍵詞: 源抑制;網(wǎng)絡(luò)流量控制;接入交換機(jī);netfilter
0 引言
隨著信息技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)流量飛速增長(zhǎng),帶寬使用面臨很大壓力,流量控制技術(shù)成為研究熱點(diǎn)[1]。目前網(wǎng)絡(luò)流量控制研究多集中在網(wǎng)絡(luò)出口,通過(guò)在網(wǎng)關(guān)上建立流量控制系統(tǒng),對(duì)轉(zhuǎn)發(fā)的數(shù)據(jù)包進(jìn)行流量整形,實(shí)現(xiàn)流量控制[2]。用戶發(fā)送的數(shù)據(jù)包要經(jīng)過(guò)多個(gè)交換機(jī)的轉(zhuǎn)發(fā)才能到達(dá)網(wǎng)關(guān),而這些系統(tǒng)不能控制尚未到達(dá)的數(shù)據(jù)包,極端情況下,惡意流量仍會(huì)造成網(wǎng)絡(luò)癱瘓。本文引入源抑制思想,在接入交換機(jī)上控制用戶流量。
1 相關(guān)研究
1.1 傳統(tǒng)網(wǎng)絡(luò)流量控制技術(shù)
網(wǎng)絡(luò)出口是網(wǎng)絡(luò)瓶頸,容易發(fā)生擁塞,傳統(tǒng)網(wǎng)絡(luò)流量控制技術(shù)重點(diǎn)控制網(wǎng)絡(luò)出口,采用各種技術(shù)進(jìn)行網(wǎng)絡(luò)流量控制。這些技術(shù)大致包括兩類:基于網(wǎng)絡(luò)體系結(jié)構(gòu)的流量控制技術(shù)和基于QoS的流量控制技術(shù)?;诰W(wǎng)絡(luò)體系結(jié)構(gòu)的流量控制技術(shù)從協(xié)議分層的角度,根據(jù)協(xié)議的特點(diǎn)對(duì)流量進(jìn)行控制,例如控制P2P協(xié)議流量[3]和TCP協(xié)議流量[4]?;赒oS的流量控制技術(shù)采用分組調(diào)度、隊(duì)列管理、流量分類和流量整形技術(shù)[5-6],對(duì)轉(zhuǎn)發(fā)的數(shù)據(jù)包進(jìn)行控制。傳統(tǒng)網(wǎng)絡(luò)流量控制系統(tǒng)工作在網(wǎng)絡(luò)出口,這些技術(shù)只能夠緩解擁塞,無(wú)法真正控制網(wǎng)絡(luò)流量。
1.2 源抑制思想
源抑制思想是當(dāng)網(wǎng)絡(luò)發(fā)生擁塞或主機(jī)資源不夠時(shí),中間路由器或目標(biāo)主機(jī)向源主機(jī)發(fā)送消息,通知其降低發(fā)送數(shù)據(jù)包的速度,從而達(dá)到控制流量的目的。源抑制思想在IP協(xié)議設(shè)計(jì)之初就被引入,最典型的例子是ICMP協(xié)議,ICMP協(xié)議專門設(shè)計(jì)有源抑制報(bào)文(Source Quench Message),目標(biāo)主機(jī)為了防止緩存溢出,通過(guò)發(fā)送源抑制報(bào)文來(lái)請(qǐng)求源主機(jī)降低數(shù)據(jù)發(fā)送速度[7]。具體過(guò)程是:首先目標(biāo)主機(jī)發(fā)生緩存溢出開(kāi)始丟棄數(shù)據(jù),并向源主機(jī)發(fā)送源抑制報(bào)文,其發(fā)送速度是每丟棄一個(gè)數(shù)據(jù)包就發(fā)送一個(gè)源抑制報(bào)文;源主機(jī)接收到源抑制報(bào)文開(kāi)始降低其數(shù)據(jù)發(fā)送速度,直到不再接收源抑制報(bào)文為止;最后只要不再接收到源抑制報(bào)文,源主機(jī)就逐漸增加其發(fā)送速度。但在實(shí)際應(yīng)用中,該報(bào)文總是被忽略,并沒(méi)有得到很好的使用。
2 基于源抑制的網(wǎng)絡(luò)流量控制系統(tǒng)
針對(duì)傳統(tǒng)網(wǎng)絡(luò)流量控制系統(tǒng)的缺點(diǎn),引入源抑制機(jī)制,在接入交換機(jī)上控制用戶流量,建立基于源抑制的網(wǎng)絡(luò)流量控制系統(tǒng)。
2.1 工作原理
根據(jù)傳統(tǒng)網(wǎng)絡(luò)流量控制系統(tǒng)和基于源抑制的網(wǎng)絡(luò)流量控制系統(tǒng)的特點(diǎn),繪制兩者的工作原理,如圖1所示。
圖中用線條表示用戶流量,線條粗細(xì)表示流量大小,箭頭方向表示流量方向,分別顯示用戶發(fā)送流量和接收流量。傳統(tǒng)網(wǎng)絡(luò)流量控制系統(tǒng)中用戶發(fā)送的較大流量經(jīng)交換機(jī)轉(zhuǎn)發(fā)到達(dá)網(wǎng)關(guān),被限制成較小的流量發(fā)往互聯(lián)網(wǎng),而互聯(lián)網(wǎng)發(fā)往用戶的較大流量到達(dá)網(wǎng)關(guān),被限制成較小的流量發(fā)往用戶。基于源抑制的網(wǎng)絡(luò)流量控制系統(tǒng)中用戶發(fā)送的較大流量在接入交換機(jī)即被限制成較小的流量發(fā)往網(wǎng)關(guān)和互聯(lián)網(wǎng),而互聯(lián)網(wǎng)發(fā)往用戶的較大流量到達(dá)網(wǎng)關(guān),被限制成較小的流量發(fā)往用戶。對(duì)于用戶發(fā)送的流量,傳統(tǒng)網(wǎng)絡(luò)流量控制系統(tǒng)在網(wǎng)關(guān)控制,而基于源抑制的網(wǎng)絡(luò)流量控制系統(tǒng)在接入交換機(jī)上控制,因此基于源抑制的流量控制系統(tǒng)才能真正控制網(wǎng)絡(luò)流量。
2.2 系統(tǒng)結(jié)構(gòu)
基于源抑制的網(wǎng)絡(luò)流量控制系統(tǒng)在網(wǎng)關(guān)上部署主控模塊,在接入交換機(jī)上部署源抑制模塊,通過(guò)兩個(gè)模塊之間的協(xié)同合作,共同控制網(wǎng)絡(luò)流量。其系統(tǒng)結(jié)構(gòu)如圖2所示。
主控模塊包括主控進(jìn)程、網(wǎng)絡(luò)拓?fù)湫畔⒈怼⑾滦辛髁靠刂茊卧土钆仆八惴?。主控進(jìn)程監(jiān)測(cè)用戶流量,如果是用戶上行流量異常,則通知源抑制模塊進(jìn)行限制,如果是下行流量異常,則在網(wǎng)關(guān)上限制。網(wǎng)絡(luò)拓?fù)湫畔⒈肀4嬗脩舻慕尤胄畔?,主要包括用戶IP、接入交換機(jī)IP和端口,主控算法根據(jù)用戶的IP在表中查詢接入交換機(jī)IP和端口,進(jìn)而執(zhí)行源抑制。下行流量控制單元控制用戶下行流量,使用令牌桶算法進(jìn)行流量整形。
源抑制模塊包括源抑制進(jìn)程、源抑制單元和令牌桶算法。源抑制進(jìn)程解析主控模塊發(fā)送過(guò)來(lái)的命令,通知源抑制單元控制用戶上行流量,在指定端口執(zhí)行令牌桶算法進(jìn)行流量整形。
源抑制通信協(xié)議規(guī)定主控模塊和源抑制模塊之間交互的命令格式和過(guò)程。
2.3 主控模塊
網(wǎng)關(guān)上的操作系統(tǒng)內(nèi)核在轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí)維護(hù)用戶IP的流量計(jì)數(shù)值,包括上行字節(jié)數(shù)和下行字節(jié)數(shù)。網(wǎng)絡(luò)拓?fù)湫畔⒈碛晒芾韱T手工錄入。主控進(jìn)程定時(shí)從操作系統(tǒng)內(nèi)核獲取所有用戶IP的流量計(jì)數(shù),計(jì)算每個(gè)用戶的流量值,找出超過(guò)流量閾值一定時(shí)間的IP。如果是下行流量異常,則直接將流量閾值參數(shù)設(shè)置進(jìn)下行流量控制單元中,進(jìn)而執(zhí)行令牌桶算法控制用戶流量;如果是上行流量異常,則查詢網(wǎng)絡(luò)拓?fù)湫畔⒈?,找到接入交換機(jī)IP和端口,將端口和限制值等參數(shù)封裝成通信協(xié)議數(shù)據(jù)包并發(fā)送給交換機(jī),通知其在端口上控制用戶流量。當(dāng)下行流量恢復(fù)正常時(shí)(即令牌桶算法不再丟棄數(shù)據(jù)包且保持一定時(shí)間),下行流量控制單元主動(dòng)取消控制。
2.4 源抑制模塊
交換機(jī)在轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí)維護(hù)每個(gè)端口的流量計(jì)數(shù),主要是用戶發(fā)送字節(jié)數(shù)。當(dāng)主控進(jìn)程通知交換機(jī)在指定端口限速時(shí),源抑制進(jìn)程接收通信協(xié)議數(shù)據(jù)包,解析出端口和限速值,將其設(shè)置進(jìn)源抑制單元中。在交換機(jī)轉(zhuǎn)發(fā)用戶的數(shù)據(jù)包之前,源抑制單元檢查是否需要限速,如果是,則執(zhí)行令牌桶算法進(jìn)行控制,否則執(zhí)行正常的轉(zhuǎn)發(fā)操作。當(dāng)端口流量恢復(fù)正常時(shí)(即令牌桶算法不再丟棄數(shù)據(jù)包且保持一定時(shí)間),源抑制單元主動(dòng)取消控制。
2.5 源抑制通信協(xié)議
源抑制通信協(xié)議基于UDP協(xié)議,端口值為54730。協(xié)議采用請(qǐng)求應(yīng)答的方式工作,主控進(jìn)程先發(fā)送源抑制請(qǐng)求報(bào)文給源抑制進(jìn)程,源抑制進(jìn)程再發(fā)送應(yīng)答報(bào)文作為響應(yīng),從而完成一次交互。其PDU結(jié)構(gòu)如圖3所示。
主要字段用途如下:
幻數(shù):值為0x7A1D,用于檢查和確認(rèn)接收到的數(shù)據(jù)包是源抑制PDU。
序號(hào):從1開(kāi)始編號(hào),每開(kāi)始一個(gè)新的交互后自動(dòng)加1,用于區(qū)分不同的交互。
命令類型:只有兩種類型值,1表示請(qǐng)求,2表示應(yīng)答。在應(yīng)答報(bào)文中除命令類型外,其他字段的值與請(qǐng)求報(bào)文一致。
端口值:用戶接入交換機(jī)的端口值。
限速值:用戶的限速值。
鑒于UDP的不可靠性,抑制協(xié)議引入重傳機(jī)制,在請(qǐng)求報(bào)文發(fā)送后,如果3 s內(nèi)未收到響應(yīng)報(bào)文,則重發(fā)請(qǐng)求報(bào)文。在極端情況下,網(wǎng)絡(luò)可能嚴(yán)重?fù)砣?,?dǎo)致源抑制協(xié)議無(wú)法完成,因此規(guī)定交換機(jī)優(yōu)先轉(zhuǎn)發(fā)源抑制協(xié)議數(shù)據(jù)包。
3 系統(tǒng)測(cè)試
在Linux環(huán)境下實(shí)現(xiàn)基于源抑制的網(wǎng)絡(luò)流量控制系統(tǒng),采用Netfilter框架建立主控模塊,采用Bridge框架建立源抑制模塊[8]。然后搭建測(cè)試環(huán)境,對(duì)源抑制機(jī)制進(jìn)行測(cè)試。測(cè)試方法是在用戶端發(fā)送100 Mb/s流量到網(wǎng)關(guān),流量閾值為40 Mb/s,記錄網(wǎng)關(guān)接收到的流量,結(jié)果如圖4所示。
圖4顯示用戶流量持續(xù)一段時(shí)間后,從100 Mb/s迅速下降到40 Mb/s,表明源抑制機(jī)制能有效控制用戶流量。
4 結(jié)束語(yǔ)
針對(duì)傳統(tǒng)網(wǎng)絡(luò)流量控制系統(tǒng)存在的不足,通過(guò)引入源抑制機(jī)制,提出構(gòu)建新型的網(wǎng)絡(luò)流量控制系統(tǒng),在接入交換機(jī)上控制用戶發(fā)送流量,測(cè)試表明該系統(tǒng)能有效控制用戶上行流量。本系統(tǒng)中只要用戶流量超限就立即執(zhí)行控制,這可能造成個(gè)別用戶的大流量需求得不到滿足而出口帶寬又空閑浪費(fèi)的情況發(fā)生,需要進(jìn)一步研究提高帶寬利用率的算法。此外網(wǎng)絡(luò)拓?fù)湫畔⒈硎鞘止や浫氲?,?shí)際應(yīng)用中應(yīng)該采用準(zhǔn)入控制技術(shù)自動(dòng)生成。
參考文獻(xiàn)
[1] 王榮,萬(wàn)振凱.校園網(wǎng)流量監(jiān)控與優(yōu)化研究[J].天津工業(yè)大學(xué)學(xué)報(bào),2014,29(2):68-72.
[2] 張五生,鄭靈翔.基于Linux的流量控制系統(tǒng)研究[J].廈門大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,49(1):38-42.
[3] Wang Chunzhi, Zhou Xin, You Fangping, et al. Design of P2P traffic identification based on DPI and DFI[C]. 2009 International Symposium on Computer Network and Multimedia Technology, Wuhan, China: IEEE, 2009:978-981.
[4] 楊虎,張大方,謝鯤,等.Netfilter/Iptables框架下基于TCP滑動(dòng)窗口的串行流量控制算法[J].計(jì)算機(jī)工程與科學(xué),2009,31(9):8-11,26.
[5] 劉明,竇文華,張鶴穎.主動(dòng)隊(duì)列管理研究綜述[J].計(jì)算機(jī)工程,2006,32(24):84-86.
[6] 楊其欽.校園網(wǎng)中基于令牌桶算法的流量控制研究[D].廣州:暨南大學(xué),2012.
[7] COME D E. Internetworking with TCP/IP Vol I: Principles, Protocols, and Architectures(Fourth Edition)[M].林瑤,譯.北京:電子工業(yè)出版社,2001.
[8] 張文盛.基于Netfilter的內(nèi)網(wǎng)流量控制系統(tǒng)應(yīng)用研究[J].山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,26(6):44-48.