一种流表规则生成过程的跟踪方法与流程

文档序号:15394654发布日期:2018-09-08 01:53阅读:230来源:国知局

本发明涉及通信网络技术领域,尤其涉及一种流表规则生成过程的跟踪方法。



背景技术:

软件定义网络(softwaredefinednetwork,简称sdn)是网络虚拟化的一种实现方式,其核心技术openflow协议是通过将网络设备控制面和数据面进行分离来实现网络量的灵活控制;其中,控制面用于控制报文的转发策略,数据面用于转发报文。数据面的openflow交换机内部维护一张openflow流表,每张流表由多个流表项组成,每条流表项就是一个转发规则。

目前,云计算网络普遍采用sdn(softwaredefinednetwork,简称sdn)技术完成。如图1所示,是现有技术中sdn云网络的结构示意图。当报文进入虚拟交换机后,虚拟交换机查询其内部的openflow流表,若在openflow流表中查询到匹配的流表项,则执行这条流表项所规定的指令;若虚拟交换机内部没有匹配的流表项,虚拟交换机将该报文转发给控制面的sdn控制器,进而sdn控制器根据vpc(virtualprivatecloud,简称vpc)组网逻辑计算出一条新的流表项来指示虚拟交换机如何处理该报文,并将这条新的流表项下发给虚拟交换机;其中,vpc组网逻辑是sdn云网络中云主机在云内的组网逻辑。

由于现有的openflow流表是基于sdn控制器的代码处理过程以及vpc组网逻辑产生,也就是说,vpc组网逻辑被集中在sdn控制器上,并且通过openflow流表中流表项的转发规则反向推算代码处理和vpc组网逻辑非常困难,因而运维人员无法通过查看openflow流表来分析出sdn云网络中vpc组网逻辑是否正确,开发调试人员也无法通过openflow流表准确定位sdn控制器下发流表项的代码分支位置,这会导致sdn云网络的运维和调试效率低下。



技术实现要素:

针对上述问题,本发明的一种流表规则生成过程的跟踪方法能够准确定位业务逻辑代码的位置以及跟踪vpc组网逻辑,可有效提高sdn云网络的运维效率和调试效率。

为解决上述技术问题,本发明的一种流表规则生成过程的跟踪方法,所述跟踪方法基于openflow协议的sdn控制器,所述跟踪方法包括如下步骤:

在接收到虚拟交换机发送的报文时,根据所述报文携带的mac地址信息确定配置标识和至少一个功能模块;所述功模块用于对所述报文执行业务逻辑处理,每个功能模块携带唯一的功能标识,每个功能模块包括至少一条业务逻辑代码,每条业务逻辑代码携带有代码标识;

当任一所述功能模块开始对所述报文执行业务逻辑处理时,创建一个与所述报文对应的cookie字段,并向所述cookie字段中标记对应的功能标识和所述配置标识;

当任一所述功能模块对所述报文执行完业务逻辑处理时,按照其业务逻辑代码的运行顺序依次向所述cookie字段标记对应的代码标识;

当所述至少一个功能模块对所述报文完成业务逻辑处理时,根据预设的vpc组网逻辑生成新的流表项,并按照所述至少一个功能模块的执行顺次将标记后的cookie字段依次填充至所述流表项中;

将填充后的流表项发送至所述虚拟交换机进行存储,使得通过查询所述填充后流表项的cookie字段实现代码逻辑和vpc组网逻辑的跟踪。

与现有技术相比,本发明的流表规则生成过程的跟踪方法通过对sdn控制器预设不同的功能模块,使得各个功能模块携带唯一的功能标识,以及各个功能模块中业务逻辑代码携带代码标识,使得在对报文执行业务逻辑处理时,能够对其业务逻辑处理过程进行标记,由此实现流表规则生成过程的跟踪,进而使得运维人员或开发人员通过提取并查询流表项中的cookie字段,就可以跟踪分析vpc组网逻辑以及准确定位业务逻辑代码的位置,提升流表规则的分析效率,进而提高sdn云网络的运维效率和调试效率。

