一种协议无关转发流缓存方法与流程

文档序号:12132073阅读:351来源:国知局
一种协议无关转发流缓存方法与流程

本发明涉及网络通信领域,具体涉及一种适用于多核网络处理器的协议无关转发流缓存方法。



背景技术:

目前,OpenFlow主要考虑的是固定功能的交换机,只支持预置的首部字段。为了能更灵活地对交换机进行编程,开放网络基金会(ONF)提出了一个协议无关层OF-PI,用于表示现有的和新的数据路径协议。OF-PI由一个协议-中性的指令集(如:POF)和一个描述转发平面处理报文的高级语言(如:P4)组成。

此外,SDN(软件定义网络)的一个主要实现是OpenFlow协议,提供了一个开放的转发设备编程接口。

本发明种所指的“协议无关转发”交换机的报文转发模型,与OF-PI相似,但不局限于特定的指令集和高级描述语言。协议无关转发交换机的编程分为配置阶段和运行时阶段。在配置阶段,采用高级语言描述的字段定义、解析器、匹配加动作表和控制流,由控制平面下发到交换机。在运行时阶段,控制平面提供一个运行时API(应用程序编程)与交换机进行交互(如添加、删除流表),交互动作由线协议实现。

OpenvSwitch作为SDN领域非常重要的开源交换机,应用了流缓存的方法。但是OpenvSwitch在多核环境下,对流的分发未充分考虑缓存一致性,其负载均衡依赖于Linux对线程的调度,难以应用到多核实时操作系统中。更重要的是,OpenvSwitch不支持协议无关转发,其流缓存方法不能直接应用到协议无关环境中。至于支持协议无关转发的交换机,如POF虚拟交换机,则完全未考虑流的缓存加速。



技术实现要素:

本发明的目的是解决OpenvSwitch在多核环境下,对流的分发未充分考虑缓存一致性,其负载均衡依赖于Linux对线程的调度,难以应用到多核实时操作系统中;以及OpenvSwitch不支持协议无关转发,其流缓存方法不能直接应用到协议无关环境中。

为实现上述目的,本发明提供了一种适用于多核网络处理器的协议无关转发流缓存方法,将流表关键字段、核心负载、QoS等因素,纳入流调度机制中。该方法意味着能综合考虑缓存利用率、计算资源利用率和QoS等要求。

本发明提供了一种协议无关转发流缓存方法,应用于含有调度模块的协议无关转发交换机,调度模块的调度策略与多个核心的负载和流表关键字段相关,核心包括流缓存;一种协议无关转发流缓存方法包括以下步骤:

由协议无关转发交换机接收报文,通过流调度机制将报文调度到多个核心中的一个核心;

核心收到报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作。

其中,核心收到所述报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

核心收到需要缓存的报文时,将报文中的预定义字段与缓存流进行匹配;

若报文所属流未缓存,则报文按照表项和动作表的数据路径执行,并记录匹配的表项,当数据路径结束时,记录流信息,作为新的缓存数据;

若流缓存空间已满,则删除空闲时间最长的数个流缓存以及空闲时间超出阈值的缓存流;

插入新的缓存流,流程结束。

核心收到所述报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

核心收到需要缓存的所述报文时,将报文中的预定义字段与缓存流进行匹配;

若报文所属流已缓存,则按顺序执行缓存中的表项动作,更新信息,流程结束。

核心收到所述报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

若缓存区未满,则插入新的缓存流,流程结束。

调度模块内计算所述报文的关键字段值时,要保证同一条流调度到同一个所述核心上。

流调度机制中的每个所述核心单独维护流缓存,其中包括缓存的建立、缓存的失效和流表更新引起的缓存删除。

经过协议无关转发交换机的配置阶段或运行阶段得到流调度机制中的所述流表关键字段;

在配置阶段,流表关键字段通过分析控制流的分歧位置得到;

在运行阶段,流表关键字段通过分析流表跳转关系得到。

其中,在运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个核心删除与变动表项相关的流缓存;

若流表更新数量超过预设范围,则需要更新流表关键字段的定义;

若距离上次流表关键字段定义更新超过预设时间则清除并重新统计流表间的跳转信息;

分析并识别所述流表间的跳转信息,选取新的流表关键字段定义,流程结束。

运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个核心删除与变动表项相关的流缓存;

若流表更新数量没有超过预设范围,则流程结束。

在运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个核心删除与变动表项相关的流缓存;

若流表更新数量超过预设范围,则需要更新流表关键字段的定义;

若距离上次流表关键字段定义更新没有超过预设时间,则流程结束。

与现有技术相比,本发明的有益效果为:

1、提供了一种适用于多核网络处理器的流缓存方法。

2、将缓存利用率与计算资源利用率、QoS等目标结合,提供更灵活的流调度机制。

3、核心之间流缓存相互独立,提高缓存利用率,进而提升报文转发性能。

附图说明

图1为本发明实施例提供的一种协议无关转发交换机中的报文转发模型示意图;

图2为本发明实施例提供的一种流调度机制示意图;

