摘 要: 傳統網絡流量控制系統在網絡出口運行,只能緩解出口擁塞,不能真正控制網絡流量。研究網絡流量控制技術,分析出口擁塞產生的根源,引入源抑制思想,從源頭控制用戶流量,構建新型的網絡流量控制系統,實現帶寬的合理分配和高效使用。通過建立源抑制機制,設計通信協議,在網關和接入交換機之間聯動,共同控制網絡流量。在Linux環境下實現和測試系統,試驗表明源抑制機制能有效控制網絡流量。
關鍵詞: 源抑制;網絡流量控制;接入交換機;netfilter
0 引言
隨著信息技術的不斷發展,網絡流量飛速增長,帶寬使用面臨很大壓力,流量控制技術成為研究熱點[1]。目前網絡流量控制研究多集中在網絡出口,通過在網關上建立流量控制系統,對轉發的數據包進行流量整形,實現流量控制[2]。用戶發送的數據包要經過多個交換機的轉發才能到達網關,而這些系統不能控制尚未到達的數據包,極端情況下,惡意流量仍會造成網絡癱瘓。本文引入源抑制思想,在接入交換機上控制用戶流量。
1 相關研究
1.1 傳統網絡流量控制技術
網絡出口是網絡瓶頸,容易發生擁塞,傳統網絡流量控制技術重點控制網絡出口,采用各種技術進行網絡流量控制。這些技術大致包括兩類:基于網絡體系結構的流量控制技術和基于QoS的流量控制技術。基于網絡體系結構的流量控制技術從協議分層的角度,根據協議的特點對流量進行控制,例如控制P2P協議流量[3]和TCP協議流量[4]。基于QoS的流量控制技術采用分組調度、隊列管理、流量分類和流量整形技術[5-6],對轉發的數據包進行控制。傳統網絡流量控制系統工作在網絡出口,這些技術只能夠緩解擁塞,無法真正控制網絡流量。
1.2 源抑制思想
源抑制思想是當網絡發生擁塞或主機資源不夠時,中間路由器或目標主機向源主機發送消息,通知其降低發送數據包的速度,從而達到控制流量的目的。源抑制思想在IP協議設計之初就被引入,最典型的例子是ICMP協議,ICMP協議專門設計有源抑制報文(Source Quench Message),目標主機為了防止緩存溢出,通過發送源抑制報文來請求源主機降低數據發送速度[7]。具體過程是:首先目標主機發生緩存溢出開始丟棄數據,并向源主機發送源抑制報文,其發送速度是每丟棄一個數據包就發送一個源抑制報文;源主機接收到源抑制報文開始降低其數據發送速度,直到不再接收源抑制報文為止;最后只要不再接收到源抑制報文,源主機就逐漸增加其發送速度。但在實際應用中,該報文總是被忽略,并沒有得到很好的使用。
2 基于源抑制的網絡流量控制系統
針對傳統網絡流量控制系統的缺點,引入源抑制機制,在接入交換機上控制用戶流量,建立基于源抑制的網絡流量控制系統。
2.1 工作原理
根據傳統網絡流量控制系統和基于源抑制的網絡流量控制系統的特點,繪制兩者的工作原理,如圖1所示。
圖中用線條表示用戶流量,線條粗細表示流量大小,箭頭方向表示流量方向,分別顯示用戶發送流量和接收流量。傳統網絡流量控制系統中用戶發送的較大流量經交換機轉發到達網關,被限制成較小的流量發往互聯網,而互聯網發往用戶的較大流量到達網關,被限制成較小的流量發往用戶。基于源抑制的網絡流量控制系統中用戶發送的較大流量在接入交換機即被限制成較小的流量發往網關和互聯網,而互聯網發往用戶的較大流量到達網關,被限制成較小的流量發往用戶。對于用戶發送的流量,傳統網絡流量控制系統在網關控制,而基于源抑制的網絡流量控制系統在接入交換機上控制,因此基于源抑制的流量控制系統才能真正控制網絡流量。
2.2 系統結構
基于源抑制的網絡流量控制系統在網關上部署主控模塊,在接入交換機上部署源抑制模塊,通過兩個模塊之間的協同合作,共同控制網絡流量。其系統結構如圖2所示。
主控模塊包括主控進程、網絡拓撲信息表、下行流量控制單元和令牌桶算法。主控進程監測用戶流量,如果是用戶上行流量異常,則通知源抑制模塊進行限制,如果是下行流量異常,則在網關上限制。網絡拓撲信息表保存用戶的接入信息,主要包括用戶IP、接入交換機IP和端口,主控算法根據用戶的IP在表中查詢接入交換機IP和端口,進而執行源抑制。下行流量控制單元控制用戶下行流量,使用令牌桶算法進行流量整形。
源抑制模塊包括源抑制進程、源抑制單元和令牌桶算法。源抑制進程解析主控模塊發送過來的命令,通知源抑制單元控制用戶上行流量,在指定端口執行令牌桶算法進行流量整形。
源抑制通信協議規定主控模塊和源抑制模塊之間交互的命令格式和過程。
2.3 主控模塊
網關上的操作系統內核在轉發數據包時維護用戶IP的流量計數值,包括上行字節數和下行字節數。網絡拓撲信息表由管理員手工錄入。主控進程定時從操作系統內核獲取所有用戶IP的流量計數,計算每個用戶的流量值,找出超過流量閾值一定時間的IP。如果是下行流量異常,則直接將流量閾值參數設置進下行流量控制單元中,進而執行令牌桶算法控制用戶流量;如果是上行流量異常,則查詢網絡拓撲信息表,找到接入交換機IP和端口,將端口和限制值等參數封裝成通信協議數據包并發送給交換機,通知其在端口上控制用戶流量。當下行流量恢復正常時(即令牌桶算法不再丟棄數據包且保持一定時間),下行流量控制單元主動取消控制。
2.4 源抑制模塊
交換機在轉發數據包時維護每個端口的流量計數,主要是用戶發送字節數。當主控進程通知交換機在指定端口限速時,源抑制進程接收通信協議數據包,解析出端口和限速值,將其設置進源抑制單元中。在交換機轉發用戶的數據包之前,源抑制單元檢查是否需要限速,如果是,則執行令牌桶算法進行控制,否則執行正常的轉發操作。當端口流量恢復正常時(即令牌桶算法不再丟棄數據包且保持一定時間),源抑制單元主動取消控制。
2.5 源抑制通信協議
源抑制通信協議基于UDP協議,端口值為54730。協議采用請求應答的方式工作,主控進程先發送源抑制請求報文給源抑制進程,源抑制進程再發送應答報文作為響應,從而完成一次交互。其PDU結構如圖3所示。
主要字段用途如下:
幻數:值為0x7A1D,用于檢查和確認接收到的數據包是源抑制PDU。
序號:從1開始編號,每開始一個新的交互后自動加1,用于區分不同的交互。
命令類型:只有兩種類型值,1表示請求,2表示應答。在應答報文中除命令類型外,其他字段的值與請求報文一致。
端口值:用戶接入交換機的端口值。
限速值:用戶的限速值。
鑒于UDP的不可靠性,抑制協議引入重傳機制,在請求報文發送后,如果3 s內未收到響應報文,則重發請求報文。在極端情況下,網絡可能嚴重擁塞,導致源抑制協議無法完成,因此規定交換機優先轉發源抑制協議數據包。
3 系統測試
在Linux環境下實現基于源抑制的網絡流量控制系統,采用Netfilter框架建立主控模塊,采用Bridge框架建立源抑制模塊[8]。然后搭建測試環境,對源抑制機制進行測試。測試方法是在用戶端發送100 Mb/s流量到網關,流量閾值為40 Mb/s,記錄網關接收到的流量,結果如圖4所示。
圖4顯示用戶流量持續一段時間后,從100 Mb/s迅速下降到40 Mb/s,表明源抑制機制能有效控制用戶流量。
4 結束語
針對傳統網絡流量控制系統存在的不足,通過引入源抑制機制,提出構建新型的網絡流量控制系統,在接入交換機上控制用戶發送流量,測試表明該系統能有效控制用戶上行流量。本系統中只要用戶流量超限就立即執行控制,這可能造成個別用戶的大流量需求得不到滿足而出口帶寬又空閑浪費的情況發生,需要進一步研究提高帶寬利用率的算法。此外網絡拓撲信息表是手工錄入的,實際應用中應該采用準入控制技術自動生成。
參考文獻
[1] 王榮,萬振凱.校園網流量監控與優化研究[J].天津工業大學學報,2014,29(2):68-72.
[2] 張五生,鄭靈翔.基于Linux的流量控制系統研究[J].廈門大學學報(自然科學版),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滑動窗口的串行流量控制算法[J].計算機工程與科學,2009,31(9):8-11,26.
[5] 劉明,竇文華,張鶴穎.主動隊列管理研究綜述[J].計算機工程,2006,32(24):84-86.
[6] 楊其欽.校園網中基于令牌桶算法的流量控制研究[D].廣州:暨南大學,2012.
[7] COME D E. Internetworking with TCP/IP Vol I: Principles, Protocols, and Architectures(Fourth Edition)[M].林瑤,譯.北京:電子工業出版社,2001.
[8] 張文盛.基于Netfilter的內網流量控制系統應用研究[J].山東理工大學學報(自然科學版),2012,26(6):44-48.