作为上述方案的改进,所述sdn控制器中预设有vpc组网逻辑数据库,所述vpc组网逻辑数据库存储有mac地址信息与源云主机配置标识及目标云主机配置标识之间的映射表,所述源云主机配置标识与源云主机的配置信息具有对应关系,所述目标云主机配置标识与目标云主机的配置信息具有对应关系;

根据所述报文携带的mac地址信息确定配置标识,包括如下步骤:

将所述mac地址信息在所述vpc组网逻辑数据库中进行查询匹配;

在查询到所述mac地址信息的情况下,从所述映射表中获取对应的源云主机配置标识及目标云主机配置标识。

作为上述方案的改进,所述sdn控制器中预设有哈希数据表;所述哈希数据表以所述代码标识为关键字值,每个关键字值与一个代码语义及代码行号具有映射关系。

作为上述方案的改进,通过查询所述填充后流表项的cookie字段实现代码逻辑跟踪,包括如下步骤:

向所述虚拟交换机发送流表项获取请求,使得所述虚拟交换机根据所述流表项获取请求返回对应的流表项;所述流表项获取请求经所述sdn控制器的api接口输入;

提取所述对应的流表项中的cookie字段;

根据提取的cookie字段中功能标识确定对应的功能模块;

根据提取的cookie字段中的代码标识从所述哈希数据表中索引对应的代码语义和代码行号,实现代码逻辑跟踪定位。

作为上述方案的改进,通过查询所述填充后流表项的cookie字段实现vpc组网逻辑的跟踪,包括如下步骤:

在提取所述对应的流表项中的cookie字段之后,根据提取的cookie字段中的源云主机配置标识在所述vpc组网逻辑数据库中查询对应源云主机的配置信息,以及根据目标云主机配置标识在所述vpc组网逻辑数据库中查询对应目标云主机的配置信息,实现vpc组网逻辑的跟踪。

作为上述方案的改进,在接收到虚拟交换机发送的报文之前,还包括如下步骤:

所述虚拟机在查询到所述报文与本地openflow流表规则不匹配时,向所述sdn控制器发送所述报文。

附图说明

图1是现有技术中sdn云网络的结构示意图。

图2是本发明实施例1的一种流表规则生成过程的跟踪方法的流程示意图。

图3是本发明实施例1中流表规则生成过程的数据流示意图。

图4是本发明实施例1中入口安全组处理模块中业务逻辑代码携带代码标识的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于此描述的其他方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。

下面结合具体实施例和附图对本发明的技术方案进行清楚、完整的描述。

实施例1

如图2所示,是本发明实施例1的一种流表规则生成过程的跟踪方法的流程示意图。

本发明的一种流表规则生成过程的跟踪方法基于openflow协议的sdn控制器,包括如下步骤:

s1、在接收到虚拟交换机发送的报文时,根据报文携带的mac地址信息确定配置标识和至少一个功能模块;功模块用于对报文执行业务逻辑处理,每个功能模块携带唯一的功能标识,每个功能模块包括至少一条业务逻辑代码,每条业务逻辑代码携带有代码标识;

其中,sdn控制器中预设有vpc组网逻辑数据库,该vpc组网逻辑数据库存储有mac地址信息与源云主机配置标识及目标云主机配置标识之间的映射表,源云主机配置标识与源云主机的配置信息具有对应关系,目标云主机配置标识与目标云主机的配置信息具有对应关系;sdn控制器中预设有哈希数据表;哈希数据表以代码标识为关键字值,每个关键字值与一个代码语义及代码行号具有映射关系。

在步骤s1中,根据报文携带的mac地址信息确定配置标识,包括如下步骤:

s11、将mac地址信息在vpc组网逻辑数据库中进行查询匹配;

s12、在查询到mac地址信息的情况下,从映射表中获取对应的源云主机配置标识及目标云主机配置标识。

