999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用Linux的流量控制功能進(jìn)行嵌入式網(wǎng)絡(luò)程序測(cè)試

2009-03-02 09:33:14
新媒體研究 2009年2期

高 嵐

[摘要]介紹常用的網(wǎng)絡(luò)程序測(cè)試的幾種方法,并利用linux的流量控制功能搭建一個(gè)網(wǎng)絡(luò)仿真器用以對(duì)嵌入式設(shè)備的網(wǎng)絡(luò)功能進(jìn)行測(cè)試,最后對(duì)該仿真器的實(shí)際仿真效果進(jìn)行檢驗(yàn)。

[關(guān)鍵詞]嵌入式設(shè)備 網(wǎng)絡(luò)仿真 流量控制 tc netem

中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2009)0120053-02

一、引言

隨著嵌入式技術(shù)發(fā)展成熟,各種嵌入式設(shè)備由于其自身?yè)碛畜w積小、功耗低、可靠性好、集成度高等優(yōu)點(diǎn),逐漸深入到生產(chǎn)生活中的方方面面,承擔(dān)著各種重要角色。但由于其應(yīng)用場(chǎng)合比較特殊,為測(cè)試帶來了許多新的挑戰(zhàn)。對(duì)于嵌入式設(shè)備,其工作時(shí)的網(wǎng)絡(luò)環(huán)境常常和開發(fā)時(shí)的實(shí)驗(yàn)室網(wǎng)絡(luò)環(huán)境相差很遠(yuǎn),所以為了對(duì)嵌入式設(shè)備上網(wǎng)絡(luò)程序的功能性能以及可靠性等指標(biāo)進(jìn)行測(cè)試,我們必須采用與普通網(wǎng)絡(luò)設(shè)備測(cè)試不同方法。

二、網(wǎng)絡(luò)應(yīng)用程序測(cè)試方法概述

一般測(cè)試網(wǎng)絡(luò)應(yīng)用程序的主要過程可以概括成觀察應(yīng)用程序在網(wǎng)絡(luò)上運(yùn)行時(shí)的執(zhí)行方式。通常用于測(cè)試網(wǎng)絡(luò)的方法有以下幾種:

(一)利用測(cè)試網(wǎng)絡(luò)

測(cè)試網(wǎng)絡(luò)是網(wǎng)絡(luò)應(yīng)用程序開發(fā)時(shí)最常用到的方法。開發(fā)時(shí)經(jīng)常利用實(shí)驗(yàn)室中的電腦和網(wǎng)絡(luò)設(shè)備搭建一個(gè)測(cè)試環(huán)境,有時(shí)甚至直接使用實(shí)驗(yàn)室的局域網(wǎng)進(jìn)行一些基本功能的測(cè)試驗(yàn)證。但是,通常的情況是網(wǎng)絡(luò)應(yīng)用程序能在實(shí)驗(yàn)室網(wǎng)絡(luò)環(huán)境中正常的工作,一旦拿到實(shí)際的使用的生產(chǎn)網(wǎng)絡(luò)環(huán)境中就容易出錯(cuò)。大多數(shù)測(cè)試網(wǎng)絡(luò)無法顧及同實(shí)際生產(chǎn)網(wǎng)絡(luò)相關(guān)的問題。

(二)利用生產(chǎn)網(wǎng)絡(luò)

生產(chǎn)網(wǎng)絡(luò)就是網(wǎng)絡(luò)應(yīng)用程序最終工作時(shí)所處的網(wǎng)絡(luò)。測(cè)試網(wǎng)絡(luò)應(yīng)用程序最精密的方法就是在生產(chǎn)網(wǎng)絡(luò)環(huán)境中實(shí)際運(yùn)行程序,和實(shí)際的情況完全一樣。但是,這種方法也有其不利的一面。首先,開發(fā)人員通常無法接觸最終的使用環(huán)境,幾乎所有的商業(yè)網(wǎng)絡(luò)應(yīng)用程序都是這樣。其次,即使開發(fā)人員能夠使用最終的生產(chǎn)網(wǎng)絡(luò),直接使用生產(chǎn)網(wǎng)絡(luò)進(jìn)行測(cè)試也是一種不安全的行為。被測(cè)程序一旦失控,比如耗盡了所有的帶寬影響的別的程序,破壞了其他的有用數(shù)據(jù),后果都將是災(zāi)難性的。

(三)利用網(wǎng)絡(luò)仿真

