掌桥专利:专业的专利平台
掌桥专利
首页

拟态控制器与外部设备的通信方法、装置、设备及介质

文献发布时间:2024-04-18 19:52:40



技术领域

本发明涉及互联网通信技术领域,特别涉及一种拟态控制器与外部设备的通信方法、装置、设备及介质。

背景技术

P4Runtime是一组控制平面规范,是基于Protobuf(Protocol Buffer,一种跨语言、跨平台、可扩展的序列化结构化数据的方式)以及gRPC(Google Remote ProcedureCall,即谷歌开发的远程过程调用框架)框架的协议,用于控制由P4程序定义的设备或者程序的数据平面实体。P4Runtime协议是在交换机设备上开启gRPC server侦听,由控制器作为gRPC client连接交换机设备。P4Runtime协议主要包括以下几种消息类型:Write、Read、SetForwardingPipelineConfig、GetForwardingPipelineConfig、StreamChannel以及Capabilities的请求与响应报文;其中,StreamChannel中还包括MasterArbitrationUpdate消息类型。P4Runtime协议的各种消息类型使本地或远程实体能够加载管道/P4程序、发送/接收数据包、仲裁主控权、读写转发表条目、计数器和其他P4实体,P4Runtime使用流式通道用于会话管理。

传统的ONOS(Open Network Operating System,即开放网络操作系统)控制器一般没有防火墙、防病毒等对恶意攻击相关安全防护手段,并且其潜在的漏洞众多,一旦攻击者控制了ONOS控制器设备,就可发起大规模的中间人攻击,进行敏感数据窃取或篡改,甚至导致交换机网络大规模瘫痪。拟态设备提供了一种新的解决思路,拟态ONOS控制器在其架构中引入多个异构冗余的控制器执行体,通过对不同控制器执行体的策略或者周期性调度,对外呈现特征的不确定性变化。通过对各个控制器执行体生成的流表项进行流表裁决,生成共识流表;在差异化设计的前提下,不同控制器执行体存在完全相同漏洞或后门的概率极低,攻击者即使控制了部分控制器执行体,拟态裁决机制也会给识别出其恶意行为,极大地提高拟态设备应对网络攻击的能力。

综上,如何在拟态控制器与外部设备之间建链,以保证拟态控制器中各控制器执行体与外部设备之间数据交互的有效性,便于网络防御中拟态方案的有效实施是目前有待解决的问题。

发明内容

有鉴于此,本发明的目的在于提供一种拟态控制器与外部设备的通信方法、装置、设备及介质,能够在拟态控制器与外部设备之间建链,以保证拟态控制器中各控制器执行体与外部设备之间数据交互的有效性,便于网络防御中拟态方案的有效实施。其具体方案如下:

第一方面,本申请公开了一种拟态控制器与外部设备的通信方法,应用于拟态控制器中的协议代理,该方法包括:

通过目标侦听端口获取拟态控制器中目标控制器执行体发送的连接建立请求,并与所述目标控制器执行体建立第一通信连接;

确定与所述目标侦听端口匹配的目标外部设备端口地址;

若所述目标控制器执行体为主控制器执行体,则与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接,以通过所述第一通信连接和所述第二通信连接实现所述主控制器执行体与所述目标外部设备的通信;

若所述目标控制器执行体为从控制器执行体,则确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接;

若是,则通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信;若否,则执行预设等待操作,以在所述第二通信连接建立完成后,通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信。

可选的,所述确定与所述目标侦听端口匹配的目标外部设备端口地址,包括:

从预先建立的映射关系配置表中确定与所述目标侦听端口匹配的目标外部设备端口地址;所述映射关系配置表中存储有侦听端口地址与设备端口地址之间的映射关系。

可选的,所述通过目标侦听端口获取拟态控制器中目标控制器执行体发送的连接建立请求之前,还包括:

确定目标控制器执行体在连接建立请求中配置的服务端设备端口地址;

从所述映射关系配置表中确定与所述服务端设备端口地址匹配的目标侦听端口地址;

在所述目标控制器执行体中基于网络地址转换机制将所述连接建立请求中的所述服务端设备端口地址转换为所述目标侦听端口地址,以便通过与所述目标侦听端口地址对应的目标侦听端口获取所述连接建立请求。

可选的,所述与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接之后,还包括:

将所述目标外部设备端口地址作为关键字存储至预设的设备连接链表;

相应的,所述确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接,包括:

判断所述设备连接链表中是否存在与所述目标外部设备端口地址对应的关键字;

若存在,则判定所述目标外部设备端口地址对应的目标外部设备已建立所述第二通信连接;若不存在,则判定所述目标外部设备端口地址对应的目标外部设备未建立所述第二通信连接。

可选的,在所述第一通信连接和所述第二通信连接建立完成之后,还包括:

通过所述第一通信连接获取所述目标控制器执行体发送的请求报文;

基于所述请求报文的报文类型确定是否将所述请求报文通过所述第二通信连接发送至所述目标外部设备,并确定与所述请求报文对应的响应报文,以将所述响应报文发送至所述目标控制器执行体。

可选的,所述协议代理为P4Runtime协议代理。

可选的,所述基于所述请求报文的报文类型确定是否将所述请求报文通过所述第二通信连接发送至所述目标外部设备,并确定与所述请求报文对应的响应报文,以将所述响应报文发送至所述目标控制器执行体,包括:

若所述请求报文的报文类型为第一预设类型,则确定所述目标控制器执行体是否为主控制器执行体;所述第一预设类型为MasterArbitrationUpdate;

若所述目标控制器执行体为主控制器执行体,则将所述请求报文通过所述第二通信连接发送至所述目标外部设备,并将所述目标外部设备返回的响应报文存储至第一预设报文缓存列表;

若所述目标控制器执行体为从控制器执行体,则从所述第一预设报文缓存列表中获取与所述请求报文对应的响应报文,并利用所述目标控制器执行体的特征信息更新所述响应报文中的目标字段,以将更新后的所述响应报文发送至所述目标控制器执行体。

可选的,所述基于所述请求报文的报文类型确定是否将所述请求报文通过所述第二通信连接发送至所述目标外部设备,并确定与所述请求报文对应的响应报文,以将所述响应报文发送至所述目标控制器执行体,包括:

若所述请求报文的报文类型为第二预设类型,则将所有控制器执行体的请求报文发送至异常裁决器,以便基于所述异常裁决器的裁决结果从所有所述请求报文中确定出目标请求报文;所述第二预设类型为Write或SetForwardingPipelineConfig;

利用主控制器执行体的特征信息更新所述目标请求报文中的目标字段,并将更新后的所述目标请求报文通过所述第二通信连接发送至所述目标外部设备,以便利用所述目标请求报文对所述目标外部设备的配置信息和转发表进行修改;

获取所述目标外部设备返回的响应报文,并利用各所述控制器执行体对应的流标识对所述响应报文进行更新,以将更新后的所述响应报文发送至各所述控制器执行体。

可选的,所述基于所述请求报文的报文类型确定是否将所述请求报文通过所述第二通信连接发送至所述目标外部设备,并确定与所述请求报文对应的响应报文,以将所述响应报文发送至所述目标控制器执行体,包括:

若所述请求报文的报文类型为第三预设类型,则从第二预设报文缓存列表中获取与所述请求报文对应的响应报文,并利用所述目标控制器执行体对应的流标识对所述响应报文进行处理,以将处理后的所述响应报文发送至所述目标控制器执行体;所述第三预设类型为GetForwardingPipelineConfig、Capabilities和Read中的任意一种类型;

其中,所述第二预设报文缓存列表用于存储所述P4Runtime协议代理按照预设时间定期向所述目标外部设备发送所述第三预设类型的请求报文后,获取的所述目标外部设备返回的响应报文。

可选的,所述从第二预设报文缓存列表中获取与所述请求报文对应的响应报文的过程中,还包括:

若第二预设报文缓存列表中不存在与所述请求报文对应的响应报文,则利用当前所述P4Runtime协议代理的流标识对所述请求报文进行更新,以将更新后的所述请求报文发送至所述目标外部设备,并获取所述目标外部设备返回的响应报文。

第二方面,本申请公开了一种拟态控制器与外部设备的通信装置,应用于拟态控制器中的协议代理,该装置包括:

第一通信连接建立模块,用于通过目标侦听端口获取拟态控制器中目标控制器执行体发送的连接建立请求,并与所述目标控制器执行体建立第一通信连接;

端口地址确定模块,用于确定与所述目标侦听端口匹配的目标外部设备端口地址;

第二通信连接建立模块,用于若所述目标控制器执行体为主控制器执行体,则与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接,以通过所述第一通信连接和所述第二通信连接实现所述主控制器执行体与所述目标外部设备的通信;

通信连接确认模块,用于若所述目标控制器执行体为从控制器执行体,则确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接;

通信模块,用于若是,则通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信;若否,则执行预设等待操作,以在所述第二通信连接建立完成后,通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信。

第三方面,本申请公开了一种电子设备,包括:

存储器,用于保存计算机程序;

处理器,用于执行所述计算机程序,以实现前述公开的拟态控制器与外部设备的通信方法的步骤。

第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的拟态控制器与外部设备的通信方法的步骤。

可见,拟态控制器中的P4Runtime协议代理通过目标侦听端口获取拟态控制器中目标控制器执行体发送的连接建立请求,并与所述目标控制器执行体建立第一通信连接;确定与所述目标侦听端口匹配的目标外部设备端口地址;若所述目标控制器执行体为主控制器执行体,则与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接,以通过所述第一通信连接和所述第二通信连接实现所述主控制器执行体与所述目标外部设备的通信;若所述目标控制器执行体为从控制器执行体,则确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接;若是,则通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信;若否,则执行预设等待操作,以在所述第二通信连接建立完成后,通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信。

