一种网络功能动态编排方法、装置和系统与流程

文档序号:13912299阅读:196来源:国知局

本发明实施例涉及互联网技术领域,具体为一种网络功能动态编排方法、装置和系统。



背景技术:

在传统网络中,由于设计复杂和硬件工艺限制等问题,向交换芯片添加新型功能或新型网络协议往往需要数年,导致网络设备难以满足快速新型协议和网络协议的发展要求。针对网络设备演进慢的挑战,斯坦福大学nickmckweon教授领导的团队提出了协议无关的可编程数据平面架构。该架构以可重配置匹配动作表为基础,通过可编程的控制逻辑,构建协议无关的数据包处理流水线,可快速地向交换芯片中添加新型网络功能。通过可编程数据平面架构,设备制造商或网络管理员可以像软件编程一样对交换芯片进行编程,定制交换芯片所支持的网络协议和数据包处理功能,满足实际网络应用和策略的需求。

在以往研究工作基础上,nickmckweon教授研究组针对可编程数据平面架构提出了领域特定语言p4。p4是一种声明式的编程语言,为可编程数据平面提供高级编程抽象。通过p4所提供的语法支持,程序员可以灵活地定义可编程交换设备行为,实现复杂的数据包处理逻辑。p4也为不同的设备平台(如cpu、智能网卡、交换芯片等)提供了对应的编译器,保证了p4程序在不同平台之间的可移植性。p4语言的提出改变了传统交换设备处理逻辑难以更改、不可编程的困境,为网络架构的演进发展提供了更多方向。

数据平面可编程技术和领域特定语言的出现大大推进了网络数据平面创新,并且通过提升数据平面数据包处理能力,带来了性能和安全性等方面的巨大提升。数据平面可编程技术的提出一方面开创新型研究领域,拥有巨大科研价值,另一方面推动了可编程网络的发展和应用,提升网络的整体性能,带来了潜在的社会经济效益。

数据平面可编程技术以及p4语言使管理员能够快速高效地定义交换设备中的数据包处理功能。通过p4语言,管理员可以开发各种各样的网络功能,比如负载均衡功能,接入控制功能,网络隧道功能等。可以预见,未来会有更多的网络功能实现在可编程数据平面之上,可编程数据平面所包含的网络功能也越来越复杂。网络中的每一个数据包可能会被多个网络功能所处理,并且不同的数据包可能需要不同的网络功能,因此需要管理员根据网络策略的需求编排可编程数据平面所实现的网络功能。

目前的p4语言以及对应可编程数据平面架构存在如下问题:

1)编程复杂:在现有的p4语言以及架构中,程序员需要在配置阶段实现满足网络数据包处理策略需求的p4程序。但是,一方面p4语言仅仅提供可编程数据平面匹配动作表的高层描述,并不能直观地表示数据平面的数据包处理逻辑,造成了p4表达的语义和实际网络数据包处理策略语义之间存在的表达差异,为程序员编写满足网络数据包处理策略的p4程序带来了复杂性;另一方面,网络数据包处理策略本身具有的复杂性加剧了程序员开发p4程序的难度,随着网络规模以及网络所支撑业务数量的增加,网络数据包处理策略的数量和复杂性也随之增长,开发p4程序满足各种网络策略的需求变得十分困难。

2)编排固化:当管理员将p4程序烧写到可编程设备之后,就无法动态地改变可编程设备的数据包处理行为,这就导致了p4程序中网络功能无法被动态编排。固化的p4程序仅仅能够支持十分有限的网络功能编排,无法实时地满足动态的网络策略的需求,p4程序所支持的网络功能之间的编排固化可能会导致可编程网络设备无法满足网络策略对于网络功能编排的需求。



技术实现要素:

为解决现有技术中存在的编程复杂和编程固化的问题,本发明实施例提供一种网络功能动态编排方法、装置和系统。

第一方面,本发明实施例提供一种网络功能动态编排方法,该方法包括:接收数据包;执行初始化流程,具体包括若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;执行网络功能流水线遍历流程,具体包括按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

