交换设备功能扩展方法及装置、交换设备及存储介质与流程

文档序号:18450578发布日期:2019-08-17 01:14阅读:115来源:国知局
交换设备功能扩展方法及装置、交换设备及存储介质与流程

本发明涉及通信技术,尤指一种交换设备功能扩展方法及装置、交换设备和计算机可读存储介质。



背景技术:

sdn(softwaredefinednetwork,软件定义网络)因其使网络拥有者和运营商能够对网络行为进行编程而取得了巨大的成功。然而,其可编程性目前仅局限于网络控制平面,其数据平面在很大程度上受制于功能固定的包处理硬件。正常情况下,交换设备的数据包解析,转发流程是由设备的交换芯片固化的,所以设备在协议的支持方面并不具备扩展能力。并且,厂商开发新的转发芯片以支持新的协议或者扩展协议特性的代价也非常高,需要将以前的硬件重新设计,势必导致更新成本高,时间周期长等一系列问题。所以在一定程度上,这种将设备功能和协议支持与硬件绑定的模式限制了网络的快速发展。来自普林斯顿的jenniferrexford和斯坦福的nickmckeown教授共同发表了数据面可编程论文《p4:programmingprotocol-independentpacketprocessors》,论文提出了数据面可编程的思想,该论文在sdn界引起了极大的反响和关注度,随后,nick教授等人又发布了《thep4languagespecification》,也就是p4语言规范。p4的出现正推动着交换芯片硬件的重构设计,目前已经有支持p4语言的交换芯片,如barefoot推出的p4交换芯片。用户可以在支持p4语言的交换芯片上定制用户所需的数据面转发流程,不用再被硬件约束。p4语言的目标是用于指导数据面的转发行为,但由于p4语言设计简单,无法支持一些复杂的数据面功能。



技术实现要素:

本发明至少一实施例提供了一种交换设备功能扩展方法、交换设备和计算机可读存储介质,实现sdn网络中交换设备对更多功能的支持。

为了达到本发明目的,本发明至少一实施例提供了一种交换设备功能扩展方法,包括:

获取p4代码;

解析所述p4代码,当所述p4代码中包括满足预设的第一操作注解规范的注解时,生成指示对报文进行第一操作的第一操作配置信息;

将所述第一操作配置信息写入交换设备。

本发明一实施例提供一种交换设备功能扩展装置,包括:

编译器,设置为,获取p4代码,解析所述p4代码,当所述p4代码中包括满足预设的第一操作注解规范的注解时,生成指示对报文进行第一操作的第一操作配置信息;

配置模块,设置为,将所述第一操作配置信息写入交换设备。

本发明之一实施例提供一种交换设备功能扩展装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现上述任一实施例所述的交换设备功能扩展方法。

本发明至少一实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一实施例所述的交换设备功能扩展方法。

本发明一实施例提供一种交换设备功能扩展方法,包括:

接收指示对报文进行第一操作的第一操作配置信息,所述第一操作配置信息基于p4代码中满足预设的第一操作注解规范的注解生成;

接收到报文后,根据所述第一操作配置信息对需要进行第一操作的报文执行第一操作。

本发明一实施例提供一种交换设备,包括:交换模块和第一操作器件,其中:

所述交换模块设置为,接收指示对报文进行第一操作的第一操作配置信息,所述第一操作配置信息基于p4代码中满足预设的第一操作注解规范的注解生成;接收报文后,根据所述第一操作配置信息将需要进行第一操作的报文发送给所述第一操作器件;

所述第一操作器件设置为,对报文执行第一操作。

本发明一实施例提供一种交换设备,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现上述任一实施例所述的交换设备功能扩展方法。

本发明一实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一实施例所述的交换设备功能扩展方法。

与相关技术相比,本发明一实施例中,通过利用p4代码的注解,实现交换设备对第一操作的支持,从而实现对交换设备的功能扩展。而第一操作具体为哪种功能可以根据需要设置,在一实施例中,第一操作为ipsec操作,实现了对ipsec功能的支持。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1是本发明一实施例提供的一种交换设备功能扩展方法流程图;

