专利名称:一种Linux网络架构下的网络应用服务质量保障方法
技术领域:
本发明涉及互联网的网络应用服务质量保障领域,特别涉及Linux网络架构下的网络应用服务质量保障方法,该方法是Linux系统Netfilter框架下基于Connection Tracking技术的网络数据传输的服务质量保障的补充。
背景技术:
电信运营商在提供hternet接入的同时,越来越多地提供有IPTV,VoIP等对服务质量要求较高的视频和语音业务。这些业务数据的传输和用户普通的浏览网页,文件下载等数据的传输,需要竞争有限的网络资源。家庭接入终端作为传输过程中最接近用户的一个网络节点,它对这些业务数据的服务质量保障的好坏,直接影响到用户的体验。家庭网关中的QoS功能,通常只能通过对各种应用的数据包分类,在有限的带宽下做差别传输处理。 它可以优先传输高服务质量要求的应用的数据包,在带宽不足的情况下,丢弃其它应用的数据包。在家庭网关中使用最多的是Linux操作系统,Linux系统使用Netfilter框架来实现NAT和防火墙等网关核心功能,netfilter主要采用连接跟踪(Connection Tracking), 包过滤(Packet Filtering)、地址转换、包处理(Packet Mangling) 4种关键技术,而 Netfilter的关键技术是连接跟踪(Connection Tracking),连接跟踪是包过滤、地址转换的基础,它作为一个独立的模块运行。采用连接跟踪技术在协议栈低层截取数据包,将当前数据包及其状态信息与历史数据包及其状态信息进行比较,从而得到当前数据包的控制信息,根据这些信息决定对网络数据包的操作,达到保护网络的目的。当下层网络接收到初始化连接同步(Synchronize,SYN)包,将被netfilter规则库检查。该数据包将在规则链中依次序进行比较。如果该包应被丢弃,发送一个复位(Reset,RST)包到远端主机,否则连接接收。这次连接的信息将被保存在连接跟踪信息表中,并表明该数据包所应有的状态。这个连接跟踪信息表位于内核模式下,其后的网络包就将与此连接跟踪信息表中的内容进行比较,根据信息表中的信息来决定该数据包的操作。因为数据包首先是与连接跟踪信息表进行比较,只有SYN包才与规则库进行比较,数据包与连接跟踪信息表的比较都是在内核模式下进行的,所以速度很快。连接跟踪技术是在协议栈低层截取数据包,将当前数据包及其状态信息与历史数据包及其状态信息进行比较,从而得到当前数据包的控制信息,根据这些信息决定对网络数据包的操作,达到地址转换和保护网络等目的,可以说连接跟踪是地址转换和包过滤的基础。连接跟踪信息表使用哈希表记录历史数据包及其状态信息,表项的大小受限于设备的物理内存大小,同时考虑查表的效率,表项的大小不可能太大,普通家庭网关的最大连接跟踪数通常设置为1000左右。显然1000个条目在很多情况下无法记录全部连接,在用户使用P2P软件下载文件时,会并发大量的连接,当1000个条目被用完后,为了可以让后来的数据能够正常传输,就需要根据连接建立的先后和连接状态释放部分条目,用来记录新的连接。
在释放连接跟踪条目的时候,如果记录IPTV,VoIP等应用的数据包的连接跟踪释放掉了,从WAN到客户端的数据流就会中断,直到客户端重新连接,业务才能恢复。
发明内容
本发明的发明目的是提供一种Linux网络架构下的网络应用服务质量保障方法, 以保证客户感兴趣的链接在连接跟踪信息表中不被释放,以补充netfilter规则库检查。本发明为了实现其发明目的所采用的技术方案是一种Linux网络架构下的网络应用服务质量保障方法,包括以下步骤
步骤A 在内核空间中设置需要保障的数据流的特征库,并对所述的特征库进行维护, 将需要保障的数据流的特征保存到所述的特征库中;
步骤B:接收数据,接收一个新的链接的第一个数据包时,解析所述的数据包,并将解析出来该数据包的特征与所述的特征库相匹配,如果匹配,在连接跟踪信息表中增加该数据包的条目,并标注为高优先级;
步骤C 当连接跟踪信息表满时,释放连接跟踪信息表中的一些没有标注为高优先级的条目。本发明由于用户可以将需要保障的数据流的特征保存在内存中的特征库里,在新建链接时,当解析数据包后可以优先建立在特征库保存有特征的数据流的链接,在释放连接时防止释放这些链接。下面结合附图对本发明进行详细描述。
附图1为本发明流程图。附图2为本发明数据流特征库的建立过程流程图。附图3为本发明新建连接跟踪时增加的优先级标记处理过程流程图。附图4为本发明释放连接跟踪时的优先级判断处理过程流程图。
具体实施例方式如图1所示,本实施例是一种Linux网络架构下的网络应用服务质量保障方法,包括以下步骤
步骤A 在内核空间中设置需要保障的数据流的特征库,并对特征库进行维护,将需要保障的数据流的特征保存到特征库中。特征库的特征包括数据包的源IP地址,目的IP地址,源端口,目的端口中一项或多项。数据流特征库的建立过程如图2所示,包括
通过用户管理接口配置数据流特征,用户配置的特征信息包括数据包的源IP地址,目的IP地址,源端口,目的端口中一项或多项,这些信息会保存到设备的flash存储当中,掉电不会被丢失。用户配置后和系统启动时,会把这些特征信息传递到内核空间,加到内核空间中的数据流特征库。内核模块nf_conntrack_sip,nf_conntrack_rtsp等处理对应的协议报文,解析出该报文控制的数据流的特征,并将特征信息增加到数据流特征库中。这些内核模块在解析到数据流的特征时,通常也会增加连接跟踪条目用来打开这些数据流对应的端口,SIP或 RTSP协议中会包含所控制的数据流的端口号,IP地址等,那么对应的端口号,和IP地址就会做为一条特征增加到特征库,这时候增加的连接跟踪条目也需要标志为高优先级。数据流特征库位于Linux内核空间,连接跟踪的处理过程可以快速访问到该特征库。在需要保障的数据流不是太多的情况下,该特征库可以使用简单的线性链表结构,如果对允许保障的数据流数量没有做限制,数量可能比较多时,可以选用哈希表结构,否则在建立连接跟踪时,查表需要耗费较多的时间。步骤B 接收数据,接收一个新的链接的第一个数据包时,解析所述的数据包,并将解析出来该数据包的特征与所述的特征库相匹配,如果匹配,在连接跟踪信息表中增加该数据包的条目,并标注为高优先级。如图3所示,新建连接跟踪时增加的优先级标记处理过程,包括
新建连接跟踪,接收一个新的链接的第一个数据包时,解析所述的数据包,当协议栈接收到新的数据包,在连接跟踪表里没有查找到该数据包特征的历史记录时,需要增加一个新的连接跟踪记录。数据包和特征库匹配,数据包的源IP地址,目的IP地址,源端口,目的端口等和数据流特征库做比较。标记为高优先级,当数据包的源IP地址,目的IP地址,源端口,目的端口等和特征库的任一记录一致时,该连接跟踪记录为高优先级。步骤C:当连接跟踪信息表满时,释放连接跟踪信息表中的一些没有标注为高优先级的条目。如图4所示,释放连接跟踪时的优先级判断处理过程,包括
释放连接跟踪条目,当需要新增连接跟踪条目,但连接跟踪条目已经达到最大值的情况下,需要先释放一个连接跟踪条目。判断优先级,释放连接跟踪条目前,需要判断该连接跟踪的优先级。这区别于自动老化的条目被释放的处理,自动老化的条目在本发明中还是不需要检查连接跟踪的优先级的。选择下一个条目,当前条目为高优先级时,则选择下一个条目,重新执行判断优先级的步骤。释放连接跟踪,当连接跟踪条目为非高优先级时,可以释放该连接跟踪。
权利要求
1.一种Linux网络架构下的网络应用服务质量保障方法,其特征在于包括以下步骤步骤A 在内核空间中设置需要保障的数据流的特征库,并对所述的特征库进行维护, 将需要保障的数据流的特征保存到所述的特征库中;步骤B 接收数据,接收一个新的链接的第一个数据包时,解析所述的数据包,并将解析出来该数据包的特征与所述的特征库相匹配,如果匹配,在连接跟踪信息表中增加该数据包的条目,并标注为高优先级;步骤C 当连接跟踪信息表满时,释放连接跟踪信息表中的一些没有标注为高优先级的条目。
2.根据权利要求1所述的一种Linux网络架构下的网络应用服务质量保障方法,其特征在于所述的特征库的特征包括数据包的源IP地址,目的IP地址,源端口,目的端口中一项或多项。
3.根据权利要求2所述的一种Linux网络架构下的网络应用服务质量保障方法,其特征在于对所述的特征库进行维护包括用户通过用户管理接口配置数据流特征和内核模块处理对应的协议报文,解析出该报文控制的数据流的特征,并将特征信息增加到所述的特征库中。
4.根据权利要求3所述的一种Linux网络架构下的网络应用服务质量保障方法,其特征在于所述的内核模块包括nf_conntrack_sip ^P nf_conntrack_rtsp模块。
5.根据权利要求3所述的一种Linux网络架构下的网络应用服务质量保障方法,其特征在于所述的特征库使用线性链表结构。
全文摘要
一种Linux网络架构下的网络应用服务质量保障方法,包括以下步骤建立需要保障的数据流的特征库,解析数据包后和释放连接将该连接的特征与特征匹配保留高优先级的,释放低优先级的。本发明由于用户可以将需要保障的数据流的特征保存在内存中的特征库里,在新建链接时,当解析数据包后可以优先建立在特征库保存有特征的数据流的链接,在释放连接时防止释放这些链接。
文档编号H04L29/06GK102368769SQ201110314649
公开日2012年3月7日 申请日期2011年10月17日 优先权日2011年10月17日
发明者杨志伟, 汪澜, 王志波, 王明贵 申请人:深圳市共进电子股份有限公司