一种转发流表的内生安全实现装置与方法与流程

文档序号:25742000发布日期:2021-07-06 18:52阅读:113来源:国知局
一种转发流表的内生安全实现装置与方法与流程

本发明属于数据通信技术领域,更具体地,涉及一种转发流表的内生安全实现装置与方法。



背景技术:

随着互联网深入渗透进生产和生活,尤其是车联网、远程医疗、工业网络等对于网络安全可信提出了更高的要求,但当前使用的tcp/ip协议体系在设计之初是面向一个小规模、彼此信任的“熟人网络”,既没有考虑在不可信的网络和终端的环境下如何建立可信通信,也没有充分考虑如何在具有安全风险的网络中进行安全可靠的通信。这导致当前互联网通过不断增加“安全补丁”的方式叠加局部的安全功能,而不具备完整、内生的安全可信能力。一方面,如何组合这些碎片化的方案形成一套完整的安全可信体系是很难完成的任务;另一方面,这些方案在提出时也没有全局地考虑与其他方案的兼容性以及整体解决方案的完整性。

网络内生安全要求网络设备可以实现安全性和可信性,如何在现有网络技术的基础上实现确定性网络的内生安全,使得网络设备逐跳确保业务的安全传输,是本领域技术人员亟待解决的问题。在确定性网络中,传统的内生安全通常基于多个流表生成执行体和单一算法来实现,即不同执行体采用相同算法分别计算出转发流表,依据相同算法生成的流表应该一致的原则,对不同转发流表中的各条目分别进行逐条比较,针对每个业务流判断受到攻击的条目,从而以被动防御的方式实现内生安全。

然而,当多个执行体采用相同算法时,在网络中可能会受到针对某一算法的攻击,则多个执行体可能同时受到针对某一算法的攻击而导致不安全;例如,如果网络中存在针对ospf(openshortestpathfirst,即开放式最短路径优先)路由算法的攻击,而不同执行体都使用ospf路由算法,则多个执行体都可能受到攻击而不安全。另外,简单算法(或者说确切的算法,例如ospf路由算法)只能针对简单转发流表的计算,不能针对带有约束参数的转发流表计算;在网络设备中,带有约束参数的转发流表的计算难度较大,目前尚无确切的算法可以计算,大多采用启发式算法,难以证明其准确性,导致即便采用相同的算法,不同软件实例计算的流表结果也可能并不相同,不再满足“相同算法生成的流表应该一致”的原则,很可能会难以区分攻击和计算差异,从而影响网络设备内生安全的实现。

综上可知,如果采用传统的单一算法实现转发流表内生安全的动态异构冗余,往往存在不可信、易受攻击的问题,影响网络设备的内生安全;而且,传统方法在进行流表比较时仅通过逐条比较判断受到攻击的条目,这种方法只能实现被动防御,不能判断出安全执行体以及受到攻击的执行体并进行溯源,也就无法有效实现网络设备的内生安全。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种转发流表的内生安全实现装置与方法,其目的在于基于不同算法生成转发流表,并通过不同算法生成流表之间的比较确定安全执行体和受到攻击的执行体,实现网络设备的内生安全,由此解决单一算法易受攻击、不可信的技术问题。

为实现上述目的,按照本发明的一个方面,提供了一种转发流表的内生安全实现装置,包括控制单元、安全处理单元和数据平面;

所述控制单元用于通过不同执行体基于不同算法分别计算当前网络设备的转发流表,并根据业务流属性为各转发流表分配统一的流标识id,分配完成后将各转发流表下发到所述安全处理单元;其中,所述转发流表包括流标识id在内的一个或多个表项,每个业务对应转发流表的一个条目;

所述安全处理单元用于通过比较不同算法生成的转发流表来检测各执行体的安全性,并根据检测结果将安全执行体生成的转发流表下发到所述数据平面,对危险执行体发出告警并进行溯源;

所述数据平面用于接收到数据包之后根据数据包关键字段计算流标识id,并基于该流标识id从收到的安全转发流表中查找相应的条目,进而根据查找结果进行数据包的转发。

优选地,所述控制单元包括配置管理模块、流标识生成管理模块和至少三个执行体;

所述配置管理模块用于为各执行体配置流表生成算法、流表生成方式以及相关qos约束参数,且不同执行体配置不同的流表生成算法;

各执行体根据收集到的网络拓扑信息和配置的流表生成算法各自计算当前网络设备的转发流表,并下发到所述安全处理单元;

所述流标识生成管理模块用于根据业务流属性生成流标识id,并为不同执行体计算的转发流表分配统一的流标识id;其中,每个业务对应生成一个流标识id。

优选地,所述安全处理单元包括执行体通信接口、执行体检测模块以及流表裁决管理模块;

所述执行体通信接口用于将接收到的不同执行体计算的转发流表,分别下发到所述执行体检测模块和所述流表裁决管理模块;

所述执行体检测模块用于根据不同执行体计算的转发流表检测各执行体的安全性,并将检测出的安全执行体的编号发送至所述流表裁决管理模块,对检测出的危险执行体发出告警并进行溯源;

所述流表裁决管理模块用于将所述安全执行体生成的转发流表下发至所述数据平面,并在安全执行体出现变更时对下发的转发流表进行更新。

按照本发明的另一方面,提供了一种转发流表的内生安全实现方法,包括:

控制单元通过不同执行体基于不同算法分别计算当前网络设备的转发流表,并根据业务流属性为各转发流表分配统一的流标识id,分配完成后将各转发流表下发到安全处理单元;其中,所述转发流表包括流标识id在内的一个或多个表项,每个业务对应转发流表的一个条目;

所述安全处理单元通过比较不同算法生成的转发流表检测各执行体的安全性,并根据检测结果将安全执行体生成的转发流表下发到数据平面,对危险执行体发出告警并进行溯源;

所述数据平面接收到数据包之后根据数据包关键字段计算流标识id,并基于该流标识id从收到的安全转发流表中查找相应的条目,进而根据查找结果进行数据包的转发。

