可编程数据平面虚拟层构建方法及存储介质与流程

文档序号:14993348发布日期:2018-07-20 22:57阅读:211来源:国知局

本发明属于网络技术领域,具体涉及一种可编程数据平面虚拟层构建方法及内部存储有可编程数据平面虚拟层的存储介质。



背景技术:

可编程数据平面架构是一种协议无关的可重配置的数据平面架构,现有的网络设备制造商和网络管理员基于可编程数据平面架构可对网络设备芯片进行编程,定制实现多种多样功能的网络协议以及数据包处理功能,以适应不同的网络环境需求。

但随着网络的不断发展,协议无关的数据包处理器编程语言实现的网络功能不断复杂化,从而使得现有的可编程数据平面存在如下问题:

1、一旦将程序编译并载入可编程路由交换设备后,就无法动态地修改该设备的数据包处理功能,因此使得该设备的网络功能无法被动态更新;

2、程序无法动态地根据实时的策略调整网络功能的处理顺序,若需修改网络功能的处理顺序,必须重新修改程序并加载到网络设备中;

3、网络硬件设备有限,无法在有限的硬件资源下运行多个程序。

现在亟须一种可动态更新网络功能以及网络功能的排列顺序、并可实现在有限的网络硬件设备运行多个程序的可编程数据“平面”。



技术实现要素:

本发明所要解决的技术问题是现有的可编程数据平面无法动态更新网络功能和网络功能的排列顺序、且无法在在有限的网络硬件设备上运行多个程序。

为了解决上述技术问题,本发明提供了一种可编程数据平面虚拟层构建方法,包括:

构建包括多个虚拟化匹配动作表和多个虚拟化控制逻辑的平面虚拟层;

其中,所述虚拟化控制逻辑和虚拟化匹配动作表可根据第一预设方式被配置为多个网络功能,多个所述网络功能可根据第二预设方式被配置为多个虚拟化可编程数据平面。

优选地,每个所述虚拟化可编程数据平面内部所述网络功能不同或所述网络功能排列顺序不同。

优选地,可编程数据平面虚拟层构建方法还包括:在所述平面虚拟层中构建虚拟化快速解析器,以用于对数据包进行解析并将解析后的数据包传送给对应的所述虚拟化可编程数据平面。

优选地,所述虚拟化快速解析器对所述数据包的解析及发送步骤包括:

对所述数据包的描述头信息进行解析,以得到虚拟化可编程数据平面序列号以及数据包头长度信息;

根据所述数据包头长度信息获取所述数据包的数据包头,并将所述数据包头发送给与所述虚拟化可编程数据平面序列号对应的虚拟化可编程数据平面。

优选地,所述网络功能的配置步骤包括:

获取与待配置网络功能对应的所述虚拟化控制逻辑和所述虚拟化匹配动作表;

根据第一预设方式将所述虚拟化控制逻辑和所述虚拟化匹配动作表配置为网络功能。

优选地,根据第一预设方式将所述虚拟化控制逻辑和所述虚拟化匹配动作表配置为网络功能的步骤包括:

待配置网络功能的首个虚拟化控制逻辑中的首端配置表根据第一预设方式获取虚拟化匹配动作表位图以及待配置网络功能的序列号;

在每个与所述虚拟化匹配动作表位图对应的虚拟化匹配动作表前设置虚拟化匹配动作表位图检测点,以用于检测所对应的虚拟化匹配动作表是否会被执行;

在所述虚拟化匹配动作表位图末端设置末端配置表,以用于检测数据包是否被执行完成;

重复上述步骤,依次对待配置网络功能的其他虚拟化控制逻辑进行配置,直至所述网络功能配置完成。

优选地,所述虚拟化匹配动作表对数据包的处理步骤包括:

判断所述数据包头是否符合判断条件;

将符合所述判断条件的数据包头与匹配域进行匹配,输出相应的匹配结果和动作位图;

根据所述匹配结果和所述动作位图对所述数据包头进行处理。

优选地,所述可编程数据平面虚拟层构建于硬件可编程数据平面上。

根据本发明的另一个方面,提供了一种存储介质,其存储有可编程数据平面虚拟层,所述可编程数据平面虚拟层包括:

多个匹配动作表和多个控制逻辑,用于根据第一预设方式配置网络功能,且配置的网络功能可根据第二预设方式配置可编程数据平面;

其中,所述虚拟化可编程数据平面用于对数据包进行处理。