图2是本发明一实施例提供的一种交换设备功能扩展装置框图;

图3是本发明另一实施例提供的一种交换设备功能扩展方法流程图;

图4是本发明一实施例提供的一种交换设备框图;

图5是本发明一实施例提供的报文处理示意图;

图6是本发明另一实施例提供的报文处理示意图;

图7是本发明另一实施例提供的一种交换设备框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

p4语言支持注解(annotation),在p4程序中加入了相关注解后,如果编译器不能识别此注解,编译器可以对此信息进行忽略,而能够识别此注解的编译器,则可以按照注解的指示完成相关操作,所以,有了注解特性,则可以在不改变p4语法的基础上,对p4的功能进行扩充。因此,本申请利用p4语言中的注解实现对多种功能的支持,即使用p4语言中的注解实现对一些复杂的数据面功能的支持。p4编译器分为前端编译器和后端编译器,前端编译器与目标设备无关,后端编译器与目标设备相关,后端编译器由p4交换设备(支持p4编程的交换设备)厂商提供。所以,在设计p4交换芯片时可以通过p4中的注解来扩充交换设备功能。本申请通过扩展p4注解及编译器中增加对注解的解析,实现对多种功能的支持,比如实现对ipsec(internetprotocolsecurity,因特网协议安全性)操作的支持。

如图1所示,本发明一实施例提供一种交换设备功能扩展方法,包括:

步骤101,获取p4代码;

步骤102,解析所述p4代码,当所述p4代码中包括满足预设的第一操作注解规范的注解时,生成指示对报文进行第一操作的第一操作配置信息;

其中,第一操作注解规范预先定义。所述满足预设的第一操作注解规范的注解中包括对报文进行第一操作的描述信息,该描述信息包括是否需要进行第一操作,如果第一操作包括多种类型,进一步指示执行哪种类型的第一操作。比如,第一操作为ipsec操作时,所述对报文进行第一操作的描述信息包括:报文是否需要做ipsec操作,需要做加密操作还是解密操作等信息。第一操作注解规范即注解的语法格式可以预先设置,可以在芯片的软件开发工具包(softwaredevelopmentkit,sdk)中提供,也可以以其他方式提供,比如在服务器中提供,用户通过访问服务器的方式查看。

相关技术中,根据p4-16规范描述,p4注解以’@’字符开头,通常以@符号后面的字母以小写字母开头为注解的保留关键字如@name(“xxxx”)表示给某个表取个别名为xxxx,并且将此别名作为对外暴露的表名。p4-16规范中建议用户自定义注解时,在@之后以大写字母开头。在本申请一实施例中,通过p4注解扩展功能时,遵循该p4规范,即在@之后以大写字母开头,比如@vendor_ipsec(“xxxx”),表示执行ipsec操作。当然,也可以使用自定义规范,约定好使得p4代码的编译器能识别即可。

步骤103,将所述第一操作配置信息写入交换设备。

该交换设备比如为一交换芯片。

其中,配置信息写入交换设备的方式请参考相关技术,比如通过交换设备的驱动写入。

其中,第一操作可以根据需要扩展的功能设定,比如,第一操作为ipsec操作,ip分片重组操作,等等。

在本发明一实施例中,需要设计一个可以存储第一操作策略信息或第一操作策略指示信息的容器,此容器可以是交换设备固有的元数据结构(p4中的一种与设备相关的结构体信息)的某个字段,也可以是自定义的元数据结构的某个字段。具体的,所述第一操作配置信息中还包括:指示在所述交换设备的预设元数据结构的预设字段写入第一操作策略信息的配置信息,或者,指示在所述交换设备的预设元数据结构的预设字段写入第一操作策略指示信息,在所述第一操作策略指示信息指示的存储区域写入第一操作策略信息的配置信息。交换设备收到该第一操作配置信息后,在所述交换设备的预设元数据结构的预设字段写入第一操作策略信息,或者,在所述交换设备的预设元数据结构的预设字段写入第一操作策略指示信息,并在所述第一操作策略指示信息指示的存储区域写入第一操作策略信息。所述预设元数据结构为交换设备固有的元数据结构,或者为自定义元数据结构,即用户新定义的元数据结构。

