流表实现控制器、转发设备、系统和方法与流程

文档序号:14914531发布日期:2018-07-11 00:21阅读:237来源:国知局

本发明涉及软件定义网络领域,特别涉及一种流表实现控制器、转发设备、系统和方法。



背景技术:

OpenFlow协议是软件定义网络(SDN,Software Defined Networking)领域最重要的控制器南向接口技术之一。其核心理念在于,网络转发设备通过OpenFlow协议获取逻辑上集中部署的控制器下发的OpenFlow流表,进而根据流表的内容对接收到的数据包进行转发、丢弃等操作。

OpenFlow的设计中,流表的构成非常灵活,理论上它可以使用任意的字段组合进行查表。同时,OpenFlow还提出了多级流表的概念,但是对于流表级的数量却未作限制。这都使得OpenFlow芯片在实现上需要付出巨大代价,严重影响了OpenFlow在业界的应用。

为了解决上述问题,ONF(Open Networking Foundation,开放网络基金会)提出了TTP(Table Type Patterns,表类型模式)技术,其核心目标是利用现有芯片的处理逻辑和表项来组合出OpenFlow流表想要的功能。

如图1所示,在现有的TTP实现中,应用的网络资源需求A、需求B和需求C在控制器11中被映射为不同的用例规则A、用例规则B和用例规则C发送给转发设备12、转发设备13和转发设备14。转发设备则基于自身能力,针对每个它能够支持的用例规则定义相应的代理A、代理B和代理C,以处理各用例规则对应的流表实现问题。

由于SDN应用的网络资源需求非常灵活,会导致大量的用例规则,因此如果利用现有的TTP实现机制,网络设备上需要增加多个代理以适配不同流控制规则到硬件逻辑的映射,增加了设备实现的复杂度,影响了OpenFlow的应用效果。



技术实现要素:

本发明实施例所要解决的一个技术问题是:如何降低网络转发设备实现Openflow流表功能的复杂度。

根据本发明实施例的第一个方面,提供一种流表实现控制器,包括:需求分解模块,用于接收网络资源需求,并将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求;驱动控制模块,用于将分解后的网络资源需求转换为过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息,并发送给驱动控制模块对应的转发设备中的代理,以便转发设备中的代理根据控制信息对转发设备中的芯片进行配置。

在一个实施例中,需求分解模块进一步用于接收网络资源需求,并检测网络资源需求中的调用信息所对应的不同类型的接口,将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求。

在一个实施例中,驱动控制模块包括:过滤控制信息生成单元,用于将过滤需求转换为数据入口配置信息;转发控制信息生成单元,用于将转发需求转换为数据出口配置信息;逻辑连接控制信息生成单元,用于将逻辑连接需求转换为不同网络层次和处理功能对应的芯片逻辑之间的连接信息;控制信息发送单元,用于将数据入口配置信息、数据出口配置信息和芯片逻辑之间的连接信息中的至少一种信息发送给驱动控制模块对应的转发设备中的代理。

在一个实施例中,逻辑连接控制信息生成单元进一步用于根据驱动控制模块对应的转发设备的网络层次处理能力,确定逻辑连接需求所对应的芯片逻辑,并生成逻辑连接需求对应的不同芯片逻辑之间的连接信息。

根据本发明实施例的第二个方面,提供一种流表实现转发设备,包括:代理模块,用于根据控制器发送的过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息对转发设备中的芯片进行配置,其中,过滤控制信息、转发控制信息和逻辑连接控制信息是控制器根据网络资源需求生成的。

根据本发明实施例的第三个方面,提供一种流表实现系统,包括:前述任意一种控制器和前述转发设备。

根据本发明实施例的第四个方面,提供一种流表实现方法,包括:控制器接收网络资源需求,并将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求;控制器将分解后的网络资源需求转换为过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息,并发送给驱动控制模块对应的转发设备中的代理,以便转发设备中的代理根据控制信息对转发设备中的芯片进行配置。

在一个实施例中,控制器接收网络资源需求,并将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求包括:控制器接收网络资源需求,并检测网络资源需求中的调用信息所对应的不同类型的接口,将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求。

