APP下载

基于DSCP值的多SSID流分类设计

2015-01-16陶智勇

电子设计工程 2015年11期
关键词:应用层字段路由器

蔡 超,陶智勇

(1.武汉邮电科学研究院 湖北 武汉 430074;2.光纤通信技术和网络国家重点实验室 湖北 武汉 430074)

QoS(服务质量)是保护网络的一种安全机制,是用来解决网络阻塞、延迟和掉包等问题的一种通用技术手段。当网络过载甚至拥塞时,QoS能够对重要的业务进行保护,避免延迟或者丢弃,同时保证网络的健康、稳定运行。要实现QoS,首先就得对数据进行分类,将不同的数据打上不同的标签,然后根据标签将这些数据进行处理,根据标签的不同进行队列调度、拥塞管理、流量控制等,以达到QoS的目的[1]。报文上面的分类信息通常被网络上的主机、路由器、交换机等设备赋予,可以按照不同的应用策略或者按照报文内容的不同为报文打上类别信息的印记。路由器、交换机或CMTS则会根据报文所携带的类别信息,可以对各种交通流进行不同优先级别的传输,或者对特定的交通流进行带宽预留,或者适当性的放弃某些报文、或者进行不同的路径选择、或者采取针对性的操作等等。

很多路由器都能开启多个SSID,用户可以设置不同的SSID支持不同的业务,从而避免之间的相互干扰,这就是一个QoS的例子。本文则主要介绍了一种利用IP头部的DSCP值来区分不同SSID的流分类方法,该实验是在带WiFi的Cable Modem和CMTS的环境下实现的,并采用MIB工具进行测试和验证。

1 DSCP值简介

DSCP差分服务代码点 (Differentiated Services Code Point),是 IETF于 1998年 12月发布了 Diff-Serv的 QoS分类标准。它在每个数据包IP头部的服务类别TOS标识字节中,通过TOS不同的编码值,在遵循DiffServ体系的网络中,对包含不同分类信息的报文采取不同的传输服务策略,以达到更好的QoS目的。在RFC2474中重新定义了IPv4的 TOS字段,但大小任然是8位,如图1所示。

图1 TOS字段Fig.1 TOS field

DSCP字段使用了前6比特,后2比特不使用,因此DSCP的值可以为0~63,可以定义64个不同的优先级[2]。由于DSCP占据了TOS字段的高6位,而TOS字段任然是8位,所以它们的关系为TOS=DSCP<<2。TOS字段在Ipv4的数据包里默认值都为0,在SSID的数据包中默认值也都为0,因此可以利用DSCP值来区分不同的SSID。但本次设计并没有利用到DSCP中不同的优先级分类标准,而是通过手动设置不同的DSCP数值,让CMTS直接根据数值的不同区分SSID数据流。

2 SSID的流分类设计

2.1 多SSID

家庭网关组网方式有多种,可以利用无线传输的方式进行家庭内部的组网,通过SSID技术,一个无线局域网能够分成几个需要不同身份进行验证的子网络,任何子网络都需要独立的、相应的身份进行验证,某些没有被授权的用户侵入本网络;采用多SSID技术的另外一个好处是可以实现虚拟AP功能。可以对不同的SSID分配不同的认证方式、访问权限或者其他验证,例如将局域网映射成为不同VLAN,达到对公共热点和家庭内部网络进行隔离的目的。本次试验中,已将带wifi的Cable Modem AP虚拟为了8个SSID,且8个端口名称为ra0到ra7。实现目的就是能够在上层设置他们的DSCP值,给不同的SSID IP数据包做上不同的标签,达到流分类的效果。

2.2 修改DSCP值

要想在上层修改DSCP值,就得有一个WEB前端,本次试验采用了JavaScript语言写了一个简单窗口,使之能够在页面输入DSCP值,如图2所示。然后将输入的DSCP值从应用层传入驱动层,进行数据包的处理。

图2 DSCP输入窗口Fig.2 DSCP entry window

为了能够在应用层和驱动层建立一个联系,让修改的值传入驱动层。于是首先建立了一个名为smc_proc_wifitos的PROC文件。应用层要做的就是将WEB写入的值放入内核已经建立的文件,在应用层代码中是用简单的echo ra%d_dscp=%d>/proc/smc_proc_wifitos实现的。然后在驱动层里面检测smc_proc_wifitos文件的状态,一旦有文件写入时,则说明DSCP值被应用层修改了。此时就可以读取存入的存在/proc/smc_proc_wifitos里面的DSCP值,可以先将其存放在一个数组内[3]。

在Wifi的驱动层所要做的是过滤出所有SSID的IPv4数据包,然后根据 switch (skb->dev->name[3])这条语句使数组内取到的DSCP值与不同SSID数据包对应,再用函数ipv4_change_dsfield(iph,0, tmptos)将 DSCP 值写入 Ipv4数据包,如果取到的DSCP值为零,则不处理对应的IPv4数据包。这样通过wifi的每个SSID的数据包内就携带了自己独有的DSCP值[4]。部分代码如下:

if(skb->protocol==htons(ETH_P_IP)) //检测 Ipv4 数据包