优选地,每个业务对应一个流标识id,所述流标识id由用于区分不同网络类型的网络编号和用于区分不同业务的业务编号组成;

对于不同网络类型,所述流标识id中业务编号的映射方法不同:对于具有流标识的网络,直接使用该网络的流标识数值作为所述流标识id中的业务编号;对于ip网络,将源ip地址和/或目的ip地址映射为所述流标识id中的业务编号;对于mpls网络,将转发标签或者流标识标签映射为所述流标识id中的业务编号;对于其他网络,根据vlanid将相应的转发流映射为所述流标识id中的业务编号。

优选地,所述转发流表以流标识id为关键字,包括流标识id、流标识id掩码、优先级、标识网络流标识信息、源ip地址+目的ip地址、mpls标签、vlanid、执行体编号、qos约束参数、出端口以及入端口中的一个或多个表项;

所述流标识id掩码用于进行流标识id的聚合;

所述标识网络流标识信息表示标识网络中分配的流标识信息;所述源ip地址+目的ip地址表示ip网络中转发的关键字段源ip地址和目的ip地址,或者相应的网络地址;所述mpls标签表示mpls网络中的转发标签信息或流标识标签信息;所述vlanid表示其他网络中的vlan值;其中,对于每个条目,所述标识网络流标识信息、所述源ip地址+目的ip地址、所述mpls标签和所述vlanid中有且仅有一个字段中包含有效值;

所述优先级表示对应条目的优先级,数值越大则优先级越高;

所述qos约束参数表示对应业务流需要满足的qos信息,包括最小保证带宽阈值、转发时延阈值和抖动阈值中的一项或多项;

所述出端口表示业务数据包的出端口;

所述入端口表示业务数据包的入端口。

优选地,所述控制单元通过不同执行体基于不同算法分别计算当前网络设备的转发流表,并根据业务流属性为各转发流表分配统一的流标识id,分配完成后将各转发流表下发到安全处理单元,具体为:

所述控制单元中的各执行体根据各自配置的流表生成方式,与其他网络设备、控制器或网管系统进行交互,获取网络拓扑信息;

各执行体根据配置的qos约束参数和获取的网络拓扑信息,采用各自配置的流表生成算法分别对每个业务计算从当前网络设备节点到目的网络设备节点的最优转发路径,得到当前网络设备的初始转发流表;

所述控制单元的流标识生成管理模块计算出每个业务对应的流标识id后,各执行体统一从所述流标识生成管理模块获取每个业务的流标识id;

各执行体获取流标识id后,分别在各自初始转发流表的基础上形成完整的转发流表,并将完整的转发流表下发至所述安全处理单元。

优选地,所述安全处理单元通过比较不同算法生成的转发流表检测各执行体的安全性,具体为:

所述安全处理单元的执行体检测模块接收到各执行体计算的转发流表后,将每个执行体计算的转发流表按照出端口分成不同的出端口子表;

针对每个执行体计算的每个出端口子表,分别将该出端口子表与其他执行体计算的对应出端口子表进行比较,每次比较后记录该出端口子表相对于其他出端口子表的不一致条目数;

对每个执行体计算的每个出端口子表均完成比较后,计算每个执行体各出端口子表对应的不一致条目数总和,并选择不一致条目数总和最少的执行体作为安全执行体。

优选地,所述根据检测结果将安全执行体生成的转发流表下发到数据平面,具体为:

所述安全处理单元的流表裁决管理模块初始选取任一执行体作为当前生效执行体,并将当前生效执行体生成的转发流表下发到数据平面,将其他执行体生成的转发流表暂时保存;

所述流表裁决管理模块定期接收所述执行体检测模块的检测结果,并将检测到的安全执行体与当前生效执行体进行比较;

如果检测到的安全执行体与当前生效执行体一致,则继续沿用当前生效执行体生成的转发流表;如果检测到的安全执行体与当前生效执行体不一致,则将当前生效执行体修改为检测到的安全执行体,并将该安全执行体生成的转发流表下发到数据平面。

优选地,所述数据平面接收到数据包之后根据数据包关键字段计算流标识id,并基于该流标识id从收到的安全转发流表中查找相应的条目,进而根据查找结果进行数据包的转发,具体为:

所述数据平面接收到所述安全处理单元下发的安全转发流表后,根据该安全转发流表中qos约束参数的要求设置调度机制;

所述数据平面接收到数据包之后,根据入端口网络类型识别数据包的关键字段,并根据该关键字段计算流标识id;

所述数据平面根据计算出的流标识id从所述安全转发流表中查找相应的条目,进而获取对应的出端口和qos约束参数;

所述数据平面根据获取的qos约束参数和预先设置的调度机制对数据包进行调度,并通过获取的出端口进行数据包的转发。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:本发明中不同执行体基于不同算法分别计算当前网络设备的转发流表,各转发流表统一分配流标识id后下发到安全处理单元;安全处理单元根据不同算法生成的转发流表检测各执行体的安全性,并将安全执行体生成的转发流表下发到数据平面;数据平面接收到数据包之后计算流标识id,查找相应的条目并完成转发。本发明基于不同算法生成转发流表的动态异构冗余,避免了单一算法易受攻击、不可信的问题,以更优的异构方式实现网络设备的内生安全;通过综合比较方式对不同算法生成的转发流表进行有效裁决和管理,确定安全执行体和危险执行体,实现主动防御;另外,不同类型网络可通过统一的流标识id进行流表比较和转发,满足业务需求。

附图说明

图1是本发明实施例提供的一种转发流表的内生安全实现装置架构图;

图2是本发明实施例提供的一种转发流表的结构示例图;

图3是本发明实施例提供的一种转发流表的内生安全实现方法流程图;

图4是本发明实施例提供的一种执行体生成转发流表的方法流程图;

图5是本发明实施例提供的一种执行体安全性检测的方法流程图;