第二方面,本发明实施例提供一种网络功能动态编排装置,该装置包括:接收单元,所述接收单元用于接收数据包;初始化单元,所述初始化单元用于:若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;网络功能流水线遍历单元,所述网络功能流水线遍历单元用于:按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;循环单元,所述循环单元用于:根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;输出单元,所述输出单元用于所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

第三方面,本发明实施例提供一种网络功能动态编排系统,该系统包括可编程网络设备和网络功能编排器,其中所述可编程网络设备包括本发明实施例提供的任一网络功能动态编排装置;所述网络功能编排器用于下发匹配动作表给所述网络功能动态编排装置,所述匹配动作表与网络功能执行链一一对应。

第四方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:接收数据包;执行初始化流程,具体包括若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;执行网络功能流水线遍历流程,具体包括按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

第五方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法:接收数据包;执行初始化流程,具体包括若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;执行网络功能流水线遍历流程,具体包括按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

本发明实施例提供的网络功能动态编排方法、装置和系统,通过利用模块化的网络功能单元简化了可编程数据平面编程,降低了可编程数据平面架构中存在的编程复杂性,并提高了编程效率,同时通过虚拟化的控制逻辑实现了在运行时动态编排网络功能,满足网络数据包处理策略的实时需求,克服了现有技术中编程固化、无法实时满足动态的网络策略的缺陷。

附图说明

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

图1为本发明实施例提供的网络功能动态编排方法流程图;

图2为本发明实施例提供的令牌结构示意图;

图3为本发明实施例提供的网络功能动态编排装置结构示意图;

图4为本发明实施例提供的网络功能动态编排系统的结构示意图;

图5为本发明实施例提供的电子设备的结构示意图。

具体实施方式

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

图1为本发明实施例提供的网络功能动态编排方法流程图。如图1所示,所述方法包括:

步骤101、接收数据包;

本发明实施例提供的网络功能动态编排方法可以运行在cpu、fpga、npu、可编程交换芯片等多种可编程平台上,所述网络功能动态编排方法对应的装置可称为网络功能动态编排装置。以本发明实施例提供的网络功能动态编排方法实现于交换设备为例,首先,所述网络功能动态编排装置的接收单元接收上游网络设备通过交换设备端口发送来的数据包。

步骤102、执行初始化流程,具体包括:若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;

接收到所述数据包后,所述网络功能动态编排装置的初始化单元对所述数据包执行初始化流程。所述初始化单元判断所述数据包是否应该被初始化单元处理,如果数据包是重投递的数据包,则初始化单元不会处理数据包,否则初始化单元会对数据包进行初始化处理。所述重投递数据包是指已经经过初始化处理、至少执行过一轮网络功能流水线遍历的数据包;非重投递数据包是指还未经过初始化处理,未执行过网络功能流水线遍历的数据包,或者说是从外部网络设备新接收的数据包。初始化单元对数据包的初始化处理过程包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包。

所述网络功能执行链标识用于标识网络功能执行链。初始化单元可由外部网络管理设备获得数据包的网络功能执行链标识以及执行第一轮网络功能流水线遍历所需执行的网络功能单元信息。初始化单元对数据包的初始化处理包括发送所述数据包的网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息给所述数据包。所述数据包的网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元信息可称为初始化信息。

网络功能执行链是指数据包处理策略所指定的网络功能单元的实现顺序。当接收数据包后,初始化单元需要通过提取数据包的有关信息来获得所述数据包的网络功能执行链标识,并发送给所述数据包。具体的方法可以由编程进行设定,如从外部网络管理设备接收的配置信息设定了网络功能执行链标识与ip地址的对应关系,初始化单元便可根据数据包所携带的ip地址,获得数据包的网络功能执行链标识进而发送给所述数据包。

所述初始化处理还包括将执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包。所述网络功能单元可实现所设定的网络功能,通过模块化编程实现。本发明实施例支持p4、pof等多种编程语言。比如如果利用p4语言进行网络编程,在编程阶段,网络功能单元以p4代码块的形式存在于p4网络功能库中,程序员可以通过代码库构建p4程序,而不是像现有p4程序编写过程中重新写p4程序。在运行阶段,网络功能单元作为独立的模块运行在可编程交换设备中。