由此可见,本申请通过在拟态控制器中设置协议代理,以通过协议代理实现拟态控制器中各控制器执行体与外部设备的建链和后续数据交互。由拟态控制器中的目标控制器执行体发起连接建立请求,协议代理的目标侦听端口接收到该连接建立请求后,协议代理则与目标控制器执行体建立第一通信连接。进一步的,协议代理确定出与目标侦听端口匹配的目标外部设备端口地址,并在目标控制器执行体为主控制器执行体时,主动与目标外部设备端口地址对应的目标外部设备建立第二通信连接,从而即可通过第一通信连接和第二通信连接实现主控制器执行体与目标外部设备的通信;此外,若目标控制器执行体为从控制器执行体,则先确定目标外部设备端口地址对应的目标外部设备是否已建立上述第二通信连接,若是,则即可通过第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信,若第二通信连接未建立,则需等待上述第二通信连接建立完成后,再由第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信。也就是说,本申请中,协议代理与拟态控制器中的各控制器执行体分别建立对应的第一通信连接,而只有在主控制器执行体发起连接建立请求时,协议代理才与外部设备建立第二通信连接,如此一来,通过设置协议代理,拟态控制器中的多个控制器执行体对外只呈现为单一控制器执行体与外部设备建链,即外部设备只能发现一个控制器实例并与其建立通信连接,从而隐藏了拟态控制体中存在多个控制器执行体的特性,极大地降低了针对拟态控制器节点未知漏洞、缺陷、陷门或后门侦察或攻击的有效性,提高了拟态控制器的主动防御能力,保证了拟态控制器中各控制器执行体与外部设备之间数据交互的有效性,便于网络防御中拟态方案的有效实施。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请公开的一种拟态控制器与外部设备的通信方法流程图;

图2为本申请公开的一种拟态ONOS控制器的结构示意图;

图3为本申请公开的一种P4设备、P4Runtime协议代理以及各控制器执行体的系统架构示意图;

图4为本申请公开的一种P4Runtime协议代理针对各控制器执行体发送的不同类型请求报文的处理方法流程图;

图5为本申请公开的一种具体的拟态控制器与外部设备的通信方法流程图;

图6为本申请公开的一种端口地址对应关系示意图;

图7为本申请公开的一种P4Runtime协议代理的SDN网络应用组网图;

图8为本申请公开的一种拟态控制器与外部设备的通信装置结构示意图;

图9为本申请公开的一种电子设备结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

当前,传统的ONOS控制器一般没有防火墙、防病毒等对恶意攻击相关安全防护手段,并且其潜在的漏洞众多,一旦攻击者控制了ONOS控制器设备,就可发起大规模的中间人攻击,进行敏感数据窃取或篡改,甚至导致交换机网络大规模瘫痪。拟态设备提供了一种新的解决思路,拟态ONOS控制器在其架构中引入多个异构冗余的控制器执行体,通过对不同控制器执行体的策略或者周期性调度,对外呈现特征的不确定性变化。通过对各个控制器执行体生成的流表项进行流表裁决,生成共识流表;在差异化设计的前提下,不同控制器执行体存在完全相同漏洞或后门的概率极低,攻击者即使控制了部分控制器执行体,拟态裁决机制也会给识别出其恶意行为,极大地提高拟态设备应对网络攻击的能力。为此,本申请实施例公开了一种拟态控制器与外部设备的通信方法、装置、设备及介质,能够在拟态控制器与外部设备之间建链,以保证拟态控制器中各控制器执行体与外部设备之间数据交互的有效性,便于网络防御中拟态方案的有效实施。

参见图1所示,本申请实施例公开了一种拟态控制器与外部设备的通信方法,应用于拟态控制器中的协议代理,该方法包括:

步骤S11:通过目标侦听端口获取拟态控制器中目标控制器执行体发送的连接建立请求,并与所述目标控制器执行体建立第一通信连接。

本实施例中,拟态控制器具体为拟态ONOS控制器。拟态ONOS控制器的结构如图2中所示,该拟态ONOS控制器包括调度管理器﹑异常裁决器﹑输入/输出协议代理﹑多个控制器执行体。控制器执行体为支持运行P4Runtime协议的控制器实体,本申请实施例对控制器执行体的数量不作限制。调度管理器负责管理各控制器执行体的在线状态。异常判决器与输入/输出协议代理连接,用于从代理读取每个控制器下发的配置/转发表信息,从而判决控制器执行体下发的配置/流表是否存在异常。

本实施例中,拟态控制器中设置的协议代理具体为P4Runtime协议代理,P4Runtime协议代理为图2中输入/输出协议代理中的一部分,同样也与调度管理器和判决控制器进行连接并交互,以通过P4Runtime协议代理实现拟态控制器中各控制器执行体与外部设备的建链和后续P4Runtime协议数据交互。需要指出的是,拟态控制器中的各个控制器执行体为并列设置的主控制器执行体和多个从控制器执行体。其中,拟态控制器的各个控制器执行体作为P4Runtime的客户端;外部设备作为P4Runtime的服务端;P4Runtime协议代理既作为P4Runtime的客户端又作为P4Runtime的服务端。其中,外部设备具体为P4设备,如P4交换机,P4交换机是一种基于P4语言架构的可编程交换机。其中,P4设备、P4Runtime协议代理以及各控制器执行体的系统架构如图3中所示。

当P4Runtime协议代理充当服务端时,由拟态控制器中的目标控制器执行体发起连接建立请求,P4Runtime协议代理的目标侦听端口接收到该连接建立请求后,P4Runtime协议代理则与目标控制器执行体建立第一通信连接。在具体实施方式中,目标侦听端口具体为tcp(Transmission Control Protocol,即传输控制协议)侦听端口或tls(TransportLayer Security,即安全传输层协议)侦听端口,第一通信连接具体为HTTP2(HypertextTransfer Protocol2.0,即超文本传输协议第2版)连接。也即,目标侦听端口接收多个控制器执行体的连接建立请求并与控制器执行体建立HTTP2连接,维护控制器执行体与P4Runtime协议代理之间P4Runtime会话关系,以及通过该HTTP2连接将控制器执行体发送的P4Runtime请求报文通过P4Runtime通道处理后转发给P4交换机。