图6是本发明实施例提供的一种流表裁决和管理的方法流程图;

图7是本发明实施例提供的一种数据平面业务转发处理的方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

实施例1

为解决单一算法易受攻击、不可信的技术问题,以更优的异构方式实现网络设备的内生安全,本发明实施例提供了一种转发流表的内生安全实现装置,如图1所示,主要包括控制单元、安全处理单元和数据平面。

所述控制单元通过不同执行体基于不同算法分别计算当前网络设备的转发流表,并根据业务流属性为各转发流表分配统一的流标识id,分配完成后将各转发流表下发到所述安全处理单元;其中,所述转发流表包括流标识id在内的一个或多个表项,每个业务对应转发流表的一个条目。

所述安全处理单元通过比较不同算法生成的转发流表来检测各执行体的安全性,并根据检测结果将安全执行体生成的转发流表下发到所述数据平面,对危险执行体(即可能受到攻击的执行体)发出告警并进行溯源。

所述数据平面接收到数据包之后根据数据包关键字段计算流标识id,并基于该流标识id从收到的安全转发流表中查找相应的条目,进而根据查结果进行数据包的转发。

下面进一步结合图1,对上述各单元的具体结构和功能展开介绍:

1)控制单元:所述控制单元主要完成参数配置、执行体生成、流表生成和流标识id生成,包括配置管理模块、流标识生成管理模块和至少三个执行体。其中:

所述配置管理模块通过虚拟化或者容器技术生成至少三个执行体,在机架式设备中也可通过不同板卡实现方式形成至少三个执行体,然后为各执行体配置流表生成算法、流表生成方式以及相关qos约束参数,还可根据实际业务需求配置各业务的优先级。其中,不同执行体配置不同的流表生成算法,例如遗传算法、线性规划算法或其他优化算法等,以便实现不同执行体之间的异构;所述流表生成方式分为静态和动态。相关qos约束参数可针对所有业务按默认参数进行配置,也可根据实际业务需求针对某一类业务进行配置,还可根据实际业务需求针对某个或某些业务进行配置,在此不做具体限定。

各执行体通过和其他网络设备、控制器或网管系统交互,收集网络拓扑信息,进而根据收集到的网络拓扑信息,基于配置的流表生成算法各自计算当前网络设备的转发流表,并将各自的转发流表下发到所述安全处理单元。其中,当流表生成为静态方式时,各执行体与控制器或网管系统进行交互,收集网络拓扑信息;当流表生成为动态方式时,各执行体根据配置的网络协议与其他网络设备交互,收集网络拓扑信息。

所述流标识生成管理模块用于根据业务流属性生成流标识id,具体可根据不同类型网络中的业务关键字进行哈希计算得到,并为不同执行体计算的转发流表分配统一的流标识id;其中,每个业务对应生成一个流标识id,也对应转发流表中的一个条目。由于不同执行体从同一模块统一获取流标识id,可确保不同执行体中同一业务的流标识id一致,因此可通过流标识id统一不同网络的业务转发和安全检测。

图1中以设置三个执行体为例,分别记为执行体1、执行体2和执行体3,则三个执行体计算的转发流表可分别记为表a、表b和表c。假设总共有n个业务,则所述流标识生成管理模块生成n个流标识id,可分别记为id1、id2、...、idn,相应地,表a、表b和表c中均有n个条目,即一个业务对应一个条目,表a、表b和表c均分配到这n个流标识id,各转发流表的具体结构如图2所示。

2)安全处理单元:所述安全处理单元主要完成对各执行体生成的转发流表的选择和管理,包括执行体通信接口、执行体检测模块以及流表裁决管理模块。其中:

所述执行体通信接口用于将接收到的不同执行体计算的转发流表,分别下发到所述执行体检测模块和所述流表裁决管理模块。

所述执行体检测模块根据不同执行体计算的转发流表检测各执行体的安全性,并将检测出的安全执行体的编号发送至所述流表裁决管理模块,同时对检测出的危险执行体发出告警并进行溯源。具体地,所述执行体检测模块接收到各执行体计算的转发流表后,将每个执行体计算的转发流表按照出端口分成不同的出端口子表;然后针对每个出端口子表,分别将该出端口子表与其他执行体计算的对应出端口子表进行比较,每次比较后记录该出端口子表相对于其他出端口子表的不一致条目数;对每个出端口子表均完成比较后,计算每个执行体各出端口子表对应的不一致条目数总和,并选择不一致条目数总和最少的执行体作为安全执行体。在进行转发流表比较时,如果存在执行体与其他执行体明显差异的表项,则判断该执行体可能受到攻击,为危险执行体,此时执行体检测模块向控制器或者网管系统发送告警信息,由控制器或者网管系统对明显差异的表项进行溯源。

所述流表裁决管理模块用于将所述安全执行体生成的转发流表(以下也简称为安全转发流表)下发至所述数据平面,并在安全执行体出现变更时对下发的转发流表进行更新,具体是对转发流表中发生变更的表项进行更新操作。具体地,所述流表裁决管理模块初始可选取任一执行体作为当前生效执行体,并将当前生效执行体生成的转发流表下发到数据平面,将其他执行体生成的转发流表暂时保存;定期接收所述执行体检测模块的检测结果,并将检测到的安全执行体与当前生效执行体进行比较;如果检测到的安全执行体与当前生效执行体一致,则继续沿用当前生效执行体生成的转发流表;如果检测到的安全执行体与当前生效执行体不一致,则将当前生效执行体修改为检测到的安全执行体,并将该安全执行体生成的转发流表下发到数据平面。

3)所述数据平面主要完成数据包接收和根据转发流表进行业务转发,包括转发表模块和收发包处理模块。其中:

所述转发表模块用于接收所述安全处理单元下发的安全转发流表,并根据所述安全转发流表中的表项进行相应的转发参数设置。