折中的方案就是網(wǎng)絡(luò)仿真器。網(wǎng)絡(luò)仿真器在一臺(tái)設(shè)備中對(duì)整個(gè)生產(chǎn)網(wǎng)絡(luò)建立模型,生產(chǎn)網(wǎng)絡(luò)中發(fā)現(xiàn)的所有問題以及網(wǎng)絡(luò)的大部分特性都將復(fù)制在網(wǎng)絡(luò)仿真器仿真出來的測(cè)試網(wǎng)絡(luò)環(huán)境中。網(wǎng)絡(luò)仿真的關(guān)鍵是可以對(duì)真實(shí)的網(wǎng)絡(luò)行為進(jìn)行細(xì)致的仿真,把實(shí)際網(wǎng)絡(luò)中的問題再現(xiàn)在測(cè)試網(wǎng)絡(luò)中。

如圖1所示,網(wǎng)絡(luò)仿真器通常被安插在被測(cè)網(wǎng)絡(luò)應(yīng)用程序的客戶端與服務(wù)器之間。用以模擬實(shí)際生產(chǎn)網(wǎng)絡(luò)中處在客戶端與服務(wù)器之間的所有網(wǎng)絡(luò)對(duì)數(shù)據(jù)包產(chǎn)生的影響。例如通信一端在另一個(gè)網(wǎng)絡(luò),客戶端在本地,網(wǎng)絡(luò)仿真器模擬的就是廣域網(wǎng)對(duì)數(shù)據(jù)包的影響;又比如通信的兩端在局域網(wǎng),那么網(wǎng)絡(luò)仿真器模擬的就是本地局域網(wǎng)。當(dāng)數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò)仿真器之后,仿真器就會(huì)按照實(shí)際被仿真的網(wǎng)絡(luò)的模型按照一定的策略對(duì)數(shù)據(jù)包進(jìn)行處理。常見的如帶寬限制、延時(shí)、錯(cuò)誤、丟包、重復(fù)等等。

通過對(duì)比以上幾種網(wǎng)絡(luò)應(yīng)用程序測(cè)試的方法,可以看出用網(wǎng)絡(luò)仿真構(gòu)建的測(cè)試環(huán)境相對(duì)來說有近似度高、成本低、安全性好的優(yōu)點(diǎn),非常適合對(duì)于嵌入式設(shè)備的網(wǎng)絡(luò)功能進(jìn)行測(cè)試。本文將要介紹一種利用linux內(nèi)建的流量控制(Traffic Control,TC)功能搭建一個(gè)網(wǎng)絡(luò)仿真平臺(tái)的方法。

三、Linux的流量控制機(jī)制在網(wǎng)絡(luò)仿真平臺(tái)中的應(yīng)用

Linux從內(nèi)核2.1版本開始嘗試支持流量控制(Traffic Control,TC),之后發(fā)布的2.2版本內(nèi)核是第一個(gè)支持流量控制的穩(wěn)定版本。TC成為L(zhǎng)inux下的流量控制工具,用戶可以通過TC工具包提供的接口控制內(nèi)核進(jìn)行流量控制。

目前的從2.4版本的內(nèi)核開始,流量控制可以在入口(Ingress)隊(duì)列和出口(egress)隊(duì)列進(jìn)行。

TC對(duì)數(shù)據(jù)包進(jìn)入入口和出口隊(duì)列的控制主要由三個(gè)關(guān)鍵部分實(shí)現(xiàn):隊(duì)列規(guī)則(Queue Discipline,qdisc)、類別(Class)、過濾器(Filter)。

如圖2,數(shù)據(jù)包在進(jìn)入入口隊(duì)列或出口隊(duì)列前會(huì)由過濾器按照用戶給定的篩選方法分類,每一個(gè)分類對(duì)應(yīng)一個(gè)隊(duì)列規(guī)則。在某一類中的數(shù)據(jù)包全部按照該隊(duì)列規(guī)則排隊(duì)等候處理或發(fā)送。

(一)帶寬控制的實(shí)現(xiàn)

具體的排隊(duì)規(guī)則分為可分類的和不可分類的兩種。不可分類的包括TBF(Token Bucket Filter,令牌桶過濾器)、pfifo_fast(Third Band First In First Out Queue,先進(jìn)先出隊(duì)列)、SFQ(Stochastic Fairness Queuing,隨機(jī)公平隊(duì)列)。可分類的包括CBQ(Class Based Queuing,基于類別排隊(duì))、HTB(Hierarchical Token Bucket,分層令牌桶)、PRIO。