优选地,可编程数据层还包括虚拟化快速解析器,所述虚拟化快速解析器用于对数据包进行解析,并将解析后的数据包传送给对应所述虚拟化可编程数据平面。。

与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:

应用本发明实施例提供的可编程数据平面虚拟层构建方法,通过构建包括多个虚拟化匹配动作表和多个虚拟化控制逻辑的平面虚拟层,来使得平面虚拟层具有构建多种网络功能,以及网络功能在平面虚拟层中根据要求任意结合排序,形成多个不同的虚拟化可编程数据平面的功能,即使得所构建的平面虚拟层可包括多个可编程数据平面,以满足在现有硬件资源下同时运行多个程序的要求;同时网络功能的构建以及虚拟化可编程数据平面均可根据管理员的设置进行配置,即管理员可根据待处理数据包内的数据类型以及对数据包的处理要求来配置对数据包进行处理的网络功能以及网络功能的处理顺序,不需通过重新编程及导入过程即可实现网络功能的动态更新以及网络功能处理顺序的修改,提高可编程数据平面的灵活性和资源利用率,且更好的应对网络数据包处理日益复杂的环境要求。

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

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:

图1示出了本发明实施例一可编程数据平面虚拟层构建方法的流程图;

图2示出了虚拟化快速解析器将数据包的数据包头发送给虚拟化可编程数据平面的示意图;

图3示出了虚拟化匹配动作表的一个动作位图示意图;

图4示出了本发明构建的可编程数据平面虚拟层对数据包的处理流程示意图;

图5示出了本发明构建的可编程数据平面虚拟层对数据包的处理过程示意图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

可编程数据平面架构是一种与协议无关的可重配置的数据平面架构,用于对网络设备芯片进行编程,以实现多种多样功能的网络协议以及数据包处理功能,适应不同的网络环境需求。但现有的可编程数据平面存在有如下问题:将程序编译并载入可编程路由交换设备后,就无法动态地修改该设备的数据包处理功能;程序无法动态地根据实时的策略调整网络功能的处理顺序,必须重新修改程序并加载到网络设备中;无法在有限的硬件资源下运行多个程序。

实施例一

为解决现有技术中存在的上述技术问题,本发明实施例提供了可编程数据平面虚拟层构建方法。

图1示出了本发明实施例一可编程数据平面虚拟层构建方法的流程图。

参照图1,本实施例可编程数据平面虚拟层构建方法包括如下步骤:

步骤s101:构建包含多个虚拟化匹配动作表和多个虚拟化控制逻辑的平面虚拟层,其中,虚拟化控制逻辑和虚拟化匹配动作表可根据第一预设方式被配置为多个网络功能,多个网络功能可根据第二预设方式被配置为多个虚拟化可编程数据平面。

具体地,在可运行虚拟化可编程数据平面的硬件上构建平面虚拟层,并在平面虚拟层内构建多个虚拟化匹配动作表和多个虚拟化控制逻辑,为在本发明可编程数据平面虚拟层中配置网络功能以及虚拟化可编程数据平面提供配置基础。

对可编程数据平面虚拟层的配置过程具体如下:

首先,本发明虚拟化可编程数据平面虚拟层在对数据包进行处理之前,管理员可根据第一预设条件将所构建的虚拟化匹配动作表和虚拟化控制逻辑配置成多种网络功能;多种网络功能的配置可使得数据包在所构建的平面虚拟层内可被各种网络功能处理,从而满足人们对数据包逐渐复杂的处理要求,增大了平面虚拟层对数据包的处理范围。具体地,在对数据包进行处理之前,管理员可根据对数据包的处理要求设置第一预设条件,并根据第一预设条件将部分虚拟化匹配动作表和虚拟化控制逻辑配置成不少于一个的网络功能。优选地,可运行虚拟化可编程数据平面的硬件为硬件可编程数据平面。其中,网络功能的具体配置过程在下文中进行详细说明。

其次,所配置的网络功能可根据第二预设条件配置为多个虚拟化可编程数据平面,以使得一个可运行虚拟化可编程数据平面的硬件上可同时运行多个虚拟化可编程数据平面,从而解决现有可编程数据平面架构无法在有限的硬件资源下运行多个程序的问题,提高了硬件资源的利用率。需要说明的是,不同的虚拟化可编程数据平面内部网络功能种类不同或网络功能执行顺序不同。具体地,在根据第一预设条件将虚拟化匹配动作表和虚拟化控制逻辑配置成网络功能之后,管理员可根据对待配置虚拟化可编程数据平面的要求设置第二预设条件,并根据第二预设条件以及提前配置好的网络功能配置虚拟化可编程数据平面,以使得配置出的虚拟化可编程数据平面可对待处理数据包进行符合预设的处理。

