用于软件定义的网络中灵活及可扩展流处理的转发元件的制作方法

文档序号:7993834阅读:234来源:国知局
用于软件定义的网络中灵活及可扩展流处理的转发元件的制作方法
【专利摘要】充当软件定义的网络内的转发元件的网络装置接收可配置流表定义和用于在流表之间进行选择的可配置逻辑的表示。所述网络装置基于每个可配置流表定义创建流表,并且安装用于在流表之间进行选择的可配置逻辑。所述网络装置接收数据以填充流表的可配置键列和动作列,并且使用该数据填充流表。随后,所述网络装置根据用于在流表之间进行选择的可配置逻辑、流表和可配置逻辑要求的相关报头字段中每个分组的值,从对于分组的转发判定来进行选择。
【专利说明】用于软件定义的网络中灵活及可扩展流处理的转发元件
【技术领域】
[0001]本发明的实施例涉及连网领域;并且更具体地说,涉及用于软件定义的网络的灵活及可扩展的流处理架构。
【背景技术】
[0002]数十年来,传送基于电路的通信网络的使用已衰退,取而代之的是能够更灵活、有效和安全的基于分组的网络。因此,基于分组的连网普遍性增大已导致对基于分组的网络装置的需求增长。此需求大部分通过生成越来越大的单片路由器以处理量和复杂性增大的网络业务的制造商得到满足。然而,此模型正接近其技术和经济极限。通过传统路由器设计来满足增大的性能要求变得日益困难,并且随着低成本数据中心硬件的出现,路由器供应商难以证明用于实现相同性能的硬件的更高成本是合理的。同时,在接入和聚合网络中对路由选择和交换控制平面的需求正变得更复杂。运营商想要能够定制路由选择以处理在边缘附近的特定种类的业务流,配置跨聚合网络的定制服务,以及实现多层集成,但不存在今天网络典型的详细低级别配置。
[0003]这些趋势产生了其中数据和控制平面分开的路由选择架构的不同方案。通过此分离,控制平面可在逻辑上居中,并且通过带有变化架构的多种硬件组件实现。此外,数据平面可由逻辑上居中的控制器配置的简化交换器/路由器元件组成。此新的路由选择拆分式架构模型致力于拆分控制与转发和数据处理元件,并且是在软件定义的连网(SDN)的核心。用于软件定义的网络中流处理的一个标准是OpenFlow,它定义用于在控制平面与转发平面之间传输消息的协议,并且描述用于分组处理的模型。
[0004]软件定义的网络的此拆分式架构使得能够分离能够在逻辑上或物理上编组在一起的功能性。例如,在共同控制实体与网络应用(例如,通用多协议标签交换(GMPLS)、边界网关协议(BGP)、因特网协议安全性(IPSec)等)之间能够有拆分或分离。类似地,在控制与转发/处理之间能够有拆分或分离(即,中心控制与执行分组处理的网络装置的分离)。也能够有数据转发功能性、数据处理功能性和数据生成功能性(例如,深度分组检查(DPI);加密;操作、行政和管理(OAM);等)的拆分或分离。
[0005]软件定义的网络与传统单片架构网络相比,具有许多优点。例如,实现重要网络路由选择和交换功能性的控制平面应用与转发平面是完全分离的。因此,保持集中式控制平面使得能够调整以满足特定用户需要的高度定制和优化的连网服务。集中式控制平面提供能够满足各种用户需要的高度可缩放、可靠和灵活的连网基础设施。转发平面(或数据平面)装置能够是不贵和可交换商品连网装置,这降低了用户的总体配置和维护负担。另外,用于整个网络的单个管理和配置实体增强了用户的使用方便体验。
[0006]然而,当前SDN配置也具有缺点。虽然诸如OpenFlow等系统确实显示了指定用于分组处理的模型的有效方式,但存在的问题极难根据特定路由选择需要扩展或定制此模型。例如,添加对新协议的支持要求提议对OpenFlow规范的更改,希望得以采纳以及等待实现。此类更改涉及修改用于分组处理模型的解析、分类(由于要解析的字段的数量必须已更改)和动作(例如,用于修改新协议的报头)。
[0007]当前SDN分组处理模型的另一缺陷是处理规范要求基于协议报头字段的静态集合,将分组分类为属于某个流。例如,分类只可使用元组形式的提取报头字段的有限集合进行(例如,15个元组被提取并用于分类)。然而,在开发新协议时,不能轻松更新此模型。另外,在一些环境中,应用可只从使用元组的小集合的分组的部分分类中受益。例如,关于MPLS分组,可只基于MPLS报头内短路径标签的内容做出分组转发判定,而无需进一步检查分组本身。在OpenFlow中,不可能使用少于15个元组将这些分组分类,这在解析工作和流表存储器要求方面效率低。
[0008]最后,当前SDN模型在处理多个级别的隧道化(B卩,封装和解封装)方面也是弱的。例如,考虑在开放系统互连(OSI)模型数据链路层报头(即,OSI第二层或L2)或网络层报头(即,OSI第三层或L3)的顶部封装以太网分组的情况,这经常在实现第2层虚拟专用网(L2VPN)或伪线(PW)时进行。在此情况下,不可能使用在L2或L3的第一级别外在报头中存在的信息来执行更精细粒度的分组处理。

【发明内容】