所述收发包处理模块用于接收数据包,接收到数据包之后根据网络类型确定数据包关键字段,进而根据数据包关键字段计算流标识id,然后基于该流标识id从收到的安全转发流表中查找相应的条目,根据查找结果进行数据包的转发。所述数据平面适应不同网络,按照统一计算的流标识id进行转发。

其中,关于各模块更具体的功能实现的描述,可参考后续各实施例中的方法介绍,在此不做赘述。

进一步结合图2,在本发明实施例中,所述转发流表以流标识id为关键字,包括流标识id、流标识id掩码、优先级、标识网络流标识信息、源ip地址+目的ip地址、mpls标签、vlanid、执行体编号、qos约束参数、出端口以及入端口中的一个或多个表项。转发流表中每一列就是一个条目,假设总共有n个业务,则对应n个条目,n个流标识id(分别记为id1、id2、...、idn)。下面对各表项进行具体介绍:

1)流标识id:所述流标识id由用于区分不同网络类型的网络编号和用于区分不同业务的业务编号两部分组成。在一个具体的实施例中,流标识id长度为4字节,即32bit;最前面2个bit表示用于区分不同网络类型的网络编号,例如00表示具有流标识的网络(如tsn网络),01表示ip网络,10表示mpls网络,11表示其他网络(如二层网络);后面30bit表示用于区分不同业务的业务编号。对于不同网络类型,流标识id中业务编号的映射方法不同,其中:

对于具有流标识的网络,直接使用该网络的流标识数值作为流标识id中的业务编号;例如,现有tsn网络流标识定义为20bit或者28bit,则在上述实施例中可直接使用tsn网络的流标识数值作为所述流标识id中用于区分不同业务的后30bit内容。

对于ip网络,将源ip地址和/或目的ip地址映射为流标识id中的业务编号;在上述实施例中可将ip网络的源ip地址和目的ip地址中的一个或者全部信息,映射为所述流标识id中用于区分不同业务的后30bit内容。

对于mpls网络,将转发标签或者流标识标签映射为流标识id中的业务编号;在上述实施例中可将mpls网络的转发标签或者流标识标签映射为所述流标识id中用于区分不同业务的后30bit内容。

对于其他网络,根据vlanid将相应的转发流映射为流标识id中的业务编号;例如,对于二层网络,在上述实施例中可根据其vlanid将相应的转发流映射为所述流标识id中用于区分不同业务的后30bit内容。

2)流标识id掩码:所述流标识id掩码类似于ip地址的掩码,用于流标识id进行聚合。多条相邻的流标识id,或出端口相同的流标识id,可通过设置相同的流标识id掩码聚合为一条流标识id,从而减少流标识id的总数量,也就相当于减少了转发流表中的条目数。需要注意的是,如果通过流标识id掩码对流标识id进行聚合,则在后续进行流标识id比较以及使用流标识id进行转发时,需通过流标识id和对应掩码进行“与”操作后的结果进行比较和转发。

假设流标识id和流标识id掩码的长度均为4字节,四条流标识id分别为67.3.3.0(整数值为1124270848)、67.3.3.1(整数值为1124270849)、67.3.3.2(整数值为1124270850)、67.3.3.3(整数值为1124270851),对应的流标识id掩码均为255.255.255.255;则四条流标识id值聚合后的结果为:流标识id值67.3.3.0(整数值为1124270848)+掩码255.255.255.252。

3)优先级:所述优先级表示转发流表中对应条目的优先级,数值越大则对应条目的优先级越高。

4)执行体编号:所述执行体编号表示用于生成转发流表的执行体的编号,本发明实施例以设置三个执行体为例,则分别取值为1~3。

5)qos(qualityofservice,即服务质量)约束参数:所述qos约束参数表示对应业务流需要满足的qos信息,包括最小保证带宽阈值、转发时延阈值和抖动阈值中的一项或多项。其中,带宽表示于对一条转发流需要保证其带宽的使用;时延表示一条转发流在本系统转发所需要的时间;抖动表示同一条转发流的不同数据包,转发时延差别的最大值。

6)出端口:所述出端口表示业务数据包的出端口。

7)入端口:所述入端口表示业务数据包的入端口。

8)标识网络流标识信息:所述标识网络流标识信息表示标识网络中分配的流标识信息,如tsn网络中分配的流标识、确定性网络中的流标识等。

9)源ip地址+目的ip地址:所述源ip地址+目的ip地址表示ip网络中转发的关键字段源ip地址和目的ip地址,或者相应的网络地址。

10)mpls标签:所述mpls标签表示mpls网络中的转发标签信息或流标识标签信息。

11)vlanid:所述vlanid表示其他网络中的vlan值。

其中,对于每个条目,所述标识网络流标识信息、所述源ip地址+目的ip地址、所述mpls标签和所述vlanid中并不会同时包含有效值,而是有且仅有一个字段中包含有效值,与流标识id中不同网络类型对应。例如,如果流标识id前两个比特表示的网络类型为mpls网络节点,则以上四个字段中仅mpls标签字段中的值有效,其他字段中的值无效。

通过本发明实施例提供的上述装置,可基于不同算法生成转发流表的动态异构冗余,避免了单一算法易受攻击、不可信的问题,以更优的异构方式实现网络设备的内生安全;可对不同算法生成的转发流表进行有效裁决和管理,确定安全执行体和危险执行体,实现主动防御;另外,不同类型网络可通过统一的流标识id进行流表比较和转发,满足业务需求。

实施例2

为解决单一算法易受攻击、不可信的技术问题,以更优的异构方式实现网络设备的内生安全,本发明实施例进一步提供了一种转发流表的内生安全实现方法,可通过实施例1中所述的装置来完成。

如图3所示,本发明实施例提供的转发流表的内生安全实现方法主要包括以下步骤:

步骤s1:控制单元的配置管理模块选择至少三个异构的执行体,并为各执行体配置流表生成算法、流表生成方式以及相关qos约束参数,且不同执行体配置不同的流表生成算法。