s2、当任一功能模块开始对报文执行业务逻辑处理时,创建一个与报文对应的cookie字段,并向cookie字段中标记对应的功能标识和配置标识;

s3、当任一功能模块对报文执行完业务逻辑处理时,按照其业务逻辑代码的运行顺序依次向cookie字段标记对应的代码标识;

s4、当至少一个功能模块对报文完成业务逻辑处理时,根据预设的vpc组网逻辑生成新的流表项,并按照至少一个功能模块的执行顺次将标记后的cookie字段依次填充至新的流表项中;

s5、将填充后的流表项发送至虚拟交换机进行存储,使得通过查询填充后流表项的cookie字段实现代码逻辑和vpc组网逻辑的跟踪。

接下来,以一个示例对实施例1进行详细说明。

在具体实施过程中,如图3所示,本发明中的sdn控制器2中功能模块包括报文入口处理模块201、首包合法性检查模块202、网卡处理模块203、入口安全组处理模块204、子网逻辑处理模块205、vpc组网逻辑处理模块206、路由处理模块207、外部网关处理模块208、邻居发现处理模块209、内部网关处理模块210、第一出口安全组处理模块211、虚拟隧道处理模块212、第二出口安全组处理模块213以及出口分析逻辑处理模块214,各个功能模块之间具有逻辑处理顺序关系,每个功能模块携带唯一的8位id号作为功能模块标识,每个功能模块包括至少一条业务逻辑代码,每条业务逻辑代码携带有代码标识,业务逻辑代码包括转发报文代码或丢弃报文代码。

其中,本发明中全部业务逻辑代码的代码语义和代码行号以代码标识为关键字值存储于预设的哈希数据表中,例如,转发报文代码的代码语义和代码行号可按照如下表形式进行存储,代码语义通过转发流表的原因分析以及sdn控制器代码标签来指示。

同样,丢弃报文代码的代码语义和代码行号可按照下表形式进行存储。

当报文进入虚拟交换机1时,虚拟交换机1将报文携带的mac地址信息与本地openflow流表进行匹配,若匹配成功,则将该报文转发至对应的端口;若匹配失败,则将该报文作为首包发送至sdn控制器2,使得sdn控制器2对该报文生成流表项。

具体地,当sdn控制器2接收到报文时,根据报文携带的mac地址信息从预设的vpc组网逻辑数据库中查询该mac地址信息对应的云主机配置标识和目标云主机配置标识;并且,根据该mac地址信息确定需要使用的本地功能模块,例如,当根据mac地址信息确定需要依次使用报文入口处理模块201、报文合法性检查模块、报文vpc索引虚拟网卡配置模块、入口安全组处理模块204、子网逻辑处理模块205、vpc组网逻辑处理模块206、路由处理模块207、外部网关处理模块208、邻居发现处理模块209和出口分析逻辑处理模块214对该报文执行业务逻辑处理,则这些功能模块依次对报文执行业务逻辑处理,这些功能模块依次创建与报文对应的cookie字段,其中,cookie字段的结构如下表所示:

该cookie字段包括moduleid字段、forwardindex字段、dropindex字段、sourcenetworkinterfaceid字段和destinationnetworkinterfaceid字段,其中moduleid字段用于标记功能标识,forwardindex字段用于标记转发报文代码标识,dropindex字段用于标记丢弃报文代码标识,sourcenetworkinterfaceid字段用于标记源云主机的配置标识,destinationnetworkinterfaceid字段用于标记目标云主机的配置标识。

