王建國(guó) 劉艷艷 劉海燕
摘 要: 網(wǎng)絡(luò)風(fēng)暴沖擊下的網(wǎng)絡(luò)結(jié)構(gòu)存在較高的差異性,并且外部環(huán)境存在較高的波動(dòng)性,使得傳統(tǒng)采用異構(gòu)網(wǎng)絡(luò)協(xié)作的網(wǎng)絡(luò)流量調(diào)控方法存在控制效率低和失衡的問題。因此,設(shè)計(jì)基于 Linux 防火墻的嵌入式網(wǎng)絡(luò)流量控制系統(tǒng),其是基于Linux內(nèi)核Netfilter 框架的流量控制系統(tǒng)。系統(tǒng)將μClinux當(dāng)成操作系統(tǒng)的嵌入式系統(tǒng),其塑造在Netfilter 防火墻框架上,由內(nèi)核功能模塊、虛擬部件以及用戶配置工具構(gòu)成。內(nèi)核功能模塊在Netfilter框架的鉤子掛載點(diǎn)處注冊(cè)處理函數(shù),完成網(wǎng)絡(luò)數(shù)據(jù)包的控制,實(shí)現(xiàn)網(wǎng)絡(luò)流量的調(diào)控。虛擬部件實(shí)現(xiàn)內(nèi)核空間同用戶空間配置數(shù)據(jù)的傳遞,確保用戶采用配置工具對(duì)流量調(diào)控系統(tǒng)的行為進(jìn)行管理。用戶通過(guò)用戶配置工具將待控制的主機(jī)/子網(wǎng)信息反饋到流量調(diào)控系統(tǒng)中。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)系統(tǒng)可實(shí)現(xiàn)網(wǎng)絡(luò)風(fēng)暴沖擊下的網(wǎng)絡(luò)流量的平穩(wěn)控制,并且具有較高的控制效率和魯棒性。
關(guān)鍵詞: 網(wǎng)絡(luò)風(fēng)暴; 網(wǎng)絡(luò)流量; Netfilter; μClinux
中圖分類號(hào): TN711?34; TP393 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)06?0075?04
Abstract: Under the impact of network storm, the differences of network structure is higher, and the external environment has higher volatility, which make the traditional network traffic control method with heterogeneous network collaboration exist the problems of low control efficiency and imbalance. Therefore, an embedded network traffic control system based on Linux firewall was designed. It is based on the fluid flow control system with the Linux kernel Netfilter framework, takes μClinux as the embedded system of operating system, and is shaped on the firewall Netfilter framework, which is composed of kernel function module, virtual components and user configuration tool. The kernel function module registers handler function at the hook hardpoints of Netfilter framework to complete the control to the network packet and achieve network traffic control. The virtual components are used to realize the user space configuration data transmission in the kernel space to ensure that the user manages the behavior of the fluid flow control system and feeds the host/subnet information under control back to the fluid flow control system by his configuration tool. The experimental results indicate that the designed system can realize smooth control of network traffic flow under the impact of network storm, and has high control efficiency and robustness.
Keywords: network storm; network flow; Netfilter; μClinux
0 引 言
隨著無(wú)線通信技術(shù)的快速發(fā)展,移動(dòng)數(shù)據(jù)流量的增長(zhǎng)速度也不斷提升,使得移動(dòng)蜂窩網(wǎng)絡(luò)存在流量過(guò)載的問題,網(wǎng)絡(luò)更容易受到網(wǎng)絡(luò)風(fēng)暴的入侵干擾。網(wǎng)絡(luò)風(fēng)暴沖擊下的網(wǎng)絡(luò)流量存在失衡問題,導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)通信質(zhì)量大大降低,對(duì)人們的生產(chǎn)和生活造成了嚴(yán)重干擾。因此,尋求有效的方法對(duì)網(wǎng)絡(luò)風(fēng)暴沖擊下的流量進(jìn)行有效監(jiān)測(cè)和分流調(diào)控,成為相關(guān)人員分析的熱點(diǎn)問題[1?3]。網(wǎng)絡(luò)風(fēng)暴沖擊下的網(wǎng)絡(luò)結(jié)構(gòu)存在較高的差異性,并且外部環(huán)境存在較高的波動(dòng)性,使得傳統(tǒng)采用異構(gòu)網(wǎng)絡(luò)協(xié)作的網(wǎng)絡(luò)流量調(diào)控方法,存在控制效率低和失衡的問題[4?6]。
文獻(xiàn)[7]采用OpenRadio無(wú)線網(wǎng)絡(luò)架構(gòu)實(shí)現(xiàn)網(wǎng)絡(luò)流量的有效控制,其將無(wú)線節(jié)點(diǎn)軟件化,可控制總體網(wǎng)絡(luò)流量,但是不能對(duì)網(wǎng)絡(luò)中物理層和資源層流量進(jìn)行局部調(diào)控,存在一定的局限性。文獻(xiàn)[8]通過(guò)D2D方法完成網(wǎng)絡(luò)流量控制,在D2D通信網(wǎng)絡(luò)中融入新的無(wú)線負(fù)載部件,通過(guò)該部件對(duì)網(wǎng)絡(luò)流量進(jìn)行控制,該方法降低了關(guān)鍵網(wǎng)絡(luò)的數(shù)據(jù)流量負(fù)載,但是存在全局流量控制效率低的缺陷。針對(duì)上述分析問題,設(shè)計(jì)基于 Linux 防火墻的嵌入式網(wǎng)絡(luò)流量控制系統(tǒng)。
1 基于Linux防火墻的嵌入式網(wǎng)絡(luò)流量控制系統(tǒng)
設(shè)計(jì)的基于Linux防火墻的嵌入式網(wǎng)絡(luò)流量控制系統(tǒng),即rlimit,是一個(gè)基于Linux內(nèi)核Netfilter 框架的流量控制系統(tǒng),其將總體流量控制系統(tǒng)嵌入到一個(gè)嵌入式硬件平臺(tái),形成一個(gè)高度集成的流量控制平臺(tái),用于抵御網(wǎng)絡(luò)風(fēng)暴的強(qiáng)烈沖擊。流量調(diào)控系統(tǒng)是將μClinux當(dāng)成操作系統(tǒng)的嵌入式系統(tǒng),其塑造在Netfilter 防火墻框架上,在Netfilter的鉤子掛載點(diǎn)位置注冊(cè)鉤子函數(shù),進(jìn)而調(diào)控網(wǎng)絡(luò)數(shù)據(jù)包,完成網(wǎng)絡(luò)流量的控制。該控制系統(tǒng)塑造在Netfilter框架上,可直接作用于IP層,增強(qiáng)數(shù)據(jù)包的傳遞效率,并且同防火墻緊密聯(lián)系,增強(qiáng)了網(wǎng)絡(luò)的安全性,抑制網(wǎng)絡(luò)風(fēng)暴沖擊的不利干擾。
1.1 系統(tǒng)總體設(shè)計(jì)
網(wǎng)絡(luò)風(fēng)暴沖擊下的流量控制系統(tǒng)實(shí)現(xiàn)流量控制過(guò)程中,需要分析網(wǎng)絡(luò)風(fēng)暴沖擊下進(jìn)出系統(tǒng)所處主機(jī)的數(shù)據(jù)包流量。系統(tǒng)應(yīng)采集網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)包,并對(duì)數(shù)據(jù)包進(jìn)行分析和處理。Netfilter是塑造在IP層的框架,能夠從IP層直接采集數(shù)據(jù)包,同時(shí)注冊(cè)鉤子函數(shù)處理數(shù)據(jù)包。用戶設(shè)計(jì)的鉤子函數(shù)能夠掛入IP層,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)包的高效采集和處理。系統(tǒng)的流量控制模塊使用擴(kuò)展 Netfilter 的方法,能夠確保系統(tǒng)即可對(duì)數(shù)據(jù)包進(jìn)行采集處理,還能夠提供安全保護(hù),抵御網(wǎng)絡(luò)風(fēng)暴的沖擊,系統(tǒng)的鉤子掛載點(diǎn)示意圖如圖1所示。
當(dāng)數(shù)據(jù)包通過(guò)網(wǎng)絡(luò)接口設(shè)備輸入和輸出前,先被系統(tǒng)采集,再按照設(shè)置的速率進(jìn)行流量控制。如果數(shù)據(jù)包的速率高于設(shè)置值,則系統(tǒng)會(huì)對(duì)其進(jìn)行滯后處理,確保其速率滿足設(shè)置值,再命令Linux網(wǎng)絡(luò)子系統(tǒng)完成后續(xù)的處理。網(wǎng)絡(luò)流量控制的過(guò)程是控制流入主機(jī)和離開主機(jī)的數(shù)據(jù)包速率。Netfilter 框 架 內(nèi)全部輸入和離開主機(jī)的網(wǎng)絡(luò)數(shù)據(jù)包,都要通過(guò)MU_IP_HEW_BUSEH和MU_IP_KIMC_BUSEH。因而,可在該兩個(gè)鉤子掛載點(diǎn)注冊(cè)處理函數(shù),該過(guò)程如圖2所示。
明確鉤子函數(shù)掛載點(diǎn)后,應(yīng)按照功能需求和接口標(biāo)志設(shè)置鉤子函數(shù)。系統(tǒng)中設(shè)置了主機(jī)鏈表,對(duì)網(wǎng)關(guān)管理的主機(jī)速率進(jìn)行管理,其中的主機(jī)主要是網(wǎng)關(guān)上的全部計(jì)算機(jī)。主機(jī)鏈表上的各節(jié)點(diǎn)可反映同主機(jī)IP、速率等相關(guān)信息的數(shù)據(jù)結(jié)構(gòu)。向各主機(jī)設(shè)置發(fā)送隊(duì)列和接收隊(duì)列,分別管理主機(jī)的上行速率和下行速率。若源地址是主機(jī)IP的數(shù)據(jù)包,系統(tǒng)采集數(shù)據(jù)包后,分析數(shù)據(jù)包是否滿足發(fā)送速率規(guī)范,若滿足,則將數(shù)據(jù)包反饋給IP層的協(xié)議,再執(zhí)行相關(guān)的處理;否則,將數(shù)據(jù)存放到發(fā)送隊(duì)列中,并設(shè)置定時(shí)器,設(shè)置數(shù)據(jù)包的發(fā)送時(shí)間。主機(jī)的接收隊(duì)列處理過(guò)程同發(fā)送隊(duì)列相同。用戶向系統(tǒng)輸入控制參數(shù),系統(tǒng)需要向用戶提供工具,確保用戶輸入的控制信息可反饋給系統(tǒng)。因此,將總體劃分成內(nèi)核空間和用戶空間命令行工具,分別用于實(shí)現(xiàn)關(guān)鍵功能和配置待調(diào)控的IP地址和速率等參數(shù)。系統(tǒng)設(shè)置虛擬部件,將用戶的配置信息反饋到內(nèi)核空間,進(jìn)而管理總體系統(tǒng)的行為。用戶能夠直接操作虛擬部件,將控制參數(shù)信息通過(guò)虛擬部件反饋到系統(tǒng)的用戶空間。系統(tǒng)內(nèi)核空間代碼可讀取虛擬部件中的信息,進(jìn)而對(duì)流量控制模塊的行為進(jìn)行管理。最終使得虛擬部件在系統(tǒng)內(nèi)核空間和用戶空間實(shí)現(xiàn)信息的共享,二者間的關(guān)系如圖3所示。
1.2 系統(tǒng)的編碼實(shí)現(xiàn)
網(wǎng)絡(luò)風(fēng)暴沖擊下的流量調(diào)控平臺(tái)包括內(nèi)核空間模塊、虛擬部件以及用戶空間程序。內(nèi)核空間模塊完成流量調(diào)控系統(tǒng)的關(guān)鍵功能,虛擬部件實(shí)現(xiàn)用戶配置信息同內(nèi)核空間模塊間信息的交流;用戶空間程序?qū)ο到y(tǒng)信息配置,對(duì)虛擬部件的行為進(jìn)行管理。將內(nèi)核空間程序編寫成Linux內(nèi)核能夠卸載的模塊,通過(guò)sonine命令能夠向Linux內(nèi)核融入流量調(diào)控系統(tǒng)功能模塊。
1.2.1 內(nèi)核模塊的實(shí)現(xiàn)
內(nèi)核模塊可實(shí)現(xiàn)兩個(gè)鉤子函數(shù),采用Netfilter框架中的MU_line_ing結(jié)構(gòu)分別將其掛載在 MU_IP_HEW_
BUSEH以及 MU_IP_KIMC_BUSEH 掛載點(diǎn)處。若sonine 將內(nèi)核可卸載模塊融入內(nèi)核,則調(diào)用 init_kores 函數(shù),并且在該函數(shù)內(nèi)調(diào)用 MU_congeum_line 函數(shù),確保在內(nèi)核中融入MU_line_ing 結(jié)構(gòu),最終完成鉤子函數(shù)的掛載。系統(tǒng)用于注冊(cè) MU_IP_HEW_BUSEH 處鉤子函數(shù)的MU_line_ing 結(jié)構(gòu)變量為rx_line_ing,其代碼為:
prome MU_line_ing rx_line_ing={
line: rx_line,
Pf: PF_INET,
linenum: MU_IP_HEW_BUSEH,}
若網(wǎng)絡(luò)數(shù)據(jù)包通過(guò)網(wǎng)絡(luò)接口部件輸入系統(tǒng),并且傳遞到MU_IP_HEW_BUSEH 鉤子時(shí),調(diào)用rx_line 函數(shù)。該函數(shù)按照用戶設(shè)置的帶寬,調(diào)控?cái)?shù)據(jù)包,如果數(shù)據(jù)包處于設(shè)置的帶寬約束內(nèi),則將數(shù)據(jù)包反饋給網(wǎng)絡(luò)協(xié)議棧,繼續(xù)進(jìn)行操作;否則,將數(shù)據(jù)包存儲(chǔ)到接收隊(duì)列中進(jìn)行等待,并設(shè)置接收隊(duì)列的定時(shí)器。當(dāng)定時(shí)器到達(dá)設(shè)置的時(shí)間,則運(yùn)行發(fā)送函數(shù),從等待隊(duì)列中采集數(shù)據(jù)包,具體的實(shí)現(xiàn)過(guò)程圖如圖4所示。
1.2.2 虛擬部件的實(shí)現(xiàn)
用戶通過(guò)虛擬部件同流量調(diào)控系統(tǒng)內(nèi)核模塊進(jìn)行信息交流,進(jìn)而控制流量調(diào)控系統(tǒng)的行為。系統(tǒng)中的虛擬部件主要是虛擬網(wǎng)絡(luò)部件。虛擬網(wǎng)絡(luò)設(shè)備可實(shí)現(xiàn)一些網(wǎng)絡(luò)接口,確保其采用相關(guān)的物理網(wǎng)絡(luò)設(shè)備,完成數(shù)據(jù)包的發(fā)送。Linux系統(tǒng)通過(guò)congeum_qlomu 函數(shù),將net_modle結(jié)構(gòu)變量注冊(cè)入內(nèi)核,完成網(wǎng)絡(luò)部件的添加。net_modle結(jié)構(gòu)中包含較多的成員變量,但是虛擬網(wǎng)絡(luò)部件,僅需要其中的設(shè)備名稱name,函數(shù)指針init和do_ioctl三個(gè)變量。其中,init和do_ioctl指向的函數(shù),分別用于實(shí)現(xiàn)虛擬部件的初始化和設(shè)置。虛擬部件的 net_modle 結(jié)構(gòu)變量定義為:
prome net_modle rlimit_dev={
Name: "rlimit",
init:rlimit_init_dev,}
流量調(diào)控系統(tǒng)通過(guò)虛擬部件確保內(nèi)核模塊以及用戶空間進(jìn)行程序交互,傳輸用戶配置信息,完成系統(tǒng)行為的控制,進(jìn)而實(shí)現(xiàn)網(wǎng)絡(luò)流量的合理調(diào)控。對(duì)待交互的配置信息進(jìn)行封裝處理,構(gòu)成結(jié)構(gòu)體rlimit_ctliMUo,能夠給增強(qiáng)用戶空間程序同內(nèi)核模塊進(jìn)行信息溝通的效率。rlimit_ctliMUo 結(jié)構(gòu)類型的定義為:
prome rlimit_ctlinfo{
_s54ip; /*主機(jī)/子網(wǎng)*/
_s54 mask; /*子網(wǎng)掩碼*/
_s12 portmin; /*主機(jī)/子網(wǎng)的最小端口號(hào)*/
_s12 portmax; /*主機(jī)/子網(wǎng)的最大端口號(hào)*/
int bytes_per_second; /*約束的傳輸速率*/
Int timeout; /*隊(duì)列的最高延遲時(shí)間*/
}
1.2.3 用戶配置工具的實(shí)現(xiàn)
用戶空間配置工具對(duì)流量調(diào)控系統(tǒng)內(nèi)核模塊進(jìn)行配置,進(jìn)而控制系統(tǒng)的行為。用戶空間配置工具是一種用戶空間程序,其調(diào)用ioctl函數(shù)處理虛擬部件,實(shí)現(xiàn)系統(tǒng)內(nèi)核模塊的信息交流。如果采用用戶配置工具向系統(tǒng)融入被控主機(jī),則用戶空間程序會(huì)將該主機(jī)信息塑造成 rlimit_ctliMUo 結(jié)構(gòu),并調(diào)用ioctl函數(shù),通過(guò)do_ioctl指針指向的函數(shù),將rlimit_ctliMUo結(jié)構(gòu)中包含的信息反饋到內(nèi)核空間,并按照該信息在do_ioctl函數(shù)內(nèi)對(duì)系統(tǒng)內(nèi)核模塊進(jìn)行配置。
2 實(shí)驗(yàn)分析
為了驗(yàn)證本文方法的有效性,進(jìn)行相關(guān)的實(shí)驗(yàn)分析如下:
2.1 高速傳輸性能對(duì)比
實(shí)驗(yàn)檢測(cè)在網(wǎng)絡(luò)風(fēng)暴沖擊下限速值較高的情況下,本文方法和貪婪選擇方法對(duì)單個(gè)TCP流進(jìn)行流量調(diào)控的穩(wěn)定性,分別如圖5和圖6所示。
對(duì)比分析圖5、圖6可以看出,在網(wǎng)絡(luò)風(fēng)暴沖擊下,本文方法對(duì)單個(gè)TCP流的調(diào)控效果優(yōu)于貪婪選擇方法,調(diào)整后的網(wǎng)絡(luò)數(shù)據(jù)包傳輸速率曲線較為平滑。
2.2 速率調(diào)整平滑性測(cè)試
實(shí)驗(yàn)檢測(cè)在網(wǎng)絡(luò)風(fēng)暴沖擊下的限速過(guò)程中,網(wǎng)絡(luò)數(shù)據(jù)包傳輸速率上升和下降時(shí),本文方法和貪婪選擇方法調(diào)整網(wǎng)絡(luò)數(shù)據(jù)包傳輸速率時(shí)的調(diào)控效果見圖7、圖8。
分析圖7、圖8能夠看出,相比貪婪選擇方法,本文方法能夠很好地完成網(wǎng)絡(luò)數(shù)據(jù)包傳輸速率的平滑調(diào)控,在網(wǎng)絡(luò)風(fēng)暴沖擊的不利干擾下,能夠克服網(wǎng)絡(luò)數(shù)據(jù)包速率大幅波動(dòng),對(duì)網(wǎng)絡(luò)數(shù)據(jù)包傳輸速率進(jìn)行平穩(wěn)調(diào)控。
2.3 并發(fā)TCP流控制效果對(duì)比
實(shí)驗(yàn)采用網(wǎng)絡(luò)性能檢測(cè)軟件IxChariot檢測(cè)本文方法和貪婪選擇方法,在網(wǎng)絡(luò)風(fēng)暴沖擊下的多個(gè)并發(fā)流下的吞吐量以及響應(yīng)時(shí)間,結(jié)果分別如圖9和圖10所示。
對(duì)比分析圖9和圖10能夠看出,在網(wǎng)絡(luò)風(fēng)暴沖擊下,對(duì)網(wǎng)絡(luò)中多個(gè)并行TCP流進(jìn)行調(diào)控過(guò)程中,本文方法的吞吐量和響應(yīng)時(shí)間都優(yōu)于貪婪選擇方法,控制效果較為平穩(wěn)。
2.4 UDP流調(diào)控效果對(duì)比
實(shí)驗(yàn)采用jHEWf 2.0軟件檢測(cè)本文方法和貪婪選擇方法,對(duì)網(wǎng)絡(luò)風(fēng)暴沖擊下的UDP流進(jìn)行控制的控制效果。jHEWf 2.0軟件可通過(guò)制定的速率發(fā)送UDP報(bào)文,同時(shí)測(cè)量網(wǎng)絡(luò)的吞吐量和抖動(dòng),設(shè)置UDP流的限速為1 500 Kb/s,實(shí)驗(yàn)結(jié)果如表1所示。
分析表1可得,當(dāng)UDP流的發(fā)送速率低于限速時(shí),兩種方法對(duì)UDP流的速率進(jìn)行調(diào)控控制過(guò)程中的傳輸總量、平均帶寬以及抖動(dòng)較為接近;而當(dāng)UDP流的發(fā)送速率高于限速時(shí),本文方法在調(diào)控UDP流的發(fā)送速率過(guò)程中,傳輸總量和平均帶寬都高于貪婪選擇方法,并且本文方法的抖動(dòng)低于貪婪選擇方法,說(shuō)明本文方法的調(diào)控過(guò)程更為穩(wěn)定。
3 結(jié) 論
本文基于 Linux 防火墻的嵌入式網(wǎng)絡(luò)流量控制系統(tǒng),其是基于Linux內(nèi)核Netfilter 框架的流量控制系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)系統(tǒng)可實(shí)現(xiàn)網(wǎng)絡(luò)風(fēng)暴沖擊下的網(wǎng)絡(luò)流量的平穩(wěn)控制,并且具有較高的控制效率和魯棒性。
參考文獻(xiàn)
[1] 張雙雙,王延年.節(jié)點(diǎn)分布不均勻的無(wú)線傳感網(wǎng)絡(luò)低功耗算法[J].西安工程大學(xué)學(xué)報(bào),2015,29(6):720?723.
[2] 周旭峰,楊貴,袁志彬,等.交換機(jī)流量限制技術(shù)及其在智能變電站的應(yīng)用[J].電力系統(tǒng)自動(dòng)化,2014,38(18):114?119.
[3] 鄧榮.基于包絡(luò)特征的網(wǎng)絡(luò)流量預(yù)測(cè)閾值調(diào)控算法[J].科技通報(bào),2015,31(10):67?69.
[4] 劉曉婧,張進(jìn)明,穆志君,等.中壓天然氣流量計(jì)實(shí)流標(biāo)定的氣溫調(diào)控研究[J].科技資訊,2014,12(6):107?108.
[5] 王家琪,呂宏興,周美林,等.過(guò)流調(diào)控型渠道測(cè)流裝置試驗(yàn)研究[J].灌溉排水學(xué)報(bào),2015,34(9):24?27.
[6] 袁敏潔,徐梓曜,江恩慧,等.有效流量研究及應(yīng)用現(xiàn)狀[J].人民黃河,2015,37(6):32?35.
[7] 米子軍.礦山排土場(chǎng)穩(wěn)定性主動(dòng)調(diào)控機(jī)制研究[J].金屬礦山,2014,32(9):1?6.
[8] 劉佳明,張艷軍,宋星原,等.江湖連通方案的最佳引水流量研究:以湖北磁湖為例[J].湖泊科學(xué),2014,26(5):671?681.