该步骤主要是“配置执行体及其相关参数”的过程,由控制单元中的配置管理模块实现:以图1为例,系统启动时,由配置管理模块选择尽量异构的3个流表执行变体作为生成流表的执行体,然后配置每个执行体的流表生成算法,如遗传算法、线性规划算法以及其他优化算法等;配置各执行体的流表生成方式为静态或者动态。静态方式为控制器或者网管系统配置用于网络中业务转发的流信息和网络拓扑信息,动态方式为配置各执行体运行的动态协议及协议相关参数,各执行体通过与其他网络设备交互,获取网络拓扑信息。其中,不同执行体的流表生成算法不同,但流表生成方式并不做限定,可以相同也可以不同。相关qos约束参数可针对所有业务按默认参数进行配置,也可根据实际业务需求针对某一类业务进行配置,还可根据实际业务需求针对某个或某些业务进行配置,在此不做具体限定;还可以根据实际业务需求先配置各业务的优先级,根据优先级配置对应的qos约束参数,例如优先级7时保证带宽10m,优先级5时保证转发时延小于5ms。在执行体执行流表生成算法时,可根据优先级进行对应的qos参数保证。

步骤s2:控制单元通过不同执行体基于不同算法分别计算当前网络设备的转发流表,并根据业务流属性为各转发流表分配统一的流标识id,分配完成后将各转发流表下发到安全处理单元。

该步骤主要是“各执行体生成转发流表”的过程,具体实施过程如下:所述控制单元中的各执行体根据各自配置的流表生成方式,与其他网络设备、控制器或网管系统进行交互,获取网络拓扑信息;各执行体根据配置的qos约束参数和获取的网络拓扑信息,采用各自配置的流表生成算法分别对每个业务计算从当前网络设备节点到目的网络设备节点的最优转发路径,得到当前网络设备的初始转发流表;所述控制单元的流标识生成管理模块计算出每个业务对应的流标识id后,各执行体统一从所述流标识生成管理模块获取每个业务的流标识id;各执行体获取流标识id后,分别在各自初始转发流表的基础上形成完整的转发流表,并将完整的转发流表下发至所述安全处理单元的执行体通信接口。

如图2所示,所述转发流表以流标识id为关键字,包括流标识id、流标识id掩码、优先级、标识网络流标识信息、源ip地址+目的ip地址、mpls标签、vlanid、执行体编号、qos约束参数、出端口以及入端口中的一个或多个表项,每个业务对应一个流标识id,也对应转发流表的一个条目。其中,关于各表项的具体介绍可参考实施例1,而更具体的转发流表生成过程可参考图4以及后续实施例3中的介绍,在此不做赘述。

步骤s3:所述安全处理单元通过比较不同算法生成的转发流表检测各执行体的安全性,并根据检测结果将安全执行体生成的转发流表下发到数据平面,对危险执行体发出告警并进行溯源。

该步骤主要包括“执行体安全检测”和“流表裁决下发”两个过程。

“执行体安全检测”过程主要由所述安全处理单元中的执行体检测模块实现,不同算法生成的转发流表不同,不再基于“相同算法生成流表一致”的原则来进行条目逐条比较,而是通过将不同算法生成的转发流表进行综合比较,确定各转发流表与其余转发流表的不一致条目数,并将不一致条目数最少的转发流表对应的执行体作为安全执行体。具体过程如下:所述安全处理单元的执行体检测模块接收到各执行体计算的转发流表后,将每个执行体计算的转发流表按照出端口分成不同的出端口子表;针对每个执行体计算的每个出端口子表,分别将该出端口子表与其他执行体计算的对应出端口子表进行比较,每次比较后记录该出端口子表相对于其他出端口子表的不一致条目数;对每个执行体计算的每个出端口子表均完成比较后,计算每个执行体各出端口子表对应的不一致条目数总和,并选择不一致条目数总和最少的执行体作为安全执行体。在进行转发流表比较时,如果存在执行体与其他执行体明显差异的表项,则判断该执行体可能受到攻击,为危险执行体,此时执行体检测模块向控制器或者网管系统发送告警信息,由控制器或者网管系统对明显差异的表项进行溯源。由此可知,即便不同算法生成的转发流表不一致,但通过适当的裁决机制可以选择正确的转发流表,实现主动防御。其中,所述执行体检测模块会定期进行执行体安全检测,更具体的检测过程可参考图5以及后续实施例4中的介绍,在此不做赘述。

“流表裁决下发”过程主要由所述安全处理单元中的流表裁决管理模块实现,具体过程如下:所述安全处理单元的流表裁决管理模块初始选取任一执行体作为当前生效执行体,并将当前生效执行体生成的转发流表下发到数据平面,将其他执行体生成的转发流表暂时保存;所述流表裁决管理模块定期接收所述执行体检测模块的检测结果,并将检测到的安全执行体与当前生效执行体进行比较;如果检测到的安全执行体与当前生效执行体一致,则继续沿用当前生效执行体生成的转发流表;如果检测到的安全执行体与当前生效执行体不一致,则将当前生效执行体修改为检测到的安全执行体,并将该安全执行体生成的转发流表下发到数据平面。其中,更具体的裁决下发过程可参考图6以及后续实施例5中的介绍,在此不做赘述。

步骤s4:所述数据平面接收到数据包之后根据数据包关键字段计算流标识id,并基于该流标识id从收到的安全转发流表中查找相应的条目,进而根据查找到的条目进行数据包的转发。

该步骤主要是“业务转发”的过程,在数据平面实现,具体过程如下:所述数据平面接收到所述安全处理单元下发的安全转发流表后,根据该安全转发流表中qos约束参数的要求在数据平面设置调度机制,例如需要保证带宽5m,则在转发平面需要预留5m的带宽;所述数据平面接收到数据包之后,根据入端口网络类型识别数据包的关键字段,并根据该关键字段计算流标识id;所述数据平面根据计算出的流标识id从所述安全转发流表中查找相应的条目,进而获取对应的出端口和qos约束参数;所述数据平面根据获取的qos约束参数和预先设置的调度机制对数据包进行调度,并通过获取的出端口进行数据包的转发。其中,更具体的转发处理过程可参考图7以及后续实施例6中的介绍,在此不做赘述。