所述网络功能流水线表示按照预设的优先顺序排列的所述网络功能单元,在编程阶段已设置好。如可支持的网络功能为6个,对应网络功能单元的优先顺序依次为路由、地址翻译、交换、防火墙、监控及多播,则由以上6个按照设定的优先顺序排列的网络功能单元即为所述网络功能流水线。

如接下来步骤103所描述,所述网络功能流水线遍历是指按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包。因此,在网络功能流水线遍历流程中,需要获取当前一轮网络功能流水线遍历中所需要执行的网络功能信息,初始化单元通过对数据包进行初始化处理将执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包。

在初始化流程中,判断所述数据包是否是重投递数据包可通过所述数据包是否携带所述初始化信息来进行判断。如果所述数据包携带所述初始化信息,则是重投递的数据包,不需进行初始化处理;反之,则需进行初始化处理。

步骤103、执行网络功能流水线遍历流程,具体包括:按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;

所述网络功能动态编排装置的网络功能流水线遍历单元执行所述网络功能流水线遍历流程,具体包括:按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,通过获取数据包携带的所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包。在遍历所述网络功能单元的过程中,如果所述网络功能单元对应的网络功能在当前一轮网络功能流水线遍历中需要执行,则触发所述网络功能单元处理所述数据包;反之,如果所述网络功能单元对应的网络功能在当前一轮网络功能流水线遍历中不需要执行,则不触发所述网络功能单元动作。

步骤104、根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;

所述网络功能动态编排装置的循环单元通过所述网络功能执行链标识可以获取与所述网络功能执行链标识对应的网络功能执行链。循环单元可通过外部网络设备获取网络功能执行链标识及对应的网络功能执行链信息。当对所述网络功能流水线进行一轮遍历之后,循环单元检测当前数据包是否执行完所述数据包的网络功能执行链中的网络功能,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行如下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历流程,以执行剩余的网络功能执行链。

步骤105、所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

举一个简单的例子。假设通过交换设备端口接收到某个数据包,初始化单元经判断此数据包不是重投递的数据包,则对数据包进行初始化处理,发送所述数据包的网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元信息给所述数据包。仍假设网络功能流水线所设定的网络功能单元的优先顺序依次为路由、地址翻译、交换、防火墙、监控及多播。若所述数据包的网络功能执行链为交换→监控→路由;执行第1轮网络功能流水线遍历所需执行的网络功能单元为交换和监控,执行第2轮网络功能流水线遍历所需执行的网络功能单元为路由。

初始化处理完成后,执行网络功能流水线遍历流程。依次遍历路由、地址翻译、交换、防火墙、监控及多播6个网络功能单元,由于第1轮网络功能流水线遍历所需执行的网络功能单元为交换和监控,因此只有交换和监控2个网络功能单元对所述数据包进行处理,其余网络功能单元不动作,而且必然先对数据包做交换处理,再做监控处理,这样,经过第1轮网络功能流水线遍历后,网络功能执行链已经执行完的网络功能为交换→监控。

经过第1轮网络功能流水线遍历后,经判断所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重投递数据包,由于数据包是重投递的数据包,因此初始化单元经判断后并不作处理,开始执行下一轮网络功能流水线遍历流程,依次遍历路由、地址翻译、交换、防火墙、监控及多播6个网络功能单元,由于第2轮网络功能流水线遍历所需执行的网络功能单元为路由,因此只有路由这个网络功能单元对所述数据包进行处理,其余网络功能单元不动作,这样便又执行了路由功能。经过2轮网络功能流水线遍历后,网络功能执行链已经执行完的网络功能为交换→监控→路由。经判断,所述网络功能执行链中的网络功能全部执行完毕,输出所述数据包。

需要说明的是,在网络功能流水线遍历中,一定要遵循网络功能流水线所设定的网络功能单元的优先顺序。因此,网络功能执行链中符合网络功能流水线所设定的网络功能单元的优先顺序的网络功能,可以在同一轮网络功能流水线遍历中进行处理,否则,通过进入下一轮或更多轮网络功能流水线遍历完成剩余的网络功能执行链。