步骤S12:确定与所述目标侦听端口匹配的目标外部设备端口地址。

本实施例中,P4Runtime协议代理需要进一步确定出与目标侦听端口匹配的目标外部设备端口地址,可以理解的是,拟态控制器的执行体作为客户端时,可以配置多个P4交换机作为服务端,为了区分不同的服务端以及更好的管理服务端,P4Runtime协议代理将侦听端口地址与目标外部设备端口地址设置为一一对应关系,其中,目标外部设备端口地址即为P4交换机的端口地址。

步骤S13:若所述目标控制器执行体为主控制器执行体,则与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接,以通过所述第一通信连接和所述第二通信连接实现所述主控制器执行体与所述目标外部设备的通信。

本实施例中,当目标控制器执行体为主控制器执行体时,P4Runtime协议代理主动与目标外部设备端口地址对应的目标外部设备建立第二通信连接,从而即可通过第一通信连接和第二通信连接实现主控制器执行体与目标外部设备的通信。需要指出的是,上述第二通信连接具体为HTTP2连接。也即,当P4Runtime协议代理充当客户端,且获取到主控制器执行体发送的连接建立请求时,则主动发起建链请求以与P4交换机建立HTTP2连接,维护与交换机建链的会话信息,以及通过该HTTP2连接将P4交换机返回的响应消息分发给发送请求的控制器执行体。

进一步的,需要指出的是,上述与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接之后,还包括:将所述目标外部设备端口地址作为关键字存储至预设的设备连接链表。也即,当HTTP2连接建链成功后,需要将该连接以P4交换机地址端口为关键字存储至预设的设备连接链表;此处的设备连接链表具体为P4交换机连接链表。

步骤S14:若所述目标控制器执行体为从控制器执行体,则确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接。

本实施例中,若目标控制器执行体为从控制器执行体,则先确定目标外部设备端口地址对应的目标外部设备是否已建立上述第二通信连接,即在从控制器执行体发送连接建立请求之前,是否已经有主控制器执行体发送连接建立请求,并完成P4Runtime协议代理与目标外部设备之间的建链。

在具体实施方式中,上述确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接,包括:判断所述设备连接链表中是否存在与所述目标外部设备端口地址对应的关键字;若存在,则判定所述目标外部设备端口地址对应的目标外部设备已建立所述第二通信连接;若不存在,则判定所述目标外部设备端口地址对应的目标外部设备未建立所述第二通信连接。也即,在确定目标外部设备端口地址对应的目标外部设备是否已建立第二通信连接时,则查找设备连接链表中是否存在与目标外部设备端口地址对应的关键字,若存在则说明第二通信连接已建立完成,否则未建立完成。

步骤S15:若是,则通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信;若否,则执行预设等待操作,以在所述第二通信连接建立完成后,通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信。

本实施例中,若第二通信连接已建立完成,则即可通过第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信,若第二通信连接未建立完成,则需等待第二通信连接建立完成后,再由第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信。也就是说,如果P4Runtime协议代理与目标外部设备之间的HTTP2连接已创建,从控制器执行体向目标外部设备发送的报文则直接使用该HTTP2连接发送;如果没有创建,则执行等待操作,直到HTTP2连接创建成功。也就是说,本申请中,P4Runtime协议代理与拟态控制器中的各控制器执行体分别建立对应的第一通信连接,而只有在主控制器执行体发起连接建立请求时,P4Runtime协议代理才与外部设备建立第二通信连接,如此一来,通过设置P4Runtime协议代理,拟态控制器中的多个控制器执行体对外只呈现为单一控制器执行体与外部设备建链,即外部设备只能发现一个控制器实例并与其建立通信连接,从而隐藏了拟态控制体中存在多个控制器执行体的特性,极大地降低了针对拟态控制器节点未知漏洞、缺陷、陷门或后门侦察或攻击的有效性,提高了拟态控制器的主动防御能力,便于网络防御中拟态方案的有效实施。

由此可见,本申请通过在拟态控制器中设置协议代理,以通过协议代理实现拟态控制器中各控制器执行体与外部设备的建链和后续数据交互。由拟态控制器中的目标控制器执行体发起连接建立请求,P4Runtime协议代理的目标侦听端口接收到该连接建立请求后,协议代理则与目标控制器执行体建立第一通信连接。进一步的,协议代理确定出与目标侦听端口匹配的目标外部设备端口地址,并在目标控制器执行体为主控制器执行体时,主动与目标外部设备端口地址对应的目标外部设备建立第二通信连接,从而即可通过第一通信连接和第二通信连接实现主控制器执行体与目标外部设备的通信;此外,若目标控制器执行体为从控制器执行体,则先确定目标外部设备端口地址对应的目标外部设备是否已建立上述第二通信连接,若是,则即可通过第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信,若第二通信连接未建立,则需等待上述第二通信连接建立完成后,再由第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信。也就是说,本申请中,协议代理与拟态控制器中的各控制器执行体分别建立对应的第一通信连接,而只有在主控制器执行体发起连接建立请求时,协议代理才与外部设备建立第二通信连接,如此一来,通过设置协议代理,拟态控制器中的多个控制器执行体对外只呈现为单一控制器执行体与外部设备建链,即外部设备只能发现一个控制器实例并与其建立通信连接,从而隐藏了拟态控制体中存在多个控制器执行体的特性,极大地降低了针对拟态控制器节点未知漏洞、缺陷、陷门或后门侦察或攻击的有效性,提高了拟态控制器的主动防御能力,保证了拟态控制器中各控制器执行体与外部设备之间数据交互的有效性,便于网络防御中拟态方案的有效实施。

