CN104704779B - 用于加速软件定义网络中的转发的方法和设备 - Google Patents
用于加速软件定义网络中的转发的方法和设备 Download PDFInfo
- Publication number
- CN104704779B CN104704779B CN201380052549.9A CN201380052549A CN104704779B CN 104704779 B CN104704779 B CN 104704779B CN 201380052549 A CN201380052549 A CN 201380052549A CN 104704779 B CN104704779 B CN 104704779B
- Authority
- CN
- China
- Prior art keywords
- entry
- grouping
- pmt
- network element
- stream
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- 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/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述一种充当软件定义网络内的转发平面以便减少缓慢路径分组处理的负面影响的网络元件。一旦接收第一分组,网络元件便确定它是否与流表的集合内的任何流条目匹配。当第一分组不与流表的集合的任何流条目匹配时,网络元件执行未命中过程,未命中过程包括将第一分组的至少一部分插入到由控制器存取的网络元件的分组未命中表中。控制器可以利用拉机制来存取分组未命中表。未命中过程还可包括存取网络元件的可配置默认规则表,它包括使得能够对那些不与流表的集合的任何条目匹配的分组进行有限转发的规则。
Description
技术领域
本发明的实施例涉及联网领域;并且更具体来说,涉及加速软件定义网络中的转发。
背景技术
最近几年,传统的基于电路的通信网络在支持基于分组的网络方面已经有所衰退,基于分组的网络可以更加灵活、有效且安全。因此,基于分组的联网的增加的普及度已经导致对基于分组的网络装置的需求增长。制造商已经在很大程度上满足了这个需求,他们创造了越来越大型的单片路由器来应对网络业务的增加的量和复杂度。但是,这个模型正接近它的技术和经济极限。越来越难以用传统的路由器设计来满足增加的性能要求,并且随着低成本数据中心硬件的出现,路由器供应商难以对于相同性能为更高的硬件成本提出理由。同时,对接入和聚合网络中的路由和交换控制平面的需求正变得越来越复杂。运营商希望能够定制路由以便应对边缘附近的特定类型的业务流,配置跨越聚合网络的定制服务,并实现多层集成,而不需要现今网络中所需的详细低级配置。
这些趋势导致对于路由体系结构的不同方法,其中数据平面和控制平面已经解耦合。通过这个隔离,可以利用具有变化的体系结构的各种硬件组件来在逻辑上集中并实现控制平面。此外,数据平面可以由通过逻辑集中的控制器配置的简化交换机/路由器元件组成。这个新的分离式体系结构模型集中在分离来自转发和数据处理元件的控制,并且处于软件定义联网(SDN)的核心。软件定义网络中的流处理的一个著名的标准是OpenFlow,它定义了用于在控制平面和转发平面之间传送消息的协议,并描述了用于分组处理的模型。
软件定义网络的这个分离式体系结构使得能够在可在逻辑或物理上集合在一起的功能性之间进行隔离。例如,可以在公共控制实体和网络应用(例如,通用多协议标签交换(GMPLS)、边界网关协议(BGP)、互联网协议安全(IPSec)等)之间存在分离或隔离。类似地,可以在控制和转发/处理之间存在分离或隔离(即,中央控制与执行分组处理的网络装置的隔离)。还可存在数据转发功能性、数据处理功能性和数据生成功能性(例如,深度分组检查(DPI);加密;操作、维护和管理(OAM)等)的分离或隔离。
相较于传统单片体系结构网络,软件定义网络呈现很多优点。例如,实现重要的网络路由和交换功能性的控制平面应用与转发平面完全隔离。因此,维持集中的控制平面使得能够实现可根据特定用户需要量身定制的高度定制和优化联网服务。集中的控制平面提供可迎合各种用户需要的高可缩放性、可靠且灵活的联网基础设施。转发平面(或数据平面)装置可以是廉价且可互换的商用联网装置,由此减少用户的整体配置和维护负担。另外,整个网络的单个管理和配置实体增强了用户的易于使用的体验。
但是,当前的SDN配置也遭受缺点。尽管诸如OpenFlow的系统确实提出了有效的方法来指定分组处理的模型,但是问题在于,在转发平面处接收的不同或新颖的业务直到控制平面为转发转置提供该业务的指令时才可处理。相应地,当新业务流的分组首先进入SDN时,这些初始分组不能被转发,直到控制平面为SDN内的转发装置提供了该流的转发指令为止。此外,为了使得控制平面能够决定对新流的这些初始分组做何处理,通常由转发装置将这些分组传送给控制平面。在转发平面中采用可接收许多这样的“未知”分组的许多转发装置的SDN中,到控制平面的这样的分组传输可能会用业务淹没网络和控制平面。
发明内容
根据本发明的一个实施例,通过充当软件定义网络内的转发平面的网络元件执行一种方法以便减少缓慢路径分组处理的负面影响。该方法包括通过网络元件接收第一分组。该方法还包括确定第一分组是否与网络元件的一个或多个流表的集合内的任何流条目匹配。流表的这个集合包括一个或多个流条目的集合,每个流条目包括将对照入局分组的匹配部分进行匹配的匹配准则。每个流条目还包括将对具有与该流条目的匹配准则匹配的所述匹配部分的分组执行的一个或多个动作的集合。该方法还包括响应于确定第一分组不与流表的集合内的任何流条目匹配而执行未命中过程。未命中过程包括在分组未命中表(PMT)中插入第一分组的至少一部分作为第一条目。PMT存储由网络元件接收的不与流表的集合的任何流条目匹配的分组的部分。未命中过程还包括一旦控制器寻求对PMT的第一条目的存取便向控制器提供该存取。在一个实施例中,当网络元件从控制器接收指示对PMT的一个或多个未处理条目的请求的拉(pull)条目请求消息时,网络元件确定控制器寻求该存取。在一个实施例中,网络元件通过将包含PMT的所请求的一个或多个条目的拉条目响应消息传送给控制器来向控制器提供存取。另外,在本发明的一些实施例中,未命中过程还包括通过确定第一分组的匹配部分是否与来自条目的集合的任何条目的可配置默认规则表(CDRT)匹配准则匹配来将第一分组与CDRT的一个或多个条目的集合进行比较。CDRT的每个条目包括将用于确定分组是否与该条目匹配的CDRT匹配准则。CDRT的每个条目还包括用于指示如何为与该条目匹配的分组在PMT构造条目的格式说明符。
根据本发明的另一个实施例,通过充当软件定义网络内的控制器的第一网络元件执行一种方法以便减少缓慢路径分组处理的负面影响。该方法包括存取充当软件定义网络中的转发平面的第二网络元件的分组未命中表(PMT)的未处理条目。PMT的每个条目存储由第二网络元件接收的不与第二网络元件的一个或多个流表的集合内的任何条目匹配的分组的部分。流表的集合包括一个或多个流条目的集合,每个流条目包括将对照入局分组的匹配部分进行匹配的匹配准则。每个流条目还包括将对具有与该流条目的匹配准则匹配的匹配部分的分组执行的一个或多个动作的集合。该方法还包括:响应于对PMT的未处理条目的存取,使得第二网络元件将一个或多个流条目的集合插入到流表的集合的一个或多个流表中。在一个实施例中,第一网络元件通过向第二网络元件传送指示对PMT的未处理条目的拉请求的拉条目请求消息并从第二网络元件接收包含PMT的一个或多个未处理条目的集合的拉条目响应消息来存取PMT的未处理条目。
在本发明的一个实施例中,一种网络元件充当软件定义网络(SDN)内的转发平面,并减少缓慢路径分组处理的负面影响。该网络元件包括一个或多个物理网络接口的集合。物理网络接口的集合配置成接收将转发的分组。物理网络接口的集合还配置成:一旦SDN中的控制器寻求对分组未命中表(PMT)的未处理条目的存取,便向控制器提供所述存取。PMT将存储由物理网络接口的集合接收的不与一个或多个流表的集合的任何流条目匹配的分组的部分。该网络元件还包括配置成用于配置一个或多个流表的集合的分组处理模块。流表的集合包括一个或多个流条目的集合,每个流条目包括用于与入局分组的匹配部分进行比较的匹配准则。流条目的集合中的每个流条目还包括将对具有与流条目的匹配准则匹配的匹配部分的分组执行的一个或多个动作的集合。分组处理模块还配置成确定所接收的分组的匹配部分是否与流表的集合的流条目的集合的任何流条目的匹配准则匹配。分组处理模块还配置成在所接收的分组不与流表的集合的任何条目匹配时执行未命中过程。该未命中过程是:插入所接收的分组的至少一部分作为PMT的条目;或基于所接收的分组更新PMT的现有条目。
在本发明的另一个实施例中,一种网络元件充当软件定义网络内的控制器,并减少缓慢路径分组处理的负面影响。该网络元件包括一个或多个物理网络接口的集合和耦合到物理网络接口的集合的控制模块。控制模块配置成存取充当软件定义网络内的转发平面的第二网络元件的分组未命中表(PMT)的未处理条目。PMT的每个条目存储由第二网络元件接收的不与第二网络元件的一个或多个流表的集合内的任何条目匹配的分组的部分。流表的集合包括一个或多个流条目的集合,每个流条目将包括用于与入局分组的匹配部分进行比较的匹配准则。每个流条目还将包括将对具有与该流条目的匹配准则匹配的匹配部分的分组执行的一个或多个动作的集合。控制模块还配置成:响应于对PMT的未处理条目的存取,向第二网络元件传送一个或多个流条目修改消息。所述一个或多个流条目修改消息指示将一个或多个流条目的集合插入到流表的集合的一个或多个流表中的命令。
在本发明的实施例中,不与流表中的任何条目匹配的“未命中”分组可以立即进行处理(根据可配置默认规则表),而不必须等到来自控制器的指令到达才能进行。此外,不是将这些未命中分组传送到控制器(并且可能淹没控制器),而是可以将未命中分组(或其完整或部分副本)存储在转发平面中,直到控制平面准备好对它们进行处理。
根据本发明的另一个实施例,通过充当软件定义网络内的控制器的第一网络元件执行一种方法以便减少缓慢路径分组处理的负面影响。该方法包括存取充当软件定义网络中的转发平面的第二网络元件的分组未命中表(PMT)的未处理条目。PMT的每个条目存储由第二网络元件接收的不与第二网络元件的一个或多个流表的集合内的任何条目匹配的分组的部分。流表的集合包括一个或多个流条目的集合,每个流条目包括用于与入局分组的匹配部分进行比较的匹配准则。每个流条目还包括将对具有与该流条目的匹配准则匹配的匹配部分的分组执行的一个或多个动作的集合。该方法还包括:响应于对PMT的未处理条目的存取,使得第二网络元件将一个或多个流条目的集合插入到流表的集合的一个或多个流表中。在该实施例中,第一网络元件通过利用由第一和第二网络元件的操作系统或所包含的软件子系统提供的现有高速缓存一致性机制来存取PMT的未处理条目,其中现有高速缓存一致性机制允许第一和第二网络元件各自表现得几乎就像是PMT的数据位于该网络元件的本地存储器中。对于该实施例,弱高速缓存一致性是充分的并且期望的。在弱一致性的情况下,可能出现某种高速缓存不一致性,但是归功于本发明的机制,在最坏的情况下,这将导致略微次优的性能,这是因为不一致的条目将导致对PMT条目进行某种程度的再处理。这通过弱高速缓存一致性机制的相对简单性而超过补偿。
附图说明
通过参考以下描述和用于说明本发明的实施例的附图,可以最好地理解本发明。图中:
图1示出根据本发明一个实施例具有加速转发的软件定义网络的一部分;
图2示出根据本发明一个实施例由软件定义网络中的转发元件执行以便加速转发的流程;
图3示出根据本发明一个实施例由软件定义网络中的转发元件执行以便加速转发的未命中过程;
图4示出根据本发明一个实施例由软件定义网络中的控制器执行以便加速转发的流程;以及
图5示出根据本发明一个实施例由软件定义网络中的控制器执行以便加速转发的可配置默认规则表配置过程。
具体实施方式
在以下描述中,阐述了众多具体细节。但是,将理解,没有这些具体细节也可以实践本发明的实施例。在其它情况下,没有详细示出公知的电路、结构和技术,以免使本描述变得模糊。
本说明书中对“一个实施例”、“实施例”、“示例实施例”等的提及指示,所描述的实施例可以包括特定特征、结构或特性,但不是每个实施例都一定包括该特定特征、结构或特性。而且,这些短语不一定指相同的实施例。此外,当结合一个实施例描述特定特征、结构或特性时,认为本领域技术人员知道结合其它实施例实现该特征、结构或特性,而不管是否有明确描述。
在以下描述和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应理解,这些术语不是意图作为彼此的同义词。“耦合”用于指示可以或者可以不彼此直接物理或电接触的两个或两个以上元件彼此协作或交互。“连接”用于指示在彼此耦合的两个或两个以上元件之间建立通信。
电子装置(例如,终端站、网络元件)利用诸如非暂时性有形计算机可读介质(例如,诸如磁盘、光盘、只读存储器、闪速存储器装置的计算机可读存储介质)和暂时性计算机可读传输介质(例如,电、光、声或其它形式的传播信号,如载波、红外信号)的计算机可读介质存储和传送(在内部和/或通过网络与其它电子装置)代码(由软件指令组成)和数据。另外,这些电子装置通常包括耦合到诸如一个或多个非暂时性机器可读介质(用于存储代码和/或数据)、用户输入/输出装置(例如,键盘、触摸屏和/或显示器)和网络连接(用于利用传播信号传送代码和/或数据)的一个或多个其它组件的一个或多个处理器的集合。处理器的集合与其它组件的耦合通常通过一个或多个总线和桥接器(又称为总线控制器)。因此,给定电子装置的非暂时性计算机可读介质通常存储指令以便在该电子装置的一个或多个处理器上执行。本发明的实施例的一个或多个部分可以利用软件、固件和/或硬件的不同组合来实现。
如本文中所使用,网络元件(例如,路由器、交换机、桥接器)是包括硬件和软件的一件联网设备,它在通信上互连网络上的其它设备(例如,其它网络元件、终端站)。一些网络元件是对多个联网功能(例如,路由、桥接、交换、第2层聚合、会话边界控制、服务质量和/或订户管理)提供支持和/或对多个应用服务(例如,数据、语音和视频)提供支持的“多服务网络元件”。订户终端站(例如,服务器、工作站、膝上型计算机、上网本、掌上型计算机、移动电话、智能电话、多媒体电话、互联网语音协议(VOIP)电话、用户设备、终端机、便携式媒体播放器、GPS单元、游戏系统、机顶盒)访问通过互联网提供的内容/服务、和/或在覆盖在(例如,穿隧通过)互联网上的虚拟专用网络(VPN)上提供的内容/服务。所述内容和/或服务通常由属于服务或内容供应商的一个或多个终端站(例如,服务器终端站)或参与对等服务的终端站提供,并且可以包括例如公共网页(例如,免费内容、店面、搜索服务)、私人网页(例如,提供email服务的用户名/密码访问的网页)和/或VPN上的公司网络。通常,订户终端站耦合(例如,通过(有线或无线)耦合到接入网络的客户驻地设备)到边缘网络元件,所述边缘网络元件耦合(例如,通过一个或多个核心网络元件)到其它边缘网络元件,所述其它边缘网络元件耦合到其它终端站(例如,服务器终端站)。
传统上,网络元件通常分隔成控制平面和数据平面(有时称为转发平面或介质平面)。在网络元件是路由器(或实现路由功能性)的情况下,控制平面通常确定将如何路由数据(例如,分组)(例如,数据的下一跳和该数据的外出端口),而数据平面负责转发该数据。例如,控制平面通常包括与其它网络元件通信以便交换路由并基于一个或多个路由度量选择那些路由的一个或多个路由协议(例如,边界网关协议(BGP)、内部网关协议(IGP)(例如,开放式最短路径优先(OSPF)、路由信息协议(RIP)、中间系统到中间系统(IS-IS))、标签分发协议(LDP)、资源保存协议(RSVP))。备选地,网络元件可以只实现数据平面(转发平面)或只实现控制平面的全部或一部分。这个职责分隔在分离式体系结构网络模型中很常见。术语“分离式体系结构网络”在很大程度上与术语“软件定义网络”(SDN)同义,并且这些术语在本文中可互换使用。
通常,网络元件包括一个或多个线卡的集合、一个或多个控制卡的集合以及可选的一个或多个服务卡(有时称为资源卡)的集合。这些卡通过一个或多个机构耦合在一起(例如,耦合线卡的第一全网格,以及耦合所有卡的第二全网格)。线卡的集合构成数据平面,而控制卡的集合提供控制平面并通过线卡与外部网络元件交换分组。服务卡的集合可以提供专门处理(例如,第4层到第7层服务(例如,防火墙、IPsec、IDS、P2P)、VoIP会话边界控制器、移动无线网关(GGSN、演进型分组系统(EPS)网关))。举例来说,服务卡可用于终接IPsec隧道并执行伴随的验证和加密算法。
软件定义网络
不同于需要在整个网络的多功能网络元件的控制平面中分配复杂的网络管理功能并且还需要集成到相同多功能网络元件中的复杂的数据和控制平面的单片网络体系结构,基于流的软件定义网络允许将网络的数据平面与控制平面隔离。数据平面可以作为分布在整个网络中的简单的离散流交换机(转发元件)来实现,而提供网络的智能性的控制平面则在监督流交换的集中流控制器中实现。通过将控制功能与数据转发功能解耦合,软件定义网络减轻了修改网络控制逻辑的任务,并且提供开发人员可在其上构建各种各样新的路由和协议管理应用的编程接口。这允许数据和控制平面独立地演进和缩放,同时减少数据平面网络组件所必需的管理。
控制平面或控制器通常通过在转发元件与控制器之间的安全且可靠的传输连接上的控制平面信令协议来控制转发平面。控制器通常包括提供基本处理、I/O和联网能力的操作系统。中间件层将软件定义网络控制器的上下文提供给操作系统,并利用控制平面信令协议与各种转发平面元件通信。中间件层上的应用层提供各种网络操作所需的智能性,例如协议、网络情况感知和用户接口。在更抽象级,应用层以网络的逻辑视图工作,并且中间件层提供从逻辑视图到物理视图的转化。
在软件定义网络范例的一个实施例中,每个转发元件是一个流交换启用网络装置。流交换启用网络装置基于每个分组所属的流而不是基于分组内的目的地IP地址转发分组,后者通常在当前的常规分组交换IP网络中使用。流可定义为报头与给定位模式匹配的分组的集合。从这个意义上来说,传统IP转发也是基于流的转发,其中只通过目的地IP地址来定义流。但是,一般流定义允许考虑分组报头中的许多字段(例如,10个或更多个),而不是只考虑目的地IP地址或源IP地址。
控制平面基于每个流的应用层计算和中间件层映射将相关消息传送给转发元件。转发元件对这些消息进行处理,并在它的流表中将合适的流信息和对应的动作编程。转发元件将分组映射到流,并基于这些流表转发分组。当然,流表可以在诸如映射、列表、阵列、文件、表、关系数据库等的各种数据结构中实现。此外,这些表中的列和行的论述是任意的;尽管一个实现可以选择将条目放在行中,但是修改数据结构以便改为将条目放在列中是无足轻重的。另外,转发元件可能需要对于诸如DPI、NetFlow数据收集、OAM等的重要操作具有数据处理和数据生成能力。
流处理的标准定义了用于在控制平面和转发平面之间传送消息的协议,并且描述了用于分组的处理的模型。用于在流处理装置中处理分组的这个模型包括报头解析、分组归类和做出转发决定。
报头解析描述如何基于公知的协议集合(例如,以太网、虚拟局域网(VLAN)、多协议标签交换(MPLS)、IPv4等)来解译分组。一些报头层包含具有关于如何多路分用下一个报头的信息的字段。例如,以太网报头包括描述下一层中是什么类型的报头的字段。一些协议字段用于构建将在分组归类中使用的匹配结构(或密钥)。例如,第一密钥字段可以是源媒体接入控制(MAC)地址,而第二密钥字段可以是目的地MAC地址。
分组归类涉及在存储器中执行查找以便通过基于流条目的匹配结构或密钥确定流表中的哪个流条目与分组最佳匹配来将分组归类。可能的是,许多流可以对应于一个分组;在这个情况下,系统通常配置成根据定义的方案(例如,选择匹配的第一流条目)从这些流中确定一个流。
做出转发决定并执行动作是基于在之前的分组归类步骤中所标识的流条目通过利用分组执行动作来进行。流表中的每个流与将对每个对应分组执行的动作的集合相关联。例如,动作可以是:将报头推到分组上,利用特定端口转发分组,洪泛(flood)分组,或简单地丢掉分组。因此,具有特定传输控制协议(TCP)目的地端口的IPv4分组的流条目可以包含指定应当丢掉这些分组的动作。
但是,当未知分组(例如,如在OpenFlow用语中所使用的“未命中分组”或“匹配未命中”)到达数据平面(例如,到达转发装置)时,通常立刻将分组——或分组报头和内容的子集转发给控制平面(或控制器)。执行定义决定在数据平面中如何处理分组并将对应条目编程的过程的软件的控制器,将然后将流表条目(又称为流条目)编程到数据平面的转发装置中以便容纳属于未知分组的流的分组。在一些情况下,一旦控制器从转发装置接收“未命中”分组,控制器还将把分组转发到它确定为合适的目的地。这个基于控制器的转发有时称为缓慢路径处理,它对于网络来说是不利和/或病态的。
在其它信息片段中,编程的流表条目定义匹配准则的特定集合(值或通配符的集合、或应当将分组的哪些部分与一个或多个特定值/通配符进行比较的指示,如数据平面的匹配能力所定义——即——对于分组报头中的特定字段或对于某个其它分组内容)以及在接收匹配分组时采取的数据平面的动作或动作的集合。但是,编程的匹配准则可能只与可接收的分组的子集匹配(对于端口或系统)。在这个可能的情况下,还将把额外的“未知”分组转发给控制器。
一旦控制器将特定流表条目编程,那么当具有匹配凭证的下一个分组到达时,它与数据平面中所创建的条目匹配,并且转发装置采取与匹配的条目相关联的动作。
当例如将新的节点添加到网络中时,由于该节点的流表是空的,所以现有的SDN机制可能会造成诸如拥塞和分组丢失的网络问题。由于在与该新节点相关联的流表中没有任何条目,所以将把与该新节点相关联的所有业务转发给控制器,直到控制器在该节点的流表中创建了特定转发条目,并且根据这一个默认“匹配未命中动作”(OpenFlow通常是丢弃)或某个其它单个默认转发动作(同样最有可能是丢弃)处理所有分组类型。例如,OpenFlow允许编程人员为未知分组的默认规则编程,例如“丢掉所有”或“转发所有”。由于控制平面分组处理能力比数据平面接收分组并将分组转发给控制平面的速率慢,所以这可淹没控制器的处理能力,从而造成控制器处的拥塞以及网络中的潜在的灾难性延迟。
出于这个原因,典型的转发装置禁用匹配特征,并且不将信息转发给控制器,直到明确允许这么做(通常通过控制器本身)。因此,不转发分组,直到新安装或创建的转发器完全配置好为止。
当某个人故意发送非常大量的业务以使得所接收的所有(或几乎所有)分组都具有“新的”凭证并且因此对于数据平面而言似乎都是“未知”时,也会出现类似问题。所有这个业务到控制器的引起的转发也可淹没控制平面,并且可潜在地使网络的全部或一部分出故障。这样的事件是拒绝服务(DoS)攻击的一个常见向量。
现有SDN实现可以通过实现设计来避免淹没控制器。例如,可以严格使用独立处理器来处理入局控制业务的接收和存储。在最坏的情况下,这个方法可以允许该实现在它所接收的所有控制分组将以其它方式淹没控制器时开始丢弃这些控制分组。但是,这个方法有很多问题。首先,出于多个原因(不兼容设计、规模考量等)中的任意一个原因,实现可能不能实现该能力。因此,很有可能的是,如果转发平面(或转发装置)正在将高于正常的业务量发送到控制器,那么即使转发装置已经完全配置好,但是由于网络业务的变化,控制器实现可被淹没。利用潜在地丢弃控制分组的独立处理器的方法的第二个问题是,由于积压的较旧业务而丢弃新业务众所周知是个问题,这通常会诱导病理性网络行为。
现有SDN实现的另一个问题是,任何尚未归类的流的第一分组将经历潜在显著的处理延迟,这是因为与流中的剩余分组相比,它将接收不同处理(控制器通过分析该分组执行缓慢路径处理)。因此,利用任何这样的方法,无序分组递送事件的频率将更高。因此,由于未匹配业务的缓慢路径处理而导致的基于分组的规则创建可在流中导致无序递送和/或过度延迟变化。另外,将每个“未命中”分组传送到控制器可能会相当费成本,因为该数据会消耗网络中的转发元件和转发链路的资源。
本发明的实施例提出一种SDN配置,它可用于避免这些问题,并且由此加速网络中的转发速度。本发明的实施例不需要SDN实现是OpenFlow兼容的。但是,本发明的实施例利用与OpenFlow所提出的那些结构和概念有关的结构和概念,例如转发装置所使用的流表(又称为匹配表)和控制平面(或控制器)通过处理分组信息执行基于分组的规则创建并确定将转发装置编程以便识别“新”流并相应地转发这些分组所需的配置信息和/或提供新匹配准则的能力,新匹配准则使得当转发装置接收相同流的随后分组时转发装置可能将更合适的分组信息提供给控制器。
概述
在本发明的实施例中,控制器首先标识假设任何转发节点在给定网络中提供的服务类型,并且基于该信息以及可选地进一步基于诸如网络拓扑的其它信息,定义数据路径的默认转发规则的集合。另外,控制器可以具有基于装置类型的配置步骤的优先列表,它将开始将优先列表编程到转发装置的可配置默认规则表(CDRT)中。因此,基于装置类型和配置步骤的优先列表,控制器然后可以在完成这样的局部配置之后启用有限转发。在本发明的实施例中,控制器利用在CDRT的条目中所定义的动作与通过转发装置执行的有限转发并行地继续这些优先配置步骤,直到诸如配置的时间(如果有的话)完成为止。
这样的配置使得有限但有用的转发能够快速进行。例如,该配置允许在网络中早启动装置类型特定的控制协议,例如生成树协议(STP)、桥接器的最短路径桥接(SPB)、或路由器的站点特定路由协议(例如,开放式最短路径优先(OSPF)、中间系统到中间系统(IS-IS)、内部边界网关协议(iBGP)等)。另外,取决于装置类型,优选的是默认不丢弃分组。例如,可以用“洪泛”的默认动作配置以太网桥接器,“洪泛”是这样的桥接器的常见操作。
另外,立即允许有限量的转发的能力在SDN应用中可以是关键的,其中可以利用其中完全配置可能需要过度时间量的一般的、完全可编程的转发装置来将装置类型实例化为一个或多个虚拟装置。
在完成局部配置(基于装置类型)并且启用某个分组转发子集之后,基于分组的规则创建开始。当转发平面接收未知分组(即,在流表中没有配置更特定动作或规则的分组)时,转发平面执行来自CDRT的CDRT条目的与该分组相关联的默认转发动作。这在该特定分组的转发中不涉及控制平面的情况下进行。
当处理该分组时,将分组的一部分(或全部)复制到转发装置本地存储器(例如,分组未命中表(PMT))。在一些实施例中,将与该分组相关联的流的额外遥测数据复制到PMT中,例如分组的接收时间、或自从具有相同凭证的分组到达以来的时间。控制平面随后按照它自己的速率(与数据平面处理无关)从数据平面本地存储器拉条目,对它进行处理,并在流表的集合中创建更特定的条目(或多个更特定的条目)。
在这些实施例中,由于控制器排他地用从转发平面本地存储器主动检索的分组或分组的部分工作,所以不会对转发使用缓慢路径,从而避免流中的分组的延迟变化以及那些分组的潜在的无序递送。
相比之下,在基于OpenFlow的系统中,假定转发装置将把“未命中分组”流信息推送到控制器以便进一步处理。由于控制器可能是(并且通常是)在独立物理装置上执行,所以转发装置不一定知道控制器的处理能力。传送节点——转发装置的部分上的这个信息缺乏可潜在地造成控制器处的拥塞、业务的丢失以及控制器具有网络中的实际业务矩阵的不完整图片。尽管OpenFlow“分组进”和“分组出”消息有助于管理控制器处的这样的缓冲,但是这些消息在网络上增加了额外的消息传递。
在本发明的实施例中,由于控制器在它方便时拉分组信息,所以转发装置不会淹没控制器。因此,当在SDN中有许多转发装置并且有许多“未知”分组到达这些转发装置时,控制器将能够按照它自己的速度处理这些“未知”分组,而不会被蜂拥而至的转发的分组信息淹没。
进一步细节
在本发明的实施例中所使用的一般方法是标识从网络中的转发装置预期的服务,然后相应地在每个装置的可配置默认规则表(CDRT)中编程未知(未命中)分组的默认动作。可以为可在特定网络中使用的每个装置类型提前确定该信息,并且在新装置添加到网络时,基于该新装置的类型和在拓扑中的位置,将该信息应用于这个新装置。另外,在某些实施例中,控制器拉存在尚未定义的特定转发条目的分组信息,对该信息进行处理,并创建一个或多个特定未命中条目(通常在流表中,但是在一些实施例中,在CDRT内)。
在一些实施例中,在CDRT的条目内使用的最通常适用的默认动作将是丢弃匹配分组,因为该动作有效地模拟在网络中不存在(或尚未启用)该装置时发生的相同事情。在这些场景中,丢弃分组将最有可能导致在某个延迟之后重新传送丢弃的分组。其它默认动作也是有用的,例如洪泛在SDN中起以太网桥接器的作用的装置的未匹配分组。
在本发明的一个实施例中,默认动作包括用于执行分组的有限转发的数据平面转发指令。在一些实施例中,默认动作还包括指示分组的什么部分将存储在数据平面本地存储器(例如,分组未命中表)中并对于控制器可用的格式说明符。例如,格式说明符可以指示,对于与该特定CDRT规则匹配的任何分组,应当将分组的前50个字节作为条目存储在PMT中。字节的数量(在该示例中为50)可以基于装置假设在网络中提供的服务的类型而进行配置。对于一种服务类型,这可以确定为来自分组的能够包括将用作将通过控制器为放在转发装置的流表中的流条目构造的更特定匹配准则的一部分的潜在报头信息所需的字节数。在其它实施例中,格式说明符是对于其功能设计成由该实现所支持的任何装置类型所特定的语义组织的分组内容的索引值。例如,可以定义格式说明符,其中语义是所存储的数据包括可能是特定分组类型的密钥(例如,以太网帧报头字段、IPv4分组报头字段、IPv6分组报头字段等)的唯一特定位位置(或位范围)。
在本发明的实施例中,可以对于特定装置类型、或对于网络中的所有装置每个端口(或虚拟端口)、或每个装置(或装置实例)定义默认动作。
图1示出根据本发明一个实施例具有加速转发的软件定义网络(SDN)100的一部分。所描绘的SDN包含起控制器作用的第一网络元件102和起转发平面作用的第二网络元件112。但是,在备选实施例中,第一网络元件102和第二网络元件112中的一个或两个作为虚拟网络元件执行,并且因此可以在一个物理装置上共同执行或分离在多个物理装置中。
在该图中,用诸如正方形、三角形、圆形和空心框的常见形状示出分组的部分。这些符号可以表示包括这些分组中的特定位、位群组、字节或字节群组的数据值的范围。同样地,这些数据值可以是来自分组或数据报的有效载荷内的分组报头字段或数据。尽管描绘为可能彼此紧邻,但是每个数据值可以是或者可以不是分组内的连续数据值。
在圆圈‘1’,通过网络接口106,网络元件102的控制模块104可以可选地通过经由一个或多个流条目修改消息133将一个或多个流表条目140插入到流表中来配置第二网络元件112的流表116A-116N中的一个或多个流表。与OpenFlow型网络(其中控制器只在转发装置接收在它的流表中“未命中”的分组并将该分组转发给控制器以进行分析之后才添加流表的条目)相比,在所描绘的该实施例中,控制模块104主动地安装流表条目140。因此,安装在该可选的第一配置中的流表条目140不是由在流表中“未命中”的业务产生。“未命中”流表的业务是具有不与流表116A-116N的集合的任何流条目的匹配准则141(值和/或通配符的集合)匹配的匹配部分131(例如,分组报头字段、分组有效载荷值或其它分组位置的集合)的业务。流表116A-116N的每个条目包括匹配准则141和对于具有与该流条目的匹配准则141匹配的分组匹配部分131的任何业务执行的一个或多个动作的集合。在一些实施例中,该可选配置将流表条目140建立在第二网络元件112的确定的装置类型基础上。在一些实施例中,流表条目140来自可通过网络元件102或通过某个外部装置存储的来自相同网络元件102或类似网络元件的之前存储的流表条目的集合。
并且在圆圈‘1’,控制模块104传送一个或多个CDRT修改消息132的集合以便填充第二网络元件112的可配置默认规则表(CDRT)118。与上文关于流条目修改消息133所描述的可选配置类似,这些CDRT修改消息132由控制模块104发出以便努力使得能够通过第二网络元件112进行有限转发,并且因此不响应于“未命中”流表116A-116N的任何业务而进行(在该阶段)。在所描绘的实施例中,每个CDRT条目包括CDRT匹配准则144(与流表116A匹配准则141类似)、格式说明符145和一个或多个默认动作146的集合。在分组(例如,130)“未命中”流表116A-116N的集合之后,将分组的匹配部分131与CDRT匹配准则144进行比较以便确定将对该分组执行的默认动作146的集合。此外,格式说明符145指示将把分组的哪些部分放在分组未命中表(PMT)120中。在该阶段,启用分组处理模块114以便甚至在网络元件112接收任何非控制模块104定向的任何业务之前执行业务的有限分组转发。控制模块104可以基于第二网络元件112的确定的装置类型、SDN中的第二网络元件112的位置、和/或第二网络元件112将作为整体或在逐个端口的基础上执行的预期服务生成CDRT条目143。也可以在稍后的点响应于SDN内的变化使用CDRT修改消息132的传输;例如,如果将新端口添加到SDN中的转发元件,或者如果第二网络元件112改变在SDN中的作用(也许由于网络拓扑改变)。
在圆圈‘2’,在网络元件112的网络接口108处接收第一分组130,并在圆圈‘3’,通过分组处理模块114进行引导,以便利用分组的匹配部分131和流表116A-116N的流条目140的匹配准则141对照流表的集合进行匹配。在所描绘的实施例中,假设唯一流条目140包括作为流表116A的一部分示出的这两个条目(空格/正方形/圆形以及圆形/圆形/空格),那么第一分组130的匹配部分131(正方形/三角形/正方形)在流表116A中将不具有匹配。因此,对于第一分组130出现流表“未命中”。
在可选的圆圈‘4’,通过确定匹配部分131是否与CDRT条目143的任何CDRT匹配准则144匹配来将分组130与可配置默认规则表118的CDRT条目143进行比较。(注意,在一些实施例中,对照流表116A匹配准则141进行匹配的匹配部分131不同于对照CDRT 118的CDRT匹配准则144进行匹配的匹配部分131。)在所示实施例中,假设CDRT 118只包括三个CDRT条目143(空格/正方形/圆形、正方形/空格/三角形、以及正方形/三角形/正方形),那么分组130与第三条目139匹配。因此,将对分组130执行一个或多个默认动作146的集合。在所描绘的实施例中,默认动作146的集合(表示为‘E’)规定,将把分组130从网络接口108之一中转发(在圆圈‘4a’)到特定目的地。另外,分组处理模块114利用所匹配的条目139的格式说明符145来确定将把哪个条目插入到分组未命中表120中。如本文中之前所描述,格式说明符145可以是指示将把分组的哪些部分插入到PMT 120中的值、值的范围或代码的集合。在所描绘的实施例中,每个CDRT条目143的格式说明符145是指示将使用分组130的哪些部分的位图——这里,“011”的格式说明符145指示将把分组的第二和第三报头字段值插入到PMT120中。
因此,在圆圈‘5’,分组处理模块114将PMT条目147插入到PMT 120中,PMT条目147包括作为分组130的第二和第三报头字段值——或三角形和正方形的分组部分149。在不利用CDRT 118的实施例中,为在流表116A-116N中“未命中”的所有分组定义特定定义的分组部分149——例如,固定字节范围或整个分组是分组部分149的选项。在这一点上,PMT 120中有两个未处理条目148被视为是未处理,因为控制模块104尚未对它们进行存取。在接收分组130之前的某个时间期,将第一未处理条目插入到PMT 120中,这在本文中不做描绘。
在某个时间量之后,并且假设第二网络元件112没有接收任何其它分组,那么控制模块104在圆圈‘6’处存取PMT 120以便搜索任何未处理条目146。如本文中其它地方所描述,控制模块104可以用各种方式来存取PMT 120,例如利用分布式共享存储器(DSM)或信令协议。在图1中所描绘的实施例中,控制模块104传送拉条目请求消息134以便搜索PMT 120的至少一个未处理条目148。在其它实施例中,拉条目请求消息134可以搜索PMT 120的未处理条目148中的最早条目、随机条目、条目子集或定义量的条目或所有条目。该拉条目请求消息134是“拉”消息,这是因为,它使得控制模块104能够主动地寻求数据的获取,而不是被动地等待在另一个网络装置方便时发送数据。在一些实施例中,在这个点,从PMT 120删除未处理条目148,或者将未处理条目148标记为正在处理或在处理过程中。在其它实施例中,只有当从控制模块104接收指示控制模块104成功接收并处理PMT 120的该之前未处理的条目的关于该条目的稍后的流条目修改消息130时才删除未处理条目148或将其标记为经过处理。然后,控制模块104将在SDN的整个操作中定期或立即检查额外的未处理条目148。
在圆圈‘7’,网络元件112以包括代表第一分组130的最新PMT条目147的分组部分149的拉条目响应消息136对拉条目请求消息134做出应答。
响应于接收拉条目响应消息136,控制模块104处理所包含的分组部分149以便生成新的流条目以包含在流表116A-116N之一中。将该新的流条目作为流条目修改消息130的一部分进行发送,它命令网络元件112将新的流条目插入到流表(例如,116A)中或编辑现有流表条目以便等效于新的流条目。
如果可能,控制模块104在流表116A-116N中创建包含匹配准则141和将采取的特定动作142的特定流条目,并使得从PMT 120中移除它刚刚处理过的PMT条目147信息或以别的方式在PMT 120将其标记为无效。当然,取决于实施例,在处理之后通过控制模块104移除未处理条目148可能或者可能不需要控制模块104采取特定动作。在一个实施例中,控制模块104使得将PMT条目147标记为“经过处理”(如果之前没有这样做的话)。在PMT 120保存了跟踪下一个未处理条目(例如,148之一)的指针的实施例中,该指针现在移动到下一个未处理条目。
当在流表116A-116N中创建特定流条目时,控制模块104可以在流表116A-116N中创建很大程度上与CDRT中的现有匹配条目139类似的条目,不同之处在于它不指定将插入到PMT 120中的内容(经由格式说明符145)的事实。另外,控制模块104可以配置成在流表116A-116N中移除条目,从而触发该条目的刷新,或允许在接收之前与所移除的条目的匹配准则141匹配的分组时随后将不同的行为定义为不同的特定动作142。在一些实施例中,流表116A-116N的条目能够配置成通过老化退出该条目来自动移除(即,如果在某个时间量中该条目没有命中/刷新,那么将它移除)。
然后,在圆圈‘9’,网络元件112接收属于与第一分组130相同的流的第二分组132,如通过它具有相同的匹配部分(正方形/三角形/正方形)来指示的。在圆圈‘10’,将第二分组132与流表116A-116N进行比较,并且第二分组132将与通过流条目修改消息130刚刚插入(但没有描绘)的新添加的流条目匹配。因此,将通过在圆圈‘11’处利用一个或多个网络接口108转发第二分组132来对第二分组132执行该新添加的流条目的动作的集合(由‘F’表示),并将不需要检查CDRT 118。
尽管该第二分组132的处理与属于传统SDN中的建立的流的分组(即,在流表中未命中的分组)的处理类似,但是关于流的第一分组130的处理和在第一分组130之后短时间到达的流的其它分组的处理清楚地示出一个关键差异。在传统SDN环境中,第一分组130将在流表(例如,116A)的集合中未命中,并且将被转发到控制器以进行分析。在该时间期间,属于该流的随后分组可以到达,并且可以类似地发送给控制器(并且可能被转发平面丢掉)。该过程在转发平面中继续,直到控制器能够用具有标识和处理该流的分组的能力的一个或多个额外流表条目对转发平面进行编程为止。但是,在本发明的实施例以及图1中所标识的实施例中,虽然流的前几个分组将在流表116A-116N中未命中,但是仍可以因为CDRT118的CDRT条目143中的动作146的集合而立即进行处理。类似地,描述这些分组的信息(例如,分组部分149和未示出的其它分组相关的遥测数据)将保存在PMT 120中,并且只有当控制器(即,控制模块104)搜索该信息时才将该信息传送到控制器。此外,可以将聚合在只有几个网络消息中的来自PMT 120的该未处理条目148信息发送到控制器。因此,在本发明的这类实施例中,能够立即处理流的所述前几个分组,并且控制器和网络不会被与“未知”分组有关的控制业务淹没。
图2示出根据本发明一个实施例由软件定义网络中的转发平面执行以便加速转发的流程200。将参考其它流程图的示例性实施例来描述该流程图和其它流程图的操作。但是,应了解,这些流程图的操作可以通过参考这些其它图所论述的实施例以外的本发明的实施例来执行,并且参考这些其它图论述的本发明的实施例可以执行与参考这些流程图所论述的操作不同的操作。尽管图中的流程图示出由本发明的某些实施例执行的特定操作顺序,但是应了解,这样的顺序是示例性的(例如,备选实施例可以按不同的顺序执行这些操作,将某些操作加以组合,重叠某些操作,等等)。
在210,转发平面接收第一分组,然后确定第一分组是否与一个或多个流表的集合内的任何流条目匹配(220)。流表的集合包括一个或多个流条目的集合,每个流条目包括将对照入局分组的匹配部分进行匹配的匹配准则以及将对具有与该流条目的匹配准则匹配的所述匹配部分的分组执行的一个或多个动作的集合。
响应于确定第一分组不与流表的集合内的任何流条目匹配,转发平面执行未命中过程(230)。在一个实施例中,该未命中过程240包括在分组未命中表(PMT)中插入第一分组的至少一部分作为第一条目(250)。PMT存储由转发平面所接收的不与流表的集合250的任何流条目匹配的分组的部分(250)。在一些实施例中,对于发现为不与流表的集合内的任何流条目匹配的每个分组进行该插入;但是,在一些实施例中,当在PMT中不存在描述该分组的任何条目时,进行到PMT中的插入。在这些实施例中,当接收在流表的集合中未命中的分组时,未命中过程240包括基于该分组更新PMT中的第一条目的至少一部分(255)。该更新可以包括:更新第一条目中指示该条目表示多少个分组(即,转发平面接收由该条目所描述的在流表中“未命中”的多少个分组)的计数器,更新指示接收与该PMT条目匹配的上一个分组的时间的“上一次接收”时间,等等。
在260,一旦软件定义网络中的控制器寻求对PMT的第一条目的存取,转发平面便向控制器提供所述存取(260)。在本发明的一些实施例中,转发平面通过从控制器接收指示对PMT的一个或多个未处理条目的拉请求的拉条目请求消息(270)来检测控制器寻求所述存取。在本发明的一些实施例中,转发平面通过以下方法来向控制器提供对PMT的第一条目的存取:响应于拉条目请求消息的接收,向控制器传送包括PMT的第一条目的拉条目响应消息(280)。
图3示出根据本发明一个实施例由软件定义网络中的转发平面执行以便加速转发的未命中过程300。该未命中过程300示出图2的未命中过程240的一个可能实施例。
在210,转发平面将第一分组与可配置默认规则表(CDRT)的一个或多个条目的集合进行比较。该比较通过确定第一分组的匹配部分是否与来自条目的集合中的任何条目的CDRT匹配准则匹配来进行(310)。CDRT的每个条目包括将用于确定分组是否与该条目匹配的CDRT匹配准则。在一些实施例中,CDRT的每个条目还包括指示如何在PMT中为具有与该条目的CDRT匹配准则匹配的匹配部分的分组构造条目的格式说明符。
然后,转发平面确定第一分组的匹配部分的确与CDRT的第一条目的CDRT匹配准则匹配(320)。通过CDRT的第一条目的格式说明符确定在PMT中作为第一条目插入的第一分组的部分。然后,转发平面执行CDRT的匹配的第一条目的默认动作的集合,从而使得转发第一分组,而不管第一分组不与流表的集合的任何流条目匹配(330)。接着,如刚刚在图2中,转发平面在分组未命中表(PMT)中插入第一分组的至少一部分作为第一条目(250)。PMT存储由网络元件所接收的不与流表的集合的任何流条目匹配的分组的部分。
图4示出根据本发明一个实施例由软件定义网络中的控制器执行以便加速转发的流程400。在本发明的一些实施例中,控制器执行可配置默认规则表配置,这将在图5中进一步详述。
在420,控制器存取充当软件定义网络中的转发平面的网络元件的分组未命中表(PMT)的未处理条目。PMT的每个条目存储由该网络元件所接收的不与该网络元件的一个或多个流表的集合内的任何条目匹配的分组的部分。流表的集合包括一个或多个流条目的集合,每个流条目包括将对照入局分组的匹配部分进行匹配的匹配准则。流条目的集合中的每个流条目还包括将对具有与该条目的匹配准则匹配的匹配部分的分组执行的一个或多个动作的集合。
在本发明的一些实施例中,控制器通过向网络元件传送指示对PMT的未处理条目的拉请求的拉条目请求消息(422)来执行存取。在一些实施例中,控制器接着从网络元件接收包括PMT的一个或多个未处理条目的集合的拉条目响应消息(424)。
在430,响应于所述存取,控制器使得网络元件将一个或多个流条目的集合插入到流表的集合中的一个或多个流表中。在本发明的一些实施例中,这通过控制器向网络元件传送指示将流条目的集合插入到流表的集合中的所述一个或多个流表中的命令的流条目修改消息(432)来进行。
图5示出根据本发明一个实施例由软件定义网络中的控制器执行以便加速转发的可配置默认规则表配置过程500。在本发明的一个实施例中,控制器首先通过确定充当软件定义网络中的转发平面的网络元件的装置类型(510)来执行可配置默认规则表(CDRT)配置410。
接着,控制器向网络元件传送可配置默认规则表修改消息以使得网络元件在可配置默认规则表(CDRT)中配置一个或多个条目的集合(520)。条目集合中的这些条目是基于确定的装置类型确定的。因此,一旦接收不与流表的集合的任何流条目匹配的分组,网络元件便由此配置成确定分组与CDRT条目的第一CDRT条目匹配,执行由第一CDRT条目所指定的一个或多个动作的集合,并在PMT中插入第一分组的至少一部分作为第一条目(520)。
可配置默认规则表配置选项
如之前所述,可配置默认规则表(CDRT)包括CDRT条目143,所述CDRT条目143包含对于在流表116A-116N中“未命中”的分组指定处理决定的一个或多个默认动作146。对于默认动作146是什么有很多种可能性。例如,如果转发装置(即,网络元件112)的装置类型是以太网交换装置,那么有用的默认动作可以是将匹配分组转发到与分组相同的虚拟局域网(VLAN)中的所有端口。或者,如果所编程的转发装置的装置类型是路由装置,那么有用的默认动作可以是将分组转发给特定子网内的所有成员。如果装置类型是防火墙,那么有用的默认动作可以是丢掉分组,其配置转发元件以便选择稳妥的做法。此外,如果所编程的转发元件的装置类型是负载平衡装置,那么默认动作可以命令转发元件根据诸如循环法、随机选择等的特定负载分配方案分配负载(也许通过利用CDRT条目143中的非常广泛的CDRT匹配准则144以便与各种业务匹配)。
分组未命中表实现选项
在本发明的一些实施例中,可以使分组未命中表(PMT)120对于控制模块104来说看起来像是环形缓冲器,这将使得控制模块104无需重置它的行计数器,并且这可使得底层硬件无需明确地移除已经由控制器处理的行。在其它实施例中,PMT 120可以利用递增行计数器和换行(wrap)来简单地实现。在这个情况下,网络元件112可以通过将新内容写入到由行计数器所指示的下一行并将行计数器递增来创建新行(如果没有当前对应的条目的话)。因此,控制模块104没有理由将行标记为“经过处理”,除非控制模块104中的实现本身利用该信息——硬件将覆写下一行,而不管它是否正在进行处理或者已经被处理。但是,该方法多半与利用哈希过程来确定是否存在匹配条目并放置新条目的方法不兼容。
在其它实施例中,网络元件112实现哈希算法以便选择要写入假定的“新”条目的PMT 120的行。如果使用该方法,那么网络元件112避免检查是否存在条目的需要,因为如果存在,那么哈希算法应当是将使得这样的条目覆写现有的相同条目的算法。在利用该方法的实施例中,存在将出现哈希冲突的可计算概率,由此使得条目被不相同的另一个条目覆写。但是,当控制器对条目进行处理时,随后冲突的概率则会降低。除了选择确保条目必定会取代它本身的哈希算法外,还应选择哈希算法(并且可能提供多个备选算法)以使得对于为此目的分配的数据平面本地存储器而言冲突的概率最低。
另外,一个优点是(特别是在控制模块104与数据平面151并置的情况下)使底层硬件以允许控制模块104容易地确定它已经处理所有现有条目的方式向控制模块104提供在PMT 120中建立了新条目的某种通知。这可以采用任意数量的方式来实现,但是避免不断打断控制模块104的一个实施例是具有计数器,该计数器保留自从控制模块104上一次读取计数器以来由数据平面151处理(即,分组处理模块114)所创建的新条目的数量。在这些实施例中,计数器在读取时重置。
每个PMT条目147可以按多种可能的方式组织。例如,在一个实施例中,每个PMT条目147包含未图示的接收上下文的形式(例如,在其上接收对应分组的端口)以及分组的前N个位/字节(即,分组部分149),其中N的值是实现选择。但是,在其它实施例中,通过使用更复杂的行语义来实现更大效率,其中除了所存储的接收上下文以外,还存在具有有限数量的“公知”(由数据和控制平面共同了解)格式的格式说明符(或到格式说明表的索引)。该格式说明符伴随有与根据格式说明符格式化的每个格式相关联的密钥内容。在某些实施例中,PMT条目147内容的顺序并不特别,并且因此PMT条目120中的字段可以按照任何顺序排序。在某些实施例中,格式说明符包括在常见的以太网帧报头、IPv4和IPv6报头、TCP和用户数据报协议(UDP)端口号等以及它们的某些组合中的密钥字段的格式。
另外,用于将信息从PMT 120拉到控制模块104的机制存在许多选项。由实现器来决定特定实现将利用什么种类的协议/机制来将分组从数据平面151的PMT 120拉到控制模块104。但是,重要的是,与诸如OpenFlow的现有解决方案相比,协议的特定实现考虑控制模块104与数据平面151之间的增加的分组流的成本。具体来说,实现器应当在决定用于从数据平面151拉PMT 120信息的优选机制时考虑以下四点:
(1)控制模块104的处理能力和软件体系结构是什么?
(2)转发元件和控制模块104中可用的缓冲器的数量是多少?
(3)控制平面150和数据平面151是否并置?例如,在底座的管理卡充当控制模块104并且一个或多个线卡充当数据平面151的情况下,控制平面150和数据平面151并置,并且两者之间的信令可能具有相对较低的成本。另外,在控制平面150和数据平面151并置的情况下,实现器可以利用诸如直接存储器存取(DMA)的机制来从数据平面151拉分组。
(4)控制模块104是否网络中的独立节点?在这个情况下,重要的是考虑控制模块104与特定控制模块104正在控制的那些数量的转发节点之间的网络。在控制模块104是独立网络节点的情况下,实现器可以选择实现允许批处理由控制模块104所检索的信息的某个协议。该协议可以是基于标准的协议或专用协议。一个这样的示例是其中控制模块104定期向转发装置发送‘探测消息’以便检查PMT 120中是否存在需要控制模块104处理的任何条目。控制模块104可以利用该‘探测消息’来研究网络的状态以及数据平面151和控制平面150中的可用缓冲器。例如,可以利用‘探测消息’来计算‘总往返时间’(RTT)和/或可在控制模块104和数据平面之间流过网络而不会分段的分组的最大大小(即,最大传输单元(MTU))。
控制模块104还可以利用‘探测消息’来命令PMT 120按照基于时间戳(例如,最近条目在表的顶端并且首先被选取)、计数器(例如,具有最大命中数的条目在表的顶端并且首先被选取)、或先进先出(FIFO)/反向时间戳(例如,控制模块104按照条目创建的顺序选取条目以进行处理)的顺序布置未处理PMT条目148。
基于控制模块104所确定的信息(例如,网络MTU、RTT以及可用缓冲器的计数),控制模块104可以将‘拉条目请求’消息134发送到数据平面151。在一些实施例中,该消息包含详述可以将多少未处理条目148包装到单个‘拉条目响应’消息136中的信息。在一个实施例中,‘拉条目请求’消息134包括详述在控制模块104处从上一个‘拉条目响应’消息136成功递送(并处理)的消息的数量的信息。
另一个实施例包括配置控制模块104以便从转发装置112一次请求一个PMT条目147。该方法的实现非常简单,它涉及直接请求/响应机制,其中控制模块104请求来自转发装置112的PMT 120的PMT条目(例如,下一个PMT条目),并接收:1)包含该条目的响应;2)错误消息(可能指示当前不存在未处理条目,或者可能指示请求存在某个其它问题);或者3)无响应(这在转发装置112没有信息要发送的情况下可能是优选方法)。在某些实施例中,不能从转发装置112接收响应不一定是故障的指示,因为控制模块104和转发装置112可以有其它方式来各自确定另一个的“活性”。
另一种方法利用批处理机制来减少在请求PMT 120的未处理条目148时生成的业务量。在该方法中,控制模块104请求来自转发装置112的PMT 120的整数数量的条目。在一个实施例中,该方法利用具有指示试图一次提取的行数的默认值的可调参数(它可以由操作人员设置)。在一个实施例中,默认值指示,控制模块104将请求下10个条目。在利用这样的批处理机制的实施例中,控制模块104将获得如下之一:1)包含所请求的数量的条目——或更少条目——以及所返回的条目数量的指示的响应;可选地,消息格式可以包含将指示为什么返回的条目数量比所请求的条目数量少的原因(最可能的原因是,可用的行比所请求的行少)的错误代码;或者2)无响应。正如一次请求一个PMT条目147的之前实施例,如果没有行要提供,那么不接收响应可能是优选的。
请求PMT的未处理条目148的第三实施例是利用分布式共享存储器(DSM)体系结构。这可由操作系统或在所涉及的系统上运行的另一应用来支持。在这些实施例中,转发装置的PMT 120的内容保留在虚拟共享存储器空间中,并且通过所利用的一致性协议共享。因此,不需要显式消息传递。对于该利用,基于“弱一致性”的DSM体系结构是充分的,因为如果转发装置已经覆写了控制模块104当前正在工作的条目,那么它不具有长期重要性。
用于选择PMT条目147检索的途径的方法可以由任何合理的策略来管理。如果存在较老条目可能对应于已经完成的流的问题,那么通过最近创建的行进行排序可能有意义。通过对于PMT 120中的每个条目利用“命中计数器”(它在由于另一个分组与该PMT条目147匹配而每次重写条目时递增)进行排序是另一种方法。
最后,知道需要请求以便从转发装置接收任何流信息的任何控制模块104实现将定期发送新请求,即使它对于所有最近请求都没有接收任何条目。以此方式,如果没有东西要发送,那么转发装置无需发送响应,并且利用可靠的递送机制(例如,TCP)递送消息相对不重要。
在异常网络负载时,所描述的实施例允许控制模块104调整它处理流的速度,但是这是以网络转发路径的及时再编程为代价的。预期是,在许多情形中,CDRT条目的默认动作可以提供可接受的性能,并且控制模块104只需在特定情形中介入。在从数据平面获得转发信息存在等待时间的情况下,该信息可能已经用当前流状态上的额外遥测数据扩增以便允许控制模块104优先处理所检索的信息。这可以是接收上一个分组的时间、在给定时间窗口内的接收速率等的形式,它将允许控制模块104在给定当前网络状态和现有流集合的感知到的状态的情况下确定它可以采取的最有效的动作。
与在现有SDN技术中所提供的典型方法相比,本文中所描述的实施例提供实质益处。例如,对于最坏情况,OpenFlow可以将所有分组发送给控制模块104。尽管OpenFlow“分组进”和“分组出”消息设计成优化缓冲器使用,但是这些机制的使用还会增加在网络中流动的分组的数量以及与控制模块104使用它们相关联的开销。
另外,在转变之后需要在每个网络转发节点有某个量的学习的网络中,当存在转变——例如增加新节点/现有节点发生故障时,由缓慢路径分组处理诱导的拥塞(在控制器上以及在网络中)会变得严重。本发明的某些实施例的方法减少了控制器上的拥塞,并且因此还在发生网络转变时减少认知损失和带宽浪费。控制器在它方便时拉分组信息,从而避免拥塞。利用默认规则转发分组,直到控制器能够在每个这样的装置中编程条目。
涉及这个“学习过程”的潜在方法的另一个问题是,由于过程中的延迟,可能会将若干个类似分组转发给控制器。分组信息的接收是数据平面和控制器上的不必要的负担,并且会增加拥塞。本发明的实施例的方法通过避免在任何给定时间期内将与给定的一般匹配准则匹配的多个分组发送到控制器来进一步降低对控制器施加的处理要求。
另外,避免控制器的开销的通常方法是对于新节点简单地禁用这样的消息传递——以及禁止任何分组——直到该节点的配置完成为止。本发明的实施例中的方法允许以局部配置启用转发装置。某些实施例还允许利用基于分组的规则创建作为帮助控制器——以及任何适用的第三方软件应用——对剩余配置任务进行优先排序的机制。
并且,缓慢路径处理会对流的前几个分组造成其它分组将不会经历的延迟。本发明的实施例的方法还通过消除对于(缓慢路径)控制平面中的分组处理随之发生的延迟来降低某些潜在病理性联网事件(例如,分组的无序递送)的发生率。
在具有支持将分组推送到控制器以便进行处理的节点的网络中,该控制器不具有决定哪些节点重要并且因此在从数据平面节点接收分组时赋予特定节点优先权的选择权。本发明的实施例的方法允许来自给定数据平面节点的分组处理的优先排序。由于控制器正从数据平面拉信息(而不是推送信息,如OpenFlow模型中),所以它可以决定它想要首先从哪个(哪些)节点采集信息。
此外,在所描述的实施例中,不存在如将由拥塞和丢弃所暗示的知识的损失,因为这些技术经由在数据平面处的信息的汇总和扩增来应对拥塞。
尽管就若干个实施例描述了本发明,但是本领域技术人员将意识到,本发明不限于所描述的实施例,而是可以用在随附权利要求书的精神和范围内的修改和改变来实践。因此,本描述将视为是说明性而不是限制性的。
Claims (26)
1.一种由充当软件定义网络(100)内的转发平面的网络元件(112)执行以便减少缓慢路径分组处理的负面影响的方法,包括:
通过所述网络元件(112)接收第一分组(130);
确定所述第一分组(130)是否与所述网络元件(112)的一个或多个流表(116A-116N)的集合内的任何流条目(140)匹配,其中流表(116A-116N)的所述集合包括一个或多个流条目(140)的集合,流条目(140)的所述集合中的每个流条目包括将对照入局分组(130,132)的匹配部分进行匹配的匹配准则(141)以及将对具有与该流条目的所述匹配准则(141)匹配的所述匹配部分的分组执行的一个或多个动作(142)的集合;
响应于确定所述第一分组(130)不与流表(116A-116N)的所述集合内的任何流条目(140)匹配,执行未命中过程,所述未命中过程包括:
在分组未命中表PMT(120)中插入所述第一分组(130)的至少一部分(149)作为第一条目(147),其中所述PMT(120)存储由所述网络元件(112)所接收的不与流表(116A-116N)的所述集合内的任何流条目(140)匹配的分组(130)的部分(149);以及
一旦控制器(104)寻求对所述PMT的所述第一条目(147)的存取,便向所述控制器(104)提供所述存取。
2.如权利要求1所述的方法,其中:
所述控制器(104)寻求所述存取包括所述网络元件(112)从所述控制器(104)接收指示对所述PMT(120)的一个或多个未处理条目(148)的请求的拉条目请求消息(134);并且
提供对所述第一条目的所述存取包括将拉条目响应消息(136)传送给所述控制器(104),所述拉条目响应消息(136)包括所述PMT(120)的所述第一条目(147)。
3.如权利要求2所述的方法,其中传送给所述控制器(104)的所述拉条目响应消息(136)还包括所述PMT(120)的第二条目。
4.如权利要求1所述的方法,其中所述未命中过程还包括:
通过确定所述第一分组(130)的匹配部分(131)是否与来自条目的所述集合的任何条目的可配置默认规则表CDRT匹配准则(144)匹配来将所述第一分组(130)与CDRT(118)的一个或多个条目(143)的集合进行比较,其中所述CDRT(118)的每个条目包括将用于确定分组是否与该条目匹配的所述CDRT匹配准则(144)。
5.如权利要求4所述的方法,其中所述CDRT(118)的每个条目还包括指示如何在所述PMT(120)中为与所述条目匹配的分组构造条目(147)的格式说明符(145)。
6.如权利要求5所述的方法,其中所述格式说明符(145)包括指示将使用来自匹配分组(130)的哪些字节来在所述PMT(120)中为所述匹配分组(130)构造新条目(147)的位图。
7.如权利要求5所述的方法,其中所述未命中过程还包括:
确定所述第一分组(130)的所述匹配部分(131)与所述CDRT(118)的第一条目(139)的CDRT匹配准则(144)匹配,其中通过所述CDRT(118)的所述第一条目(139)的格式说明符(145)来确定在所述PMT(120)中作为所述第一条目(147)插入的所述第一分组(130)的所述部分(149)。
8.如权利要求7所述的方法,其中:
所述CDRT(118)的每个条目(143)还包括将对与所述条目的所述CDRT匹配准则(144)匹配的分组执行的一个或多个默认动作(146)的集合;并且
所述未命中过程还包括执行所述CDRT(118)的所述匹配的第一条目(139)的默认动作(146)的所述集合,由此使得所述网络元件(112)执行所述第一分组(130)的转发,而不管所述第一分组(130)不与流表(116A-116N)的所述集合的任何流条目(140)匹配。
9.如权利要求8所述的方法,还包括:
响应于从所述控制器(104)接收一个或多个CDRT修改消息(132)的集合,基于CDRT修改消息(132)的所述集合将新的CDRT条目插入到所述CDRT(118)中。
10.如权利要求8所述的方法,其中基于所述网络元件(112)将在所述软件定义网络(100)中提供的功能性由所述控制器(104)填充所述CDRT(118)的条目(143)的所述集合中的至少一些条目,并且所述至少一些条目不基于由所述网络元件(112)接收的分组。
11.如权利要求1所述的方法,还包括:
从所述控制器(104)接收指示将第一流条目插入到流表(116A-116N)的所述集合中的一个流表中的命令的一个或多个流条目修改消息(130);
将所述第一流条目插入流表(116A-116N)的所述集合中的所述一个流表(116A)中,其中所述第一流条目的匹配准则(141)与所述第一分组(130)的匹配部分(131)匹配;以及
将所述PMT(120)的所述第一条目(147)修改为不再是未处理。
12.一种由充当软件定义网络(100)内的控制器的第一网络元件(102)执行以便减少缓慢路径分组处理的负面影响的方法,包括:
存取充当所述软件定义网络(100)中的转发平面的第二网络元件(112)的分组未命中表PMT的未处理条目(148),其中所述PMT(120)的每个条目存储由所述第二网络元件(112)所接收的不与所述第二网络元件(112)的一个或多个流表(116A-116N)的集合内的任何条目(140)匹配的分组(130,132)的部分(149),其中流表(116A-116N)的所述集合包括一个或多个流条目(140)的集合,流条目(140)的所述集合中的每个流条目包括将对照入局分组(130,132)的匹配部分(131)进行匹配的匹配准则(141)以及将对具有与所述流条目的所述匹配准则(141)匹配的所述匹配部分(131)的分组执行的一个或多个动作(142)的集合;以及
响应于所述存取,促使所述第二网络元件(112)将一个或多个流条目(140)的集合插入到流表(140)的所述集合中的一个或多个流表中。
13.如权利要求12所述的方法,其中所述存取包括:
向所述第二网络元件(112)传送指示对所述PMT(120)的所述未处理条目(148)的拉请求的拉条目请求消息(134);以及
从所述第二网络元件(112)接收包括所述PMT的一个或多个未处理条目(148)的集合的拉条目响应消息(136)。
14.如权利要求12所述的方法,其中所述促使包括:
向所述第二网络元件(112)传送指示将流条目(110)的所述集合插入到流表(140)的所述集合的所述一个或多个流表中的命令的一个或多个流条目修改消息(130)。
15.如权利要求12所述的方法,还包括:
确定所述第二网络元件(112)的装置类型;以及
向所述第二网络元件(112)传送可配置默认规则表修改消息(132)以使得所述第二网络元件(112)配置可配置默认规则表CDRT(118)中的一个或多个条目(143)的集合,其中基于所述确定的装置类型确定条目(143)的所述集合,并且其中一旦接收不与流表(116A-116N)的所述集合的任何流条目(140)匹配的分组(130),所述第二网络元件(112)便由此配置成:
确定所述分组(130)与所述CDRT条目(143)的第一CDRT条目(139)匹配,
执行由所述第一CDRT条目(139)所指定的一个或多个默认动作(146)的集合,以及
在所述PMT(120)中插入所述分组(130)的至少一部分(149)作为第一条目(147)。
16.一种充当软件定义网络SDN(100)内的转发平面并减少缓慢路径分组处理的负面影响的网络元件(112),所述网络元件包括:
一个或多个物理网络接口(108)的集合,配置成:
接收将转发的分组(130,132),以及
一旦所述SDN中的控制器(104)寻求对分组未命中表PMT(120)的未处理条目(148)的存取,便向所述控制器(104)提供所述存取,其中所述PMT(120)将存储由物理网络接口(108)的所述集合所接收的不与一个或多个流表(116A-116N)的集合的任何流条目(140)匹配的分组的部分(149);以及
分组处理模块(114),配置成:
配置包括一个或多个流条目(140)的集合的一个或多个流表(116A-116N)的所述集合,流条目的所述集合中的每个流条目包括将对照入局分组的匹配部分进行匹配的匹配准则(141)以及将对具有与该流条目的所述匹配准则(141)匹配的所述匹配部分的分组执行的一个或多个动作(142)的集合,
确定所接收的分组(130,132)的匹配部分是否与流表(116A-116N)的所述集合的流条目(140)的所述集合的任何流条目的所述匹配准则匹配,以及
当所接收的分组(130)不与流表(116A-116N)的所述集合的任何条目(140)匹配时,执行未命中过程,其中所述未命中过程是以下之一:
插入所述接收的分组(130)的至少一部分(149)作为所述PMT(120)的条目(147),以及
基于所述接收的分组(130)更新所述PMT(120)的现有条目(147)。
17.如权利要求16所述的网络元件,其中物理网络接口的所述集合将通过配置成执行以下步骤来提供所述存取:
从所述控制器(104)接收指示对所述PMT的所述未处理条目(148)的拉请求的拉条目请求消息(134);以及
向所述控制器(104)传送包括所述PMT(120)的所述未处理条目(148)中的一个或多个未处理条目的拉条目响应消息(136)。
18.如权利要求16所述的网络元件,其中所述分组处理模块(114)还配置成:
响应于通过物理网络接口(108)的所述集合中的一个物理网络接口接收一个或多个流条目修改消息(130)的集合,
将流条目(140)插入到流表(116A-116N)的所述集合中的一个流表(116A)中,以及
将所述PMT(120)的至少一个条目(147)修改为不再是未处理,
其中流条目修改消息(130)的所述集合将指示将所述流条目(140)插入到流表(116A-116N)的所述集合中的所述一个流表(116A)中的命令。
19.如权利要求16所述的网络元件,其中所述未命中过程还包括:
通过确定所述接收的分组(130)的匹配部分(131)是否与条目的所述集合的任何条目的可配置默认规则表CDRT匹配准则(144)匹配来将所述接收的分组(130)与CDRT(118)的一个或多个条目(143)的集合进行比较,其中所述CDRT(118)的每个条目包括将用于确定分组是否与该条目匹配的所述CDRT匹配准则(144)。
20.如权利要求19所述的网络元件,其中所述CDRT(118)的每个条目还包括指示如何在所述PMT(120)中为与所述条目匹配的分组构造条目(147)的格式说明符(145)。
21.如权利要求19所述的网络元件,其中所述分组处理模块(114)还配置成:响应于通过物理网络接口(108)的所述集合中的至少一个物理网络接口从所述控制器(104)接收一个或多个CDRT修改消息(132)的集合,基于CDRT修改消息(132)的所述集合将新条目插入到所述CDRT(118)中。
22.一种充当软件定义网络(100)内的控制器并减少缓慢路径分组处理的负面影响的网络元件(102),所述网络元件(102)包括:
一个或多个物理网络接口(106)的集合;以及
控制模块(104),耦合到物理网络接口(106)的所述集合,并配置成:
存取充当所述软件定义网络(100)中的转发平面的第二网络元件(112)的分组未命中表PMT的未处理条目(148),其中所述PMT(120)的每个条目存储由所述第二网络元件(112)所接收的不与所述第二网络元件(112)的一个或多个流表(116A-116N)的集合内的任何条目(140)匹配的分组的部分(149),其中流表(116A-116N)的所述集合包括一个或多个流条目(140)的集合,流条目(140)的所述集合中的每个流条目包括将对照入局分组的匹配部分(131)进行匹配的匹配准则(141)以及将对具有与该流条目的所述匹配准则(141)匹配的所述匹配部分的分组执行的一个或多个动作(142)的集合,以及
响应于对所述PMT的未处理条目(148)的所述存取,向所述第二网络元件(112)传送指示将一个或多个流条目(140)的集合插入到流表(116A-116N)的所述集合中的一个或多个流表中的命令的一个或多个流条目修改消息(130)。
23.如权利要求22所述的网络元件,其中所述控制模块(104)将通过配置成执行以下步骤来存取所述PMT的未处理条目(148):
向所述第二网络元件(112)传送拉条目请求消息(134),其中每个拉条目请求消息(134)将指示对所述PMT(120)的一个或多个未处理条目(148)的拉请求;以及
从所述第二网络元件(112)接收拉条目响应消息(136),其中每个拉条目响应消息(136)将包括所述PMT(120)的所述未处理条目(148)中的一个或多个未处理条目的集合。
24.如权利要求22所述的网络元件,其中所述控制模块(104)还配置成:
确定所述第二网络元件(112)的装置类型;以及
利用物理网络接口(106)的所述集合向所述第二网络元件(112)传送可配置默认规则表修改消息(132)以使得所述第二网络元件(112)配置可配置默认规则表CDRT(118)中的一个或多个条目(143)的集合,其中所述CDRT包括将对不能根据流表(116A-116N)的集合进行处理的接收分组执行的默认动作,其中基于所述确定的装置类型确定条目(143)的所述集合,并且其中一旦接收不与流表(116A-116N)的所述集合的任何流条目(140)匹配的分组(130),所述第二网络元件(112)便由此配置成:
确定所述分组(130)是否与CDRT条目(143)的所述集合的任何CDRT条目匹配,以及
响应于确定所述分组(130)与CDRT条目(143)的所述集合的第一CDRT条目(139)匹配,
执行由所述第一CDRT条目(139)所指定的一个或多个默认动作(146)的集合,以及
在所述PMT(120)中插入所述分组(130)的至少一部分(149)作为第一条目(147),或者基于所述分组(130)更新所述PMT(120)的现有条目(147)。
25.一种通过软件定义网络(100)内的转发节点(112)执行以便减少缓慢路径分组处理的负面影响的方法,包括:
通过所述转发节点(112)接收第一分组(130);
确定所述第一分组(130)是否与所述转发节点(112)的一个或多个流表(116A-116N)的集合内的任何流条目(140)匹配,其中流表(116A-116N)的所述集合包括一个或多个流条目(140)的集合,流条目(140)的所述集合中的每个流条目包括将对照入局分组(130,132)的匹配部分(131)进行匹配的匹配准则(141)以及将对具有与所述匹配准则(141)匹配的所述匹配部分(131)的分组执行的一个或多个动作(142)的集合;
响应于确定所述第一分组(130)不与流表(116A-116N)的所述集合内的任何流条目(140)匹配,执行未命中过程,所述未命中过程包括:
在分组未命中表PMT(120)中插入所述第一分组(130)的至少一部分(149)作为第一条目(147),其中所述PMT(120)存储由所述转发节点(112)所接收的不与流表(116A-116N)的所述集合内的任何流条目(140)匹配的分组的部分(149);
从控制器(104)接收指示对所述PMT(120)的一个或多个未处理条目(148)的拉请求的拉条目请求消息(134);以及
响应于所述拉条目请求消息(134)的所述接收,向所述控制器(104)传送拉条目响应消息(136),所述拉条目响应消息(136)包括所述PMT(120)的所述第一条目(147)。
26.一种通过在软件定义网络(100)内的服务器(102)上执行的控制器(104)执行以便减少缓慢路径分组处理的负面影响的方法,包括:
向所述软件定义网络(100)中的转发节点(112)传送指示对分组未命中表PMT(120)的一个或多个未处理条目(148)的拉请求的拉条目请求消息(134),其中所述PMT(120)的每个条目存储由所述转发节点(112)所接收的不与所述转发节点(112)的一个或多个流表(116A-116N)的集合内的任何条目(140)匹配的分组的部分(149),其中流表(116A-116N)的所述集合包括一个或多个流条目(140)的集合,流条目(140)的所述集合中的每个流条目包括将对照入局分组(130,132)的匹配部分(131)进行匹配的匹配准则(141)以及将对具有与该流条目的所述匹配准则(141)匹配的所述匹配部分(131)的分组执行的一个或多个动作(142)的集合;
从所述转发节点(112)接收包括所述PMT(120)的一个或多个未处理条目(148)的集合的拉条目响应消息(136);以及
响应于所述拉条目响应消息(136)的接收,向所述转发节点(112)传送指示将一个或多个流条目(140)的集合插入到流表(116A-116N)的所述集合中的一个或多个流表中的命令的一个或多个流条目修改消息(130)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/647100 | 2012-10-08 | ||
US13/647,100 US9071529B2 (en) | 2012-10-08 | 2012-10-08 | Method and apparatus for accelerating forwarding in software-defined networks |
PCT/IB2013/058649 WO2014057375A2 (en) | 2012-10-08 | 2013-09-18 | Method and apparatus for accelerating forwarding in software-defined networks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104704779A CN104704779A (zh) | 2015-06-10 |
CN104704779B true CN104704779B (zh) | 2018-11-09 |
Family
ID=49759461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380052549.9A Active CN104704779B (zh) | 2012-10-08 | 2013-09-18 | 用于加速软件定义网络中的转发的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9071529B2 (zh) |
EP (1) | EP2904745B1 (zh) |
CN (1) | CN104704779B (zh) |
IN (1) | IN2015DN01880A (zh) |
WO (1) | WO2014057375A2 (zh) |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2851214A1 (en) * | 2011-10-05 | 2013-04-11 | Nec Corporation | Load reducing system and load reducing method |
JP5935897B2 (ja) * | 2012-10-10 | 2016-06-15 | 日本電気株式会社 | 通信ノード、通信システム、制御装置、パケット転送方法及びプログラム |
US9548920B2 (en) * | 2012-10-15 | 2017-01-17 | Cisco Technology, Inc. | System and method for efficient use of flow table space in a network environment |
US8929254B2 (en) * | 2012-10-30 | 2015-01-06 | Ciena Corporation | Systems and methods for constrained forwarding based packet network connectivity |
FI20135413L (fi) * | 2013-04-23 | 2014-10-24 | Tellabs Oy | Menetelmä ja laite ohjelmallisesti määriteltävän verkon verkkoelementti konfigurointijärjestelmän optimoimiseksi |
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 | 华为技术有限公司 | 流转发方法、设备及系统 |
US20140365634A1 (en) * | 2013-06-05 | 2014-12-11 | Cisco Technology, Inc. | Programmable Network Analytics Processing via an Inspect/Apply-Action Applied to Physical and Virtual Entities |
US9160650B2 (en) * | 2013-06-17 | 2015-10-13 | Futurewei Technologies, Inc. | Enhanced flow entry table cache replacement in a software-defined networking switch |
US9755963B2 (en) * | 2013-07-09 | 2017-09-05 | Nicira, Inc. | Using headerspace analysis to identify flow entry reachability |
CN104348727B (zh) * | 2013-08-05 | 2018-05-15 | 新华三技术有限公司 | OpenFlow网络中的流表表项处理方法及设备 |
US9680738B2 (en) * | 2013-09-15 | 2017-06-13 | Nicira, Inc. | Tracking prefixes of values associated with different rules to generate flows |
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 |
US9680748B2 (en) * | 2013-09-15 | 2017-06-13 | Nicira, Inc. | Tracking prefixes of values associated with different rules to generate flows |
US9686185B2 (en) * | 2013-09-15 | 2017-06-20 | Nicira, Inc. | Generating flows using common match techniques |
US10212083B2 (en) * | 2013-10-30 | 2019-02-19 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Openflow data channel and control channel separation |
EP2884694B1 (en) * | 2013-12-12 | 2017-08-23 | Alcatel Lucent | A method for providing control in a communication network |
US9569368B2 (en) | 2013-12-13 | 2017-02-14 | Nicira, Inc. | Installing and managing flows in a flow table cache |
US9996467B2 (en) | 2013-12-13 | 2018-06-12 | Nicira, Inc. | Dynamically adjusting the number of flows allowed in a flow table cache |
US20150180769A1 (en) * | 2013-12-20 | 2015-06-25 | Alcatel-Lucent Usa Inc. | Scale-up of sdn control plane using virtual switch based overlay |
WO2015113191A1 (zh) * | 2014-01-28 | 2015-08-06 | 华为技术有限公司 | 处理规则的修改方法、装置及设备 |
US20150304281A1 (en) * | 2014-03-14 | 2015-10-22 | Avni Networks Inc. | Method and apparatus for application and l4-l7 protocol aware dynamic network access control, threat management and optimizations in sdn based networks |
US9680708B2 (en) | 2014-03-14 | 2017-06-13 | Veritas Technologies | Method and apparatus for cloud resource delivery |
US9985896B2 (en) | 2014-03-31 | 2018-05-29 | Nicira, Inc. | Caching of service decisions |
EP3130133B1 (en) * | 2014-04-11 | 2019-11-06 | Nokia Solutions and Networks GmbH & Co. KG | Multi tenancy in software defined networking |
WO2015161409A1 (zh) * | 2014-04-21 | 2015-10-29 | 华为技术有限公司 | 一种负载均衡的实现方法及设备、系统 |
US9407541B2 (en) * | 2014-04-24 | 2016-08-02 | International Business Machines Corporation | Propagating a flow policy by control packet in a software defined network (SDN) based network |
CN105099920A (zh) | 2014-04-30 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种设置sdn流表项的方法和装置 |
US9491031B2 (en) * | 2014-05-06 | 2016-11-08 | At&T Intellectual Property I, L.P. | Devices, methods, and computer readable storage devices for collecting information and sharing information associated with session flows between communication devices and servers |
US10291416B2 (en) | 2014-05-15 | 2019-05-14 | Hewlett Packard Enterprise Development Lp | Network traffic tuning |
WO2015174988A1 (en) | 2014-05-15 | 2015-11-19 | Hewlett-Packard Development Company, L.P. | Network scheduling |
WO2015195151A1 (en) * | 2014-06-18 | 2015-12-23 | Hewlett-Packard Development Company, L.P. | Preventing flow table misses in a software defined network |
WO2015199743A1 (en) | 2014-06-25 | 2015-12-30 | Hewlett-Packard Development Company, L.P. | Selecting an optimal network device for reporting flow table misses upon expiry of a flow in a software defined network |
CN105337852B (zh) * | 2014-07-03 | 2019-11-05 | 华为技术有限公司 | 更新业务流报文的处理方式的方法及装置 |
US20160028620A1 (en) * | 2014-07-28 | 2016-01-28 | Alcatel-Lucent Usa Inc. | Software-defined networking controller cache |
CN105684382A (zh) * | 2014-08-11 | 2016-06-15 | 华为技术有限公司 | 报文的控制方法、交换机及控制器 |
US9736057B2 (en) * | 2014-08-18 | 2017-08-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Forwarding packet fragments using L4-L7 headers without reassembly in a software-defined networking (SDN) system |
JP2016048854A (ja) * | 2014-08-27 | 2016-04-07 | 横河電機株式会社 | データ転送システム及び方法 |
TWI542172B (zh) * | 2014-09-22 | 2016-07-11 | 財團法人工業技術研究院 | 路徑更換方法與系統及其控制器 |
US10644950B2 (en) | 2014-09-25 | 2020-05-05 | At&T Intellectual Property I, L.P. | Dynamic policy based software defined network mechanism |
WO2016048389A1 (en) | 2014-09-26 | 2016-03-31 | Hewlett Packard Enterprise Development Lp | Maximum transmission unit installation for network traffic along a datapath in a software defined network |
US11178051B2 (en) | 2014-09-30 | 2021-11-16 | Vmware, Inc. | Packet key parser for flow-based forwarding elements |
CN105791160B (zh) * | 2014-12-25 | 2019-03-05 | 中国移动通信集团公司 | 软件定义网络中事务的处理方法、设备及系统 |
WO2016114750A1 (en) * | 2015-01-12 | 2016-07-21 | Hewlett Packard Enterprise Development Lp | Data link layer information |
CN104582004B (zh) * | 2015-01-13 | 2018-04-06 | 成都西加云杉科技有限公司 | 基于sdn的wlan分层组网系统及方法 |
US9787605B2 (en) | 2015-01-30 | 2017-10-10 | Nicira, Inc. | Logical router with multiple routing components |
WO2016119213A1 (zh) * | 2015-01-30 | 2016-08-04 | 华为技术有限公司 | 数据处理的方法和设备 |
US10608932B2 (en) | 2015-02-28 | 2020-03-31 | Hewlett Packard Enterprise Development Lp | Refresh flow entry |
US9467378B1 (en) * | 2015-03-01 | 2016-10-11 | Netronome Systems, Inc. | Method of generating subflow entries in an SDN switch |
WO2016141996A1 (en) * | 2015-03-12 | 2016-09-15 | Nec Europe Ltd. | Method for forwarding data in a network, forwarding element for forwarding data and a network |
US9912613B2 (en) * | 2015-03-30 | 2018-03-06 | International Business Machines Corporation | Dynamic service orchestration within PaaS platforms |
US20160294625A1 (en) * | 2015-03-31 | 2016-10-06 | Telefonaktiebolaget L M Ericsson (Publ) | Method for network monitoring using efficient group membership test based rule consolidation |
US10044676B2 (en) | 2015-04-03 | 2018-08-07 | Nicira, Inc. | Using headerspace analysis to identify unneeded distributed firewall rules |
US9641436B1 (en) * | 2015-05-29 | 2017-05-02 | Netronome Systems, Inc. | Generating a flow ID by passing packet data serially through two CCT circuits |
WO2016200399A1 (en) * | 2015-06-12 | 2016-12-15 | Hewlett Packard Enterprise Development Lp | Application identification cache |
CN105119911B (zh) * | 2015-07-28 | 2018-10-12 | 上海斐讯数据通信技术有限公司 | 一种基于sdn流的安全认证方法及系统 |
US9654424B2 (en) * | 2015-07-31 | 2017-05-16 | Nicira, Inc. | Managed forwarding element with conjunctive match flow entries |
US10348619B2 (en) | 2015-07-31 | 2019-07-09 | Nicira, Inc. | Generating conjunctive match flow entries |
CN106713182B (zh) | 2015-08-10 | 2020-10-09 | 华为技术有限公司 | 一种处理流表的方法及装置 |
CN106487756B (zh) * | 2015-08-28 | 2019-12-06 | 华为技术有限公司 | 一种检测交换机信息泄露的方法及装置 |
US10680940B2 (en) * | 2015-09-10 | 2020-06-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Optimized complex event processing in a software-defined network |
CN106549774A (zh) * | 2015-09-17 | 2017-03-29 | 中兴通讯股份有限公司 | 一种基于软件定义网络的链路故障上报方法和转发设备 |
US9860152B2 (en) | 2015-09-21 | 2018-01-02 | Telefonaktiebolaget L M Ericsson (Publ) | Non-intrusive method for testing and profiling network service functions |
CN107615710B (zh) * | 2015-10-20 | 2020-11-17 | 华为技术有限公司 | Sdn交换机中的直接回复动作 |
CN105553689B (zh) * | 2015-12-03 | 2018-12-28 | 中国科学院信息工程研究所 | 一种openflow消息中流规则等价快速判定方法 |
US10171336B2 (en) * | 2015-12-16 | 2019-01-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Openflow configured horizontally split hybrid SDN nodes |
CN108476179A (zh) * | 2015-12-17 | 2018-08-31 | 慧与发展有限责任合伙企业 | 简化的正交网络策略集选择 |
US10484285B2 (en) * | 2015-12-30 | 2019-11-19 | Argela Yazilim ve Bilisim Teknolojileri San. ve Tic. A.S. | System, method and article of manufacture for using control plane for critical data communications in software-defined networks |
WO2017118875A1 (en) * | 2016-01-05 | 2017-07-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Mechanism to detect control plane loops in a software defined networking (sdn) network |
US10362373B2 (en) * | 2016-01-07 | 2019-07-23 | Cisco Technology, Inc. | Network telemetry with byte distribution and cryptographic protocol data elements |
WO2017121471A1 (en) * | 2016-01-13 | 2017-07-20 | Huawei Technologies Co., Ltd. | Dynamic forwarding rules in sdn |
US10250449B2 (en) | 2016-03-08 | 2019-04-02 | Nicira, Inc. | Method and mechanism for efficiently managing flows |
CN106789388B (zh) * | 2016-03-25 | 2020-07-03 | 新华三技术有限公司 | 报文检测内容的确定方法及装置 |
CN106059964B (zh) * | 2016-07-28 | 2020-01-21 | 锐捷网络股份有限公司 | 报文转发方法及装置 |
US10877670B1 (en) | 2016-11-28 | 2020-12-29 | Barefoot Networks, Inc. | Dynamically reconfiguring data plane of forwarding element to adjust data plane throughput based on detected conditions |
JP6332497B2 (ja) * | 2017-02-22 | 2018-05-30 | 横河電機株式会社 | プロセス制御システム及びデータ転送方法 |
US10587479B2 (en) | 2017-04-02 | 2020-03-10 | Nicira, Inc. | GUI for analysis of logical network modifications |
CN108696434B (zh) | 2017-04-11 | 2022-01-14 | 华为技术有限公司 | 一种转发数据报文的方法、设备和系统 |
US11888899B2 (en) * | 2018-01-24 | 2024-01-30 | Nicira, Inc. | Flow-based forwarding element configuration |
US10848420B2 (en) * | 2018-02-12 | 2020-11-24 | Cisco Technology, Inc. | Dynamic forwarding features in network elements |
US11005777B2 (en) | 2018-07-10 | 2021-05-11 | At&T Intellectual Property I, L.P. | Software defined prober |
US11252258B2 (en) * | 2018-09-27 | 2022-02-15 | Hewlett Packard Enterprise Development Lp | Device-aware dynamic protocol adaptation in a software-defined network |
CN109905364B (zh) * | 2019-01-08 | 2021-04-20 | 山东省计算中心(国家超级计算济南中心) | 一种基于sdn架构的流媒体数据包的传输方法及系统 |
US20200274752A1 (en) * | 2019-02-27 | 2020-08-27 | Collinear Networks, Inc. | Network node management and control in a telecommunication network |
CN110932968B (zh) * | 2019-11-18 | 2021-05-14 | 华南理工大学 | 一种流量转发方法及装置 |
US11323372B2 (en) * | 2020-04-21 | 2022-05-03 | Mellanox Technologies Ltd. | Flexible steering |
US11405299B2 (en) * | 2020-06-03 | 2022-08-02 | Cisco Technology, Inc. | Determining node behavior in deterministic networks |
CN111817960B (zh) * | 2020-07-23 | 2022-02-01 | 杭州迪普信息技术有限公司 | 流控设备的报文转发方法及装置 |
US11374859B2 (en) * | 2020-08-04 | 2022-06-28 | Pensando Systems, Inc. | Flow table programming using flow miss metadata and burst action assist via CPU offload |
US20220052941A1 (en) * | 2020-08-14 | 2022-02-17 | Arista Networks, Inc. | Leveraging a hybrid usage of software and hardware to support a multi-tiered nexthop failover to backup nexthop handling |
WO2022092788A1 (en) * | 2020-10-29 | 2022-05-05 | Samsung Electronics Co., Ltd. | Methods and system for securing a sdn controller from denial of service attack |
US11588740B2 (en) | 2021-04-09 | 2023-02-21 | Microsoft Technology Licensing, Llc | Scaling host policy via distribution |
US11652749B2 (en) | 2021-04-09 | 2023-05-16 | Microsoft Technology Licensing, Llc | High availability for hardware-based packet flow processing |
US11799785B2 (en) | 2021-04-09 | 2023-10-24 | Microsoft Technology Licensing, Llc | Hardware-based packet flow processing |
US11522774B2 (en) * | 2021-04-12 | 2022-12-06 | Nxp B.V. | Network switch |
GB202105736D0 (en) | 2021-04-22 | 2021-06-09 | Microsoft Technology Licensing Llc | Hardware and software router |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1768516A (zh) * | 2003-03-28 | 2006-05-03 | 丛林网络公司 | 智能集成网络安全设备 |
WO2012090355A1 (en) * | 2010-12-28 | 2012-07-05 | Nec Corporation | Communication system, forwarding node, received packet process method, and program |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102349268B (zh) * | 2009-03-09 | 2015-11-25 | 日本电气株式会社 | OpenFlow通信系统和OpenFlow通信方法 |
KR101408108B1 (ko) * | 2009-09-14 | 2014-06-17 | 닛본 덴끼 가부시끼가이샤 | 통신 시스템, 노드, 제어 장치, 및 제어 방법 |
JP5672558B2 (ja) * | 2009-12-17 | 2015-02-18 | 日本電気株式会社 | ネットワークシステム、ネットワーク制御装置、及び制御方法 |
US8503307B2 (en) * | 2010-05-10 | 2013-08-06 | Hewlett-Packard Development Company, L.P. | Distributing decision making in a centralized flow routing system |
US9185056B2 (en) * | 2011-09-20 | 2015-11-10 | Big Switch Networks, Inc. | System and methods for controlling network traffic through virtual switches |
US9088584B2 (en) * | 2011-12-16 | 2015-07-21 | Cisco Technology, Inc. | System and method for non-disruptive management of servers in a network environment |
-
2012
- 2012-10-08 US US13/647,100 patent/US9071529B2/en active Active
-
2013
- 2013-09-18 IN IN1880DEN2015 patent/IN2015DN01880A/en unknown
- 2013-09-18 CN CN201380052549.9A patent/CN104704779B/zh active Active
- 2013-09-18 WO PCT/IB2013/058649 patent/WO2014057375A2/en active Application Filing
- 2013-09-18 EP EP13803227.1A patent/EP2904745B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1768516A (zh) * | 2003-03-28 | 2006-05-03 | 丛林网络公司 | 智能集成网络安全设备 |
WO2012090355A1 (en) * | 2010-12-28 | 2012-07-05 | Nec Corporation | Communication system, forwarding node, received packet process method, and program |
Non-Patent Citations (2)
Title |
---|
"OpenFlow Switch Specification";OpenFlow;《The Open Networking Foundation》;20120906;正文第2、5.1-5.4、6.1.1-6.1.2、A.3.2-A.3.7、B.11.2节,图1-3和表1 * |
"OpenFlow Switch Specification"Version 1.3.1;OpenFlow;《The Open Networking Foundation》;20120906;正文第2、5.1-5.4、6.1.1-6.1.2、A.3.2-A.3.7、B.11.2节,图1-3和表1 * |
Also Published As
Publication number | Publication date |
---|---|
EP2904745A2 (en) | 2015-08-12 |
WO2014057375A3 (en) | 2014-06-05 |
IN2015DN01880A (zh) | 2015-08-07 |
EP2904745B1 (en) | 2017-07-05 |
CN104704779A (zh) | 2015-06-10 |
WO2014057375A2 (en) | 2014-04-17 |
US9071529B2 (en) | 2015-06-30 |
US20140098669A1 (en) | 2014-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104704779B (zh) | 用于加速软件定义网络中的转发的方法和设备 | |
US9736263B2 (en) | Temporal caching for ICN | |
CN103999431B (zh) | 软件定义的网络中灵活的并且可扩展的流处理系统 | |
CN103999430B (zh) | 用于软件定义的网络中灵活及可扩展流处理的转发元件 | |
TW202034737A (zh) | 在網路運算環境中的路由最佳化 | |
CN108989213A (zh) | 使用虚拟节点之间的所选择的结构路径传输lsp设置 | |
CN108989212A (zh) | 多个下一跳的路由协议信令及其关系 | |
CN108989203A (zh) | 通告用于虚拟节点中的服务路由的选定结构路径 | |
CN108989202A (zh) | 用于虚拟节点的基于结构路径上下文的转发 | |
JP6248938B2 (ja) | 通信システム、仮想ネットワーク管理装置、仮想ネットワークの管理方法及びプログラム | |
CN107566440A (zh) | 软件定义的网络环境中服务的自动发现和自动扩缩 | |
US10728139B2 (en) | Flexible software-defined networking (SDN) protocol for service provider networks | |
CN106063195A (zh) | 具有单独控制设备和转发设备的网络中的控制设备发现 | |
EP2552060A1 (en) | Information system, control apparatus, method of controlling virtual network, and program | |
CN105591974B (zh) | 报文处理方法、装置及系统 | |
CN107005439A (zh) | 用于在线服务链接的被动性能测量 | |
CN104811393B (zh) | 组播报文复制处理方法、装置及开放流控制器 | |
CN110178342A (zh) | Sdn网络的可扩缩应用级别监视 | |
CN108781185A (zh) | 提供用于网络设备的可编程包分类框架的系统和方法 | |
CN109905251A (zh) | 网络管理方法、装置、电子设备和存储介质 | |
CN109691026A (zh) | 用于更新多个多协议标签切换(mpls)双向转发检测(bfd)会话的方法和装置 | |
CN105830500A (zh) | 基于sctp/x2窥探的拓扑发现 | |
GB2514675A (en) | Querying a traffic forwarding table | |
CN105637806B (zh) | 网络拓扑确定方法和装置、集中式网络状态信息存储设备 | |
CN104158736B (zh) | 一种确定下一跳、发布路由信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |