CN104012063A - 用于软件定义网络中的灵活和可扩展流处理的控制器 - Google Patents
用于软件定义网络中的灵活和可扩展流处理的控制器 Download PDFInfo
- Publication number
- CN104012063A CN104012063A CN201280063937.2A CN201280063937A CN104012063A CN 104012063 A CN104012063 A CN 104012063A CN 201280063937 A CN201280063937 A CN 201280063937A CN 104012063 A CN104012063 A CN 104012063A
- Authority
- CN
- China
- Prior art keywords
- stream table
- definition
- configurable
- keyword
- forwarding elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000005111 flow chemistry technique Methods 0.000 title description 2
- 230000009471 action Effects 0.000 claims abstract description 86
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000009826 distribution Methods 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 47
- 230000014509 gene expression Effects 0.000 claims description 39
- 230000015572 biosynthetic process Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 18
- 238000012856 packing Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000008878 coupling Effects 0.000 description 32
- 238000010168 coupling process Methods 0.000 description 32
- 238000005859 coupling reaction Methods 0.000 description 32
- 230000000875 corresponding effect Effects 0.000 description 14
- 239000000203 mixture Substances 0.000 description 12
- 238000005755 formation reaction Methods 0.000 description 11
- 238000000926 separation method Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000013011 mating Effects 0.000 description 6
- 230000015654 memory Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
网络装置充当软件定义网络中的控制器。该网络装置接收处理定义,其包括协议的可配置定义、可配置流表定义以及用于在可配置流表定义所定义的流表之间进行选择的可配置逻辑的表示。网络装置转化处理定义,以创建解析器配置包,其被分配给多个转发元件。这种分配使每个转发元件基于每个可配置流表定义来创建流表。流表包括一个或多个可配置关键字列以及存储转发判定的一个或多个动作列的集合。网络装置传送数据以填充在多个转发元件的每个中创建的流表的可配置关键字列和动作列。
Description
技术领域
本发明涉及联网领域;以及更具体来说,涉及用于软件定义网络的灵活和可扩展流(flow)处理架构。
背景技术
数十年来,传统的基于电路的通信网络的使用已经下降而支持基于分组的网络,其会是更灵活、有效和安全的。因此,基于分组的网络的增加普及引起对基于分组的网络装置的需求的增长。通过制造商创建越来越大的单片路由器以操控网络业务的增加容量和复杂度,在很大程度上满足这种需求。但是,这种模型正接近其技术和经济极限。越来越难以采用传统路由器设计来满足不断增加的性能要求,以及随着低成本数据中心硬件的出现,路由器厂商难以对相同的性能证明较高的硬件成本是合理的。同时,对接入和聚合网络中的路由选择和交换控制平面的需求变得更为复杂。运营商需要如下能力:定制路由选择以操控边缘附近的特定种类的业务流的能力;配置跨越聚合网络的定制服务;以及实现多层综合,而无需作为当今网络的特征的详细低级配置。
这些趋势导致路由选择架构(其中数据和控制平面是分离的)的不同方式。通过这种分隔,控制平面可在逻辑上集中化,并且采用具有各种架构的多种硬件组件来实现。此外,数据平面可由简化交换机/路由器元件(其由逻辑上集中的控制器所配置)组成。这种新的路由选择分离架构模型集中于控制与转发和数据处理元件的分离,并且处于软件定义网络(SDN)的核心。用于软件定义网络中的流处理的一个标准是OpenFlow,其定义用来在控制平面与转发之间传输消息的协议,并且描述用于分组处理的模型。
软件定义网络的分离架构实现能够在逻辑上或物理上集中在一起的功能性之间的分隔。例如,在公共控制实体与网络应用(例如通用多协议标记交换(GMPLS)、边界网关协议(BGP)、因特网协议安全性(IPSec)等)之间能够存在分离或分隔。类似地,在控制与转发/处理之间能够存在分离或分隔(即,中央控制与执行分组处理的网络装置的分隔)。还能够存在数据转发功能性、数据处理功能性和数据生成功能性(例如深层分组检查(DPI);加密;操作、管理和管理(OAM);等等)的分离或分隔。
软件定义网络提供优于传统单片架构网络的许多优点。例如,实现重要网络路由选择和交换功能性的控制平面应用与转发平面完全分隔。因此,保持集中控制平面实现高度定制和优化网络服务,其能够适应特定用户需要。集中控制平面提供高度可缩放、可靠和灵活网络基础设施,其能够迎合不同的用户需要。转发平面(或数据平面)装置能够是廉价和可互换的商品网络装置,其降低用户的总体配置和维护负担。另外,整个网络的单个管理和配置实体增强用户的易于使用体验。
但是,当前SDN配置还遭受缺点。虽然系统、例如OpenFlow提供指定用于分组处理的模型的有效方式,但是存在的问题在于,很难按照特定路由选择需要来扩展或定制这种模型。例如,增加对新协议的支持要求提出对OpenFlow规范的变更,期待采用,并且等待实现。这类变更涉及修改分组处理模型的解析、分类(因为必须改变将要解析的字段的数量)和动作(例如,用于修改新协议的报头)。
当前SDN分组处理模型的另一个缺点在于,处理规范要求基于协议报头字段的静态集合来将分组分类为属于某个流。例如,分类可以仅使用采取元组形式的所提取报头字段的有限集合(例如15个元组被提取并且用于分类)进行。但是,当部署新协议时,这种模型不能够易于更新。另外,在一些环境中,应用可获益于仅使用元组的小集合对分组的仅部分分类。例如,对于MPLS分组,分组转发判定可以只对MPLS报头中的短路径标签的内容进行,而无需进一步检查分组本身。在OpenFlow中,不可能使用少于15个元组来分类这些分组,这在解析工作量和流表存储器要求方面是低效的。
最后,当前SDN模型在处理多级隧穿(即,封装和拆封)中也较弱。例如,考虑在开放系统互连(OSI)模型数据链路层报头(即,OSI第二层或L2)或网络层报头(即,OSI第三层或L3)之上封装以太网分组的情况,这常常在实现第2层虚拟专用网络(L2VPN)或伪线(PW)时进行。在这种情况下,不可能使用第一级的L2或L3之外的报头中存在的信息来执行更细粒度分组处理。
发明内容
按照本发明的一个实施例,由充当软件定义网络中的控制器的网络装置所执行的方法包括接收处理定义的步骤。处理定义包括下列项的第一表示:包含协议报头的相关报头字段的协议的可配置定义;包含基于第一多个相关报头字段的关键字组成的可配置流表定义,其中每个流表定义的关键字组成识别对那个流表定义所选的相关报头字段的一个或多个的集合;以及可配置逻辑,用于基于第二多个相关报头字段在通过可配置流表定义所定义的流表之间进行选择。该方法还包括转化处理定义以创建解析器配置包的步骤。这个解析器配置包包括可配置流表定义和用于在流表之间进行选择的可配置逻辑的第二表示。该方法还包括向多个转发元件分配解析器配置包的步骤。这使多个转发元件的每个基于每个可配置流表定义来创建流表。这些流表的每个包括用于由作为那个流表的基础的流表定义中包含的关键字组成所识别的每个相关报头字段的可配置关键字列。流表的每个还包括存储转发判定的一个或多个动作列的集合。该方法还包括传送数据以填充在多个转发元件的每个中创建的流表的可配置关键字列和动作列的步骤。
按照本发明的另一个实施例,网络装置充当软件定义网络中的控制器。网络装置包括可操作以接收处理定义的定义接收模块。处理定义包括下列项的第一表示:包含协议报头的相关报头字段的协议的可配置定义;包含基于第一多个相关报头字段的关键字组成的可配置流表定义,其中每个流表定义的关键字组成识别对那个流表定义所选的相关报头字段的一个或多个的集合;以及可配置逻辑,用于基于第二多个相关报头字段在通过可配置流表定义所定义的流表之间进行选择。网络装置还包括转化器,其可操作以转化处理定义,以便创建解析器配置包。解析器配置包包括可配置流表定义和用于在流表之间进行选择的可配置逻辑的第二表示。网络装置还包括分配模块,其可操作以向多个转发元件分配解析器配置包。这使多个转发元件的每个基于每个可配置流表定义来创建流表。每个流表包括用于由作为那个流表的基础的流表定义中包含的关键字组成所识别的每个相关报头字段的可配置关键字列。流表的每个还包括存储转发判定的一个或多个动作列的集合。该网络装置还包括流表填充模块,其可操作以传送数据,以便填充在多个转发元件的每个中创建的流表的可配置关键字列和动作列。
附图说明
通过参照用来示出本发明的实施例的以下描述和附图,可以最透彻地了解本发明。附图包括:
图1示出按照本发明的一个实施例的示范灵活和可扩展流处理系统;
图2示出按照本发明的一个实施例、解析模块中的处理配置的表示;
图3示出按照本发明的一个实施例、充当软件定义网络的控制器的网络元件中的方法的流程图;
图4示出按照本发明的一个实施例、充当软件定义网络的转发元件的网络元件中的方法的流程图;
图5示出按照本发明的一个实施例、充当软件定义网络的转发元件的网络元件中用于进行转发判定的方法的流程图;
图6示出按照本发明的一个实施例、充当软件定义网络的转发元件的网络元件中用于识别流表条目的方法的流程图;
图7示出按照本发明的一个实施例的解析过程和关键字生成的表示;
图8示出按照本发明的一个实施例的示范灵活和可扩展流处理系统;以及
图9示出按照本发明的一个实施例、灵活和可扩展流处理系统中使用的处理配置的示范表示。
具体实施方式
在以下描述中提出许多具体细节。但是要理解,即使没有这些具体细节也可实施本发明的实施例。在其它情况下,没有详细示出众所周知的电路、结构和技术,以免影响对本描述的了解。通过所包含的描述,本领域的技术人员将能够实现适当的功能性而无需过分实验。
说明书中提到“一个实施例”、“实施例”、“一个示例实施例”等表示所述的实施例可包括特定特征、结构或特性,但可能不一定每一个实施例都包括该特定特征、结构或特性。此外,这类词语不一定指同一个实施例。此外,在结合一个实施例来描述特定特征、结构或特性时,无论是否明确描述,均认为结合其它实施例来实现这种特征、结构或特性是在本领域的技术人员的知识范围之内的。
为了易于理解,虚线和/或加括号文本在附图中用来表示某些项的可选性质(例如不是由本发明的给定实现所支持的特征、由给定实现所支持的特征、但是用于某些情况中而不是用于其它情况中)。
在以下描述和权利要求书中,可使用术语“耦合”和“连接”及其派生。应当理解,这些术语并不是要作为彼此的同义词。“耦合”用于表示彼此可以有或者可以没有直接物理或电接触的两个或更多元件相互配合或交互。“连接”用于表示相互耦合的两个或更多元件之间的通信的建立。
本文所使用的网络元件(例如路由器、交换机、桥接器)是包括硬件和软件的一个组网设备,其在通信上互连网络上的其它设备(例如其它网络元件、端站)。一些网络元件是“多服务网络元件”,其提供对多个连网功能(例如路由选择、桥接、交换、第2层聚合、会话边界控制、服务质量和/或订户管理)的支持,和/或提供对多个应用服务(例如数据、语音和视频)的支持。订户端站(例如服务器、工作站、膝上型、上网本、掌上型、移动电话、智能电话、多媒体电话、基于因特网协议的语音(VOIP)电话、用户设备、终端、便携媒体播放器、GPS单元、游戏系统、机顶盒)访问通过因特网所提供的内容/服务和/或覆盖于因特网的虚拟专用网络(VPN)上(例如通过其中隧道传递)提供的内容/服务。内容和/或服务通常由属于服务或内容提供商的一个或多个端站(例如服务器端站)或者参与对等服务的端站来提供,并且可包括例如公开网页(例如免费内容、店面、搜索服务)、私人网页(例如提供电子邮件服务的用户名/密码访问网页)和/或基于VPN的公司网络。通常,订户端站(例如通过与接入网(有线或无线)耦合的客户驻地设备)耦合到边缘网络元件,边缘网络元件(例如通过一个或多个核心网络元件)耦合到与其它端站(例如服务器端站)耦合的其它边缘网络元件。
按传统,网络元件能够是多功能网络元件,其将控制平面和数据平面(有时称作转发平面或媒体平面)集成到同一网络元件中。在网络元件是路由器(或者实现路由选择功能性)的情况下,控制平面通常确定如何路由数据(例如分组),而数据平面负责转发那个数据。例如,控制平面通常包括与其它网络元件进行通信以便交换路由并且基于一个或多个路由选择量度来选择那些路由的一个或多个路由选择协议(例如边界网关协议(BGP)、内部网关协议(IGP)(例如开放式最短路径优先(OSPF)、路由选择信息协议(RIP)、中间系统到中间系统协议(IS-IS))、标记分布协议(LDP)、资源保存协议(RSVP))。备选地,网络元件可以仅实现数据平面(转发平面)或者仅实现控制平面的全部或部分。职责的这种分隔是分离架构网络模型中常见的。术语“分离架构网络”在很大程度上是术语“软件宽带网网络”(SDN)的同义词,以及这些术语可在本文中可互换地使用。
路由和相邻性存储在控制平面上的一个或多个路由选择结构(例如路由选择信息库(RIB)、标记信息库(LIB)、一个或多个相邻性结构)中。控制平面基于路由选择结构采用信息(例如相邻性和路由信息)来对数据平面进行编程。例如,控制平面将相邻性和路由信息编程到数据平面上的一个或多个转发结构(例如转发信息库(FIB)、标记转发信息库(LFIB)以及一个或多个相邻性结构)中。数据平面在转发业务时使用这些转发和相邻性结构。
路由选择协议的每个基于某些路由量度(量度对于不同路由选择协议能够是不同的)将路由条目下载到主RIB。路由选择协议的每个能够在本地RIB(例如OSPF本地RIB)中存储路由条目,其中包括没有下载到主RIB的路由条目。管理主RIB的RIB模块从路由选择协议所下载的路由中选择路由(基于量度集合),并且将那些所选路由(有时称作活动路由条目)下载到数据平面。RIB模块还能够使路由在路由选择协议之间重新分布。
多功能网络元件能够包括一个或多个线路卡集合、一个或多个控制卡集合以及可选的一个或多个服务卡集合(有时称作资源卡)。这些卡通过一个或多个机构(例如耦合线路卡的第一全网格以及耦合全部卡的第二全网格)。线路卡集合组成数据平面,而控制卡集合提供控制平面并且通过线路卡与外部网络元件交换分组。服务卡集合能够提供专用处理(例如第4至第7层服务(例如防火墙、IPsec、IDS、P2P)、VoIP会话边缘控制器、移动无线网关(GGSN、演进分组系统(EPS)网关))。
与要求复合网络管理功能在整个网络分布在多功能网络的控制平面中并且还要求复合数据和控制平面集成到同一多功能网络元件中的单片网络架构不同,基于流的软件定义网络允许网络的数据平面与控制平面分隔。数据平面能够实现为分布在整个网络的简单离散流交换机(转发元件),以及提供网络的智能的控制平面在集中流控制器(其监督流交换机)中实现。通过将控制功能与数据转发功能分离,软件定义网络减轻修改网络控制逻辑的任务,并且提供程序接口,开发人员在其上能够构建大量新路由选择和协议管理应用。这允许数据和控制平面单独地演进和缩放,同时降低数据平面网络组件所需的管理必须性。
在软件定义网络的一个实施例中,控制平面通过转发元件与控制器之间的安全和可靠传输连接、经过控制平面信令协议来控制转发平面。控制器通常包括操作系统,其提供基本处理、I/O和网络能力。中间件层向操作系统提供软件定义网络控制器的上下文,并且使用控制平面信令协议与各种转发平面元件进行通信。中间件层之上的应用层提供各种网络操作所需的智能,例如协议、网络状况感知和用户接口。在更抽象级,应用层与网络的逻辑视图配合工作,以及中间件层提供从逻辑视图到物理视图的转换。
在软件定义网络范例的一个实施例中,各转发元件是流交换使能网络装置。流交换使能网络装置基于各分组所属的流而不是分组中的目标IP地址(其通常用于当前常规分组交换IP网络中)来转发分组。流可定义为其报头与给定位模式匹配的分组集合。在这种情况下,传统IP转发也是基于流的转发,其中流仅由目标IP地址来定义。但是,不是只考虑目标IP地址或源IP地址,通用流定义允许考虑分组报头中的许多字段(例如10个或更多)。
控制平面基于各流的应用层计算和中间件层映射向转发元件传送相关消息。转发元件处理这些消息,并且在其流表中编程适当流信息和对应动作。转发元件将分组映射到流,并且基于这些流表来转发分组。当然,流表可按照多种数据结构来实现,例如地图、列表、阵列、文件、表格、关系数据库等。此外,这些表中的列和行的论述是任意的;虽然一个实现可选择成将条目放入行中,但是修改数据结构以改为将条目放入列中是不重要的。另外,转发元件可需要具有用于诸如DPI、NetFlow数据收集、OAM等的重要操作的数据处理和数据生成能力。
流处理的标准定义用来在控制与转发平面之间传输消息的协议,并且描述用于分组的处理的模型。流处理装置中用于处理分组的这种模型包括报头解析、分组分类并且进行转发判定。
报头解析描述如何基于众所周知的协议集合(例如以太网、虚拟局域网(VLAN)、多协议标记交换(MPLS)、IPv4等)来解释分组。报头的一些层包含其中包含与如何对下一个报头进行解复用有关的信息的字段。例如,以太网报头包括描述哪一种类型的报头处于下一层中的字段。一些协议字段用来构建匹配结构(或关键字),其将用于分组分类中。例如,第一关键字字段可能是源媒体接入控制(MAC)地址,以及第二关键字字段可能是目标MAC地址。
分组分类涉及运行存储器中的查找表,以便通过基于匹配结构或关键字确定哪一个是转发表中的最佳匹配流(其对应于这个分组),来分类分组。有可能的是,许多流能够对应于分组;在这种情况下,该系统通常配置成按照所定义方案从许多流来确定一个流。另外,表中的流条目能够定义如何将分组与条目进行匹配。若干匹配标准存在,例如“完全”(关键字中的值必须完全匹配表中的值)、“通配符”(关键字中的值能够是任何值)、“最长前缀匹配”(常用于将IP地址与路由条目进行匹配)、“位掩码”(只有关键字中的位的一部分用于匹配)以及“范围”(关键字中的值需要处于值的所定义限定范围之内)。
进行转发判定并且执行动作基于在通过使用分组运行动作的分组分类的前一步骤所识别的流条目进行。表中的各流与将要对各对应分组所运行的动作集合关联。例如,动作可以是将报头推送到分组上,使用特定端口来转发分组,或者只是丢弃分组。因此,具有特定传输控制协议(TCP)目标端口的IPv4分组的流条目可能包含指定应当丢弃这些分组的动作。
如何实现动作的解析、分类和执行的描述通常在规范文档中证明。实现这个规范文档的节点能够彼此互通。
本发明的一个实施例的一个方面描述用于描述解析、匹配和动作的新抽象。这些抽象将按照高级语言来揭示,其将用来表示转发元件分组处理。与典型软件定义网络不同,这些抽象将用来在运行时而不仅在配置时对转发元件进行编程。
本发明的一个实施例的另一方面将典型分组解析和分组分类阶段捆绑在一起,从而通过具有解析由抽象的表示所提供的任何类型的分组的灵活性,来允许转发元件是协议不可知的,以生成流的分类的匹配关键字。解析和分类的这种捆绑提供表达这类关系的更简单方式。
本发明的一个实施例的附加方面包括使用所定义抽象、基于处理的定义来提供转发元件的实现的新处理模型。按照高级语言所指定的处理定义可被变换为将要用于分组处理的解析和动作阶段中的中间代码表示。具有简单、中间代码表示允许全异转发元件使用相同处理模型代码,并且由此进一步降低控制器中用于管理具有变化配置和能力的转发元件所需的复杂度。
本发明的实施例的方面提供修改不是严格地固定到正式规范中或者低级硬件实现细节中的转发元件的行为的灵活方式。因此,易于使模型快速适合支持新协议或者提供定制分组处理方案。
概述
图1示出按照本发明的一个实施例的示范灵活和可扩展流处理系统。在这个图中,处理配置102的一些或所有部分的表示由控制器110和转发元件120A来利用。虽然这个图示隐藏一个或多个全异转发元件120B-120N的内部工作,但是所示转发元件120A主要表示其特性,除非另加说明。
为了便于本公开,术语“转发元件”120A和“全异转发元件”120B-120N可用于某些环境中。除非另加说明或者通过环境语言清楚说明,否则与转发元件120A有关的所述任何细节同样可适用于全异转发元件120B-120N,以及与全异转发元件120B-120N有关的细节同样可适用于转发元件120A。
处理配置102包括三个主要抽象,其用来指定将要由转发元件120A所实现的转发处理模型。一个抽象是包含协议报头的相关报头字段的协议的可配置定义104。这些可配置定义104指定将由网络中的转发元件120A和其它全异转发元件120B-120N来解析的协议报头的类型。因此,可配置定义104包括一个或多个分组协议报头定义的集合,其中各协议报头定义包括报头名称,并且按照报头(其按照协议规范)中的一个或多个报头字段来定义。这些报头字段指示报头中的每个所定义字段的位置和数据类型。在本发明的一个实施例中,数据类型只是通用字段,以及这个字段的长度附加到协议报头定义。另外,在本发明的一个实施例中,报头的可配置定义104可以不定义报头中的每一个可能报头字段。在这类实施例中,报头定义包括报头长度,其是用来基于报头的一个或多个报头字段中的值来计算报头的总长度的数学表达。例如,单位为字节的报头长度可对IPv4报头定义为等于来自报头中的“hlen”字段的值乘以数值四。在这个示例中,假定“hlen”字段中的值为5,则报头长度计算为5×4字节、即20字节。
处理配置102中的第二抽象是包含关键字组成的可配置流表定义108,其利用包含协议报头的相关报头字段的协议的可配置定义104的161个方面。可配置流表定义108用来定义将要用于分组分类中的流表140A-140N的数量以及将要用于匹配的、每个表中的可配置关键字列176的类型、大小和数量。另外,可配置流表定义108的表示还用来创建在转发元件120A中使用的关键字生成逻辑158,其指定如何使用分组的解析协议报头字段来生成关键字。这个关键字生成逻辑158可例如由控制器110上或者甚至单独转发元件(例如120A)上的编译器114基于解析器配置包117在这种系统中的各种位置来创建。
包括关键字组成的可配置流表108定义包括将要用于转发元件120A中的各流表140A-140N的表定义指令。每个表定义包括与特定流表(例如140A)对应的唯一表标识符(ID)以及一个或多个字段陈述的集合。各字段陈述包括:字段ID,识别关键字中的关键字字段的相对位置(和/或流表140A中的可配置关键字列176之一的相对位置);匹配类型,指示如何将关键字字段与可配置关键字列进行比较以确定它们是否匹配;以及一个或多个关键字字段,指示解析协议报头字段的哪一个将要用作关键字字段,以及指示表中的可配置关键字列176的对应可配置关键字列的类型和大小。匹配类型指定在将关键字字段与可配置关键字列进行比较时将要使用的一个或多个匹配算法。例如,匹配算法可以是完全匹配、最长前缀匹配、掩码或范围。字段陈述的一个或多个关键字字段指示哪一个解析报头字段将用来生成关键字的对应关键字字段部分。
如果对某个字段陈述正好定义一个关键字字段,则在生成与字段陈述对应的关键字的部分时使用那个关键字字段。但是,在本发明的一个实施例中,可对字段陈述断言一个以上关键字字段。这个配置允许使用关键字组成变体。关键字组成变体指定基于特定分组中存在的报头来构成关键字的不同方式。因此,当解析两个不同分组时,来自各分组的不同报头字段可用来生成用于在表定义指令的表ID所指示的流表中进行匹配的关键字。
例如,考虑一种情况,其中表定义包括具有’6’的字段ID以及取决于分组中的传输层(L4)的两个关键字字段可能性的字段陈述的表定义。如果解析分组包含TCP报头,则TCP报头字段将在生成关键字中的第六字段中使用。但是,如果分组而是包含用户数据报协议(UDP)报头,则UDP报头字段将在生成关键字中的第六字段中使用。在这种情况下,一个关键字组成变体包括TCP报头字段,以及一个关键字组成变体包括UDP报头字段。不管哪一个关键字组成变体用来构成关键字,相同流表和可配置关键字列将用于匹配。
包括关键字组成的可配置流表108定义的逻辑图示在图1中表示为表。对于每个表定义—通过表ID所表示—可存在一个关键字组成(例如1的表ID、1的关键字组成),或者在本发明的一些实施例中可存在一个以上关键字组成或者多个关键字组成变体(例如2的表ID、2和2’的关键字组成)。
处理配置102中的第三抽象是用于在流表之间进行选择的可配置逻辑106,其利用包含协议报头的相关报头字段的协议的可配置定义104的160个方面。在本发明的一个实施例中,这个可配置逻辑106还在所选流表的关键字组成变体之间进行选择。用于在流表之间进行选择的可配置逻辑106定义待解析的协议报头之间的关系和排序。这些关系可在逻辑上表示为一种类型的解析树,其在被体现时示出将要按照所定义处理配置102来解析和分类的可能分组(即,协议报头排序)。除了定义协议报头之间的关系之外,用于在流表之间进行选择的可配置逻辑106还基于分组中的协议报头的顺序来定义哪一个流表140A-140N将用于分组分类。因此,不同的解析路径可引起对分类选择不同的表。例如,一个解析路径162可引起与其它解析路径163或164不同的表ID被选择。在一个实施例中,这些解析路径还确定在构成所选流表的关键字时应当使用哪一个关键字组成变体。
用于在流表之间进行选择的可配置逻辑106定义协议报头排序关系,并且确定使用栈指令的分类的表。每个栈指令对应于分组协议报头,并且包括报头名称、关键字字段和一个或多个规则的集合,各规则包括关键字值和下一个报头名称。关键字字段是被检查的分组报头中的报头字段之一,其将要与规则的关键字值进行比较,以尝试确定待解析的下一个报头。当关键字字段与规则的关键字值匹配时,解析将使用具有与匹配规则所指示的下一个报头名称对应的报头名称的栈指令对后续分组报头继续进行。当关键字字段无法与规则的关键字值匹配时,按照栈指令所指示的表ID对分组分类来选择流表。如果没有表ID由栈指令来指示,则用于在流表之间进行选择的可配置逻辑106可指示将采取正确动作(例如丢弃分组、向控制器传送分组等)。
处理配置102的表示150采取处理定义112的形式来创建。控制器110可从远程用户或装置接收处理定义112,或者它可创建处理定义112。在图1所示的实施例中,控制器110包括接收处理定义112的定义接收模块111。将处理定义112提供151给转化器113,以产生流表配置信息115A,其被提供154给流表填充模块118并且由其用来为流表140A-140N填充流表条目。另外,转化器113将处理定义112提供给编译器114,其可产生152解析代码116。这个解析器代码116以及可选的流表配置信息115B的一种形式构成解析器配置包117。
转化器113的目的部分是将处理定义112转化为能够由全异转发元件120A-120N用于处理分组的解析器配置包117。因此,通过使用其编译器114,转化器113通过从处理定义112所提供的正式抽象(即,一种类型的语法)生成采取解析器代码116的形式的分组解析器的代码,来充当解析器生成器(即,编译器-编译器或者编译器生成器)。解析器代码116还可由转发元件(例如120A)用来对分组执行动作。因此,作为解析器配置包117的一部分的解析器代码116结合来自处理配置102的协议的可配置定义104、用于在流表之间进行选择的可配置逻辑106和可配置流表定义108的表示153。在一个实施例中,解析器代码116是使用指令的小集合(例如加载、存储、增加、分支、比较等)和在对分组运行动作的同时将要用作暂时数据存储装置的虚拟寄存器的所定义集合所指定的中间级代码。
分组处理的解析阶段中使用的解析器代码116的部分可在逻辑上表示为有向图。这种有向图中的各节点表示协议报头,以及有向边缘表示基于报头字段中的值所采取的路径。这种有向图的示例在图7中示出,图7示出按照本发明的一个实施例的解析阶段700和关键字生成阶段701的表示,其中解析阶段700可操作以解析UDP、TCP和MPLS分组。当解析以太网702的第一协议报头以识别其字段时,分支判定基于以太网报头702的ethertype字段的值进行。如果ethertype字段值是0x8847,则待解析的下一个报头是MPLS报头704。在一个实施例中,分支判定基于MPLS报头704中的bos(栈底)字段的值进行。当bos字段值为零时,解析将对下一个报头继续进行,其也是MPLS报头704。当bos字段值不为零时,解析阶段700结束,并且关键字生成701开始。在另一个实施例中,分支判定在到达MPLS报头704时取决于bos字段值和key_is_matchable字段值,其发信号通知关于其中更多MPLS分组704可存在于分组中的发生,但是进一步检查是不必要的,因为分组分类的预期关键字已经可生成。因此,当key_is_matchable字段值或bos字段值不为零时,解析阶段700结束,并且关键字生成701开始。类似地,如果以太网报头702的ethertype字段值是0x8100(而不是0x8847),则将分组的下一个字段作为IPv4报头708来解析。在这点上,检查IPv4报头708的协议字段值:如果它是1x11,则解析将对作为UDP报头710的下一个报头继续进行,以及如果它是0x06,则解析将对作为TCP报头712的下一个报头继续进行。然后将解析UDP 710或TCP 712报头以使其字段被识别,以及解析阶段700结束,并且关键字生成701开始。
回到图1,解析器配置包117中的解析器代码116还包含用来在全异转发元件120B-120N中的分组处理的动作运行级期间对分组执行动作的指令。这些动作由控制器110在转发元件120A中插入或修改流时来填充。能够定义动作的两个类别—与分组的协议无关的动作以及与分组的协议有关的动作。协议无关的动作的示例包括向端口输出分组,设置分组的队列,或者丢弃分组。另外,无关动作可包括向解析器回送分组,这通常在通过动作修改之后进行。
此外,通过利用包含在处理配置102中并且在处理定义112中所表示的、包含协议报头的相关报头字段的协议的可配置定义104,协议有关动作可对分组来执行。这经过分组处理技术的协议特定定制来提供增加的灵活性,其中具有某些协议报头的分组可按照细粒度方式来修改。例如,协议有关动作可定义成将附加报头推送到分组上或者从分组弹出报头。此外,协议有关动作可按照简单或复杂方式来改变某些分组报头中的字段。例如,字段可通过使生存时间(TTL)字段(通常存在于IPv4报头中的字段)递增或递减以数学方式来修改,或者目标地址值可基于字段中的原始值、采用完全不同的值来替代。另外,在这种修改之后,动作可计算报头或分组的新校验和。
通过支持当分组中存在解析循环或递归时、例如当分组中存在同一类型(例如MPLS等)的多个报头或者封装或隧道传递业务(例如以太网-MPLS-MPLS-以太网告示)时执行的细粒度动作,这种配置允许对分组处理的进一步控制。在这类情况中,动作可对修改、弹出或推送分组中的目标报头是充分智能的。然后可触发无关动作,以又重发分组供进一步解析。当然,将要对特定协议栈所执行的这些定制动作因解析器代码116的性质而是可能的,因为转发元件120A本身没有关于报头如何假定为布置在分组中的知识,而是只沿用解析器代码116所定义的过程。例如,转发元件120A无需在根本上设计成知道L3报头(例如因特网协议(IP)、IPSec、网间分组交换(IPX)等)假定在L2报头(例如地址解析协议(ARP)、异步传输模式(ATM)、点对点协议(PPPP)等)之后出现,而是需要仅盲依靠解析器代码116来穿过分组的报头。
除了创建解析器代码116之外,转化器113还生成流表配置115A信息,其包括其中包含关键字组成的可配置流表定义108的表示。流表配置115A的一种形式115B可包含在解析器配置包117中,其被分配172给转发元件120A-120N。在由转发元件(例如120A)接收解析器配置包117时,配置模块121则可利用流表配置115B向流表管理模块126传送信息167,从而指导它创建或修改流表140A-140N。例如,配置模块121使用流表配置115A,以便指示167流表管理模块126关于多少流表140A-140N是必需的、每个表的关键字组成(每个表的关键字列144A-144N将如何构造)以及流表140A-140N中的条目179A-179N将如何构造。另外,将转化表113所创建的流表配置115A提供154给流表填充模块118,其使用包含关键字组成的可配置流表定义108的表示,以便通过向流表管理模块126发送数据173,正确地填充全异转发元件120A-120N的流表140A-140N中的流表条目179A-179N。
因此,控制器110(经由流表填充模块118)与转发元件120A进行交互173,以便保持所需流表140A-140N的条目179A-179N。控制器110还经由配置模块121与转发元件120A进行交互167,以便创建或修改流表140A-140N。因此,流表140A-140N的所有这种配置和管理经过流表管理模块126进行。
各流表包括可配置关键字列176和动作列178。可配置关键字列176实现关键字组成,并且包括一个或多个关键字列144A-144N,因而通过将关键字的部分与关键字列144A-144N进行匹配来允许分组分类。如图1所示,这些可配置关键字列176可包括字面值(例如80、23、10、192等)或者通配符值(例如‘*’)。动作列178包括将要对分类为属于那个对应流的分组所执行的、各流条目的一个或多个动作146A-146N。如图1所示,这些动作列178可包括大量动作,其中一部分特此一般示为DROP、OUTPUT、POP和REPARSE。在本发明的一个实施例中,这些列包含动作ID以识别位于其它位置的动作代码,并且可包括在执行动作时将要使用的变元值。
在一个实施例中,流表还包括一个或多个流选择列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具有‘1’的优先值142以及最后一个条目179D具有‘7’的优先值时,本发明的一个实施例可将具有最小优先值的记录认为是决定性的,并且因此,分组被分类为属于第一流条目179A。备选地,在将具有最大优先值的记录认为是决定性的另一个实施例中,分组被分类为属于最后一个流条目179D。这种配置要求控制器110按照使得防止优先平局发生的方式来保持流表140A-140N。这可按照多种方法进行,例如向每一个条目179A-179N指配不同的优先值142,或者仅向互斥的条目指配相同优先值142,表示具有共享优先值142的两个条目可能匹配一个关键字是不可能的。在其它实施例中,在优先值142平局的情况下,附加平局决胜过程发生,例如选择表中较高的条目或者具有最长前缀匹配或者最准确匹配的条目(即,可配置关键字列176中具有最少通配符的条目)。
表1表示按照本发明的一个实施例的流表的示例。该表包括两个关键字列,一个用于第一MPLS标签以及一个用于第二MPLS标签。该表还包括流选择列:流ID列141,存储表中的每一个条目的唯一标识符;以及优先列,存储用于实体选择的优先值。该表还包括一个动作列,其存储将要对具有匹配两个关键字列的关键字并且由此被分类为属于特定流的分组运行的动作。
表1
假定分组的解析选择如表1所示的流表,并且生成包含作为第一MPLS标签(即,MPLS LABEL 0)的‘2’和作为第二MPLS标签(即,MPLS LABEL 1)的‘2’的关键字,关键字将匹配通过流ID‘1’以及流ID‘3’所识别的流表的条目。在具有最低优先值的匹配条目表示流隶属关系的一个实施例中,分组将分类为流ID‘3’,因为其优先值‘1’比流ID‘1’的优先值‘5’要低,并且因此可执行动作指示分组将丢弃。在具有最高优先值的条目表示流隶属关系的一个实施例中,分组在流ID‘1’下分类,并且其可执行动作指示分组将输出。备选地,在最早流表条目表示流隶属关系的一个实施例中,分组将直接分类为属于流ID‘1’,因为分组的关键字匹配关键字列。在使用这个“最早流表条目”配置的一个实施例中,优先值是不必要的,因为它是算法中固有的:在检测到具有匹配关键字的关键字列的第一条目时,第一条目自动识别为匹配。
回到图1,在解析器配置包117由转化器113来产生之后,将解析器配置包117发送148给控制器110中的分配模块119,其还将解析器配置包117传送172给软件定义网络中的转发元件120A-120N。因为转发元件120A-120N在可用于存储和运行计算机代码的资源中可有所不同,所以描述解析器配置包117的解析器代码116的特定能力由分配模块119传递给各转发元件120A-120N。例如,可传递诸如解析器代码116的大小和解析器代码116所需的虚拟寄存器的数量之类的特定能力,并且各转发元件120A-120N则可按照其可用的资源来实现这些能力。因此,控制器110能够对任何转发元件进行编程,转发元件了解解析器配置包117,而不知道转发元件的内部组织或者如何生成特定转发元件的本机代码。
转发元件(例如120A)中的配置模块121接收分配模块119所发送的解析器配置包117。配置模块121把来自解析器配置包117的解析器代码116的表示分配给分组处理模块122的段,其包含转发元件120A的主要分组处理管线。例如,解析模块123接收解析器代码116的表示174,从而使它能够解析分组,以选择流表,并且生成用于分组分类的关键字,其被发送166到匹配和动作模块124供附加分组处理。另外,为了对分组运行动作,匹配和动作模块124依靠从配置模块121所发送的解析器代码116的表示175。另外,配置模块123还使用来自解析器配置包117的信息(例如流表配置115B或解析器代码116)来指示167流表管理模块126创建必要的流表140A-140N。
图2示出处理配置102的表示可如何用于包括判定模块202和关键字生成模块204的解析模块123的一个实施例中。在接收分组170时,判定模块基于用于在流表之间进行选择的可配置逻辑106的表示157以及由可配置逻辑106所识别的分组的协议报头字段的值来选择流表之一(例如140A)。判定模块202向关键字生成模块204发送203所选流表140A标识符。在本发明的一个实施例中,判定模块202还选择将要在生成关键字时使用的所选流表140A的关键字组成变体,并且向关键字生成模块204发送203关键字组成变体连同表标识符。
关键字生成模块204按照包含关键字组成的可配置流表定义108、使用关键字生成逻辑158的表示来生成关键字。这个关键字生成基于所选流表140A的关键字组成以及关键字组成所识别的分组的协议报头字段的值。关键字生成模块204向匹配和动作模块128发送166这个关键字连同所选流表140A标识符,以继续进行分组处理。
解析模块123的操作方面在图7中进一步示出。如上所述,分组使用来自解析器配置包117的解析器代码116来解析700,以识别分组的协议报头字段,并且选择用于分类的流表。在图2所示的实施例中,判定模块202执行包括分组处理的解析阶段700的这种识别和选择。随后,在关键字生成级701,关键字按照所选表的关键字组成来构成。例如,当解析路径将分组识别为包含至少一个MPLS报头704时,将选择表‘0’,并且其关键字组成714用来基于在解析分组的同时所识别的MPLS标签来生成关键字。在分组识别为包括IPv4报头的另一个示例中,将选择表‘1’,并且其关键字组成变体716之一将用来使用来自以太网、IPv4的字段以及分组的UDP或TCP报头来生成关键字。在本发明的一个实施例中,不同的关键字组成变体将按照以上在解析阶段700所识别的报头来使用。如果分组包含UDP报头710,则使用第一关键字组成变体717A,其包括UDP dst_port和scr_port字段。备选地,如果分组包含TCP报头712,则使用第二关键字组成变体717B,其包括TCP dst_port和scr_port字段。在图2所示的实施例中,关键字生成模块204执行这个关键字生成阶段701。
回到图1,当利用用于在流表之间进行选择的可配置逻辑106的表示157来解析分组时,一个实施例中的解析模块123识别它检查的分组的每个所识别报头的每个所定义字段。这些字段(或者指向这些字段或分组的位置的指针)的值在转发元件120A的分组上下文存储区中继续存在,这允许分组管线中的各模块在分组的处理期间快速访问这个信息。这稍后当匹配和动作模块可需要使用要求分组的报头布局的知识的分组来执行动作(例如弹出报头、编辑报头中的字段等)时、在分组处理管线中是特别有用的。
匹配和动作模块124接收并且使用所选流表标识符和关键字、基于关键字与所选流表140A的可配置关键字列176中的填充关键字的比较168来识别所选流表140A的一个条目。在识别流表140A的匹配条目时,把来自动作列178的值返回给匹配和动作模块124。在一个实施例中,流选择列177的一个或多个也返回给匹配和动作模块124以用于各种目的,例如当多个条目(例如179A、179D和179F)匹配关键字时选择一个流条目。在本发明的一个实施例中,当关键字不匹配所选流表140A中的任何条目时,将分组回传给控制器110。作为响应,控制器110可决定使用流表填充模块118来创建所选流表140A中的新流表条目(例如179N)。
通过由所识别条目所指定的所插线架169的一个或多个动作146A-146N,匹配和动作模块124对分组运行动作。如上所述,可执行许多类型的协议无关和有关动作,其能够使分组被转发、丢弃、修改或重新解析。另外,关键字(或者其部分)可发送给另一个流表(例如140B),以尝试匹配其中的流条目。
利用系统的一种方式在图1中示出,图1使用带圆圈标号来指示用于阅读所示项的顺序,以便于理解本发明。在圆圈一,由流表管理模块126通过定义各流表167的关键字组成按照从配置模块121所接收167的数据所指定的一个或多个可配置关键字列176、按照解析器配置包117中的每个可配置流表定义108来创建流表140A-140N。通过所定义的这些表,一个或多个流表条目179A-179N由流表管理模块126按照来自控制器110的所接收数据173来填充165到流表140A-140N的一个或多个中,如圆圈二所示。随着这些任务完成,转发元件120A接收分组170,如圆圈三所示,其然后进入解析模块123。解析模块123利用来自解析器配置包117的解析器代码116(其包括用于在流表之间进行选择的可配置逻辑106和包含关键字组成的可配置流表定义108的表示)、基于由可配置逻辑106所识别的分组的协议报头字段来选择流表之一(例如140A),并且基于所选流表140A的关键字组成、从可配置流表定义108以及由可配置逻辑106所识别的分组的协议报头字段的值来生成关键字,如圆圈四所示。在圆圈五,所选表ID和关键字由匹配和动作模块128用来168至少基于关键字与所选流表140A中的所填充关键字的比较来识别所选流表140A的一个条目(例如179A)。在圆圈六中,由所识别条目179A所指定的一个或多个动作从流表140A返回169到匹配和动作模块124,并且被运行。如果动作要求分组被转发,则在虚线圆圈七中,将分组和转发信息(例如端口、多播或单播等)发送171给出口模块以便转发。
图3示出按照本发明的一个实施例、充当软件定义网络的控制器110的网络元件中的方法的流程图。将参照其它简图的示范实施例来描述这个及其它流程图的操作。但是应当理解,流程图的操作能够通过除了参照这些其它简图所述实施例之外的本发明的实施例来执行,并且参照这些其它简图所述的本发明的实施例能够执行与参照流程图所述操作不同的操作。
在图3所示的实施例中,控制器110首先接收302处理定义,其中处理定义112包括下列项的第一表示:包含协议报头的相关报头字段的协议的可配置定义104;包含基于第一多个相关报头字段的关键字组成的可配置流表定义108,其中每个流表定义的关键字组成识别对那个流表定义所选的相关报头字段的一个或多个的集合;以及可配置逻辑106,用于基于第二多个相关报头字段在通过可配置流表定义所定义的流表之间进行选择。在一个实施例中,用于在流表之间进行选择的可配置逻辑106还在所选流表的关键字组成变体之间进行选择。
然后,控制器110转化304处理定义112,以创建解析器配置包117,其中解析器配置包117包括可配置流表定义108以及用于在流表之间进行选择的可配置逻辑106的第二表示。在一个实施例中,可配置逻辑的所包含表示用于在流表之间进行选择以及还用于在所选流表的关键字组成变体之间进行选择。在一个实施例中,解析器配置包117还包括基于可配置流表定义108的关键字生成逻辑158的表示。
通过所编译解析器代码116和可选的流表配置115B,控制器110将解析器配置包117分配306给多个转发元件120A-120N,以使其各执行下列步骤:1) 基于每个可配置流表定义108来创建流表(例如140A),其中流表140A-140N的每个包括通过作为那个流表的基础的流表定义中包含的关键字组成167所识别的每个相关报头字段的可配置关键字列176,并且流表140A-140N的每个还包括存储转发判定的一个或多个动作列178;以及2) 安装关键字生成逻辑158。在本发明的一个实施例中,将解析器配置包117分配306给多个转发元件120A-120N还可使其每个创建、更新或删除流表,与如上所述只创建流表相对。
通过所配置的流表140A-140N以及所安装的关键字生成逻辑158,控制器110传送308数据,以填充在多个转发元件120A-120N的每个中创建的流表140A-140N的可配置关键字列176和动作列178,其中流表140A-140N的每个的可配置关键字列176的数据是分区流表的条目179A-179N的关键字。
在本发明的一个实施例中,控制器110可接收320对处理定义112的更新。通过这种更新,控制器110转化已更新处理定义304,以创建已更新解析器配置包117,其然后分配306给转发元件120A-120N。因为流表140A-140N已经存在于多个转发元件120A-120N中,分配306解析器配置包117可使转发元件120A-120N的一个或多个创建、更新或删除流表140A-140N以及安装关键字生成逻辑158。
图4示出按照本发明的一个实施例、充当软件定义网络的转发元件(例如120A)的网络元件中的方法的流程图。这个附图至少示出用来动态配置和更新转发元件120A以供分组处理中使用的步骤。
转发元件120A通过与软件定义网络中的控制器装置的网络连接来接收402下列项的表示:包含基于协议报头的第一多个相关报头字段的关键字组成的可配置流表定义108,其中每个流表定义的关键字组成识别对那个流表定义所选的相关报头字段的一个或多个的集合;以及可配置逻辑106,用于基于协议报头的第二多个相关报头字段在流表之间进行选择。在一个实施例中,可配置逻辑106还在所选流表的关键字组成变体之间进行选择。
通过该表示,转发元件120A还将基于每个可配置流表定义108来创建404流表140A-140N,其中流表140A-140N的每个包括通过作为那个流表的基础的流表定义中包含的关键字组成所识别的每个相关报头字段的可配置关键字列176,并且每个流表还包括存储转发判定的一个或多个动作列的集合。转发元件120A还将利用该表示来安装406用于在流表之间进行选择的可配置逻辑106,并且安装408关键字生成逻辑。在一个实施例中,所安装的可配置逻辑106还在所选流表的关键字组成变体之间进行选择。
转发元件120A因而能够接收410数据,以填充流表140A-140N的条目179A-179N,其中各条目包括关键字列144A-JX44N中的关键字以及146A-146N中的一个或多个动作的集合。通过这个数据,转发元件120A按照所接收数据来填充411一个或多个流表140A-140N的一个或多个条目179A-179N。
在一个实施例中,转发元件120A可再次436接收410数据,以填充流表140A-140N的条目179A-179N,其中各条目包括关键字列144A-JX44N中的关键字以及146A-146N中的一个或多个动作的集合。因此,转发元件120A将再次按照所接收数据来填充411一个或多个流表140A-140N的一个或多个条目179A-179N。
在一个实施例中,转发元件120A将接收来自控制器110的更新。这个更新可采取对可配置流表定义的更新412和/或对可配置逻辑的更新414的形式。
如果转发元件120A仅接收442对可配置流表定义108的更新412,则转发元件120A则将438按照更新412来创建、更新或删除一个或多个流表140A-140N。
如果转发元件120A仅接收444对可配置逻辑406的更新414,则转发元件120A将安装用于在流表之间进行选择的已更新可配置逻辑106,并且安装408关键字生成逻辑。在一个实施例中,所安装的已更新414可配置逻辑106还在所选流表的关键字组成变体之间进行选择。
但是,如果从控制器110所接收的更新包括对可配置流表定义108的更新412以及对可配置逻辑106的更新414两者446,则转发元件120A将创建、更新和/或删除流表404以及安装可配置逻辑406和关键字生成逻辑408。
图5示出按照本发明的一个实施例、充当软件定义网络的转发元件(例如120A)的网络元件中用于从转发判定进行选择的方法的流程图。图5示出按照用于在流表之间进行选择的可配置逻辑106、流表140A-140N以及由可配置逻辑106选择那个分组的流表之一以及从那个分组的所选流表中选择条目所需的相关报头字段中的各分组的值、从使用一个或多个协议、通过网络装置的网络接口所接收的分组的转发判定进行选择502的方法。转发元件120A将首先接收504要解析的分组。该分组可从多种位置到达,包括转发元件120A的网络接口或者分组处理管线中的另一个模块、例如匹配和动作模块124。
对于该分组,转发元件120A将基于用于在流表之间进行选择的可配置逻辑106以及用于选择的可配置逻辑106所需的多个相关报头字段的一部分中的分组的值来选择508流表之一(例如140A)。在一个实施例中,可配置逻辑106还将选择所选流表140A的关键字组成变体。
通过所选流表140A和关键字,转发元件120A将至少基于所选流表140A中的所填充关键字与从所选流表的关键字组成所识别的相关报头字段中的分组的值所生成的关键字的比较来识别512所选流表140A的一个条目(例如179A)。通过所识别的一个条目179A,转发元件120A将运行514所识别条目179A的一个或多个动作列178的集合中指定的一个或多个动作的集合。
在一个实施例中,所运行动作178之一可要求分组由分组处理模块122来重新解析516。这例如当分组包含同一类型(例如MPLS等)的连续报头时、当分组通过动作之一来修改时或者当分组的协议报头通过另一种协议来封装时可发生。在这种情况下,转发元件120A将再次选择流表之一508,识别所选流表512,并且运行那个条目514所识别的动作514。
图6示出按照本发明的一个实施例、充当软件定义网络的转发元件(例如120A)的网络元件中用于识别流表条目(例如179A)的方法的流程图。
在已经选择流表(例如140A)并且对分组生成了关键字之后,转发元件120A通过利用所填充关键字中存在的通配符值的通配符匹配,来将关键字与所选流表140A中的所填充关键字进行比较604。通过所启用的通配符匹配,有可能的是,关键字将匹配一个以上流表条目的所填充关键字。因此,转发元件120A将确定606多少所填充关键字与该关键字匹配,这确定匹配多少流表条目。
如果正好匹配一个流表条目,则那个条目是所识别条目512。但是,如果匹配一个以上流表条目,则转发元件120A在所匹配条目的集合中选择620一个条目。在一个实施例中,这种选择基于所匹配条目集合中的各条目所指定的优先值进行。例如,转发元件120A可选择集合中具有最高优先值的条目或者集合中具有最低优先值的条目。在另一个实施例中,条目的选择基于关键字与所匹配条目之间的最准确匹配进行。例如,转发元件120A可选择其可配置关键字列176中具有最少通配符值的条目,从而指示它具有与关键字的对应部分一样的最多字面关键字列144A-144N。所选流表条目然后用作所识别条目512。
但是,如果关键字不匹配任何流表条目,则转发元件120A必须采取正确动作610。在一个实施例中,判定点612出现,其中要进行的动作的路径可通过全系统配置全局设置或者基于每流表设置。在一种配置中,在没有匹配流表条目时,转发元件120A将分组传送614给控制器110。这使控制器能够分析分析,并且潜在地更新一个或多个转发元件120A-120N,以使这种分组能够在将来匹配至少一个流表条目。在一个备选配置中,转发元件120A只是丢弃分组616。在具有完全了解的业务类型和用户的网络中,这种配置可防止对未经授权装置的网络接入或者防止未经授权的业务,例如垃圾邮件、蠕虫和黑客攻击。
图8示出按照本发明的一个实施例的示范灵活和可扩展流处理系统,其中包括控制器110和全异转发元件810A-810K。控制器110包括定义接收模块111,其接收处理定义112。处理定义112包括下列项的表示:包含协议报头的相关报头字段的可配置定义104;可配置逻辑106,用于在流表之间进行选择;以及包含关键字组成108的可配置流表定义。将处理定义112提供151给转化器113,其使用编译器114来产生152解析器代码116(其成为解析器配置包117的一部分)。转化器113还产生流表配置115A信息,其由流表填充模块118用来填充流表140A-140N。流表配置115A的一种形式可包含在解析器配置包117中。解析器配置包117最终由各全异转发元件810A-810K用来创建必要的流表140A-140N,并且执行分组处理。
将解析器配置包117提供148给分配模块119,其将解析器配置包117的相同副本156传送给全异转发元件810A-810K。在这种配置中,传送解析器配置包117的相同副本简化控制器110,因为它不需要涉及如何生成网络中的各种网络元件的本机代码。备选地,控制器110可编程为生成和传送一个或多个转发元件配置的硬件特定机器代码,在这种情况下,接收方转发元件(例如810A)不需要编译器(例如822)。
在全异转发元件810A-810K的每个中配置和填充流表时,利用转化器113所生成的流表配置115A-115B信息。利用来自所提供148解析器配置包117的流表配置115B(或者在一个实施例中为解析器代码116),各转发元件810A-810K能够定义、创建和/或修改各流表的可配置关键字列176,因为它知道必要的列的数量以及每列的数据类型。此外,控制器110的流表填充模块118能够通过发送流表数据802A-802K,利用所提供154流表配置115A来为各流表140A-140N填充流表条目179A-179N。
与所传送156解析器配置包117(其对每一个网络元件810A-810K是相同的)不同,流表填充模块118可操作以向各网络元件810A-810K发送定制流表数据802A-802K。因此,控制器110可在各网络元件上填充不同类型的流表条目。这提供这种软件定义网络之内处理分组中的显著灵活性和功率。例如,边缘网络元件可易于配置成与核心路由器不同地处理业务。此外,通过经过这个流表数据802A-802K的传输的动态更新,控制器110能够通过调整流表条目以及全异网络元件810A-810K的一个或多个的对应可执行动作,来快速响应网络中的业务的类型或频率的变化。
接收解析器配置包117和流表数据802A-802K的全异网络元件810A-810K可利用不同的硬件配置,并且因而按照不同方式来实现分组处理逻辑。但是,所有网络元件810A-810K将接收同一解析器配置包117。例如,网络元件810A包含具有编译器822和第一类型的处理器826的执行单元821。在接收解析器配置包117时,编译器822将解析器配置包117编译为本机机器指令中的分组解析器或者第一类型的机器代码824,供在网络元件的处理器826上执行。另外,不同转发元件810B包括具有用于不同类型的处理器846的不同类型的编译器842的执行单元841。尽管这些差别,网络元件810B接收与第一网络元件810A相同的解析器配置包117,对其进行编译以生成其自己的定制机器代码844,并且在其处理器846上运行机器代码844,以执行分组处理。
除了运行于具有不同处理器和编译器的网络元件(例如810A-810B)之外,同一解析器配置包117还可运行于具有包括专用协处理器、核心或集成电路的硬件实现的网络元件。例如,除了具有通用处理器864之外,网络元件810K还具有执行单元861,其中包括能够直接解释所接收156解析器配置包117的协处理器862。因为这个协处理器能够直接解释解析器配置包117,所以其编译器是不必要的。
图9示出按照本发明的一个实施例、灵活和可扩展流处理系统中使用的处理配置的示范表示。这个附图包括三个不同但相互关联类型的信息:包含协议报头的相关报头字段的协议的可配置定义104的报头指令表示904、用于在流表之间和所选流表的关键字组成变体之间进行选择的可配置逻辑906的栈指令表示906以及包含关键字组成的可配置流表定义108的表定义指令表示902。下面详述按照本发明的一个实施例的这些表示的格式。
报头指令表示
报头指令表示904定义将要对网络中的分组所处理的协议和各协议报头的相关报头字段。这些报头指令表示904允许转发元件120A-120N动态地配置成识别特定协议报头,并且因此从硬件角度来看是协议不可知的,这允许在开发新协议时易于修改。例如,如果开发新的对等(P2P)协议,则报头指令表示904可易于修改成定义协议的相关报头字段,并且然后分配给网络中的转发元件120A-120N,从而允许新协议的分组被正确处理。另外,报头指令表示904允许各报头中的有用(即,相关)字段的集中断言,因为仅将识别可能在将来解析判定中使用或者在关键字中使用的字段。这防止在处理分组的过程中最终是无用的报头字段的任何不必要识别或执行。
报头指令表示904的语法的一个实施例在表2中示出。作为字“header(报头)”的指令的第一部分表示指令是报头指令。“headername”是表示报头的所定义名称的值。例如,图9中,第一报头指令表示904用于以太网V2分组,并且headername是“etherv2”。随后是将暂时描述的可选“length(长度)”关键字。
表2
在报头指令表示904的花括号中是相关报头字段的一个或多个字段断言。各字段断言包含“field_type”和“field_name”。“field name”占位符表示报头中的特定字段的名称。例如,图9中,报头“etherv2”的第一报头指令表示904包括表示包含目标MAC地址的字段的“dst_addr”的“field name”。“field_type”占位符是用来描述报头的字段的若干基本数据类型之一。例如,“field_type”可以是描述无符号整数的基本整数类型,例如uint8_t、uint16_t、uint32_t、uint64_t。当然,也可使用其它类型,例如有符号整数、字符、浮点或者任何其它数据类型。图9中,第一报头指令表示904利用表示某种类型的“mac_addr_t”类型来存储MAC地址,并且将“int16_t”用于16位有符号整数。可选地,“field_type”还可包含字“field”,其中字段断言还可包括可选“field_size”。在这种情况下,“field”的“field_type”指示报头字段的值包含位的“field_size”数量。例如,报头“vlan”的第二报头指令表示904包括3位的“pcp”字段、1位的“cfi”字段以及12位的“vid”字段。具有“fiedl_size”的这个通用“field”还可用于将多个字段结合为一个字段断言,特别是在后来的分组处理中将不使用字段时。例如,考虑一种情况,其中某个报头的前四个字段被认为是不相关的,但第五报头是相关的。假定这个报头的前四个字段的每个的大小各为8位,并且这前四个字段对于后来的处理是不必要的,则一个字段断言可通过使用“field(字段)”的“field_type”和32位的“field_size”来将四个字段组合在一起。
回到第一花括号之前的指令的部分,可选“length”关键字和“length_expr”占位符允许报头的大小基于报头的一个或多个字段、使用数学表达来定义。例如,命名为“ipv4”的第四报头指令表示904将单位为字节的每个“ipv4”报头的大小定义为报头中的“hlen”字段所存储的值的四倍。这个“length”关键字和数学表达的使用对处理可变长报头特别有用。另外,如果在报头尾部存在不必要(即,不相关)字段,则报头指令表示904可以不包含它们,而是使用长度关键字和表达来定义报头的总长度。这防止分组处理模块122识别和提取将不会再次使用的报头字段。当“length”关键字没有指定时,分组的长度基于报头中的所有字段的长度之和来计算。
栈指令表示
栈指令表示906构成用于在表之间和所选流表的关键字组成变体之间进行选择的可配置逻辑106的核心。在定义协议报头如何相互关联以及在处理期间如何从一个报头流动到下一个中,栈指令表示906定义将解析哪些报头,并且因此将识别哪些字段。此外,栈指令表示906指示在基于分组的报头的排序来分类分组时将使用哪一个流表,并且还指示哪一个关键字组成将用来生成关键字。当处理分组时,分组处理模块122将识别分组的第一报头,并且开始按照栈指令表示906来遍历分组的报头。
栈指令表示906的语法的一个实施例在表3中示出。指令的第一部分—“stack”—表示指令是栈指令。指令的下一个部分是具有“key_field”的“heaer_name”。这些占位符指示栈指令将用于哪一个报头,以及在在生成关键字并且执行分类之前确定是否应当解析其它报头时将要检查来自那个报头的哪一个字段。例如,图9中,当解析以太网版本2(V2)报头时,将使用第一栈指令表示906,因为header_name是“etherv2”。此外,来自etherv2报头的“ethertype”key_field将是在判定是否继续解析附加报头时使用的字段。
表3
接下来是可选“stackable”关键字和“stack_depth”值。可选的stackable关键字指定由这个栈指令所指示的报头的多个实例可按照连续序列堆叠在一起。这个关键字对于描述利用隧穿和封装的分组是特别有用的,因为多个重复报头可在这类情况中出现。可选地,这类重复报头的检查深度可通过stack_depth值来限制。图9中,“mpls”的第三栈指令表示906包括可选stackable关键字但没有stack_depth值。因此,连续MPLS报头可重复地解析,直到检测新的非MPLS报头或者另外某种控制手段停止解析,例如当MPLS分组的所检查“key_field”指示分组的操控的变化时。
在花括号中是两种类型的陈述:表陈述和规则。在一个实施例中,这两种类型之一的至少一个陈述必须存在于栈指令中。表陈述开始于表关键字,并且之后接着“table_id”,其指示在这个栈指令中终止分组的报头的解析时将要用于分组分类(即,查找)的唯一流表。例如,图9中,“ipv4”的第二栈指令表示906包括“table 1”陈述,因此如果解析在检查这个报头的同时完成,则通过“1”所识别的流表用于分类。
随后,可包含可选“recursion(递归)”关键字和“r_count”(递归计数),以指示由栈所指示的报头可在分组的解析期间返回。在这种情况中,在返回特定类型的报头的情况下,通过“table_id”所识别的流表将用于分类,剖腹藏珠进一步报头解析将停止。r_count指示报头遍历中、解析应当停止的点。因此,1的r_count指示第一次重新访问报头,报头解析应当停止,并且分类应当开始。类似地,2的r_count指示第二次重新访问报头,报头解析应当停止,并且分类应当开始。例如,如果“table 1 recursion 1”的表陈述存在于栈指令中,则在第一次重新访问栈指令时,报头解析停止,并且分类使用通过值“1”所识别的流表开始。
栈指令中的第二类型的陈述已知为规则,并且包括具有字“next”和“header_name”的“key_value”。这个规则陈述提供用来在逻辑上确定报头解析是否和如何继续进行的栈中必要的数据。通过这个栈指令的第一部分所定义的分组的heaer_name.key_field中的值与这些规则的每个的各key_value进行比较。如果key_field等于规则中的key_value,则解析将对具有类型header_name的分组的下一个报头继续进行,以及将分析对应栈以供进一步决策。如果断言一个以上规则,则各规则将按序来检查,并且因此只有一个路径对分组是可能的。此外,如果key_field不匹配任何规则的key_value,以及如果不存在对栈所定义的表陈述,则正确动作将进行。正确动作的示例包括丢弃分组或者将分组发送给控制器110。
例如,图9中,“etherv2”的第一栈指令表示906包含两个规则,以及在处理etherv2报头中,其ehter_type字段的值将与0x8847和0x0800(按照那个顺序)进行比较。如果ether_type字段等于0x8847,则解析将对“mpls”报头继续进行。如果不是的话,则ether_type字段将与0x0800进行比较:如果它们相等,则解析将对“ipv4”报头继续进行,但是如果它们不相等,则分组可被丢弃或者转发到控制器110。
“ipv4”的第二栈指令表示906提供一种情况,其中每个“下一个”报头没有对应栈指令。例如,如果“proto”字段等于0x11,则处理将对“udp”报头继续进行。但是,不存在udp栈指令表示906,因此udp报头的字段将使用udp报头指令表示904来识别,并且处理被认为自ipv4栈指令表示906完成,因此“table 1”将用于分类目的。
另外,规则可包含通配符星号(*)来代替key_value。在这种情况下,每一个key_field将匹配星号,因此解析将对如规则的“next header_name”部分所指示的下一个报头分组继续进行。
通过使用规则和表陈述,定义可识别分组的解析路径,并且这些通路选择用于分类的流表以及将要在关键字生成期间使用的关键字组成变体。尽管结束栈中的解析并且定向到用于分类的特定流表,但是导航栈的顺序确定用于构建关键字的关键字组成变体。例如,图9中,如果解析将在“ipv4”的第二栈指令表示906中结束,则与“table 1”关联的流表将用于分类。但是,所生成的关键字将按照最终解析报头是“udp”报头、“tcp”报头还是另一种类型的报头而有所不同,因为来自那些报头的字段可在关键字中使用。因此,这种解析顺序将确定关键字组成变体,其将与表定义指令表示902配合使用,下面进行描述。
表定义指令表示
表定义指令表示902构成包含关键字组成的可配置流表定义108的核心。这些指令指定用于分组分类的流表的类型和大小。此外,解析和分类级密切有关,因为表定义指令表示902还指定用于索引流表的关键字组成和变化。
表定义指令表示902的语法的一个实施例在表4中示出。指令的第一部分包括共同指示指令的类型的字“table”和唯一“table_id”标识符以及指令所涉及的唯一流表。
表4
在花括号内部是一个或多个字段陈述,各以字“field”和“field_id”开始。各字段陈述表示流表中的一个可配置关键字列176和那个表的关键字的一部分。在一个实施例中,“field_id”是表示关键字中的字段的位置的整数。随后,在花括号的附加集合中是“matching_type”。这个值可包括当通过将关键字与列进行比较来分类分组时在流表列中允许的匹配的类型的一个或多个名称。例如,matching_type可包括要求完全匹配的“exact”、使用最长前缀匹配的“lpm”或者“range”(具有两个开始和结束变元)。例如,图9中,“table 0”的第一表定义指令表示902包括两个字段陈述,各要求一个完全匹配。在“table 1”中,四个字段要求完全匹配,而字段2和3允许24位的前缀匹配。在matching_type之后,各字段陈述包括“header_name”和“key_field”,其表示应当用来构成关键字的这个部分的解析报头。例如,图9中,“table 1”的第二表定义指令表示902规定关键字的第一部分应当来自分组的“etherv2”报头的“dst”字段,并且关键字的第三部分应当来自分组的“ipv4”报头的“src_addr”字段。header_name和key_field值也可使用括号来指定,以指示已经解析的特定报头或字段。这对报头递归是特别有用的,其中括号详述列举值应当来自哪一级递归的递归深度。类似地,当一个报头类型(或key_field)的多个实例位于彼此相邻时,这个符号允许特定报头(或字段)的选择。例如,图9中,“table 0”的第一表定义指令表示902规定第一字段将来自第一解析MPLS报头,并且第二字段将来自第二解析MPLS报头。
字段陈述的可选修改也在表4中示出。在利用具有两个报头/字段备选的问号(作为逻辑三元算符)中,定义两个关键字组成变体,从而允许不同关键字对同一个表来构成。例如,图9中,“table 1”的第二表定义指令表示902因字段4和5的字段陈述而提供两个关键字组成变体。这些字段陈述的每个基于如栈指令表示906所定义的解析路径来定义独立关键字。如果解析“udp”报头,则字段4将利用“udp.src_port”值,以及字段5将利用“udp.src_port”值;如果改为解析“tcp”报头,则字段4将利用“tcp.dst_port”值,以及字段5将利用“tcp.src_port”值。因此,这个三元字段陈述提供关键字组成变体,其基于用于在表之间和所选流表的关键字组成变体之间进行选择的可配置逻辑106来选择。
本发明的不同实施例可使用软件、固件和/或硬件的不同组合来实现。因此,附图所示的技术能够使用在一个或多个电子装置(例如端站、网络元件)上存储和运行的代码及数据来实现。这类电子装置使用诸如非暂时计算机可读存储介质(例如磁盘、光盘、随机存取存储器、只读存储器、闪速存储器装置、相变存储器、三元内容可寻址存储器(TCAM)等)和暂时计算机可读传输介质(例如电、光、声或其它形式的传播信号—例如载波、红外信号、数字信号)之类的计算机可读介质来存储和传递(内部通信和/或通过网络与其它计算装置进行通信)代码和数据。另外,这类电子装置通常包括一组一个或多个处理器(例如现场可编程门阵列(FPGA)、图形处理单元(GPU)、网络处理单元(NPU)等),其耦合到一个或多个其它组件,例如一个或多个存储装置(非暂时机器可读存储介质)、用户输入/输出装置(例如键盘、触摸屏和/或显示器)和网络连接。该组处理器和其它组件的耦合通常经过一个或多个总线和桥接器(又称作控制器)、环网或芯片上网络进行。因此,给定电子装置的存储装置通常存储代码和/或数据,供那个电子装置的该组一个或多个处理器上执行。
例如,虽然图中的流程图示出本发明的某些实施例所执行的操作的特定顺序,但是应当理解,这种顺序是示范性的(例如备选实施例可按照不同顺序来执行操作、组合某些操作、重叠某些操作等)。此外,虽然按照若干实施例描述了本发明,但是本领域的技术人员将会知道,本发明并不局限于所述实施例,而是可在所附权利要求书的精神和范围之内,经过修改和变更来实施。因此,本描述被看作是说明性而不是限制性的。
Claims (20)
1. 一种由充当软件定义网络中的控制器的网络装置所执行的方法,包括下列步骤:
接收处理定义,其中所述处理定义包括下列项的第一表示:
包含协议报头的相关报头字段的协议的可配置定义,
包含基于第一多个相关报头字段的关键字组成的可配置流表定义,其中所述流表定义的每个的所述关键字组成识别对那个流表定义所选的所述相关报头字段的一个或多个的集合,以及
可配置逻辑,用于基于第二多个相关报头字段在所述可配置流表定义所定义的流表之间进行选择;
转化所述处理定义,以创建解析器配置包,其中所述解析器配置包包括所述可配置流表定义以及用于在流表之间进行选择的所述可配置逻辑的第二表示;
将所述解析器配置包分配给多个转发元件,以使其每个基于所述可配置流表定义的每个来创建流表,其中所述流表的每个包括通过那个流表所基于的所述流表定义中包含的所述关键字组成所识别的所述相关报头字段的每个的可配置关键字列,其中所述流表的每个还包括存储转发判定的一个或多个动作列的集合;以及
传送数据以填充在所述多个转发元件的每个中创建的所述流表的所述可配置关键字列和动作列。
2. 如权利要求1所述的方法,其中:
所述解析器配置包还包括基于所述可配置流表定义的关键字生成逻辑;以及
分配所述解析器配置包的步骤还使所述多个转发元件的每个安装所述关键字生成逻辑,以从通过那个转发元件的网络接口所接收的分组中的值来生成关键字,供与那个转发元件的所述流表的条目进行比较。
3. 如权利要求1所述的方法,其中,分配所述解析器配置包的步骤还使所述多个转发元件的每个创建基于所述可配置流表定义的关键字生成逻辑,其中所述关键字生成逻辑从通过那个转发元件的网络接口所接收的分组中的值来生成关键字,供与那个转发元件的所述流表的条目进行比较。
4. 如权利要求1所述的方法,还包括下列步骤:
接收已更新处理定义,其中所述已更新处理定义包括下列项的第三表示
包含协议报头的相关报头字段的协议的可配置定义,
包含基于第一多个所述相关报头字段的关键字组成的可配置流表定义,其中所述流表定义的每个的所述关键字组成识别对那个流表定义所选的所述相关报头字段的一个或多个的集合,以及
可配置逻辑,用于基于第二多个所述相关报头字段在所述可配置流表定义所定义的流表之间进行选择;
转化所述已更新处理定义,以创建已更新解析器配置包,其中所述已更新解析器配置包包括所述可配置流表定义以及用于在流表之间进行选择的所述可配置逻辑的第四表示;
将所述已更新解析器配置包分配给所述多个转发元件,以使其每个基于所述可配置流表定义的每个来创建、更新或删除流表,其中所述流表的每个包括通过那个流表所基于的所述流表定义中包含的所述关键字组成所识别的所述相关报头字段的每个的可配置关键字列,其中所述流表的每个还包括存储转发判定的一个或多个动作列的集合;以及
传送数据以填充在所述多个转发元件的每个中创建的所述流表的所述可配置关键字列和动作列。
5. 如权利要求1所述的方法,还包括下列步骤:
接收由所述多个转发元件之一所传送的分组;以及
将数据传送给所述多个转发元件的一个或多个,从而使所述多个转发元件的一个或多个的每个修改一个或多个流表的一个或多个条目。
6. 如权利要求1所述的方法,其中,所述解析器配置包包括解析器代码,其中解析器代码是将要由所述多个转发元件用来解析分组的代码。
7. 如权利要求6所述的方法,其中,解析器代码还包含将要由所述多个转发元件用来对分组执行动作的代码。
8. 如权利要求6所述的方法,其中,将所述解析器配置包分配给多个转发元件的步骤还包括将解析器代码元数据传送给所述多个转发元件的每个。
9. 如权利要求8所述的方法,其中,所述解析器配置包元数据包括所述解析器代码的大小。
10. 如权利要求8所述的方法,其中,所述解析器配置包元数据包括所述解析器代码所利用的虚拟寄存器的数量。
11. 一种充当软件定义网络中的控制器的网络装置,包括:
定义接收模块,可操作以接收处理定义,其中所述处理定义包括下列项的第一表示:
包含协议报头的相关报头字段的协议的可配置定义,
包含基于第一多个相关报头字段的关键字组成的可配置流表定义,其中所述流表定义的每个的所述关键字组成识别对那个流表定义所选的所述相关报头字段的一个或多个的集合,以及
可配置逻辑,用于基于第二多个相关报头字段在所述可配置流表定义所定义的流表之间进行选择;
转化器,可操作以转化所述处理定义,以创建解析器配置包,其中所述解析器配置包包括所述可配置流表定义以及用于在流表之间进行选择的所述可配置逻辑的第二表示;
分配模块,可操作以将所述解析器配置包分配给多个转发元件,以使其每个基于所述可配置流表定义的每个来创建流表,其中所述流表的每个包括通过那个流表所基于的所述流表定义中包含的所述关键字组成所识别的所述相关报头字段的每个的可配置关键字列,其中所述流表的每个还包括存储转发判定的一个或多个动作列的集合;以及
流表填充模块,可操作以传送数据,以便填充在所述多个转发元件的每个中创建的所述流表的所述可配置关键字列和动作列。
12. 如权利要求11所述的网络装置,其中:
所述解析器配置包还包括基于所述可配置流表定义的关键字生成逻辑;以及
所述分配模块还可操作以分配所述解析器配置包,以使所述多个转发元件的每个安装所述关键字生成逻辑,以从通过那个转发元件的网络接口所接收的分组中的值来生成关键字,供与那个转发元件的所述流表的条目进行比较。
13. 如权利要求11所述的网络装置,其中,所述分配模块还可操作以分配所述解析器配置包,以使所述多个转发元件的每个创建基于所述可配置流表定义的关键字生成逻辑,所述关键字生成逻辑从通过那个转发元件的网络接口所接收的分组中的值来生成关键字,供与那个转发元件的所述流表的条目进行比较。
14. 如权利要求11所述的网络装置,其中:
所述定义接收模块还可操作以接收已更新处理定义,其中所述已更新处理定义包括下列项的第三表示
包含协议报头的相关报头字段的协议的可配置定义,
包含基于第一多个所述相关报头字段的关键字组成的可配置流表定义,其中所述流表定义的每个的所述关键字组成识别对那个流表定义所选的所述相关报头字段的一个或多个的集合,以及
可配置逻辑,用于基于第二多个所述相关报头字段在所述可配置流表定义所定义的流表之间进行选择;
转化器还可操作以转化所述已更新处理定义,以创建已更新解析器配置包,其中所述已更新解析器配置包包括所述可配置流表定义以及用于在表之间进行选择的所述可配置逻辑的第四表示;以及
所述分配模块还可操作以将所述已更新解析器配置包分配给所述多个转发元件,以使其每个基于所述可配置流表定义的每个来创建、更新或删除流表,其中所述流表的每个包括通过那个流表所基于的所述流表定义中包含的所述关键字组成所识别的所述相关报头字段的每个的可配置关键字列,其中所述流表的每个还包括存储转发判定的一个或多个动作列的集合。
15. 如权利要求11所述的网络装置,还包括可操作以接收所述多个转发元件所传送的分组的分组接收模块。
16. 如权利要求15所述的网络装置,其中,所述流表填充模块还可操作以响应从所述多个转发元件之一接收分组而将数据传送给所述多个转发元件的一个或多个,从而使所述多个转发元件的一个或多个的每个修改一个或多个流表的一个或多个条目。
17. 如权利要求11所述的方法,其中,所述解析器配置包包括解析器代码,其中解析器代码是将要由所述多个转发元件用来解析分组的代码。
18. 如权利要求17所述的方法,其中,解析器代码还包含将要由所述多个转发元件用来对分组执行动作的代码。
19. 如权利要求17所述的方法,其中,将所述解析器配置包分配给多个转发元件的步骤还包括将解析器代码元数据传送给所述多个转发元件的每个。
20. 如权利要求19所述的方法,其中,所述解析器配置包元数据包括所述解析器代码所利用的虚拟寄存器的数量。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/335,900 US8711860B2 (en) | 2011-12-22 | 2011-12-22 | Controller for flexible and extensible flow processing in software-defined networks |
US13/335,900 | 2011-12-22 | ||
US13/335900 | 2011-12-22 | ||
PCT/IB2012/057564 WO2013093857A1 (en) | 2011-12-22 | 2012-12-20 | Controller for flexible and extensible flow processing in software-defined networks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104012063A true CN104012063A (zh) | 2014-08-27 |
CN104012063B CN104012063B (zh) | 2017-03-22 |
Family
ID=47843353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280063937.2A Expired - Fee Related CN104012063B (zh) | 2011-12-22 | 2012-12-20 | 用于软件定义网络中的灵活和可扩展流处理的控制器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8711860B2 (zh) |
EP (1) | EP2795874B1 (zh) |
CN (1) | CN104012063B (zh) |
WO (1) | WO2013093857A1 (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015131617A1 (zh) * | 2014-09-18 | 2015-09-11 | 中兴通讯股份有限公司 | 流表处理方法、装置、开放流控制器及开放流交换机 |
WO2017016162A1 (zh) * | 2015-07-29 | 2017-02-02 | 中国科学院沈阳自动化研究所 | 一种基于sdn架构的工业通信流传输安全控制方法 |
CN106412880A (zh) * | 2015-07-29 | 2017-02-15 | 中国科学院沈阳自动化研究所 | 一种基于SDN的无线mesh安全分级传输方法 |
CN106713136A (zh) * | 2016-11-25 | 2017-05-24 | 北京邮电大学 | 一种基于堆结构扩张软件定义网络的方法 |
CN107005482A (zh) * | 2014-09-22 | 2017-08-01 | 沃尔廷控股公司 | 为软件定义网络,存储和计算执行操作的编译器和方法 |
CN107113342A (zh) * | 2014-10-02 | 2017-08-29 | 微软技术许可有限责任公司 | 使用软件定义网络的中继优化 |
CN107529352A (zh) * | 2015-03-13 | 2017-12-29 | 凯为公司 | 用于软件定义的数据中心网络的协议独立的可编程交换机(pips) |
CN108781185A (zh) * | 2016-12-13 | 2018-11-09 | 甲骨文国际公司 | 提供用于网络设备的可编程包分类框架的系统和方法 |
CN110035009A (zh) * | 2018-01-12 | 2019-07-19 | 丛林网络公司 | 分组转发路径元素的节点表示 |
CN110050448A (zh) * | 2016-08-03 | 2019-07-23 | 比格斯维琪网络公司 | 管理多播业务的系统和方法 |
CN111131050A (zh) * | 2019-12-31 | 2020-05-08 | 盛科网络(苏州)有限公司 | 流表的匹配方法及装置 |
US10840912B2 (en) | 2014-06-11 | 2020-11-17 | Marvell Asia Pte, Ltd. | Hierarchical statistically multiplexed counters and a method thereof |
US10855573B2 (en) | 2014-09-23 | 2020-12-01 | Marvell Asia Pte, Ltd. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US11258886B2 (en) | 2014-06-19 | 2022-02-22 | Marvell Asia Pte, Ltd. | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US11297012B2 (en) | 2015-03-30 | 2022-04-05 | Marvell Asia Pte, Ltd. | Packet processing system, method and device having reduced static power consumption |
US11435925B2 (en) | 2013-12-27 | 2022-09-06 | Marvell Asia Pte, Ltd. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US11677664B2 (en) | 2013-12-30 | 2023-06-13 | Marvell Asia Pte, Ltd. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US11824796B2 (en) | 2013-12-30 | 2023-11-21 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
Families Citing this family (137)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3407547B1 (en) | 2011-08-17 | 2020-01-22 | Nicira, Inc. | Hierarchical controller clusters for interconnecting different logical domains |
US9369426B2 (en) | 2011-08-17 | 2016-06-14 | Nicira, Inc. | Distributed logical L3 routing |
US9203701B2 (en) | 2011-10-25 | 2015-12-01 | Nicira, Inc. | Network virtualization apparatus and method with scheduling capabilities |
US9288104B2 (en) | 2011-10-25 | 2016-03-15 | Nicira, Inc. | Chassis controllers for converting universal flows |
US9137107B2 (en) | 2011-10-25 | 2015-09-15 | Nicira, Inc. | Physical controllers for converting universal flows |
US9178833B2 (en) | 2011-10-25 | 2015-11-03 | Nicira, Inc. | Chassis controller |
EP2748716B1 (en) | 2011-11-15 | 2018-05-16 | Nicira Inc. | Network control system for configuring middleboxes |
KR20130093800A (ko) * | 2012-01-04 | 2013-08-23 | 삼성전자주식회사 | 통신 시스템에서 패킷을 이용하여 어플리케이션을 식별하기 위한 장치 및 방법 |
CN102624560B (zh) * | 2012-03-12 | 2016-06-29 | 深圳市天威视讯股份有限公司 | 一种分布式部署、集中式控制的有线电视网络宽带接入系统 |
US9331938B2 (en) * | 2012-04-13 | 2016-05-03 | Nicira, Inc. | Extension of logical networks across layer 3 virtual private networks |
WO2013158920A1 (en) | 2012-04-18 | 2013-10-24 | Nicira, Inc. | Exchange of network state information between forwarding elements |
US9325569B2 (en) * | 2012-06-29 | 2016-04-26 | Hewlett Packard Enterprise Development Lp | Implementing a software defined network using event records that are transmitted from a network switch |
US9264301B1 (en) | 2012-09-20 | 2016-02-16 | Wiretap Ventures, LLC | High availability for software defined networks |
US9215093B2 (en) * | 2012-10-30 | 2015-12-15 | Futurewei Technologies, Inc. | Encoding packets for transport over SDN networks |
FI20126275L (fi) * | 2012-12-07 | 2014-06-08 | Tellabs Oy | Menetelmä ja laitteisto ohjelmallisesti määriteltävän verkon konfiguroimiseksi |
FI124397B (en) * | 2013-01-04 | 2014-08-15 | Tellabs Oy | A method and apparatus for defining a paging system for a network element of a software configurable network |
CN103078791B (zh) * | 2013-01-31 | 2016-08-10 | 华为技术有限公司 | Oam报文处理方法、设备及系统 |
US9172604B1 (en) | 2013-02-25 | 2015-10-27 | Google Inc. | Target mapping and implementation of abstract device model |
EP2959636A1 (en) * | 2013-02-25 | 2015-12-30 | Google, Inc. | Static translation of network forwarding plane models into target implementation in the hardware abstraction layer |
US9166912B2 (en) | 2013-02-25 | 2015-10-20 | Google Inc. | Translating network forwarding plane models into target implementation using sub models and hints |
US8976708B1 (en) | 2013-02-25 | 2015-03-10 | Google Inc. | Parameterized device models for openflow |
US9912521B2 (en) * | 2013-03-13 | 2018-03-06 | Dell Products L.P. | Systems and methods for managing connections in an orchestrated network |
US9276827B2 (en) * | 2013-03-15 | 2016-03-01 | Cisco Technology, Inc. | Allocating computing resources based upon geographic movement |
US9258212B2 (en) * | 2013-03-15 | 2016-02-09 | Cisco Technology, Inc. | Supporting arbitrary routing criteria in software defined networks |
FI20135519A (fi) * | 2013-05-15 | 2014-11-16 | Tellabs Oy | Ohjelmallisesti määriteltävän verkon verkkoelementti |
WO2014186986A1 (zh) * | 2013-05-24 | 2014-11-27 | 华为技术有限公司 | 流转发方法、设备及系统 |
US20140369363A1 (en) * | 2013-06-18 | 2014-12-18 | Xpliant, Inc. | Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree |
US9571386B2 (en) | 2013-07-08 | 2017-02-14 | Nicira, Inc. | Hybrid packet processing |
US9344349B2 (en) | 2013-07-12 | 2016-05-17 | Nicira, Inc. | Tracing network packets by a cluster of network controllers |
US9282019B2 (en) | 2013-07-12 | 2016-03-08 | Nicira, Inc. | Tracing logical network packets through physical network |
US9407580B2 (en) | 2013-07-12 | 2016-08-02 | Nicira, Inc. | Maintaining data stored with a packet |
CN104348757B (zh) * | 2013-07-31 | 2018-03-16 | 华为技术有限公司 | 一种流表交互方法、交换机及系统 |
US9674087B2 (en) | 2013-09-15 | 2017-06-06 | Nicira, Inc. | Performing a multi-stage lookup to classify packets |
US9602398B2 (en) | 2013-09-15 | 2017-03-21 | Nicira, Inc. | Dynamically generating flows with wildcard fields |
US10212083B2 (en) | 2013-10-30 | 2019-02-19 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Openflow data channel and control channel separation |
CN103560951A (zh) * | 2013-11-13 | 2014-02-05 | 华为技术有限公司 | 报文处理方法及物理转发设备 |
CN104660565B (zh) | 2013-11-22 | 2018-07-20 | 华为技术有限公司 | 恶意攻击的检测方法和装置 |
WO2015082016A1 (en) | 2013-12-06 | 2015-06-11 | Huawei Technologies Co., Ltd. | Method and controller for chaining applications in a software defined network |
US9967199B2 (en) | 2013-12-09 | 2018-05-08 | Nicira, Inc. | Inspecting operations of a machine to detect elephant flows |
US10193771B2 (en) | 2013-12-09 | 2019-01-29 | Nicira, Inc. | Detecting and handling elephant flows |
US9996467B2 (en) | 2013-12-13 | 2018-06-12 | Nicira, Inc. | Dynamically adjusting the number of flows allowed in a flow table cache |
US9569368B2 (en) | 2013-12-13 | 2017-02-14 | Nicira, Inc. | Installing and managing flows in a flow table cache |
US9363178B2 (en) * | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US9548945B2 (en) | 2013-12-27 | 2017-01-17 | Cavium, Inc. | Matrix of on-chip routers interconnecting a plurality of processing engines and a method of routing using thereof |
US9880844B2 (en) | 2013-12-30 | 2018-01-30 | Cavium, Inc. | Method and apparatus for parallel and conditional data manipulation in a software-defined network processing engine |
CN104767676B (zh) * | 2014-01-03 | 2017-12-12 | 华为技术有限公司 | Sdn网络中的数据报文转发方法和系统 |
CN103825824A (zh) * | 2014-03-04 | 2014-05-28 | 华为技术有限公司 | 一种报文处理方法及装置 |
WO2015143620A1 (zh) * | 2014-03-25 | 2015-10-01 | 华为技术有限公司 | 一种数据流统计方法、系统和装置 |
US9686200B2 (en) | 2014-03-31 | 2017-06-20 | Nicira, Inc. | Flow cache hierarchy |
US10193806B2 (en) | 2014-03-31 | 2019-01-29 | Nicira, Inc. | Performing a finishing operation to improve the quality of a resulting hash |
US9385954B2 (en) | 2014-03-31 | 2016-07-05 | Nicira, Inc. | Hashing techniques for use in a network environment |
CN104205745B (zh) * | 2014-04-04 | 2017-02-15 | 华为技术有限公司 | 报文处理的方法与设备 |
US10257091B2 (en) | 2014-04-08 | 2019-04-09 | Hewlett Packard Enterprise Development Lp | Pipeline table identification |
CN103997513B (zh) * | 2014-04-21 | 2017-08-01 | 北京邮电大学 | 一种可编程虚拟网络服务系统 |
WO2015177405A1 (en) * | 2014-05-22 | 2015-11-26 | Coriant Oy | A network element and a controller for managing the network element |
WO2015180040A1 (zh) * | 2014-05-27 | 2015-12-03 | 华为技术有限公司 | 流表管理方法及相关设备和系统 |
EP3799368A1 (en) * | 2014-05-30 | 2021-03-31 | Huawei Technologies Co., Ltd. | Packet edit processing method and related device |
US9641429B2 (en) | 2014-06-18 | 2017-05-02 | Radware, Ltd. | Predictive traffic steering over software defined networks |
US9531849B2 (en) * | 2014-06-19 | 2016-12-27 | Cavium, Inc. | Method of splitting a packet into individual layers for modification and intelligently stitching layers back together after modification and an apparatus thereof |
US9516145B2 (en) | 2014-06-19 | 2016-12-06 | Cavium, Inc. | Method of extracting data from packets and an apparatus thereof |
US9497294B2 (en) | 2014-06-19 | 2016-11-15 | Cavium, Inc. | Method of using a unique packet identifier to identify structure of a packet and an apparatus thereof |
US9742694B2 (en) | 2014-06-19 | 2017-08-22 | Cavium, Inc. | Method of dynamically renumbering ports and an apparatus thereof |
US9438703B2 (en) | 2014-06-19 | 2016-09-06 | Cavium, Inc. | Method of forming a hash input from packet contents and an apparatus thereof |
US10050833B2 (en) | 2014-06-19 | 2018-08-14 | Cavium, Inc. | Method of reducing latency in a flexible parser and an apparatus thereof |
US9531848B2 (en) | 2014-06-19 | 2016-12-27 | Cavium, Inc. | Method of using generic modification instructions to enable flexible modifications of packets and an apparatus thereof |
US9628385B2 (en) * | 2014-06-19 | 2017-04-18 | Cavium, Inc. | Method of identifying internal destinations of networks packets and an apparatus thereof |
US9473601B2 (en) | 2014-06-19 | 2016-10-18 | Cavium, Inc. | Method of representing a generic format header using continuous bytes and an apparatus thereof |
US9961167B2 (en) | 2014-06-19 | 2018-05-01 | Cavium, Inc. | Method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof |
EP3148113B1 (en) | 2014-06-24 | 2020-03-25 | Huawei Technologies Co. Ltd. | Multicast method, apparatus, and system for software defined network |
JP6490205B2 (ja) | 2014-06-30 | 2019-03-27 | 華為技術有限公司Huawei Technologies Co.,Ltd. | フローエントリ構成の方法、装置及びシステム |
US9973393B2 (en) | 2014-07-01 | 2018-05-15 | International Business Machines Corporation | Utilizing a controller for preprogramming a network before removal of a network device |
US9450866B2 (en) | 2014-07-11 | 2016-09-20 | Telefonaktiebolaget L M Ericsson (Publ) | Forwarding table performance control in SDN |
CN105684382A (zh) * | 2014-08-11 | 2016-06-15 | 华为技术有限公司 | 报文的控制方法、交换机及控制器 |
CN104202183B (zh) * | 2014-08-21 | 2017-08-25 | 清华大学深圳研究生院 | 一种解决sdn流级别配置一致性更新的方法和装置 |
US9436443B2 (en) | 2014-08-28 | 2016-09-06 | At&T Intellectual Property I, L.P. | Software defined network controller |
CN105471726B (zh) * | 2014-09-05 | 2019-08-27 | 华为技术有限公司 | 转发参数传递的方法及设备 |
CN105490960B (zh) * | 2014-09-15 | 2019-10-18 | 南京中兴软件有限责任公司 | 基于sdn架构的报文转发方法及系统 |
WO2016048143A1 (en) * | 2014-09-22 | 2016-03-31 | Wolting Holding B.V. | Compiler for and method of software defined networking, storage and compute determining physical and virtual resources |
US9565136B2 (en) | 2014-09-23 | 2017-02-07 | Cavium, Inc. | Multicast replication engine of a network ASIC and methods thereof |
US9729338B2 (en) | 2014-09-23 | 2017-08-08 | Cavium, Inc. | Fast hardware switchover in a control path in a network ASIC |
US9760418B2 (en) | 2014-09-23 | 2017-09-12 | Cavium, Inc. | Session based packet mirroring in a network ASIC |
US10644950B2 (en) | 2014-09-25 | 2020-05-05 | At&T Intellectual Property I, L.P. | Dynamic policy based software defined network mechanism |
US11178051B2 (en) | 2014-09-30 | 2021-11-16 | Vmware, Inc. | Packet key parser for flow-based forwarding elements |
US10469342B2 (en) | 2014-10-10 | 2019-11-05 | Nicira, Inc. | Logical network traffic analysis |
US9542342B2 (en) | 2014-10-22 | 2017-01-10 | Cavium, Inc. | Smart holding registers to enable multiple register accesses |
US10656992B2 (en) | 2014-10-22 | 2020-05-19 | Cavium International | Apparatus and a method of detecting errors on registers |
US9491683B2 (en) * | 2014-10-31 | 2016-11-08 | At&T Intellectual Property I, L.P. | Mobile network with software defined networking architecture |
US10285110B2 (en) | 2014-11-04 | 2019-05-07 | At&T Intellectual Property I, L.P. | Intelligent traffic routing |
US9870204B2 (en) * | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Algorithm to achieve optimal layout of instruction tables for programmable network devices |
US9606781B2 (en) * | 2014-11-14 | 2017-03-28 | Cavium, Inc. | Parser engine programming tool for programmable network devices |
US10015048B2 (en) | 2014-12-27 | 2018-07-03 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
GB2525701B (en) | 2015-01-08 | 2016-11-30 | Openwave Mobility Inc | A software defined network and a communication network comprising the same |
US10530697B2 (en) * | 2015-02-17 | 2020-01-07 | Futurewei Technologies, Inc. | Intent based network configuration |
US9680731B2 (en) | 2015-02-27 | 2017-06-13 | International Business Machines Corporation | Adaptive software defined networking controller |
US10419571B2 (en) | 2015-03-24 | 2019-09-17 | Cavium, Llc | Packet processor forwarding database cache |
US9747226B2 (en) | 2015-03-30 | 2017-08-29 | Cavium, Inc. | Packet processing system, method and device to optimize packet buffer space |
US9967134B2 (en) | 2015-04-06 | 2018-05-08 | Nicira, Inc. | Reduction of network churn based on differences in input state |
US10320568B1 (en) * | 2015-06-09 | 2019-06-11 | Google Llc | Protocol-independent multi-table packet routing using shared memory resource |
US9794757B2 (en) * | 2015-07-29 | 2017-10-17 | Fortinet, Inc. | Extension of Wi-Fi services multicast to a subnet across a Wi-Fi network using software-defined network (SDN) to centrally control data plane behavior |
US9825862B2 (en) * | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Packet header field extraction |
US10204122B2 (en) | 2015-09-30 | 2019-02-12 | Nicira, Inc. | Implementing an interface between tuple and message-driven control entities |
CN106559351B (zh) * | 2015-09-30 | 2021-06-18 | 中兴通讯股份有限公司 | 一种处理报文的方法、sdn控制器及网元 |
US10623339B2 (en) * | 2015-12-17 | 2020-04-14 | Hewlett Packard Enterprise Development Lp | Reduced orthogonal network policy set selection |
US9912774B2 (en) | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
CN105681193A (zh) * | 2016-03-02 | 2016-06-15 | 付宏伟 | 一个软件定义网络控制器系统 |
US11019167B2 (en) | 2016-04-29 | 2021-05-25 | Nicira, Inc. | Management of update queues for network controller |
EP3501146A1 (en) * | 2016-08-26 | 2019-06-26 | Huawei Technologies Co., Ltd. | A data packet forwarding unit in a data transmission network |
US10404594B2 (en) | 2016-12-13 | 2019-09-03 | Oracle International Corporation | System and method for providing partitions of classification resources in a network device |
US11546266B2 (en) * | 2016-12-15 | 2023-01-03 | Arbor Networks, Inc. | Correlating discarded network traffic with network policy events through augmented flow |
US11245572B1 (en) | 2017-01-31 | 2022-02-08 | Barefoot Networks, Inc. | Messaging between remote controller and forwarding element |
US10200306B2 (en) | 2017-03-07 | 2019-02-05 | Nicira, Inc. | Visualization of packet tracing operation results |
US10757028B1 (en) | 2017-04-23 | 2020-08-25 | Barefoot Networks, Inc. | Configurable forwarding element deparser |
US10397116B1 (en) * | 2017-05-05 | 2019-08-27 | Amazon Technologies, Inc. | Access control based on range-matching |
US10826840B1 (en) | 2017-07-23 | 2020-11-03 | Barefoot Networks, Inc. | Multiple copies of stateful tables |
US10594630B1 (en) | 2017-09-28 | 2020-03-17 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
US10608887B2 (en) | 2017-10-06 | 2020-03-31 | Nicira, Inc. | Using packet tracing tool to automatically execute packet capture operations |
US10581684B2 (en) | 2017-12-06 | 2020-03-03 | Schweitzer Engineering Laboratories, Inc. | Network management via a secondary communication channel in a software defined network |
US10536375B2 (en) | 2018-01-12 | 2020-01-14 | Juniper Networks, Inc. | Individual network device forwarding plane reset |
US10560390B2 (en) | 2018-03-05 | 2020-02-11 | Schweitzer Engineering Laboratories, Inc. | Time-based network operation profiles in a software-defined network |
US10756956B2 (en) | 2018-03-05 | 2020-08-25 | Schweitzer Engineering Laboratories, Inc. | Trigger alarm actions and alarm-triggered network flows in software-defined networks |
US10812392B2 (en) | 2018-03-05 | 2020-10-20 | Schweitzer Engineering Laboratories, Inc. | Event-based flow control in software-defined networks |
US10972383B2 (en) * | 2019-03-19 | 2021-04-06 | Arista Networks, Inc. | Method and system for processing network traffic using expanded labels |
US11283699B2 (en) | 2020-01-17 | 2022-03-22 | Vmware, Inc. | Practical overlay network latency measurement in datacenter |
US11425033B2 (en) | 2020-03-25 | 2022-08-23 | Schweitzer Engineering Laboratories, Inc. | SDN flow path modification based on packet inspection |
US11201759B1 (en) | 2020-07-08 | 2021-12-14 | Schweitzer Engineering Laboratories, Inc. | Reconfigurable dual-ring network redundancy |
US11558426B2 (en) | 2020-07-29 | 2023-01-17 | Vmware, Inc. | Connection tracking for container cluster |
US11196628B1 (en) | 2020-07-29 | 2021-12-07 | Vmware, Inc. | Monitoring container clusters |
US11570090B2 (en) | 2020-07-29 | 2023-01-31 | Vmware, Inc. | Flow tracing operation in container cluster |
US11736436B2 (en) | 2020-12-31 | 2023-08-22 | Vmware, Inc. | Identifying routes with indirect addressing in a datacenter |
US11336533B1 (en) | 2021-01-08 | 2022-05-17 | Vmware, Inc. | Network visualization of correlations between logical elements and associated physical elements |
US11687210B2 (en) | 2021-07-05 | 2023-06-27 | Vmware, Inc. | Criteria-based expansion of group nodes in a network topology visualization |
US11711278B2 (en) | 2021-07-24 | 2023-07-25 | Vmware, Inc. | Visualization of flow trace operation across multiple sites |
US11677663B2 (en) | 2021-08-12 | 2023-06-13 | Schweitzer Engineering Laboratories, Inc. | Software-defined network statistics extension |
US11855862B2 (en) | 2021-09-17 | 2023-12-26 | Vmware, Inc. | Tagging packets for monitoring and analysis |
US11968126B2 (en) * | 2021-11-02 | 2024-04-23 | Mellanox Technologies, Ltd. | Hardware-agnostic specification of packet-processing pipelines |
CN114710434B (zh) * | 2022-03-11 | 2023-08-25 | 深圳市风云实业有限公司 | 一种基于OpenFlow交换机的多级流表构建方法 |
US11882002B2 (en) | 2022-06-22 | 2024-01-23 | Schweitzer Engineering Laboratories, Inc. | Offline test mode SDN validation |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030177254A1 (en) * | 1995-12-20 | 2003-09-18 | Nb Networks | Systems and methods for general purpose data modification |
US20040167857A1 (en) * | 1995-12-20 | 2004-08-26 | Nb Networks | Systems and methods for prevention of peer-to-peer file sharing |
US20040190526A1 (en) * | 2003-03-31 | 2004-09-30 | Alok Kumar | Method and apparatus for packet classification using a forest of hash tables data structure |
US20050063396A1 (en) * | 2002-02-06 | 2005-03-24 | Shaohua Yu | Resilient multiple service ring |
CN1890572A (zh) * | 2003-12-05 | 2007-01-03 | 朗米·谢尔雅·冈达 | 支持用于以太网的sdh/sonet aps桥接选择器功能 |
CN1934534A (zh) * | 2004-03-23 | 2007-03-21 | 诺基亚公司 | 具有软件定义的可交换协议体系结构的通用电信节点 |
US20080279185A1 (en) * | 2007-05-07 | 2008-11-13 | Cisco Technology, Inc. | Enhanced packet classification |
US7492763B1 (en) * | 2004-07-16 | 2009-02-17 | Applied Micro Circuits Corporation | User-specified key creation from attributes independent of encapsulation type |
US20090259577A1 (en) * | 2008-04-10 | 2009-10-15 | Cisco Technology, Inc. | Providing Billing Instructions Associated With a New Protocol in a Network Environment |
CN102217228A (zh) * | 2007-09-26 | 2011-10-12 | Nicira网络公司 | 管理和保护网络的网络操作系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5793954A (en) * | 1995-12-20 | 1998-08-11 | Nb Networks | System and method for general purpose network analysis |
ES2288461T3 (es) | 2000-06-15 | 2008-01-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Metodo y disposicion para manejar paquetes de informacion via nodos de relevo seleccionables por el usuario. |
US7526480B2 (en) | 2001-06-08 | 2009-04-28 | Cisco Technology, Inc. | Method and apparatus for controlled access of requests from virtual private network devices to managed information objects using simple network management protocol and multi-topology routing |
JP3875107B2 (ja) | 2002-01-10 | 2007-01-31 | 株式会社エヌ・ティ・ティ・ドコモ | パケット交換システム、パケット交換方法、ルーティング装置、パケットデータ及びその生成方法 |
JP3936883B2 (ja) | 2002-04-08 | 2007-06-27 | 株式会社日立製作所 | フロー検出装置およびフロー検出機能を備えたパケット転送装置 |
US7746793B2 (en) | 2004-06-18 | 2010-06-29 | Cisco Technology, Inc. | Consistency between MPLS forwarding and control planes |
US7583593B2 (en) | 2004-12-01 | 2009-09-01 | Cisco Technology, Inc. | System and methods for detecting network failure |
KR100700717B1 (ko) * | 2004-12-22 | 2007-03-27 | 한국전자통신연구원 | 컨텐트 구분에 의한 전송시스템의 클러스터링 장치 및 방법 |
US7447167B2 (en) | 2005-03-28 | 2008-11-04 | Cisco Technology, Inc. | Method and apparatus for the creation and maintenance of a self-adjusting repository of service level diagnostics test points for network based VPNs |
US7408941B2 (en) | 2005-06-14 | 2008-08-05 | Cisco Technology, Inc. | Method for auto-routing of multi-hop pseudowires |
US7599303B2 (en) | 2005-07-26 | 2009-10-06 | Cisco Technology, Inc. | System and methods for sending trace messages |
KR100684326B1 (ko) * | 2005-11-22 | 2007-02-16 | 한국전자통신연구원 | 휴대 인터넷 시스템에서 ip 패킷의 서비스 품질을분류하기 위한 장치 및 방법 |
US7912934B1 (en) | 2006-01-09 | 2011-03-22 | Cisco Technology, Inc. | Methods and apparatus for scheduling network probes |
US7839847B2 (en) | 2006-05-08 | 2010-11-23 | Cisco Technology, Inc. | Methods and apparatus providing VPN traffic matrix construction |
US7782790B1 (en) | 2006-06-16 | 2010-08-24 | Cisco Technology, Inc. | Extensions to the path verification protocol to support link bundling constructs |
US7808919B2 (en) | 2008-03-18 | 2010-10-05 | Cisco Technology, Inc. | Network monitoring using a proxy |
US8369325B2 (en) | 2009-06-30 | 2013-02-05 | Oracle America, Inc. | Method and apparatus for packet classification and spreading in a virtualized system |
US20120275466A1 (en) * | 2010-10-21 | 2012-11-01 | Texas Instruments Incorporated | System and method for classifying packets |
US9001827B2 (en) | 2010-12-17 | 2015-04-07 | Big Switch Networks, Inc. | Methods for configuring network switches |
-
2011
- 2011-12-22 US US13/335,900 patent/US8711860B2/en active Active
-
2012
- 2012-12-20 WO PCT/IB2012/057564 patent/WO2013093857A1/en active Application Filing
- 2012-12-20 CN CN201280063937.2A patent/CN104012063B/zh not_active Expired - Fee Related
- 2012-12-20 EP EP12830871.5A patent/EP2795874B1/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030177254A1 (en) * | 1995-12-20 | 2003-09-18 | Nb Networks | Systems and methods for general purpose data modification |
US20040167857A1 (en) * | 1995-12-20 | 2004-08-26 | Nb Networks | Systems and methods for prevention of peer-to-peer file sharing |
US20050063396A1 (en) * | 2002-02-06 | 2005-03-24 | Shaohua Yu | Resilient multiple service ring |
US20040190526A1 (en) * | 2003-03-31 | 2004-09-30 | Alok Kumar | Method and apparatus for packet classification using a forest of hash tables data structure |
CN1890572A (zh) * | 2003-12-05 | 2007-01-03 | 朗米·谢尔雅·冈达 | 支持用于以太网的sdh/sonet aps桥接选择器功能 |
CN1934534A (zh) * | 2004-03-23 | 2007-03-21 | 诺基亚公司 | 具有软件定义的可交换协议体系结构的通用电信节点 |
US7492763B1 (en) * | 2004-07-16 | 2009-02-17 | Applied Micro Circuits Corporation | User-specified key creation from attributes independent of encapsulation type |
US20080279185A1 (en) * | 2007-05-07 | 2008-11-13 | Cisco Technology, Inc. | Enhanced packet classification |
CN102217228A (zh) * | 2007-09-26 | 2011-10-12 | Nicira网络公司 | 管理和保护网络的网络操作系统 |
US20090259577A1 (en) * | 2008-04-10 | 2009-10-15 | Cisco Technology, Inc. | Providing Billing Instructions Associated With a New Protocol in a Network Environment |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11435925B2 (en) | 2013-12-27 | 2022-09-06 | Marvell Asia Pte, Ltd. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US11677664B2 (en) | 2013-12-30 | 2023-06-13 | Marvell Asia Pte, Ltd. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US11824796B2 (en) | 2013-12-30 | 2023-11-21 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
US11843378B2 (en) | 2014-06-11 | 2023-12-12 | Marvel Asia PTE., LTD. | Hierarchical statistically multiplexed counters and a method thereof |
US10840912B2 (en) | 2014-06-11 | 2020-11-17 | Marvell Asia Pte, Ltd. | Hierarchical statistically multiplexed counters and a method thereof |
US11258886B2 (en) | 2014-06-19 | 2022-02-22 | Marvell Asia Pte, Ltd. | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US11799989B2 (en) | 2014-06-19 | 2023-10-24 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
WO2015131617A1 (zh) * | 2014-09-18 | 2015-09-11 | 中兴通讯股份有限公司 | 流表处理方法、装置、开放流控制器及开放流交换机 |
CN107005482A (zh) * | 2014-09-22 | 2017-08-01 | 沃尔廷控股公司 | 为软件定义网络,存储和计算执行操作的编译器和方法 |
US11765069B2 (en) | 2014-09-23 | 2023-09-19 | Marvell Asia Pte, Ltd. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
US10855573B2 (en) | 2014-09-23 | 2020-12-01 | Marvell Asia Pte, Ltd. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
CN107113342A (zh) * | 2014-10-02 | 2017-08-29 | 微软技术许可有限责任公司 | 使用软件定义网络的中继优化 |
CN107113342B (zh) * | 2014-10-02 | 2020-06-16 | 微软技术许可有限责任公司 | 使用软件定义网络的中继优化 |
CN107529352B (zh) * | 2015-03-13 | 2020-11-20 | 马维尔亚洲私人有限公司 | 用于软件定义的数据中心网络的协议独立的可编程交换机(pips) |
CN107529352A (zh) * | 2015-03-13 | 2017-12-29 | 凯为公司 | 用于软件定义的数据中心网络的协议独立的可编程交换机(pips) |
US11652760B2 (en) | 2015-03-30 | 2023-05-16 | Marvell Asia Pte., Ltd. | Packet processing system, method and device having reduced static power consumption |
US11297012B2 (en) | 2015-03-30 | 2022-04-05 | Marvell Asia Pte, Ltd. | Packet processing system, method and device having reduced static power consumption |
CN106412880B (zh) * | 2015-07-29 | 2019-09-24 | 中国科学院沈阳自动化研究所 | 一种基于SDN的无线mesh安全分级传输方法 |
CN106412880A (zh) * | 2015-07-29 | 2017-02-15 | 中国科学院沈阳自动化研究所 | 一种基于SDN的无线mesh安全分级传输方法 |
US10447655B2 (en) | 2015-07-29 | 2019-10-15 | Shenyang Institute Of Automation, Chinese Academy Of Sciences | Method for controlling transmission security of industrial communications flow based on SDN architecture |
WO2017016162A1 (zh) * | 2015-07-29 | 2017-02-02 | 中国科学院沈阳自动化研究所 | 一种基于sdn架构的工业通信流传输安全控制方法 |
CN110050448A (zh) * | 2016-08-03 | 2019-07-23 | 比格斯维琪网络公司 | 管理多播业务的系统和方法 |
CN110050448B (zh) * | 2016-08-03 | 2021-10-15 | 比格斯维琪网络公司 | 管理多播业务的系统和方法 |
CN106713136B (zh) * | 2016-11-25 | 2020-08-21 | 北京邮电大学 | 一种基于堆结构扩张软件定义网络的方法 |
CN106713136A (zh) * | 2016-11-25 | 2017-05-24 | 北京邮电大学 | 一种基于堆结构扩张软件定义网络的方法 |
CN108781185B (zh) * | 2016-12-13 | 2021-08-03 | 甲骨文国际公司 | 提供用于网络设备的可编程包分类框架的系统和方法 |
CN108781185A (zh) * | 2016-12-13 | 2018-11-09 | 甲骨文国际公司 | 提供用于网络设备的可编程包分类框架的系统和方法 |
US10979339B2 (en) | 2018-01-12 | 2021-04-13 | Juniper Networks, Inc. | Node representations of packet forwarding path elements |
CN110035009A (zh) * | 2018-01-12 | 2019-07-19 | 丛林网络公司 | 分组转发路径元素的节点表示 |
CN111131050A (zh) * | 2019-12-31 | 2020-05-08 | 盛科网络(苏州)有限公司 | 流表的匹配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104012063B (zh) | 2017-03-22 |
EP2795874A1 (en) | 2014-10-29 |
US20130163475A1 (en) | 2013-06-27 |
EP2795874B1 (en) | 2015-09-09 |
US8711860B2 (en) | 2014-04-29 |
WO2013093857A1 (en) | 2013-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104012063A (zh) | 用于软件定义网络中的灵活和可扩展流处理的控制器 | |
CN103999430B (zh) | 用于软件定义的网络中灵活及可扩展流处理的转发元件 | |
CN103999431B (zh) | 软件定义的网络中灵活的并且可扩展的流处理系统 | |
CN104350467B (zh) | 用于使用sdn的云安全性的弹性实行层 | |
CN105830406B (zh) | 用于支持软件定义网络中的灵活查找关键字的方法、设备和系统 | |
CN103765839B (zh) | 用于网络设备内的分组处理的基于变量的转发路径结构 | |
CN104704779A (zh) | 用于加速软件定义网络中的转发的方法和设备 | |
CN103444143B (zh) | 网络系统及策略路由设置方法 | |
CN107005480A (zh) | 用于sdt与nfv和sdn相互配合的系统和方法 | |
CN106464522A (zh) | 用于网络功能布局的方法和系统 | |
CN106095035A (zh) | 服务器系统及其计算机实现的方法及计算机可读存储介质 | |
CN104717098A (zh) | 一种数据处理方法及装置 | |
CN108600107B (zh) | 一种可自定义内容字段的流匹配方法 | |
CN108965134B (zh) | 报文转发方法及装置 | |
Dräxler et al. | Specification, composition, and placement of network services with flexible structures | |
CN109412963A (zh) | 一种基于流拆分的服务功能链部署方法 | |
CN108092914A (zh) | 网络流量负载均衡调度方法和装置 | |
WO2015075862A1 (ja) | ネットワーク制御装置、ネットワーク制御方法およびプログラム | |
CN104995879A (zh) | 通信系统、通信方法、控制装置、控制装置控制方法和程序 | |
CN102845042A (zh) | 一种应用层多个活动物理接口的带宽聚集系统及方法 | |
CN113395334B (zh) | 服务功能链在线更新方法、系统及设备 | |
CN103916321A (zh) | 定义软件定义网络的网络元件的查找表实现的方法和设备 | |
CN103916322A (zh) | 定义软件定义网络的网络元件的查找系统的方法和设备 | |
Chen et al. | The declarative and reusable path composition for semantic Web-driven SDN | |
Li et al. | ForSA-A new software defined network architecture based on forCES |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170322 |
|
CF01 | Termination of patent right due to non-payment of annual fee |