在進(jìn)行網(wǎng)絡(luò)仿真過程中,我們需要對(duì)網(wǎng)絡(luò)的帶寬進(jìn)行控制。在上面介紹的排隊(duì)規(guī)則中可以選擇TBF令牌桶過濾器來進(jìn)行流量整形。

令牌桶只允許不超過事先設(shè)定的速率到來的數(shù)據(jù)包通過。實(shí)際中的桶是一個(gè)緩沖器,這個(gè)“桶”不斷被恒定速率的虛擬數(shù)據(jù)“令牌”(Token)填充著,到來的數(shù)據(jù)包只有拿到令牌才可以從桶里發(fā)送出去。

(二)丟包率、時(shí)延的仿真

在2.6.7之后版本的Linux中引入了netem模塊,這個(gè)模塊是Stephen Hemminger在QOS(Quality of Service)和di_serv(Differentiated Services)的基礎(chǔ)上開發(fā)的工具。Netem是作為TC的一個(gè)排隊(duì)規(guī)則(qdisc)來使用的,通過netem的接口可以非常靈活方便地對(duì)所有離開特定網(wǎng)絡(luò)端口的數(shù)據(jù)分組進(jìn)行以下幾種處理:

延遲(delay) 按照某種統(tǒng)計(jì)模型延遲每一個(gè)分組

丟棄(loss) 按照一定百分比丟棄某些分組

復(fù)制(duplication) 按照一定百分比復(fù)制一些相同的分組

重排序(reordering) 對(duì)一組分組中某一個(gè)進(jìn)行延遲以打亂最終接收到的順序

綜合利用tc和netem提供的這些功能的組合可以對(duì)網(wǎng)絡(luò)的基本參數(shù)進(jìn)行仿真。

四、應(yīng)用舉例

工作中需要對(duì)一個(gè)車載的移動(dòng)嵌入式設(shè)備的網(wǎng)絡(luò)功能性能進(jìn)行測(cè)試。實(shí)際工作中的設(shè)備工作在移動(dòng)的列車上,通過無線網(wǎng)絡(luò)與地面中心通信。我們利用一臺(tái)電腦對(duì)無線網(wǎng)絡(luò)的傳輸率丟包延時(shí)等進(jìn)行仿真。

實(shí)現(xiàn)如上圖,用一臺(tái)裝有雙網(wǎng)卡的運(yùn)行Linux的機(jī)器作為無線網(wǎng)絡(luò)的仿真器。具體配置如下:

車載移動(dòng)被測(cè)設(shè)備

IP address eth0: 10.0.1.2

Netmask: 255.255.255.0

Gateway: 10.0.1.1

地面中心

IP address eth0: 10.0.0.2

Netmask: 255.255.255.0

Gateway: 10.0.0.1

無線網(wǎng)仿真器

IP address eth0: 10.0.0.1

IP address eth1: 10.0.1.1

Netmask: 255.255.255.0

以下操作都在作為仿真器的電腦上完成,首先打開Linux的路由轉(zhuǎn)發(fā)功能:

# echo 1>/proc/sys/net/ipv4/ip_forward

再加入兩條路由:

# route add net 10.0.1.0 netmask 255.255.255.0 dev eth0

# route add net 10.0.0.0 netmask 255.255.255.0 dev eth1

下面用tc配置eth0端口的帶寬丟包率等:

# tc qdisc add dev eth0 root handle 1: netem loss 20%

# tc qdisc add dev eth0 parent 1:1 handle 10: delay 30ms

# tc qdisc add dev eth0 parent 10:1 handle 20: tbf rate 1mbit latency 200ms burst 128k

數(shù)據(jù)包先經(jīng)過TBF進(jìn)行帶寬限制處理,再通過netem進(jìn)行丟包率和時(shí)延的處理。這樣配置之后帶寬被限制在1Mbps,延遲為30ms,平均丟包率20%。

然后檢測(cè)一下仿真效果。用ping命令ping 10.0.0.2

--- 10.0.0.2 ping statistics ---

83 packets transmitted, 73 received, 12% packet loss, time 82006ms

rtt min/avg/max/mdev = 31.218/31.744/54.061/2.646 ms

延遲平均在31.744。

利用iperf的upd測(cè)試丟包率

0.0-30.3 sec234 KBytes63.3 Kbits/sec0.063 ms 43/206 (21%)

丟包率平均在21%。

再用iperf的tcp測(cè)試帶寬