当任一功能模块开始执行业务逻辑代码时,则该功能模块向其创建的cookie字段中moduleid字段写入功能标识,向sourcenetworkinterfaceid字段写入源云主机配置标识,向destinationnetworkinterfaceid字段写入目标云主机配置标识;当该任一功能模块执行完业务逻辑代码时,则按照业务逻辑代码的执行顺序向forwardindex字段写入转发报文代码标识,或者向dropindex字段写入丢弃报文代码标识。以报文合法性检查模块为例,设定报文合法性检查模块的功能标识为0x2,报文合法性检查模块中包含数据非法性判断的业务逻辑代码,其代码标识为0xff,则当报文进入报文合法性检查模块时,报文合法性检查模块将其功能标识0x2写入其cookie字段中moduleid字段;当报文合法性检查模块执行完非法性判断的业务逻辑代码并确定该报文为非法数据时,则将0xff写入其cookie字段中的dropindex字段,由此实现对流表规则生成过程的跟踪。当这些功能模块全部完成对报文的业务逻辑处理后,sdn控制器2根据预设的vpc组网逻辑生成新的流表项,并标记后的全部cookie字段填充至该新的流表项中,进而向虚拟交换机1发送填充后的流表项,使得通过查询填充后流表项的cookie字段就可以确定代码逻辑和vpc组网逻辑,实现流表规则中代码逻辑和vpc组网逻辑的跟踪。

接下来,通过一示例来说明本发明中各个功能模块对cookie字段进行标记的过程。

例如,如图4所示,是本发明中入口安全组处理模块204的流程示意图。入口安全组处理模块204的功能标识为0x04,其每个步骤指示一条业务逻辑代码,每条业务逻辑代码携带代码标识。

当入口安全组处理模块204开始业务逻辑代码时,则向cookie字段中的moduleid字段标记0x02;当入口安全组处理模块204通过业务逻辑代码执行如下处理时,则向cookie字段中的forwordindex字段依次标记0x05、0x10、0x21、0x12、0x14、0x45,向cookie字段中的dropindex字段标记0x15:

接收首包;将预设的安全组模块ip记录到即将下发的cookie字段;根据首包的源mac地址查询vpc组网逻辑数据库中虚拟网卡的配置信息;提取虚拟网卡的配置信息中的安全组id;根据安全组id查询vpc组网逻辑数据库中安全组配置信息;根据首包携带的源/目标ip地址、传输层协议、传输层源/目标端口号,匹配安全组配置信息;若不匹配,则判断首包访问不通过授权;下发丢弃流表。

进一步地,在步骤s5中,通过查询填充后流表项的cookie字段实现代码逻辑跟踪,包括如下步骤:

s501、向虚拟交换机发送流表项获取请求,使得虚拟交换机根据流表项获取请求返回对应的流表项;流表项获取请求经sdn控制器的api接口输入;

s502、提取对应的流表项中的cookie字段;

s503、根据提取的cookie字段中功能标识确定对应的功能模块;

s504、根据提取的cookie字段中的代码标识从哈希数据表中索引对应的代码语义和代码行号,实现代码逻辑跟踪定位。

另外,在步骤s5中,通过查询填充后流表项的cookie字段实现vpc组网逻辑的跟踪,包括如下步骤:

在提取对应的流表项中的cookie字段之后,根据提取的cookie字段中的源云主机配置标识在所述vpc组网逻辑数据库中查询对应源云主机的配置信息,以及根据目标云主机配置标识在所述vpc组网逻辑数据库中查询对应目标云主机的配置信息,实现vpc组网逻辑的跟踪。

与现有技术相比,本发明的一种流表规则生成过程的跟踪方法具有如下有益效果:

(1)通过对sdn控制器预设不同的功能模块,使得各个功能模块携带唯一的功能标识,以及各个功能模块中业务逻辑代码携带代码标识,使得在对报文执行业务逻辑处理时,能够对其业务逻辑处理过程进行标记,由此实现流表规则生成过程的跟踪,进而使得运维人员或开发人员通过提取并查询流表项中的cookie字段,就可以跟踪分析vpc组网逻辑以及准确定位业务逻辑代码的位置,提升流表规则的分析效率,进而提高sdn云网络的运维效率和调试效率;

(2)采用哈希数据表来建立业务逻辑代码中代码标识与代码语义及代码行号的对应关系,进而在利用代码标识作为关键字至进行索引时,可提高代码语义和代码行号的索引效率。

以上所述,仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,故凡未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1