其中,第一操作策略信息包括执行第一操作的一些具体策略。以第一操作为ipsec操作为例,第一操作策略信息可以包括以下至少之一:加/解密算法、认证算法、密钥、封装模式、及ipsec操作后报文走向等信息。可以由用户使用p4编程时确定具体的第一操作策略信息,写入p4代码中。

其中,第一操作策略指示信息包括:存储所述第一操作策略信息的存储空间的地址信息或者存储所述第一操作策略信息的存储空间的地址索引信息(比如为一偏移地址信息,实际存储地址由基地址和偏移地址共同决定,基地址可以由交换模块告知第一操作器件)。存储第一操作策略信息的存储空间可以预先设定。元数据结构的预设字段的定义及存储位置,可以在交换设备的sdk中提供,也可以以其他方式提供。

本实施例中,通过扩展p4代码的注解,实现对第一操作的支持。

如图2所示,本发明一实施例提供一种交换设备功能扩展装置,包括:

编译器201,设置为,获取p4代码,解析所述p4代码,当所述p4代码中包括满足预设的第一操作注解规范的注解时,生成指示对报文进行第一操作的第一操作配置信息;

配置模块202,设置为,将所述第一操作配置信息写入交换设备。

其中,编译器201是能识别p4代码的编译器。本实施例中,对已有的p4代码的编译器进行了扩展,使得其能对新增的第一操作的注解进行解析,进而实现对第一操作的支持。

其中,所述第一操作配置信息中还包括:指示在所述交换设备的预设元数据结构的预设字段写入第一操作策略信息的配置信息,或者指示在所述交换设备的预设元数据结构的预设字段写入第一操作策略指示信息,并指示在所述第一操作策略指示信息指示的存储区域写入第一操作策略信息的配置信息。

本发明一实施例提供一种交换设备功能扩展装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现上述交换设备功能扩展方法。

如图3所示,本发明一实施例提供一种交换设备功能扩展方法,包括:

步骤301,交换设备接收指示对报文进行第一操作的第一操作配置信息,所述第一操作配置信息基于p4代码中满足预设的第一操作注解规范的注解生成;

步骤302,交换设备接收到报文后,根据所述第一操作配置信息对需要进行第一操作的报文执行第一操作。

其中,所述根据所述第一操作配置信息对需要进行第一操作的报文执行第一操作包括:

将需要进行第一操作的报文发送至所述第一操作配置信息指示的存储区域,从所述存储区域中读取报文执行第一操作。

在一实施例中,所述第一操作配置信息中还包括:指示在所述交换设备的预设元数据结构的预设字段写入第一操作策略信息的配置信息;或者,指示在所述交换设备的预设元数据结构的预设字段写入第一操作策略以及在所述第一操作策略指示信息指示的存储区域写入第一操作策略信息的配置信息;

所述方法还包括:根据所述第一操作配置信息在所述交换设备的预设元数据结构的预设字段写入第一操作策略信息;或者,在所述交换设备的预设元数据结构的预设字段写入第一操作策略指示信息以及在所述第一操作策略指示信息指示的存储区域写入第一操作策略信息;

所述根据所述第一操作配置信息对需要进行第一操作的报文执行第一操作包括:从所述第一操作配置信息指示的预设元数据结构的预设字段获取第一操作策略信息,或者,从预设元数据结构的预设字段获取第一操作策略指示信息,从所述第一操作策略指示信息指示的存储区域获取第一操作策略信息;

根据所述第一操作策略信息执行第一操作。

在一实施例中,所述第一操作策略指示信息包括:存储所述第一操作策略信息的存储空间的地址信息或者存储所述第一操作策略信息的存储空间的地址索引信息。当第一操作策略指示信息为一地址信息时,直接从该地址获取第一操作策略信息,当第一操作策略指示信息为一地址索引信息时,比如为一偏移地址时,从基地址加偏移地址指示的存储区域获取第一操作策略信息。基地址可以是交换设备已配置的地址,也可以在第一操作配置信息中进行指定。