图3为本发明实施例提供的一种运行时阶段更新流表关键字段流程图;

图4为本发明实施例提供的一种流缓存匹配流程图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例中提供了一种适用于多核网络处理器的协议无关转发流缓存方法,将流表关键字段、核心负载、QoS等因素,纳入流调度机制中。该方法意味着能综合考虑缓存利用率、计算资源利用率和QoS等要求。以下实施例内容对本发明作进一步的阐述。

图1为本发明实施例提供的一种协议无关转发交换机中的报文转发模型示意图。如图1所示,本发明提供了一种协议无关转发流缓存方法,应用于含有调度模块的协议无关转发交换机,调度模块的调度策略与多个核心的负载和流表关键字段相关,核心包括流缓存;一种协议无关转发流缓存方法包括以下步骤:

由协议无关转发交换机接收报文,通过流调度机制将报文调度到多个核心中的一个核心;

核心收到报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作。

其中,核心收到所述报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

核心收到需要缓存的报文时,将报文中的预定义字段与缓存流进行匹配;

若报文所属流未缓存,则报文按照表项和动作表的数据路径执行,并记录匹配的表项,当数据路径结束时,记录流信息,作为新的缓存数据;

若流缓存空间已满,则删除空闲时间最长的数个流缓存以及空闲时间超出阈值的缓存流;

插入新的缓存流,流程结束。

核心收到所述报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

核心收到需要缓存的所述报文时,将报文中的预定义字段与缓存流进行匹配;

若报文所属流已缓存,则按顺序执行缓存中的表项动作,更新信息,流程结束。

核心收到所述报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

若缓存区未满,则插入新的缓存流,流程结束。

调度模块内计算所述报文的关键字段值时,要保证同一条流调度到同一个所述核心上。

流调度机制中的每个所述核心单独维护流缓存,其中包括缓存的建立、缓存的失效和流表更新引起的缓存删除。

经过协议无关转发交换机的配置阶段或运行阶段得到流调度机制中的所述流表关键字段;

在配置阶段,流表关键字段通过分析控制流的分歧位置得到;

在运行阶段,流表关键字段通过分析流表跳转关系得到。

其中,在运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个核心删除与变动表项相关的流缓存;

若流表更新数量超过预设范围,则需要更新流表关键字段的定义;

若距离上次流表关键字段定义更新超过预设时间

则清除并重新统计流表间的跳转信息;

分析并识别所述流表间的跳转信息,选取新的流表关键字段定义,流程结束。

运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个核心删除与变动表项相关的流缓存;

若流表更新数量没有超过预设范围,则流程结束。

在运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个核心删除与变动表项相关的流缓存;

若流表更新数量超过预设范围,则需要更新流表关键字段的定义;

若距离上次流表关键字段定义更新没有超过预设时间,则流程结束。

此外,具体的,将流表关键字段值被用于流调度计算;通过分析转发路径配置与流量实际路径得到流表关键字段的定义;每个核心单独维护一份流缓存;对已缓存的流加速匹配加动作的执行,为未缓存的流建立缓存,并删除空闲的流缓存。

其中的流调度结果的计算,还包含核心负载、QoS配置与其他信息;流表关键字段的定义,在交换机配置阶段,通过分析流表依赖关系,确定控制流分歧位置获取;在交换机运行时阶段,通过统计流表间跳转信息,确定跳转分支最多、流量最大的流表获取。

在交换机运行时阶段,执行流表关键字段定义的更新,要求变动的流表和表项超过一定数量。流缓存按报文解析的所有字段进行精确匹配。在运行时阶段,控制流会随表项的更新而变动,通过统计流表跳转信息,从跳转分支最多、流量最大的流表中,选取关键字段。

在运行时阶段,流表关键字段定义的更新,要求自上次定义更新超过预设时间,且变动的流表和表项超过一定数量。

当报文对应的流未缓存时,记录报文的匹配加动作执行过程,作为新的流缓存;

当报文对应的流已缓存时,按照缓存中记录的匹配加动作执行过程,对报文进行加速处理;

在插入新的流缓存时,若缓存区已满,删除空闲时间最长的数个流缓存,以及空闲时间超出阈值的流缓存。

为加速报文的匹配加动作执行速度,一种常见的方法是缓存流的匹配加动作执行过程,除流的第一个报文需要执行多次匹配加动作表跳转,后续报文仅需执行一次匹配加动作。其中,流表关键字段,指字段定义中,对流的区分起主要作用的字段。

图2为本发明实施例提供的一种流调度机制示意图。如图2所示,由协议无关转发交换机接收需要缓存的报文,通过流调度机制将报文调度到所述多个核心中的一个核心;

核心收到报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作。将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

核心收到需要缓存的报文时,将报文中的预定义字段与缓存流进行匹配;

若报文所属流未缓存,则报文按照表项和动作表的数据路径执行,并记录匹配的表项,当数据路径结束时,记录流信息,作为新的缓存数据;

若流缓存空间已满,则删除空闲时间最长的数个流缓存以及空闲时间超出阈值的缓存流;