参见图4所示,本申请实施例还公开了一种P4Runtime协议代理针对各控制器执行体发送的不同类型请求报文的处理方法,因此,在第一通信连接和第二通信连接建立完成之后,还包括:

步骤S21:通过所述第一通信连接获取所述目标控制器执行体发送的请求报文。

本实施例中,在第一通信连接和第二通信连接建立完成之后,则通过第一通信连接获取目标控制器执行体发送的请求报文。

步骤S22:基于所述请求报文的报文类型确定是否将所述请求报文通过所述第二通信连接发送至所述目标外部设备,并确定与所述请求报文对应的响应报文,以将所述响应报文发送至所述目标控制器执行体。

本实施例中,针对来自各控制器执行体的P4Runtime协议报文,依据请求报文的报文类型确定是否将该P4Runtime协议报文转发给目标外部设备,并确定与请求报文对应的响应报文,以将响应报文发送至目标控制器执行体。

在第一种具体实施方式中,若所述请求报文的报文类型为第一预设类型,则确定所述目标控制器执行体是否为主控制器执行体;所述第一预设类型为MasterArbitrationUpdate;若所述目标控制器执行体为主控制器执行体,则将所述请求报文通过所述第二通信连接发送至所述目标外部设备,并将所述目标外部设备返回的响应报文存储至第一预设报文缓存列表;若所述目标控制器执行体为从控制器执行体,则从所述第一预设报文缓存列表中获取与所述请求报文对应的响应报文,并利用所述目标控制器执行体的特征信息更新所述响应报文中的目标字段,以将更新后的所述响应报文发送至所述目标控制器执行体。

首先需要指出的是,拟态控制器通过StreamChannel报文打开到P4Runtime服务器的双向流通道,来进行会话管理。当控制器执行体发起StreamChannel的双向流通道,P4Runtime协议代理则向P4交换机创建双向流通道,完成StreamChannel报文的角色仲裁请求与响应处理,P4Runtime会话建立成功。

对于StreamChannel报文消息类型为MasterArbitrationUpdate时,则确定目标控制器执行体是否为主控制器执行体,若目标控制器执行体为主控制器执行体,则将请求报文通过第二通信连接发送至目标外部设备,并将目标外部设备返回的响应报文存储至第一预设报文缓存列表;若目标控制器执行体为从控制器执行体,则从第一预设报文缓存列表中获取与请求报文对应的响应报文,并利用目标控制器执行体的特征信息更新响应报文中的目标字段,以将更新后的响应报文发送至目标控制器执行体。

也即,在报文消息类型为MasterArbitrationUpdate时,只将主控制器执行体的请求报文发送给P4交换机进行仲裁主控权,当P4交换机仲裁主控权的响应报文返回给P4Runtime协议代理后,P4Runtime协议代理将其角色缓存至第一预设报文缓存列表。当从控制器执行体发起MasterArbitrationUpdate请求,将之前缓存的响应报文重新组装,主要是替换为请求报文中的election_id字段,也即,利用请求报文中election_id字段的特征信息去更新响应报文中的election_id字段,并将更新后的响应报文返回给发送请求的从控制器执行体。需要注意的是,由于对于第一预设类型的报文,P4Runtime协议代理只会将主控制器执行体发送的请求报文发送至目标外部设备,进而获取到目标外部设备返回的响应报文。因此,若从控制器执行体优先于主控制器执行体发送第一预设类型的报文,那么此时第一预设报文缓存列表中则不存在对应的响应报文,那么从控制器执行体本次的请求是无效的,只有等待主控制器发送第一预设类型的报文后,从控制器执行体发送的请求报文才是有效的,即才能够获取到响应报文。需要指出的是,不同控制器执行体生成的election_id字段是不一致的,P4Runtime协议代理可以预先将各执行体的election_id的信息缓存,便于后续报文包括election_id字段的替换,如Write报文。

在第二种具体实施方式中,若所述请求报文的报文类型为第二预设类型,则将所有控制器执行体的请求报文发送至异常裁决器,以便基于所述异常裁决器的裁决结果从所有所述请求报文中确定出目标请求报文;所述第二预设类型为Write或SetForwardingPipelineConfig;利用主控制器执行体的特征信息更新所述目标请求报文中的目标字段,并将更新后的所述目标请求报文通过所述第二通信连接发送至所述目标外部设备,以便利用所述目标请求报文对所述目标外部设备的配置信息和转发表进行修改;获取所述目标外部设备返回的响应报文,并利用各所述控制器执行体对应的流标识对所述响应报文进行更新,以将更新后的所述响应报文发送至各所述控制器执行体。

