• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Linux 網(wǎng)絡(luò)流量控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2022-07-11 02:43:12張藝耀
      電子技術(shù)與軟件工程 2022年3期
      關(guān)鍵詞:網(wǎng)絡(luò)帶寬內(nèi)網(wǎng)數(shù)據(jù)包

      張藝耀

      (棗莊科技職業(yè)學(xué)院 山東省滕州市 277599)

      隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)上的業(yè)務(wù)流量不斷增長(zhǎng),用戶(hù)對(duì)網(wǎng)絡(luò)服務(wù)質(zhì)量(QoS,Quality of Service)的要求也越來(lái)越高。而傳統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)是為進(jìn)行非實(shí)時(shí)的數(shù)據(jù)傳輸而設(shè)計(jì)的,它提供的是一種“盡力而為”的服務(wù),難以滿(mǎn)足現(xiàn)階段網(wǎng)絡(luò)傳輸業(yè)務(wù)對(duì)服務(wù)質(zhì)量的新要求。流量控制技術(shù)的產(chǎn)生主要為了滿(mǎn)足網(wǎng)絡(luò)QoS 的需求, Linux 作為一個(gè)開(kāi)源的、應(yīng)用廣泛的操作系統(tǒng),很早就提供了對(duì)QoS 的支持,經(jīng)過(guò)多年的不斷發(fā)展與完善,已經(jīng)相當(dāng)?shù)某墒?。TC 是Linux 平臺(tái)下進(jìn)行流量管理的一個(gè)開(kāi)源工具,它包含大量的隊(duì)列管理算法,可以用來(lái)實(shí)現(xiàn)復(fù)雜的流量控制。

      1 Linux的流量控制

      圖1 表示了在Linux 內(nèi)核中進(jìn)行流量控制的流程圖。數(shù)據(jù)流就像左面的箭頭所表示的那樣,經(jīng)過(guò)網(wǎng)卡進(jìn)入內(nèi)核。首先經(jīng)過(guò)的是入口隊(duì)列,根據(jù)隊(duì)列規(guī)則有部分?jǐn)?shù)據(jù)包可能被過(guò)濾器丟棄,判斷一個(gè)數(shù)據(jù)包是否丟棄的方法叫做策略。在數(shù)據(jù)包被內(nèi)核進(jìn)行進(jìn)一步的處理之前先經(jīng)策略處理,丟掉無(wú)需內(nèi)核處理的數(shù)據(jù)包,這樣可以有效的節(jié)省CPU 時(shí)間。當(dāng)數(shù)據(jù)包順利地通過(guò)了策略,如果數(shù)據(jù)包地目的主機(jī)就是發(fā)本機(jī),它就會(huì)先進(jìn)入IP 協(xié)議棧進(jìn)行相應(yīng)的處理,然后提交給目的進(jìn)程;如果該數(shù)據(jù)包地目的主機(jī)不是本機(jī)就需要進(jìn)行進(jìn)一步的轉(zhuǎn)發(fā),直接把該數(shù)據(jù)包發(fā)往出口隊(duì)列。

      圖1:Linux 內(nèi)核中流量管理流程圖

      2 流量控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2.1 設(shè)計(jì)思想

      流量控制系統(tǒng)主要是利用Linux 內(nèi)核的網(wǎng)絡(luò)模塊,通過(guò)隊(duì)列規(guī)則來(lái)分類(lèi)、引導(dǎo)、調(diào)整數(shù)據(jù)流的發(fā)送順序,優(yōu)先發(fā)送優(yōu)先級(jí)較高的網(wǎng)絡(luò)流量,延遲發(fā)送優(yōu)先級(jí)較低的網(wǎng)絡(luò)流量,即使當(dāng)網(wǎng)絡(luò)發(fā)生擁塞時(shí)也能夠保證用戶(hù)的最低帶寬,不會(huì)影響業(yè)務(wù)的正常通信;并且可以為每個(gè)用戶(hù)設(shè)定最高可用帶寬,當(dāng)網(wǎng)絡(luò)的帶寬資源還有剩余的時(shí)候,可共享剩余的帶寬,同時(shí)設(shè)定最高可用帶寬可以抑制異常的網(wǎng)絡(luò)流量。

      2.2 流量控制系統(tǒng)的設(shè)計(jì)

      2.2.1 系統(tǒng)功能

      流量控制系統(tǒng)是通過(guò)該網(wǎng)絡(luò)節(jié)點(diǎn)內(nèi)部的不同的用戶(hù)提供不同的網(wǎng)絡(luò)帶寬,滿(mǎn)足他們對(duì)網(wǎng)絡(luò)QoS要求的流量控制系統(tǒng)。為了達(dá)到以上的要求,流量控制系統(tǒng)應(yīng)該具有如下功能:

      (1)保證每個(gè)用戶(hù)的最小帶寬,當(dāng)網(wǎng)絡(luò)發(fā)生擁塞的時(shí)候,本網(wǎng)絡(luò)節(jié)點(diǎn)仍能夠?yàn)槊總€(gè)用戶(hù)提供最基本保證帶寬,以確保其網(wǎng)絡(luò)傳輸?shù)姆?wù)質(zhì)量。

      (2)帶寬共享,當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)中有剩余的網(wǎng)絡(luò)帶寬時(shí),用戶(hù)的實(shí)際帶寬可以大于他們所申請(qǐng)的網(wǎng)絡(luò)帶寬,實(shí)現(xiàn)網(wǎng)絡(luò)帶寬的共享與互借,通過(guò)這種方式可提高帶寬的利用率。

      (3)限制每個(gè)用戶(hù)的最大帶寬,避免異常流量。為了防止某些用戶(hù)非法利用網(wǎng)絡(luò)帶寬的共享功能,進(jìn)行惡意的網(wǎng)絡(luò)攻擊,給他人的利益造成損害,必需限制每個(gè)用戶(hù)的最大網(wǎng)絡(luò)帶寬。

      (4)雙向的網(wǎng)絡(luò)流量管理,根據(jù)用戶(hù)的不同的需求對(duì)于流入與流出帶寬分別作規(guī)劃,進(jìn)行更精確的帶寬管理,能夠更好的控制網(wǎng)絡(luò)擁塞。

      2.2.2 系統(tǒng)總體設(shè)計(jì)

      本流量控制系統(tǒng)基于Linux 平臺(tái)進(jìn)行開(kāi)發(fā),其核心部分在Linux 流量控制TC 框架的基礎(chǔ)上進(jìn)行研發(fā)。根據(jù)系統(tǒng)要實(shí)現(xiàn)的主要功能,可以將流量控制系統(tǒng)分成三個(gè)主要的模塊:流量控制模塊,指令處理模塊和通信模塊。其整體架構(gòu)如圖2 所示。

      圖2:流量控制系統(tǒng)架構(gòu)圖

      流量控制模塊是整個(gè)流量控制系統(tǒng)的核心部分,是負(fù)責(zé)具體的設(shè)置、刪除、修改某個(gè)用戶(hù)主機(jī)的帶寬。指令處理模塊主要是接收來(lái)自網(wǎng)絡(luò)或者本機(jī)控制臺(tái)的操作指令,解析指令并生成相應(yīng)的QoS 規(guī)則,并傳送到流量控制模塊進(jìn)行相應(yīng)的操作。

      通信模塊主要負(fù)責(zé)完成流量控制系統(tǒng)與其他系統(tǒng)間的通信以及本系統(tǒng)內(nèi)的各個(gè)模塊之間的通信工作。為了規(guī)范各模塊之間以及本系統(tǒng)與其他系統(tǒng)間的通信,該模塊定義了一系列的通信協(xié)議,操作指令的發(fā)送以及操作結(jié)果的返回都是通過(guò)該模塊實(shí)現(xiàn)的

      2.3 流量控制系統(tǒng)的實(shí)現(xiàn)

      2.3.1 關(guān)鍵技術(shù)

      流量控制系統(tǒng)中主要使用了Linux 中的TC(Traffic Control)工具,TC 是用來(lái)進(jìn)行流量控制,流量整形,帶寬共享的一個(gè)網(wǎng)絡(luò)工具,它主要針對(duì)輸出流量進(jìn)行相應(yīng)的操作,支持各種類(lèi)型的網(wǎng)絡(luò)層通信協(xié)議。

      當(dāng)有數(shù)據(jù)流量通過(guò)一臺(tái)有流量控制的功能的主機(jī)時(shí),首先系統(tǒng)通過(guò)事先配置好的過(guò)濾規(guī)則對(duì)數(shù)據(jù)流量進(jìn)行區(qū)分,如可以通過(guò)檢測(cè)數(shù)據(jù)包包頭中的源/目的IP 地址、源/目的端口號(hào)、協(xié)議類(lèi)型等來(lái)對(duì)數(shù)據(jù)包進(jìn)行分類(lèi),然后把分好類(lèi)的數(shù)據(jù)包送入到排隊(duì)規(guī)則的隊(duì)列中,通過(guò)排隊(duì)規(guī)則隊(duì)列的出隊(duì)算法對(duì)數(shù)據(jù)包進(jìn)行調(diào)度,最后把數(shù)據(jù)包送到網(wǎng)卡的出口。

      2.3.2 指令解析模塊

      指令處理模塊用來(lái)接收來(lái)自網(wǎng)絡(luò)或者是控制臺(tái)的發(fā)送過(guò)來(lái)的操作指令,當(dāng)接收到一條指令是接到的指令的長(zhǎng)度,然后驗(yàn)證長(zhǎng)度的合法性,驗(yàn)證接收到的數(shù)據(jù)是否符合預(yù)先制定的協(xié)議,以防止接收到了非法的或不完整的指令。通過(guò)對(duì)指令數(shù)據(jù)解析可以知道指令的類(lèi)型和該指令相關(guān)的數(shù)據(jù)信息,根據(jù)這些內(nèi)容可以把指令放到一個(gè)結(jié)構(gòu)體中,即生成一條QoS 規(guī)則。

      2.3.3 流量控制模塊

      流量控制系統(tǒng)的核心功能是通過(guò)流量控制模塊來(lái)實(shí)現(xiàn)的,它能夠設(shè)定、刪除、修改一臺(tái)內(nèi)網(wǎng)主機(jī)的帶寬限制。對(duì)于這些操作可以通過(guò)網(wǎng)絡(luò)發(fā)送命令的方式進(jìn)行遠(yuǎn)程操作,也可通過(guò)控制臺(tái)的CLI 命令進(jìn)行操作。該模塊的流程圖如圖3所示。

      圖3:流量控制模塊流程圖

      網(wǎng)絡(luò)中的流量是雙向的,對(duì)于入流量和出流量限制,最理想的位置就是“邊緣位置”,所謂“邊緣位置”就是在一個(gè)網(wǎng)絡(luò)中,管理員所能控制的最靠近邊緣的位置,所以要對(duì)一臺(tái)內(nèi)網(wǎng)主機(jī)的如流量做帶寬限制,最理想的地方就是內(nèi)網(wǎng)主機(jī)的網(wǎng)關(guān)。

      2.3.4 規(guī)則查找優(yōu)化

      在Linux 系統(tǒng)中,匹配QoS 規(guī)則默認(rèn)使用的是順序查找算法,它的最好和最壞時(shí)間復(fù)雜度為O(n)。哈希(HASH)查找算法很顯然是一種比較高效的查找算法,最壞時(shí)間復(fù)雜度是O(n),而它的最好時(shí)間復(fù)雜度是O(1)。

      對(duì)當(dāng)前的應(yīng)用主要是想通過(guò)哈希查找算法來(lái)提高查找系統(tǒng)中QoS 規(guī)則的速度,在流量控制系統(tǒng)中的QoS 規(guī)則是通過(guò)IP 地址來(lái)區(qū)分不同分類(lèi)的,所以可以利用IP 地址來(lái)作為哈希函數(shù)的key,把IP 地址經(jīng)過(guò)處理后得到一個(gè)值作為地址。同時(shí)利用鏈地址法來(lái)處理哈希沖突。

      3 系統(tǒng)測(cè)試與結(jié)果分析

      3.1 測(cè)試環(huán)境的搭建

      3.1.1 測(cè)試網(wǎng)絡(luò)結(jié)構(gòu)及配置

      因?yàn)槲覀冃枰獪y(cè)試從內(nèi)網(wǎng)主機(jī)到外網(wǎng)、從外網(wǎng)到內(nèi)網(wǎng)主機(jī)、從內(nèi)網(wǎng)主機(jī)到內(nèi)網(wǎng)主機(jī)等三種情況下的網(wǎng)絡(luò)流量,所以我們至少需要2 臺(tái)內(nèi)網(wǎng)主機(jī),一臺(tái)網(wǎng)關(guān),兩臺(tái)有外網(wǎng)IP 的機(jī)器,測(cè)試環(huán)境的網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。

      圖4:測(cè)試環(huán)境網(wǎng)絡(luò)結(jié)構(gòu)

      各個(gè)機(jī)器的網(wǎng)絡(luò)配置如表1 所示。

      表1:測(cè)試環(huán)境機(jī)器配置

      3.1.2 測(cè)試工具

      本章測(cè)試的主要工具是iperf, iperf 是一款網(wǎng)絡(luò)性能測(cè)試的開(kāi)源工具。它可以測(cè)試最大TCP 和UDP 帶寬性能,真實(shí)載荷下的網(wǎng)絡(luò)質(zhì)量,端到端的網(wǎng)絡(luò)質(zhì)量,還可以測(cè)試一定吞吐率下的丟包、抖動(dòng)。

      3.2 測(cè)試場(chǎng)景與結(jié)果分析

      3.2.1 帶寬限制效果

      (1)測(cè)試目的:測(cè)試一臺(tái)內(nèi)網(wǎng)主機(jī)在有無(wú)帶寬限制時(shí)的出入流量情況

      (2)測(cè)試方法:

      對(duì)于出流量,首先把S 作為服務(wù)端,C1 作為客戶(hù)端,在S 上執(zhí)行以下命令:

      利用流量控制系統(tǒng)將總帶寬設(shè)為200M,C1 的帶寬分別設(shè)定為100M,200M,250M 測(cè)試C1 的出入流量,測(cè)試指令同1,2 步。

      (3)期望結(jié)果:無(wú)限制時(shí)內(nèi)網(wǎng)主機(jī)出入流量的最大值應(yīng)該小于1Gbps,有帶寬限制時(shí),帶寬值應(yīng)該等于設(shè)定的值,但小于總帶寬值。通過(guò)這種方法可以測(cè)試出內(nèi)網(wǎng)主機(jī)出入流量的最大值,網(wǎng)關(guān)的出口帶寬是10Gbps 的。

      (4)結(jié)果分析:無(wú)帶寬限制時(shí),內(nèi)網(wǎng)內(nèi)網(wǎng)的帶寬是1Gbps,800Mbps 應(yīng)該是內(nèi)網(wǎng)主機(jī)出入流量所能達(dá)到的最大的帶寬值。當(dāng)有帶寬限制時(shí),系統(tǒng)的總帶寬設(shè)置為200Mbps,C1設(shè)置的前三個(gè)不同的帶寬值都小于等于總帶寬,所以實(shí)際的帶寬達(dá)到設(shè)定的標(biāo)準(zhǔn)應(yīng)該是沒(méi)有問(wèn)題的;對(duì)于第四個(gè)設(shè)定的帶寬值是250Mbps,這個(gè)帶寬之已經(jīng)大于設(shè)定的總帶寬值,而實(shí)際帶寬是不可能超過(guò)總帶寬的,測(cè)試的結(jié)果也充分證明了這一點(diǎn)。

      3.2.2 帶寬共享

      (1)測(cè)試目的:測(cè)試子類(lèi)是否可以向父類(lèi)“借”帶寬。

      (2)測(cè)試方法:利用流量控制系統(tǒng)將總帶寬設(shè)為50M,C1 的帶寬設(shè)定為40M,最大帶寬為45M。具體的測(cè)試命令如下所示。

      (3) 期望結(jié)果:C1 的帶寬大于40Mbps, 小于45Mbps。

      (4)結(jié)果分析:系統(tǒng)總帶寬為50Mbps,且系統(tǒng)中僅有一個(gè)主機(jī)C1,帶寬設(shè)定為40Mbps,最大帶寬設(shè)為45Mbps,當(dāng)系統(tǒng)滿(mǎn)足了C1 的帶寬40Mbps 后,系統(tǒng)中的帶寬還剩余10Mbps,剩余的這一部分是可以全部“借”給子類(lèi)的,而C1 設(shè)定的最大值為45Mbps,它只需要向父類(lèi)借5Mbps 的帶寬,所以C1 帶寬大于它設(shè)定的帶寬,小于它的最大帶寬。

      3.2.3 分配帶寬大于實(shí)際帶寬

      (1)測(cè)試目的:當(dāng)分配的帶寬大于總帶寬時(shí)的帶寬分配情況。

      (2)測(cè)試方法:利用流量控制系統(tǒng)將總帶寬設(shè)為20M,C1 的帶寬分別設(shè)定為15M,最大帶寬設(shè)為15M,C2的帶寬為20M,最大帶寬為25M,測(cè)試C1,C2 的出入流量情況。具體的測(cè)試命令如下所示。

      對(duì)于出流量,在S1,S2 上分別執(zhí)行以下命令:

      (3)期望結(jié)果:C1 的帶寬為15 /(15 + 20)× 20Mbps= 9Mbps;

      C2 的帶寬為20 /(15 + 20)× 20Mbps = 11Mbps。

      (4)結(jié)果分析:從理論上講,當(dāng)分配的帶寬大于總帶寬時(shí):

      實(shí)際分配到的帶寬 = 分配的帶寬 /(分配的總帶寬)×實(shí)際總帶寬 (1)

      從(公式1)可以看出,每臺(tái)內(nèi)網(wǎng)主機(jī)的實(shí)際帶寬都會(huì)等比例的縮小。本實(shí)驗(yàn)的結(jié)果也充分驗(yàn)證了這一點(diǎn)。

      3.2.4 剩余帶寬與實(shí)際帶寬的關(guān)系

      (1)測(cè)試目的:測(cè)試隨著剩余帶寬的動(dòng)態(tài)變化,實(shí)際帶寬是怎樣變化的。

      (2)測(cè)試方法:利用流量控制系統(tǒng)把總帶寬設(shè)為30M,C1 的帶寬分別設(shè)定為10M,最帶帶寬為15M,C2 的帶寬為20M,最大帶寬為25M,先讓C1 開(kāi)始測(cè)試,10 分鐘后C2 開(kāi)始,持續(xù)20 分鐘后讓C1 停下,C2 繼續(xù)10 分鐘,觀察C1、C2 的出入流量情況。具體的測(cè)試命令如下所示:

      測(cè)試出流量:把S1,S2 作為服務(wù)端,C1,C2 作為客戶(hù)端測(cè)試出流量

      (3)期望結(jié)果:在前10 分鐘,C1 的帶寬為15Mbps;C2 的帶寬為0Mbps。在第10 分鐘到第30 分鐘,C1 的帶寬為10Mbps,C2 的帶寬為20Mbps。在最后10 分鐘,C1 的帶寬為0Mbps,C2 的帶寬為25Mbps。在前10 分鐘,C1 的帶寬為14Mbps;C2 的帶寬為0Mbps。在第10 分鐘到第30分鐘,C1 的帶寬為9Mbps,C2 的帶寬為18Mbps。在最后10 分鐘,C1 的帶寬為0Mbps,C2 的帶寬為23Mbps。

      (4)結(jié)果分析:當(dāng)有剩余帶寬的時(shí)候,子類(lèi)是可以向父類(lèi)“借”帶寬的,所以在前10 分鐘,由于C2 沒(méi)有流量,不占用帶寬,C1 的帶寬為10Mbps,剩余20Mbps 的帶寬,所以C1 可以達(dá)到它的最大帶寬15Mbps。最后10 分鐘的情況與前十分鐘類(lèi)似。中間的20 分鐘,由于系統(tǒng)中沒(méi)有剩余的帶寬,父類(lèi)沒(méi)法向子類(lèi)“借”帶寬,每個(gè)與主機(jī)只能達(dá)到自己設(shè)定的帶寬,沒(méi)法達(dá)到最大帶寬。

      4 結(jié)束語(yǔ)

      流量控制技術(shù)是保證網(wǎng)絡(luò)QoS 的一種有效手段,通過(guò)把一條固定帶寬的物理鏈路分成多條并行的虛擬鏈路,通過(guò)為每一條虛擬鏈路提供的最小保證帶寬,來(lái)保證不同用戶(hù)或業(yè)務(wù)類(lèi)型的網(wǎng)絡(luò)服務(wù)質(zhì)量。本文基于Linux TC 的設(shè)計(jì)了一個(gè)流量控制系統(tǒng),它能夠通過(guò)實(shí)現(xiàn)用戶(hù)自定義的QoS 策略,保證用戶(hù)的最大帶寬、最小帶寬、帶寬共享等,從而提高網(wǎng)絡(luò)帶寬的利用率。通過(guò)對(duì)該系統(tǒng)的功能進(jìn)行測(cè)試,并對(duì)測(cè)試結(jié)果進(jìn)行分析,驗(yàn)證了該系統(tǒng)的流量控制功能。

      猜你喜歡
      網(wǎng)絡(luò)帶寬內(nèi)網(wǎng)數(shù)據(jù)包
      SmartSniff
      如何提升高帶寬用戶(hù)的感知度
      科技傳播(2017年14期)2017-08-22 02:39:36
      企業(yè)內(nèi)網(wǎng)中的數(shù)據(jù)隔離與交換技術(shù)探索
      科技資訊(2017年5期)2017-04-12 15:24:45
      地下車(chē)庫(kù)柱網(wǎng)布置設(shè)計(jì)思路
      山西建筑(2016年20期)2016-11-22 03:10:21
      合理配置QoS改善校園網(wǎng)絡(luò)環(huán)境
      QoS技術(shù)在企業(yè)內(nèi)網(wǎng)實(shí)踐探索
      科技資訊(2016年19期)2016-11-15 08:17:44
      淺析泰州電視臺(tái)超大型高清非編網(wǎng)建設(shè)
      經(jīng)典路由協(xié)議在戰(zhàn)場(chǎng)環(huán)境下的仿真與評(píng)測(cè)
      基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
      視覺(jué)注意的數(shù)據(jù)包優(yōu)先級(jí)排序策略研究
      桦南县| 宁明县| 普定县| 射洪县| 南皮县| 丽水市| 木兰县| 鸡东县| 海盐县| 随州市| 汶上县| 南溪县| 夏津县| 彰化市| 达拉特旗| 忻城县| 浦城县| 和田市| 崇明县| 萨迦县| 怀柔区| 沛县| 利川市| 乌兰察布市| 南部县| 明溪县| 得荣县| 马龙县| 治多县| 科尔| 手机| 永年县| 龙胜| 盐池县| 叶城县| 深泽县| 读书| 曲麻莱县| 长春市| 汝南县| 武邑县|