需要说明的是,当所配置的虚拟化可编程数据平面不在对数据包进行处理时,管理员可控制本发明可编程数据平面虚拟层将可将虚拟化可编程数据平面拆分为对应的网络功能以及多个虚拟化匹配动作表和多个虚拟化控制逻辑,以使得拆分出的网络功能、虚拟化匹配动作表以及虚拟化控制逻辑可被再次利用。

步骤s102,在平面虚拟层中构建虚拟化快速解析器,以用于对数据包进行解析并将解析后的数据包传送给对应的虚拟化可编程数据平面。

具体地,在平面虚拟层中构建虚拟化快速解析器,并使得所构建的虚拟化快速解析器可与所有配置出的虚拟化可编程数据平面建立连接关系,以便于虚拟化快速解析器将解析过后的数据包传送给对应的虚拟化可编程数据平面。

进一步地,虚拟化快速解析器对数据包的具体解析过程以及将解析过的数据包传送给对应的虚拟化可编程数据平面的具体过程如下:

当待处理的数据包输入到可编程数据平面虚拟层后,虚拟化快速解析器对数据包的描述头信息进行解析,数据包的描述头信息包括虚拟化可编程数据平面序列号以及数据包头的长度信息,虚拟化快速解析器解析出数据包描述头信息中的数据包头的长度信息后,根据数据包头的长度信息获取数据包的数据包头,并将数据包头发送给与虚拟化可编程数据平面序列号对应的虚拟化可编程数据平面,以便于与数据包对应的虚拟化可编程数据平面对数据包进行进一步的处理。

其中,为进一步对虚拟化快速解析器将数据包头发送给虚拟化可编程数据平面的过程进行说明,以下对其进行具体举例说明:

图2示出了虚拟化快速解析器将数据包的数据包头发送给虚拟化可编程数据平面的一种示意图。参照图2,假设可编程数据平面虚拟层包括3个虚拟化可编程数据平面,3个虚拟化可编程数据平面的序列号分别为id1、id2和id3。虚拟化快速解析器对数据包进行解析后,当解析出数据包中包含的虚拟化可编程数据平面序列号为id1时,即将对应的数据包头发送给序列号为id1的虚拟化可编程数据平面,同理当虚拟化快速解析器解析出数据包包含的虚拟化可编程数据平面序列号为id2时,即将对应的数据包头发送给序列号为id2的虚拟化可编程数据平面;当虚拟化快速解析器解析出数据包包含的虚拟化可编程数据平面序列号为id3时,即将对应的数据包头发送给序列号为id3的虚拟化可编程数据平面。

需要说明的是,虚拟化快速解析器仅是将数据包的数据包头发送给所对应的虚拟化可编程数据平面,并没有将整个数据包发送给虚拟化可编程数据平面。

网络功能的具体配置过程如下:

步骤s1011:获取与待配置网络功能对应的虚拟化控制逻辑和虚拟化匹配动作表。

具体地,管理员根据待处理数据包确定待配置的网络功能,即根据对待处理数据包的处理要求确定待配置网络功能,并根据待配置网络功能获取配置网络功能所需的虚拟化控制逻辑和虚拟化匹配动作表。

步骤s1012:根据第一预设方式将虚拟化控制逻辑和虚拟化匹配动作表配置为网络功能。

首先,根据第一预设方式选取待配置网络功能的首个虚拟化控制逻辑,待配置网络功能的首个虚拟化控制逻辑中的首端配置表根据第一预设方式获取对应的虚拟化匹配动作表位图以及当前所配置的网络功能的序号。其中,虚拟化匹配动作表位图指定了在该虚拟化控制逻辑下被执行的虚拟化匹配动作表以及虚拟化匹配动作表的执行顺序,网络功能的序号用于在对数据包进行处理时提示对数据包进行处理的网络功能为哪一个网络功能。其次,在每个与虚拟化匹配动作表位图对应的虚拟化匹配动作表前设置虚拟化匹配动作表位图检测点,以用于检测所对应的虚拟化匹配动作表是否会被执行。最后,在虚拟化匹配动作表位图末端设置末端配置表,以用于检测数据包是否被执行完成。至此,首个虚拟化控制逻辑与其对应的虚拟化匹配动作表匹配完成,之后重复上述步骤依次对待配置网络功能的其他虚拟化控制逻辑进行配置,直至网络功能被配置完成。

