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)用。

主站蜘蛛池模板: 国产成人夜色91| 久久毛片免费基地| 国产欧美日韩va另类在线播放| 露脸国产精品自产在线播| 中文字幕在线视频免费| 首页亚洲国产丝袜长腿综合| 亚洲欧美日韩中文字幕在线| 国产网站黄| 伦伦影院精品一区| 亚洲日韩精品综合在线一区二区| 97在线碰| 国产中文一区a级毛片视频| 亚洲日韩Av中文字幕无码| 美女潮喷出白浆在线观看视频| 暴力调教一区二区三区| 99久久精品无码专区免费| 精品91自产拍在线| 国内精品手机在线观看视频| 中文字幕啪啪| 亚洲国产综合精品一区| 伊人无码视屏| 国产情侣一区二区三区| 制服丝袜 91视频| 91精品国产自产在线老师啪l| 午夜性爽视频男人的天堂| 国产一在线| yy6080理论大片一级久久| 国产免费精彩视频| 动漫精品中文字幕无码| av天堂最新版在线| 欧美国产日韩另类| 午夜丁香婷婷| 亚洲综合第一区| 日韩A级毛片一区二区三区| 亚洲精品在线影院| 久久a毛片| 欧美日韩动态图| 人人爽人人爽人人片| 国产精品久久自在自线观看| 国产精品免费p区| 婷婷色丁香综合激情| 欧美精品在线免费| 亚洲综合色区在线播放2019| 91成人在线免费观看| 无码内射中文字幕岛国片| 亚洲AⅤ综合在线欧美一区| 国产91在线|日本| 91免费观看视频| 日本福利视频网站| 亚洲日韩高清在线亚洲专区| 97视频在线观看免费视频| 99热6这里只有精品| 九九热免费在线视频| 成人韩免费网站| 日韩欧美一区在线观看| 精品在线免费播放| 欧美另类第一页| 亚洲人成高清| 欧洲亚洲欧美国产日本高清| 国产v精品成人免费视频71pao| 国产精品99r8在线观看| 国产不卡一级毛片视频| 人妻21p大胆| 亚洲欧美日韩天堂| 色综合久久88| 日本黄色a视频| 中文无码精品A∨在线观看不卡 | 青青青国产视频| 人妻无码中文字幕第一区| 2020国产精品视频| 国产在线精彩视频二区| 天堂在线www网亚洲| 国产精品亚洲а∨天堂免下载| 日韩国产另类| 中文字幕无线码一区| 久久99精品久久久久久不卡| 久无码久无码av无码| 欧美日本激情| 欧美国产日产一区二区| 国产无码高清视频不卡| 99热这里都是国产精品| 国产麻豆福利av在线播放|