微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > Linux下多媒体业务差分IPv6测试平台的设计与实现

Linux下多媒体业务差分IPv6测试平台的设计与实现

时间:08-02 来源:互联网 点击:
移动通信给人们带来了十分方便的服务,无线局域网作为一种移动接入Internet的方法,逐渐成为研究的热门课题。但是,由于应用日益广泛的多媒体业务数据流量比较大,而无线带宽有限,同时IP 网络基本上是采用点到点尽力型(BestEffort) 服务方式,所以很难有效满足实时多媒体业务的服务质量(Quality of Service)要求。为保证WLAN中多媒体业务的实时传输,需要进行QoS差分,给多媒体业务提供不同服务质量选择。目前,关于多媒体QoS保证的研究普遍采用软件仿真来完成,缺乏实际网络测试。为了验证各种差分算法的可行性,我们开发了一个实时多媒体业务开放式试验平台,实验测试多媒体业务QoS保证调度算法,包括我们自己提出的调度算法。  

IPv6扩大了IPv4地址空间,彻底解决了IPv4的地址空间耗尽和路由表爆炸等问题,并且在安全性、移动性以及QoS等方面提供了强有力的支持,而且, 更加合理的IPv6协议包头设计使得路由器在处理数据包时更加快捷。Linux操作系统以其源代码开放、性能高和稳定可靠等优点得到了日益广泛的应用,越来越多的科研项目利用Linux系统作为实验的软件平台。因此,测试平台选择了在IPv6 网络环境下使用Linux操作系统来实现。  

IPv6网络环境和L inux实现机制  

IPv6对IP4的改进  

IPv6继承了IPv4的优点,摒弃了它的缺点。IPv6与IPv4不兼容,但同所有TCP / IP 协议簇中的协议兼容,所以IPv6完全可以取代IPv4。相对于IPv4, IPv6 最大的优点是有足够的地址空间。IPv6的地址是128位,大大增加了可用的地址空间,甚至以后每台家电或者手机都分配一个IP地址都绰绰有余。而且, IPv6 的自动配置地址的功能使得用户配置网络非常简单。  

相对于IPv4, IPv6简化了包头格式,包头有8个字段,总长固定为40字节;由于包头长度统一,因此不再需要包头长度字段,并且去除了IPv4 中一些其他字段,可以节省大量网络路由器资源。此外, IPv6 提供了可扩展协议( ExtensibleProtocol) ,设计更为灵活,去掉选项字段,引入“下一头标”(Next Header)指示IPv6 报头之后的第一个扩展头的类型。  

IPv6扩展头也必须携带一个Next Header字段。这样,协议头的结构像一个链表一样可以不断扩展,所以很容易加入新的特性,加强选择功能。  
Linux 2. 2以上内核版本,Windows XP Service Pack 1和Windows Server 2003等操作系统都提供对IPv6的支持。  

Linux的Netfilter钩子函数  

NetFilter是Linux 2. 4内核实现数据包过滤、数据包处理等的功能框架。NetFilter提供了一个抽象、通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统。Netfilter框架包含以下三部分:  

1) 钩子(Hook) 。Netfiter为IPv6协议定义了5个钩子函数(如表1所示) ,这些钩子函数在数据包流过协议栈的几个关键点被调用。在这几个点中,协议栈将把数据包及钩子函数标号作为参数调用Netfilter的框架。  

2) ip tables。内核模块可以对一个或多个钩子进行注册,实现挂接,当某个数据包被传递给Netfilter框架时,内核检测是否有模块对该协议和钩子函数进行了注册。若注册了,则调用该模块注册的回调函数,检查、修改、丢弃该数据包并指示Netfilter将该数据包传入用户空间的队列。  

3) 用户空间。排队的数据包被传递给用户空间异步地进行处理。一个用户进程能检查、修改数据包,甚至可以重新将该数据包通过离开内核的同一个钩子函数注入内核。  

Netfilter实现流程如图1所示。图示指明了Netfilter 5个钩子函数挂载点在Linux内核协议栈中的位置,箭头标明了IP包在包含Netfilter框架的IP层的流向。IP包从最左端进入系统经过校验和版本检查后经过第一个挂载点, 交给NF_IP6_PRE_ROUTING注册的钩子函数进行处理;经过路由选择,决定该数据包需要转发还是发给本机;若该数据包是发给本机的,则经过NF_ IP6_LOCAL_ IN注册的钩子函数处理以后传递给上层协议; 若需要转发,则转至NF_ IP6_FORWARD注册的钩子函数进行处理;所有需要发送到网络的数据包,无论是本机发出的还是转发的,都要经过最后一个钩子函数NF_IP6_POST_ROUTING处理以后,才能发送到网络上。本地网络层以上产生的数据包通过NF_ IP6_LOCAL _OUT注册的钩子函数处理后,才可以进行路由选择,然后由NF_ IP6_POST_ROUTING处的钩子函数处理后发送到网络上。   

  
  
根据所需要处理的数据包的不同特点,选择合适的挂载点,加入相应的回调处理函数,就可以实现对网络数据包的截获和各种控制。本文测试平台使用Netfilter在NF_ IP6_POST_ROUTING挂载点截获所有网络数据包对其进行调度管理,实现差分QoS机制,保证多媒体业务的实时传输。
  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top