本发明实施例通过利用模块化的网络功能单元简化了可编程数据平面编程,降低了可编程数据平面架构中存在的编程复杂性,并提高了编程效率,同时通过虚拟化的控制逻辑实现了在运行时动态编排网络功能,满足网络数据包处理策略的实时需求,克服了现有技术中编程固化、无法实时满足动态的网络策略的缺陷。

进一步地,基于上述实施例,所述初始化处理中通过为所述数据包分配令牌将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;所述下一轮网络功能流水线遍历所需执行的网络功能单元具体通过更新所述令牌得到;

其中,所述令牌包括网络功能执行链id、网络功能位图和状态;

所述网络功能执行链id用于标识所述数据包的网络功能执行链;

所述网络功能位图用于标识当前一轮网络功能流水线遍历中所需要执行的网络功能;

所述状态用于标识当前网络功能执行链对应的有限状态机的状态。

图2为本发明实施例提供的令牌结构示意图。在图2所示的令牌结构中,首先是32位的网络功能执行链id,用于唯一标识属于数据包的网络功能执行链。其次是24位的网络功能位图,用于标识当前一轮网络功能流水线遍历中所需要执行的网络功能,网络位图中的每一位对应着位于网络功能流水线特定位置网络功能单元的网络功能,24位的网络功能位图最多可表示24个网络功能单元的信息,24位的网络功能位图从低位到高位顺次对应优先级别由高到低的网络功能单元,可设置相应位为1表示执行相应位置网络功能单元的网络功能,为0表示不执行相应位置网络功能单元的网络功能。最后是8位的状态位,主要用于标识当前的网络功能执行链对应的有限状态机的状态,通过当前的网络功能执行链对应的有限状态机的状态可得知所述网络功能流水线遍历的轮次。需要说明的是,网络功能执行链id、网络功能位图和状态位的位数可根据实际需要设定。

比如,一个数据包进入后,初始化单元给所述数据包分配令牌,所述令牌的网络功能执行链id为x,网络功能位图为bitmap0,状态为0。

循环单元可通过外部网络设备获得网络功能执行链的匹配动作表。在循环单元的匹配动作表中网络功能执行链idx对应着两个状态分别为0和1,其对应的表项为:

x,0→1,bitmap1

x,1→2,bitmap2

上述第一条表项含义为,对于网络功能执行链idx,状态为0的数据包,循环单元会将该数据包的状态改为1,网络功能位图改为bitmap1,并使用可编程交换设备支持的再循环动作重投递该数据包,经过初始化流程的判断和处理后,使其执行下一轮网络功能流水线遍历。再比如,对于第二条表项,对于网络功能执行链idx,状态为1的数据包,循环单元会将该数据包的状态改为2,网络功能位图改为bitmap2,并使用可编程交换设备支持的再循环动作重投递该数据包,经过初始化流程的判断和处理后,使其再执行下一轮网络功能流水线遍历。对于网络功能执行链idx,状态为2的数据包,循环单元没有查找到后续表项,不需要再对该数据包进行处理,直接输出数据包。由以上也可明显获知,令牌中的状态也可表示当前执行网络功能流水线遍历的轮次,如循环单元未对令牌改动前,状态为0表示完成第一轮遍历,状态为1表示完成第二轮遍历。

在上述实施例的基础上,本发明实施例通过设定合理的令牌结构,简化了程序实现流程,提高了可靠性。

进一步地,基于上述实施例,所述网络功能流水线遍历流程还包括:

利用令牌检查器检查所述数据包携带的所述令牌,若通过所述网络功能位图判断获知需要执行与所述令牌检查器对应的网络功能单元的网络功能,则触发与所述令牌检查器对应的网络功能单元处理所述数据包。

所述令牌检查器与所述网络功能单元一一对应。在按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元的过程中,在遍历某个网络功能单元时,与此网络功能单元对应的令牌检查器会首先检查数据包携带的令牌,具体检查网络功能位图中与此网络功能单元对应的比特位,比如根据设定,如果相应的比特位置1,则认为需要执行该网络功能,则触发此网络功能单元处理所述数据包;如果相应的比特位置0,则认为不需要执行该网络功能,则不触发此网络功能单元动作。