本发明中不同执行体基于不同算法分别计算当前网络设备的转发流表,各转发流表统一分配流标识id后下发到安全处理单元;安全处理单元根据不同算法生成的转发流表检测各执行体的安全性,并将安全执行体生成的转发流表下发到数据平面;数据平面接收到数据包之后计算流标识id,查找相应的条目并完成转发。本发明基于不同算法生成转发流表的动态异构冗余,避免了单一算法易受攻击、不可信的问题,以更优的异构方式实现网络设备的内生安全;通过综合比较对不同算法生成的转发流表进行有效裁决和管理,确定安全执行体和危险执行体,实现主动防御;另外,不同类型网络可通过统一的流标识id进行流表比较和转发,满足业务需求。

实施例3

在上述实施例1的基础上,本发明实施例进一步对步骤s2对应的“各执行体生成转发流表”过程展开介绍。结合图4,各执行体生成转发流表的过程具体如下:

步骤s201:各执行体接收配置管理模块配置的流表生成算法、流表生成方式以及相关qos约束参数,如时延、抖动要求等。由实施例2中介绍可知,所述配置管理模块会预先对各执行体的流表生成算法、流表生成方式以及所需满足的相关qos约束参数进行配置,如对优先级为5的业务预留10m带宽等;则各执行体可直接接收配置管理模块配置的参数来使用。当配置管理模块预先配置了优先级时,各执行体也可直接接收使用。

步骤s202:各执行体根据配置的流表生成方式收集网络拓扑信息,也就是收集网络节点和边参数信息。如果流表生成为静态方式,则各执行体通过与控制器或网管系统进行交互,收集网络拓扑信息;如果流表生成为动态方式,则各执行体根据配置的网络协议与其他网络设备交互,收集网络拓扑信息。

步骤s203:各执行体根据收集的网络拓扑信息,采用配置的流表生成算法对所有业务计算满足相应qos约束参数的最优转发路径。

计算时,对所有业务均需计算从当前网络设备节点到目的网络设备节点的最优转发路径,如果有n个业务,则每个执行体均计算出n条最优转发路径。其中,各执行体根据各自对应配置的流表生成算法计算路径,例如执行体1可采用采用遗传算法,执行体2采用线性规划算法,执行体3采用其他优化算法等;且所述流表生成算法可学习qos约束参数,并按照qos约束参数的要求来进行转发路径的计算。

步骤s204:各执行体基于计算的最优转发路径生成初始转发流表。

各执行体生成转发流表时是基于业务流特性进行计算,对网络中所有业务均计算从当前网络设备节点到目的网络设备节点的最优转发路径,进而获取每个业务从当前网络设备节点到目的网络设备节点的初始表项,形成初始转发流表。初始转发流表中的表项包括:标识网络流标识信息、源ip地址+目的ip地址、mpls标签、vlanid四个字段中的一个值,以及优先级、qos约束参数、执行体编号、出端口、入端口等;其中,qos约束参数和优先级在步骤s201中已获取。

以ip网络为例,假设一条语音业务的目的ip地址为1.1.1.1,源ip地址为2.2.2.1,当前网络设备节点对应的ip地址为192.168.1.1,对该语音业务的qos约束参数为时延小于200ms、抖动小于100ms。该语音业务在当前网络设备的入端口为port1,各执行体计算该语音业务从当前ip地址192.168.1.1到目的ip地址1.1.1.1的最优转发路径,发现该语音业务在当前网络设备的出端口为port2,则可将入端口port1和出端口port2均记录在初始转发流表的对应条目中。

步骤s205:流标识生成管理模块为各初始转发流表分配流标识id。

所述流标识生成管理模块可根据业务流属性生成流标识id,并对流标识id进行维护和管理。各执行体形成初始转发流表后,向流标识生成管理模块获取流标识id,此时所述流标识生成管理模块首先根据业务流查找相应的流标识id;如果可以查到,证明已不是首次分配该流标识id,则直接返回相应的流标识id;如果没有查到,证明是首次分配该流标识id,需根据初始转发流表中的业务关键字进行哈希,计算得到相应的流标识id,然后分配给相应的业务。其中,所述业务关键字也就是初始转发流表中的标识网络流标识信息、源ip地址+目的ip地址、mpls标签、vlanid,生成流标识id时,根据网络类型确定流标识id中的网络编号,根据相应业务关键字进行哈希确定流标识id中的业务编号,从而计算得到流标识id。

所述流标识生成管理模块分配流标识id后,会记录生成该条目对应的执行体,监听各执行体对该条目的状态,如果各执行体由于网络状态变化等原因删除了相应条目,则流标识生成管理模块同步删除对应的流标识id。

例如,ip网络中一条语音业务的源ip地址2.2.2.1,目的ip地址1.1.1.1,执行体1在流标识生成管理模块中查找相应流标识id未查找到,则流标识生成管理模块根据其源ip地址和目的ip地址进行哈希;假设哈希算法为源ip地址与目的ip地址相加,保留后30位,则计算的流标识id为67.3.3.2,转换成整数为1124270850,然后完成分配。后续执行体2获取源ip地址2.2.2.1、目的ip地址1.1.1.1的语音业务的流标识id时,则可以查找到对应的流标识id为67.3.3.2,转换成整数为1124270850,直接分配即可,无需再次计算。所述流标识生成管理模块会记录1124270850对应的条目包含执行体1和执行体2两个执行体的引用,当两个执行体都删除该语音业务时,所述流标识生成管理模块删除对应的流标识id。

步骤s206:各执行体获取流标识id后形成完整的转发流表。