其中,第一操作可以根据需要扩展的功能设定,比如,第一操作为ipsec操作,ip分片重组操作,等等。

如图4所示,本发明一实施例提供一种交换设备,包括交换模块401和第一操作器件402,其中:

所述交换模块401设置为,接收指示对报文进行第一操作的第一操作配置信息,所述第一操作配置信息基于p4代码中满足预设的第一操作注解规范的注解生成;接收报文后,根据所述第一操作配置信息将需要进行第一操作的报文发送给所述第一操作器件;

所述第一操作器件402设置为,对报文执行第一操作。

在一实施例中,所述交换模块401根据所述第一操作配置信息将需要进行第一操作的报文发送给所述第一操作器件包括:将需要进行第一操作的报文发送至所述第一操作配置信息指示的存储区域;所述存储区域为所述第一操作器件的缓冲区;或者,为所述交换模块的缓冲区中用于第一操作专用队列的区域。

所述第一操作器件402对报文执行第一操作包括:所述第一操作器件从所述存储区域中读取报文,对读取到的报文执行第一操作。

即交换模块401与第一操作器件402之间可以通过队列进行报文传递,也可以由交换模块401直接将报文发送到第一操作器件402自带的缓冲区中。通过队列进行报文传送时,交换模块401在自身的报文缓冲区(packetdatabuffer)中划分一部分空间用作第一操作专用队列的存储区域,将需要进行第一操作的报文发送至该第一操作专用队列,然后指示第一操作器件从该第一操作专用队列读取报文。如果第一操作有多种类型,还可以划分多个存储区域,比如,以ipsec加密和ipsec解密为例,交换模块401在自身的报文缓冲区中划分一部分空间用作ipsec加密专用队列的存储区域,再划分一部分空间用作ipsec解密专用队列的存储区域,交换模块401将需要进行ipsec加密的报文送到交换模块401的缓冲区中用于ipsec加密专用队列的存储区域,将需要进行ipsec解密的报文送到交换模块401的缓冲区中用于ipsec解密专用队列的存储区域。类似的,第一操作器件402的缓冲区也可以划分为多个存储区域,比如,以ipsec加密和ipsec解密为例,在第一操作器件402的缓冲区中划分一部分空间用作ipsec加密专用队列的存储区域,再划分一部分空间用作ipsec解密专用队列的存储区域。交换模块401将需要进行ipsec加密的报文送到第一操作器件402的缓冲区中用于ipsec加密专用队列的存储区域,将需要进行ipsec解密的报文送到第一操作器件402的缓冲区中用于ipsec解密专用队列的存储区域。

在一实施例中,所述交换模块401还设置为,根据所述第一操作配置信息在所述交换设备的预设元数据结构的预设字段写入第一操作策略信息;或者,在所述交换设备的预设元数据结构的预设字段写入第一操作策略指示信息以及在所述第一操作策略指示信息指示的存储区域写入第一操作策略信息,并配置所述第一操作器件从所述预设元数据结构的预设字段获取第一操作策略信息,或者配置所述第一操作器件从所述预设元数据结构的预设字段获取第一操作策略指示信息,在所述第一操作策略指示信息指示的存储区域写获取第一操作策略信息;

所述第一操作器件402执行第一操作包括:根据所述交换模块的配置,从所述预设元数据结构的预设字段获取第一操作策略信息,或者,从所述预设元数据结构的预设字段获取第一操作策略指示信息,从所述第一操作策略指示信息指示的存储区域获取第一操作策略信息;根据所述第一操作策略信息执行第一操作。其中,所述预设元数据结构为固有的元数据结构,或者为自定义元数据结构。

在一实施例中,所述第一操作策略指示信息包括:存储所述第一操作策略信息的存储空间的地址信息或者存储所述第一操作策略信息的存储空间的地址索引信息。

其中,第一操作可以根据需要扩展的功能设定,比如,第一操作为ipsec操作,ip分片重组操作,等等。