也即,对于Write类型或SetForwardingPipelineConfig类型的请求报文,则将各控制器执行体的请求报文发送给异常裁决器进行裁决,以裁决出正确结果,P4Runtime协议代理再将正确的目标请求报文进行重新封装,例如将Write类型报文的election_id字段替换为主执行体的election_id,并会将更新后的目标请求报文发送给P4交换机,从而对P4交换机配置和转发表信息进行修改。P4Runtime协议代理接收P4交换机的响应报文,并利用各控制器执行体对应的流标识(即stream ID)对响应报文进行更新,以将更新后的响应报文发送至各控制器执行体。

在第三种具体实施方式中,若所述请求报文的报文类型为第三预设类型,则从第二预设报文缓存列表中获取与所述请求报文对应的响应报文,并利用所述目标控制器执行体对应的流标识对所述响应报文进行处理,以将处理后的所述响应报文发送至所述目标控制器执行体;所述第三预设类型为GetForwardingPipelineConfig、Capabilities和Read中的任意一种类型;其中,所述第二预设报文缓存列表用于存储所述P4Runtime协议代理按照预设时间定期向所述目标外部设备发送所述第三预设类型的请求报文后,获取的所述目标外部设备返回的响应报文。

也即,对于GetForwardingPipelineConfig类型或Capabilities类型或Read类型的请求报文,P4Runtime协议代理从第二预设报文缓存列表中获取与该类型请求报文对应的响应报文,并对响应报文重新组装,即将stream ID设置为目标控制器执行体发送的stream ID,再将处理后的响应报文发送至目标控制器执行体。需要指出的是,P4Runtime协议代理按照预设定时器规定的时间定期向目标外部设备发送GetForwardingPipelineConfig/Capabilities/Read类型的请求报文,并将目标外部设备返回的与这几种类型对应的响应报文存储至第二预设报文缓存列表,便于不同执行体发送相同的请求信息从第二预设报文缓存列表中获取数据,减少P4Runtime协议代理与外部设备的交互。

进一步的,上述从第二预设报文缓存列表中获取与所述请求报文对应的响应报文的过程中,还包括:若第二预设报文缓存列表中不存在与所述请求报文对应的响应报文,则利用当前所述P4Runtime协议代理的流标识对所述请求报文进行更新,以将更新后的所述请求报文发送至所述目标外部设备,并获取所述目标外部设备返回的响应报文。可以理解的是,若第二预设报文缓存列表中不存在与请求报文对应的响应报文,P4Runtime协议代理对该请求报文进行重新封装后给P4交换机,同时将请求报文、控制器执行体的streamID、请求报文对应的控制器执行体信息、协议代理的发送报文stream ID作为信息存储至第二预设报文缓存列表中;当目标外部设备返回响应报文,则解析响应报文stream ID,通过stream ID查找匹配到对应请求的控制器执行体以及控制器执行体发送的stream ID,将报文重新封装后发送给请求的控制器执行体,即利用目标控制器执行体的stream ID对响应报文进行更新,以将更新后的响应报文发送至目标控制器执行体。

还需要指出的是,P4Runtime协议代理设置连接管理库,管理着P4Runtime协议代理与外部设备之间的HTTP2连接、P4Runtime协议代理与各控制器执行体之间的HTTP2连接的对应关系。P4Runtime协议代理针对每个外部设备的连接都维护着stream ID的管理,针对该连接,每发送一次报文,stream ID值递增1;并维护着协议代理发送的stream ID与控制器执行体发送报文的stream ID的对应关系,便于处理P4交换机返回的响应消息找到对应发送请求的执行体。其中,HTTP2连接中请求报文与响应报文的stream ID的保持一致性。多个控制器执行体对外呈现为一个单一的节点,对内为多个控制器执行体并行执行。

另外,P4Runtime协议代理向调度管理器订阅消息,如果控制器执行体的状态发生改变,调度管理器会向P4Runtime协议代理发起通知,通告控制器执行体的状态信息。当收到调度管理器发送的控制器执行体上下线通知时,P4Runtime协议代理将所有从控制器执行体与P4Runtime协议代理间的链接断开,保证各控制器执行体的状态的一致性。主控制器执行体与P4Runtime协议代理之间的链接保持不变,P4Runtime协议代理与外部设备的链接保证不变。这样,外部设备感知不到内部控制器执行体状态的变化。

如此一来,本发明提供了多个并行执行的控制器执行体对外呈现为一个单一的节点,其中每个控制器都能从外部设备获取设备相关信息,但外部设备只能发现一个控制器实例并与其建立连接,从而隐藏了本装置的多个控制器的特性。通过角色调度和异常判决功能,将异构冗余特性和对外呈现的不确定性引入到控制器节点中,极大地降低针对控制器节点未知漏洞、缺陷、陷门或后门侦察或攻击的有效性,提高了控制器节点的主动防御能力。

参见图5所示,本申请实施例公开了一种具体的拟态控制器与外部设备的通信方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体包括:

步骤S31:确定目标控制器执行体在连接建立请求中配置的服务端设备端口地址,并从预先建立的映射关系配置表中确定与所述服务端设备端口地址匹配的目标侦听端口地址;所述映射关系配置表中存储有侦听端口地址与设备端口地址之间的映射关系。