各执行体获取流标识id后,以流标识id作为关键字,如果所述配置管理模块未预先配置优先级,可在此时设置相应条目的优先级,优先级设置原则为:根据业务的qos需求程度设置相应的优先级,如无qos需求则按照最长匹配原则。以ip网络为例,语音业务源ip地址2.2.2.1,目的ip地址1.1.1.1,流标识id为67.3.3.2(整数值为1124270850),qos约束参数为时延和抖动较小,且为最长匹配,则可为该条目分配较高的优先级。

另外,为减少转发流表中的条目数,对同一出端口的多个条目可通过设置掩码进行聚合,下发时按照聚合的流标识id进行处理。例如,出端口相同的四条流标识,掩码均为255.255.255.255,四条流标识id值分别为67.3.3.0(整数值为1124270848)、67.3.3.1(整数值为1124270849)、67.3.3.2(整数值为1124270850)、67.3.3.3(整数值为1124270851),聚合后为流标识id值67.3.3.0(整数值为1124270848)+掩码255.255.255.252。

步骤s207:各执行体将计算的转发流表下发给安全处理单元。

各执行体将完整的转发流表下发至所述安全处理单元的执行体通信接口,由执行体通信接口进行统一处理后,分别发送给流表裁决管理模块和执行体检测模块,先后由执行体检测模块进行安全检测、流表裁决管理模块进行裁决后,将安全的转发流表下发到数据平面。

步骤s208:监听网络状态变化,如有变更则重新计算转发流表。

在运行过程中,各执行体维护以流标识id作为关键字的转发流表,如果网络状态发生变化,各执行体需要按照步骤s203-s207,重新计算所有业务的最优转发路径以及对应表项,然后根据需要进行转发流表中条目的添加或删除;如果只是出端口需要修改,则直接进行表项的更新。

实施例4

在上述实施例1的基础上,本发明实施例进一步对步骤s3中的“执行体安全检测”过程展开介绍。结合图5,执行体安全检测的过程具体如下:

步骤s301:执行体检测模块收到各执行体计算的转发流表后,将每个转发流表按照出端口分成不同的出端口子表。

以三个执行体为例,执行体1、执行体2和执行体3计算的转发流表分别记为表a、表b和表c,每个表均包含n个条目,如图2所示。假设按照出端口的不同,表a分为子表a1、a2、a3,分别对应出端口port1、port2、port3,对应条目数分别为na1、na2、na3,na1+na2+na3=n;表b分为子表b1、b2、b3,分别对应出端口port1、port2、port3,对应条目数分别为nb1、nb2、nb3,nb1+nb2+nb3=n;表c分为子表c1、c2、c3,分别对应出端口port1、port2、port3,对应条目数分别为nc1、nc2、nc3,nc1+nc2+nc3=n。

步骤s302:针对不同执行体计算的每个出端口子表,分别将该出端口子表与其他各执行体计算的对应出端口子表进行比较,判断两个出端口子表是否一致,并分别记录该出端口子表相对于其他出端口子表的不一致条目数。

出端口子表的比较,实际上是将不同执行体之间相同出端口的出端口子表之间进行两两比较;例如,在上述实施例中,针对子表a1,需要将子表a1分别与子表b1、子表c1比较,分别记录子表a1相对于子表b1的不一致条目数、子表a1相对于子表c1的不一致条目数。

步骤s303:如果两个不同执行体生成的出端口子表一致,则记录该出端口子表相对于其他出端口子表的不一致条目数为0。

出端口子表一致,是指两个出端口子表中的条目数一致,且每个条目对应的关键项也一致;反之则认为出端口子表不一致;其中,这里的关键项主要是指流标识id以及流标识id掩码一致。例如,在上述实施例中,执行体1生成的出端口为port1的子表a1,包含na1个流标识id和对应的流标识id掩码;执行体2生成的出端口为port1的子表b1,包含nb1个流标识id和对应的流标识id掩码;将子表a1和子表b1进行比较,如果na1=nb1,且两个子表中的各流标识id对应相同,各流标识id掩码对应相同,则认为执行体1和执行体2的出端口port1子表一致,记录执行体1的子表a1相对于执行体2的子表b1的不一致条目数为0,相应地,执行体2的子表b1相对于执行体1的子表a1的不一致条目数也为0。

步骤s304:如果两个不同执行体生成的出端口子表存在不一致,则记录该出端口子表相对于其他出端口子表的不一致条目数为该出端口子表比对方出端口子表多余的条目数。

仍以子表a1和子表b1进行比较为例,子表a1包含na1个流标识id和对应的流标识id掩码,子表b1包含nb1个流标识id和对应的流标识id掩码,假设子表a1中有p个条目的流标识id和对应流标识id掩码与子表b1中一致。那么,执行体1的子表a1相对于执行体2的子表b1的不一致条目数为na1-p,执行体2的子表b1相对于执行体1的子表a1的不一致条目数为nb1-p。

步骤s305:对于同一出端口子表,该出端口子表与其他各执行体计算的对应出端口子表均完成比较后,选取所有记录结果中的最小值作为本执行体的该出端口子表相对于其他执行体的不一致条目数。

例如,在上述实施例中,对于执行体1的子表a1,需要将子表a1分别与执行体2的子表b1、执行体3的子表c1比较。假设子表a1中有p个条目的流标识id和对应流标识id掩码与子表b1中一致,则执行体1的子表a1相对于执行体2的子表b1的不一致条目数为na1-p;假设子表a1中有k个条目的流标识id和对应流标识id掩码与子表c1中一致,则执行体1的子表a1相对于执行体3的子表c1的不一致条目数为na1-k;因此,执行体1的子表a1相对于其他执行体的不一致条目数为na1-p和na1-k中的较小值。

步骤s306:对所有出端口子表均完成比较后,计算每个执行体出端口子表的不一致条目数总和,并选择不一致条目数总和最少的执行体作为安全执行体。