在一个实施例中,控制器将分解后的网络资源需求转换为过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息包括:控制器将过滤需求转换为数据入口配置信息,将转发需求转换为数据出口配置信息,将逻辑连接需求转换为不同网络层次和处理功能对应的芯片逻辑之间的连接信息。

在一个实施例中,将逻辑连接需求转换为不同网络层次和处理功能对应的芯片逻辑之间的连接信息包括:根据驱动控制模块对应的转发设备的网络层次处理能力,确定逻辑连接需求所对应的芯片逻辑,并生成逻辑连接需求对应的不同芯片逻辑之间的连接信息。

在一个实施例中,方法还包括:转发设备中的代理模块根据控制器发送的过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息对转发设备中的芯片进行配置。

本发明通过将网络资源需求均分解为过滤需求、转发需求和逻辑连接需求,并采用与转发设备对应的驱动控制模块将分解后的需求转换为控制信息并发送给转发设备中的代理,可以将不同的网络资源需求转换为通用的控制信息,从而使转发设备无需根据不同的需求设置不同的代理,降低了转发设备实现Openflow流表功能的复杂度。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

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

图1为现有技术的流表实现系统的一个实施例的结构图。

图2为本发明流表实现系统的一个实施例的结构图。

图3A为本发明流表实现控制器的一个实施例的结构图。

图3B为本发明流表实现控制器的一个实施例的结构图。

图4为本发明流表实现转发设备的一个实施例的结构图。

图5为本发明流表实现方法的一个实施例的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面参考图2描述本发明一个实施例的流表实现系统。

图2为本发明流表实现系统的一个实施例的结构图。如图2所示,该实施例的系统包括控制器30和转发设备40。其中,控制器30包括需求分解模块31和驱动控制模块32;转发设备40包括代理模块41,并且转发设备40仅需要一个代理模块41即可实现本发明的技术方案。控制器30中的驱动控制模块32与转发设备40相对应。

其中,图2实施例仅为示意性地,不对转发设备40的数量起限制性作用,根据需要,系统中的转发设备40可以有一个或多个。

下面分别介绍控制器30和转发设备40的具体结构。

图3A为本发明流表实现控制器的一个实施例的结构图。如图3A所示,该实施例的控制器30包括:需求分解模块31,用于接收网络资源需求,并将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求;驱动控制模块32,用于将分解后的网络资源需求转换为过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息,并发送给驱动控制模块对应的转发设备中的代理,以便转发设备中的代理根据控制信息对转发设备中的芯片进行配置。

其中,网络资源需求是指控制器的北向应用为了实现网络资源部署、网络数据控制而产生的需求。

发明人经过分析后发现,现有的大多数网络资源需求虽然千差万别,但是均可以被抽象为包括“过滤、下一跳、转发”的需求。

例如,对于以下两条网络资源需求“建立VLAN(Virtual Local Area Network,虚拟局域网)二层网络”以及“设置防火墙以仅使网络中的预设IP(Internet Protocol,网络协议)地址可以互相通信”。从需求的表面描述看来,二者完全不同,如果采用现有技术的转换方式,则需要转发设备分别根据建立VLAN的用例规则以及根据IP地址进行访问控制的用例规则建立两个代理。

而本发明的方案可以将用例规则统一化。例如,经过分析发现,上述两个网络资源需求均为“过滤”需求,即从“建立VLAN二层网络”中可以提取“某几个端口发来的消息可以被通过”的需求,从“设置防火墙以仅使网络中的预设IP(Internet Protocol,网络协议)地址可以互相通信”中可以提取“预设IP地址发送的消息可以被接收”的需求。

其中,过滤需求是指当转发设备接收到数据时,是丢弃数据还是继续转发数据的需求;逻辑连接需求即前述的“下一跳”需求,是指转发设备在完成一部分操作后指示下一步执行何种操作的需求,例如在处理二层数据包后再去进行三层数据包处理的需求;转发需求是指输出网络数据包并向下一个设备转发的需求。从而,可以采用这三种需求描述网络资源需求,并将这三种需求分别转换为控制信息。