插入新的缓存流,流程结束。

核心收到报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

核心收到需要缓存的报文时,将报文中的预定义字段与缓存流进行匹配;

若报文所属流已缓存,则按顺序执行缓存中的表项动作,更新信息,流程结束。

核心收到报文后,将报文的预定义字段值与流缓存进行匹配,根据匹配结果进行相应的缓存操作的步骤中包括:

若缓存区未满,则插入新的缓存流,流程结束。

其中,调度模块内计算报文的关键字段值时,要保证同一条流调度到同一个所述核心上。

流调度机制中的每个核心单独维护流缓存,其中包括缓存的建立、缓存的失效和流表更新引起的缓存删除。

本发明提供的方法具体包括选取对流量区分起主要作用的关键字段,将其纳入流调度机制中。流表关键字段,在配置阶段,通过分析控制流的分歧位置得到;在运行时阶段,通过分析流表跳转关系得到。每个核心单独维护流缓存。报文在调度到核心后,若存在对应的流缓存,则加速执行;若不存在对应的流缓存,则执行并记录匹配加动作,作为新的流加入缓存。

其中流调度机制中的调度模块纳入了流表关键字段、核心负载和QoS等因素。在配置阶段,流表关键字段的定义初始化步骤如下:

交换机在配置阶段接收控制平面下发的数据路径配置,获取流表依赖关系;

分析流表依赖关系,判断控制流分歧位置,选择流表关键字段定义。

更准确地,本发明提出的在流调度机制中纳入流表关键字段、核心负载、QoS等其他因素的方法。包含以下步骤:

定义流表关键字段。

在配置阶段,通过分析流表依赖关系,确定控制流分歧位置得到关键字段;

计算核心负载、QoS等其他信息;

计算报文关键字段值,保证同一条流调度到同一个核心上。

此外,还有每个核心单独维护流缓存的方法,包括缓存建立,缓存失效和流表更新引起的缓存删除。

流缓存按报文解析的所有字段进行精确匹配。当报文对应的流未缓存时,按以下步骤建立流缓存:

记录报文字段的初始值;

跟踪报文的数据路径,按顺序记录匹配的表项和动作,并记录表项与该流的关联信息;

当报文数据路径结束时,插入新的流缓存。

若缓存空间已满,则删除空闲时间最长的数个流缓存,以及空闲时间超出阈值的流缓存。

当表项被更新或被删除时,删除与表项关联的流缓存。

图3为本发明实施例提供的一种运行时阶段更新流表关键字段流程图。如图3所示,经过协议无关转发交换机的配置阶段或运行阶段得到流调度机制中的流表关键字段;在配置阶段,流表关键字段通过分析控制流的分歧位置得到;在运行阶段,流表关键字段通过分析流表跳转关系得到。运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个核心删除与变动表项相关的流缓存;

若流表更新数量超过预设范围,则需要更新流表关键字段的定义;

若距离上次流表关键字段定义更新超过预设时间则清除并重新统计流表间的跳转信息;

分析并识别所述流表间的跳转信息,选取新的流表关键字段定义,流程结束。

运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个所述核心删除与变动表项相关的流缓存;

若流表更新数量没有超过预设范围,则流程结束。

在运行阶段,更新或删除流表的步骤包括:

协议无关转发交换机接收控制平面的表项更新或者删除的请求;

通知每个所述核心删除与变动表项相关的流缓存;

若流表更新数量超过预设范围,则需要更新流表关键字段的定义;

若距离上次流表关键字段定义更新没有超过预设时间,则流程结束。

具体地,在运行时阶段,更新流表的具体步骤如下:

(1)交换机接收控制平面的表项更新(删除)请求;

(2)通知各个核心删除与变动表项相关的流缓存;

(3)若流表更新数量超过预设范围,需要更新流表关键字段的定义,进入步骤(4),否则流程结束;

(4)若距离上次流表关键字段定义更新超过预设时间,进入步骤(5),否则流程结束;

(5)清除并重新统计流表间跳转信息;

(6)分析流表间跳转信息,识别跳转分支多且流量大的若干流表,选取新的流表关键字段定义。

当报文被调度到核心后,核心根据流缓存匹配情况添加和删除流缓存。

图4为本发明实施例提供的一种流缓存匹配流程图。如图4所示,如图4所示,流缓存匹配步骤如下:

(1)核心收到报文后,将报文的预定义字段值与流缓存进行精确匹配;

(2)若报文所属流已缓存,进入步骤(3),否则进入步骤(4);

(3)按顺序执行缓存中的表项动作,更新流缓存的空闲时间,并记录流跳转等其他信息,流程结束;

(4)报文按照表项加动作表的数据路径执行,记录匹配的表项;

(5)数据路径结束时,记录流信息,作为新的缓存。若流缓存区已满,进入步骤(6),否则进入步骤(7);

(6)删除空闲时间最长的数个流缓存,以及空闲时间超出阈值的流缓存;

(7)插入新的流缓存,流程结束。

当表项被更新或被删除时,删除与表项关联的流缓存。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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