例如,在上述实施例中,执行体1共有a1、a2、a3三个子表,假设比较后得到执行体1的子表a1相对于其他执行体的不一致条目数为r,执行体1的子表a2相对于其他执行体的不一致条目数为s,执行体1的子表a3相对于其他执行体的不一致条目数为t,则执行体1相对于其他执行体的不一致条目数为上述三个数的总和,即r+s+t;同理可得执行体2相对于其他执行体的不一致条目数、执行体3相对于其他执行体的不一致条目数,然后比较三个数值的大小。假设执行体1相对于其他执行体的不一致条目数最小,则可确定执行体1为安全执行体。

其中,在进行子表比较时,如果存在执行体与其他执行体明显差异的表项,例如,某个条目下存在的某个表项,仅该执行体存在相应的表项,其余执行体均不存在相应表项,则记录该条目可能为攻击条目,判断该执行体可能受到攻击,为危险执行体,向控制器或者网管系统发送告警信息;控制器或者网管系统收到告警信息后,可进行溯源等处理。

本发明实施例提供的上述比较方法中,通过逐条比较和多数选举机制,不仅可确定安全条目和可能受到攻击的条目,更重要的是还能判断安全执行体和可能受到攻击的执行体,变被动防御为主动防御;传统方法中只有逐条比较,只能实现严格匹配的比较,没有多数选举机制,要求不同执行体的流表生成算法必须一致,而本发明实施例可实现多数选举,这就不需要执行体的流表生成算法完全一致,不同执行体可选择不同算法。另外,通过将转发流表按照出端口划分为不同的出端口子表,可减少匹配表项的复杂度,大大降低计算量。

实施例5

在上述实施例1的基础上,本发明实施例进一步对步骤s3中的“流表裁决下发”过程展开介绍。结合图6,由所述流表裁决管理模块作为执行主体,流表裁决下发的过程具体如下:

步骤s301’:选取任一执行体作为当前生效执行体,并将其生成的转发流表下发至数据平面。所述流表裁决管理模块初始可选取任一执行体作为安全执行体,也就是当前生效执行体,将其生成的转发流表作为安全转发流表下发至所述数据平面;其他执行体生成的转发流表暂时保存,但并不下发。

步骤s302’:定期接收执行体检测模块的检测结果,并与当前生效执行体进行比较,判断检测到的安全执行体与当前生效执行体是否一致。如果安全执行体与当前生效执行体一致,即检测到的安全执行体恰好也是初始选取的安全执行体,则仍沿用当前生效执行体生成的转发流表,无需修改当前生效执行体,也无需对表项进行修改。

步骤s303’:如果检测到的安全执行体与当前生效执行体不一致,则修改当前生效执行体为检测到的安全执行体。

步骤s304’:将更新后的当前生效执行体生成的转发流表下发至数据平面,进而对数据平面转发表模块中的表项进行修改。在修改过程中,对转发流表中的差异部分可进行先添加,后删除不一致的条目,对相同部分不处理,修改完成后删除原执行体生成的多余表项。

在上述流表裁决与管理机制中,通过比较多个执行体计算的转发流表表项,选取满足网络需求最优的安全执行体,作为实际数据平面的转发表项,避免单个执行体受到攻击时出现系统漏洞,实现设备内生安全机制。

实施例6

在上述实施例1的基础上,本发明实施例进一步对步骤s4对应的“业务转发”过程展开介绍。结合图7,数据平面业务转发的过程具体如下:

步骤s401:接收到所述安全处理单元下发的安全转发流表后,根据该安全转发流表中qos约束参数的要求设置调度机制。

所述数据平面接收到流表裁决管理模块下发的安全转发流表后,将相应的表项下发到转发表模块,同时根据安全转发流表中qos约束参数的要求在数据平面进行相应的处理:如果需要带宽保证,则根据流标识id在数据平面进行相应的带宽预留;如果需要时延或者抖动要求,则根据要求值在数据平面设置相应的特定调度队列。

步骤s402:接收到数据包之后,根据入端口网络类型识别数据包的关键字段。

所述数据平面的收发包处理模块接收到数据包之后,根据入端口网络类型识别数据包的关键字段,如ip网络的源ip地址和目的ip地址、mpls网络的转发标签、确定性网络中的流标识信息、二层网络中的vlanid等。其中,如果是ip网络,则识别其源ip地址和目的ip地址;如果是mpls网络,则识别其转发标签;如果是确定性网络,则识别其标识流信息;如果是二层网络,则识别其vlanid。

步骤s403:通过对数据包关键字段进行哈希,计算得到流标识id。

由前述可知,流标识id由网络编号和业务编号两部分组成。网络编号直接根据网络类型确定,例如00表示具有流标识的网络,01表示ip网络,10表示mpls网络,11表示其他网络。业务编号则通过对数据包关键字段进行哈希得到,对于具有流标识的网络,直接使用该网络的流标识数值作为业务编号;对于ip网络,将源ip地址和/或目的ip地址映射为业务编号;对于mpls网络,将转发标签或者流标识标签映射为业务编号;对于其他网络,根据vlanid将相应的转发流映射为业务编号。网络编号和业务编号都获取后,也就得到对应的流标识id。

步骤s404:根据计算的流标识id查找安全转发流表中的相应条目,获取对应的出端口和qos约束参数。例如,如果计算得到的流标识id为id1,则所述收发包处理模块从所述转发表模块中查找id1对应的条目,获取该条目下的出端口和qos约束参数。

步骤s405:根据查找结果进行相应的调度和业务转发。

对接收到的数据包,所述收发包处理模块根据获取到的qos约束参数和步骤s401中设置好的调度机制,进行相应调度;例如,如果需要满足带宽需求,则在数据平面查找相应的带宽预留;如果需要满足时延和抖动的需求,则根据数据平面上相应的调度队列进行处理,满足相应的qos需求。调度完成后,按照获取到的出端口实现数据包的转发;例如,出端口为port2,则通过port2将该数据包转发出去。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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