[0009]根据本发明的一个实施例,由充当软件定义的网络内转发元件的网络装置执行的一种方法包括以下步骤:通过与所述软件定义的网络内控制器装置的网络连接,接收以下项的表示:基于协议报头的第一多个相关报头字段、包括键组成(key composition)的可配置流表定义,其中,用于每个流表定义的键组成识别为该流表定义选择的一个或更多相关报头字段的集合;以及用于基于协议报头的第二多个相关报头字段在可配置流表定义所定义的流表之间进行选择的可配置逻辑。所述方法还包括基于每个可配置流表定义来创建流表的步骤。每个流表包括对于由该流表所基于的流表定义中包括的键组成识别的每个相关报头字段的可配置键列。每个流表也包括存储转发判定的一个或更多动作列的集合。所述方法还包括安装用于在流表之间进行选择的可配置逻辑,接收数据以填充流表的可配置键列和动作列,以及根据接收数据填充流表的步骤。所述方法还包括从通过使用一个或更多协议的网络装置的网络接口接收的对于分组的转发判定来进行选择的步骤。此选择根据用于在流表之间进行选择的可配置逻辑、流表和可配置逻辑要求的相关报头字段中每个分组的值来进行,以便为该分组选择流表之一以及为该分组从选择的流表来选择条目。
[0010]根据本发明的另一实施例,一种充当流交换使能的转发元件的网络装置包括配置模块。该配置模块可操作以接收以下项的表示:基于协议报头的第一多个相关报头字段、包括键组成的可配置流表定义,其中,用于每个流表定义的键组成识别为该流表定义选择的一个或更多相关报头字段的集合;以及用于基于协议报头的第二多个相关报头字段在可配置流表定义所定义的多个流表之间进行选择的可配置逻辑。该配置模块也可操作以安装用于在多个流表之间进行选择的可配置逻辑。所述网络装置也包括流表管理模块,流表管理模块可操作以基于每个可配置流表定义来创建流表。每个流表要包括对于由该流表所基于的流表定义中包括的键组成识别的每个相关报头字段的可配置键列。每个流表也要包括存储转发判定的一个或更多动作列的集合。流表管理模块也可操作以接收数据以填充流表的可配置键列和动作列,以及根据接收的数据填充流表。所述网络装置也包括分组处理模块。分组处理模块可操作以从通过网络装置的网络接口接收的对于分组的转发判定来进行选择。此选择根据用于在多个流表之间进行选择的可配置逻辑、流表和可配置逻辑要求的相关报头字段的那些报头中每个分组的值来进行,以便为该分组选择流表之一以及为该分组从选择的流表来选择条目。
【专利附图】