在上述实施例的基础上,本发明实施例通过利用令牌检查器先行判断是否执行对应网络功能单元的功能,进而决定是否触发所述网络功能单元执行,简化了程序处理流程,节省了资源。

进一步地,基于上述实施例,在所述接收数据包之前还包括:接收网络功能编排器下发的匹配动作表,所述匹配动作表与网络功能执行链一一对应。

网络功能编排器给用于实现初始化流程的初始化单元下发的匹配动作表包括网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元信息;网络功能编排器给用于实现再循环过程的循环单元下发的匹配动作表包括网络功能执行链标识和执行网络功能流水线遍历所需执行的网络功能单元的轮换信息。需要注意的是,不是在每次接收数据包之前都需接收网络功能编排器下发的匹配动作表,网络功能编排器下发的匹配动作表实际是一种网络配置,当有此网络配置需求的时候才会接收网络功能编排器下发的匹配动作表。

如,网络功能编排器给用于实现初始化流程的初始化单元下发的匹配动作表可以表示如下:

特定数据包的匹配域→x,bitmap0

以上表示对于能够匹配特定数据包匹配域的所有数据包,网络功能执行链id设置为x,第一轮网络功能位图设置为bitmap0;状态默认为0。

网络功能编排器给用于实现再循环过程的循环单元下发的匹配动作表可以表示如下:

x,0→1,bitmap1

x,1→2,bitmap2

如前面所讨论,通过以上匹配动作表,实现了两次数据包重投递,执行了三轮网络功能流水线遍历,分别执行了bitmap0、bitmap1、bitmap2所对应的网络功能。此处不再赘述。

在上述实施例的基础上,本发明实施例通过接收网络功能编排器下发的匹配动作表,便利了网络功能的动态编排。

图3为本发明实施例提供的网络功能动态编排装置结构示意图。如图3所示,该装置包括接收单元10、初始化单元20、网络功能流水线遍历单元30、循环单元40和输出单元50,其中:

接收单元10用于接收数据包;

所述网络功能动态编排装置的接收单元10用于接收上游网络设备通过可编程网络设备端口发送来的数据包。

初始化单元20用于:若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;

接收到所述数据包后,所述网络功能动态编排装置的初始化单元20判断所述数据包是否应该被初始化单元20处理,如果数据包是重投递的数据包,则初始化单元20不会处理数据包,否则初始化单元20会对数据包进行初始化处理。初始化单元20对数据包的初始化处理过程包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包。所述数据包的网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元信息可称为初始化信息。

其中,判断所述数据包是否是重投递数据包可通过所述数据包是否携带所述初始化信息来进行判断。如果所述数据包携带所述初始化信息,则是重投递的数据包,不需进行初始化处理;反之,则需进行初始化处理。

网络功能流水线遍历单元30用于:按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;

网络功能流水线遍历单元30按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,通过获取数据包携带的所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包。在遍历所述网络功能单元的过程中,如果所述网络功能单元对应的网络功能在当前一轮网络功能流水线遍历中需要执行,则触发所述网络功能单元处理所述数据包;反之,如果所述网络功能单元对应的网络功能在当前一轮网络功能流水线遍历中不需要执行,则不触发所述网络功能单元动作。

循环单元40用于:根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;

循环单元40通过所述网络功能执行链标识可以获取与所述网络功能执行链标识对应的网络功能执行链。当对所述网络功能流水线进行一轮遍历之后,循环单元40检测所述数据包的网络功能执行链中的网络功能是否全部执行完毕,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行如下动作:重投递数据包至接收单元10、触发初始化单元20动作、触发网络功能流水线遍历单元30动作,以执行剩余的网络功能链。

输出单元50用于:所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

本发明实施例通过利用模块化的网络功能单元简化了可编程数据平面编程,降低了可编程数据平面架构中存在的编程复杂性,并提高了编程效率,同时通过虚拟化的控制逻辑实现了在运行时动态编排网络功能,满足网络数据包处理策略的实时需求,克服了现有技术中编程固化、无法实时满足动态的网络策略的缺陷。

