利用Linux的流量控制功能进行嵌入式网络程序测试

来源 :硅谷 | 被引量 : 0次 | 上传用户:yi123400
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]介绍常用的网络程序测试的几种方法,并利用linux的流量控制功能搭建一个网络仿真器用以对嵌入式设备的网络功能进行测试,最后对该仿真器的实际仿真效果进行检验。
  [关键词]嵌入式设备 网络仿真 流量控制 tc netem
  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2009)0120053-02
  
  一、引言
  
  随着嵌入式技术发展成熟,各种嵌入式设备由于其自身拥有体积小、功耗低、可靠性好、集成度高等优点,逐渐深入到生产生活中的方方面面,承担着各种重要角色。但由于其应用场合比较特殊,为测试带来了许多新的挑战。对于嵌入式设备,其工作时的网络环境常常和开发时的实验室网络环境相差很远,所以为了对嵌入式设备上网络程序的功能性能以及可靠性等指标进行测试,我们必须采用与普通网络设备测试不同方法。
  
  二、网络应用程序测试方法概述
  
  一般测试网络应用程序的主要过程可以概括成观察应用程序在网络上运行时的执行方式。通常用于测试网络的方法有以下几种:
  (一)利用测试网络
  测试网络是网络应用程序开发时最常用到的方法。开发时经常利用实验室中的电脑和网络设备搭建一个测试环境,有时甚至直接使用实验室的局域网进行一些基本功能的测试验证。但是,通常的情况是网络应用程序能在实验室网络环境中正常的工作,一旦拿到实际的使用的生产网络环境中就容易出错。大多数测试网络无法顾及同实际生产网络相关的问题。
  (二)利用生产网络
  生产网络就是网络应用程序最终工作时所处的网络。测试网络应用程序最精密的方法就是在生产网络环境中实际运行程序,和实际的情况完全一样。但是,这种方法也有其不利的一面。首先,开发人员通常无法接触最终的使用环境,几乎所有的商业网络应用程序都是这样。其次,即使开发人员能够使用最终的生产网络,直接使用生产网络进行测试也是一种不安全的行为。被测程序一旦失控,比如耗尽了所有的带宽影响的别的程序,破坏了其他的有用数据,后果都将是灾难性的。
  (三)利用网络仿真
  折中的方案就是网络仿真器。网络仿真器在一台设备中对整个生产网络建立模型,生产网络中发现的所有问题以及网络的大部分特性都将复制在网络仿真器仿真出来的测试网络环境中。网络仿真的关键是可以对真实的网络行为进行细致的仿真,把实际网络中的问题再现在测试网络中。
  
  如图1所示,网络仿真器通常被安插在被测网络应用程序的客户端与服务器之间。用以模拟实际生产网络中处在客户端与服务器之间的所有网络对数据包产生的影响。例如通信一端在另一个网络,客户端在本地,网络仿真器模拟的就是广域网对数据包的影响;又比如通信的两端在局域网,那么网络仿真器模拟的就是本地局域网。当数据包进入网络仿真器之后,仿真器就会按照实际被仿真的网络的模型按照一定的策略对数据包进行处理。常见的如带宽限制、延时、错误、丢包、重复等等。
  通过对比以上几种网络应用程序测试的方法,可以看出用网络仿真构建的测试环境相对来说有近似度高、成本低、安全性好的优点,非常适合对于嵌入式设备的网络功能进行测试。本文将要介绍一种利用linux内建的流量控制(Traffic Control,TC)功能搭建一个网络仿真平台的方法。
  
  三、Linux的流量控制机制在网络仿真平台中的应用
  
  Linux从内核2.1版本开始尝试支持流量控制(Traffic Control,TC),之后发布的2.2版本内核是第一个支持流量控制的稳定版本。TC成为Linux下的流量控制工具,用户可以通过TC工具包提供的接口控制内核进行流量控制。
  目前的从2.4版本的内核开始,流量控制可以在入口(Ingress)队列和出口(egress)队列进行。
  TC对数据包进入入口和出口队列的控制主要由三个关键部分实现:队列规则(Queue Discipline,qdisc)、类别(Class)、过滤器(Filter)。
  


  如图2,数据包在进入入口队列或出口队列前会由过滤器按照用户给定的筛选方法分类,每一个分类对应一个队列规则。在某一类中的数据包全部按照该队列规则排队等候处理或发送。
  (一)带宽控制的实现
  具体的排队规则分为可分类的和不可分类的两种。不可分类的包括TBF(Token Bucket Filter,令牌桶过滤器)、pfifo_fast(Third Band First In First Out Queue,先进先出队列)、SFQ(Stochastic Fairness Queuing,随机公平队列)。可分类的包括CBQ(Class Based Queuing,基于类别排队)、HTB(Hierarchical Token Bucket,分层令牌桶)、PRIO。
  在进行网络仿真过程中,我们需要对网络的带宽进行控制。在上面介绍的排队规则中可以选择TBF令牌桶过滤器来进行流量整形。
  令牌桶只允许不超过事先设定的速率到来的数据包通过。实际中的桶是一个缓冲器,这个“桶”不断被恒定速率的虚拟数据“令牌”(Token)填充着,到来的数据包只有拿到令牌才可以从桶里发送出去。
  (二)丢包率、时延的仿真
  在2.6.7之后版本的Linux中引入了netem模块,这个模块是Stephen Hemminger在QOS(Quality of Service)和di_serv(Differentiated Services)的基础上开发的工具。Netem是作为TC的一个排队规则(qdisc)来使用的,通过netem的接口可以非常灵活方便地对所有离开特定网络端口的数据分组进行以下几种处理:
  延迟(delay) 按照某种统计模型延迟每一个分组
  丢弃(loss) 按照一定百分比丢弃某些分组
  复制(duplication) 按照一定百分比复制一些相同的分组
  重排序(reordering) 对一组分组中某一个进行延迟以打乱最终接收到的顺序
  综合利用tc和netem提供的这些功能的组合可以对网络的基本参数进行仿真。
  
  四、应用举例
  
  工作中需要对一个车载的移动嵌入式设备的网络功能性能进行测试。实际工作中的设备工作在移动的列车上,通过无线网络与地面中心通信。我们利用一台电脑对无线网络的传输率丢包延时等进行仿真。
  


  实现如上图,用一台装有双网卡的运行Linux的机器作为无线网络的仿真器。具体配置如下:
  车载移动被测设备
  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
  无线网仿真器
  IP address eth0: 10.0.0.1
  IP address eth1: 10.0.1.1
  Netmask: 255.255.255.0
  以下操作都在作为仿真器的电脑上完成,首先打开Linux的路由转发功能:
  # 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
  数据包先经过TBF进行带宽限制处理,再通过netem进行丢包率和时延的处理。这样配置之后带宽被限制在1Mbps,延迟为30ms,平均丢包率20%。
  然后检测一下仿真效果。用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测试丢包率
  0.0-30.3 sec234 KBytes63.3 Kbits/sec0.063 ms 43/206 (21%)
  丢包率平均在21%。
  再用iperf的tcp测试带宽
  0.0-30.2 sec2112 KBytes573 Kbits/sec
  带宽在受到丢包的影响之后为573kbps,在只使用令牌桶的情况下可以达到1Mbps。
  
  五、结束语
  
  本文介绍了一种利用linux的流量控制功能搭建网络仿真平台对嵌入式网络设备进行测试的方法,在实际使用中发现tc参数只能在开始仿真之前静态手动设置好,而不能在使用过程中动态自动调节。我们希望找到一种方法能够在仿真过程中实时调整延迟、丢包等参数,更加逼真的对如基站切换造成的周期性网络性能变化进行仿真。
  
  参考文献:
  [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的网络流量控制机制,2006-08.
  
  作者简介:
  高岚,男,汉,山东泰安,同济大学,电子与信息工程学院,硕士研究生,研究方向:嵌入式系统及应用。
其他文献
[摘要]地理信息系统(GIS,Geographic Information System)是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和分析。GIS技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。这种能力使GIS与其他信息系统相区别,从而使其在城市智能交通管理中起到相对应的实用价值。  [关键词]城市交通管理 系统构架 共
期刊
[摘要]随着电子商务技术的发展,网络交易安全成为电子商务发展的核心和关键问题。基于Web Service的电子商务安全的问题已经成为电子商务顺利发展的重要市场环境条件。在分析基于Web Service的电子商务的主要安全要素的基础上,具体介绍采用目前电子商务领域的几种安全技术来消除电子商务活动中的安全隐患。  [关键词]Web Service 电子商务 安全技术  中图分类号:TP3文献标识码:A
期刊
[摘要]简要分析和介绍计算机网络入侵检测系统的主要类型及其技术,给出一个网络入侵检测系统的技术实现机理。  [关键词]计算机 网络 安全 入侵检测  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120073-01    随着计算机网络规模的爆炸式增长和网络应用的日益深化,安全问题愈发突出,传统的单一安全技术如防火墙、授权与身份认证系统、信息加密等,都是以静态的方式保障
期刊
[摘要]在学习C语言过程中,指针、地址和数组是最富有特色的内容,特别是指针、地址和数组之间相互关系更具有特色。掌握它们之间的相互关系将有助于C语言其他内容的学习,因此学好这部分内容是掌握C语言的关键。主要用图示法阐述指针和地址、指针和数组之间的联系。  [关键词]C语言 指针 地址 数组 图示法  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120049-01    
期刊
[摘要]主要介绍基于ASP.NET应用系统性能优化方面问题的解决方案。用于提高web应用程序的应用效果。  [关键词]ASP.NET应用系统 性能优化   中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120077-01    一个系统的性能是否良好,已经成为系统是否成功的标志之一。下面对基于ASP.NET应用系统性能从四个方面进行探讨。    一、编码级别    编码
期刊
[摘要]在“数字校园”环境下,FTP与其他应用系统整合的关键是用户管理的设计,如何分配用户的权限,是用户管理设计中要考虑的一个重要问题。通过分析学院FTP各类用户的特点,采用基于角色的访问控制理论对用户权限进行分配,实现用户与用户与访问权限的逻辑分离。  [关键词]FTP 用户权限管理 角色访问控制  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120080-01  
期刊
[摘要]首先对界面自动生成的原理进行介绍,然后从界面描述文件、界面组建库设计、界面组建事件监听类、界面自动生成器设计和XML文档复用这五个方面进行设计和介绍。  [关键词]XML 界面自动生成  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120082-01    用户界面是软件系统的重要组成部分,它主要负责接收用户的输入信息并显示程序处理的结果。随着软件系统规模的不
期刊
[摘要]从数据库设计人员的角度出发讨论SQL Server数据库性能优化的问题,非常详细地从数据库的逻辑设计到物理设计,再到数据库查询三个层次详细的描述数据库设计中性能优化的实现。  [关键词]数据库设计 SQL Server 优化  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120079-01    数据库系统是企业整个管理信息系统的核心和基础,它的任务就是把系统
期刊
[摘要]EMSIM是一款用于嵌入式功耗统计的指令集模拟器。结合SA-110的体系结构通过对EMSIM源码的分析,研究EMSIM对SA-110指令集的模拟方法,分析功耗统计算法在EMSIM中是如何实现的。为用软件的方法统计嵌入式系统功耗提供借鉴。  [关键词]EMSIM 嵌入式系统 指令集模拟器 功耗统计  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120030-02
期刊
[摘要]设备是企业赖以生存、发展的物质技术基础,设备使用的好坏直接影响企业的生存和发展,而设备管理是企业管理最重要的管理内容之一,只有通过加强设备维修管理,使其充分发挥效能,不断改善设备技术状态,才能延长设备使用寿命,为企业获取最佳经济效益。就企业设备的维护管理做相关阐述。  [关键词]企业 设备 管理  中图分类号:TP2 文献标识码:A 文章编号:1671-7597(2009)0120111-
期刊