用于处理和/或转发包的方法和设备
本申请是申请号为201180030591.1、发明名称为“用于处理和/或转发包的方法和设备”的发明专利申请的分案申请。
技术领域
此公开内容涉及计算机联网。更具体地,此公开内容涉及用于处理和/或转发包的方法和设备。
背景技术
计算机网络已经成为公司信息技术设施的关键要素。计算机网络对带宽永不满足的需求以及不断增加的尺寸和复杂度已经产生了对增大计算机网络的带宽和提高其可管理性的需求。
计算机网络的可管理性可以通过使用网络虚拟化来提高。在网络虚拟化中,巨大且复杂的网络可以被分割成多个虚拟网络以促进可管理性。遗憾的是,使用这种方法提高可管理性会增大在每个交换机处所需要的处理和资源的数量。
发明内容
此处描述的一些实施例提供了用于处理和转发包的系统和技术。特别地,一些实施例提供一种系统(例如一种交换机),该系统基于包在其上被接收的端口和/或该包中的一个或多个字段(例如包的报头中的一个或多个字段)来确定包的内部虚拟网络标识符。在此公开内容中,除非另外指出,短语“基于”是指“完全或部分地基于”。该系统随后基于内部虚拟网络标识符来转发包。在一些实施例中,该系统通过向包中添加TRILL报头而将包封装在TRILL(多链接透明互连)包中,并且随后基于内部虚拟网络标识符来转发TRILL包。
在一些实施例中,内部虚拟网络标识符的范围可以不延伸超出交换机或交换机内的转发模块。当包穿过网络中的不同交换机时,每个交换机可以确定不同内部虚拟网络标识符。
包中的一个或多个字段可以包括客户VLAN(虚拟局域网)标识符、服务提供商VLAN标识符、源MAC(介质访问控制)地址以及VPN(虚拟专用网络)标识符。
此处描述的一些实施例提供一种网络,该网络包括至少一个源交换机、一个或多个中间交换机以及至少一个目的交换机。源交换机可以基于包中的一个或多个字段来确定包的第一内部虚拟网络标识符。接着,源交换机可以通过向包中添加TRILL报头而将包封装在TRILL包中,以及基于第一内部虚拟网络标识符来转发TRILL包。该包在到达目的交换机之前可以通过一个或多个中间交换机。每个中间交换机可以基于TRILL报头来转发TRILL包。当TRILL包到达目的交换机时,目的交换机可以基于包中的一个或多个字段来确定封装在TRILL包中的包的第二内部虚拟网络标识符。目的交换机随后可以基于第二内部虚拟网络标识符来转发该包。
在一些实施例中,该系统可以基于包在其上被接收的端口和/或包中的一个或多个字段来确定包的内部策略标识符。该系统随后可以根据与内部策略标识符关联的策略来处理包。如果来自这些虚拟网络的包期望根据同一策略被处理,则来自不同虚拟网络的包可以被映射到同一内部策略标识符。策略通常可以包括任意规则组,该规则组指定包在该系统中如何被处理。当系统根据给定策略处理包时,该系统可以执行一个或多个动作,所述动作可以包括但不限于:丢弃包,在特定链接或路径上路由包,和/或调整包中的信息。在包上执行的基于特定策略的动作可以取决于包中存储的信息,并且可以无视针对包作出的转发决定。
在一些实施例中,该系统可以基于下述字段组合其中之一来确定包的内部虚拟网络标识符和/或内部策略标识符:(1)MAC源地址和客户VLAN标识符,(2)客户VLAN标识符,(3)客户VLAN标识符和服务提供商VLAN标识符,(4)服务提供商VLAN标识符,(5)客户VLAN标识符和VPN标识符,以及(6)VPN标识符。在一些实施例中,该系统可以将TRILL包映射到默认内部虚拟网络标识符或默认内部策略标识符。
此处描述的一些实施例可以执行远程端口镜像。根据一种定义,远程端口镜像为拷贝特定包并且通过网络将其发送到网络分析器的技术。网络分析器随后可以被用于分析包的副本以帮助识别和解决网络问题。
在一些实施例中,能够远程端口镜像的交换机包括封装机制和转发机制。封装机制可以被配置成将第一包的副本封装在第二包中。将第一包的副本封装在第二包中保留第一包的报头信息。特别地,在一些实施例中,第一包的报头中的VLAN(虚拟局域网)标识符被保留。在一些实施例中,包的TRILL报头被保留。转发机制可以被配置成使用第一包的报头信息转发第一包,以及使用第二包的报头信息转发第二包。
在一些实施例中,第一包为以太网包(具有或不具有一个或多个VLAN标签),并且第二包为TRILL(多链接透明互连)包。在一些实施例中,第一包和第二包两者均为TRILL包。注意,包可以是单播包、组播包或广播包。特别地,在一些实施例中,第一包或者为单播包或者为组播包,并且第二包或者为被发送到网络分析器的单播包,或者为被发送到组播地址的组播包,所述组播地址与包括网络分析器的组播群组关联。
此处描述的一些实施例提供一种网络,该网络包括源交换机和至少两个目的交换机。源交换机可以被配置成:将第一包的副本封装在第二包中;将第一包发送到第一目的交换机;以及将第二包发送到第二目的交换机。第二目的交换机可以被配置成:接收第二包;从第二包提取第一包的副本;以及在耦合到网络分析器的端口上发送第一包的副本。
此处描述的一些实施例提供了一种QoS映射机制,其被配置成将从客户(例如以太网包)接收的包中的第一QoS比特组映射到用于在封装该包的多链接透明互连(TRILL)包中使用的第二QoS比特组。第一QoS比特组可以不同于第二QoS比特组。系统(例如交换机)随后可以产生包括第二比特组的TRILL包。
服务提供商的网络,例如TRILL网络,可以在该网络中使用一组归一化QoS水平。映射机制可以使得服务提供商能够将不同客户网络中使用的不同QoS水平映射到在服务提供商的网络中使用的一组归一化QoS水平。特别地,第二QoS比特组可以对应于与在入口交换机处从客户接收的包中包含的QoS信息一致的归一化QoS水平。
在出口交换机,TRILL包可以被解封装并且具有原始QoS比特的原始包可以被转发到客户的网络。以此方式,此处描述的一些实施例可以在TRILL网络上保留QoS比特并且使得客户能够实施端对端QoS策略。
在一些实施例中,从客户接收的包可以封装互联网协议(IP)包,并且第一QoS比特组可以在IP包的报头中包括IP差分服务代码点(DSCP)位。在一些实施例中,从客户接收的包可以包括VLAN(虚拟局域网)标签,并且第一QoS比特组可以在VLAN标签中包括优先级位。
TRILL包可以包括外部VLAN标签,并且第二QoS比特组可以在外部VLAN标签中包括优先级比特。第二QoS比特组还可以包括被编码在外部VLAN标签的规范格式指示符(CFI)比特中的丢弃资格指示符位。特别地,一些实施例可以管制(police)包,并且基于管制的结果来确定第二QoS比特组中的一个或多个比特(例如被编码为CFI位的丢弃资格指示符)。
一些实施例提供一种网络,其包括入口交换机和出口交换机。入口交换机可以被配置成将从客户接收的包中的第一QoS比特组映射到用于在封装该包的TRILL包中使用的第二QoS比特组。入口交换机可以产生TRILL包,其包括第二QoS比特组。该网络可以还包括一个或多个中间交换机,其被配置成根据第二QoS比特组来处理和/或转发TRILL包。出口交换机可以被配置成对TRILL包进行解封装,以获得从客户接收的原始包。出口交换机随后可以将原始包(具有原始QoS比特组)发送到客户的网络。
此处描述的一些实施例提供了用来有效支持用于给定源和组播地址的多个组播树的系统和技术。特别地,一些实施例提供一种系统(例如交换机),其可以基于与组播包关联的源地址、组播地址和组播树标识符字段来确定内部组播群组标识符。组播包可以是以太网或TRILL组播包。该系统随后可以基于内部组播群组标识符来转发组播包。
在一些实施例中,该系统可以基于组播包的源地址和组播地址来确定第一比特组,以及基于组播包的组播树标识符字段来确定第二比特组。该系统随后可以组合(例如串接)第一比特组和第二比特组以获得内部组播群组标识符。
该系统可以通过下述操作来转发组播包:基于内部组播群组标识符来确定出口端口组,以及通过该出口端口组中的每个端口来发送组播包的至少一个副本。注意,如果组播包将被转发到耦合到出口端口的多个虚拟专用网络(VPN),组播包的多个副本可以在同一出口端口被发送。
如果组播包为以太网包,该系统可以将TRILL报头添加到组播包的每个副本,并且基于内部组播群组标识符来转发TRILL封装的包。
在一些实施例中,内部组播群组标识符的范围不延伸超出交换机。当包穿过网络中的不同交换机时,每个交换机可以确定不同内部组播群组标识符。
此处描述的一些实施例提供一种网络,其包括至少一个源交换机、一个或多个中间交换机以及至少一个目的交换机。源交换机可以基于包的报头中的一个或多个字段来确定组播包的内部组播群组标识符。接着,源交换机可以将组播包的副本封装在TRILL组播包中,并且基于内部组播群组标识符来转发TRILL组播包。
TRILL组播包在到达目的交换机之前可以通过一个或多个中间交换机。每个中间交换机可以确定内部组播群组标识符,并且基于内部组播群组标识符来转发TRILL组播包。当TRILL组播包到达目的交换机时,目的交换机可以解封TRILL组播包以获得组播包,并且基于内部组播群组标识符来转发该组播包。由交换机所确定的内部组播群组标识符与由处理该组播包或该TRILL组播包的其它交换机所确定的内部组播群组标识符可以相同或不同。
此处描述的一些实施例提供用于在TRILL网络中执行网络层组播的系统和技术。特别地,一些实施例提供一种系统(例如交换机),其可以接收包括网络层组播地址的组播包。组播包可以在与第一虚拟网络关联的第一组播树上被接收。接着,该系统可以基于网络层组播地址来确定与第二虚拟网络关联的第二组播树,其中该组播包将在该第二虚拟网络上被转发。该系统随后可以在与第一虚拟网络关联的第一组播树上转发组播包,并且在与第二虚拟网络关联的第二组播树上转发组播包的副本。
在一些实施例中,组播包可以包括与第一组播树关联的第一组播树标识符,并且组播包的副本可以包括与第二组播树关联的第二组播树标识符。第一组播树标识符可以是在第一组播树的根部处的路由桥的别名,并且第二组播树标识符可以是在第二组播树的根部处的路由桥的别名。
第一虚拟网络和第二虚拟网络可以是VLAN(虚拟局域网)。网络层组播地址可以是IP(互联网协议)组播地址。组播包可以是TRILL组播包。第一组播树和第二组播树可以是TRILL组播树。
在一些实施例中,该系统可以基于该网络层组播地址和该组播包的网络层源地址来确定内部组播群组标识符,以及基于内部组播群组标识符来转发组播包。
此处描述的一些实施例提供用于基于每个虚拟网络洪泛包的系统和技术。在操作期间,系统(例如交换机)可以接收包。接着,该系统可以基于包中的一个或多个字段和/或包在其上被接收的端口来确定内部虚拟网络标识符。来自不同虚拟网络的包可以被映射到相同的内部虚拟网络标识符。该系统随后可以基于内部虚拟网络标识符来执行转发查找操作。如果转发查找操作失败,该系统可以基于内部虚拟网络标识符来确定出口端口组。接着,如果包的报头中的虚拟网络标识符(例如VPN标识符)与该出口端口组中的出口端口关联,该系统可以在该出口端口上洪泛该包。
通常,虚拟网络标识符可以包括包中被用于识别虚拟网络的一个或多个字段。注意,基于每个虚拟网络洪泛包可以显著减少当转发查找操作失败时洪泛包所需的资源数量。另外,基于每个虚拟网络洪泛包使得网络能够保持来自不同虚拟网络的业务(traffic)是分离的。
在一些实施例中,该系统可以通过下述操作来确定出口端口组:首先基于虚拟网络标识符来确定组播树,以及随后基于组播树来确定该出口端口组。
在一些实施例中,该系统可以将包的副本提供到出口端口组。接着,每个出口端口随后可以使用VPN标识符来确定是否在该端口上洪泛包。特别地,每个出口端口可以在该端口上洪泛包,只要该端口耦合到如下网络,该网络包括作为与VPN标识符关联的VPN的一部分的主机。
虚拟网络标识符通常可以指代在包中用于确定该包属于哪个虚拟网络的一个或多个字段。在一些实施例中,该包为TRILL(多链接透明互连)包,并且虚拟网络标识符为VPN标识符。在一些实施例中,该包为VLAN包,并且虚拟网络标识符为VLAN标识符。在一些实施例中,该虚拟网络标识符为该包中的一个或多个字段的组合,例如,虚拟网络标识符可以是一个或多个VLAN标识符和/或VPN标识符的组合。
附图说明
图1示出了根据本发明一些实施例的TRILL网络。
图2示出了根据本发明一些实施例的包括TRILL报头的以太网包的一部分。
图3示出了根据本发明一些实施例的交换机。
图4A给出的流程图示出了根据本发明一些实施例的用于基于内部虚拟网络标识符来转发包的处理。
图4B给出的流程图示出了根据本发明一些实施例的用于基于内部策略标识符来向包应用策略的处理。
图5示出了根据本发明一些实施例的系统。
图6A示出了根据本发明一些实施例的包报头信息和内部虚拟网络标识符之间的示例性映射。
图6B示出了根据本发明一些实施例的包报头信息和内部策略标识符之间的映射示例。
图7示出了根据本发明一些实施例的路由桥可以如何在TRILL网络中执行网络层组播。
图8示出了根据本发明一些实施例的交换机。
图9A给出的流程图示出了根据本发明一些实施例的用于基于内部组播群组标识符来转发包的处理。
图9B给出的流程图示出了根据本发明一些实施例的用于在TRILL网络中执行网络层组播的处理。
图10示出了根据本发明一些实施例的交换机。
图11给出的流程图示出了根据本发明一些实施例的用于基于每个虚拟网络洪泛包的处理。
图12示出了根据本发明一些实施例的洪泛可以如何基于每个虚拟网络执行。
图13示出了根据本发明一些实施例的交换机。
图14示出了根据本发明一些实施例的示例性映射机制。
图15给出的流程图示出了根据本发明一些实施例的用于处理包的处理。
图16示出了传统远程端口镜像系统。
图17A示出了使用根据本发明一些实施例的封装的远程端口镜像系统。
图17B示出了使用根据本发明一些实施例的封装的远程端口镜像系统。
图18示出了根据本发明一些实施例的交换机。
图19给出的流程图示出了根据本发明一些实施例的用于执行远程端口镜像的处理。
图20示出了根据本发明一些实施例的系统。
具体实施方式
给出下述说明从而使得任何本领域技术人员能够实现和使用本发明,并且在具体应用及其要求的上下文中提供下述说明。对所公开各实施例的各种调整对于本领域技术人员将是显而易见的,并且此处定义的一般原理可以应用到其它实施例和应用,而不背离本发明的精神和范围。因而,本发明不限于所示出的实施例,而应该符合与此处公开的原理和特征一致的最宽的范围。
TRILL(多链接透明互连)
TRILL组合了桥接和路由的优点。网桥(例如执行层-2转发的装置)可以透明地连接多个链接以形成单个局域网。在没有TRILL的情况下,网桥使用生成树协议(STP),该生成树协议约束在其上向树转发业务的拓扑,以防止环路。遗憾的是,在树上转发流量导致业务中在对应于树边缘的链接上,使得其它链接完全没有被使用。与网桥不同,互联网协议(IP)路由器(例如执行IP转发的装置)不需要形成生成树以用于转发业务。然而,转发IP业务的路由器需要比网桥更多的配置,并且在IP网络中移动节点要求改变节点的IP地址。IP网络中的每个链接与地址前缀关联,并且该链接的所有节点必须具有该IP前缀。如果节点移动到具有不同IP前缀的另一链接,该节点必须改变其IP地址。除非另外指出,属于“IP”在此公开内容中指“IPv4”和“IPv6”二者。
TRILL网络包括“路由桥”(称为RBridge),该路由桥路由包,但类似于网桥,是通过接收包来获知层-2地址位置。由于包被路由,包转发不限于生成树。另外,由于跳计数包括在TRILL包中,在存在环路情况下,包并不在网络中一直循环。另外,由于获知了层-2地址位置,TRILL网络允许IP节点在网络中从一个链接移动到另一链接而没有任何约束。
图1示出了根据本发明一些实施例的TRILL网络。TRILL网络100可以是服务提供商的网络,其包括核心路由桥102和104以及边缘路由桥106、108和110。路由桥102、106、108和110被耦合到客户装置,而路由桥104未耦合到客户装置。特别地,路由桥102上的端口P3可以耦合到客户C3在地点S1的网络中的装置;路由桥106、108和110上标记为P1的端口可以耦合到客户C1分别在地点S2、S3和S4的网络中的装置;以及路由桥110上的端口P3可以耦合到客户C3在地点S5的网络中的装置。注意,图1中端口编号匹配客户编号,即,标记为P1的端口与客户C1关联,标记为P3的端口与客户C3关联,等等。之所以这是做是为了易于公开。通常,任何路由桥上的任何端口可以潜在地被分配到与一个或多个客户关联的一个或多个虚拟网络。
客户的网络中的虚拟局域网(VLAN)可以跨越多个客户地点。比如,客户C3的网络中的VLAN 112和114包括地点S1和S5中的节点。类似地,客户C1的网络中的VLAN 116和118包括地点S2和S3中的节点,并且客户C1的网络中的VLAN 120包括地点S3和S4中的节点。
属于同一VLAN但是位于不同地点的节点可以通过TRILL网络100而彼此透明地通信。特别地,入口路由桥可以封装从客户接收的包(例如,具有或不具有一个或多个VLAN标签的以太网包),并且使用TRILL报头在TRILL网络100中路由该包。出口路由桥随后可以剥去TRILL报头并且在适当端口上发送原始客户包。比如,包122可以起源于客户C3在地点S1的网络,并且可以在具有与VLAN 112关联的VLAN标签的路由桥102的端口P3上被接收。接着,作为用于此包的入口路由桥的路由桥102可以通过添加TRILL报头来封装包122,从而获得包124(TRILL报头为包124中的阴影部分)。接着,包124的TRILL报头可以用于通过TRILL网络100路由包124,直至包124到达路由桥110,路由桥110为该包的出口路由桥。路由桥110随后可以剥去包124上的TRILL报头,以获得原始包122,并且在端口P3上发送包122,以使得该包可以被递送到客户C3在地点S5的网络中的VLAN 112中的期望目的地。在图1中,在入口路由桥处被接收的包以及从出口路由桥发送的包被示为是相同的。然而,这些包可以不同。比如,如果VLAN转变正在执行,则在入口路由桥处接收的包和从出口路由桥发送的包可以具有不同VLAN标签。
TRILL包格式和路由桥转发的细节可以从IETF草案“PBridge:Base ProtocolSpecification”中找到,该IETF草案可从以下网址获得http://tools.ietf.org/html/ draft-ietf-trill-rbridge-protocol-16,并且通过引用结合于此。
尽管此公开内容中的一些示例是在包括路由桥的TRILL网络的上下文中给出,但是本发明不限于TRILL网络或路由桥。术语“帧”或“包”通常是指比特的组。术语“帧”的使用不是意图将本发明限制于层-2网络。类似地,使用术语“包”不是意图将本发明限制于层-3网络。除非另外指出,术语“帧”或“包”可以与指代比特组的其它术语(诸如"单元"或"数据报")替换。
网络虚拟化
网络虚拟化使得服务提供商能够在公共网络设施上规定虚拟网络(VN)。对于VN上的用户,看上去业务似乎是在特别为该用户构建的单独网络上输运。然而,实际上,来自多个VN的流量可以在公共网络设施上输运。
网络虚拟化具有许多用途。比如,网络虚拟化可以用于在同一物理网络上形成多个逻辑上不同的网络,以遵守政府法规。网络虚拟化的其它用途包括但不限于,在一个公司内的不同组织之间分割网络资源,由此降低网络成本并且简化网络管理。
用于处理通过网络虚拟化解决的问题的一种方法是复制网络中的资源(例如路由器、交换机等),使得资源可以基于每个客户而被规定。然而,此方法是不实际的,因为它昂贵并且它不能扩展。
本发明的一些实施例通过将VPN标识符嵌在TRILL报头中的TRILL选项字段中,在TRILL网络中实施网络虚拟化和/或分割。特别地,入口路由桥可以确定其从客户接收的每个包的VPN标识符,并且将VPN标识符嵌在TRILL报头中的TRILL选项字段中。接着,VPN标识符可以用于支持在TRILL网络中的网络虚拟化和/或分割。特别地,一旦VPN标识符被嵌入TRILL报头,TRILL网络中的路由桥可以使用VPN标识符来确定如何处理包。
在一些实施例中,该系统可以使用服务提供商VLAN标识符来实施网络虚拟化和/或分割。特别地,入口路由桥可以将适当S标签添加到从客户接收的包(注意,基于S标签的方法对于已经具有S标签的输入包可能不起作用)。接着,S标签可以用于实施网络中的虚拟化和/或分割。
包格式
图2示出包括根据本发明一些实施例的TRILL报头的以太网包的一部分。图2所示的包仅仅是用于说明目的,并且不是意图限制本发明。
包200可以包括一个或多个下述字段:外部MAC(介质访问控制)地址202、外部VLAN标签204、TRILL报头字段206、TRILL选项字段208、内部MAC地址210和内部VLAN标签212。典型地,该包从顶部传输到底部,即,与外部MAC地址202关联的位将在与外部VLAN标签204关联的位出现在传输介质上之前,出现在传输介质上,诸如此类。在下文讨论这些字段的内容以及它们的用途。
外部MAC地址202可以包括外目的MAC地址214和外源MAC地址216。在包穿过服务提供商的网络时,这些MAC地址和外部VLAN标签204典型地在每个TRILL跳均改变。特别地,在每跳,外源MAC地址216与用于该跳的源节点(例如路由桥)的MAC地址关联,外目的MAC地址214与用于该跳跃的目的节点(例如路由桥)的MAC地址关联,并且外部VLAN标签204与包括用于该跳跃的源节点和目的节点的VLAN关联。
外部VLAN标签204可以包括以太网类型字段218和外部VLAN标识符220。以太网类型字段218的值可以指示下一个字段为VLAN标识符。VLAN标识符220可以在服务提供商的网络中使用以形成多个广播域。
TRILL报头字段206可以包括以太网类型字段222和TRILL报头224。以太网类型字段222的值可以指示下一个字段为TRILL报头。TRILL报头224可以包括用于通过嵌在服务提供商的网络中的TRILL网络来路由包的信息。特别地,如图2所示,TRILL报头224可以包括:版本字段246,其指示TRILL版本;预留字段248,其可以预留用于将来使用;组播字段250,其指示此包是否为组播包;TRILL选项长度252,其指示跟随TRILL报头的任何TRILL选项字段的长度(就32位字而言);以及跳计数254,其可以在包穿过服务提供商的网络时在每个路由桥处递减。
TRILL报头224还包括出口路由桥别名256和入口路由桥别名258。入口路由桥别名258对应于从客户的网络接收包的入口路由桥,并且对于单播包,出口路由桥别名256对应于发送包到客户的网络的出口路由桥。对于组播包,出口路由桥别名256对应于作为包将在其上被转发的组播树的根部的路由桥。比如,在图1中,当包122在入口路由桥102被接收时,入口路由桥102可以使用包122中的报头信息来确定包122需要被路由到出口路由桥110。接着,入口路由桥102可以将TRILL报头字段206添加到包122以获得包124。特别地,路由桥102可以将包124的TRILL报头中的入口路由桥别名258设置为路由桥102的别名,以及将包124的TRILL报头中出口路由桥别名256设置为路由桥110的别名。路由桥102随后可以完全或部分地基于包124的TRILL报头来转发包124。
TRILL选项字段208可以包括比特编码选项以及以TLV(类型-长度-值)格式编码的一个或多个选项。特别地,TRILL选项字段208可以包括比特编码选项260(其为一比特选项标志)和TLV编码选项226。比如,20比特VPN标识符可以被编码为TLV编码的选项。特别地,类型字段262的值可以指示此选项指定VPN标识符。长度字段264可以指示以八比特组为单位的TLV编码选项的数据部分的长度。在图2所示包中,TLV编码选项226被用于指定20比特VPN标识符,并且长度字段264被设置为值0x6。TLV编码选项226的数据部分紧接着长度字段264之后开始。特别地,在图2所示包中,字段266、268和228的总长度(以八比特组为单位)等于长度字段264所指定的0x6。另外,如图2所示,TLV编码选项226中的数据部分的最后20比特可以用于指定VPN标识符228。
注意,20比特VPN标识符可以使用更少数据部分来指定,例如,使用仅仅0x3个八位字节替代0x6个八位字节。然而,一些实施例使用下述非显而易见的认知:可能期望将20位VPN标识符与字边界对齐,以简化芯片设计和/或改善性能。因而,在一些实施例中,使用0x6个八比特字节,而不是0x3个八比特字节以使得20比特VPN标识符与32比特字边界对齐。比如,如图2所示,VPN标识符228与32位字边界对齐。
内部MAC地址210可以包括内源MAC地址232和内目的MAC地址230。内部MAC地址210可以是存在于从客户的网络接收的包的报头中的MAC地址。比如,在图1中,假设客户C3在地点S1的网络内的VLAN 112中的源节点发送包到客户C3在地点S5的网络中的VLAN 112中的目的节点。在此场景中,内源MAC地址232可以对应于在地点S1的源节点,并且内目的MAC地址230可以对应于在地点S5的目的节点。
内部VLAN标签212可以包括一个或多个VLAN标签。比如,内部VLAN标签212可以包括:S标签,其包括以太网类型字段234和S-VLAN标识符236;C标签,其包括以太网类型字段238和C-VLAN标识符240;以及另一种标签,其包括以太网类型字段242和VLAN标识符244。外部VLAN标签204和内部VLAN标签212中的每个VLAN标签还可以包括:三比特优先级代码点(PCP)字段(在此公开内容中也称为“优先级”或“优先级位”),例如PCP 270;以及一比特CFI字段,例如CFI 272。当使用S标签时,CFI字段可以携带丢弃资格指示符(DEI)比特。以太网类型字段(例如234、238和242)中的值可以指示跟随的VLAN标签的类型。比如,以太网类型字段234和238可以指示跟随相应以太网类型字段的S标签的VLAN标识符以及C标签的VLAN标识符。S标签和C标签可以被客户用于形成例如在提供商桥接标准中所定义的堆叠VLAN架构。S标签还可以由服务提供商用于实施网络虚拟化和/或分割。包200还可以包括其它标签,每个标签具有指示标签的类型的标签类型字段,以及存储与该标签有关的内容(例如标识符)的字段。比如,包200可以包括32比特拥堵通知标签(CN标签),其包括16比特标签类型字段和16比特流标识符。拥堵通知标签可以由客户用于管理网络拥堵。
注意,包可以包括或不包括图2所示所有字段。比如,在一些实施例中,包可以不包括内部VLAN标签212和/或外部VLAN标签204的一个或多个。另外,在一些实施例中可以不允许字段的某种组合。比如,在一些实施例中,包可以包括S标签或者包括TRILL选项字段,但是不包括二者。附加地,某些字段的值可以彼此相关。比如,在一些实施例中,S-VLAN标识符236可以被拷贝到VPNID228的12个最低有效位。
VLAN标签在IEEE(电气和电子工程师学会)标准IEEE 802.1Q中指定。该标准的较早版本,包括并且直至此标准的IEEE 802.1Q-2005版本,描述了单个VLAN标签可以如何被添加到以太网包以在同一局域网(LAN)内形成多个广播域。术语提供商桥接是指此标准的修正,其允许S标签(服务VLAN标签有时称为提供商标签)被堆叠在单个以太网包中。提供商桥接使得服务提供商能够在共享的网络设施上运送来自多个客户的VLAN业务,而不约束每个客户可获得的VLAN地址空间。关于提供商桥接的更多细节,可以在标准IEEE802.1ad的规范中找到。
在一些实施例中,该系统可以添加TRILL报头到提供商桥接包。在这些实施例中,从客户网络接收的包可以包括S标签。服务提供商的网络随后可以添加TRILL报头到包。在一些实施例中,该系统可以确保最外部VLAN标签中的优先级比特与S标签中的优先级比特相同。
内部虚拟网络标识符和内部策略标识符
当包在输入端口上被接收时,包报头由交换机处理以确定包将在其上被转发的输出口端口。通常,转发机制(例如针对执行转发查找而特别设计的集成电路)是数据路径中的瓶颈。因此,提高处理速度并且减小转发机制的尺寸和复杂度通常非常重要。
用于在路由桥中支持网络虚拟化的一种方法是直接使用VPN标识符和/或包报头中的其它字段来执行转发查找。遗憾的是,此方法会要求转发机制使用大量的比特来执行转发查找。结果,设计使用此方法执行转发的交换机成本会非常高。
本发明的一些实施例基于包在其上被接收的端口和/或包中的一个或多个字段(其可以包括VPN标识符)来确定内部虚拟网络标识符。接着,基于该内部虚拟网络标识符来转发该包。内部虚拟网络标识符的长度(就位而言)可以小于包中被用于确定内部虚拟网络标识符的一个或多个字段的组合长度。长度的这种减小可以提高转发机制的处理速度,并且减小实施的总尺寸和复杂度。
存在至少两个非显而易见的认知,所述认知允许我们将包中的一个或多个字段映射到更短尺寸的内部虚拟网络标识符,而不显著影响网络虚拟化功能性。第一非显而易见的认知为,即使每个客户被赋予创建大量虚拟网络的能力,也不可能每一个客户都将规定大量的虚拟网络。比如,即使每个客户可以被赋予创建4K VLAN的能力,也不可能每一个客户都将规定4K VLAN。因此,内部虚拟网络标识符不必长得足以应对每个客户均规定4KVLAN的情形。注意,全部4K VLAN地址空间对于每个客户仍是可获得的。
第二非显而易见的认知为,多个虚拟网络可以被映射到单个内部虚拟网络标识符。注意,如果路由桥需要在本地端口上转发包到客户,则路由桥需要为虚拟网络分配唯一内部虚拟网络标识符。比如,入口或出口路由桥可以为其包被转发到路由桥上面向客户的端口的每个虚拟网络分配唯一内部虚拟网络标识符。然而,如果路由桥不是一组虚拟网络的入口或出口路由桥,则路由桥可以将这组虚拟网络映射到共同的“通过”内部虚拟网络标识符。比如,如果路由桥不是多个(VLAN标识符,VPN标识符)元组的入口或出口路由桥,则路由桥可以将这些(VLAN标识符,VPN标识符)元组映射到同一内部虚拟网络标识符。
图3示出根据本发明一些实施例的交换机。
交换机300可以包括可以经由例如总线的通信信道而彼此通信的多个机制。交换机300可以使用一个或多个集成电路来实现。在一些实施例中,交换机300为路由桥(例如路由桥102),其包括确定机制302、转发机制304、封装机制306和策略应用机制308。在一些实施例中,这些机制可以是专用集成电路的一部分。
确定机制302可以配置成基于包在其上被接收的端口和/或包中的一个或多个字段来确定包(例如以太网包)的内部虚拟网络标识符和/或内部策略标识符。特别地,包的报头中被用于确定内部虚拟网络标识符和/或内部策略标识符的字段可以包括S-VLAN标识符、C-VLAN标识符、VPN标识符和/或一个或多个MAC地址。交换机和/或端口配置可以规定哪些字段被用于确定内部虚拟网络标识符和/或内部策略标识符。比如,交换机的一个端口可以配置成将所有包映射到特定内部虚拟网络标识符和/或特定内部策略标识符。交换机的另一端口可以配置成将一组C-VLAN标识符映射到对应一组内部虚拟网络标识符和/或对应一组内部策略标识符,并且在C-VLAN标识符不在这组C-VLAN标识符中时,将默认内部虚拟网络标识符和/或默认内部策略标识符指定给该包。
转发机制304可以配置成基于内部虚拟网络标识符来转发包。特别地,转发机制304可以包括使用内部虚拟网络标识符而被索引的表(例如存储器中的阵列)。表中的每个记录(例如阵列单元)可以包括指示如何转发该包的信息。比如,记录可以包括标识传出端口的端口标识符。记录还可以包括用于调整报头中的一个或多个字段的指令和/或信息(例如,该记录可指示VLAN转变将被执行和指定新VLAN标识符)。附加地,记录可以包括需要被添加到包的报头字段(例如TRILL报头和/或S标签)。
封装机制306可以配置成将包封装在TRILL包中。特别地,封装机制306可以添加TRILL报头到该包以获得TRILL包。在一些实施例中,包报头信息可以用于确定需要被添加到包的TRILL报头。换言之,在这些实施例中,TRILL报头和内部虚拟网络标识符被同时确定。在一些实施例中,内部虚拟网络标识符可以用于确定需要被添加到包的TRILL报头(例如,转发表中的记录可以指定TRILL报头)。一旦TRILL报头被添加,TRILL包可以通过传出端口被发送。
在一些实施例中,转发机制304或封装机制306可以配置成添加S标签(如果S标签尚未存在于该包中)以实施网络虚拟化。特别地,如果从客户接收的包包括C标签,但不包括S标签,则路由桥可以添加S标签到该包以支持在TRILL网络内的网络虚拟化和/或分割。在此公开内容中描述的该系统和技术可以用于使用嵌在TRILL报头中的VPN标识符或者使用S标签来实施网络虚拟化和/或分割。
在一些实施例中,策略应用机制308可以配置成根据与内部策略标识符关联的策略来处理包。如果期望根据同一策略处理来自这些虚拟网络的包,则来自不同虚拟网络的包可以被映射到同一内部策略标识符。策略通常可以包括指定包在该系统中如何被处理的任意规则组。当策略应用机制308根据给定策略处理包时,该系统可以执行一个或多个动作,所述动作可以包括但不限于:丢弃包,在具体链接或路径上路由包,和/或修改包的报头中的信息。策略应用机制308针对包所执行的基于特定策略的动作可以取决于包中存储的信息,并且可以无视由转发机制304对包作出的转发决定。
注意,图3仅仅用于说明的目的,并且并非意图将本发明限制于所公开的形式。特别地,在一些实施例中,交换机300可以不是路由桥,和/或可以包括比图3所示机制更少或更多的机制。
图4A给出的流程图示出了根据本发明一些实施例的用于基于内部虚拟网络标识符来转发包的处理。
该处理可以由交换机执行,例如路由桥102。在接收到包时,交换机可以基于包在其上被接收的端口和/或包的报头中的一个或多个字段,来确定包的内部虚拟网络标识符(操作402)。特别地,内部虚拟网络标识符可以基于下述来确定:客户VLAN标识符、服务提供商VLAN标识符、源MAC地址和/或VPN标识符。比如,交换机可以通过在上下文可寻址(context-addressable)存储器中查找包的报头中的一个或多个字段,来确定内部虚拟网络标识符。如果查找失败,交换机可以将默认内部虚拟网络标识符指定给包。默认内部虚拟网络标识符可以在一个或多个粒度水平被定义,例如在虚拟网络范围或物理网络范围的基础上、在系统范围的基础上,和/或在每个端口的基础上定义。
接着,交换机可以基于内部虚拟网络标识符来转发该包(操作404)。交换机可以附加地通过添加TRILL报头将包封装在TRILL包中,并且通过基于内部虚拟网络标识符所确定的传出端口来发送TRILL包。
图4B给出的流程图示出了依据本发明一些实施例的用于基于内部策略标识符来对包应用策略的处理。
该处理可以由交换机执行,例如路由桥102。在接收到包时,交换机可以基于包在其上被接收的端口和/或包的报头中的一个或多个字段来确定包的内部策略标识符(操作452)。特别地,内部策略标识符可以基于下述来确定:客户VLAN标识符、服务提供商VLAN标识符、源MAC地址和/或VPN标识符。比如,交换机可以通过在上下文可寻址存储器中查找包的报头中的一个或多个字段,来确定内部策略标识符。如果查找失败,交换机可以将默认内部策略标识符指定给该包。默认内部策略标识符可以在一个或多个粒度水平被定义,例如在虚拟网络范围或物理网络范围的基础上、在系统范围的基础上,和/或在每个端口的基础上被定义。
接着,交换机可以基于内部策略标识符来处理该包(操作454)。基于内部策略标识符来处理包可涉及执行一个或多个动作,所述动作可以包括但不限于:丢弃包,在特定链接或路径上路由包,和/或修改包的报头中的信息。所执行的基于特定策略的动作可以取决于包中存储的信息,并且可以无视基于内部虚拟网络标识符对包作出的转发决定。
图5A示出了依据本发明一些实施例的包报头信息和内部虚拟网络标识符之间的映射的示例。
如上所述,包在其上被接收的端口和/或包的报头中的一个或多个字段可以被映射到内部虚拟网络标识符。图5A所示映射将来自包的报头的(VLAN标识符,VPN标识符)元组映射到内部虚拟网络标识符。图5所示映射仅仅用于说明目的并且并非意图将本发明限制于所公开的形式。
图5A中示出的映射可以对应于图1中的路由桥102、104、106、108和110。路由桥106上的映射可以将(VLAN标识符,VPN标识符)元组506和508分别映射到内部虚拟网络标识符IVNID-01和IVNID-02。路由桥108上的映射可以将元组506、508和510分别映射到内部虚拟网络标识符IVNID-03、IVNID-04和IVNID-05。路由桥110上的映射可以将元组502、504和510分别映射到内部虚拟网络标识符IVNID-06、IVNID-07和IVNID-08。
路由桥102上的映射可以将元组502和504分别映射到内部虚拟网络标识符IVNID-09和IVNID-10。如果与元组506、508和510关联的业务通过路由桥102,这些元组可以被映射到公共内部虚拟网络标识符,即IVNID-11。如果所有业务通过路由桥104,则路由桥可以将所有元组映射到公共内部虚拟网络标识符,即IVNID-12。
在一些实施例中,内部虚拟网络标识符的范围不延伸超出路由桥。因此,不同路由桥可以将同一元组映射到不同内部虚拟网络标识符。比如,元组506在路由桥106、108、102和104分别被映射到内部虚拟网络标识符IVNID-01、IVNID-03、IVNID-11和IVNID-12。
当路由桥106在报头信息包括元组506的端口P1上接收包时,它可以使用图5A所示映射来确定关联的内部虚拟网络标识符,即IVNID-01。接着,路由桥106可以基于IVNID-01转发该包。特别地,路由桥106可以使用IVNID-01作为关键字来执行转发查找。查找操作的结果可指示TRILL报头将被添加到包以获得TRILL包,并且所得到的TRILL包将被转发到路由桥102。在路由桥102,TRILL包可以基于TRILL报头而被转发到路由桥108。
注意,路由桥102可以基于报头信息来确定内部虚拟网络标识符(例如IVNID-11)。然而,由于该包具有TRILL报头,内部虚拟网络标识符可以被路由桥102忽略以用于转发包的目的(假定包不是针对用于VLAN 112或114)。
当包在路由桥108被接收时,内部虚拟网络标识符(例如IVNID-03)可以基于报头信息被确定。接着,内部网络标识符可以用于执行转发查找。查找操作的结果可指示该包将在端口P1上被转发到VLAN 116。因此,路由桥108可以在端口P1上将该包转发到VLAN 116。
图5B示出了依据本发明一些实施例的包报头信息和内部策略标识符之间的映射的示例。
如上所述,包在其上被接收的端口和/或包的报头中的一个或多个字段可以被映射到内部策略标识符。图5B所示映射将来自包的报头的(VLAN标识符,VPN标识符)元组映射到内部策略标识符(IPID)。通常,内部策略标识符和期望被强加的策略之间存在一对一映射。图5B所示映射仅仅用于说明目的并且并非意图将本发明限制于所公开的形式。
图5B中示出的映射可以对应于图1中的路由桥102和110。路由桥110上的映射可以将(VLAN标识符,VPN标识符)元组502、504、510分别映射到内部策略标识符IPID-01、IPID-02和IPID-02。路由桥102上的映射可以将元组502和504映射到内部策略标识符IPID-03。注意,相同元组可以由不同路由桥进行不同处理(就哪个策略被应用而言)。比如,路由桥110对与元组502和504关联的包应用不同策略(因为如图5B所示,这些元组被映射到不同IPID),而路由桥102对与元组502和504关联的包应用同一策略。另外,路由桥可以对属于不同虚拟网络和/或客户的包应用同一策略。比如,元组504和510可以分别对应于属于VLAN114和120的包。如图5B所示,路由桥110将元组504和510映射到同一IPID,即路由桥110对来自VLAN 114(其属于客户C3)和VLAN 120(其属于客户C1)的包应用同一策略。
支持TRILL网络中的多个组播树
当组播包在输入端口时被接收时,组播包报头由交换机处理,以确定组播包在其上将被转发的一组输出口端口。通常,转发机制(例如,针对执行转发查找设计的专用集成电路)是数据路径中的瓶颈。因此,提高处理速度并且减小转发机制的尺寸和复杂度通常非常重要。
用于支持多个组播树的一种方法是在给定源地址和组播群组地址,在转发表中具有多个转发条目(例如,每个组播树一个条目)。遗憾的是,此方法会显著增大转发表的大小或者严重限制可以被转发表支持的组播群组的数目。
一些实施例基于组播包的报头中的一个或多个字段来确定内部组播群组标识符。组播群组标识符随后用于确定将通过其转发组播包的一组出口端口。
图6A示出了根据本发明一些实施例的可以如何确定内部组播群组标识符。
内部组播群组标识符612由两个比特组组成。第一比特组608可以由查找转发表604使用组播包的源地址和组播地址602来确定。在一些实施例中,转发表604使用内容可寻址存储器来实施。第二比特组610可以基于组播包中的组播树标识符606来确定。如果组播包不具有组播树标识符,交换机可以独立地选择第二比特组610,例如通过使用基于哈希的技术。
注意,转发表并不存储交换机支持的每个组播树的条目。反而,转发表存储给定源地址和组播地址的单个条目。第二比特组随后用于从与给定源地址和组播地址关联的多个组播树选择特定树。由于转发表不需要存储每个组播树的条目,与要求转发表存储每个组播树的条目的其它方法相比,本发明的一些实施例能够支持显著更大数目的组播树。
图6B和6C示出了依据本发明一些实施例的用于同一源和组播地址的不同组播树。
路由桥622-636可以位于TRILL网络中。组播群组可以包括路由桥622、626、628、630和636(组播群组中的路由桥使用虚线圆示出)。图6B和6C使用虚线示出两个组播树。注意,两个组播树的根部均在路由桥630处。
图6D示出了根据本发明一些实施例的可以如何确定内部组播群组标识符。
当组播包在路由桥626被接收时,它可以使用组播包的源和组播地址652来查找转发表654,从而获得第一比特组658。源和组播地址652可以是以太网地址或IP地址。
接着,路由桥626可以使用组播包中的组播树标识符来确定第二比特组。注意,组播包中的组播树标识符识别组播包将在其上被转发的组播树。在一些实施例中,组播树标识符为路由桥别名。比如,路由桥630可以与可以对应于根部设在路由桥630的多个组播树的多个别名关联。
图6B中示出的组播树可以与组播树标识符656关联,并且路由桥626可以使用组播树标识符656以确定第二比特组660。图6C中说明的组播树可以与组播树标识符666关联,并且路由桥626可以使用组播树标识符666以确定第二比特组670。
路由桥626随后可以组合第一比特组和第二比特组以获得内部组播群组标识符。比如,如果组播包包含组播树标识符656,路由桥626可以将第一比特组658与第二比特组660组合,以获得内部组播群组标识符662。另一方面,如果组播包包含组播树标识符666,路由桥626可以将第一比特组658与第二比特组670组合以获得内部组播群组标识符672。
图6E示出根据本发明一些实施例内部组播群组标识符可以如何用于确定出口端口组。
出口端口查找表680可以用于基于内部组播群组标识符来确定出口端口组。比如,在路由桥626处使用内部组播群组标识符662执行表查找可以输出出口端口组{P-636}。端口P-636代表耦合到路由桥636的路由桥626上的端口。类似地,在路由桥626处使用内部组播群组标识符672执行表查找可以输出出口端口组{P-622,P-636}。端口P-622代表耦合到路由桥622的路由桥626上的端口。一旦出口端口组被确定,该系统可以通过这些出口端口来转发组播包的副本。出口端口查找表680可以被实施为使用内部组播群组标识符被索引的阵列。阵列中的每个条目可以存储出口端口组。
TRILL网络中的网络层组播
一些实施例提供用于执行网络层(例如IP层)组播的系统和技术。计算机联网典型地使用经常称为网络协议栈的分层软件架构来实现。每个层通常与一组协议关联,所述协议定义用于处理该层中的包的规则和惯例。每个下层执行针对紧接着在其上方的层的服务以帮助处理包。在源节点处,当有效载荷通过源节点的网络协议栈从高层移动到下层时,每个层典型地添加报头。当有效载荷从最下层移动到在目的节点的最高层时,目的节点典型地通过处理和移除每个层的报头来执行逆处理。
在网络层(例如IP层)的组播群组成员可以跨越多个虚拟网络,例如,VPN和/或VLAN。比如,在图1中,网络层组播群组可以包括分别作为在地点S2、S3和S4的VLAN 116、118和120的以部分的端主机。在一些实施例中,路由桥可以执行网络层组播,即,除了基于TRILL报头、VPN标识符、MAC地址和/或VLAN标签来转发包之外,路由桥还可以基于网络层组播地址来转发包。
图7示出根据本发明一些实施例路由桥在TRILL网络中可以如何执行网络层组播。
路由桥702-716可以位于TRILL网络,其包括多个虚拟网络,例如VPN和/或VLAN。每个虚拟网络可以支持多个TRILL组播树。比如,使用虚线说明的TRILL组播树718可以属于VLAN V1,并且使用短划线说明的TRILL组播树720可以属于VLAN V2。
网络层(例如IP层)组播群组可以包括跨过多个虚拟网络(例如VPN和/或VLAN)分布的端主机。比如,组播群组可以包括位于耦合到路由桥702、708、712和716(这些路由桥已经通过在它们周围绘制圆而被突出显示)的VPN和/或VLAN中的端主机。当用于此组播群组的组播包在路由桥被接收时,路由桥可以在特定VLAN上的TRILL组播树上转发组播包。比如,当组播包在路由桥704被接收时,它可以在VLAN V1上的TRILL组播树718上转发该包。
当组播包在路由桥710被接收时,它可以基于组播包的网络层组播地址来转发该包。特别地,路由桥710可以确定该组播包需要在VLAN V1和VLAN V2二者上被转发。路由桥710可以在VLAN V2上被支持的多个组播树的任何一个上转发组播包。然而,为了保证正确的组播转发,路由桥710会需要沿着与该组播包在其上被接收的同一组播树在VLAN V1上转发组播包。特别地,如果路由桥710在VLAN V1上在与该组播包在其上被接收的组播树不同的组播树上转发组播包,它可能形成转发环路和/或组播包可能不能到达组播群组中的所有端主机。注意,如果网络不支持多个组播树,则这些问题并不出现。
注意,路由桥可以配置或不配置成执行网络层组播。比如,在上面的示例中,路由桥704未被配置成执行网络层组播,而路由桥710配置成执行网络层组播。
在一些实施例中,组播包可以是TRILL组播包,并且可以包括与组播包将在其上被转发的组播树关联的组播树标识符。TRILL组播包的报头可以包括指示该TRILL包为组播包的组播字段(例如图2中的组播字段250)。出口路由桥别名(例如图2中的出口路由桥别名256)可以对应于组播包将在其上被转发的组播树的根部。
图8示出根据本发明一些实施例的交换机。
交换机800可以包括可以经由例如总线的通信信道而彼此通信的多个机制。交换机800可以使用一个或多个集成电路来实现。
在一些实施例中,交换机800为路由桥(例如路由桥102),其包括接收机制802、确定机制804、转发机制806、封装机制808和解封装机制810。在一些实施例中,这些机制可以是专用集成电路的一部分。
接收机制802可以配置成接收组播包(例如以太网或TRILL组播包)。确定机制804可以配置成基于与组播包关联的源地址、组播地址和组播树标识符字段,来确定内部组播群组标识符。
转发机制806可以配置成基于内部组播群组标识符,来转发该包。特别地,转发机制806可以包括使用内部组播群组标识符来索引的表(例如存储器中的阵列)。表中的每个记录(例如阵列单元)可以包括指示如何转发该包的信息。比如,记录可以包括识别出口端口的一组出口端口标识符。记录还可以包括用于修改报头中的一个或多个字段的指令和/或信息(例如,记录可指示VLAN转变将被执行以及指定新VLAN标识符)。附加地,记录可以包括需要添加到包的报头字段(例如TRILL报头)。当组播包将被发送到被耦合到出口端口的多个VLAN时,这多个组播包的副本可以在交换机800的出口端口上被发送。
封装机制808可以配置成将组播包的副本封装在TRILL组播包中。特别地,封装机制808可以添加TRILL报头到组播包的副本以获得TRILL组播包。在一些实施例中,TRILL报头和内部组播群组标识符可以同时被确定。一旦TRILL报头被添加,TRILL组播包可以通过传出端口被发送。
解封装机制810可以配置成解封TRILL组播包(例如通过移除TRILL报头),以获得封装在TRILL组播包中的组播包。该组播包随后可以被转发到客户的网络(例如客户VLAN)。
在一些实施例中,交换机800(例如图7中的路由桥710)可以配置成执行网络层组播。在这些实施例中,接收机制802可以配置成接收包括网络层组播地址的组播包。特别地,接收机制802可以在与第一虚拟网络(例如VLAN V1)关联的第一组播树(例如图7中的TRILL组播树718)上接收组播包。组播包可以包括与第一组播树关联的第一组播树标识符。第一组播树标识符可以是在第一组播树的根部的路由桥的别名。
确定机制804可以配置成基于网络层组播地址,来确定与包将在其上被转发的一个或多个虚拟网络关联的一个或多个组播树。比如,确定机制804可以配置成基于网络层组播地址来确定与组播包将在其上被转发的第二虚拟网络(例如VLAN V2)关联的第二组播树(例如图7中的TRILL组播树720)。
转发机制806可以配置成在一个或多个组播树上转发组播包。比如,转发机制806可以配置成在与第一虚拟网络关联的第一组播树上转发组播包,并且在与第二虚拟网络关联的第二组播树上转发组播包的副本。组播包的副本可以包括与第二组播树关联的第二组播树标识符。第二组播树标识符可以是在第二组播树的根部的路由桥的别名。
在一些实施例中,确定机制804可以配置成基于该网络层组播地址和该组播包的网络层源地址来确定内部组播群组标识符,并且转发机制806可以配置成基于内部组播群组标识符来转发组播包。
注意,图8仅仅用于说明的目的,并且并非意图将本发明限制于所公开的形式。特别地,在一些实施例中,交换机800可以不是路由桥,和/或可以包括比图8所示更少或更多的机制。
图9A给出的流程图示出了根据本发明一些实施例的用于基于内部组播群组标识符来转发包的处理。
该处理可以由例如路由桥102的交换机执行。在接收到组播包(例如以太网或TRILL组播包)时,交换机可以基于与组播包关联的源地址(例如源MAC或IP地址)、组播地址(例如组播MAC或IP地址)以及组播树标识符字段,来确定内部组播群组标识符(操作902)。
在一些实施例中,该系统可以通过组合下述两比特组来确定内部组播群组标识符:基于源地址和组播地址确定的一个比特组,以及基于组播树标识符确定的第二比特组。特别地,在一些实施例中,组合这两个比特组涉及串接这两个比特组以形成内部组播群组标识符。
比如,源IP地址和组播IP地址可以用于在上下文可寻址存储器中查找第一比特组。如果组播包包括组播树标识符(例如路由桥别名),则组播树标识符可以用于确定第二比特组。如果组播包并不包括组播树标识符,则该系统可以通过对组播包中的一个或多个字段进行哈希处理(或者通过任何其它手段)来确定第二比特组。接着,第一比特组可以与第二比特组串接以获得内部组播群组标识符。
接着,交换机可以基于内部组播群组标识符来转发组播包(操作904)。特别地,该系统可以基于内部组播群组标识符来确定一出口端口组。接着,该系统可以通过出口端口组中的每个端口来发送组播包的至少一个副本。交换机可通过添加TRILL报头而附加地将组播包封装在TRILL组播包中,并且通过基于内部组播群组标识符确定的出口端口组来发送TRILL组播包的副本。
图9B给出的流程图示出了根据本发明一些实施例的用于在TRILL网络中执行网络层组播的处理。
该处理可以由例如图7中的路由桥710的交换机执行。交换机可以接收包括网络层组播地址的组播包(例如以太网或TRILL组播包),其中组播包在与第一虚拟网络关联的第一组播树上被接收(操作952)。比如,路由桥710可以在VLAN V1上的TRILL组播树718上从路由桥704接收组播包。
接着,交换机可以基于网络层组播地址来确定与组播包将在其上被转发的第二虚拟网络关联的第二组播树(操作954)。比如,路由桥710可以确定组播包将在其上被转发的VLAN V2上的TRILL组播树720。第二组播树可以随机被确定,或它可以基于链接利用率来确定(例如,通过确定拥堵最少的组播树)。
交换机随后可以在与第一虚拟网络关联的第一组播树上转发组播包,并且在与第二虚拟网络关联的第二组播树上转发组播包的副本(操作956)。比如,路由桥710可以在TRILL组播树718上将组播包转发到路由桥708和714,并且在TRILL组播树720上将组播包的副本转发到路由桥706和716。
每个虚拟网络的洪泛
如果转发查找操作失败,交换机可以洪泛包以确保包到达其期望目的。遗憾的是,洪泛会消耗大量的网络资源。因此,如果可能的话,通常期望限制洪泛范围。
在基于IVNID的方法中,来自多个虚拟网络(例如VPN或VLAN)的包可以被映射到同一IVNID值。比如,在图5A中,(VLAN标识符,VPN标识符)元组506、508和510在路由桥102上被映射到同一IVNID值。在一种方法中,如果包的转发查找操作失败,交换机可以将包至少洪泛到映射到该包的IVNID的那些虚拟网络。比如,如果对于与IVNID-11关联的包,在路由桥102上的转发查找操作失败,路由桥102可以至少在与元组506、508和/或510关联的端口上洪泛包。
在超过所需的虚拟网络上洪泛包会浪费联网资源。因此,在本发明的一些实施例中,在每个虚拟网络的基础上执行洪泛。特别地,在一些实施例中,基于VPN标识符在端口执行过滤,并且如果该包不包括VPN标识符字段,则可以基于该包中的其它字段来确定VPN标识符(例如,VPN标识符可以基于S-VLAN标识符来确定)。比如,路由桥102可以基于IVNID确定一个出口端口组。接着,路由桥102可以将包的副本提供到该出口端口组。只有当包中的虚拟网络标识符(例如,TRILL报头中的VPN标识符或者基于包中的其它字段确定的VPN标识符)与出口端口关联时,每个出口端口随后可以洪泛包。换言之,一旦包基于IVNID已经被提供到出口端口组,出口端口随后可以基于包中的虚拟网络标识符字段来过滤包。比如,如图5A所示,所有包在路由桥104上被映射到IVNID-12。这种情况下,如果转发查找失败,包可以被提供到路由桥104上的所有出口端口。每个出口端口随后可以根据出口端口是否与该包中的虚拟网络标识符关联来洪泛包。
图10示出了根据本发明一些实施例的交换机。
交换机1000可以包括可以经由例如总线的通信信道而彼此通信的多个机制。交换机1000可以使用一个或多个集成电路来实现。在一些实施例中,交换机1000为路由桥(例如路由桥102),其包括转发查找机制1002、确定机制1004和洪泛机制1006。在一些实施例中,这些机制可以是专用集成电路的一部分。
转发查找机制1002可以配置成基于包的报头中的一个或多个字段来执行转发查找操作。包的报头中的一个或多个字段可以包括但不限于:客户VLAN标识符、服务提供商VLAN标识符、源MAC地址、目的MAC地址、入口路由桥别名以及出口路由桥别名。在一些实施例中,转发查找机制1002可以配置成使用内容可寻址存储器来执行查找。
交换机1000可以基于包在其上被接收的端口和/或包的报头中的一个或多个字段来确定包(例如以太网包)的内部虚拟网络标识符。交换机和/或端口配置可以指定哪些字段被用于确定内部虚拟网络标识符。比如,交换机的一个端口可以配置成将所有包映射到特定内部虚拟网络标识符。交换机的另一端口可以配置成将一组C-VLAN标识符映射到对应的一组内部虚拟网络标识符,并且当C-VLAN标识符不在这组C-VLAN标识符中时,将默认内部虚拟网络标识符分配给该包。
如果转发查找操作是成功的,交换机1000可以基于转发查找操作的结果以及内部虚拟网络标识符来转发该包。交换机可以包括使用内部虚拟网络标识符来索引的表(例如存储器中的阵列)。表中的每个记录(例如阵列单元)可以包括用于转发包的信息。比如,该记录可以包括用于修改报头中的一个或多个字段的指令和/或信息(例如,记录可指示VLAN转变将被执行并且指定新VLAN标识符)。附加地,记录可指示需要添加到包的报头字段(例如TRILL报头)。一旦包被提供到出口端口,该系统可以确定用于该包的封装。特别地,在出口端口该系统可以确定是否使用C标签、S标签、TRILL报头和/或包含VPN标识符的TRILL选项字段通过该出口端口来发送该包。该系统还可以执行转变操作,诸如转变C标签、S标签和/或VPN标识符。
然而,如果转发查找操作失败,确定机制1004可以基于包的报头中的虚拟网络标识符来确定一组出口端口。比如,该系统可以基于VLAN标签中的VLAN标识符或TRILL选项字段中的VPN标识符,或者其组合来确定这组出口端口。
洪泛机制1006可以配置成在该组出口端口上洪泛包。由于洪泛是在基于包的报头中的虚拟网络标识符而确定的一组出口端口上执行,所以与在所有端口上洪泛包而不管网络中的特定节点是否属于与该包关联的虚拟网络的方法相比,该洪泛更高效。
在一些实施例中,通过在可以基于包的报头中的虚拟网络标识符来确定的组播树上转发包,由此洪泛包。特别地,交换机1000可以创建其报头包括组播树标识符的TRILL组播包。接着,交换机1000可以在与组播树标识符关联的这组出口端口上转发TRILL组播包。在一些实施例中,组播树标识符是作为组播树的根部的路由桥的别名。
注意,图10仅仅用于说明的目的,并且并非意图将本发明限制于所公开的形式。在一些实施例中,交换机1000可以不是路由桥,和/或可以包括比图10所示映射更少或更多的机制。
在一些实施例中,确定机制1004可以基于与该包关联的IVNID和/或包的报头中的一个或多个字段来确定出口端口组。接着,洪泛机制1006可以将包的副本提供到该出口端口组中的每个出口端口。只有当包中的虚拟网络标识符与出口端口关联时,洪泛机制1006随后才会在该出口端口上洪泛包的副本。比如,如果出口端口不耦合到与虚拟网络标识符关联的客户网络,则出口端口可以过滤掉该包。
图11给出的流程图示出了根据本发明一些实施例的用于在每个虚拟网络的基础上洪泛包的处理。
该处理可以由例如路由桥102的交换机执行。在接收到包时,交换机可以基于包中的一个或多个字段和/或包在其上被接收的端口,来确定内部虚拟网络标识符(操作1102)。接着,该系统可以基于内部虚拟网络标识符来执行转发查找操作(操作1104)。
如果转发查找操作成功,交换机可以相应地处理和转发该包(操作1106)。然而,如果转发查找操作失败,交换机可以基于内部虚拟网络标识符来确定出口端口组(操作1108)。接着,交换机可以将包的副本提供到该出口端口组中的每个出口端口(操作1110)。该系统随后可以在该包的报头中的虚拟网络标识符与出口端口关联时在该出口端口上洪泛包(操作1112)。比如,如果包中的VPN标识符指示出口端口耦合到与VPN标识符关联的虚拟网络,则该系统可以在该出口端口上洪泛包。
图12示出根据本发明一些实施例的可以如何在每个虚拟网络的基础上执行洪泛。
路由桥1202-1216可以位于TRILL网络中。路由桥1202、1208和1216可以耦合到作为同一虚拟网络的一部分的客户网络。比如,路由桥1202、1204、1208和1216可以耦合到在不同客户地点的VLAN 1218。假设路由桥1210从包括与VLAN 1218关联的VLAN标识符的路由桥1204接收包。如果在路由桥1210针对该包的转发查找操作失败,则路由桥1210可以将该包封装在TRILL组播包中,并且在组播树上转发TRILL组播包,如图12使用虚线所示。
注意,TRILL组播树的根部设在路由桥1210处。在一些实施例中,TRILL组播包报头可以包括指示该包为组播包的字段(例如图2中的组播字段250)。另外,TRILL组播包报头可以包括组播树标识符作为出口路由桥别名,其识别TRILL组播包将在其上被转发的组播树。比如,通过将其设置为作为组播树的根部的路由桥的别名,图2中的出口路由桥256字段可以用作组播树标识符。
跨过TRILL网络保留服务质量(QoS)
QoS是指交换机和/或网络满足其用户(应用程序、数据流)的服务要求(例如损耗、延迟等)的能力。这典型地是通过基于包含在包中的信息提供不同处理优先级和/或资源来完成的。比如,QoS目标可以通过对来自不同应用程序、用户或数据流的包提供不同优先级水平来满足。QoS广泛用于支持要求从网络获得某种性能保证从而按预期操作的应用程序。比如,实时流传输多媒体应用程序经常依赖于QoS特征来进行适当操作。
在分组交换网络中,QoS信息经常携带在包报头中的一个或多个位中。在网络中的每个交换机或节点,包中的QoS信息可以用于确定如何处理该包。比如,QoS位可指示包的优先级水平和/或包的丢弃资格。交换机可以具有用于不同优先级水平的不同包队列,并且交换机可以与处理低优先级包相比分配更多的资源(例如更多存储器和处理时间)以用于处理高优先级包,并且在拥堵时间期间,可以在具有较低丢弃资格的包之前丢弃具有较高丢弃资格的包。
实施端对端QoS策略可以帮助网络管理员更有效地利用网络带宽。比如,网络管理员可以使用网络的QoS特征以确保来自延迟敏感的应用(例如实时多媒体应用)的包在网络中以高优先级被处理和/或转发。
为了是有效的,QoS典型地需要以端对端方式实施。比如,在图1中,假设客户C3希望支持地点S1和S5之间的视频会议应用。为此目的,客户C3会希望在网络中以比其它包具有更高优先级地处理视频会议包。客户C3可以配置其在地点S1和S5的网络,以确保视频会议包被相应地处理。然而,客户C3可能不能够直接控制TRILL网络100中的交换机将如何处理视频会议包。如果TRILL网络100不以高优先级处理视频会议包,则视频会议包在穿过TRILL网络100时可能会经历无法接受的延迟量,由此使得使用QoS用于视频会议应用程序的整个目的失效。
用于实施端对端QoS的一种方法是确保服务提供商的网络(例如TRILL网络)中的QoS设置与客户端的网络中的QoS设置相同。遗憾的是,此方法不可能行得通,因为不同客户端的QoS设置可能彼此冲突。
本发明的一些实施例提供了即使当不同客户端具有不同QoS要求时用于实施端对端QoS的系统和技术。特别地,入口交换机(例如路由桥)可以从客户网络接收包。比如,在图1中,路由桥106可以从客户C1在地点S2的网络接收包。接着,入口交换机可以将客户包中的QoS比特映射到用于在封装客户包的TRILL包中使用的另一组QoS比特。入口交换机可以产生包括第二组QoS比特的TRILL包。服务提供商可以定义该网络内的一组标准化QoS水平,并且将客户的包中的QoS比特映射到网络中的适当QoS水平。注意,TRILL包中的该组QoS比特可以不同于客户包中的QoS比特。另外注意,客户包中的QoS比特被保留,因为这些位并未被修改。
附加地,服务提供商可能希望管制进入服务提供商网络的客户业务并且用较高丢弃资格来标记“超出规定(out of profile)”的包,使得在网络拥堵时间期间,可以在具有较低丢弃资格的其它包之前丢弃这些包。
一旦QoS位被映射,入口交换机可以发送TRILL包到(多个)出口交换机。在每跳,TRILL包可以依据TRILL包中的QoS比特被处理。最后,一旦TRILL包到达该出口交换机,出口交换机可以剥去TRILL报头并且将包含原始QoS比特的包发送到客户的网络。比如,在图1中,入口路由桥106可以经由路由桥104将TRILL包发送到出口路由桥110。在路由桥104,TRILL包可以依据TRILL包中的QoS比特被处理。最后,出口路由桥110可以从TRILL包剥去TRILL报头,并且将包含原始QoS比特的包发送到客户C1在地点S4的网络。
图13示出根据本发明一些实施例的交换机。
交换机1300可以包括可以经由例如总线的通信信道而彼此通信的多个机制。交换机1300可以使用一个或多个集成电路来实现。在一些实施例中,交换机1300包括映射机制1302、转发机制1304、封装机制1306和解封装机制1308。在一些实施例中,这些机制可以被实施为专用集成电路中的功能模块。图13仅仅用于说明的目的,并且并非意图将本发明限制于所公开的形式。特别地,在一些实施例中,交换机1300可以不是路由桥,和/或可以包括比图13所示映射更少或更多的机制。
转发机制1304可以配置成基于包报头中包含的信息来转发包。特别地,通过使用包报头中的数据字段(例如MAC地址、VLAN标签、路由桥别名等)在内容可寻址存储器中执行查找,转发机制1304可以确定传出端口。
在入口交换机,封装机制1306可以配置成通过添加TRILL报头将以太网包(其可以包括一个或多个VLAN标签)封装在TRILL包中。以太网包报头可以用于确定需要被添加到以太网包的TRILL报头和TRILL包在其上将被发送的端口。一旦TRILL报头被添加,TRILL包可以通过传出端口被发送。在出口交换机,解封装机制1308可以配置成剥去TRILL报头。
映射机制1302可以配置成将从客户接收的以太网包中的第一组QoS比特映射到以用于TRILL报头的第二组QoS位。TRILL报头可以在映射机制1302产生第二组比特之前或之后形成。服务提供商的网络(例如TRILL网络100)可以使用一组归一化QoS水平。映射机制1302可以选择与原始以太网包中包含的QoS信息一致的归一化QoS水平。
图14示出了根据本发明一些实施例的示例性映射机制。
图14中示出的示例性映射机制可以包括一个或多个硬件和/或软件模块。特别地,映射机制可以包括一个或多个QoS映射表,诸如表1404和1406,以及一组寄存器,诸如寄存器1408。可以基于来自输入包1402(其可以是以太网包)的不同的QoS比特组,对表1404和1406执行查找。比如,对表1404的查找可以使用来自包1402中最外部VLAN标签的QoS比特来执行,而对表1406的查找可以使用来自封装在包1402中的IP包的报头的互联网协议(IP)差分服务代码点(DSCP)比特来执行。寄存器1408可以提供默认的QoS比特组,其可以代替来自表1404或1406的输出被使用。
查找的结果可以是一组QoS比特,其对应于在服务提供商的网络中使用的一组归一化QoS水平。在一些实施例中,查找的结果可以是三比特优先级水平、六比特IP DSCP值、两比特丢弃优先次序值,和/或一比特丢弃资格指示符。丢弃优先次序值和丢弃资格指示符可以用于修改包在拥堵期间被丢弃的可能性。特别地,丢弃优先次序值指示该包高于在管制期间所允许的承诺速率,并且因此该包在拥堵期间可能被丢弃。在一些实施例中,VLAN标签中的CFI位被用于携带丢弃资格指示符,其指示该包高于其限额,并且因此在拥堵期间可能被丢弃。
来自一个或多个表和/或寄存器的查找结果可以作为输入而被提供到复用器1410。选择信号1412可以作为输入被提供到复用器1410,以控制复用器1410与其输出耦合的一组输入。选择信号1412可以由选择逻辑1418产生,该选择逻辑可以从包1402接收报头信息作为输入之一。
在一些实施例中,选择逻辑1418可以确定包1402是否封装IP包以及DSCP比特是否应被用于确定QoS。如果如此,选择逻辑1418可以产生选择信号1412以使得复用器1410输出来自表1406的查找结果。如果包1402并未封装IP包,或者如果DSCP位不可信赖,则选择逻辑1418可以确定包1402是否包括一个或多个VLAN标签(例如C标签、S标签或二者)。如果如此,选择逻辑1418可以产生选择信号1412,以使得复用器1410输出来自表1404的查找结果。如果包1402并未封装IP包,或者如果DSCP比特不可信赖,并且如果包1402也不包括VLAN标签,则选择逻辑1418可以产生选择信号1412以使得复用器1410输出寄存器1408中存储的默认QoS比特值。
复用器1410的输出可以作为输入被提供到访问控制列表(ACL)无视1414。ACL无视1414可以用于无视基于在交换机上配置的任何ACL而由映射表确定的QoS比特。比如,ACL无视1414可以使得用户能够迫使特定包(例如特定流的包)具有特定QoS水平,而不管包报头中QoS比特的值。在一些实施例中,ACL无视1414可以使用三级内容可寻址存储器来实施。注意,ACL无视1414可以接收包1402的报头信息作为输入(未示于图14),以用于确定是否无视QoS比特。
来自ACL无视1414的输出随后可以被提供到管制器1416。管制器1416可以帮助执行在网络中定义的QoS策略。特别地,在流违反其服务规定时,管制器1416可以调节包流中包的QoS比特。比如,如果该包为使用比分配给该包流更大的带宽的流的一部分,则管制器1416可以调节包的丢弃优先次序,从而增大包在拥堵期间将被丢弃的可能性。管制器1416的输出随后可以在传出包中使用。比如,如果传出包为封装包1402的TRILL包1402,则外部VLAN标签(例如图2中的外部VLAN标签204)中的QoS比特可以使用管制器1416的输出来设置。
注意,原始QoS比特可以被保留在内部VLAN标签其中之一(例如,图2中的VLAN标签212中的最外部VLAN标签)或者保留在IP报头中。在这些情形中,在出口交换机处,外部VLAN标签被剥离,并且该包利用曾保留在内部VLAN标签和/或IP报头其中之一中的原始QoS比特被转发到客户的网络。在一些实施例中,该系统可以调整原始QoS比特。在这些实施例中,在将包转发到客户的网络之前,该系统可以在出口交换机修改原始QoS比特。
图15给出的流程图示出根据本发明一些实施例的用于处理包的处理。
该处理可以以系统接收包(操作1502)开始。接着,该系统可以将包中的第一QoS比特组映射到用于在封装包的TRILL包中使用的第二QoS比特组(操作1504)。注意,这些两组QoS比特可以彼此不同(即,这两组可以不是彼此的副本)。第一组QoS比特可以是该组内部VLAN标签(例如图2中的内部VLAN标签212)中的最外部标签中的优先级比特。可替换地,第一组QoS比特可以是在封装在该包内的IP包的报头中的IP DSCP位。第二组QoS比特可以是外部VLAN标签(例如图2中的外部VLAN标签204)中的优先级比特。一旦第二组QoS比特被确定,系统可以产生包括第二组QoS比特的TRILL包(操作1506)。系统随后可以发送TRILL包到下一TRILL跳(操作1508)。
远程端口镜像
服务提供商网络可能非常庞大和复杂。网络经常需要调试不足为奇。远程端口镜像是一种可以用于识别和解决网络问题的技术。
图16说明传统远程端口镜像系统。以太网交换机1602、1604、1606、1608和1610为LAN(局域网)的部分。源节点1614耦合到以太网交换机1602,并且目的节点1616耦合到以太网交换机1608。网络分析器1612耦合到以太网交换机1610。网络分析器1612可以用于分析网络中的包以识别和解决问题。在远程端口镜像中,在网络中的端口上被接收的包的副本被发送到网络分析器。
比如,远程端口镜像可以在以太网交换机1602上的耦合到源节点1614的端口上执行。假设在以太网交换机1602上从源1614接收具有VLAN标识符1622的包1618。另外,假设包1618的目的地是目的地1616。注意,图16仅仅用于说明的目的。图16所示包格式并非意图反映实际包格式。比如,以太网包包括源MAC地址和目的MAC地址,为了清楚起见而未示于图16。
以太网交换机1602将具有原始VLAN标识符(即VLAN标识符1622)的该包转发到目的地1616。比如,在目的地1616处被接收之前,包1618可以穿过以太网交换机1602、1606和1608。在传统方法中,具有不同VLAN标识符的包1618的副本在网络中也被转发以用于远程端口镜像目的。特别地,以太网交换机1602形成具有VLAN标识符1624的包1620,该VLAN标识符1624不同于VLAN标识符1622。以太网交换机1602随后将包1620转发到网络分析器1612。在网络分析器1612处被接收之前,包1620可以经过以太网交换机1602和1610。
注意,VLAN标识符1624在网络中用于对网络分析流量附以标签。使用特别用于网络分析业务的VLAN标识符来替代原始VLAN标识符使得传统网络能够确保这些包被递送到网络分析器。
遗憾的是,传统端口镜像技术可能无法识别和/或解决某些网络问题。特别地,由于传统网络修改了原始VLAN标识符,在网络分析器被接收的包并不是原始包。如果原始VLAN标识符是网络问题的起因之一,则网络分析器将无法识别和/或解决网络问题。
与传统技术相反,本发明的一些实施例封装包的副本,并且将封装的包副本转发到网络分析器。由于本发明的一些实施例封装包的副本,它们保留原始VLAN标识符并且可选地保留原始包中的其它报头信息。
典型地,当包被封装以获得封装的包时,包的整个内容被保留。封装的包通常具有其自己的报头,该报头用于转发封装的包。根据封装的一个定义,封装为把被用于转发封装的包的新字段添加到包报头的处理。比如,可以通过把TRILL报头添加到包来封装包,其中该TRILL报头随后被用于通过网络来路由包。纯粹修改VLAN标签不是封装,这是因为没有添加新字段到报头,而且因为原始VLAN标签并未被保留。
图17A示出了使用根据本发明一些实施例的封装的远程端口镜像系统。
假设具有VLAN标识符1718的包1706从客户C3在地点S1的网络中的VLAN 112中的源节点发送到客户C3在地点S5的网络中的VLAN 112中的目的节点。
当包1706在路由桥102的端口P3上被接收时,可以用TRILL报头1710封装包1706以获得封装包1708。封装包1708随后可以通过TRILL网络100被路由到路由桥110。路由桥110随后可以从封装包1708提取包1706,并且将包1706转发到客户C3在地点S5的网络中的VLAN112中的目的节点。注意,在上述示例中,包1706为以太网包(具有或不具有一个或多个VLAN标签),并且封装包1708为TRILL包。
本发明的一些实施例可以在任意粒度水平执行远程端口镜像,并且可以使用任意复杂的准则来确定镜像哪些包。特别地,对于在t特定端口上被接收或发送的包,具有特定VLAN标签的包,源于特定源节点的包,目的地是特定目的节点的包,或者匹配这些准则的组合的包,可以使得能够进行远程端口镜像。通常,系统可以使用任意复杂的逻辑功能(例如,访问控制列表)来识别需要被镜像的包。
让我们假设已经在路由桥102的端口P3使得能够进行远程端口镜像,并且包1706已经被识别为需要被镜像的包。这种情况下,路由桥102可以创建包的副本1706,并且使用TRILL报头1714来封装包的副本1706以获得封装包1712。封装包1712随后可以通过TRILL网络100被路由到路由桥106。注意,TRILL报头1714不同于TRILL报头1710。特别地,TRILL报头1710使得包1708被路由到路由桥110,而TRILL报头1714使得封装包1712被路由到路由桥106。路由桥106随后可以从封装包1712提取包1706的副本(在图17A中示为包1716),并且将包1706的副本转发到可以属于VLAN1704的网络分析器1702。VLAN 1704可能已经特别地创建以用于分析网络业务。被发送到网络分析器的包可以包括该包为镜像包的某种指示。比如,如果镜像包具有特定VLAN标识符(例如如图17A所示的VLAN 1704),随后VLAN标识符可以用于指示该包为镜像包。
注意,VLAN标识符没有被修改,即,包1716中的VLAN标识符与包1706中的VLAN标识符相同。以此方式,本发明的一些实施例通过在远程端口镜像期间保留VLAN标识符信息来促进对网络的调试。
还可以在位于TRILL网络内部的端口上使得能够进行远程端口镜像。在这些实施例中,附加TRILL报头可以被添加以保留原始TRILL报头。
图17B说明使用依据本发明一些实施例的封装的远程端口镜像系统。
如前文那样,路由桥102可以用TRILL报头1710封装包1706以获得封装包1708。封装包1708随后可以通过TRILL网络100被路由到路由桥110。路由桥110随后可以从封装包1708提取包1706,并且将包1706转发到客户C3在地点S5的网络中的VLAN 112中的目的节点。
让我们假设在将路由桥102与路由桥106耦合的路由桥102上的端口上已经使得能够进行远程端口镜像,并且包1708已经被识别为需要被镜像的包。在这种情况下,路由桥102可以创建包1708的副本,并且使用TRILL报头1722封装包1708的副本以获得封装包1720。接着,封装包1720可以通过TRILL网络100被路由到路由桥106。注意,TRILL报头1722不同于TRILL报头1710。特别地,TRILL报头1710使得包1708被路由到路由桥110,而TRILL报头1722使得封装包1720被路由到路由桥106。路由桥106随后可以从封装包1720提取包1708的副本(在图17B中示为包1724),并且将包1708的副本转发到可以属于VLAN 1704的网络分析器1702。注意,在上述示例中,封装包1708和1720为TRILL包。
图18说明依据本发明一些实施例的交换机。
交换机1800可以包括可以经由例如总线的通信信道而彼此通信的多个机制。交换机1800可以使用一个或多个集成电路来实现。在一些实施例中,交换机1800为路由桥(例如路由桥102),其包括拷贝机制1802、封装机制1804和转发机制1806。
交换机1800可以接收目的地可以是目的地址D1的包(例如,包报头信息的可以包括目的地址D1)。复制机制1802可以配置成创建包的副本。在一些实施例中,复制机制1802可以配置成首先识别哪些包需要被镜像,并且随后创建所识别的包的副本。正被镜像的包可以为以太网包(具有或不具有一个或多个VLAN标签)或TRILL包。
封装机制1804可以配置成封装包的副本以获得目的地为目的地址D2的封装包(例如,封装包的报头信息可以包括目的地址D2)。在一些实施例中,封装包为TRILL包。目的地址D2可以与目的地址D1相同或也可不同。目的地址可以是单播、组播或广播地址。特别地,在一些实施例中,第一包为单播包或者为组播包,并且第二包为被发送到网络分析器的单播包或者为被发送到与包括网络分析器的组播群组关联的组播地址的组播包。注意,封装包的副本以获得封装包保留了原始包的报头信息(例如VLAN标识符、TRILL报头等)。
转发机制1806可以配置成根据地址D1来转发原始包,并且根据地址D2来转发封装包。比如,转发机制1806可以首先针对地址D1和D2执行转发查找(例如,通过在三级上下文可寻址存储器中执行查找),从而确定用于这两个包的输出端口。接着,转发机制1806可以对将通过适当输出端口被发送的包进行排队。
注意,图18仅仅用于说明的目的,并且并非意图将本发明限制于所公开的形式。特别地,在一些实施例中,交换机1800可以不是路由桥,和/或可以包括比图18所示更少或更多的机制。
图19给出的流程图示出根据本发明一些实施例的用于执行远程端口镜像的处理。
该处理可以由例如路由桥102的交换机执行。该交换机可以接收例如包1706的第一包。交换机随后可以确定第一包是否将被镜像。如果第一包将被镜像,交换机可以形成第一包的副本。
接着,交换机可以将第一包的副本封装在例如包1712的第二包中(操作1902)。注意,第一包和第二包的目的地可以是不同地址。第一包和第二包可以是单播、组播或广播包。特别地,在一些实施例中,第一包为单播包或者为组播包,并且第二包为被发送到网络分析器的单播包或者为被发送到与包括网络分析器的组播群组关联的组播地址的组播包。
交换机随后可以使用第一包的报头信息转发第一包(操作1904),以及使用第二包的报头信息转发第二包(操作1906)。注意,操作1904和1906可以按顺序(按任何次序)执行或者同时执行。
图20示出根据本发明一些实施例的系统。
系统2000可以包括处理器2002(例如网络处理器)和存储器2004。处理器2002可以能够访问和执行存储器2004中存储的指令。比如,处理器2002和存储器2004可以通过总线耦合。存储器2004可以存储指令,所述指令由处理器2002执行时使得系统2000执行在此公开内容中明确或隐含地公开的一个或多个处理。
在一些实施例中,存储器2004可以存储指令,所述指令用于基于包在其上被接收的端口和/或包的报头中的一个或多个字段来确定包的内部虚拟网络标识符和/或内部策略标识符,用于通过添加TRILL报头而将包封装在TRILL包中,用于基于内部虚拟网络标识符来转发包,和/或用于基于内部策略标识符来处理该包。
在一些实施例中,存储器2004可以存储指令,所述指令用于接收组播包,基于与组播包关联的源地址、组播地址和组播树标识符字段,来确定组播包的内部组播群组标识符,以及基于内部组播群组标识符来转发组播包。另外,存储器2004可以可选地存储用于封装和/或解封装的指令。
在一些实施例中,组播包可以包括网络层组播地址,并且它可以在与第一虚拟网络关联的第一组播树上被接收。存储器2004可以存储指令,所述指令用于基于网络层组播地址来确定与组播包将在其上被转发的第二虚拟网络关联的第二组播树。在这些实施例中,存储器2004还可以存储指令,所述指令用于在与第一虚拟网络关联的第一组播树上转发组播包,以及在与第二虚拟网络关联的第二组播树上转发组播包的副本。
在一些实施例中,存储器2004可以存储指令,所述指令用于基于包的报头中的一个或多个字段来执行转发查找操作,如果查找操作失败,基于包的报头中的虚拟网络标识符来确定一组出口端口,以及在该组出口端口上洪泛包。
在一些实施例中,存储器2004可以存储指令,所述指令用于将包中的第一QoS比特组映射到第二QoS比特组,以在封装第一包的TRILL包中使用,其中第一QoS比特组不同于第二QoS比特组。
在一些实施例中,存储器2004可以存储用于将第一包的副本封装在第二包中的指令,用于使用第一包的报头信息转发第一包的指令,以及用于使用第二包的报头信息转发第二包的指令。
在此公开内容中描述的数据结构和代码可以部分或完全存储在非临时的计算机可读存储介质和/或硬件模块和/或硬件设备中。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,诸如磁盘驱动器、磁带、CD(紧凑盘)、DVD(数字多功能盘或数字视频盘)的磁性和光学存储装置,或者现在已知或以后发展的能够存储代码和/或数据的其它非临时介质。在此公开内容中描述的硬件模块或设备包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共用处理器和/或现在已知或以后发展的其它硬件模块或设备。特别地,方法和/或过程可以以硬件描述语言(HDL)被描述,所述硬件描述语言可以被编译,从而综合可以执行该方法和/或过程的寄存器传送逻辑(RTL)电路。
在此公开内容中描述的方法和处理可以部分或完全实施为存储于计算机可读存储介质或装置中的代码和/或数据,以使得当计算机系统读取和/或执行该代码和/或数据时,计算机系统执行关联的方法和处理。该方法和处理还可以部分或完全实施于硬件模块或设备中,使得当硬件模块或设备被激活时,它们执行关联的方法和处理。另外,该方法和处理可以使用代码、数据和硬件模块或设备的组合来实施。
对本发明的各实施例的前述描述仅仅是出于说明和描述的目的而给出的。它们并非意图是穷举性的或者将本发明限制于所公开的形式。因此,对于本领域普通技术人员,许多调整和变动将是显见的。此外,以上公开内容并非意图限制本发明。本发明的范围由所附权利要求书定义。