进一步地,基于上述实施例,所述初始化单元20通过为所述数据包分配令牌将所述数据包的网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;所述循环单元40通过更新所述令牌得到所述下一轮网络功能流水线遍历所需执行的网络功能单元;

其中,所述令牌包括网络功能执行链id、网络功能位图和状态;

所述网络功能执行链id用于标识所述数据包的网络功能执行链;

所述网络功能位图用于标识当前一轮网络功能流水线遍历中所需要执行的网络功能;

所述状态用于标识当前网络功能执行链对应的有限状态机的状态。

所述初始化单元20通过发送所述令牌给数据包实现初始化处理,在进行一轮网络功能流水线遍历后,循环单元40会判断所述数据包的网络功能执行链是否执行完毕,如果没有执行完毕,则更新所述令牌,开启下一轮网络功能流水线遍历,直至循环单元40判断获知所述数据包的网络功能执行链全部执行完毕,由输出单元50输出所述数据包。

在上述实施例的基础上,本发明实施例通过设定合理的令牌结构,简化了程序实现流程,提高了可靠性。

进一步地,基于上述实施例,所述网络功能流水线遍历单元30还用于:利用令牌检查器检查所述数据包携带的所述令牌,若通过所述网络功能位图判断获知需要执行与所述令牌检查器对应的网络功能单元的网络功能,则触发与所述令牌检查器对应的网络功能单元处理所述数据包。

所述令牌检查器与所述网络功能单元一一对应。在网络功能流水线遍历单元30按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元的过程中,在遍历某个网络功能单元时,与此网络功能单元对应的令牌检查器会首先检查数据包携带的令牌,具体检查网络功能位图中与此网络功能单元对应的比特位,比如根据设定,如果相应的比特位置1,则认为需要执行该网络功能,则触发此网络功能单元处理所述数据包;如果相应的比特位置0,则认为不需要执行该网络功能,则不触发此网络功能单元动作。

在上述实施例的基础上,本发明实施例通过利用令牌检查器先行判断是否执行对应网络功能单元的功能,进而决定是否触发所述网络功能单元执行,简化了程序处理流程,节省了资源。

本发明实施例提供装置是用于上述方法的,具体功能可参照上述方法流程,此处不再赘述。

图4为本发明实施例提供的网络功能动态编排系统的结构示意图。所述网络功能动态编排系统包括可编程网络设备和网络功能编排器,其中所述可编程网络设备包括如权利要求5-7任一项所提供的网络功能动态编排装置;所述网络功能编排器用于下发匹配动作表给所述网络功能动态编排装置,所述匹配动作表与网络功能执行链一一对应。需要注意的是,以上匹配动作表可在网络功能动态编排装置接收数据前下发,或已经是所述网络功能动态编排装置早已接收、已经存在的。

下面结合图4,以一具体实例介绍本发明实施例提供的网络功能动态编排系统进行网络功能动态编排的过程。

假设网络功能编排器下发给初始化单元的匹配动作表为:

特定数据包的匹配域→x,bitmap0

网络功能编排器下发给循环单元匹配动作表为:

x,0→1,bitmap1

x,1→2,bitmap2

初始化单元和循环单元均为控制单元。假设本发明实施例可支持6个网络功能单元,令牌的网络功能位图可用6位表示。设bitmap0为100010、bitmap1为001000、bitmap2为000001。

通过交换设备端口接收到某个数据包,假设初始化单元经判断获知此数据包不是重投递的数据包,则对数据包进行初始化处理,通过提取数据包的有关信息,如ip地址(可根据需要设定),获取数据包所要执行的网络功能对应的网络功能执行链idx,然后将与所述网络功能执行链idx对应的令牌发送给所述数据包,所述令牌包括网络功能执行链idx、网络功能位图bitmap0及状态0,完成初始化处理。