需要说明的是,末端配置表主要根据待配置网络功能所属的虚拟化可编程数据平面序列号、待配置网络功能的序号以及当前的虚拟化控制逻辑的虚拟化匹配动作表位图来判断数据包是否被当前虚拟化可编程数据平面上所有的网络功能执行完成。若末端配置表判断数据包未被完全执行完成,则对应的网络功能再次对数据包进行处理。

本发明虚拟化匹配动作表对数据包的处理方式与现有的匹配动作表对数据包的处理方式不同,具体如下:

首先,判断数据包头是否符合判断条件。

具体地,根据虚拟化可编程数据平面序列号确定判断条件中的布尔表达式的种类,之后判断数据包头是否符合判断条件,若数据包头符合判断条件时,将数据包头执行本虚拟化匹配动作表的其他步骤,若数据包头不符合判断条件时,数据包头根据虚拟化匹配动作表位图跳转到下一虚拟化匹配动作表。优选地,判断条件为if-else判断逻辑。需要说明的是,本步骤并不会对数据包做任何处理,仅是根据判断条件确定是否执行本虚拟化匹配动作表的其他步骤。

其次,将符合判断条件的数据包头与匹配域进行匹配,输出相应的匹配结果和动作位图。

具体地,根据判断条件对数据包的判断结果,将符合判断条件的数据包头与虚拟化匹配动作表中的匹配动作表匹配,输出相应的匹配结果和动作位图。其中,匹配结果用于唯一表示匹配步骤的匹配结果,优选地,匹配结果可为32比特宽的元数据;动作位图用于指定在动作步骤所需要执行的动作以及执行动作的顺序。本发明虚拟化匹配动作表为原始数据包头、标准元数据(包括数据包入端口,数据包出端口等)和用户自定义元数据提供统一的匹配模式;在这种匹配模式下,管理员可以动态地定义指定的虚拟化匹配动作表的匹配步骤需要进行匹配的信息以及匹配类型。本发明支持的匹配类型包括精确匹配、最长前缀匹配和掩码匹配。需要说明的是,本步骤也不会对数据包做处理,其目的在于输出相应的匹配结果和动作位图。

最后,根据匹配结果和动作位图对数据包头进行处理。

具体地,根据获取的动作位图判断是否对数据包执行某个动作。例如,图3示出了虚拟化匹配动作表的一个动作位图示意图,参照图3,假设规定动作位图的第0位对应数据包头修改功能,第1位表示数据包丢弃功能,依此类推。如果在动作位图中数据包功能对应的位值为1,那么动作步骤需要执行该动作。即如果第0位的值为1,那么动作步骤则会对数据包执行修改数据包头的操作,否则作步骤则不会对数据包执行修改数据包头的操作,依此类推。对数据包执行的动作是根据匹配结果来决定如何对数据包进行处理的。

需要说明的是,上述虚拟化匹配动作表位图的工作原理相同与动作位图的工作原理相同,对上述虚拟化匹配动作表位图工作原理的理解可参考上述对动作位图工作原理的说明。

图4示出了本发明构建的可编程数据平面虚拟层对数据包的处理流程示意图;图5示出了本发明构建的可编程数据平面虚拟层对数据包的处理过程示意图;参照图4和图5,本发明构建的可编程数据平面虚拟层对数据包的处理流程如下:

步骤s201,当数据包输入到可编程数据平面虚拟层后,虚拟化快速解析器对数据包的描述头信心进行解析,解析出虚拟化可编程数据平面序列号以及数据包头的长度信息,并根据数据包头的长度信息读取数据包头;

步骤s202,虚拟化快速解析器将读取到的数据包头发送给与虚拟化可编程数据平面序列号对应的虚拟化可编程数据平面。在本示例中,假设数据包的虚拟化可编程数据平面序列号为id3;

步骤s203,数据包头被发送到对应的虚拟化可编程数据平面中后,数据包头首先被首个网络功能中的首个虚拟化控制逻辑的首端配置表处理,并根据当前的网络功能配置网络功能序号,即为1。

步骤s204,数据包头进入第一个虚拟匹配动作表位图检测点,若检测虚拟匹配动作表位图第一位为0,那么不执行该虚拟匹配动作表;若检测虚拟匹配动作表位图第一位为1,则执行该虚拟匹配动作表;同理依次进入其他的虚拟匹配动作表位图检测点,并相应的执行虚拟匹配动作表;

