一种linux内核定位CPE业务流类型的方法

文档序号:6370942阅读:595来源:国知局
专利名称:一种linux内核定位CPE业务流类型的方法
技术领域
本发明涉及通信领域,尤其涉及ー种Iinux内核定位CPE (客户终端设备)业务流类型的方法。
背景技术
当前,随着市场和技术的变化使得固网运营商正在寻求新的战略转型,传统的通信业务正向信息娱乐、数字化生活领域扩展,IPTV (交互式网络电视)、VOIP (Voice overInternet Protocol,网络电话)以及P2P(peer-to-peer,对等联网)应用等业务种类不断丰富。这使得宽带网络所承载的业务将从传统互联网业务为主逐步向多业务承载方向发展。现有的在基于业务流的数据操作中,人们的认识越来越偏向上层认识。而且由于 操作的专业性,今后的面向普通用户的处理方式也向基于业务流的策略和模板方式普及。以对httpd业务流进行优先保障处理为例,在处理之前需判断出httpd业务流,而一般httpd服务通过业务接ロ即tcp80端ロ来实现,因而传统的对httpd业务流进行优先保障处理的方法如图I所示首先判断当前的业务流的业务接ロ是否为tcp80端ロ,若是,则对其进行高优先级队列处理,否则对其进行默认优先级队列处理。在正常情况下,这种传统的以业务接ロ的类型为依据来判断业务流的类型的判断方式是没有问题的,但是如果用户临时开启了或者选用了其他业务接ロ(如8080端ロ)来实现相同的服务,那么由于最初设置业务接ロ仅为tcp80端ロ,会造成8080端ロ的httpd服务进入默认优先级别队列,当网络流量超过带宽限制时就会因为流量竞争而导致丢包,违背用户的初衷。为了解决此问题,最直接的办法是进行代码修改,増加ー个8080端ロ的判断条件。这确实解决了当前的问题,但是如果用户在之后再次进行修改,或者多个用户均有特殊要求,那这样毎次都要去改动代码来改动业务接ロ类型,不仅操作麻烦,而且容易使得代码混乱。

发明内容
本发明的目的在于提供ー种Iinux内核定位CPE业务流类型的方法,避免每更改一次业务接ロ就要修改一次代码,简化操作。本发明的目的是通过以下技术方案实现的。—种Iinux内核定位CPE业务流类型的方法,包括
预定义各种业务流类型的对应标识;
为套接字结构体struct sock扩展成员变量serviceType,通过setsocketopt设置套接字选项标识当前socket套接字对应的业务流类型;
为数据包结构体struct skb_buff扩展成员变量serviceType,通过套接字结构体成员serviceType标识当前skb数据包对应的服务类型。其中,还包括在当前Skb数据包的服务类型有更改时,重新设置所述套接字结构体struct sock的扩展成员变量serviceType为新的对应的业务流类型标识。其中,还包括在对所述当前skb数据包标识后内核传输层发送该skb数据包。
其中,还包括在应用层,扩展netfilter模块来为网络层和链路层匹配服务类型,对业务流进行后续操作。其中,所述套接字结构体struct sock的扩展成员变量serviceType以及数据包结构体struct skb_buff的扩展成员变量serviceType,均为32位,位定义为:l_12bit用于存储业务流类型标识,13-16bit用于存储建议的优先级别。其中,预定义的各种业务流类型包括ICMP、ICMPV6、DHCP、HTTP、FTP、TFIP、SIP、RTSP, IPTV、VOIP 和 / 或 TR069 业务类 型。与现有技术相比,本发明实施例具有以下有益效果。本发明实施例中,在初始时刻设置一个独立的变量,用以存储默认的业务流类型标识信息,在业务服务过程中为当前的业务流数据包添加默认的业务流类型标识。这样,不管通过哪个业务接口实现,只要明确当前业务流的类型,用户只需将独立变量的值更改为当前的业务流的类型标识即可,为之后的不同业务流处理提供可靠的判断依据,同时增强了代码的清晰性和可控性。


图I是传统的对httpd业务流进行优先保障处理的方法流程图。图2是本发明实施例中Iinux内核定位CPE业务流类型的思路图。图3是本发明实施例中Iinux内核定位CPE业务流类型的方法流程图。图4是本发明实施例中为struct sock结构体扩展的成员变量serviceType结构图。
具体实施例方式本发明的核心思想为如图2所示,建立socket套接字,通过setsocketopt设置业务流类型标识,以表明socket属于哪种服务类型;在发送报文时,当前的skb数据包打上上述业务流类型标识以表明当前的数据包属于哪种服务类型;扩展netfilter模块来匹配服务类型,对业务流进行后续操作。为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图3所示,本实施例中Iinux内核定位CPE业务流类型的方法包括步骤
301、为套接字结构体struct sock扩展一个成员变量serviceType,其结构如图3所
示。serviceType的位具体定义如表I所示
表I
权利要求
1.一种Iinux内核定位CPE业务流类型的方法,其特征在于,该方法包括 预定义各种业务流类型的对应标识; 为套接字结构体struct sock扩展成员变量serviceType,通过setsocketopt设置套接字选项标识当前socket套接字对应的业务流类型; 为数据包结构体struct skb_buff扩展成员变量serviceType,通过套接字结构体成员serviceType标识当前skb数据包对应的服务类型。
2.如权利要求I所述Iinux内核定位CPE业务流类型的方法,其特征在于,该方法还包括在当前skb数据包的服务类型有更改时,重新设置所述套接字结构体struct sock的扩展成员变量serviceType为新的对应的业务流类型标识。
3.如权利要求2所述Iinux内核定位CPE业务流类型的方法,其特征在于,该方法还包括在对所述当前skb数据包标识后内核传输层发送该skb数据包。·
4.如权利要求3所述Iinux内核定位CPE业务流类型的方法,其特征在于,该方法还包括在应用层,扩展netfilter模块来为网络层和链路层匹配服务类型,对业务流进行后续操作。
5.如权利要求I至4任一所述Iinux内核定位CPE业务流类型的方法,其特征在于,所述套接字结构体struct sock的扩展成员变量serviceType以及数据包结构体structskb_buff的扩展成员变量serviceType,均为32位,位定义为l_12bit用于存储业务流类型标识,13-16bit用于存储建议的优先级别。
6.如权利要求I所述Iinux内核定位CPE业务流类型的方法,其特征在于,预定义的各种业务流类型包括ICMP、ICMPV6、DHCP、HTTP、FTP、TFIP、SIP、RTSP, IPTV、VOIP 和 / 或TR069业务类型。
全文摘要
本发明提供了一种linux内核定位CPE业务流类型的方法,包括预定义各种业务流类型的对应标识;为套接字结构体structsock扩展成员变量serviceType,通过setsocketopt设置套接字选项标识当前socket套接字对应的业务流类型;为数据包结构体structskb_buff扩展成员变量serviceType,通过套接字结构体成员serviceType标识当前skb数据包对应的服务类型。本发明通过一个独立的变量存储默认的业务流类型标识信息,再为当前的业务流数据包添加默认的业务流类型标识。这样在需要时,用户只需将独立变量的值更改为当前的业务流的类型标识即可,为之后的不同业务流处理提供可靠的判断依据,同时增强了代码的清晰性和可控性。
文档编号G06F17/30GK102739523SQ20121018242
公开日2012年10月17日 申请日期2012年6月5日 优先权日2012年6月5日
发明者周明明 申请人:深圳市共进电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1