控制信息是指转发设备为了实现网络资源需求而对转发设备进行控制的信息。驱动控制模块32可以根据需求分解模块31生成的分解后的需求生成相应的控制信息,并发送给转发设备40,从而实现Openflow流表功能。

通过将网络资源需求均分解为过滤需求、转发需求和逻辑连接需求,并采用与转发设备对应的驱动控制模块将分解后的需求转换为控制信息并发送给转发设备中的代理,可以将不同的网络资源需求转换为通用的控制信息,从而使转发设备无需根据不同的需求设置不同的代理,降低了转发设备实现Openflow流表功能的复杂度。

下面分别介绍需求分解模块31和驱动控制模块32的一种具体实现方式。

在一个实施例中,需求分解模块31可以进一步用于接收网络资源需求,并检测网络资源需求中的调用信息所对应的不同类型的接口,将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求。

网络资源需求例如可以为通过编程语言、可标记语言等按照约定的形式进行描述的。需求分解模块31例如可以设置约定的形式中分别与“过滤、下一跳、转发”相对应的具体语句或表述。

以下为采用Flog语言编写的有状态防火墙应用需求的代码片段示例:

flow(dstip=IP),inport=2-->seen(IP).

seen(IP)+->allow(IP).

allow(IP)+->allow(IP).

inport(2)|>fwd(1),level(0).

allow(IP)-->srcip(IP),inport(1)|>fwd(2),level(0).

有状态防火墙的模型可以被设计为一台有两个端口的转发设备,包括外部网络的连接端口1和内部网络的连接端口2。在默认情况下,转发设备将所有到达端口2的数据包转发给端口1,同时记录数据包中的目的IP地址。而当有数据包到达端口1时,如果该数据包的源IP地址与之前记录的IP地址匹配,那么这个数据包会被转发给端口2,如果不匹配,则数据包将被丢弃。

在上述对应用需求的代码描述中,“inport(2)|>fwd(1),level(0).”是指允许端口2接收的所有数据包都可以转发给端口1;“allow(IP)-->srcip(IP),inport(1)|>fwd(2),level(0).”是指对于端口1接收的数据包,仅当数据包的源IP地址具有allow属性时,才可以被转发给端口2。因此,在上述对应用需求的代码描述中,allow相当于过滤,fwd相当于转发。需求分解模块31可以根据这一特点设置接口与需求类别之间的对应关系。

根据预设的对应关系,当需求分解模块31检测到网络资源需求中包括对“allow”接口和“fwd”接口的调用时,即可以将“allow”关联的过滤需求提取出来,将“fwd”关联的转发需求提取出来。

此外,上述示例中仅包括IP层的处理。如果需求分解模块31检测到网络资源需求中在对IP层处理之前还包括MAC(Media Access Control,媒体访问控制)层的处理,则可以记录“处理MAC层后再处理IP层”的逻辑连接需求,从而转发设备可以根据MAC层的转发再做IP层的转发。

从而,需求分解模块31可以根据预设的规则,能够从不同类别的网络资源需求中均提取出“过滤、下一跳、转发”三种类别的需求,实现了需求的通用性提取。

下面参考图3B描述本发明另一个实施例的流表实现控制器。

图3B为本发明流表实现控制器的一个实施例的结构图。如图3B所示,在该实施例的控制器30中,驱动控制模块32进一步包括:过滤控制信息生成单元321,用于将过滤需求转换为数据入口配置信息;转发控制信息生成单元322,用于将转发需求转换为数据出口配置信息;逻辑连接控制信息生成单元323,用于将逻辑连接需求转换为不同网络层次和处理功能对应的芯片逻辑之间的连接信息;控制信息发送单元324,用于将数据入口配置信息、数据出口配置信息和芯片逻辑之间的连接信息中的至少一种信息发送给驱动控制模块对应的转发设备中的代理。

其中,数据入口配置信息例如可以为对转发设备的数据包存储转发单元的入口的配置,数据出口配置信息例如可以为对转发设备的数据包存储转发单元的出口的配置。