步骤s205,数据包头进入末端配置表,末端配置表判断数据包是否被当前虚拟化控制逻辑对应的虚拟化匹配动作表执行完成,若未执行完成,则将数据包头重投递到首端匹配动作表,重新执行,直至首个虚拟化控制逻辑对应的虚拟化匹配动作表执行完成;若执行完成,则对数据包传输到下一个虚拟化控制逻辑的首端配置表中;

步骤s206,重复步骤s203-s205,依次使虚拟化控制逻辑所对应的虚拟化匹配动作表对数据包进行处理。

步骤s207,判断当前网络功能是否被执行完成,若是执行后续步骤,若不是则重新将数据包发送给步骤s206。

步骤s208,重复步骤s201-s206,依次使其他网络功能对数据包进行处理。

步骤s209,判断当前虚拟化可编程数据平面是否对数据包处理完成,若是则将数据包输出,若不是则重新将数据包发送给步骤s208。

应用本发明实施例提供的可编程数据平面虚拟层构建方法,通过构建包括多个虚拟化匹配动作表和多个虚拟化控制逻辑的平面虚拟层,来使得平面虚拟层具有构建多种网络功能,以及网络功能在平面虚拟层中根据要求任意结合排序,形成多个不同的虚拟化可编程数据平面的功能,即使得所构建的平面虚拟层可包括多个可编程数据平面,以满足在现有硬件资源下同时运行多个程序的要求;同时网络功能的构建以及虚拟化可编程数据平面均可根据管理员的设置进行配置,即管理员可根据待处理数据包内的数据类型以及对数据包的处理要求来配置对数据包进行处理的网络功能以及网络功能的处理顺序,不需通过重新编程及导入过程即可实现网络功能的动态更新以及网络功能处理顺序的修改,提高可编程数据平面的灵活性和资源利用率,且更好的应对网络数据包处理日益复杂的环境要求。

实施例二

为解决现有技术中存在的上述技术问题,本发明实施例还提供了一种存储介质,其存储有可编程数据平面虚拟层。

可编程数据平面虚拟层包括快速解析器、多个匹配动作表以及多个虚拟化控制逻辑,多个匹配动作表和多个控制逻辑可根据第一预设方式配置网络功能,且配置的网络功能可根据第二预设方式配置虚拟化可编程数据平面,虚拟化可编程数据平面用于对数据包进行处理。快速解析器用于对数据包进行解析,并将解析后的数据包的数据包头传送给对应的虚拟化可编程数据平面。

其中,根据第一预设方式配置网络功能的过程以及根据第二预设方式配置虚拟化可编程数据平面的过程,与实施例一中虚拟化匹配动作表和虚拟化控制逻辑根据第一预设方式配置网络功能以及利用配置的网络功能根据第二预设方式配置为多个虚拟化可编程数据平面的过程均相同;快速解析器对数据包的具体解析过程以及将解析过的数据包传送给对应的虚拟化可编程数据平面的过程,与实施例一中虚拟化快速解析器对数据包的具体解析过程以及将解析过的数据包传送给对应的虚拟化可编程数据平面的过程相同;同时匹配动作表对数据包的处理方式与实施例一中的虚拟化匹配动作表对数据包的处理方式也相同。因此,上述内容在此不再对其进行赘述。

需要说明的是,可编程数据平面虚拟层对数据包的处理过程与实施例一中可编程数据平面虚拟层对数据包的处理过程也相同,因此本实施例可编程数据平面虚拟层对数据包的具体处理过程在此也不再对其进行赘述。

应用本发明实施例提供的可编程数据平面虚拟层,通过将内部包含的匹配动作表和控制逻辑配置成多个网络功能,并将网络功能在虚拟化可编程数据层中根据要求任意结合排序,形成多个不同的可编程数据平面,以满足同时运行多个程序的要求,同时网络功能的构建以及虚拟化可编程数据平面的构建均是根据管理员的设置进行配置的,即管理员可根据待处理数据包内的数据类型以及对数据包的处理要求来配置对数据包进行处理的网络功能以及网络功能的处理顺序,不需通过重新编程及导入过程即可实现网络功能的动态更新以及网络功能处理顺序的修改,提高了可编程数据平面的灵活性和资源利用率,且更好的应对网络数据包处理日益复杂的环境要求。

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

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