CN104145457B - 操作包含影子表的转发元件的方法以及相关的转发元件 - Google Patents
操作包含影子表的转发元件的方法以及相关的转发元件 Download PDFInfo
- Publication number
- CN104145457B CN104145457B CN201380012982.XA CN201380012982A CN104145457B CN 104145457 B CN104145457 B CN 104145457B CN 201380012982 A CN201380012982 A CN 201380012982A CN 104145457 B CN104145457 B CN 104145457B
- Authority
- CN
- China
- Prior art keywords
- packet
- shadow
- address
- rule
- 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.)
- Active
Links
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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
Abstract
可提供方法来在包含转发平面和控制平面的网络的转发平面中操作转发元件。方法可包含通过转发元件的输入/输出端口来接收分组并且尝试匹配分组与转发元件的流表。响应于分组未命中与流表的匹配,转发元件可尝试匹配分组与转发元件的影子表。响应于分组与影子表匹配,可基于来自影子表的匹配的影子规则在流表中安装新的流规则。还讨论了有关的转发元件。
Description
技术领域
本公开指向通信,并且更特别地指向网络通信方法以及相关网络元件。
背景技术
大多数现代以太网转发元件(例如,交换机和路由器)包含流表(通常从TCAM或三元内容可寻址存储器建立),流表以线路速率运行来实现防火墙、NAT(网络地址转换)和QoS(服务质量),并且收集统计。虽然不同供应商的流表可以不同,但是OpenFlow开发在许多交换机和路由器中运行的一组公共功能。
OpenFlow提供开放协议来对不同的转发元件(例如,交换机和路由器)中的流表进行编程。例如,网络管理者可以将业务划分成生产流和研究流,和/或研究员可以通过选择他们的分组遵循的路线以及他们接收的处理来控制他们自己的流。以此方式,研究员可以尝试新的路由协议、安全模型、寻址方案以及甚至IP(因特网协议)的备选。在相同的网络上,生产业务可以是传统地隔离并且处理。
OpenFlow转发元件(例如,交换机)的数据路径可包含流表,以及与包含在流表中的每个流规则(也被称作流条目)关联的动作。OpenFlow转发元件所支持的一组动作可以是可扩展的。为了高性能和低成本,数据路径可具有仔细划定的灵活度,这可意味着放弃规定每个分组的任意处理的能力并且寻求更有限的(但仍然有用的)动作范围。
OpenFlow转发元件可包含具有多个流规则(具有与每个流规则关联的动作)的流表来告诉转发元件如何处理相应流,将交换机连接到远程OpenFlow控制器的安全信道(允许使用OpenFlow协议(它为控制器提供与转发元件通信的开放和标准方式)在控制器与转发元件之间发送命令和分组)。通过规定标准接口(OpenFlow协议)(可使得用外部控制器通过标准接口来定义转发元件流表中的规则/条目),研究员可不需要个别地对OpenFlow转发元件进行编程。
OpenFlow转发元件可包含一个或多个流表和组表(它们可执行分组查找和转发)以及到外部OpenFlow控制器的OpenFlow信道。OpenFlow控制器经由OpenFlow协议来管理转发元件。使用此协议,控制器可以添加、更新、并且删除流规则/条目,反应性地(响应于在转发元件处接收的分组)和主动地(例如,对新的转发元件的流表进行编程)。
转发元件中的每个流表可包含一组规则/条目。每个流规则/条目可包含匹配的字段、计数器和应用于匹配分组的一组指令。
在转发元件处的匹配可开始于第一流表(也被称作主流表)并且可继续到转发元件的附加的流表。流规则/条目以优先级次序匹配数据分组,使用每个表中的第一匹配规则/条目。如果为流表中的数据分组找到匹配的规则/条目,则为数据分组执行与具体流规则/条目关联的指令。如果没有找到流表中的数据分组的匹配,则结果可取决于转发元件配置。可在OpenFlow信道上将数据分组转发到控制器,可分出数据分组,或匹配数据分组的尝试可继续到转发元件的下一流表。
与每个流规则/条目关联的指令描述数据分组转发、数据分组修改、组表处理和管线处理。管线处理指令允许数据分组被发送到后续表用于进一步处理并且允许信息(例如,以元数据的形式)在表之间通信。当与匹配的流规则/条目关联的指令集不规定下一表时,可停止表管线处理。在此点上,通常可修改并且转发数据分组。
流规则/条目可将相应数据分组转发到端口。这通常是物理端口,但它还可以是由交换机定义的虚拟端口或由OpenFlow交换机规范定义的预留虚拟端口。预留虚拟端口可规定一般转发动作,例如,使用非OpenFlow方法来发送到控制器、泛洪或转发,例如“正常”交换机处理,而交换机定义的虚拟端口可规定链路聚合组、隧道或回送接口。
流规则/条目还可指向规定附加的处理的群组。群组表示用于泛洪的动作的集合,以及更复杂的转发语义(例如,多路径、快速重新路由和链路聚合)。作为间接的一般层,群组也使多个流能够转发到单个标识符(例如,转发到公共下一跳的IP)。此抽象可允许有效率地改变跨流的公共输出动作。
组表可包含组条目,其中每个组条目包含动作栏目的列表(具有依赖于组类型的具体语义)。一个或多个动作栏目中的动作适用于发送到群组的数据分组。
例如,在“OpenFlow交换机规范”,实现版本1.1.0(有线协议0x02),2011年2月28日中,并且参考McKeown等的标题为“OpenFlow:Enabling Innovation In CampusNetworks”,2008年3月14日,讨论OpenFlow转发元件(例如,交换机和/或路由器)、控制器和协议。以上两个参考的文档的公开据此通过引用全部并入本文。
OpenFlow信道是在OpenFlow接口上连接OpenFlow转发元件与控制器的接口。接口自身可以是具体的实现,并且它可使用TCP(传输控制协议)连接或SCTP(流控制传输协议)连接来实现。此外,TLS(传输层安全)可用于发送消息(消息是由控制器加密并且由转发元件解密)。
尽管有以上讨论的网络,在本领域中继续存在对包含转发元件和控制器的网络中的改进操作的需要。
发明内容
因此目标是处理上述缺点中的至少一些和/或改进网络性能。
根据一些实施例,可提供方法来在包含转发平面和控制平面的网络的转发平面中操作转发元件。方法可包含通过转发元件的输入/输出端口来接收分组并且尝试匹配分组与转发元件的流表。响应于分组未命中与流表的匹配,可执行匹配分组与转发元件的影子表的尝试。响应于分组与影子表匹配,可基于来自影子表的匹配的影子规则在流表中安装新的流规则。
此外,安装新的流规则可包含基于来自影子表的匹配的影子规则在流表中安装新的流规则而不将分组从转发元件传送到网络的控制平面。可根据来自影子表的匹配的影子规则和/或根据新的流规则通过转发元件来处理分组。通过使用影子规则来安装流规则,可减少转发元件与控制平面之间的通信业务,和/或可减少在控制平面处的处理负担。
响应于分组未命中与流表的匹配以及响应于分组未命中与影子表的匹配,可将分组内(packet-in)消息传送到网络的控制平面中的控制器,其中分组内消息包含分组。
分组可以是数据分组,并且响应于数据分组未命中与流表的匹配以及响应于数据分组未命中与影子表的匹配,转发元件的学习表可更新为关联数据分组的源与输入/输出端口。此外,数据分组可以是第一数据分组。响应于从对应于分组内消息的控制器接收影子修改消息,可在影子表中安装影子规则,它关联来自由第一数据分组的目的地地址识别的源的后续数据分组与转发元件的虚拟内部端口。在安装影子规则之后,可通过转发元件的输入/输出端口来接收第二数据分组,第二数据分组具有匹配第一数据分组的目的地地址的源地址。可执行匹配第二数据分组与转发元件的流表的尝试。响应于第二数据分组未命中与流表的匹配,可执行匹配第二数据分组与转发元件的影子表的尝试。响应于第二数据分组与影子表的影子规则匹配,可基于来自影子表的匹配的影子规则在流表中安装新的流规则。可根据来自影子表的匹配的影子规则和/或根据新的流规则通过转发元件来处理第二数据分组。
分组可以是在转发元件的控制端口处接收的第一控制分组,用于在客户端装置与服务器装置之间的会话。响应于从对应于分组内消息的控制器接收影子修改消息,可在影子表中安装影子规则,影子规则匹配在控制端口处接收的并且具有匹配第一控制分组的源地址和/或目的地地址的源地址和/或具有匹配第一控制分组的源地址和/或目的地地址的目的地地址的后续控制分组,其中影子规则从匹配控制分组来识别端口命令。在安装影子规则之后,可通过转发元件的控制端口来接收第二控制分组,第二控制分组具有匹配第一控制分组的源地址和/或目的地地址的源地址和/或匹配第一控制分组的源地址和/或目的地地址的目的地地址。可执行匹配第二控制分组与转发元件的流表的尝试。响应于第二控制分组未命中与流表的匹配,可执行匹配第二控制分组与转发元件的影子表的尝试。响应于第二控制分组匹配影子表的影子规则,可执行影子规则的表达引擎来识别第二控制分组的命令类型。响应于识别第二控制分组的命令类型,可基于第二控制分组的命令类型在流表中安装新的流规则。可将第二控制分组从转发元件的输入/输出端口转发到目的地。
第二控制分组可包含端口命令控制分组,其识别用于在客户端与服务器装置之间传送的后续数据分组的数据端口,并且安装新的流规则可包含安装新的流规则来定义用于在客户端与服务器装置之间传送的后续数据分组的针孔。在安装新的流规则之后,可接收具有匹配第一控制分组的源地址和/或目的地地址的源地址和/或具有匹配第一控制分组的源地址和/或目的地地址的目的地地址的数据分组。可执行匹配数据分组与转发元件的流表的尝试,以及响应于数据分组与流表的新的流规则匹配,可根据由新的流规则定义的针孔来处理数据分组。
分组可以是第一分组,并且响应于从对应于分组内消息的控制器接收影子修改消息,可在影子表中安装影子规则,影子规则定义地址和/或端口的范围/列表以及与第一分组的源地址和/或目的地地址关联的新的流规则。在安装影子规则之后,可通过转发元件的输入/输出端口来接收第二分组,第二分组具有匹配第一分组的源地址和/或目的地地址的源地址和/或匹配第一分组的源地址和/或目的地地址的目的地地址。
可执行匹配第二分组与转发元件的流表的尝试,并且响应于第二分组未命中与流表的匹配,可执行匹配第二分组与转发元件的影子表的尝试。响应于第二分组匹配影子表的影子规则,第二分组的源端口和/或目的地端口可与由影子规则定义的地址和/或端口的范围/列表比较。响应于第二分组的源端口和/或目的地端口匹配由影子规则定义的地址和/或端口的范围/列表,可在流表中安装新的流规则用于具有匹配第一分组的源地址和/或目的地地址的源地址和/或具有匹配第一分组的源地址和/或目的地地址的目的地地址并且具有来自第二分组的地址和/或端口的分组。可将第二分组从转发元件的输入/输出端口转发到目的地。在安装新的流规则之后,可接收具有匹配第一分组的源地址和/或目的地地址的源地址和/或具有匹配第一分组的源地址和/或目的地地址的目的地地址并且具有来自第二分组的地址和/或端口的第三分组。可执行匹配第三分组与转发元件的流表的尝试,并且响应于数据分组与流表的新的流规则匹配,可根据新的流规则来处理数据分组。
网络可以是OpenFlow网络,其中转发平面作为OpenFlow转发平面,其中转发元件作为OpenFlow转发元件,其中控制平面作为OpenFlow控制平面,并且其中控制器作为OpenFlow控制器。此外,将分组内消息传送到控制器可包含在OpenFlow转发元件与OpenFlow控制器之间的OpenFlow信道上传送分组内消息。此外,可响应于分组与流表匹配根据流表的匹配的流规则通过转发元件来处理分组。
根据一些其它实施例,可在包含转发平面和控制平面的网络的转发平面中提供转发元件。转发元件可包含多个输入/输出端口,配置为提供与转发平面的其它转发元件的通信,以及处理器,耦合到多个输入/输出端口。处理器可配置为通过转发元件的输入/输出端口来接收分组;尝试匹配分组与转发元件的流表;响应于分组未命中与流表的匹配,尝试匹配分组与转发元件的影子表;以及响应于分组与影子表匹配,基于来自影子表的匹配的影子规则在流表中安装新的流规则。
附图说明
包含来提供本公开的进一步理解并且并入以及构成本申请的一部分的附图图示本发明的某些非限制性实施例。在图中:
图1是图示根据一些实施例的包含控制器和转发元件的网络的框图;
图2是图示根据一些实施例的图1的转发元件的框图;
图3是图示根据一些实施例的图1的控制器的框图;
图4-图6是图示根据一些实施例的转发元件的操作的流程图;以及
图7是图示在客户端与服务器装置之间双向传递业务的规则的图表。
具体实施方式
现在将在下文中参考附图更完整地描述本发明的实施例,附图中示出本发明的实施例的示例。然而,本发明可以用不同的形式来实现并且不应解释为限制于本文阐述的实施例。也应注意到这些实施例不是相互排斥的。来自一个实施例的部件可默认假定为在一个或多个其它实施例中出现/使用。
根据在本文中讨论的一些实施例,OpenFlow转发元件103可耦合到在OpenFlow信道上的单个OpenFlow控制器101。根据一些其它实施例,OpenFlow协议可扩展以提供来自一个OpenFlow控制器的网络转发平面中的OpenFlow转发元件到网络控制平面中的另一OpenFlow控制器之间的连接的改变方向,如在美国申请号13/369,993,于2012年2月9日提交的,并且标题为“Methods of Redirecting Network Forwarding Elements andRelated Forwarding Elements and Controllers”中讨论的。
在一些OpenFlow网络中,OpenFlow转发元件具有包含多个流规则/条目的主流表,并且OpenFlow管线定义在OpenFlow转发元件内如何处理分组。如果在主流表中分组不匹配,则分组可视为表未命中。
当分组不匹配主流表的任何流规则/条目时,可发生主流表未命中,并且导致主流表未命中的分组的处理可取决于主流表的配置。默认可以是使用分组内消息将分组发送到控制器或分出分组。在OpenFlow1.1中,另一选项是如果在管线中有多于一个流表时,则将继续下一流表的分组处理。
在OpenFlow1.1中,可节省到达入口端口(也被称作输入端口)的每个分组并且将其传递到下一表用于进一步处理。分组与流表中的流规则/条目匹配,转发元件对由匹配分组的任何流规则/条目定义的分组执行动作,并且可如以上所论述的处理导致表未命中的分组。
可通过匹配分组的报头与主流表中的流规则/条目来处理到达OpenFlow转发元件的入口/输入端口的分组。可根据OpenFlow规则来应用匹配准则。如果有匹配(也被称作命中),执行匹配的流规则/条目的对应指令。如果分组不匹配主流表的任何流规则/条目(也被称作未命中),转发元件可形成包含分组的分组内消息并且然后将分组内消息传送到控制器。
如上所述,OpenFlow控制器可在OpenFlow转发元件的流表中对规则进行编程,并且转发元件可限制可包含在其流表中的流规则/条目的数量。因此,转发元件可能无法存储用于它可能需要促进的所有可能的通信的流规则/条目。其结果是,一些流的分组(例如,新的流的第一分组)可在转发元件的主流表中未命中,并且未命中可触发控制器将新的流规则/条目编程到主流表(使用流修改消息)来通过转发元件定义新的流。此外,可需要控制器将未命中的分组从分组内消息转发到转发元件的正确输出端口。
因此,端点装置之间的新的分组流的新的流规则/条目可用于控制端点装置之间的数据分组的流。在时间段到期而没有接收到匹配新的流规则/条目的任何分组时,可从主流表删除流规则/条目来为其它流规则/条目腾出空间。
在一些OpenFlow网络中,因此可需要控制器为每个新的分组流和过期的分组流的每个后续发生编程并且重新编程主流表,并且还可需要控制器为每个新的分组流和过期的分组流的每个后续发生将初始分组传送到转发元件的正确输出端口。在一些部署场景和/或业务状况中,分组内消息、流修改消息和在转发元件与控制器之间的转发的分组的此业务会淹没转发元件与控制器之间的OpenFlow信道。
图1是图示网络105的框图,网络105包含控制平面中的多个OpenFlow控制器101-1到101-n(控制器)以及转发平面中的多个OpenFlow转发元件103-1到103-m(转发元件),OpenFlow控制器101-1到101-n与OpenFlow转发元件103-1到103-m之间的通信是根据OpenFlow协议通过其间的OpenFlow信道(信道)来提供。例如,可使用传输控制协议(TCP)连接和/或流控制传输协议(SCTP)连接来实现OpenFlow信道,并且传输层安全(TLS)可用于在相应控制器与转发元件之间通信加密的消息。此外,可在转发平面中的OpenFlow转发元件103-1到103-m之间提供通信路径111(与OpenFlow信道分开)来支持转发元件之间的数据分组的传送。通信路径111还可通过转发元件103-1到103-m中的一个或多个来提供两个或者更多远程通信装置/节点(例如,客户端装置和服务器装置)之间的耦合。此外,可在控制平面中的控制器101-1到101-n之间提供通信路径115(与OpenFlow信道分开)来支持控制器之间的协调。
图2是图示图1的OpenFlow转发元件103的元件的框图。如所示的,每个转发元件103可包含耦合到一个或多个输入/输出端口209的处理器207。存储器211可耦合到处理器207,并且存储器211可用于存储流表201、影子表221和/或学习表223。一个或多个流表201可耦合到处理器207,每个流表可包含多个流规则/条目,并且每个流规则/条目可定义用于处理/转发匹配相应流规则/条目的数据分组的指令。换句话说,每个流规则/条目可定义相应数据流的数据分组的处理。来自其它转发元件的数据分组可在相应输入/输出端口209处接收,根据来自流表201的相应流规则/条目由处理器207处理,并且从相应输入/输出端口209传送到其它转发元件。此外,处理器207可耦合到一个或多个影子表221和/或学习表223,并且处理器207还可包含处理机208,其配置为对影子编程、转发和/或学习表221/223和/或根据影子、转发和/或学习表221/223来处理数据分组。
每个转发元件103还可包含组表215和OpenFlow安全信道接口203(信道接口)。更特别地,OpenFlow安全信道接口203可通过图1的OpenFlow信道来提供处理器207与相应OpenFlow控制器101之间的通信。例如,OpenFlow安全信道接口203可使用TLS来在OpenFlow信道上将消息加密/发送到相应控制器和/或在OpenFlow信道上接收/解密由相应控制器传送的消息。例如,在通过输入端口209中的一个来接收数据分组并且处理器207无法匹配数据分组与流表201和/或影子表221中的流规则/条目的情况下,处理器207可在OpenFlow信道上通过OpenFlow安全信道接口203将包含数据分组的分组内消息传送到相应控制器。在另一方向中,处理器207可通过OpenFlow信道接口203在OpenFlow信道上从相应控制器接收消息来改变(例如,添加、更新和/或删除)流表201的流规则/条目和/或影子表221的影子规则/条目。
图3是图示图1的OpenFlow控制器101的元件的框图。如所示的,每个控制器101可包含耦合在OpenFlow安全信道接口303(信道接口)与控制器接口309之间的处理器307。OpenFlow安全信道接口303可通过图1的OpenFlow信道来提供处理器307与相应OpenFlow转发元件103之间的通信。例如,OpenFlow安全信道接口303可使用TLS在OpenFlow信道上将消息加密/发送到相应转发元件和/或在OpenFlow信道上接收/解密由相应转发元件传送的消息。OpenFlow控制器101还可包含耦合到处理器307的存储器311。
以下将相对于图4、图5和图6的流程图来更详细地讨论图1、图2和图3的OpenFlow转发元件103(转发元件)和OpenFlow控制器101(控制器)的操作。此外,图1的每个转发元件可具有如以上相对于图2所论述的结构,并且图1的每个控制器可具有如以上相对于图3所论述的结构。
根据以上讨论的OpenFlow协议,可默认使用分组内消息将导致主流表在转发元件103处未命中的分组发送到对应控制器101。作为响应,控制器101可将流修改消息发送到转发元件来在主流表中对新的流规则进行编程,并且控制器101还可将未命中的分组转发到转发元件103的适当端口。通过根据在本文中讨论的实施例向转发元件103提供一些附加的信息,转发元件103可作出更智能的决定来从控制器101卸载一些功能性并且减少在OpenFlow信道上的转发元件103与控制器101之间的通信业务。因此,可减少控制器101处理负载和/或OpenFlow信道业务。
到达转发元件103的端口209的分组可分类为控制分组和数据分组。因为控制分组旨在消耗在控制平面中,所以转发元件103可必须将控制分组转发到控制器101用于进一步处理。如以下所论述的,还可将不匹配转发元件103的流表201的数据分组转发到控制器101。
对于分组未命中,转发元件103可生成分组内消息(包含未命中的分组),并且将分组内消息传送到控制器101。作为响应,控制器101生成流修改消息来在转发元件103的流表201中安装流规则/条目,并且控制器101在OpenFlow信道上将流修改消息传送到转发元件101。流修改消息包含整个流规则/条目连同将指向的匹配指令/动作(执行匹配指令/动作来在转发平面中处理流的分组(包含未命中的分组))。此外,控制器101传送包含未命中的分组的分组外(packet-out)消息来将未命中的分组转发到转发元件103的正确输出端口209。
取决于到达转发元件103的新的流的速率,此序列可淹没在转发元件103与控制器101之间的OpenFlow信道。实现特征(例如,防火墙和/或灵活的ACL(接入控制列表)匹配)可增加在OpenFlow信道上的通信业务。以下将相对于在图4、图5和图6的流程图中图示的三个用例来更详细地讨论根据一些实施例的控制器卸载。
图4是图示在L2(层2)桥接类型操作期间卸载控制器101操作的转发元件103的操作的流程图。与此相反,如以下更详细讨论的,传统的桥接算法作为在控制器101处的应用来运行。
假定未知目的地来支持两个远程网络节点(本文被称作节点A和节点B)之间的媒体接入控制(MAC)通信,由传统的OpenFlow转发元件和控制器来执行下文的桥接操作。例如,分组可到达转发元件的端口C,转发元件具有以太网源地址A(指示节点A是分组的源)并且具有以太网目的地地址B(指示节点B是分组的预期目的地)。转发元件可使用目的地地址B来尝试匹配分组与主流表,但是因为转发元件不知道目的地节点,所以在主流表处可未命中分组(即,目的地地址B可不与主流表的任何流规则/条目匹配)。
传统地,转发元件可在OpenFlow信道上将分组内消息发送到控制器,并且分组内消息可包含未命中的分组以及端口C的识别(分组是通过端口C从节点A接收)。在接收到分组内消息时,控制器可查找以太网源地址A,并且如果控制器没有在控制器处的学习表中的以太网源地址A,则源地址A连同端口C的识别(通过端口C来接收分组)一起记录在学习表中。
然后控制器生成两个流修改消息,在OpenFlow信道上将流修改消息传送到转发元件(流修改消息表示转发元件的主流表的两个新的规则)。第一流修改消息定义第一流规则(“以太网Src B:以太网Dst*;动作:输出控制器”,其中*表示任何地址)使得使用分组内消息将具有B的源地址的任何分组(即,由节点B传送的分组)转发到控制器。第二流修改消息定义第二流规则(“以太网Dst A;以太网Src*;动作:输出C”,其中*表示任何地址)使得将具有目的地地址A的任何分组(即,传送到节点A的分组)转发到端口C(通过端口C从节点A接收原始分组)。
控制器也生成分组外消息(包含从节点A接收的原始分组),并且控制器在OpenFlow信道上将分组外消息传送到转发元件,转发元件将传送自所有标准输入/输出端口(包含输入/输出端口C,通过它们从节点A接收原始分组)。响应于从控制器接收分组外消息,转发元件将分组泛洪到所有转发元件的输入/输出端口(即,传送来自所有输入/输出端口的原始分组)。通过将分组泛洪到所有输入/输出端口,分组可到达节点B(预期目的地),即使转发元件和控制器都不知道节点B的位置在哪。
在节点B处接收到原始分组时,节点B可用包含以太网源地址B(指示节点B是第二分组的源)和以太网目的地地址A(指示节点A是分组的预期目的地)的第二分组来回应节点A。可在转发元件的端口D处接收第二分组,并且因此第二分组(包含源地址B)可匹配第一流规则。根据第一流规则(“以太网Src B:以太网Dst*;动作:输出控制器”),转发元件可将分组内消息(包含第二分组)传送到控制器,分组内消息包含端口D的识别(分组是通过端口D从节点B接收)。
响应于接收包含第二分组的分组内消息,控制器可查找以太网源地址B,并且如果控制器没有在控制器处的学习表中的以太网源地址B,则源地址B连同端口D的识别(第二分组是在转发元件处接收)一起记录在学习表中。然后控制器可响应于来自节点B的分组来生成两个附加的流修改消息。
第一流修改消息可响应于来自节点B的分组而生成并且传送到转发元件来移除流规则(“以太网Src B:以太网Dst*;动作:输出控制器”),该流规则以前是响应于来自节点A的分组在转发元件处编程到流表。第二流修改消息可响应于来自节点B的分组而生成并且传送到转发元件来将流规则(“以太网Dst B;以太网Src*;输出端口D”)添加到转发元件的流表。
基于在控制器处的来自学习表的信息(关联目的地地址与输入/输出端口C),控制器也生成分组外消息(包含从节点B接收的第二分组),并且控制器在OpenFlow信道上将分组外消息传送到转发元件(转发元件将从端口C传送(节点A连接到端口C))。响应于从控制器接收分组外消息,转发元件从端口C传送分组(原始是从节点B传送)。
因此,现在流表包含用于节点A与B之间的会话的两个流规则,“以太网Dst A;以太网Src*;动作:输出C”和“以太网Dst B;以太网Src*;输出端口D”。对于匹配流规则“以太网Dst A;以太网Src*;动作:输出C”的任何分组(即,具有节点A的目的地地址的任何分组),转发元件将从端口C传送分组,并且对于匹配流规则“以太网Dst B;以太网Src*;输出端口D”的任何分组(即,具有节点B的目的地地址的任何分组),转发元件将从端口D传送分组。
在包含传统的转发元件和控制器的网络中,可为每个新的以太网源/目的地对(通过网络为它建立通信会话)执行以上讨论的操作。在此场景中,在OpenFlow信道上将两个分组内消息从转发元件传送到控制器,在OpenFlow信道上将四个流修改消息从控制器传送到转发元件,并且在OpenFlow信道上将两个分组外消息从控制器传送到转发元件。
根据在图4的流程图中图示的实施例,可减少在转发元件103与控制器101之间的OpenFlow信道上传送的通信数量和控制器101的处理负载。更特别地,将相对于在两个通信节点A与B之间建立通信会话来讨论图4的操作,其中通信节点A耦合到转发元件103的输入/输出端口209的端口C并且通信节点B耦合到转发元件103的输入/输出端口209的端口D。此外,将相对于在节点A与B之间的通信会话(转发元件以前不支持)来讨论图4的操作。
例如,在框401处,可在转发元件401的端口C处接收数据分组,转发元件401具有以太网源地址A(指示节点A是分组的源)和以太网目的地地址B(指示节点B是分组的预期目的地)。在框405处,转发元件103的处理器207可使用源地址A和/或目的地地址B来尝试匹配数据分组与主流表。在框407处,如果数据分组命中与(流表201的)主流表的匹配(例如,因为数据分组的源地址和/或目的地地址匹配主流表的现存的流规则的的准则),则在框423处,转发元件处理器207可根据匹配的流规则来处理数据分组。
在框407处,如果数据分组未命中与(流表201的)主流表的匹配(例如,因为数据分组的源地址和/或目的地地址不匹配主流表的现存的流规则的准则),则在框409处,转发元件处理器207可使用源地址A和/或目的地地址B来尝试匹配数据分组与转发元件103的影子表221。在框411处,如果数据分组未命中与影子表221的匹配,则在框425处,转发元件处理器207可使用分组的源地址A和端口C(通过端口C来接收分组)来更新学习表223(在转发元件103处)。更特别地,转发元件处理器207可在转发元件学习表223中记录源地址A连同端口C的识别(通过端口C来接收分组),因此关联数据分组的源(例如,节点A)与转发元件103的输入/输出端口209(例如,端口C),源(例如,节点A)耦合到输入/输出端口209。在图4的实施例中,转发元件103可提供/维持学习表使得可从控制器101转移此处理负担。
在框427处,可在OpenFlow信道上将分组内消息(包含从节点A接收的分组)从转发元件103传送到控制器101。分组内消息可包含未命中的分组和端口C的识别(在转发元件103处通过端口C从节点A接收分组)。响应于接收此分组内消息,控制器101可生成两个新的影子修改消息,用于在影子表221中编程相应影子规则(影子表221是在OpenFlow信道上传送到转发元件103)。
第一影子修改消息定义第一流规则(“以太网Dst==MAC A;动作:输出端口C”,其中MAC是节点A的MAC地址)使得在转发元件103处接收的具有目的地地址A的任何数据分组(即,数据分组传送到节点A)是从端口C(已知端口C耦合到节点A)传送。第二影子修改消息定义第二流规则(“以太网Src=MAC B;动作:输出端口本地”,其中MAC B是节点B的MAC地址,并且端口本地是与转发元件处理器207的处理机208关联的本地虚拟端口,使得在转发元件103接收的具有源地址B的任何数据分组(即,数据分组是由节点B传送)是经由虚拟本地端口转发到处理机208。响应于在OpenFlow信道上接收这些影子修改消息(在框429处),转发元件103可在影子表221中安装相应影子规则(在框431处)。
控制器101还可生成分组外消息(包含从节点A接收的原始分组),并且控制器101可在OpenFlow信道上将分组外消息传送到转发元件103,转发元件103将传送自所有标准输入/输出端口(包含输入/输出端口C,通过它们从节点A接收原始分组)。响应于从控制器101接收分组外消息(在框433处),转发元件处理器207可将分组泛洪到所有转发元件输入/输出端口209(在框435处)(即,传送来自所有输入/输出端口的原始分组)。通过将分组泛洪到所有输入/输出端口,分组可到达节点B(预期目的地),即使转发元件103和控制器101都不知道节点B的位置在哪。
在节点B处接收到原始分组时,节点B可用在转发元件103处接收的第二分组来回应节点A(在框401处)。更特别地,第二数据分组可包含以太网源地址B(指示节点B是第二分组的源)和以太网目的地地址A(指示节点A是分组的预期目的地)。可在转发元件输入/输出端口209的端口D处接收第二分组,并且处理器207可尝试匹配第二分组与流表201的主流表(在框405处)。因为没有流规则与第二数据分组匹配,所以第二数据分组可未命中匹配主流表(在框407处)。
因此,处理器207可尝试匹配第二分组与影子表221(在框411处)。如以上所论述的,相对于框431,影子表221已经编程有影子规则“以太网Dst==MAC A;动作:输出端口C”和“以太网Src=MAC B;动作:输出端口本地”,并且第二分组(具有目的地地址A和源地址B)匹配这两个规则(引起在框411处命中)。
基于影子规则“以太网Src=MAC B;动作:输出端口本地”,处理器207可将第二数据分组转发到本地端口用于使用处理器207的处理机208来处理。更特别地,在框417处,处理机208可使用分组的源地址B和端口D(通过端口D来接收第二数据分组)来更新学习表223(在转发元件103处)。更特别地,处理机208可在转发元件学习表223中记录源地址B连同端口D的识别(通过端口D来接收分组),因此关联数据分组的源(例如,节点B)与转发元件103的输入/输出端口209(例如,端口D),源(例如,节点B)耦合到输入/输出端口209。在图4的实施例中,转发元件103可提供/维持学习表使得可从控制器101转移此处理负担。
在框419处,处理机208还可在流表201的主流表中安装下文的新的流规则:“以太网Dst A;以太网Src*;动作:输出C”和“以太网Dst B;以太网Src*;输出端口D”(其中*表示允许与任何地址匹配的通配符地址)。对于匹配流规则“以太网Dst A;以太网Src*;动作:输出C”的任何分组(即,具有节点A的目的地地址的任何分组),转发元件处理器207将从端口C传送分组,并且对于匹配流规则“以太网Dst B;以太网Src*;输出端口D”的任何分组(即,具有节点B的目的地地址的任何分组),转发元件处理器207将从端口D传送分组。因此可安装这些新的流规则而不将第二数据分组传送到控制器101。
因为这两个新的流规则是由转发元件处理器207安装而不通知控制器101,所以控制器101可不知道这两个流规则已经安装在流表201中。因此,对于这两个新的流规则中的每个,可在流表201中安装“无通知标志”使得在这些流规则中的任一个状态改变时,没有通知被传送到控制器101。例如,当这些流规则中的任一个超时时(由于节点A与B之间的活动的缺乏超过超时时段),处理器207可从流表移除这些规则而不通知控制器101。与此相反,可安装流规则(响应于从控制器101接收的流修改消息而安装)而没有“无通知”标志使得当从流表201移除这样的流规则时(例如,响应于超时),将通知传送到控制器101。
在框421处,基于影子表221中的影子规则“以太网Dst==MAC A;动作:输出端口C”,处理机208可通过输入/输出端口209的端口C将第二数据分组转发到节点A。备选地,可根据新的流规则“以太网Dst A;以太网Src*;动作:输出C”通过端口C将第二数据分组转发到节点A。在任一情况下,第二数据分组(从节点B传送到节点A)可传送自转发元件103而没有将第二数据分组传送到控制器101。
转发元件处理器207可根据图4的框401、405、407和423使用两个新的流规则(“以太网Dst A;以太网Src*;动作:输出C”和“以太网Dst B;以太网Src*;输出端口D”)来处理在通信会话期间的在节点A与B之间的后续数据分组传送。更特别地,在会话期间的由节点A传送到节点B的每个数据分组可在框401处接收,在框405和407处与流表201的主流表的流规则“以太网Dst B;以太网Src*;输出端口D”匹配,并且在框423处根据匹配的规则传送自端口D。类似地,在会话期间的由节点B传送到节点A的每个数据分组可在框401处接收,在框405和407处与流表201的主流表的流规则“以太网Dst A;以太网Src*;动作:输出C”匹配,并且在框423处根据匹配的规则传送自端口C。
在节点A与B之间的通信中的间隔超过超时时段之后,处理器207可从流表201移除两个流规则来为其它流规则释放存储器空间。如果节点A与B之间的通信稍后恢复(在超时时段之后),可重复框409、411、425、427、429、431、433、435、417、419和421的操作来为节点A与B之间的新会话重新安装流规则。在后续会话中,可减少所需操作的数量,例如,如果在移除关于此的流规则之后在学习表223中维持关于节点A和B的信息。
按照图4的操作,可减少在转发元件103与控制器101之间的OpenFlow信道上的通信的负载,并且可减少在控制器101处的处理负载。例如,图4的操作可只需要一个分组内消息、一个分组外消息和两个影子修改消息来建立节点A与B之间的会话。
图5是图示通过网络101在客户端装置与服务器装置之间的客户端服务器通信期间卸载控制器101操作的转发元件103的操作的流程图。更特别地,图5图示为由客户端和服务器装置协商的转发元件端口打开数据信道针孔的转发元件103操作。
在文件传输协议(FTP)被动模式中,客户端装置使用转发元件控制端口(例如,输入/输出端口209的端口21)来为控制操作提供控制信道来从服务器装置请求数据,但1024与65535之间的传输控制协议(TCP)端口用于接收从服务器装置请求的数据。在控制信道上(使用控制端口)交换PORT/PASV命令来提供用于打开客户端与服务器装置之间的指定数据信道(使用TCP端口1024到65535中的一个或多个)的信息。当客户端装置在控制信道上将数据请求传送到服务器装置时,服务器装置可用PORT命令(识别用于数据信道的转发元件端口(例如,TCP端口1024到65535中的一个))或PASV命令(要求客户端装置识别用于数据信道的转发元件端口(例如,TCP端口1024到65535中的一个))来响应。如果服务器装置用PASV命令来响应,则然后客户端装置可传送PORT命令(识别用于数据信道的转发元件端口(例如,TCP端口1024到65535中的一个))。
根据一些实施例,控制器101可在影子表221中安装影子规则(例如,提供在控制信道上检查分组内容的辅助功能)来支持客户端服务器通信,减少在控制器101处的处理负担,和/或减少在转发元件103与控制器101之间的OpenFlow信道上的通信业务。这样的影子规则可起到有限状态机(FSM)的作用,在控制信道上传送的分组中搜索一组模式来识别PORT命令并且采取动作来使用来自识别的PORT命令的端口信息打开适当的数据信道而不需要转发元件103与控制器101之间的通信。
在FTP应用中,提供辅助功能的影子规则可在控制信道上传送的每个分组中查找模式,其中模式独特地识别PORT命令(响应于请求而发送来开始被动模式连接(例如,PASV方法)。如果在控制信道上的分组中找到模式,则影子规则可以实现数据信道而不需要与控制器101的通信。
例如,影子规则可提供常规表达(regex)引擎。响应于检测到通过客户端与服务器装置之间的转发元件103在控制信道上传送的TCP SYN(TCP同步)和SYN ACK(同步确认)序列,控制器101可在转发元件103中安装用于辅助功能(包含常规表达引擎)的影子规则。此机制可卸载从控制器101处看到的通信的消息。
可将与到达服务器装置IP地址和客户端装置IP地址关联的客户端装置IP地址、服务器装置IP地址、客户端装置TCP端口、服务装置TCP端口和物理端口信息提供到转发元件103。可将此信息连同用于分析PORT/PASV命令的常规表达引擎从控制器101发送到转发元件103。用于识别来自有关的PASV/PORT命令的TCP端口的常规表达引擎(也被称作Regex引擎)可提供如下:
\b(PORT│port│PASV│pasv)\b((25[0-5]│2[0-4][0-9]│[01]?
[0-9][0-9]?,){3}\b(25[0-5]│2[0-4][0-9]│[01]?[0-9][0-9]?)\b
此外,影子规则可在影子表221中(响应于来自控制器101的一个或多个影子修改消息)编程如下:
常规表达引擎尝试匹配PORT和PASV串连同IP地址和端口数据来识别TCP端口(识别用于客户端与服务器装置之间的数据信道)。数据端口连接连同其它信息(例如,服务器和客户端IP地址)可以被传到控制器使得它可以安装规则或使得转发元件103可以安装规则而不涉及控制器101。
控制器101可提供充分的能力来确定会话/通信的类型并且构建常规表达引擎来分析会话/通信中的某些串。控制器101可仍然智能地决定会话/通信的类型和要查找什么。然后,当已经建立会话时,控制器101可以使用影子修改消息在转发元件103的影子表221中安装适当的影子规则。控制器101可扮演重要角色,但转发元件103可使用影子规则来减少在控制器101处的处理负载。使用定义所希望的辅助功能的影子规则,转发元件103可(从控制器101)卸载检查具体串的控制分组的操作,并且在识别到匹配时,转发元件103可通知控制器101需要打开的端口或转发元件103可在流表201中自己安装流规则而不涉及控制器101。
图5是图示根据以上讨论的一些实施例的支持客户端与服务器装置之间的FTP数据信道通信的操作的流程图。根据在图5的流程图中图示的实施例,可减少在转发元件103与控制器101之间的OpenFlow信道上传送的通信数量和控制器101的处理负载。更特别地,将相对于在控制信道上通信的在客户端与服务器装置之间的TCP端口上建立数据信道来讨论图5的操作。
例如,在框501处,可在转发元件输入/输出端口209的控制端口(例如,控制端口21)处接收控制分组,并且控制分组可具有源(Src)IP地址(提供源装置(客户端或服务器装置中的一个)的IP地址)和目的地(dest)IP地址(提供目的地装置(客户端或服务器装置中的另一个)的IP地址)。此外,控制分组可以是在转发元件的控制端口103处接收的第一控制分组,用于客户端与服务器装置之间的会话。
响应于接收控制分组,转发元件处理器207可尝试匹配控制分组与流表的主流表(在框505处),但是因为只有数据分组可与流表201匹配,控制分组将未命中(在框507处)。当在框507处的控制分组与(流表201的)主流表不匹配时(例如,因为控制分组不匹配流表),在框509处,转发元件处理器207可使用控制分组的IP源地址和目的地地址以及输入/输出端口209的控制信道端口(通过控制信道端口来接收控制分组)来尝试匹配控制分组与转发元件103的影子表221。
如果在框511处的控制分组与影子表221不匹配(因为控制分组是在转发元件103处接收的用于在客户端与服务器装置之间的会话的第一控制分组(在已经提供会话的影子规则之前),则在框527处,转发元件处理器207可在从转发元件103到控制器101的OpenFlow信道上传送分组内消息(包含控制分组)。分组内消息可包含未命中的控制分组以及端口的识别(通过该端口在转发元件103处接收控制分组)。响应于接收此分组内消息,控制器101可将一个或多个影子修改消息传送到转发元件103来安装影子规则(所述影子规则识别用于客户端与服务器装置之间的会话的端口命令并且为会话的数据信道打开针孔)。
响应于在框529处从控制器101接收影子修改消息,转发元件处理器207可在框531处为客户端与服务器装置之间的会话安装影子规则。更特别地,影子规则可配置为识别在控制信道端口(在其上接收第一控制分组)(例如,端口21)上接收的并且具有匹配第一控制分组的源IP地址的源IP地址或目的地IP地址中的一个并且具有匹配第一控制信道的目的地IP地址的源IP地址或目的地IP地址中的另一个的后续控制分组,如下:
If(Src IP==Client IP and Src Port==Client TCPPortAnd
Dest IP==Server IPAnd Dest Port==Server TCPPort)OR
(Src IP==Server IPAnd Src Port==Server TCPPortAnd
Dest IP==Client IPAndDest Port==Client Port)
对于匹配这些地址准则的控制分组,影子规则还配置为执行常规表达引擎来确定控制分组是否是识别数据信道的端口的端口命令,如下:
\b(PORT│port│PASV│pasv)\b((25[0-5]│2[0-4][0-9]│[01]?
[0-9][0-9]?,){3}\b(25[0-5]│2[0-4][0-9]│[01]?[0-9][0-9]?)\b
在框501处在转发元件103处接收到关于以上讨论的客户端与服务器装置之间的会话的第二控制分组时,转发元件处理器207可尝试匹配第二控制分组与流表201的主流表(在框505处),并且因为控制分组可与流表不匹配,所以将在框507处发生未命中。在框509处,处理器207可尝试匹配第二控制分组与影子表221,并且因为第二控制分组匹配源IP地址和目的地IP地址以及控制端口准则(相对于框531的影子规则以上讨论的),所以将在框511处发生命中。换句话说,用于客户端与服务器装置之间的会话的第二控制分组匹配用于客户端与服务器装置之间的会话的第一控制分组的源IP地址和目的地IP地址以及控制端口。
响应于影子表命中,处理器207将在框515处执行来自影子表221中的影子规则的常规表达引擎(相对于框531以上讨论的)。常规表达引擎识别第二控制分组的类型,并且如果第二控制分组类型不匹配感兴趣的类型(例如,端口命令),则在框521处,处理器207可将控制分组转发到预期目的地(例如,如目的地IP地址指示的)而不安装流规则或规则。如果第二控制分组匹配感兴趣的类型(例如,端口命令),则处理器207可在流表201的主流表中安装新的流规则(在框519处)并且将控制分组转发到预期目的地(在框521处)。
在本文讨论的实施例中,常规表达引擎可用于将端口命令(例如,PORT和/或PASV命令)识别为感兴趣的命令类型。当在框517处将第二控制分组识别为端口命令控制分组时,影子表221的常规表达引擎可识别将用于客户端与服务器装置之间的数据信道的针孔的包含在端口命令数据分组中的TCP端口,并且在框519处,处理器207可在流表201的主流表中安装流规则来支持使用识别的TCP端口的数据信道。因此,第二控制分组可以是识别将用于在客户端与服务器装置之间传送的后续数据分组的数据端口的端口命令控制分组,并且在框519处安装新的流规则可包含安装新的流规则来定义将用于通过客户端与服务器装置之间的转发元件103而传送的后续数据分组的针孔。此外,这些流规则可与无通知标志一起安装,使得当针孔数据信道超时时(由于活动中的间隔超过超时时段),可从流表201移除流规则而不通知控制器101。
一旦已经安装定义数据信道针孔的流规则,则可在由流规则定义的数据信道针孔上传送在客户端与服务器装置之间传送的后续数据分组。例如,可在客户端与服务器装置之间传送数据分组(例如,包含对应于客户端与服务器装置之间的会话的源地址和目的地地址的数据分组),并且在框501处接收到此数据分组时,处理器207可尝试匹配数据分组与流表201的主流表。因为数据分组用于以上讨论的客户端与服务器装置之间的会话,所以数据分组可具有匹配第一和/或第二控制分组的源或目的地IP地址中的一个的源IP地址,并且数据分组可具有匹配第一和/或第二控制分组的源或目的地IP地址中的另一个的目的地IP地址。因此,当处理器207尝试匹配数据分组与流表201的主表时,在框519处数据分组将命中以上讨论的定义数据信道针孔的流规则。因此,将根据匹配的流规则来处理数据分组,使得使用由匹配的流规则定义的数据信道针孔通过转发元件来传送数据分组。可使用数据信道针孔来传送任何数量的后续数据分组,直到定义数据信道针孔的流规则超时(由于在数据信道针孔上的活动的缺乏超过超时时段)或直到建立另一数据信道针孔。
根据相对于图5以上讨论的实施例,转发元件处理器207可因此搜集用于客户端与服务器装置之间的数据通信的TCP数据端口,使用影子规则来监测在客户端与服务器装置之间传送的控制信道分组。使用此信息,转发元件处理器207可打开客户端与服务器装置之间的数据信道针孔而不涉及控制器101。因此,控制器101可减轻监测客户端与服务器装置之间的通信/会话的每个控制分组的负担和/或打开数据信道针孔的负担。
图6是图示通过实现灵活的规则匹配来卸载控制器101操作的转发元件103的操作的流程图。例如,在接入控制列表(ACL)类型实现中,输入/输出端口209的范围可用于流表规则匹配。如果通过在50001-50010的范围中的输入/输出端口而接收的分组应该命中流表而没有灵活的规则匹配,例如,相同的流规则可需要被编程10次,10个流规则中的每个包含相同的源IP地址和目的地IP地址以及指定范围中的10个端口的不同的一个。
以示例的方式,图7图示用于在两个方向中在客户端与服务器装置之间传送业务的一个端口的两个规则的流规则匹配准则而没有灵活的规则匹配。在第一规则中,当分组具有服务器装置的IP源地址、客户端装置的IP目的地地址、50001的源端口和50002的目的地端口时,发生匹配。在第二规则中,当分组具有客户端装置的IP源地址、服务器装置的IP目的地地址、50002的源端口和50001的目的地端口时,发生匹配。如果为一系列端口实现流规则而没有灵活的规则匹配,则可需要为范围中的每个端口重复图7的匹配规则,增加实现的成本。在多个和非连续的一系列端口上的实现(也被称作有洞的一系列)还可增加成本。
例如,可使用关键词(例如,“范围”、“列表”和“排除”、“IP”(因特网协议)、“端口”、“MAC”(媒体接入控制)地址、“源”地址和“目的地”地址)来表达灵活的规则匹配的流规则。以示例的方式,排除的关键词可以后跟具有任何其它关键词的组合的范围或列表。利用此记号,可覆盖多个情况来表达紧凑规则空间。可利用可以表达数据处理概念的数据结构来实现这些关键词。这些机制可用于高效地实现规则,例如:
a source IPDestination IP Port range N1to N2exclude N,N1<N<N2
source 172.16..10.100dest 171.16.23.1destport range 10to 30
exclude port 20
b dest IP address RangeA.B.C.0/24toA.B.C.D/24excludeA.B.C.P,0<P<D
source 172.16.10.0/24to 172.16.10.20/24exclude 172.16.10.2
source port 049200dest port 50,000
c list IPA.B.C.D,E.F.G.H,A1.B1.C1.D1port list p1,p2,p3
list ip 172.16.10.1,172.16.10.3,172.16.10.4port list 22,23,24,25
地址或端口可以由源或目的地关键词来限定。如果地址或端口不是由源或目的地关键词来限定,则地址或端口可解释为目的地地址或端口。范围指示具有高的标记和低的标记的一系列端口。关键词“列表”识别地址或端口的列表。
“排除”关键词排除涉及关键词的每件事,并且“排除”关键词可以与要排除的范围或列表关联。可接受由排除范围或列表限定的任何事。关键词“IP”、“MAC”和“端口”分别指代IP地址、MAC地址和TCP/UDP/SCTP端口。此ACL类型语言可以在转发元件103处实现,通过使控制器101在影子修改消息中发送分析的规则来在转发元件103处在影子表221中安装影子规则(具有范围)。
以下相对于图6更详细地讨论实现影子规则范围的转发元件103操作(关于通过转发元件103在客户端与服务器装置之间的通信)。
例如,在框601处,可在转发元件输入/输出端口209的端口处接收分组(例如,控制或数据分组),并且分组可具有源(Src)IP地址(提供源装置(客户端或服务器装置中的一个)的IP地址)和目的地(dest)IP地址(提供目的地装置(客户端或服务器装置中的另一个)的IP地址)。此外,分组可以是用于在客户端与服务器装置之间的会话的在转发元件103处接收的第一分组。
响应于接收分组,转发元件处理器207可尝试匹配分组与流表的主流表(在框605处),但是因为还没有建立客户端与服务器装置之间的会话,分组可未命中(在框607处)。如果在框607处控制分组与(流表201的)主流表不匹配(例如,因为分组不匹配流表201的任何流规则),则转发元件处理器207可使用控制分组的IP源地址和目的地地址来尝试匹配分组与转发元件103的影子表221(在框609处)。
如果在框611处控制分组与影子表221不匹配(因为它是用于在客户端与服务器装置之间的会话的在转发元件103处接收的第一分组(在已经提供会话的影子规则之前)),转发元件处理器207可在OpenFlow信道上将分组内消息(包含分组)从转发元件103传送到控制器101(在框627处)。分组内消息可包含未命中的分组。响应于接收此分组内消息,控制器101可将一个或多个影子修改消息传送到转发元件103来安装影子规则,影子规则定义流规则并且识别与影子修改消息的流规则关联的IP地址、MAC地址和/或TCP/UDP/SCTP端口的范围/列表。
响应于在框629处从控制器101接收影子修改消息,转发元件处理器207可在框631处安装用于在客户端与服务器装置之间的会话的影子规则。更特别地,影子规则可配置为使用以上讨论的地址和/或端口的范围/列表来识别在转发元件103处接收的后续控制分组。客户端与服务器装置之间的通信会话的后续分组可因此触发流表201的新的流规则的生成,如果它匹配地址和/或端口的范围/列表的话。
在安装影子规则之后,可在框601处接收客户端与服务器装置之间的通信会话的第二分组,并且处理器207可尝试匹配第二分组与流表201的主流表(在框605处)。因为还没有安装用于客户端装置与服务器装置之间的通信会话的流规则,可在框607处发生未命中。在框609处,处理器207可尝试匹配第二控制分组与影子表221,并且因为第二分组的源和/或目的地匹配第一分组的源地址和/或目的地地址(在框631处触发影子规则的安装),可在框611处发生命中。
在框615处,响应于影子表命中,处理器207比较来自分组的地址和/或端口与影子规则的地址/端口的范围/列表。如果在框617处分组的地址/端口包含在影子规则的范围/列表中,处理器207可在流表的主流表中安装流规则(在框619处),其中流规则包含用于识别客户端装置与服务器装置之间的通信会话的源地址和/或目的地地址(例如,触发流规则的生成的以上讨论的两个分组的源地址和目的地地址)以及第二分组的地址和/或端口(在框615和617处与范围/列表匹配)的匹配准则。在框621处,处理器207可将第二分组转发到其预期目的地。如果在框617处分组的地址/端口不包含在影子规则的范围/列表中,可在框627处传送分组内消息,并且可如以上所论述的执行框629和631的操作。
一旦在框619处安装新的流规则,则可在通信会话的持续时间内根据框601、605、607和623的操作来处理满足流规则的所有准则的客户端装置与服务器装置之间的通信的后续分组。更特别地,当安装新的流规则时,新的流规则可只应用于具有匹配范围/列表的地址/端口的通信会话的分组。因此,不具有匹配的地址/端口的通信的其它分组可与在框609、611、615和617处的以前的影子规则比较。如果另一分组在框605和607处未命中但在框611、615和617处匹配范围/列表,则可创建具有流表匹配所需要的不同的地址/端口(相对于以上讨论的第一流规则的地址/端口)的另一流规则。如果另一分组在框605、607、611和617处未命中,则可在框627处将分组内消息传送到控制器101来触发另一影子规则的生成。
根据相对于图6以上讨论的实施例,可安装影子规则来在地址/端口的范围/列表上生成相同的流规则。可只为实际用于客户端装置与服务器装置之间的通信的特定地址/端口生成流规则,而不为在范围上的所有可能的地址/端口生成相同的流规则,因此减少流表201所消耗的存储器空间。此外,通过智能安装影子规则来在地址/端口的指定范围/列表上生成相应流规则,可减少在转发元件103与控制器101之间的OpenFlow信道上的通信业务和/或可减少在控制器101处的处理负载。
以上讨论的实施例可实现为基础OpenFlow协议的修改和/或扩展。根据一些实施例,实现可提供为OpenFlow1.0、1.1和/或1.2的供应商具体扩展而不改变基础协议。
相对于图4、图5和图6以上讨论的实施例可减少在转发元件103与控制器101之间的OpenFlow信道上的业务,和/或减少在控制器101处的负载。此外,可减少流表201的大小和/或可改进/优化流表规则空间的使用。通过在装置(例如,客户端装置与服务器装置)之间的通信会话的配置时将这些流插入到影子表,可通过只允许真正的控制业务传到控制器101来改进/优化OpenFlow信道的使用。
根据一些实施例,在流表201处的每个未命中可导致跨OpenFlow信道的四个或更少的消息,使得跨OpenFlow信道的消息数量可减少到1/2或更少。通过在初始化时智能填充影子/流表,可减小OpenFlow信道上的业务。
此外,因为打开的针孔可以是非常具体的并且可以相对晚地编程(当到达的分组在主流表中未命中时),所以图5的实施例可提供改进的安全。
要理解,在本发明的各实施例的以上描述中,本文所使用的术语只是为了描述特定实施例并且不旨在作为本发明的限制。除非以其它方式定义,本文所使用的所有术语(包含技术和科学术语)具有与本领域技术人员所公知的相同意义。还将理解,术语(例如,在常用词典中定义的那些)应该解释为具有与本说明书的上下文和有关领域中的它们的意义一致的意义并且将不以本文清楚定义的理想化或太过正式的意义来解释。
当元件被称作与另一元件“连接”、“耦合”、“响应”或其变型时,它可以直接连接、耦合或响应于另一元件或可出现中间元件。与此相反,当元件被称作与另一元件“直接连接”、“直接耦合”、“直接响应”或其变型时,不出现中间元件。全文中相似数字指代相似元件。此外,如本文所使用的“耦合”、“连接”、“响应”或其变型可包含无线耦合、连接或响应的。如本文所使用的,单数形式“一”和“该”旨在也包含复数个,除非上下文以其它方式清楚地指示。用了简洁和/或清楚,可能没有详细描述已知功能或构造。术语“和/或”包含关联的列出的项目中的一个或多个的任何和所有组合。
如本文所使用的,术语“包括”、“包含”、“具有”或其变型是开放性的,并且包含一个或多个表述的特征、整体、元件、步骤、部件或功能,但不排除一个或多个其它特征、整体、元件、步骤、部件、功能或其组群的存在或添加。此外,如本文所使用的,“例如”可用于引入或规定以前提及项目的一般示例,并且不旨在作为这样的项目的限制。“即”可用于规定来自一般叙述的特定项目。
本文参考计算机实现的方法的框图和/或流程图、设备(系统和/或装置)和/或计算机程序产品来描述示例实施例。要理解,框图和/或流程图的框以及框图和/或流程图中的框的组合可以由计算机程序指令来实现,计算机程序指令由一个或多个计算机电路来执行。这些计算机程序指令可提供给通用计算机电路、专用计算机电路的处理器电路和/或其它可编程数据处理电路来产生机器,使得指令(其经由计算机的处理器和/或其它可编程数据处理设备执行)转换并且控制晶体管、在存储器位置中存储的值以及在这样的电路内的其它硬件部件来实现在框图和/或流程图框中规定的功能/动作,并且因此创建用于实现在框图和/或流程图框中规定的功能/动作的装备(功能性)和/或结构。
这些计算机程序指令还可存储在有形的计算机可读介质中,它可以指引计算机或其它可编程数据处理设备以特定方式工作,使得存储在计算机可读介质中的指令产生包含指令(实现在框图和/或流程图框中规定的功能/动作)的制品。
有形的、非暂时性计算机可读介质可包含电子、磁性、光、电磁或半导体数据存储系统、设备或装置。计算机可读介质的更具体示例会包含下文的:便携式计算机软磁盘、随机存取存储器(RAM)电路、只读存储器(ROM)电路、可擦除可编程只读存储器(EPROM或闪速存储器)电路、便携式压缩盘只读存储器(CD-ROM)和便携式数字视频光盘只读存储器(DVD/蓝光)。
计算机程序指令还可加载到计算机和/或其它可编程数据处理设备来在计算机和/或其它可编程设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在框图和/或流程图框中规定的功能/动作的步骤。因此,本发明的实施例可实施在硬件和/或运行在处理器上(例如,数字信号处理器)的软件(包含固件、常驻软件、微代码等)中,它们可共同地被称作“电路”、“模块”或其变型。
也应注意到,在一些备选实现中,在框中提到的功能/动作可不以在流程图中提到的次序来发送。例如,示为连续的两个框实际上可基本上并行执行或有时可以相反次序来执行框,取决于涉及的功能性/动作。此外,流程图和/或框图的给定框的功能性可分成多个框和/或流程图和/或可至少部分地集成框图的两个或者更多框的功能性。最后,可将其它框添加/插入在图示的框之间。此外,虽然一些图包含在通信路径上的箭头来示出通信的主要方向,但是要理解,通信可发生在与描绘的箭头相反的方向中。
已经在本文中结合以上描述和附图公开许多不同的实施例。将理解字面上描述并且图示这些实施例的每个组合和子组合会是不适当的重复和混淆。因此,包含附图的本说明书应该视为组成实施例以及制作并且使用它们的方式和过程的各种示例组合和子组合的完整书面描述,并且会将权利要求支持到任何这样的组合或子组合。
可以对实施例作出许多变化和修改而基本上不背离本发明的原理。所有这样的变化和修改旨在在本发明的范围内包含于本文中。
Claims (20)
1.一种在包含转发平面和控制平面的网络的所述转发平面中操作转发元件的方法,所述方法包括:
通过所述转发元件的输入/输出端口来接收分组;
尝试匹配所述分组与所述转发元件的流表;
响应于所述分组未命中与所述流表的匹配,尝试匹配所述分组与所述转发元件的影子表;以及
响应于所述分组与所述影子表匹配,基于来自所述影子表的匹配的影子规则在所述流表中安装新的流规则。
2.根据权利要求1所述的方法,其中安装所述新的流规则包括基于来自所述影子表的所述匹配的影子规则在所述流表中安装所述新的流规则而不将所述分组从所述转发元件传送到所述网络的控制平面。
3.根据权利要求1所述的方法,还包括:
根据来自所述影子表的匹配的影子规则和/或根据所述新的流规则通过所述转发元件来处理所述分组。
4.根据权利要求1所述的方法,还包括:
响应于所述分组未命中与所述流表的匹配以及响应于所述分组未命中与所述影子表的匹配,将分组内消息传送到所述网络的所述控制平面中的控制器,其中所述分组内消息包含所述分组。
5.根据权利要求4所述的方法,其中所述分组包括数据分组,所述方法还包括:
响应于所述数据分组未命中与所述流表的匹配以及响应于所述数据分组未命中与所述影子表的匹配,更新所述转发元件的学习表来关联所述数据分组的源与所述输入/输出端口。
6.根据权利要求5所述的方法,其中所述数据分组是第一数据分组,所述方法还包括:
响应于从对应于所述分组内消息的所述控制器接收影子修改消息,在所述影子表中安装影子规则,所述影子规则关联来自由所述第一数据分组的目的地地址识别的源的后续数据分组与所述转发元件的虚拟内部端口;以及
在安装所述影子规则之后,通过所述转发元件的输入/输出端口来接收第二数据分组,其中所述第二数据分组具有匹配所述第一数据分组的所述目的地地址的源地址;
尝试匹配所述第二数据分组与所述转发元件的所述流表;
响应于所述第二数据分组未命中与所述流表的匹配,尝试匹配所述第二数据分组与所述转发元件的所述影子表;
响应于所述第二数据分组与所述影子表的影子规则匹配,基于来自所述影子表的所述匹配的影子规则在所述流表中安装新的流规则;以及
根据来自所述影子表的匹配的影子规则和/或根据所述新的流规则通过所述转发元件来处理所述第二数据分组。
7.根据权利要求4所述的方法,其中所述分组是在所述转发元件的控制端口处接收的第一控制分组,所述第一控制分组用于在客户端装置与服务器装置之间的会话,所述方法还包括:
响应于从对应于所述分组内消息的所述控制器接收影子修改消息,在所述影子表中安装影子规则,所述影子规则匹配在所述控制端口处接收的并且具有匹配所述第一控制分组的源地址和/或目的地地址的源地址和/或具有匹配所述第一控制分组的所述源地址和/或目的地地址的目的地地址的后续控制分组,其中所述影子规则从匹配控制分组来识别端口命令;
在安装所述影子规则之后,通过所述转发元件的所述控制端口来接收第二控制分组,其中所述第二控制分组具有匹配所述第一控制分组的所述源地址和/或目的地地址的源地址和/或具有匹配所述第一控制分组的所述源地址和/或目的地地址的目的地地址;
尝试匹配所述第二控制分组与所述转发元件的所述流表;
响应于所述第二控制分组未命中与所述流表的匹配,尝试匹配所述第二控制分组与所述转发元件的所述影子表;
响应于所述第二控制分组匹配所述影子表的所述影子规则,执行所述影子规则的表达引擎来识别所述第二控制分组的命令类型;
响应于识别所述第二控制分组的命令类型,基于所述第二控制分组的所述命令类型在所述流表中安装新的流规则;以及
将所述第二控制分组从所述转发元件的输入/输出端口转发到目的地。
8.根据权利要求7所述的方法,其中所述第二控制分组包括端口命令控制分组,所述端口命令控制分组识别用于在所述客户端与服务器装置之间传送的后续数据分组的数据端口,其中安装所述新的流规则包括安装所述新的流规则来定义用于在所述客户端与服务器装置之间传送的后续数据分组的针孔,所述方法还包括:
在安装所述新的流规则之后,接收具有匹配所述第一控制分组的源地址和/或目的地地址的源地址和/或具有匹配所述第一控制分组的所述源地址和/或目的地地址的目的地地址的数据分组;
尝试匹配所述数据分组与所述转发元件的所述流表;以及
响应于所述数据分组与所述流表的所述新的流规则匹配,根据由所述新的流规则定义的所述针孔来处理所述数据分组。
9.根据权利要求4所述的方法,其中所述分组是第一分组,所述方法还包括:
响应于从对应于所述分组内消息的所述控制器接收影子修改消息,在所述影子表中安装影子规则,所述影子规则定义地址和/或端口的范围/列表以及与所述第一分组的源地址和/或目的地地址关联的新的流规则;
在安装所述影子规则之后,通过所述转发元件的输入/输出端口来接收第二分组,其中所述第二分组具有匹配所述第一分组的所述源地址和/或目的地地址的源地址和/或具有匹配所述第一分组的所述源地址和/或目的地地址的目的地地址;
尝试匹配所述第二分组与所述转发元件的所述流表;
响应于所述第二分组未命中与所述流表的匹配,尝试匹配所述第二分组与所述转发元件的所述影子表;
响应于所述第二分组匹配所述影子表的所述影子规则,比较所述第二分组的源端口和/或目的地端口与由所述影子规则定义的所述地址和/或端口的范围/列表;
响应于所述第二分组的所述源端口和/或目的地端口匹配由所述影子规则定义的所述地址和/或端口的范围/列表,在所述流表中安装新的流规则用于具有匹配所述第一分组的所述源地址和/或目的地地址的源地址和/或具有匹配所述第一分组的所述源地址和/或目的地地址的目的地地址并且具有来自所述第二分组的所述地址和/或端口的分组;以及
将所述第二分组从所述转发元件的输入/输出端口转发到目的地。
10.根据权利要求9所述的方法,所述方法还包括:
在安装所述新的流规则之后,接收具有匹配所述第一分组的源地址和/或目的地地址的源地址和/或具有匹配所述第一分组的所述源地址和/或目的地地址的目的地地址并且具有来自所述第二分组的所述地址和/或端口的第三分组;
尝试匹配所述第三分组与所述转发元件的所述流表;以及
响应于所述第三分组与所述流表的所述新的流规则匹配,根据所述新的流规则来处理所述第三分组。
11.一种在包含转发平面和控制平面的网络的所述转发平面中的转发元件,所述转发元件包括:
多个输入/输出端口,配置为提供与所述转发平面的其它转发元件的通信;以及
处理器,耦合到所述多个输入/输出端口,其中所述处理器配置为通过所述转发元件的输入/输出端口来接收分组;尝试匹配所述分组与所述转发元件的流表;响应于所述分组未命中与所述流表的匹配,尝试匹配所述分组与所述转发元件的影子表;并且响应于所述分组与所述影子表匹配,基于来自所述影子表的匹配的影子规则在所述流表中安装新的流规则。
12.根据权利要求11所述的转发元件,其中所述处理器配置为基于来自所述影子表的所述匹配的影子规则在所述流表中安装所述新的流规则而不将所述分组从所述转发元件传送到所述网络的控制平面。
13.根据权利要求11所述的转发元件,其中所述处理器还配置为根据来自所述影子表的匹配的影子规则和/或根据所述新的流规则通过所述转发元件来处理所述分组。
14.根据权利要求11所述的转发元件,其中所述处理器还配置为:响应于所述分组未命中与所述流表的匹配以及响应于所述分组未命中与所述影子表的匹配,将分组内消息传送到所述网络的所述控制平面中的控制器,其中所述分组内消息包含所述分组。
15.根据权利要求14所述的转发元件,其中所述分组包括数据分组,并且其中所述处理器还配置为:响应于所述数据分组未命中与所述流表的匹配以及响应于所述数据分组未命中与所述影子表的匹配,更新所述转发元件的学习表来关联所述数据分组的源与所述输入/输出端口。
16.根据权利要求15所述的转发元件,其中所述数据分组是第一数据分组,并且其中所述处理器还配置为:响应于从对应于所述分组内消息的所述控制器接收影子修改消息,在所述影子表中安装影子规则,所述影子规则关联来自由所述第一数据分组的目的地地址识别的源的后续数据分组与所述转发元件的虚拟内部端口;在安装所述影子规则之后,通过所述转发元件的输入/输出端口来接收第二数据分组,其中所述第二数据分组具有匹配所述第一数据分组的所述目的地地址的源地址;尝试匹配所述第二数据分组与所述转发元件的所述流表;响应于所述第二数据分组未命中与所述流表的匹配,尝试匹配所述第二数据分组与所述转发元件的所述影子表;响应于所述第二数据分组与所述影子表的影子规则匹配,基于来自所述影子表的所述匹配的影子规则在所述流表中安装新的流规则;并且根据来自所述影子表的匹配的影子规则和/或根据所述新的流规则通过所述转发元件处理所述第二数据分组。
17.根据权利要求14所述的转发元件,其中所述分组是在所述转发元件的控制端口处接收的第一控制分组,所述第一控制分组用于在客户端装置与服务器装置之间的会话,并且其中所述处理器还配置为:响应于从对应于所述分组内消息的所述控制器接收影子修改消息,在所述影子表中安装影子规则,所述影子规则匹配在所述控制端口处接收的并且具有匹配所述第一控制分组的源地址和/或目的地地址的源地址和/或具有匹配所述第一控制分组的所述源地址和/或目的地地址的目的地地址的后续控制分组,其中所述影子规则从匹配控制分组来识别端口命令;在安装所述影子规则之后,通过所述转发元件的所述控制端口来接收第二控制分组,其中所述第二控制分组具有匹配所述第一控制分组的所述源地址和/或目的地地址的源地址和/或具有匹配所述第一控制分组的所述源地址和/或目的地地址的目的地地址;尝试匹配所述第二控制分组与所述转发元件的所述流表;响应于所述第二控制分组未命中与所述流表的匹配,尝试匹配所述第二控制分组与所述转发元件的所述影子表;响应于所述第二控制分组匹配所述影子表的所述影子规则,执行所述影子规则的表达引擎来识别所述第二控制分组的命令类型;响应于识别所述第二控制分组的命令类型,基于所述第二控制分组的所述命令类型在所述流表中安装新的流规则;并且将所述第二控制分组从所述转发元件的输入/输出端口转发到目的地。
18.根据权利要求17所述的转发元件,其中所述第二控制分组包括端口命令控制分组,所述端口命令控制分组识别用于在所述客户端与所述服务器装置之间传送的后续数据分组的数据端口,其中所述处理器配置为安装所述新的流规则包括安装所述新的流规则来定义用于在所述客户端与所述服务器装置之间传送的后续数据分组的针孔;在安装所述新的流规则之后接收数据分组,其中所述数据分组具有匹配所述第一控制分组的源地址和/或目的地地址的源地址和/或具有匹配所述第一控制分组的所述源地址和/或目的地地址的目的地地址;尝试匹配所述数据分组与所述转发元件的所述流表;并且响应于所述数据分组与所述流表的所述新的流规则匹配,根据由所述新的流规则定义的所述针孔来处理所述数据分组。
19.根据权利要求14所述的转发元件,其中所述分组是第一分组,并且其中所述处理器还配置为:响应于从对应于所述分组内消息的所述控制器接收影子修改消息,在所述影子表中安装影子规则,所述影子规则定义地址和/或端口的范围/列表以及与所述第一分组的源地址和/或目的地地址关联的新的流规则;在安装所述影子规则之后,通过所述转发元件的输入/输出端口来接收第二分组,其中所述第二分组具有匹配所述第一分组的所述源地址和/或目的地地址的源地址和/或具有匹配所述第一分组的所述源地址和/或目的地地址的目的地地址;尝试匹配所述第二分组与所述转发元件的所述流表;响应于所述第二分组未命中与所述流表的匹配,尝试匹配所述第二分组与所述转发元件的所述影子表;响应于所述第二分组匹配所述影子表的所述影子规则,比较所述第二分组的源端口和/或目的地端口与由所述影子规则定义的所述地址和/或端口的范围/列表;响应于所述第二分组的所述源端口和/或目的地端口匹配由所述影子规则定义的所述地址和/或端口的范围/列表,在所述流表中安装新的流规则用于具有匹配所述第一分组的所述源地址和/或目的地地址的源地址和/或具有匹配所述第一分组的所述源地址和/或目的地地址的目的地地址并且具有来自所述第二分组的所述地址和/或端口的分组;并且将所述第二分组从所述转发元件的输入/输出端口转发到目的地。
20.根据权利要求19所述的转发元件,其中所述处理器还配置为:在安装所述新的流规则之后,接收第三分组,其中所述第三分组具有匹配所述第一分组的源地址和/或目的地地址的源地址和/或具有匹配所述第一分组的所述源地址和/或目的地地址的目的地地址;尝试匹配所述第三分组与所述转发元件的所述流表;并且响应于所述第三分组与所述流表的所述新的流规则匹配根据所述新的流规则来处理所述第三分组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/412490 | 2012-03-05 | ||
US13/412,490 US8705536B2 (en) | 2012-03-05 | 2012-03-05 | Methods of operating forwarding elements including shadow tables and related forwarding elements |
PCT/IB2013/051627 WO2013132395A1 (en) | 2012-03-05 | 2013-03-01 | Methods of operating forwarding elements including shadow tables and related forwarding elements |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104145457A CN104145457A (zh) | 2014-11-12 |
CN104145457B true CN104145457B (zh) | 2018-01-09 |
Family
ID=48184249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380012982.XA Active CN104145457B (zh) | 2012-03-05 | 2013-03-01 | 操作包含影子表的转发元件的方法以及相关的转发元件 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8705536B2 (zh) |
EP (1) | EP2823605B1 (zh) |
CN (1) | CN104145457B (zh) |
IN (1) | IN2014DN07185A (zh) |
WO (1) | WO2013132395A1 (zh) |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9450870B2 (en) * | 2011-11-10 | 2016-09-20 | Brocade Communications Systems, Inc. | System and method for flow management in software-defined networks |
US9225635B2 (en) * | 2012-04-10 | 2015-12-29 | International Business Machines Corporation | Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization |
US9548932B2 (en) * | 2012-04-27 | 2017-01-17 | Nec Corporation | Method and system for determining network-wide interactions between forwarding elements in a network |
WO2013187054A1 (en) * | 2012-06-14 | 2013-12-19 | Nec Corporation | Communication system, control apparatus, communication method, control method and program |
US10129182B2 (en) * | 2012-06-29 | 2018-11-13 | Juniper Networks, Inc. | Methods and apparatus for providing services in distributed switch |
US10097481B2 (en) | 2012-06-29 | 2018-10-09 | Juniper Networks, Inc. | Methods and apparatus for providing services in distributed switch |
WO2014010724A1 (ja) * | 2012-07-13 | 2014-01-16 | 日本電気株式会社 | 制御装置、通信システム、通信方法及びプログラム |
BR112015007232A2 (pt) * | 2012-10-10 | 2017-07-04 | Nec Corp | nó de comunicação, sistema de comunicação, aparelho de controle, método de encaminhamento de pacote, e programa |
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 |
US9288106B2 (en) * | 2012-11-02 | 2016-03-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Adding device-wide capabilities and parameters to split-architecture devices |
US9325612B2 (en) * | 2012-11-29 | 2016-04-26 | Telefonaktiebolaget L M Ericsson (Publ) | Dynamic IPoE clips subscriber method and apparatus |
US9729425B2 (en) * | 2012-11-29 | 2017-08-08 | Futurewei Technologies, Inc. | Transformation and unified control of hybrid networks composed of OpenFlow switches and other programmable switches |
US8989194B1 (en) * | 2012-12-18 | 2015-03-24 | Google Inc. | Systems and methods for improving network redundancy and for facile initialization in a centrally-controlled network |
US9253117B1 (en) | 2012-12-18 | 2016-02-02 | Google Inc. | Systems and methods for reducing network hardware of a centrally-controlled network using in-band network connections |
CN103067534B (zh) * | 2012-12-26 | 2016-09-28 | 中兴通讯股份有限公司 | 一种NAT实现系统、方法及Openflow交换机 |
CN105009525A (zh) * | 2013-01-21 | 2015-10-28 | 日本电气株式会社 | 控制装置、通信装置、通信系统、交换机控制方法、以及程序 |
US9479622B2 (en) * | 2013-02-15 | 2016-10-25 | Broadcom Corporation | Out-of-order message filtering with aging |
JP5939353B2 (ja) * | 2013-02-27 | 2016-06-22 | 日本電気株式会社 | 制御装置、通信システム、スイッチ制御方法及びプログラム |
US10389623B2 (en) * | 2013-03-12 | 2019-08-20 | Nec Corporation | Packet data network, a method for operating a packet data network and a flow-based programmable network device |
TWI520530B (zh) * | 2013-05-17 | 2016-02-01 | 智邦科技股份有限公司 | 封包交換裝置及方法 |
CN103428094B (zh) | 2013-08-12 | 2016-08-17 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104426837B (zh) * | 2013-08-20 | 2019-09-13 | 南京中兴新软件有限责任公司 | Ftp的应用层报文过滤方法及装置 |
CN104580027B (zh) * | 2013-10-25 | 2018-03-20 | 新华三技术有限公司 | 一种OpenFlow报文转发方法及设备 |
US10212083B2 (en) * | 2013-10-30 | 2019-02-19 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Openflow data channel and control channel separation |
US9866491B2 (en) * | 2013-12-20 | 2018-01-09 | Nxp Usa, Inc. | Method and system for avoiding new flow packet flood from data plane to control plane of a network device |
US9350677B2 (en) | 2014-01-16 | 2016-05-24 | International Business Machines Corporation | Controller based network resource management |
US10263903B2 (en) * | 2014-02-05 | 2019-04-16 | Ibasis, Inc. | Method and apparatus for managing communication flow in an inter-network system |
US9629018B2 (en) | 2014-02-05 | 2017-04-18 | Ibasis, Inc. | Method and apparatus for triggering management of communication flow in an inter-network system |
US9473414B2 (en) * | 2014-02-06 | 2016-10-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for supporting packet prioritization at a data network |
US9419855B2 (en) | 2014-03-14 | 2016-08-16 | Nicira, Inc. | Static routes for logical routers |
US9647883B2 (en) | 2014-03-21 | 2017-05-09 | Nicria, Inc. | Multiple levels of logical routers |
US10164894B2 (en) * | 2014-05-05 | 2018-12-25 | Nicira, Inc. | Buffered subscriber tables for maintaining a consistent network state |
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 |
EP3166275A4 (en) * | 2014-08-11 | 2017-07-19 | Huawei Technologies Co., Ltd. | Packet control method, switch and controller |
WO2016026798A1 (en) * | 2014-08-18 | 2016-02-25 | Nokia Solutions And Networks Oy | Group communication service enabler security |
US9838337B1 (en) * | 2014-09-30 | 2017-12-05 | Juniper Networks, Inc. | Automatic virtual local area network (VLAN) provisioning in data center switches |
JP2016082344A (ja) * | 2014-10-15 | 2016-05-16 | 日本電気株式会社 | 制御装置、情報処理システム、制御方法、及び、プログラム |
US10079779B2 (en) | 2015-01-30 | 2018-09-18 | Nicira, Inc. | Implementing logical router uplinks |
US9553806B2 (en) * | 2015-02-06 | 2017-01-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for supporting port ranging in a software-defined networking (SDN) system |
EP3266172A4 (en) * | 2015-05-29 | 2018-09-26 | Hewlett Packard Enterprise Development LP | Application of network flow rule action based on packet counter |
US10230629B2 (en) | 2015-08-11 | 2019-03-12 | Nicira, Inc. | Static route configuration for logical router |
US10075363B2 (en) | 2015-08-31 | 2018-09-11 | Nicira, Inc. | Authorization for advertised routes among logical routers |
US10218641B2 (en) * | 2015-10-09 | 2019-02-26 | Arris Enterprises Llc | Handling dynamic cascade port/LAG changes in a non-blocking manner |
US10095535B2 (en) | 2015-10-31 | 2018-10-09 | Nicira, Inc. | Static route types for logical routers |
WO2017105452A1 (en) * | 2015-12-17 | 2017-06-22 | Hewlett Packard Enterprise Development Lp | Reduced orthogonal network policy set selection |
US10057193B2 (en) | 2015-12-31 | 2018-08-21 | Fortinet, Inc. | Cardinality based packet processing in software-defined networking (SDN) switches |
US10091166B2 (en) | 2015-12-31 | 2018-10-02 | Fortinet, Inc. | Sequentially serving network security devices using a software defined networking (SDN) switch |
US10075393B2 (en) * | 2015-12-31 | 2018-09-11 | Fortinet, Inc. | Packet routing using a software-defined networking (SDN) switch |
US10148594B2 (en) | 2015-12-31 | 2018-12-04 | Fortinet, Inc. | Application based conditional forwarding and load balancing in a software defined networking (SDN) architecture |
US10250449B2 (en) | 2016-03-08 | 2019-04-02 | Nicira, Inc. | Method and mechanism for efficiently managing flows |
US10153973B2 (en) * | 2016-06-29 | 2018-12-11 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
WO2018006929A1 (en) * | 2016-07-04 | 2018-01-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet buffering in a telecommunications network |
US10164910B2 (en) * | 2016-07-13 | 2018-12-25 | Futurewei Technologies, Inc. | Method and apparatus for an information-centric MAC layer |
US10454758B2 (en) | 2016-08-31 | 2019-10-22 | Nicira, Inc. | Edge node cluster network redundancy and fast convergence using an underlay anycast VTEP IP |
US10979890B2 (en) | 2016-09-09 | 2021-04-13 | Ibasis, Inc. | Policy control framework |
US10341236B2 (en) | 2016-09-30 | 2019-07-02 | Nicira, Inc. | Anycast edge service gateways |
US20180124183A1 (en) * | 2016-11-03 | 2018-05-03 | Futurewei Technologies, Inc. | Method and Apparatus for Stateful Control of Forwarding Elements |
US10554494B1 (en) | 2017-01-04 | 2020-02-04 | Juniper Networks, Inc. | Automatic ICCP provisioning and VLAN provisioning on an inter-chassis link in a MC-LAG |
EP3358791A1 (en) * | 2017-02-02 | 2018-08-08 | Nokia Solutions and Networks Oy | Method for transmitting messages from an emitting connected object to at least one receiving connected object through at least one network element |
US10257152B2 (en) * | 2017-03-10 | 2019-04-09 | Nicira, Inc. | Suppressing ARP broadcasting in a hypervisor |
JP6838455B2 (ja) * | 2017-03-24 | 2021-03-03 | 住友電気工業株式会社 | スイッチ装置、通信制御方法および通信制御プログラム |
WO2018183332A1 (en) | 2017-03-30 | 2018-10-04 | Ibasis, Inc. | Esim profile switching without sms |
US10524116B2 (en) | 2017-06-27 | 2019-12-31 | Ibasis, Inc. | Internet of things services architecture |
US10931560B2 (en) | 2018-11-23 | 2021-02-23 | Vmware, Inc. | Using route type to determine routing protocol behavior |
US10797998B2 (en) | 2018-12-05 | 2020-10-06 | Vmware, Inc. | Route server for distributed routers using hierarchical routing protocol |
US10938788B2 (en) | 2018-12-12 | 2021-03-02 | Vmware, Inc. | Static routes for policy-based VPN |
US11546185B2 (en) * | 2020-04-27 | 2023-01-03 | Hewlett Packard Enterprise Development Lp | Multicast route summarization |
US11303505B2 (en) * | 2020-07-22 | 2022-04-12 | Arista Networks, Inc. | Aggregated control-plane tables |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101036126A (zh) * | 2004-12-14 | 2007-09-12 | 思科技术公司 | 在计算机网络中边界路由器节点发生故障的情况下快速恢复的高效机制 |
WO2011132568A1 (ja) * | 2010-04-19 | 2011-10-27 | 日本電気株式会社 | スイッチ、及びフローテーブル制御方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7505459B2 (en) | 2004-03-30 | 2009-03-17 | Teknovus, Inc. | Method and apparatus for switching packets in a passive optical network |
US8169910B1 (en) * | 2007-10-24 | 2012-05-01 | Juniper Networks, Inc. | Network traffic analysis using a flow table |
US8560578B2 (en) * | 2008-06-26 | 2013-10-15 | Microsoft Corporation | Common block storage infrastructure |
US8391289B1 (en) * | 2010-10-29 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Managing a forwarding table in a switch |
-
2012
- 2012-03-05 US US13/412,490 patent/US8705536B2/en active Active
-
2013
- 2013-03-01 IN IN7185DEN2014 patent/IN2014DN07185A/en unknown
- 2013-03-01 WO PCT/IB2013/051627 patent/WO2013132395A1/en active Application Filing
- 2013-03-01 EP EP13718631.8A patent/EP2823605B1/en active Active
- 2013-03-01 CN CN201380012982.XA patent/CN104145457B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101036126A (zh) * | 2004-12-14 | 2007-09-12 | 思科技术公司 | 在计算机网络中边界路由器节点发生故障的情况下快速恢复的高效机制 |
WO2011132568A1 (ja) * | 2010-04-19 | 2011-10-27 | 日本電気株式会社 | スイッチ、及びフローテーブル制御方法 |
Non-Patent Citations (1)
Title |
---|
OpenFlow 1.2;《OPEN NETWORKING FOUNDATION》;《OpenFlow Switch Specification》;20111205;摘要、第5.1节、附图1a,2a,2b,3、表1 * |
Also Published As
Publication number | Publication date |
---|---|
US8705536B2 (en) | 2014-04-22 |
EP2823605A1 (en) | 2015-01-14 |
US20130230047A1 (en) | 2013-09-05 |
EP2823605B1 (en) | 2017-09-20 |
CN104145457A (zh) | 2014-11-12 |
IN2014DN07185A (zh) | 2015-04-24 |
WO2013132395A1 (en) | 2013-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104145457B (zh) | 操作包含影子表的转发元件的方法以及相关的转发元件 | |
US11374848B2 (en) | Explicit routing with network function encoding | |
EP2544417B1 (en) | Communication system, path control apparatus, packet forwarding apparatus and path control method | |
CN107925624B (zh) | 基于业务功能链sfc的报文转发方法、装置和系统 | |
US8964569B2 (en) | Generic monitoring packet handling mechanism for OpenFlow 1.1 | |
CN102792646B (zh) | 通信系统、控制装置、通信方法 | |
US9832130B2 (en) | Data packet routing method and device | |
CN1647460B (zh) | 光纤信道网络中的标签交换方法和设备 | |
WO2012133060A1 (ja) | ネットワークシステム、及びvlanタグ情報取得方法 | |
CN104579968A (zh) | Sdn交换机获取精确流表项方法及sdn交换机、控制器、系统 | |
CN106170952A (zh) | 用于在数据网络中部署最大冗余树的方法和系统 | |
CN107113342A (zh) | 使用软件定义网络的中继优化 | |
WO2012164958A1 (en) | Communication system, control device, forwarding node, and control method and program for communication system | |
CN105450525B (zh) | 用于路由交换设备使用的方法和设备 | |
US10069648B2 (en) | Communication system, control apparatus, communication control method and program | |
WO2018036254A1 (zh) | 报文转发方法及装置 | |
CN104092595A (zh) | 基于802.1br的虚拟化系统中的报文处理方法及装置 | |
CN104836753A (zh) | Sdn数据平面带状态交换设备、系统及转发处理方法 | |
WO2020010557A1 (zh) | 基于软件定义网络的业务功能链的实现 | |
WO2014129624A1 (ja) | 制御装置、通信システム、経路切替方法及びプログラム | |
CN104219149B (zh) | 一种基于虚连接的报文传输方法和设备 | |
WO2012081721A1 (ja) | 通信システム、ノード、パケット転送方法およびプログラム | |
US20150256455A1 (en) | Communication system, path information exchange apparatus, communication node, forwarding method for path information and program | |
CN110741610A (zh) | 具有本地交换的端口扩展器 | |
WO2017024818A1 (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 |