{

struct iphdr*iph=(struct iphdr*)(skb->data);

if(iph!=NULL)

{

if(strlen(skb->dev->name)==4)

{

switch (skb ->dev ->name [3]) //将DSCP值存入对应的接口

{

case'0':

tmptos=smc_ssidtos[0];

break;

…………

3 结果的验证

3.1 CMTS的配置

CMTS 是线缆调制解调器终端系统的英文缩写,是一个位于有线电视网前端的系统设备。为有线电视用户提供数据接入服务。同时可以完成对IP数据包和数据信号的调制、解调、转换和路由功能,又被称为是有线路由器。本实验则使用了CMTS的路由过滤功能,通过配置CMTS的config文件,能够使不同DSCP的数据包在CMTS内走不同的路径[5]。

使用configfileEditor工具对相应的config文件进行配置。首先,在原有的good.cfg上再配置两条UsServiceFlow[24],使上行的UsServiceFlow达到三条,然后配置相应的上行过滤范围 UsPacketClassifier[22],使每条 UsServiceFlow[24]具有不同的TOS值范围,进而使每条不同的UsServiceFlow[24]根据对应的范围走不同的路径。本次试验3条UsServiceFlow和2条DsServiceFlow,一共5条路径,配置后的cfg文件如图3。

图3 配置后的configure文件Fig.3 Configure file after configuration

3.2 MIB的配置

MIB是Management Information Base的英文缩写,中文翻译为“管理信息库”,它也是网络管理数据的一个标准,该标准规定了网络代理设备一定需要保存的数据类型、数据项目、还有每个数据项目中允许的操作。当对这些数据项目进行存取访问时,就可以获取该网关的全部统计内容。然后对多个网关统计内容进行综合分析即可实现初步的网络管理。MIB主要利用于SMNP对代理MIB中的相应对象进行查询,获取其值,实现对对网络设备状态的监视[6]。本次实验则用MIB工具进行检测,首先安装MIB工具,然后安装qos3.mib,在找到节点docsQosServiceFlowPkt,对其Walk一下,如图4所示。

在图中可以看到五条路径,即我们配置的两条DsServiceFlow和三条UsServiceFlow路径,这5条路径正是在CMTS里面配置的5条路径。这说明CMTS和MIB的配置都成功。

图4 MIB的测试结果Fig.4 MIB test results

3.3 MIB测试

通过在WEB网页上修改DSCP值,然后在利用MIB工具,会看到UsServiceFlow走不同的路径。例如:

set DSCP=0x2a则 TOS值就为0xa8,上行数据会走第4条路径,我们会看到第4条路径的数值往上递增;

set DSCP=0x01则TOS值就为 0x04,上行数据就会走第3条路径,我们会看到第3条路径后的数据往上递增。

通过这些测试就说明了能够成功的修改每个SSID的DSCP值,并且CMTS能够识别DSCP值,让其走不同的路径。

3.4 抓包测试

通过在WEB上修改DSCP值即可修改相应SSID的数据包,因此也可以采用 Wireshark抓包软件进行抓包测试,通过抓到的包来看是否与修改的DSCP值相对应。例如:在WEB网页上设置某个SSID的DSCP值为0x2a,然后利用Wireshark在WAN侧进行抓包,找到对应的包打开,就可以看这个数据包的TOS值。如图5所示,可以看到TOS值为0xa8,而 TOS=DSCP<<2,

0xa8=0xa2<<2.所以就可以证明修改的DSCP值生效了。

图5 抓包结果Fig.5 Packet capture results

4 结 论

通过本次试验,证明在路由器[7]的WEB页面上,也能改变通过每个SSID数据包的DSCP值,且CMTS能够成功区分不同的SSID数据包。这符合本次试验的设计初衷,说明这种流分类方式在多SSID路径中是可以实现的,并且这种设计使得流分类的方式很方便简单,利用IP头部的DSCP值也使得后面的流量控制、队列调度、拥塞管理变得容易处理。

[1]方丽,任秀丽,张炎.支持QoS的流分类在多层交换中的实现[J].计算机应用研究,2003(8):145-147.FANG Li,REN Xiu-li,ZHANG Yan.Achieved the support QoS flow classification in multilayer switching[J].Application Research of Computers,2003(8):145-147.

[2]谢希仁.计算机网络[M].5版.北京:电子工业出版社,2008.

[3]王永纲,石江涛,戴雪龙,等.网络包分类算法仿真测试与比较研究[J].中国科学技术大学学报,2004,34(4):400-409.WANG Yong-gang,SHI Jiang-tao,DAI Xue-long,et al.Network packet classification test and simulation of algorithm Comparative Study.[J].University of Science and Technology of China Journal,2004,34(4):400-409.

[4]Stachell S.T,Clifford H.B.J.著,刘隆国 译.Linux IP协议栈源码分析[M].北京:机械工业出版社,2000.

[5]党柱国,刘捷.浅议有线电视CMTS和Cable Modem[J].西部广播电视,2002(09):46-48.DANG Zhu-guo,LIU Jie.Discussion on cable CMTS and cable modem[J].Western Radio and Television,2002(9):46-48.

[6]区海平,寿国础.基于MIB定义的SNMP分析系统及实现[J].计算机应用,2009(1):38-41.QU Hai-ping,SHOU Guo-chu.SNMP analysis system and implementation based on MIB definition[J].Computer Applications,2009(1):38-41.

[7]李忠武,陈丽清.计算机网络路由器的应用研究[J].现代电子技术,2014(8):113-115.LI Zhong-wu,CHEN Li-qing.Application research of computer network router[J].Modern Electronics Technique,2014(8):113-115.

猜你喜欢

应用层字段路由器
图书馆中文图书编目外包数据质量控制分析
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
基于分级保护的OA系统应用层访问控制研究
新一代双向互动电力线通信技术的应用层协议研究
物联网技术在信息机房制冷系统中的应用
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述