本实施例中,首先需要确定目标控制器执行体在连接建立请求中配置的服务端设备端口地址,并从预先建立的映射关系配置表中确定出与服务端设备端口地址匹配的目标侦听端口地址。可以理解的是,各控制器执行体中配置的服务端设备端口地址为P4交换机的端口地址,而P4Runtime协议代理将侦听端口地址与P4交换机的端口地址设置为一一对应关系,并将映射关系以list数据结构存储于映射关系配置表,表中参数主要包括:P4Runtime协议代理的侦听端口地址以及P4交换机的端口地址,具体对应关系可如图6中所示。

步骤S32:在所述目标控制器执行体中基于网络地址转换机制将所述连接建立请求中的所述服务端设备端口地址转换为所述目标侦听端口地址,以便通过与所述目标侦听端口地址对应的目标侦听端口获取所述连接建立请求。

本实施例中,由于控制器执行体配置的服务端设备端口地址为P4交换机的端口地址,因此为了让P4Runtime协议代理截获到控制器执行体P4Runtime协议报文,本申请通过引入网络地址转换机制(即NAT机制,Network Address Translation),将发送给P4交换机端口地址的报文,通过NAT转换至映射关系配置表中该P4交换机端口地址对应的P4Runtime协议代理的侦听端口地址,以将报文转交给P4Runtime协议代理处理;P4Runtime协议代理处理后再将报文发送P4交换机。即将连接建立请求中的服务端设备端口地址转换为目标侦听端口地址,以便通过与目标侦听端口地址对应的目标侦听端口截获到该连接建立请求。

步骤S33:通过目标侦听端口获取拟态控制器中目标控制器执行体发送的连接建立请求,并与所述目标控制器执行体建立第一通信连接。

步骤S34:从所述映射关系配置表中确定与所述目标侦听端口匹配的目标外部设备端口地址。

本实施例中,第一通信连接建立成功后,P4Runtime协议代理根据目标侦听端口查找映射关系配置表,以匹配到对应的目标外部设备端口地址,即待建链的P4交换机的地址端口。

步骤S35:若所述目标控制器执行体为主控制器执行体,则与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接,以通过所述第一通信连接和所述第二通信连接实现所述主控制器执行体与所述目标外部设备的通信。

步骤S36:若所述目标控制器执行体为从控制器执行体,则确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接。

步骤S37:若是,则通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信;若否,则执行预设等待操作,以在所述第二通信连接建立完成后,通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信。

其中,关于上述步骤S35、S36和S37更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

可见,本申请实施例中,由于控制器执行体配置的服务端设备端口地址为P4交换机的端口地址,因此为了让P4Runtime协议代理截获到控制器执行体P4Runtime协议报文,本申请中的P4Runtime协议代理将侦听端口地址与P4交换机的端口地址设置为一一对应关系,并将映射关系以list数据结构存储于映射关系配置表,以及引入网络地址转换机制,以将连接建立请求中的服务端设备端口地址转换为目标侦听端口地址,以便通过与目标侦听端口地址对应的目标侦听端口截获到该连接建立请求,从而与目标控制器执行体建立第一通信连接。第一通信连接建立成功后,P4Runtime协议代理根据目标侦听端口查找映射关系配置表,以匹配到对应的目标外部设备端口地址,以便后续完成与目标外部设备的之间第二通信连接的建立。

参见图7所示,本申请实施例公开了一种拟态ONOS控制器的P4Runtime协议代理的处理方法,在SDN(Software Defined Network,即软件定义网络)网络场景下的应用:

首先SDN网络中的R1、R2都运行P4Runtime协议。其中,R1为拟态控制器设备,本实例中共包括了4个控制器执行体和输入/输出代理,此外还包括1个管理调度器和1个异常裁决器;R2为P4交换机。

各控制器执行体配置服务器地址与端口,即配置P4交换机的端口与地址switch_ip_port;P4Runtime协议代理配置本地侦听端口地址proxy_ip_port与P4交换机的端口地址switch_ip_port之间的映射关系配置表;配置NAT转换将发送至P4交换机switch_ip_port的报文转换至P4Runtime协议代理的侦听端口地址proxy_ip_port。

P4Runtime协议代理根据配置的侦听端口地址proxy_ip_port开启侦听。主控制器执行体1向P4交换机发起HTTP2建链,由于经过NAT转换,目的端口地址proxy_ip_port的报文转换至P4Runtime协议代理的proxy_ip_port处理,P4Runtime协议代理与主控制器执行体建链(即图7中A1)成功后,P4Runtime协议代理通过查找映射关系配置表,向P4交换机发起HTTP2建链,与交换机完成HTTP2链接(即图7中S1)建立。

各从控制器执行体2、3、4向P4交换机发起HTTP2建链,由于经过NAT转换,将该目的端口地址报文转换至P4Runtime协议代理处理,与P4Runtime协议代理建链(即图7中A2、A3、A4)成功。P4Runtime协议代理将连接S1以及P4Runtime连接A1﹑A2﹑A3﹑A4关联保存至连接管理库,并以switch_ip_port为关键字,以区分与不同的P4交换机建链。