【附图说明】
[0011]通过参照下面的描述和用于示出本发明实施例的附图,可最好地理解本发明。在图中:
图1示出根据本发明的一个实施例的示范灵活及可扩展流处理系统;
图2示出根据本发明的一个实施例的在解析模块内的处理配置的表示;
图3示出根据本发明的一个实施例的在软件定义的网络中充当控制器的网络元件中方法的流程图;
图4示出根据本发明的一个实施例的在软件定义的网络中充当转发元件的网络元件中方法的流程图;
图5示出根据本发明的一个实施例的在软件定义的网络中充当用于做出转发判定的转发元件的网络元件中方法的流程图;
图6示出根据本发明的一个实施例的在软件定义的网络中充当用于识别流表条目的转发元件的网络元件中方法的流程图;
图7示出根据本发明的一个实施例的解析过程和键生成的表示;
图8示出根据本发明的一个实施例的示范灵活及可扩展流处理系统;以及图9示出根据本发明的一个实施例的在灵活及可扩展流处理系统中使用的处理配置的示范表示。
【具体实施方式】
[0012]在下面的描述中,陈述了许多特定细节。然而,要理解的是,实践本发明的实施例可无需这些特定细节。在其它情况下,公知的电路、结构和技术未详细显示以免混淆对此描述的理解。通过包括的描述,本领域技术人员将能够在不进行不当实验的情况下实现适当的功能性。
[0013]说明书中对“ 一个实施例”、“一实施例”、“示例实施例”等的引用指所述实施例可包括特定特征、结构或特性,但每个实施例可不一定包括特定特征、结构或特性。另外,此类词语不一定指相同实施例。此外,在结合实某个施例描述某个特定特征、结构或特性时,认为结合无论是否明确描述的其它实施例来实现此类特征、结构或特性是在本领域技术人员的认知之内。
[0014]为便于理解,虚线和/或加括号文本在图中用于表示某些项目的可选性质(例如,本发明的给定实现不支持的特征;给定实现支持但在一些情况下使用并且在其它情况下不使用的特征)。
[0015]在下面的描述和权利要求中,可使用术语“耦合”和“连接”及其衍生词。应理解,这些术语无意作为彼此的同义词。“耦合”用于指示可相互直接物理或电接触或不直接物理或电接触的两个或更多元件相互协作或交互。“连接”用于指示在相互耦合的两个或更多元件之间通信的建立。[0016]在本文中使用时,网络元件(例如,路由器、交换器、桥接器)是一件连网设备,包括硬件和软件,其在通信上与网络上的其它设备(例如,其它网络元件、计算机终端站)互连。一些网络元件是“多服务网络元件”,其为多个连网功能(例如,路由选择、桥接、交换、第2层聚合、会话边界控制、服务质量和/或订户管理)提供支持和/或为多个应用服务(例如,数据、话音和视频)提供支持。订户终端站(例如,服务器、工作站、膝上型计算机、上网本、掌上型计算机、移动电话、智能电话、多媒体电话、因特网协议话音(VOIP)电话、用户设备、终端便携式媒体播放器、GPS单元、游戏系统、机顶盒(STB))访问通过因特网提供的内容/服务和/或在因特网上重叠(例如,隧道化通过)的虚拟专用网(VPN)上提供的内容/服务。内容和/或服务一般由属于参与对等服务的服务或内容提供商或终端站的一个或更多终端站(例如,服务器终端站)提供,并且可例如包括公共网页(例如,免费内容、店面、搜索服务)、私人网页(例如,提供电子邮件服务的用户名/密码访问网页)和/或通过VPN的企业网络等。一般情况下,订户终端站耦合(例如,通过耦合到接入网络(以有线或无线方式)的客户场所设备)到边缘网络元件,所述边缘网络元件耦合(例如通过到其它边缘网络元件的一个或更多核心网络元件)到其它终端站(例如,服务器终端站)。
[0017]传统上,网络元件能够是将控制平面和数据平面(有时称为转发平面或媒体平面)两者集成到相同网络元件中的多功能网络元件。如果网络元件是路由器(或者在实现路由功能性),则控制平面一般确定要如何路由数据(例如,分组)(例如,用于数据的下一跳和用于该数据的输出端口),以及数据平面负责转发该数据。例如,控制平面一般包括一个或更多路由协议(例如,边界网关协议(BGP)、内部网关协议(IGP)(开放式最短路径优先(OSPF)、路由信息协议(RIP)、中间系统到中间系统(IS-1S))、标签分布协议(LDP)、资源保留协议(RSVP)),这些协议与其它网络元件进行通信以交换路由,并基于一个或更多路由选择度量选择那些路由。备选的是,网络元件可只实现数据平面(转发平面)或只实现所有或部分控制平面。职责的此分离在拆分式架构网络模型中是常见的。术语“拆分式架构网络”很大程度上与术语“软件定义的网络”(SDN)同义,并且这些术语在本文中可交换使用。
[0018]路由和邻接存储在控制平面上的一个或更多路由选择结构中(例如,路由信息库(RIB)、标签信息库(LIB)、一个或更多邻接结构)。控制平面通过基于路由选择结构的信息(例如,邻接和路由信息)为数据平面编程。例如,控制平面将邻接和路由信息编程到数据平面上的一个或更多转发结构(例如,转发信息库(FIB)、标签转发信息库(LFIB)和一个或更多邻接结构)中。在转发业务时,数据平面使用这些转发和邻接结构。
[0019]基于某个路由度量(度量能够对不同的路由选择协议不同),每个路由选择协议将路由条目下载到主RIB。每个路由选择协议能够在本地RIB (例如,OSPF本地RIB)中存储路由条目,包括未下载到主RIB中的路由条目。管理主RIB的RIB模块从通过路由选择协议下载的路由中选择路由(基于度量集合),并且将那些选择的路由(有时称为活动路由条目)下载到数据平面。RIB模块也能够促使路由在路由选择协议之间再次分布。
[0020]多功能网络元件能够包括一个或更多线路卡的集合、一个或更多控制卡的集合和可选的一个或更多服务卡(有时称为资源卡)的集合。这些卡通过一个或更多机制耦合在一起(例如,耦合线路卡的第一全网状和耦合所有卡的第二全网状)。线路卡的集合构成数据平面,而控制卡的集合提供控制平面并且通过线路卡与外部网络元件交换分组。服务卡的集合能够提供专业化处理(例如,第4层到第7层服务(例如,防火墙、IPsec、IDS、P2P)、VoIP会话边界控制器、移动无线网关(GGSN、演进分组系统(EPS)网关))。
[0021]不同于单片网络架构(单片网络架构要求复杂的网络管理功能分布在整个网络的多功能网络元件的控制平面中,并且还要求集成到相同多功能网络元件中的复杂数据和控制平面),基于流的软件定义的网络允许分离网络的数据平面和控制平面。数据平面能够实现为分布在整个网络的简单的离散流交换器(转发元件),并且提供网络的智能的控制平面在监视流交换器的集中式流控制器中实现。通过分开控制功能和数据转发功能,软件定义的连网减轻了修改网络控制逻辑的任务,并且提供程序接口,开发人员能够在接口上构建广泛的多种新路由选择和协议管理应用。这允许数据和控制平面独立演进和缩放,同时降低了用于数据平面网络组件所必需的管理。
[0022]在软件定义的网络的一个实施例中,控制平面通过在转发元件与控制器之间安全、可靠的传输连接,通过控制平面信令协议控制转发平面。控制器一般包括提供基本处理、I/O和连网性能的操作系统。中间件层提供软件定义的网络控制器的上下文到操作系统,并且使用控制平面信令协议与各种转发平面元件进行通信。中间件层上的应用层提供各种网络操作所要求的智能,如协议、网络情况意识和用户接口。在更抽象的级别,应用层通过网络的逻辑视图进行工作,并且中间件层提供从逻辑视图到物理视图的转换。
[0023]在软件定义的网络范例的一实施例中,每个转发元件是流交换使能的网络装置。流交换使能的网络装置基于每个分组所属的流来转发分组,而不是基于一般在当前常规分组交换IP网络中使用的分组内的目的地IP地址转发分组。流可定义为其报头匹配比特的给定模式的分组集合。在此方面,传统IP转发也是基于流的转发,其中,流仅通过目的地IP地址定义。但是,一般流定义允许考虑分组报头中的许多字段(例如,10个或更多),而不是只考虑目的地IP地址或源IP地址。
[0024]控制平面基于用于每个流的网络层计算和中间件层映射,将相关消息传送到转发元件。转发元件处理这些消息,并且在其流表中将适当的流信息和对应动作编程。转发元件将分组映射到流,并且基于这些流表转发分组。当然,流表可以多种数据结构实现,如映射、列表、阵列、表、关系数据库等。此外,这些表内列和行的讨论是任意的;虽然一个实现可选择在行中放置条目,但修改数据结构以在列中放置条目并不重要。另外,转发元件可需要具有用于诸如DP1、NetFlow数据收集、OAM等此类导入操作的数据处理和数据生成能力。
[0025]用于流处理的标准定义用于在控制与转发平面之间传输消息的协议,并且描述用于分组的处理的模型。在流处理装置中用于处理分组的此模型包括报头解析、分组分类和做出转发判定。
[0026]报头解析描述如何基于协议的已知集合来解释分组(例如,以太网、虚拟局域网(VLAN)、多协议标签交换(MPLS)、IPv4等)。报头的一些层包含包括有关如何将下一报头去复用的信息的字段。例如,以太网报头包括描述下一层中报头的类型的字段。一些协议字段用于构建将在分组分类中使用的匹配结构(或键)。例如,第一键字段能够是源媒体接入控制(MAC)地址,并且第二键字段能够是目的地MAC地址。
[0027]分组分类涉及在存储器中执行查找以通过基于匹配结构或键确定在转发表中对应于此分组的最佳匹配流,将分组分类。可能许多流能够对应于分组;在此情况下,系统一般配置成根据定义的方案从许多流中确定一个流。另外,表中的流条目能够定义如何匹配分组和条目。存在几个匹配准则,如“完全”(键中的值要完全匹配表中的值)、“通配符”(键中的值能够是任何值)、“最长前缀匹配”(通常用于匹配IP地址和路由条目)、“比特掩码”(键中仅一些比特用于匹配)和“范围”(键中的值需要在值的定义的有限范围中)。
[0028]通过执行使用分组的动作。基于分组分类的前一步骤中识别的流条目,做出转发判定并且执行动作。表中的每个流与要为每个对应分组执行的动作集合相关联。例如,动作可以是将报头推送到分组上,使用特定端口转发分组,或者简单地丢弃分组。因此,用于带有特定传送控制协议(TCP)目的地端口的IPv4分组的流条目能够包含指定应丢弃这些分组的动作。
[0029]如何实现解析、分类和动作的执行的描述一般在规范文档中记录。实现此规范文档的节点能够相互进行交互操作。
[0030]本发明的一实施例的一个方面描述用于描述解析、匹配和动作的新颖抽象。在将用于表示转发元件分组处理的高端语言中,将显露这些抽象。不同于典型的软件定义的网络,这些抽象将用于将在运行时并且不只是在配置时的转发元件编程。
[0031]本发明的一实施例的另一方面将典型的分组解析和分组分类阶段联系在一起,通过灵活解析由抽象的表示提供的任何类型的分组以生成用于流的分类的匹配键,允许转发元件为协议不可知论。此类型的解析和分类提供了表述此类关系的更简单方式。
[0032]本发明的一实施例的另外方面包括基于使用定义的抽象的处理的定义,提供用于转发元件的实现。高端语言中指定的处理定义可变换成要在分组处理的解析和动作阶段中均使用的中间代码表示。具有简单的中间代码表示允许相异转发元件使用相同处理模型代码,并且由此进一步降低用于管理带有变化的配置和能力的转发元件的控制器内要求的复杂性。
[0033]本发明的实施例的各方面显示了未硬性固定到正式规范中或者未在低级别硬件实现细节内的修改转发元件的行为的灵活方式。因此,容易快速适应模型以支持新协议或者提供定制的分组处理方案。
[0034]概述
图1示出根据本发明的一个实施例的示范灵活及可扩展流处理系统。在此图形中,处理配置102的一些或所有部分的表示由控制器110和转发元件120A利用。虽然此图示隐藏了一个或更多相异转发元件120B-120N的内部工作,但是所示转发元件120A主要表示其特性,除非另有指明。
[0035]为了本公开的目的,可在某些情况中使用术语“转发元件”120A和“相异转发元件”120B-120N。除非另有指明或周围语言表明,否则有关转发元件120A描述的任何细节同样适用于相异转发元件120B-120N,并且有关相异转发元件120B-120N的细节类似地适用于转发元件120A。
[0036]处理配置102包括用于指定要由转发元件120A实现的转发处理模型的三个主要抽象。一个抽象是包括协议报头的相关报头字段的协议的可配置定义104。这些可配置定义104指定将由网络内的转发元件120A和其它相异转发元件120B-120N解析的协议报头的类型。因此,可配置定义104包括一个或更多分组协议报头定义的集合,其中,每个协议报头定义包括报头名称,并且根据协议规范,根据报头内的一个或更多报头字段定义。这些报头字段指示报头内每个定义的字段的位置和数据类型。在本发明的一实施例中,数据类型只是一般字段,并且此字段的长度附加到协议报头定义。另外,在本发明的一实施例中,用于报头的可配置定义104可不定义报头内的每个可能报头字段。在此类实施例中,报头定义包括报头长度,它是用于基于报头的一个或更多报头字段内的值,计算报头的总长度的数学表达式。例如,用于IPv4报头的以字节为单位的报头长度可定义为等于来自报头内“hlen”字段的值乘以数字4。在此示例中,假设“hlen”字段内的值为5,则报头长度将计算为5*4个字节或20个字节。
[0037]处理配置102中的第二抽象是包括键组成的可配置流表定义108,它利用161协议的可配置定义104的方面,包括协议报头的相关报头字段。可配置流表定义108用于定义在分组分类中要使用的流表数量140A-140N及要用于匹配的每个表中可配置键列176的类型、大小和数量。另外,可配置流表定义108的表示也用于创建在转发元件120A内使用的键生成逻辑158,该逻辑指定如何使用分组的解析的协议报头字段生成键。此键生成逻辑158可在此类系统内的各种位置创建,如由控制器110上的编译器114或甚至在单独转发元件(例如,120A)上基于解析器配置包117创建。
[0038]包括键组成的可配置流表定义108包括用于在转发元件120A中要使用的每个流表140A-140N的表定义指令。每个表定义包括独特的表标识符(ID)以对应于特定流表(例如,140A)和一个或更多字段语句(statement)的集合。每个字段语句包括识别键内键字段的相对位置(和/或流表140A内可配置键列176之一的相对位置)、指示如何比较键字段和可配置键列以确定它们是否匹配的匹配类型及指示哪些解析的协议报头字段要用作键字段及指示表内可配置键列176的一个对应列的类型和大小的一个或更多键字段。匹配类型指定在比较键字段和可配置键列时要使用的一个或更多匹配算法。例如,匹配算法可以是完全匹配、最长前缀匹配、掩码或范围。用于字段语句的一个或更多键字段指示哪个解析的报头字段将用于生成键的对应键字段部分。
[0039]如果一个键字段完全定义用于某个字段语句,则在生成对应于该字段语句的键的部分时,使用该键字段。然而,在本发明的一实施例中,可为某个字段语句声明多于一个键字段。此配置允许使用键组成变体。键组成变体指定基于特定分组内存在的报头构建键的不同方式。因此,在解析两个不同分组时,来自每个分组的不同报头字段可用于为在表定义指令的表ID指示的流表内的匹配生成键。
[0040]例如,考虑表定义包括带有字段ID “6”的字段语句和取决于分组中传输层(L4)报头的两个键段可能性的情形。如果解析的分组包含TCP报头,则要在生成键内第6个字段中使用TCP报头字段。然而,如果分组转而包含用户数据报协议(UDP)报头,则将在生成键第6个字段中使用UDP报头字段。在此情形中,一个键组成变体包括TCP报头字段,并且一个键组成变体包括UDP报头字段。无论哪个键组成变体用于构建键,相同流表和可配置键列将用于匹配。
[0041]包括键组成的可配置流表定义108的逻辑图示在图1中表示为表。对于每个表定义(由表ID表示),可能有一个键组成(例如,表ID I,键组成I),或者在本发明的一些实施例中,可能有多于一个键组成或多个键组成变体(例如,表ID 2,键组成2和2’)。
[0042]处理配置102中的第三抽象是用于在流表之间进行选择的可配置逻辑106,它利用160协议的可配置定义104的方面,包括协议报头的相关报头字段。在本发明的一实施例中,此可配置逻辑106也在用于选择的流表的键组成变体之间进行选择。用于在流表之间进行选择的可配置逻辑106定义在要解析的协议报头之间的关系和顺序。这些关系可在逻辑上表示为某种类型的解析树,解析树如果具体化,则将示出要根据定义的处理配置102解析和分类的可能分组(即,协议报头排序)。除定义在协议报头之间的关系外,用于在流表之间选择的可配置逻辑106也基于分组中协议报头的顺序,定义哪个流表140A-140N要用于分组分类。因此,不同解析路径可促使不同表被选择用于分类。例如,一个解析路径162可促使选择与其它解析路径163或164不同的表ID。在一实施例中,这些解析路径也确定在构建用于选择的流表的键时应使用哪个键组成变体。
[0043]用于在流表之间进行选择的可配置逻辑106定义协议报头排序关系,并且使用栈指令确定用于分类的表。每个栈指令对应于分组协议报头,并且包括报头名称、键字段和一个或更多规则的集合,每个规则包括键值和下一报头名称。键字段是在检查的分组报头内的报头字段之一,该字段要与规则的键值进行比较,以便尝试确定要解析的下一报头。在键字段匹配规则的键值时,解析使用具有对应于匹配的规则指示的下一报头名称的报头名称的栈指令,要通过后一分组报头继续。在键字段未能匹配规则的键值时,根据栈指令指示的表ID,为分组分类选择流表。如果栈指令未指示表ID,则用于在流表之间进行选择的可配置逻辑106可指示要采取纠正动作(例如,丢弃分组,将分组传送到控制器等)。
[0044]处理配置102的表示150以处理定义112的形式创建。控制器110可从远程用户或装置接收处理定义112,或者它可创建处理定义112。在图1所示实施例中,控制器110包括接收处理定义112的定义接收模块111。处理定义112提供151到转换器113以产生流表配置信息115A,流表配置信息115A提供154到流表填充模块118并由其用于为流表140A-140N填充流表条目。另外,转换器113提供处理定义112到编译器114,编译器114可产生152解析器代码116。此解析器代码116和可选某个版本的流表配置信息115B构成解析器配置包117。
[0045]转换器113的用途在一定程度上是将处理定义112转换成能够由相异转发元件120A-120N用于处理分组的解析器配置包117。因此,通过使用其编译器114,通过从处理定义112提供的正式抽象(即,某种类型的语法)生成解析器代码116形式的用于分组解析器的代码,转换器113充当解析器生成器(即,编译器-编译器或编译器生成器)。解析器代码116也可由转发元件(例如,120A)用于在分组上执行动作。因此,解析器代码116作为解析器配置包117的一部分,包含协议的可配置定义104、用于在流表之间进行选择的可配置逻辑106及来自处理配置102的可配置流表定义108的表示153。在一实施例中,解析器代码116是使用小的指令集(例如,负载、存储、添力卩、转移、比较等)指定的中间级代码和在执行与分组有关的动作时要用作临时数据存储装置的虚拟寄存器的定义集合。
[0046]在分组处理的解析语法中使用的解析器代码116的部分可在逻辑上表示为有向图。此类有向图中的每个节点表示一个协议报头,并且有向边缘表示基于报头的字段内的值采用的路径。此类有向图的示例在图7中示出,其示出根据解析阶段700可操作以解析UDP、TCP和MPLS分组的本发明的一个实施例的解析阶段700和键生成阶段701的表示。在解析以太网702的第一协议报头以识别其字段时,基于以太网报头702的ether_type字段的值,做出转移判定。如果ether_type字段值为0x8847,则要解析的下一报头是MPLS报头704。在一实施例中,基于MPLS报头704内的bos (栈底部)字段的值,做出转移判定。虽然bos字段值为0,但解析将通过也是MPLS报头704的下一报头继续。bos字段值为O时,解析阶段700结束,并且键生成701开始。在另一实施例中,有关到达MPLS报头704的转移判定取决于bos字段值和key_is_matchable字段值,这表示在分组内可存在更多MPLS分组704的事件,但进一步的检查是不必要的,因为用于分组分类的期望键可能已经被生成。因此,在key_iSjnatchabIe字段值或bos字段值不为O时,解析阶段700结束,并且键生成701开始。类似地,如果以太网报头702的ether_type字段值为0x8100(而不是0x8847),则分组的下一报头将被解析为IPv4报头708。此时,检查IPv4报头708的协议字段值:如果它是0x11,则解析将通过作为UDP报头710的下一报头继续,并且如果它是0x06,则解析将通过作为TCP报头712的下一报头继续。随后将解析UDP 710或TCP 712报头以识别其字段,并且解析阶段700结束,以及键生成701开始。
[0047]回到图1,解析器配置包117内的解析器代码116也包含用于在相异转发元件120B-120N内分组处理的动作执行阶段期间在分组上执行动作的指令。在转发元件120A中插入或修改流时,由控制器110填充这些动作。能够定义两个类别的动作-与分组的协议无关的动作和取决于分组的协议的动作。与协议无关的动作的示例包括将分组输出到端口,设置用于分组的队列或者丢弃分组。另外,独立动作可包括将分组发送回解析器,这一般在它已通过动作修改后进行。
[0048]此外,通过利用包括处理配置102内协议报头的相关报头字段并且在处理定义112内表示的协议的可配置定义104,可在分组上执行的协议相关动作。这通过分组处理技术的协议特定定制提供了增大的灵活性,其中,可以精细粒度的方式修改具有某些协议报头的分组。例如,协议相关动作可定义成将另外的报头推送到分组上或者从分组弹出报头。此外,协议相关动作可能简单或复杂的方式更改某些分组报头内的字段。例如,可通过增大或减小存活时间(TTL)字段(通常在IPv4报头中存在的字段),可以数字方式修改字段,或者基于字段中的原值,可将目的地地址值替换成完全不同的值。另外,在此类修改后,动作可计算用于报头或分组的新校验和。
[0049]此配置允许通过支持在分组内有解析环或递归时执行的精细粒度动作,如在分组中有多个相同类型的报头(例如,MPLS等)或者有封装或隧道化的业务(例如,以太网-MPLS-MPLS-以太网等)时,进一步控制分组处理。在此类情况下,动作可以是充分智能型以修改,弹出或推送分组内的目标报头。随后可触发独立动作以将分组重新发回以做进一步解析。当然,由于解析器代码116的性质,要在特定协议栈上执行的这些定制动作是可能的,因为转发元件120A本身不知道应该如何在分组中布置报头,而只是遵循解析器代码116定义的过程。例如,转发元件120A无需基本上设计成知道L3报头(例如,因特网协议(IP)、IPSec、网间分组交换(IPX)等)应该在L2报头(例如,地址解析协议(ARP)、异步传送模式(ATM)、点对点协议(PPP)等)后出现,而是只需要盲目依赖解析器代码116通过分组的报头移动。
[0050]除创建解析器代码116外,转换器113也生成包括可配置流表定义108的表示的流表配置115A信息,可配置流表定义包括键组成。某个版本115B的流表配置115A可包括在分布172到转发元件120A-120N的解析器配置包117内。在由转发元件(例如,120A)接收解析器配置包117时,配置模块121随后可利用流表配置115B传送信息167到流表管理模块126,引导它创建或修改流表140A-140N。例如,配置模块121使用流表配置115A以便指示167流表管理模块126有关多少流表140A-140N是必需的、每个表的键组成(要如何构成用于每个表的键列144A-144N)及要如何构成流表140A-140N中的条目179A-179N。另夕卜,转换器113创建的流表配置115A提供154到流表填充模块118,流表填充模块通过将数据发送173到流表管理模块126,使用包括键组成的可配置流表定义108的其表示以便在相异转发元件120A-120N的流表140A-140N中正确填充流表条目179A-179N。
[0051]因此,控制器110 (经流表填充模块118)与转发元件120A交互173以保持必需的流表140A-140N的条目179A-179N。控制器110也经配置模块121与转发元件120A交互167以创建或修改流表140A-140N。因此,流表140A-140N的所有此类配置和管理通过流表管理模块126进行。
[0052]每个流表包括可配置键列176和动作列178。配置键列176实现键组成,并且包括一个或更多键列144A-144N,由此允许通过匹配键的部分和键列144A- 144N而进行分组分类。如图1所示,这些可配置键列176可包括字面值(例如,80、23、10、192等)或通配符值(例如,)。动作列178包括在分组被分类为属于该对应流时要执行的用于每个流条目的一个或更多动作146A-146N。如图1所示,这些动作列178可包括广泛的多个动作,其中一些动作由此一般地示为丢弃、输出、弹出和重新解析。在本发明的一实施例中,这些列包含动作ID以识别位于别处的动作码,并且可包括在执行动作时要使用的变元值。
[0053]在一实施例中,流表也包括一个或更多流选择列177。一个可能列是流ID列141,该列指派独特的标识符到每个流条目以便于在转发元件120A内的模块之间和在转发元件120A与控制器110之间的通信。例如,控制器110要修改流表140A中的一个或更多动作146A-146N时,它可轻松地传送流ID值141以快速识别要修改的条目。另一可能列是优先权值列142,该列包括在分组的键匹配流表140A的多于一个条目时允许流优先处理的值。这一般在通配符值在可配置键列176内时发生。例如,给定图1中所示情形时,具有对应于键列144A的“80”的值和对应于键列144N的“192”的值的分组键可能可匹配流表140A中的两个流条目-第一所示条目179A和最后所示条目179D。假设两个条目均匹配键,并且假设用于第一条目179A和最后条目179D的其它可配置键列(例如,144B)相同,则用于每个条目的优先权值142用于确定将分组分类到哪个流。在第一流条目179A具有“I”的优先权值142,并且最后条目179D具有“7”的优先权值时,本发明的一个实施例可将带有最小优先权值的记录视为确定项,并且因此分组将被分类为属于第一流表条目179A。备选的是,在将带有最大优先权值的记录视为确定项的另一实施例中,分组将被分类为属于最后流条目179D。此配置要求控制器110以此类方式维护流表140A-140N,以便防止发生优先权平局发生。这可以多种方式进行,如为每个条目179A-179N指派不同优先权值142,或者只指派相同优先权值到互斥的条目,意味着不可能发生带有共有优先权值142的两个条目可能匹配一个键。在其它实施例中,如果发生优先权值142平局,则进行另外的平局打破过程,如选择表中更高的条目或者带有最长前缀匹配或最精确匹配的条目(即,在可配置键列176内具有最少通配符的条目)。
[0054]表I不出根据本发明的一个实施例的流表的不例。表包括两个键列,一个用于第一 MPLS标签,一个用于第二 MPLS标签。该列也包括流选择列:存储用于表中每个条目的独特标识符的流ID列141和存储用于条目选择的优先权值的优先权列。表还包括一个动作列,该列存储在带有匹配两个键列的键并且由此被分类为属于特定流的分组上要执行的动作。
[0055]表I
【权利要求】
1.一种由充当软件定义的网络内转发元件的网络装置所执行的方法,包括以下步骤: 通过与所述软件定义的网络内控制器装置的网络连接,接收以下项的表示: 基于协议报头的第一多个相关报头字段、包括键组成的可配置流表定义,其中用于所述流表定义的每个流表定义的键组成识别为该流表定义所选择的所述相关报头字段中一个或更多字段的集合,以及 用于基于协议报头的第二多个相关报头字段在所述可配置流表定义所定义的流表之间进行选择的可配置逻辑; 基于所述可配置流表定义的每个流表定义来创建流表,其中所述流表的每个流表包括对于由该流表所基于的流表定义中包括的键组成所识别的每个相关报头字段的可配置键列,其中所述流表的每个流表也包括存储转发判定的一个或更多动作列的集合; 安装用于在流表之间进行选择的所述可配置逻辑; 接收数据以填充所述流表的可配置键列和动作列; 根据所接收的数据来填充所述流表;以及 根据用于在流表之间进行选择的所述可配置逻辑、所述流表和所述可配置逻辑要求的相关报头字段中每个分组的值,从通过使用一个或更多协议的所述网络装置的网络接口所接收的对于分组的转发判定来进行选择,以便为该分组选择所述流表之一以及为该分组从所选择的流表来选择条目。
2.如权利要求1所述的方法,其中从所述转发判定来进行选择的所述步骤包括对于所述分组的第一分组的以下步骤: 根据需要访问所述第二多个相关报头字段中所述第一分组的值以便所述可配置逻辑选择所述流表之一;以及 基于所选择的流表的键组成所识别的相关报头字段中所述第一分组的值,生成用于所选择的流表的键。
3.如权利要求1所述的方法,还包括: 通过与所述软件定义的网络内所述控制器装置之间的所述网络连接,接收键生成逻辑的表示以从所述分组的值根据所述键组成来生成键,以便与所述流表的条目进行比较;以及 安装所述键生成逻辑。
4.如权利要求1所述的方法,还包括根据所述键组成,从所述分组的值来创建键生成逻辑以生成键,以便与所述流表的条目进行比较。
5.如权利要求1所述的方法,其中从所述转发判定来进行选择的所述步骤包括对于所述分组的第一分组的以下步骤: 基于所述可配置逻辑和由所述可配置逻辑进行选择所要求的所述第二多个相关报头字段的某些字段中所述第一分组的值,选择所述流表之一; 至少基于比较所选择的流表中填充的键和从所选择的流表的键组成所识别的相关报头字段中所述第一分组的值生成的键,识别所选择的流表的一个条目;以及 执行所识别的条目的一个或更多动作列的集合中指定的一个或更多动作的集合。
6.如权利要求5所述的方法,其中选择所述流表之一的所述步骤还包括基于用于在所述流表之间进行选择的所述可配置逻辑和所述可配置逻辑识别的所述第一分组中的协议报头来选择键组成变体的步骤。
7.如权利要求5所述的方法,其中从所述转发判定来进行选择的所述步骤还包括将不匹配为分组选择的流表的任何条目的那些分组传送到所述控制器装置。
8.如权利要求5所述的方法,其中利用对于所填充的键内存在的通配符值的通配符匹配,执行对所选择的流表中填充的键和所生成的键的比较。
9.如权利要求8所述的方法,其中识别所选择的流表的一个条目的所述步骤还包括,响应匹配所选择的流表的两个或更多条目的集合,基于条目的匹配集合所指定的优先权值来选择条目的匹配集合中的条目。
10.如权利要求8所述的方法,其中识别所选择的流表的一个条目的所述步骤还包括,响应匹配所选择的流表的两个或更多条目的集合,基于键与条目的匹配集合之间最精确的匹配来选择条目的匹配集合中的条目。
11.一种充当流交换使能的转发元件的网络装置,包括: 配置模块,可操作以: 接收以下项的表示: 基于协议报头的第一多个相关报头字段、包括键组成的可配置流表定义,其中用于所述流表定义的每个流表定义的键组成识别为该流表定义所选择的所述相关报头字段中一个或更多字段的集合,以及 用于基于协议报头的第二多个相关报头字段,在所述可配置流表定义所定义的多个流表之间进行选择的可配置逻辑,以及 安装用于在所述多个流表之间进行选择的所述可配置逻辑; 流表管理模块,可 操作以: 基于所述可配置流表定义中的每个定义来创建流表,其中所述流表中的每个流表要包括对于由该流表所基于的流表定义中包括的键组成所识别每个相关报头字段的可配置键列,其中所述流表的每个流表要包括存储转发判定的一个或更多动作列的集合, 接收数据以填充所述流表的可配置键列和动作列,以及 根据所接收的数据来填充所述流表;以及 分组处理模块,可操作以根据用于在所述多个流表之间进行选择的所述可配置逻辑、所述流表和所述可配置逻辑所要求的所述相关报头字段的那些字段中每个分组的值,从通过所述网络装置的网络接口接收的对于分组的转发判定来进行选择,以便为该分组选择所述流表之一以及为该分组从所选择的流表来选择条目。
12.如权利要求11所述的网络装置,其中所述分组处理模块还包括: 解析模块,包括:判定模块,可操作以基于所述可配置逻辑和由所述可配置逻辑进行选择所要求的所述第二多个相关报头字段的某些字段中每个分组的值,为每个分组选择所述流表之一,以及键生成模块,可操作以为每个分组接收来自所述判定模块的所选择的流表的指示,并且配置成从所选择的流表的键组成所识别的相关报头字段中该分组的值,为每个分组生成键;以及 匹配和动作模块,可操作以为每个分组接收所选择的流表的指示和来自所述键生成模块的键,并且配置成:至少基于比较该键和所选择的流表中填充的键来识别所选择的流表的一个条目,以及 执行所识别的条目所指定的一个或更多动作的集合。
13.如权利要求12所述的网络装置,其中: 所述判定模块还配置成在所述可配置逻辑对于给定分组要求时,基于所述可配置逻辑所识别的给定分组内的协议报头来选择键组成变体;以及 所述键生成模块还配置成基于所选择的组成变体来生成对于所述给定分组的键。
14.如权利要求12所述的网络装置,其中所述匹配和动作模块配置成,响应在比较键和所选择的流表中填充的键时匹配了所选择的流表的零个条目,将该分组传送到所述控制器装置。
15.如权利要求12所述的网络装置,其中所述配置模块也可操作以: 接收键生成逻辑的表示;以及 在所述键生成模块中安装所述键生成逻辑。
16.如权利要求12所述的网络装置,其中所述键生成模块还配置成从所述流表定义的表示来创建键生成逻辑。
17.如权利要求12所述的网络装置,其中所述匹配和动作模块配置成通过利用对于所填充的键内存在的通配符值的通配符匹配,比较键和所选择的流表中填充的键。
18.如权利要求17所述的网络装置,其中所述匹配和动作模块响应在比较键和所选择的流表中填充的键时匹配所选择的流表的两个或更多条目的集合,配置成基于条目的匹配集合指定的优先权值而在条目的匹配集合之间进行选择。
19.如权利要求17所述的网络装置,其中所述匹配和动作模块响应匹配所选择的流表的两个或更多条目的集合,配置成基于最精确匹配而在条目的匹配集合之间进行选择。
20.如权利要求17所述的网络装置,其中所述匹配和动作模块配置成通过选择它确定具有匹配该键的填充 的键的第一流表条目来识别所选择的流表的一个条目。
【文档编号】H04L29/06GK103999430SQ201280063405
【公开日】2014年8月20日 申请日期:2012年12月20日 优先权日:2011年12月22日
【发明者】L.贝利沃, E.迪克, R.米什拉, R.帕特尼 申请人:瑞典爱立信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1