其中,第一操作器件402为执行第一操作的功能器件,比如,第一操作为ipsec操作时,第一操作器件402为ipsec器件。ipsec器件是指能够对报文进行ipsec操作(比如加密或解密)的器件,内部可以包含微处理器、sec(security,安全)引擎等处理单元。

需要说明的是,在本发明另一实施例中,交换设备可以只包括上述交换模块401,而第一操作器件402独立设置。

下面通过具体实施例进一步说明本申请。需要说明的是,以下实施例中以第一操作为ipsec操作为例进行说明,但本发明不限于此,其他类型的功能的扩展与ipsec操作的实现类似。

实施例一

本实施例中,使用交换设备固有元数据结构中的字段携带ipsec上下文,其中,ipsec上下文可以是ipsec策略,也可以是ipsec策略指示信息。另外,本实施例中,从交换设备的报文缓冲区中划分一部分空间用作ipsec专用队列的存储空间,需要说明的是,用作ipsec专用队列的存储空间可以进一步划分两部分,一部分用于需要进行加密的报文的加密队列的存储空间,另一部分用于需要进行解密的报文的解密队列的存储空间。

本实施例中,设计ipsec注解规范如下:

@vendor_ipsec(“encrypt:1”)表示需要对报文进行加密;

@vendor_ipsec(“encrypt:0”)表示需要对报文进行解密。

需要说明的是,上述注解规范仅为示例,可以根据需要设置为其他格式。

另外,在固有元数据结构中增加一个字段sa_index:16,16代表该字段的大小,本实施例中为16比特,当然,此字段大小仅为示例,可以根据需要使用其他大小的字段。本实施例中,该字段中携带一存储空间地址索引信息,该存储空间地址索引信息指示的存储空间存储用于ipsec操作的ipsec策略,即报文需要使用sa_index指示的存储空间存储的ipsecsa(即ipsec策略)进行ipsec操作。

本实施例中,p4代码中增加了ipsec操作的注解,对其进行解析后生成ipsec操作配置信息,具体的,进行如下配置:如果p4代码中使用@vendor_ipsec(“encrypt:1”)进行了描述,则将ipsec专用队列配置到对应的match-action(匹配执行)单元,即match-action单元将需要进行加密操作的报文送到ipsce专用队列所在的存储区域;如果p4代码中使用@vendor_ipsec(“encrypt:0”)进行了描述,则将ipsec专用队列配置到match-action单元,即match-action单元将需要进行解密操作的报文送到ipsce专用队列所在的存储区域;如果没有相关ipsec注解,则将通用队列(commonqueue)配置到match-action单元,即match-action单元将无需进行加解密操作的报文送到通用队列所在的存储区域。match-action单元做完相关操作(比如匹配操作)之后就会把报文发送至所配置的目的地,即将需要进行ipsec操作(加密或解密)的报文发送到ipsec专用队列,将其他报文发送到通用队列。其中,通用队列是交换设备已有的队列,其中也可能包括多种类型的队列,本申请对此不作赘述。

图5中rxmac为接收网口,txmac为发送网口,如图5所示,交换模块接收到报文后,match-action单元(图5中的入口匹配执行)进行匹配,匹配完毕后,将需要进行ipsec处理的报文(比如第一数据格式的报文)发送到ipsec队列中,不需要进行ipsec处理的报文(比如第二数据格式的报文)发送到通用队列中,交换模块配置ipsec器件从哪些队列读取报文,并且指示ipsec器件从交换模块的预设的元数据结构的预设字段里面读取ipsec上下文,具体的,本实施例中为读取sa_index字段携带的存储空间索引信息,ipsec器件根据配置的基地址以及sa_index指示的存储空间索引信息确定存储ipsecsa信息的存储空间,从中读取ipsecsa信息后,根据该ipsecsa信息对报文进行ipsec处理。ipsec器件对报文处理完之后可以送往ingress(入口)队列,也可以送往egress(出口)队列,具体可以在ipsecsa中进行描述。

实施例二

本实施例中,使用交换设备固有元数据结构中的预设字段携带ipsec上下文。其中,ipsec上下文可以是ipsec策略,也可以是ipsec策略指示信息。另外,本实施例中,ipsec器件自带缓冲区,将需要做ipsec处理的报文直接送往ipsec器件的缓冲区。