一般地,转发设备的若干操作步骤可以以操作对应的网络层次进行划分,例如先判断MAC地址是否匹配、再查看VLAN标识是否匹配、最后判断IP地址是否匹配等等,而各个网络层次上的操作通常由不同的芯片逻辑完成。因此,可以将逻辑连接需求转换为不同网络层次和处理功能对应的芯片逻辑之间的连接信息,从而完成转发设备对数据进行处理的中间过程。

其中,网络层次例如可以包括OSI(Open System Interconnect,开放系统互联)网络模型的二层、三层等等,处理功能例如可以包括OSI网络模型二层的MAC判断和VLAN判断等等。

从而,可以生成与转发设备实现流表操作相关的模块的配置信息。

在一个实施例中,逻辑连接控制信息生成单元323可以进一步用于根据驱动控制模块对应的转发设备的网络层次处理能力,确定逻辑连接需求所对应的芯片逻辑,并生成逻辑连接需求对应的不同芯片逻辑之间的连接信息。

例如,网络层次处理能力是指转发设备是否支持某一网络层次的转发操作、数据容量、数据处理类别等等,从而逻辑连接控制信息生成单元323可以选择与逻辑连接需求相对应的芯片逻辑。

此外,同一个芯片逻辑可能对应多个网络层次处理信息,例如,某转发设备中可以将端口号和VLAN标识在同一张转发表中进行判断,则可以将处理端口号和VLAN标识的操作放在同一个步骤中进行,执行完端口号和VLAN标识的匹配后,再通过逻辑连接控制信息跳转到下一个操作。

从而,可以根据转发设备和芯片逻辑的特点对转发设备进行配置。

此外,控制信息还可以为若干具有逻辑连接关系的转发表中的信息。转发设备40中的代理模块41在收到控制信息后,可以根据控制信息所对应的IP转发表、MAC转发表等等驱动逻辑芯片进行填表操作,从而实现了Openflow流表功能。

下面参考图4描述本发明一个实施例的流表实现转发设备。

图4为本发明流表实现转发设备的一个实施例的结构图。如图4所示,在该实施例的流表实现转发设备40包括代理模块41,用于根据控制器30发送的过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息对转发设备40中的芯片进行配置,其中,过滤控制信息、转发控制信息和逻辑连接控制信息是控制器30根据网络资源需求生成的。

代理模块41可以根据控制信息设置芯片的高低电位来实现对芯片的配置,配置后的芯片可以根据接收到的脉冲信号进行“与”、“或”、“异或”等逻辑操作,进而实现相应的对网络数据包的处理。

下面参考图5描述本发明一个实施例的流表实现方法。

图5为本发明流表实现方法的一个实施例的流程图。如图5所示,在该实施例的方法包括:

步骤S502,控制器接收网络资源需求,并将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求。

其中,控制器可以接收网络资源需求,并检测网络资源需求中的调用信息所对应的不同类型的接口,将网络资源需求分解为过滤需求、转发需求和逻辑连接需求中的至少一种需求。

步骤S504,控制器将分解后的网络资源需求转换为过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息,并发送给驱动控制模块对应的转发设备中的代理。

其中,控制器将可以过滤需求转换为数据入口配置信息,将转发需求转换为数据出口配置信息,将逻辑连接需求转换为不同网络层次和处理功能对应的芯片逻辑之间的连接信息。

其中,控制器可以根据驱动控制模块对应的转发设备的网络层次处理能力,确定逻辑连接需求所对应的芯片逻辑,并生成逻辑连接需求对应的不同芯片逻辑之间的连接信息。

此外,该实施例的方法还可以包括步骤S506:

步骤S506,转发设备中的代理模块根据控制器发送的过滤控制信息、转发控制信息和逻辑连接控制信息中的至少一种控制信息对转发设备中的芯片进行配置。

通过将网络资源需求均分解为过滤需求、转发需求和逻辑连接需求,并采用与转发设备对应的驱动控制模块将分解后的需求转换为控制信息并发送给转发设备中的代理,可以将不同的网络资源需求转换为通用的控制信息,从而使转发设备无需根据不同的需求设置不同的代理,降低了转发设备实现Openflow流表功能的复杂度。

此外,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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