初始化处理完成后,根据bitmap0按照所设定的网络功能单元的优先顺序开始第一轮网络功能流水线遍历。由图4可知,网络功能流水线所设定的网络功能单元的优先顺序依次为路由、地址翻译、交换、防火墙、监控及多播,则网络功能位图的低位到高位依次与路由、地址翻译、交换、防火墙、监控及多播分别对应。由于bitmap0为100010,可知需要执行的网络功能单元为地址翻译和多播。在网络功能流水线遍历中,与各网络功能单元对应的令牌检查器首先检查数据包携带的令牌,即检查网络功能位图中与相应网络功能单元对应的比特位,如果相应的比特位置1,则认为需要执行该网络功能,则触发相应网络功能单元处理所述数据包;如果相应的比特位置0,则认为不需要执行该网络功能,则不触发相应网络功能单元动作。如路由器所对应的令牌检查器检查令牌后发现与路由器所对应的最低位为0,则不触发路由器处理所述数据包;接下来由地址翻译所对应的令牌检查器检查令牌,发现与地址翻译所对应的次低位为1,则触发地址翻译网络功能单元处理所述数据包……以此顺序顺次进行判定及处理,经过第一轮网络功能流水线遍历后,所执行的网络功能为地址翻译→多播。

经过第一轮网络功能流水线遍历后,循环单元通过查看网络功能执行链idx的匹配动作表,将该数据包的状态改为1,网络功能位图改为bitmap1,并使用可编程交换设备支持的再循环动作重投递该数据包,初始化单元经判定此数据包为重投递数据包,则不作处理,开始执行下一轮网络功能流水线遍历。由于bitmap1为001000,因此在此轮网络功能流水线遍历中所执行的网络功能单元为防火墙。

经过第二轮网络功能流水线遍历后,循环单元通过查看网络功能执行链idx的匹配动作表,将该数据包的状态改为2,网络功能位图改为bitmap2,并使用可编程交换设备支持的再循环动作重投递该数据包,经过初始化流程的判断和处理后,使其再执行下一轮网络功能流水线遍历。由于bitmap2为000001,因此在此轮网络功能流水线遍历中所执行的网络功能单元为路由。

对于网络功能执行链idx,状态为2的数据包,循环单元没有查找到后续表项,不需要再对该数据包进行处理,直接输出数据包。所述数据包完成了数据包处理策略所指定的网络功能执行链,即地址翻译→多播→防火墙→路由。

本发明实施例的网络功能编排器可以通过软件定义网络(softwaredefinednetworking,sdn)控制器实现,并可基于开放网络操作系统(opennetworkingoperatingsystem,onos)实现。

本发明实施例通过利用模块化的网络功能单元简化了可编程数据平面编程,降低了可编程数据平面架构中存在的编程复杂性,并提高了编程效率,同时通过虚拟化的控制逻辑实现了在运行时动态编排网络功能,满足网络数据包处理策略的实时需求,克服了现有技术中编程固化、无法实时满足动态的网络策略的缺陷。

图5为本发明实施例提供的电子设备的结构示意图。如图5所示,电子设备1包括处理器501、存储器502和总线503。其中,所述处理器501和所述存储器502通过所述总线503完成相互间的通信;所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收数据包;执行初始化流程,具体包括若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;执行网络功能流水线遍历流程,具体包括按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收数据包;执行初始化流程,具体包括若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;执行网络功能流水线遍历流程,具体包括按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收数据包;执行初始化流程,具体包括若判断获知所述数据包不是重投递的数据包,则对所述数据包进行初始化处理,所述初始化处理包括将网络功能执行链标识和执行第一轮网络功能流水线遍历所需执行的网络功能单元的信息发送给所述数据包;执行网络功能流水线遍历流程,具体包括按照网络功能流水线预设的网络功能单元的优先顺序,依次遍历所述网络功能单元,结合所述数据包在当前一轮网络功能流水线遍历中所需要执行的网络功能,触发相应的网络功能单元处理所述数据包;根据所述网络功能执行链标识,若判断获知所述数据包的网络功能执行链中的网络功能未全部执行完毕,则重复执行以下动作:重投递数据包,对重投递的所述数据包再次执行所述初始化流程,并根据下一轮网络功能流水线遍历所需执行的网络功能单元再次执行所述网络功能流水线遍历处理流程;所述网络功能执行链中的网络功能全部执行完毕后,输出所述数据包。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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