具体实施方式
以下描述被提出以使得本领域的技术人员能够制造和使用本发明,并且在特定的应用及其要求的背景中被提供。对所公开的各实施例的各种修改对本领域的技术人员将容易是明显的,并且不背离本发明的精神和范围,本文中定义的一般原理可以被应用至其他实施例和应用。因此,本发明不局限于所示出的这些实施例,而是将符合与权利要求相一致的最宽范围。
概述
在本发明的各实施例中,通过以下各项来解决将软件定义的网络架构与传统网络架构相集成的问题:(1)通过逻辑地划分用于流的端口,使用相同的端口来处理软件定义的流和普通流(即,非软件定义的流);以及(2)除了流表之外还使用本机转发表用于软件定义的流。
控制器(其通常是独立设备)通过生成包括规则和对应动作的流定义(诸如使用OpenFlow所定义的那些流定义)而在软件定义的网络中提供转发智能(即,控制平面)。软件定义的网络中的交换机通常是基于这些流定义来操作的被动实体。因为软件定义的流重新定义了传统的数据流管理,所以软件定义的流与当前网络架构的共存可能是挑战性的。利用已有的技术,交换机通常只支持软件定义的流或者普通流。一些交换机被划分为两个逻辑分区用于支持普通流和软件定义的流。作为结果,属于软件定义的流的数据流量能够仅由与软件定义的流相关联的逻辑分区来处理。此外,交换机中的本机转发表不被用于对软件定义的流做出转发决定。结果,当交换机接收到不具有对应流定义的软件定义的流的帧时,交换机丢弃该帧,即使是在本机转发表包括用于该帧的转发信息时。
本文所描述的对上述问题的解决方案是双重的。首先,在软件定义的网络中,混合的软件可定义的交换机(其能够处理经由相同端口所接收的软件定义的流和普通流两者)能够针对各流而逻辑地划分端口。基于该逻辑划分,交换机使用流表或转发表用于处理相应的帧,由此无需划分交换机而支持软件定义的流和普通流两者。其次,交换机能够使用流表、转发表、或两者用于处理软件定义的流的帧。交换机对该帧应用仲裁策略。这种仲裁策略规定交换机是否以及以何种顺序使用流表、转发表、或两者用于处理该帧。以这种方式,除了流表中的流定义之外,交换机还能够使用转发表中的转发信息用于更高效的转发。
在本公开内容中,术语“软件定义的网络”指代一种网络,该网络通过在流定义中指定与流相关联的动作来促进对相应数据流的控制。耦合至软件定义的网络的控制器(其能够是服务器)向软件定义的网络中的相应交换机提供流定义。流定义能够包括优先级值、指定流的规则、以及用于该流的动作(例如,转发端口或“丢弃”)。流定义的规则能够指定,例如,{输入端口,虚拟局域网(VLAN)标识符,介质访问控制(MAC)源和目的地地址,以太网类型,互联网协议(IP)源和目的地地址,互联网协议,传输控制协议(TCP)源和目的地端口}的十元组中的任何值组合。其他分组头部字段也能够被包括在流规则中。取决于它的特异性,流规则能够对应于网络中的一个或多个流。一经将相应分组匹配至一种规则,软件定义的网络中的交换机就采取对应流定义中所包括的动作。软件定义的网络的一种示例包括但不限于,在http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf可得到的,如Open Networking Foundation(ONF)规范“OpenFlow Switch Specification”中所描述的OpenFlow,其通过引用并入本文。
在本公开内容中,在软件定义的网络中并且能够处理软件定义的流的交换机被称为“软件可定义的”交换机。这样的软件可定义的交换机能够包括能够处理软件定义的流和常规分组转发(例如,层2/以太网交换,或IP路由)的端口,常规分组转发在本公开内容中被称为“普通流”。流定义通常包括一个或多个软件可定义的输入端口,该定义适用于这些输入端口。
在一些实施例中,软件定义的网络是结构交换机,并且软件定义的网络中的相应交换机是该结构交换机的成员交换机。该结构交换机能够是以太网结构交换机。在以太网结构交换机中,以任意拓扑耦合的任何数量的交换机可以逻辑地操作为单个交换机。任何新交换机可以无需任何手动配置而以“即插即用”模式加入或离开结构交换机。结构交换机对终端设备表现为单个逻辑交换机。
尽管使用基于OpenFlow的示例来提出当前的公开内容,但是本发明的实施例不限于使用OpenFlow所定义的网络或者特定的开放系统互联参考模型(OSI参考模型)层。在本公开内容中,术语“软件定义的网络”在通用的意义上被使用,并且能够指代基于软件定义的规则来促进数据流交换的任何网络。术语“流定义”也在通用的意义上被使用,并且能够指代识别属于具体流的数据帧和/或规定交换机应当如何处理帧的任何规则。
术语“终端设备”能够指代主机、常规的层2交换机、或任何其他类型的网络设备。另外,终端设备能够耦合至更远离网络的其他交换机或主机。终端设备也能够是用于多个网络设备进入网络的聚集点。
术语“消息”指代能够跨网络一起被传输的一组比特。“消息”不应当被解释为将本发明的实施例限制于任何具体的网络层。“消息”能够由指代一组比特的其他术语取代,诸如“帧”、“分组”、“信元”、或“数据报”。术语“帧”在通用的意义上被使用,并且不应当被解释为将本发明的实施例限制于层2网络。“帧”能够由指代一组比特的其他术语取代,诸如“分组”、“信元”、或“数据报”。
术语“交换机”在通用的意义上被使用,并且它能够指代操作在任何网络层中的任何独立交换机或结构交换机。“交换机”不应当被解释为将本发明的实施例限制于层2网络。能够将流量转发给终端设备的任何设备能够被称为“交换机”。“交换机”的示例包括但不限于:层2交换机、层3路由器、多链路透明互连(TRILL)路由桥(RBridge)、FC路由器、或者FC交换机。
术语“服务”在通用的意义上被使用,并且能够指代向在任何网络层中操作的独立交换机或结构交换机提供具体功能的任何操作或操作组。由交换机所需要的任何功能能够被称为“服务”。
术语“以太网结构交换机”指代多个互连的物理交换机,它们形成单个可扩展的逻辑交换机。在结构交换机中,任何数量的交换机能够以任意拓扑而被连接,并且整组的交换机一起用作一个单个逻辑交换机。这个特征使得有可能使用许多更小的不昂贵的交换机来构造大的结构交换机,从外部看,该大的结构交换机能够被视为单个逻辑交换机。
网络架构
图1A根据本发明的一个实施例图示了示例性的集成的异构的软件定义的网络。异构的软件定义的网络100包括普通交换机101和104。也被包括的是混合的软件可定义的交换机102、103、105和106,它们能够处理软件定义的流和普通流两者。控制器120逻辑地耦合至网络100中的相应软件可定义的交换机。注意,控制器120能够物理地耦合至交换机的仅一个子集。在这个示例中,控制器120分别经由物理链路122和124而耦合至交换机103和106。终端设备112经由软件可定义的交换机105而耦合至网络100。
软件可定义的交换机102包括一个或多个混合端口。交换机102使用它的混合端口来控制(例如,转发、应用策略、流量丢弃等)软件可定义的流的帧。此外,交换机102也使用这些混合端口来接收和转发普通流的帧。类似地,软件可定义的交换机103、105和106也使用它们各自的混合端口来处理软件可定义的流和普通流两者的数据流量。交换机102也包括仅处理普通流的普通端口。在操作期间,控制器120将流定义发送给交换机102、103、104和105。一经接收到流定义,交换机102、103、104和105使用数据结构(例如,链表)来存储该流定义。在硬件中(例如,在内容可寻址存储器(CAM)中),流定义通常基于该流定义的相应优先级而被存储。
在一些实施例中,如果交换机102经由混合端口来接收普通流的帧,则交换机102使用交换机102中的转发表来转发该流量。另一方面,如果交换机102经由相同端口来接收软件定义的流的帧,则交换机102基于交换机102中的流定义来控制该流量。以这种方式,交换机102使用相同物理端口用于处理属于软件定义的流和普通流两者的帧。类似地,交换机103、105和106使用相同的物理端口用于处理属于软件定义的流和普通流两者的帧。以这种方式,交换机102、103、105和106无需逻辑地划分这些交换机而支持软件定义的两者。
图1B根据本发明的一个实施例,连同图1A中的示例,图示了混合的软件可定义的交换机中的混合端口的示例性逻辑划分。在这个示例中,混合的软件可定义的交换机105包括普通端口152和154,以及混合端口156和158。当交换机105从控制器120接收到流定义时,交换机105将该流定义存储在流表164中。流表164能够是数据结构(例如,链表)、硬件模块(例如,CAM)、或两者。混合端口156被分为两个逻辑分区172和174分别用于软件定义的流和普通流。混合端口156能够基于以下各项中的一项或多项而被分为逻辑分区:VLAN标签或标识符、帧类型、头部中的标志、以及帧中的任何其他可区分的特征。
类似地,混合端口158也被分为两个逻辑分区176和178分别用于软件定义的流和普通流。在一些实施例中,混合端口156和158能够被分为多个逻辑分区。将端口分为多个逻辑分区在名称为“Method and System for Facilitating Application-OrientedQuality of Service in a Fibre Channel Network”的美国专利公开No.2009/0316721中具体说明,它的公开内容以其整体并入本文。
在一些实施例中,交换机105将逻辑分区172和176专用于VLAN184,VLAN 184与网络100中的软件定义的流相关联。在操作期间,交换机105接收属于VLAN 184的帧。结果,交换机105将所接收的帧识别为软件定义的流的一部分,并且基于流表164中的流定义来控制该帧。例如,当交换机105经由端口156接收到帧时,交换机105识别该帧中的与VLAN 184相关联的标签,并且将该帧辨识为软件定义的流的一部分。作为结果,交换机105使用流表164中的流定义来将该帧转发给交换机106。
另一方面,交换机105将逻辑分区174和178专用于网络100中除了VLAN 184之外的所有VLAN,诸如VLAN 182和186。当交换机105经由端口156接收到属于VLAN 186的帧时,交换机105识别该帧中的与VLAN 186相关联的标签。因为该帧中的VLAN标签不对应于VLAN184,所以交换机105将该帧考虑为普通流的一部分。作为结果,交换机105使用转发表162来将该帧转发给终端设备112。类似地,当交换机105经由端口158接收到属于VLAN 182的帧时,交换机105识别该帧中的与VLAN 182相关联的标签,并且将该帧辨识为普通流的一部分。作为结果,交换机105使用转发表162来将该帧转发给交换机104。
帧处理
在图1B中的示例中,交换机105基于帧是否属于软件定义的流来转发经由混合端口所接收的相应数据帧。图2根据本发明的一个实施例呈现了一个流程图,该流程图图示了混合的软件可定义的交换机转发经由经逻辑划分的混合端口所接收的数据的过程。在操作期间,该交换机经由本地混合端口来接收帧(操作202)。该交换机然后检查该帧是否属于软件定义的流(操作204)。在一些实施例中,该交换机检查以下各项中的一项或多项:VLAN标签或标识符、帧类型、以及所接收的帧中的头部中的标志,以决定该帧是否属于软件定义的流。
如果该帧属于软件定义的流,则该交换机识别与该帧相对应的流表中的流定义(操作212)。该交换机然后基于该流定义来控制该帧(操作214)。控制该帧包括:将该帧传输给由所识别的流所指定的端口。控制该帧进一步包括:当由所识别的流定义指定或者当该交换机没有找到对应于该帧的任何流定义时,丢弃该帧。以这种方式,控制器能够经由该交换机来提供服务(例如,通过指定哪些流要丢弃的防火墙服务)。
如果该帧不属于软件定义的流(例如,属于普通流),则该交换机在本机转发表中执行针对该帧的查找(操作206)。这个转发表能够是层2交换表、转发信息库(FIB)、路由信息库(RIB)、或者它们的组合。如果该交换机是层2设备,则该转发表能够通过得知MAC地址而被填充。另一方面,如果该交换机是层3设备,则该转发表能够通过运行路由协议而被填充。在该查找之后,该交换机基于该查找来识别输出端口(操作208)。在一些实施例中,该交换机是结构交换机的成员,其中该交换机也能够基于该查找来识别该结构交换机的下一跳成员交换机。该交换机然后将该帧传输给所识别的端口(操作210)。以这种方式,该交换机能够使用相同的混合端口来处理可能属于普通流或者软件定义的流的帧。
综合查找
在图1B中的示例中,交换机105不能使用本机转发表162用于为软件定义的流做出转发决定。结果,交换机105可以丢弃在流表164中不具有任何对应流定义的软件定义的流的帧,即使是在转发表162包括用于该帧的转发信息时。为了解决这一问题,交换机105能够实施对流表164和转发表162的综合使用,用于处理软件定义的流。图3A根据本发明的一个实施例图示了具有综合查找能力的示例性的混合的软件可定义的交换机。异构的软件定义的网络300包括混合的软件可定义的交换机302、304和306,它们能够处理软件定义的流和普通流两者。网络300中的相应的软件可定义的交换机逻辑地耦合至控制器。
在图3A中的示例中,当交换机302从控制器接收到流定义时,交换机302将该流定义存储在流表364中。流表364能够是数据结构(例如,链表)、硬件模块(例如,CAM)、或两者。交换机302也包括转发表362,转发表362能够是层2交换表、FIB、RIB、或它们的组合。交换机302包括普通端口352和352以及混合端口356和358,它们能够无需任何分区而接收属于软件定义的流和普通流的数据流量。交换机302实施对流表364和转发表362的综合查找。在综合查找中,交换机302能够使用流表364、转发表362、或两者,用于对软件定义的流的帧做出转发决定。
在网络300中,VLAN 384与软件定义的流相关联。另一方面,网络300中除了VLAN384之外的所有VLAN(诸如VLAN 382)与普通流量相关联。在操作期间,交换机302经由端口356来接收属于VLAN 382的帧,并且识别该帧中的与VLAN 382相关联的标签。因为该帧中的VLAN标签不对应于VLAN 384,所以交换机302将该帧考虑为普通流的一部分。作为结果,交换机302使用本机转发表362来转发该帧。
另一方面,如果交换机302经由端口356接收到帧中具有与VLAN384相关联的标签的帧,则交换机302将该帧辨识为软件定义的流的一部分。交换机302然后应用仲裁策略340,仲裁策略340规定交换机302是否以及以何种顺序使用流表364、转发表362、或两者用于处理该帧。在一些实施例中,仲裁策略指定了指示该顺序的优先级值。例如,假设转发表362指定了与VLAN 384相关联的流的普通转发,并且流表364中的流定义指定了用于该流的备份转发(即,经由备份路径来转发)。仲裁策略340指定,对于该具体的流,转发表362具有比流表364更好的优先级(其能够更高或更低)。以这种方式,交换机302能够首先使用转发表362中可用的转发信息,并且然后使用流表364,用于控制该流的帧。
图3B根据本发明的一个实施例,连同图3A中的示例,图示了具有与转发表相关联的更好优先级的示例性综合查找。在这个示例中,转发表362指定了软件定义的流320的普通转发,并且流表364中的流定义指定了流320的备份转发。在一些实施例中,流表364中的多个流定义指定了流320的备份转发以用于提供冗余。在操作期间,交换机302经由端口356来接收流320的帧322。交换机302发现对于流320转发表362具有比流表364更好的优先级。因此,交换机302基于转发表362来执行针对帧322的查找,识别端口354作为输出端口,并且经由端口354来传输帧322。
然而,在经由端口354的转发路径不可用(例如,归因于与图3A中的交换机306相关联的链路或结点失效)的失效场景中,交换机302能够使用在流表364(使用虚线表示)中指定了用于流320的备份转发的流定义。在一些实施例中,一经检测到失效,交换机302就改变与流表364相关联的优先级并且向流表364指配比转发表362更好的优先级值。以这种方式,交换机302能够使用流表364加上转发表362的综合查找以用于转发帧322。作为结果,交换机302能够通过容易地使用用于流320的备份转发而无需计算对应的备份路径并且等待网络汇集,来无缝地改变流320的供应。
图3C根据本发明的一个实施例,连同图3A中的示例,图示了具有与流表相关联的更好优先级的示例性综合查找。在这个示例中,转发表362指定了软件定义的流330的普通转发,并且流表364中的流定义指定了用于交换机302的服务。服务的示例包括但不限于:防火墙、负载平衡、网络访问控制、入侵检测/保护、网络分析、以及网络虚拟化。在一些实施例中,流表364中的流定义指定了一种策略,用于交换机302中的基于策略的转发。假设在图3C中的示例中,流表364中的一个或多个流定义指定了用于交换机302的防火墙服务。这些流定义能够指定应当被交换机302丢弃的一个或多个流。因此,交换机302需要在转发表362之前基于流表364来处理帧。
在操作期间,交换机302经由端口356来接收流330的帧332。交换机302发现流表364具有比转发表362更好的优先级。因此,交换机302使用流表364来检查指定防火墙服务的一个或多个流定义是否适用于帧332。如果帧332匹配指定防火墙服务的流定义中的任何流定义,则交换机302丢弃该流(利用虚线表示)。否则,交换机302基于转发表362来执行针对帧332的查找,识别端口354作为输出端口,并且经由端口354来传输帧332。
图4根据本发明的一个实施例呈现了一个流程图,该流程图图示了基于转发表和流表的混合的软件可定义的交换机的综合查找过程。在操作期间,该交换机经由本地混合端口来接收数据帧(操作402)。该交换机然后检查该帧是否为软件定义的流(操作404)。在一些实施例中,该交换机检查以下各项中的一项或多项:VLAN标签或标识符、帧类型、以及所接收的帧中的头部中的标志,以决定该帧是否属于软件定义的流。如连同图3A所描述的,如果该帧不属于软件定义的流(即,属于普通流),则该交换机绕过任何仲裁策略在转发表中执行针对该帧的查找(操作422)。这个转发表能够是层2交换表、FIB、RIB、或它们的组合。在该查找之后,该交换机基于该查找来识别用于处理该帧的输出端口(操作424)。在一些实施例中,该交换机是结构交换机的成员,其中该交换机也能够基于该查找来识别该结构交换机的下一跳成员交换机。
如果该帧属于软件定义的流(操作404),则该交换机针对该帧应用用于转发信息顺序的仲裁策略(操作406)。该转发信息顺序指定了该交换机是否以及以何种顺序使用流表、转发表、或两者,用于处理该帧。在一些实施例中,该交换机关联优先级值来确定该转发信息顺序。该交换机然后检查仲裁策略是否已经选择了流表(操作408)。如果不是(即,如果该仲裁已经选择了转发表),则该交换机在转发表中执行针对该帧的查找(操作432)。如连同图3B所描述的,基于仲裁策略,该交换机能够可选地识别流表中的对应于该帧的流定义(操作434)。
如果仲裁策略已经选择了流表,该交换机识别流表中的对应于该帧的流定义(操作410)。如连同图3C所描述的,基于仲裁策略,该交换机能够可选地在转发表中执行针对该帧的查找(操作412)。在转发表中执行查找(操作412)或识别流定义(操作434)之后,该交换机基于该查找和/或所识别的流定义来为该帧做出转发决定(操作438)。例如,如果该交换机在转发表中执行查找(操作432)之后不检查流表(操作434),则该交换机仅基于该查找来做出转发决定。在做出转发决定(操作438)或者识别用于转发的输出端口(操作424)之后,该交换机对该帧应用该转发决定(操作440)。
网络管理
在一些实施例中,软件定义的流能够被用来管理软件定义的网络。控制器能够从该网络轮询信息并且使用这种数据用于动态供应和管理。图5根据本发明的一个实施例图示了具有操作为网络管理模块的控制器的示例性的集成的异构的软件定义的网络。软件定义的网络500包括混合的软件可定义的交换机501、502、503、504和505,它们能够处理软件定义的流和普通流两者。控制器520逻辑地耦合至网络500中的相应的软件可定义的交换机。注意,控制器520能够物理地耦合至交换机的仅一个子集。在这个示例中,控制器520分别经由物理链路522和524而耦合至交换机503和505。
在操作期间,控制器520轮询交换机501、502、503、504和505,以收集网络500的网络状态信息590。在一些实施例中,控制器520向交换机501、502、503、504和505发送查询消息,以从网络500中的相应交换机发起信息轮询。一经接收到这些查询消息,网络500中的相应交换机就开始向控制器520发送网络状态信息590。在一些实施例中,网络状态信息590包括拓扑发现信息592、流量统计594、以及链路状况信息596。
在一些实施例中,利用简单网络管理协议(SNMP)陷阱(trap)来配置网络500中的相应交换机,SNMP陷阱允许该交换机提供与本地链路状况有关的未被请求的信息。控制器520能够通过轮询这些陷阱来收集链路状况信息596。在一些实施例中,控制器520使用发现协议用于获得拓扑发现信息592。发现协议的示例包括但不限于:链路层发现协议(LLDP)。网络500中的相应交换机能够被配置为,向控制器520发送包括拓扑发现信息592的消息。在一些实施例中,控制器520从网络500中的相应交换机收集流量统计594。
控制器520使用状态信息590来高效地管理网络500。例如,控制器520使用所收集的流量统计594来计算链路负载并且遍及网络500而平衡这些链路负载。以这种方式,控制器520能够建立用于软件定义的流的高效路径。此外,如连同图3B所描述的,控制器520能够利用网络状态信息590用于冗余,并且无缝地改变网络500中的软件定义的流的供应。基于网络状态信息590,控制器520能够确保用于软件定义的流的服务质量。此外,控制器520能够使用软件定义的流来提供服务,诸如基于策略的路由、网络访问控制、安全性(例如,入侵检测和保护)、以及防火墙。这些功能能够使得控制器520能够操作为网络管理模块。作为结果,当交换机501、502、503、504和505装备有连同图1B和3A所描述的能力和功能时,控制器520能够促进综合的架构来支持供应、数据收集、冗余管理、网络管理、基于策略的控制、以及网络服务。
示例性交换机
图6根据本发明的一个实施例图示了集成的异构的软件定义的网络中的示例性的软件可定义的交换机。在这个示例中,交换机600包括多个通信端口602、转发引擎620、流管理模块630、分组处理器610、处理器651、以及存储设备650。通信端口602中的至少一个通信端口是混合端口,混合端口能够接收属于软件定义的流的帧和属于普通流的帧。交换机600能够具有与软件定义的网络中的控制器的逻辑连接。在一些实施例中,该软件定义的网络是启用OpenFlow的网络。可以以软件、硬件或它们的组合来实施流管理模块630。例如,能够以存储在存储设备650中的指令集来实施流管理模块630,并且当这些指令被处理器651执行时,促使处理器651执行一组操作。也能够以硬件芯片(诸如ASICS和FPGA)来实施流管理模块630。
在操作期间,交换机600经由该混合端口来接收帧。流管理模块630基于该帧属于软件定义的流还是普通流来逻辑地划分该端口。流管理模块630能够基于以下各项中的一项或多项来逻辑地划分该端口:该帧中的VLAN标识符、该帧的类型、以及该帧的头部中的标志。如果该帧属于软件定义的流,则转发引擎620(其能够包括用于转发帧的电路)基于本地流表中的流定义来转发该帧。另一方面,如果该帧属于普通流,则转发引擎620基于本地转发表来转发该帧。如连同图1B所描述的,在一些实施例中,流管理模块630将该端口的带宽分为多个逻辑分区。在这些逻辑分区之中,至少一个逻辑分区被分配用于软件定义的数据流。
在一些实施例中,如连同图3A所描述的,交换机600能够执行综合查找,并且包括仲裁系统640。在这样的场景下,如果所接收的帧属于软件定义的流,则转发引擎620能够基于转发表中的转发信息、本地流表中的流定义、或两者来处理该帧。转发表中的转发信息能够包括层2转发信息和/或层3路由和转发信息。仲裁系统640对该帧应用仲裁策略。在一些实施例中,该仲裁策略基于与该软件定义的数据流相关联的优先级。优先级的值规定了该交换机以何种顺序使用流表、转发表、或两者用于处理该帧。
此外,流管理模块630能够使用该软件定义的数据流用于提供以下各项中的一项或多项:访问控制、备份转发、基于策略的路由、网络管理、以及服务。该服务包括以下各项中的一项或多项:防火墙、负载平衡、网络访问控制、入侵检测/保护、网络分析、以及网络虚拟化。在一些实施例中,交换机630包括信息管理模块632,信息管理模块632促进向软件定义的网络的控制器轮询交换机600的网络状态信息。如连同图5所描述的,网络状态信息包括以下各项中的一项或多项:拓扑发现信息、流量统计、以及链路状况信息。此外,可以以软件、硬件或它们的组合来实施信息管理模块632。例如,能够以存储在存储设备650中的指令集来实施信息管理模块632,并且当这些指令被处理器651执行时,促使处理器651执行一组操作。也能够以硬件芯片(诸如ASICS和FPGA)来实施信息管理模块632。
注意,能够以硬件以及以软件来实施上面所提到的模块。在一个实施例中,能够以存储在存储器中的计算机可执行指令来具体化这些模块,该存储器耦合至交换机600中的一个或多个处理器。当被执行时,这些指令促使该(些)处理器执行前面提及的功能。
总之,本发明的实施例提供了一种用于使用转发表、流表、或两者用于转发属于软件定义的流的流量的交换机和方法。在一个实施例中,该交换机包括至少一个端口、流管理模块、以及转发电路。该端口能够接收属于软件定义的数据流的帧和属于普通数据流的帧。该流管理模块逻辑地划分该端口,以用于将属于软件定义的数据流的帧与属于普通数据流的帧分开。该转发电路基于本地流表中的流定义来转发属于软件定义的数据流的帧。流定义指示了软件定义的数据流在软件定义的网络中如何被处理。
本文所描述的方法和过程能够被具体化为代码和/或数据,该代码和/或数据能够被存储在计算机可读的非瞬态存储介质中。当计算机系统读取和执行存储在该计算机可读的非瞬态存储介质上的该代码和/或数据时,该计算机系统执行被具体化为数据结构和代码并且被存储在该介质内的这些方法和过程。
本文所描述的方法和过程能够由硬件模块或装置执行和/或被包括在硬件模块或装置中。这些模块或装置可以包括但不限于:专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专门的或共享的处理器、和/或现在已知的或者以后开发的其他可编程逻辑设备。当这些硬件模块或装置被激活时,它们执行包括在它们中的这些方法和过程。
对本发明的各实施例的前述描述仅为了举例说明和描述的目的而已经被提出。它们不意图为是穷尽的或者限制本公开内容。因此,许多修改和变型对本领域的技术人员将是明显的。本发明的范围由所附权利要求来定义。