0.0-30.2 sec2112 KBytes573 Kbits/sec

帶寬在受到丟包的影響之后為573kbps,在只使用令牌桶的情況下可以達(dá)到1Mbps。

五、結(jié)束語

本文介紹了一種利用linux的流量控制功能搭建網(wǎng)絡(luò)仿真平臺(tái)對(duì)嵌入式網(wǎng)絡(luò)設(shè)備進(jìn)行測(cè)試的方法,在實(shí)際使用中發(fā)現(xiàn)tc參數(shù)只能在開始仿真之前靜態(tài)手動(dòng)設(shè)置好,而不能在使用過程中動(dòng)態(tài)自動(dòng)調(diào)節(jié)。我們希望找到一種方法能夠在仿真過程中實(shí)時(shí)調(diào)整延遲、丟包等參數(shù),更加逼真的對(duì)如基站切換造成的周期性網(wǎng)絡(luò)性能變化進(jìn)行仿真。

參考文獻(xiàn):

[1]Hubert B,Gregory Maxwell,van Mook R.“Linux Advanced Routing & Traffic Control HOWTO”.http://lartc.org/lartc.pdf.2003.

[2]S.Hemminger,“Network Emulation with NetEm”in Proceedings of Linux Conf Au 2005,2005.

[3]NetEm:http://developer.osdl.org/shemminger/netem.

[4]R.Blum,Network Performance Open Source Toolkit:Using Netperf,Tcptrace,NIST Net,and SSFNet(Wiley,2003).

[5]菜文郁、金心宇、張昱,基于Linux的網(wǎng)絡(luò)流量控制機(jī)制,2006-08.

作者簡(jiǎn)介:

高嵐,男,漢,山東泰安,同濟(jì)大學(xué),電子與信息工程學(xué)院,碩士研究生,研究方向:嵌入式系統(tǒng)及應(yīng)用。

主站蜘蛛池模板: 亚洲一区二区日韩欧美gif| 色欲综合久久中文字幕网| 日韩精品一区二区三区大桥未久| 久久一本精品久久久ー99| 久久www视频| 国产日韩欧美成人| 亚洲大尺度在线| 亚洲香蕉在线| 亚洲欧美成人网| 九九热精品免费视频| 久99久热只有精品国产15| 久久中文字幕不卡一二区| 黄色在线不卡| 欧美天天干| 欧美在线导航| 亚洲a级在线观看| 久久久波多野结衣av一区二区| 欧美啪啪网| 亚洲综合日韩精品| 精品国产福利在线| 亚洲另类色| 日本影院一区| 国产成人艳妇AA视频在线| 国产成年女人特黄特色毛片免| 三级毛片在线播放| 欧美日韩一区二区三区四区在线观看| 亚洲人成影院午夜网站| 亚洲欧洲自拍拍偷午夜色| 国产91熟女高潮一区二区| 91精品啪在线观看国产60岁| 就去吻亚洲精品国产欧美| a免费毛片在线播放| 成人一级黄色毛片| 91免费在线看| 亚洲色图在线观看| 欧美成人午夜在线全部免费| 丝袜无码一区二区三区| 她的性爱视频| 久久久受www免费人成| 日韩色图区| 国产精品人成在线播放| 亚洲欧美激情小说另类| 热伊人99re久久精品最新地| 久久黄色一级视频| 人妖无码第一页| 毛片视频网址| 九九这里只有精品视频| 欧美精品aⅴ在线视频| 黄片一区二区三区| 国产欧美日韩18| 久久黄色毛片| 毛片一区二区在线看| 伊人狠狠丁香婷婷综合色| 亚洲国产天堂久久综合| 国产91小视频| 少妇高潮惨叫久久久久久| 国产91在线|中文| 午夜福利在线观看成人| 麻豆国产原创视频在线播放| 欧美日韩成人| 欧美一级99在线观看国产| 国产18页| 精品久久久久久久久久久| 欧美日韩一区二区在线播放| 国内精品九九久久久精品| 午夜a视频| 国产男女免费完整版视频| 无码中文字幕精品推荐| 欧美成人区| 在线高清亚洲精品二区| 青青草国产精品久久久久| 国产一级视频久久| 内射人妻无码色AV天堂| 亚洲欧美极品| 在线无码九区| 国产性生大片免费观看性欧美| 日本成人一区| 色有码无码视频| 本亚洲精品网站| 亚洲一级毛片在线观| 69免费在线视频| 亚洲一级色|