張文盛1,史科2
(1.安徽廣播電視大學,安徽 合肥 230022; 2.安徽廣播電視大學省直分校,安徽 合肥 230001)
摘要:針對源抑制機制在內網流量控制中存在的帶寬利用率不高的問題,提出一種基于源抑制的內網流量自適應控制算法。該算法在網關上監視網絡流量,當總流量小于閾值時,不執行流量控制;當總流量超過閾值時,開始統計每個用戶的流量,找出流量較大的用戶,對于下載流量直接在網關上限速,對于上傳流量通知接入交換機控制用戶流量。在Linux中實現基于源抑制的內網流量自適應控制算法,并對其進行測試,結果表明該算法能夠有效控制內網流量,實現帶寬公平和高效利用。
關鍵詞:源抑制;動態流控;自適應;流量攻擊
0引言
*基金項目:安徽省教育廳高校優秀青年人才支持計劃重點項目(gxyqZD2016445);安徽廣播電視大學科研項目(qn1111)目前絕大部分內網都在網絡出口部署流控設備,這些設備在流量控制方面還有缺陷,特別是無法解決惡意流量攻擊問題,例如用戶可以向外網發送大量UDP包,使出口堵塞,妨礙網絡正常運行。源抑制機制[1]通過將流控設備和接入交換機等互聯,發揮系統優勢,實現協同合作,在用戶接入端口控制流量,有效解決惡意流量問題,但是帶寬利用率不高。本文在源抑制技術基礎上,設計內網流量自適應控制算法,實現帶寬公平和高效利用。
1相關研究
目前最新的內網流控控制技術包括動態流控技術和源抑制技術,其各有優缺點。
1.1動態流控技術
動態流控技術是采用自適應方法對不斷變化的流量進行控制的技術,包括流量分類、動態隊列和公平調度3部分[2]。
流量分類是通過識別數據包中的IP和端口等信息識別流量,例如想限制用戶下載流量,可根據從外網接收到的包的目的IP地址進行分類,相同的目的IP的包被標識為同一類[3]。
動態隊列是子隊列個數可變的隊列,保證每一個分類都有且唯一對應一個子隊列。動態隊列根據入隊數據包的分類信息,判斷所屬子隊列是否存在,如果不存在,則建立該子隊列;當所屬隊列長期空閑時,銷毀該子隊列[4]。子隊列可采用隨機早期檢測(Random Eearly Detection,RED)管理算法控制深度[5]。通過子隊列個數的動態擴展和自動收縮特性,保證流量控制的高性能和提高資源的利用率。
公平調度是輪詢動態隊列中的所有子隊列,如果有數據包需要發送,并且本輪有配額,則發送該數據包,否則要等到下一輪,從而保證調度的公平性[6]。
動態流控技術的特點是當分類很多時,帶寬被所有分類平均分享,沒有獨占現象;當分類較少時,大流量的分類也會得到更多的調度機會,帶寬不會空閑浪費。動態流控技術能夠根據流量變化自動調整控制策略,較好地實現帶寬公平和高效使用。動態流控技術的缺點是不能控制惡意流量。典型的動態流量控制技術應用有RouterOS中的每連接隊列 (Per Connection Queue, PCQ)[7]。
1.2源抑制技術
源抑制技術是在接入交換機的端口上限制用戶流量的技術,包括網關、接入交換機和源抑制協議3部分。
網關設置流量配額,監視所有用戶流量,當發現流量超限時,如果是下載流量,直接在網關上限速;如果是上傳流量,則通知接入交換機限速。
接入交換機在接收到限速指令后,解析出端口和限速值參數,在該端口啟用令牌桶算法對流量進行整形。當用戶流量恢復正常后,接入交換機自動取消限速。
源抑制協議用于網關和接入交換機之間的控制交互,傳遞限速命令。
源抑制技術的特點是當用戶流量低于閾值時,不啟用源抑制機制,反之則啟用源抑制,因此源抑制技術能有效控制內網惡意流量,保證帶寬公平使用。源抑制技術的缺點是用戶配額固定,不能根據帶寬使用情況自動調節控制策略,帶寬可能大量空閑,利用率不高。
2基于源抑制的內網流量自適應控制算法
2.1算法思想
本算法的思想是利用二八定律和削尖方法對流量進行控制。
二八定律是指在任何一組事物中,最重要的只占其中一小部分,約20%,其余80%盡管是多數,卻是次要的定律[8]。流量的變化和控制也遵從該定律。在時間上,在超過80%的時間中,流量都很正常,不需要控制,只有不到20%的時間內,流量表現異常需要控制。在用戶組成上,超過80%的用戶流量都是正常的,只有不到20%的用戶流量不正常。在帶寬使用上,流量超過總帶寬的80%時才進行控制,其他情況下不需要控制,從而最大化利用資源。
削尖思想是執行流量控制時,只對流量較大的幾個用戶進行控制,保證帶寬公平使用。
2.2算法描述
本算法主要流程是計算網絡出口流量,如果流量超過閾值,則計算每個用戶的流量,找到其中最大值,將該值減去一個增量后得到值s,對于流量超過s的用戶,如果是上傳流量則使用源抑制機制限速,如果是下載流量則在網關上限速。算法如圖1所示。
圖1中G是流量閾值,通??稍O為出口帶寬的80%;S是分配給每個用戶流量的最小配額值,如1 Mb/s;I是流量控制增量位移,可設為3。當I=3時,s=s-s>>3=s(1-1/8)=7s/8,相當于每次減去1/8,s越大減得越多,s越小減得越少。
本算法定時執行,間隔可以設置長一點,例如10 s執行一次,一方面可以使計算的流量值更平滑,減小瞬間流量波動導致的控制誤差;另一方面給源抑制足夠的反饋時間,降低控制負載。
3算法測試
為了驗證算法的性能,在Linux環境中予以實現,并進行充分測試。
3.1測試環境
測試拓撲如圖2所示。
所有設備均安裝RHEL6(Redhat Enterprise Linux 6)操作系統,所有網絡接口的帶寬都是100 Mb/s,服務器提供FTP下載和上傳服務。
3.2系統結構
本算法基于源抑制,目前有兩種源抑制系統結構可供選擇,一種是Netfilter源抑制,另一種是動態流控源抑制。Netfilter源抑制結構在參考文獻[1]中有深入研究,本文采用動態流控源抑制結構,其流控的公平性優于Netfilter源抑制。動態流控源抑制系統結構如圖3所示。
在圖3中,內網流量自適應控制算法運行在網關的用戶空間中,通過和內核中的動態流控模塊交互,獲取流量信息,控制用戶流量。動態流控模塊是在Linux的流量控制框架SCHED中實現的,通過建立動態流控規程,使用令牌桶算法管理用戶的下載隊列和上傳隊列,將規程綁定在內網口,實現流量的動態控制。
3.3測試方案
同時在PC1和PC2上使用FTP協議向服務器上傳大文件。PC1的FTP客戶端軟件不主動限速,PC2的FTP客戶端主動限速5 Mb/s。
算法中的參數設置如下:G設置為80 Mb/s,S設置為8 Mb/s,I設置為4,算法執行間隔設為60 s。測試開始的60 s內不啟用流量控制,然后再啟用,對比控制效果。
3.4測試結果
在網關內網口統計PC1和PC2的上傳流量,結果如圖4所示。
在圖4中,前60 s內,流量控制未啟用,PC1流量為95 Mb/s左右,PC2流量為5 Mb/s左右,帶寬全部被占用。
啟用流量控制后,由于總流量超過閾值G,算法應該對流量最大的用戶PC1進行源抑制,每隔60 s,將PC1的流量減少1/16,直到總流量保持在80 Mb/s以下,而PC2不受影響。圖4中的信息印證了這些推論,在60 s、120 s、180 s、240 s這4點,PC1的流量均有所跳降,直至保持75 Mb/s左右不變,PC2的流量一直保持在5 Mb/s左右。
4結論
本文針對內網流量控制存在的不足,提出基于源抑制的內網流量自適應控制算法;通過引入二八定律和削尖方法,給出算法框圖,討論算法執行細節,詳細描述算法的工作原理;最后搭建測試環境,在動態流控源抑制系統結構中實現算法,設計測試方案,進行仔細測試。測試結果表明,基于源抑制的內網流量自適應控制算法能夠實現帶寬的公平和高效使用。
參考文獻
?。?] 張文盛.源抑制在網絡流量控制中的應用研究[J].微型機與應用,2015,34(17):6163.
[2] 郭正球.基于Linux下TC的網絡流量管理[J].長沙航空職業技術學院學報,2010,10(2):5053.
[3] 劉穎秋,李巍,李云春.網絡流量分類與應用識別的研究[J].計算機應用研究,2008,25(5),14921495.
?。?] 蔡文郁,金心宇,張昱.基于Linux的網絡流量控制機制[J].江南大學學報(自然科學版),2006,5(4):480484.
?。?] 李新國.基于擁塞控制的AQM算法研究[J].計算機技術與發展,2007,17(5):199202.
?。?] 尹德斌,謝劍英.一種新的加權公平隊列調度算法[J].計算機工程,2008,34(4):2833.
?。?] 王洪波.基于RouterOS系統的流量控制策略研究[D].成都:電子科技大學,2012.
?。?] 吳青劼,洪濤,馬駿.長尾理論綜述[J].周口師范學院學報,2010,27(1):124129.