本实施例中,设计ipsec注解规范如下:

@vendor_ipsec(“encrypt:1”)表示需要对报文进行加密;

@vendor_ipsec(“encrypt:0”)表示需要对报文进行解密。

在固有元数据结构中增加一个字段sa_index:16,16代表该字段的大小,本实施例中为16比特,本实施例中,该字段中携带一存储空间地址索引信息,该存储空间索引信息指示的存储空间存储用于ipsec操作的ipsec策略,即报文需要使用sa_index指示的存储空间存储的ipsecsa(即ipsec策略)进行ipsec操作。

本实施例中,p4代码中增加了对ipsec操作的注解,对其进行解析后生成ipsec操作配置信息,根据ipsec操作配置信息进行如下配置:如果p4代码中使用@vendor_ipsec(“encrypt:1”)进行了描述,则将ipsec器件的缓冲区配置到对应的match-action单元;如果p4代码中使用@vendor_ipsec(“encrypt:0”)进行了描述,则将ipsec器件的缓冲区配置到match-action单元;如果没有相关ipsec注解,则将芯片自带的通用队列配置到match-action单元。match-action单元做完相关操作(比如匹配操作)之后把报文发送至所配置的目的地。

如图6所示,接收到报文后,不需要进行ipsec处理的报文(比如第一数据格式的报文)发送到通用队列中,需要进行ipsec处理的报文(比如第二数据格式的报文)发送到ipsec器件自带的缓冲区,交换模块配置ipsec器件从哪些队列读取报文,并且指示ipsec器件从交换设备的固有元数据信息里面读取ipsec上下文,具体的,读取sa_index字段携带的存储空间索引信息,ipsec器件根据配置的交换设备配置的基地址以及sa_index指示的存储空间索引信息确定存储ipsecsa信息的存储空间,读取ipsecsa信息后,根据该ipsecsa信息对报文进行ipsec处理。ipsec器件对报文处理完之后可以送往ingress(入口)队列,也可以送往egress(出口)队列,具体在ipsec策略中进行描述。

实施例三

本实施例中,使用自定义元数据结构中字段携带ipsec上下文。其中,ipsec上下文可以是ipsec策略,也可以是ipsec策略指示信息。选择一个元数据(metadata)结构体(非设备自带的固有元数据结构体,在一个p4描述的switch程序中会存在很多元数据结构体,所以可以选择其中一个metadata,如ingress_metadata_t为报文入向元数据结构体),在其中增加一个用于携带ipsec上下文的字段。另外,本实施例中,从交换模块的报文缓冲区中划分一部分空间用作ipsec专用队列的存储空间,需要说明的是,用作ipsec专用队列的存储空间可以进一步划分两部分空间,一部分用于需要进行加密的报文的加密队列的存储空间,另一部分用于需要进行解密的报文的解密队列的存储空间。

本实施例中,设计ipsec注解规范如下:

@vendor_ipsec(“encrypt:1”)表示需要对报文进行加密;

@vendor_ipsec(“encrypt:0”)表示需要对报文进行解密。

另外,在自定义的元数据结构中定义一个字段sa_index:16,16代表该字段的大小,本实施例中为16比特,当然,此字段大小仅为示例,可以根据需要使用其他大小的字段。本实施例中,该字段中携带一存储空间地址索引信息,该存储空间索引信息指示的存储空间存储用于ipsec操作的ipsec策略,即报文需要使用sa_index指示的存储空间存储的ipsecsa(即ipsec策略)进行ipsec操作。

本实施例中,p4代码中增加了ipsec操作的注解,对其进行解析后生成ipsec操作配置信息,具体的,如果p4代码中使用@vendor_ipsec(“encrypt:1”)进行了描述,则将ipsec专用队列配置到对应的match-action单元(如果ipsec专用队列分成了两部分,此时可以将ipsec加密队列配置到对应的match-action单元)。如果p4代码中使用@vendor_ipsec(“encrypt:0”)进行了描述,则将ipsec专用队列配置到match-action单元(如果ipsec专用队列分成了两部分,此时可以将ipsec解密队列配置到对应的match-action单元)。如果没有相关ipsec注解,则将通用队列配置到match-action单元。match-action单元做完相关操作(比如匹配操作)之后就会把报文发送至所配置的目的地。