主控制器执行体发送StreamChannel报文,P4Runtime协议代理经过本地处理,即替换HTTP2报文的Stream ID后,通过P4交换机与P4Runtime协议代理的链接S1发送至P4交换机。P4交换机返回角色的响应报文,交给P4Runtime协议代理处理,P4Runtime协议代理将其响应报文的角色、设备id、election id存储至第一预设缓存报文列表,完成P4Runtime的会话建立。

从控制器执行体发送StreamChannel类型角色请求报文时,P4Runtime协议代理从缓存报文列表查找将election id替换为请求报文的election id,将响应消息返回给请求的执行体表,完成P4Runtime的会话建立。

对于后续P4交换机返回给拟态控制器的P4Runtime报文,P4Runtime协议代理需要替换该HTTP2报文中的Stream ID,并使用P4Runtime协议代理与控制器执行体之间的HTTP2连接(1/2/3/4)发往各个控制器执行体。

对于后续控制器执行体发给P4交换机的P4Runtime报文,P4Runtime协议代理将该P4Runtime报文中的Stream ID进行替换,使用P4Runtime协议代理与P4Runtime交换机之间的HTTP2连接S1发送。

拟态控制器配置转发表信息,控制器各执行体生成转发表后下发给P4Runtime协议代理,P4Runtime协议代理将各控制器执行体流表信息发给异常裁决器,异常裁决器判决后,P4Runtime协议代理选取裁决正确的转发表下发给P4交换机,用于指导P4交换机的转发。

参见图8所示,本申请实施例公开了一种拟态控制器与外部设备的通信装置,应用于拟态控制器中的协议代理,该装置包括:

第一通信连接建立模块11,用于通过目标侦听端口获取拟态控制器中目标控制器执行体发送的连接建立请求,并与所述目标控制器执行体建立第一通信连接;

端口地址确定模块12,用于确定与所述目标侦听端口匹配的目标外部设备端口地址;

第二通信连接建立模块13,用于若所述目标控制器执行体为主控制器执行体,则与所述目标外部设备端口地址对应的目标外部设备建立第二通信连接,以通过所述第一通信连接和所述第二通信连接实现所述主控制器执行体与所述目标外部设备的通信;

通信连接确认模块14,用于若所述目标控制器执行体为从控制器执行体,则确定所述目标外部设备端口地址对应的目标外部设备是否已建立所述第二通信连接;

通信模块15,用于若是,则通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信;若否,则执行预设等待操作,以在所述第二通信连接建立完成后,通过所述第一通信连接和所述第二通信连接实现所述从控制器执行体与所述目标外部设备的通信。

由于装置部分的实施例与上述的实施例相互对应,因此装置部分的实施例请参照上述方法部分的实施例描述,在此不再赘述。

由此可见,本申请通过在拟态控制器中设置协议代理,以通过协议代理实现拟态控制器中各控制器执行体与外部设备的建链和后续数据交互。由拟态控制器中的目标控制器执行体发起连接建立请求,协议代理的目标侦听端口接收到该连接建立请求后,P4Runtime协议代理则与目标控制器执行体建立第一通信连接。进一步的,协议代理确定出与目标侦听端口匹配的目标外部设备端口地址,并在目标控制器执行体为主控制器执行体时,主动与目标外部设备端口地址对应的目标外部设备建立第二通信连接,从而即可通过第一通信连接和第二通信连接实现主控制器执行体与目标外部设备的通信;此外,若目标控制器执行体为从控制器执行体,则先确定目标外部设备端口地址对应的目标外部设备是否已建立上述第二通信连接,若是,则即可通过第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信,若第二通信连接未建立,则需等待上述第二通信连接建立完成后,再由第一通信连接和第二通信连接实现从控制器执行体与目标外部设备的通信。也就是说,本申请中,协议代理与拟态控制器中的各控制器执行体分别建立对应的第一通信连接,而只有在主控制器执行体发起连接建立请求时,协议代理才与外部设备建立第二通信连接,如此一来,通过设置协议代理,拟态控制器中的多个控制器执行体对外只呈现为单一控制器执行体与外部设备建链,即外部设备只能发现一个控制器实例并与其建立通信连接,从而隐藏了拟态控制体中存在多个控制器执行体的特性,极大地降低了针对拟态控制器节点未知漏洞、缺陷、陷门或后门侦察或攻击的有效性,提高了拟态控制器的主动防御能力,保证了拟态控制器中各控制器执行体与外部设备之间数据交互的有效性,便于网络防御中拟态方案的有效实施。

图9为本申请实施例提供的一种电子设备的结构示意图。具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由电子设备执行的拟态控制器与外部设备的通信方法中的相关步骤。

本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。

其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。

其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的拟态控制器与外部设备的通信方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括电子设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。

进一步的,本申请实施例还公开了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的拟态控制器与外部设备的通信方法步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(Random AccessMemory,即RAM)、内存、只读存储器(Read-Only Memory,即ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、只读光盘(Compact Disc Read-Only Memory,即CD-ROM)、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种拟态控制器与外部设备的通信方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种动力电池组系统交流充电测试装置和方法
  • 一种电池组并联充电控制方法及装置
  • 一种带有温度控制的动力电池组充电装置
  • 一种电池组的温度控制装置及带有该装置的电池组
技术分类

06120116334399