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机制,保证多媒体业务的实时传输。
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机制,保证多媒体业务的实时传输。
- 一种基于OPNET的小型网络仿真及分析(04-08)
- APOX软件在A+B频段无线网络规划中的应用(06-26)
- 基于GUI的跳频OFDM系统仿真设计(03-03)
- 基于CPLD的RS-232串口通信实现(04-23)
- 2.5 Gbps收发器中1∶2解复用电路的设计(09-17)
- 填补网络 SoC 设计前端与后端验证的差距(09-19)