交换模块接收到报文后,进行匹配,将需要进行ipsec处理的报文发送到ipsec队列中(比如第一数据格式的报文),不需要进行ipsec处理的报文(比如第二数据格式的报文)发送到通用队列中,交换模块配置ipsec器件从哪些队列读取报文,并且指示ipsec器件从交换设备的指定的元数据结构的预设字段里面读取ipsec上下文,具体的,读取sa_index字段携带的存储空间索引信息,ipsec器件根据交换模块配置的基地址以及sa_index指示的存储空间索引信息确定存储ipsecsa信息的存储空间,读取ipsecsa信息后,根据该ipsecsa信息对报文进行ipsec处理。

实施例四

本实施例中,使用自定义元数据结构中的预设字段携带ipsec上下文。选择一个元数据(metadata)结构体(非设备自带的固有元数据结构体,在一个p4描述的switch程序中会存在很多元数据结构体,所以可以选择其中一个metadata,如ingress_metadata_t为报文入向元数据结构体),在其中增加一个用于携带ipsec上下文的字段。本实施例中,ipsec器件自带缓冲区,将需要做ipsec处理的报文直接送往ipsec器件的缓冲区。

本实施例中,设计ipsec注解规范如下:

@vendor_ipsec(“encrypt:1”)表示需要对报文进行加密;

@vendor_ipsec(“encrypt:0”)表示需要对报文进行解密。

另外,在自定义的元数据结构中定义一个字段sa_index:16,16代表该字段的大小,本实施例中为16比特,当然,此字段大小仅为示例,可以根据需要设置为其他值。本实施例中,该字段中携带一存储空间地址索引信息,该存储空间索引信息指示的存储空间存储用于ipsec操作的ipsec策略,即报文需要使用sa_index指示的存储空间存储的ipsecsa(即ipsec策略)进行ipsec操作。

本实施例中,p4代码中增加了对ipsec操作的注解,对其进行解析后生成ipsec操作配置信息,具体的,如果p4代码中使用@vendor_ipsec(“encrypt:1”)进行了描述,则将ipsec器件的缓冲区配置到对应的match-action单元。如果p4代码中使用@vendor_ipsec(“encrypt:0”)进行了描述,则将ipsec器件的缓冲区配置到match-action单元。如果没有相关ipsec注解,则将通用队列配置到match-action单元。match-action单元做完相关操作(比如匹配操作)之后就会把报文发送至所配置的目的地。即将需要进行ipsec操作(加密或解密)的报文发送到ipsec器件的缓冲区,将其他报文发送到通用队列。

交换模块接收到报文后,进行匹配,将需要进行ipsec处理的报文发送到ipsec自带的缓冲区中(比如第一数据格式的报文),不需要进行ipsec处理的报文(比如第二数据格式的报文)发送到通用队列中,交换模块配置ipsec器件从哪些队列读取报文,并且指示ipsec器件从交换模块的指定的元数据结构的预设字段里面读取ipsec上下文,具体的,读取sa_index字段携带的存储空间地址索引信息,ipsec器件根据交换模块配置的基地址以及sa_index指示的存储空间索引信息确定存储ipsecsa信息的存储空间,读取ipsecsa信息后,根据该ipsecsa信息对报文进行ipsec处理。

需要说明的是,上述实施例中,在预设元数据结构的预设字段中携带的是存储空间地址索引信息,在其他实施例中,可以在预设元数据结构的预设字段中直接携带存储空间地址,或者,直接携带ipsec策略。

如图7所示,本发明一实施例提供一种交换设备70,包括存储器710和处理器720,所述存储器710存储有程序,所述程序在被所述处理器720读取执行时,实现上述任一实施例所述的交换设备功能扩展方法。

本发明一实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一实施例所述的交换设备功能扩展方法。

所述计算机可读存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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