法律状态公告日
法律状态信息
法律状态
2014-09-03
授权
授权
2011-03-23
实质审查的生效 IPC(主分类):H04L12/56 申请日:20090226
实质审查的生效
2011-01-26
公开
公开
技术领域
本公开的实施例总地涉及联网,更具体地涉及控制网络流量的流动。
背景技术
多机箱端口信道(Multi Chassis Port Channel,MCPC)或多机箱以太信道(Multi Chassis Ether Channel,MCEC)具有的端口信道的两个末端终止于两个不同的交换机上。这些交换机通常被称为汇聚交换机。使得端口信道的多个末端终止于不同的信道提供了冗余,从而不仅能跨越链路故障,而且还能跨越单个交换机故障。
相反,在常规的端口信道中,属于端口信道的所有链路都终止于单个交换机上。端口信道被生成树协议(STP)当作单个逻辑链路,并且诸如设置端口状态或MAC flush/Age之类的任何硬件操作被应用于端口信道的所有成员链路。这样,STP不会在常规的端口信道上产生任何问题。
然而,由于端口信道的成员链路终止于不同的交换机上,所以在MCPC复用器上操作STP会呈现出一些挑战。这些挑战的其中之一是STP可能会阻塞用于建立MCPC交换机之间的多信道中继线路(multi-channel trunk,MCT)的端口。如果MCT端口被阻塞,则将会丧失由MCPC拓扑提供的期望冗余。
发明内容
一个实施例提供了一种方法。该方法总地包括:保持用于MCPC复用器的交换机的端口的多机箱端口信道(MCPC)优先级向量,其中MCPC优先级向量包括这样的字段,该字段的值是基于所述端口是否被用于建立MCPC中的多机箱中继线路(MCT)而确定的;以及基于MCPC优先级向量执行生成树协议操作,以确定是否允许在所述端口上进行转发。
一个实施例提供了一种交换设备。该交换设备总地包括:第一端口,用于建立与另一个交换设备的多机箱中继线路(MCT),以用在多机箱端口信道(MCPC)通信中;至少一个第二端口,用于与MCPC外部的设备通信;用于保持用于MCPC复用器的交换机的端口的多机箱端口信道(MCPC)优先级向量的逻辑,其中MCPC优先级向量包括这样的字段,该字段的值是基于所述端口是否被用于建立MCPC中的多机箱中继线路(MCT)而确定的;以及用于基于MCPC优先级向量执行生成树协议操作,以确定是否允许在所述端口上进行转发的逻辑。
一个实施例提供了一种交换设备。该交换设备总地包括:至少一个第一端口,用于建立与另一个交换设备的多机箱中继线路(MCT),以用在多机箱端口信道(MCPC)通信中;至少一个第二端口,用于与MCPC外部的设备通信;用于保持用于MCPC复用器的交换机的端口的多机箱端口信道(MCPC)优先级向量的装置,其中MCPC优先级向量包括这样的字段,该字段的值是基于所述端口是否被用于建立MCPC中的多机箱中继线路(MCT)而确定的;以及用于基于MCPC优先级向量执行生成树协议操作,以确定是否允许在所述端口上进行转发的装置。
附图说明
为了可以详细理解本公开的特征,可以通过参考实施例(其中的一些实施例在附图中示出)对本公开做出具体描述。然而应该注意,附图仅示出了本公开的典型实施例,并且不应该被认为是对其范围的限制,因为本公开可以容许其他的等效实施例。
图1示出了根据本公开的一个实施例的具有MCPC复用器的网络的物理示图。
图2示出了根据本公开的一个实施例的图1的网络的逻辑示图。
图3是根据本公开的一个实施例的示例操作的流程图。
图4A至4E示出了根据本公开的一个实施例的MCPC复用器中的配置STP操作。
图5A至5B示出了根据本公开的一个实施例的从MCPC复用器发送的BPDU的路由。
图6A至6B示出了根据本公开的一个实施例的发送至MCPC的BPDU的路由。
图7A至7B示出了根据本发明的一个实施例的链路和交换机故障处理。
具体实施方式
本公开的实施例提供了用于在由诸如多机箱端口信道(MCPC)或多机箱以太信道(MCEC)拓扑之类的逻辑拓扑表示的网络中对流量进行路由的技术。通过基于相应的端口是否被用作MCT将端口优先级向量(PPV)修改为包括标识指定的桥接器ID或本地交换机ID的附加的“SwitchID”字段,诸如STP之类的设计用于避免路由路径中的环路的路由协议可以避免阻塞MCT端口。
示例网络
图1示出了可以利用本公开提供的技术的网络的物理表示。该网络包括经由交换机130(S2和S3)的第二布置而互连的交换机120(S1、S4及S5)的第一布置。
如图所示,S2和S3可以经由多机箱中继线路132连接,以形成MCPC复用器110。MCPC复用器110中的每个交换机可以独立地参与数据转发。由于S1、S4及S5均具有去往交换机S2和S3中的每一个交换机的物理链路,所以MCPC 110为S1、S4及S5之间的流量提供了冗余路径。
如图2所示,逻辑MCPC端口MCPC1和MCPC2分别被形成在S4和S5与MCPC 110之间。尽管每个MCPC端口终止于两个MCPC交换机上,但是每个MCPC端口就像是用于STP目的的单个逻辑链路。
在所示出的示例中,假设S2拥有MCPC,这意味着逻辑端口MCPC1和MCPC2上的流量将被路由通过S2。这样,S2可以经由MCT连接规律地将MCPC参数同步至S3。这种规律的同步可以使得S3在S2故障的情况下无缝地接管对MCPC的控制(所有权)。与MCPC相关联的配置参数和运行时间参数可以被同步,以助于此切换。
例如,可能期望在所示出的MCPC网络拓扑上运行STP协议,以进行高效的路由并防止不期望的环路。不幸的是,STP协议到MCPC的传统应用可能会导致用于建立MCPC交换机之间的MCT的端口的阻塞。本公开提出了一种允许在仍然保持MCT链路转发的同时进行STP计算的技术。
换句话说,如图2所示,这里提出的技术可以允许运行这样的SYP操作,其将导致S3的端口P1阻塞,而不会导致端口P2阻塞(端口P2阻塞将防止MCT链路转发)。所以,这里提出的技术可以提供MCPC(在物理链路和/或交换机故障的情况下的冗余)和STP二者的优点。另外,阻塞P2将不能避免环路,因为流量仍然会经由与S3连接的第二MCPC1而在S4到S1之间被路由。
本公开的实施例通过利用改进形式的STP端口优先级向量(PPV)(这里称为MCPC PPV)来帮助在MCPC网络上运行STP。MCPC PPV可以包括额外的字段,该字段的值可以根据相应的端口是否被用于MCT来确定。传统PPV的形式如下:
传统PPV={RootBridgeID:RootPathCost:DesignatedBridgeID:
DesignatedPortID:BridgePortID}
MCPC PPV包括额外的字段(SwitchID),例如,如下所示:
MCPC PPV={RootBridgeID:SwitchID:RootPathCost:
DesignatedBridgeID:DesignatedPortID:BridgePortID}
Switch ID字段的值可以基于相应的端口是否被用于MCT链路来确定。例如,如果该端口被用于MCT链路,则SwitchID可以被设置为DesignatedBridgeID。如果该端口不被用于MCT链路,则SwitchID可以被设置为本地交换机ID。换言之:
SwitchID=DesignatedBridgeID(对于MCT端口)
SwitchID=LocalSwitchID(对于非MCT端口)
如下面更详细描述的,在MCPC交换机上运行的STP的实例可以利用该修改后的可以被用来防止阻塞MCT端口的PPV值。
图3示出了根据本公开的实施例的用于在MCPC拓扑上执行STP的示例操作300。操作300通过使用MCPC PPV执行初始化(“端口唤起(Port Bringup)”)而在302处开始。在304处,MCPC参数可以在MCPC交换机之间被定期同步。如果在306处检测到交换机或链路故障,则在308处发生到非拥有的交换机的切换。
图4A至4E示出了使用MCPC PPV的示例初始化操作(例如,图3的操作302)。如图4A所示,S1可以发送网桥协议数据单元(BPDU)。BPDU是一般以可配置的间隔发送出去以在网络中的桥接器之间交换信息的STP“hello”数据包。
在初始化状态中,所有端口可能都被阻塞,并且端口转变到在STP运行并聚合时允许进行转发的非阻塞状态。从S1发送的BPDU数据包可以包括建议比特,该比特被设置用于将当前阻塞的端口改变为转发,例如以建S3和S1之间的路径。当接收到该建议时,在向S1返回协定(agreement)之前,S3可以使端口P2同步。
例如,如图4B所示,S3可以在P2上发出建议消息(以允许在P2上转发)。该建议消息可以包括如下所示的用于P1和P2的修改后的端口优先级向量(MCPC PPV):
MCPC PPV(P1)={RootID=S1:SwitchID=S3:Cost=1:DesignatedBridgeID=S1}
MCPC PPV(P2)={RootID=S1:SwitchID=S2:Cost=2:DesignatedBridgeID=S2}
在此示例中,由于端口P2被用在MCT中,所以用于P2的PPV的SwitchID字段可以被设置为DesignateBridgeID(在此示例中为S2)。另一方面,用于没有被包括在MCT中的P1的PPV可以被设置为本地交换机ID(S3)。
在MCPC交换机上运行STP的内部逻辑可以确定本地交换机ID和SwitchID字段的差异是对相应的端口(P2)被用在MCT中的指示。相反,内部逻辑可以确定本地交换机ID和SwitchID字段的相同的值是对相应的端口(P1)没有被用在MCT中的指示。基于这些判定,该逻辑可以选择端口P2的角色为根端口,并且选择端口P1的角色为替补(尽管相对于端口P1,与端口P2相关联的根开销更高(2比1))。
如图4C所示,S2可以阻塞MCPC1端口,并将协定发送回S3。如图4D所示,在接收到来自S2的协定时,S3可以将协定发送回S1,接收S1的建议使其阻塞端口能进行转发。在接收到来自S3的协定时,S1解除其端口的阻塞,使得其端口能进行转发。图4E示出了最终的“聚合”状态,其中S3的端口P1阻塞,而MCPC端口不被阻塞。通过阻塞S3的端口P1,可以避免通过(S4和S3之间的)替补MCPC连接所创建的通过S3的不期望的环路。
如上所述,MCPC交换机S2和S3可以在去往S2的交换机故障或链路故障的情况下定期地同步参数,以使S3接管对于MCPC的控制。利用内部协议(VSL INBAND)和封装有报头(例如,DBUS报头)的消息,可以在建立在S2和S3之间的MCT上实现通信。对于MCPC交换机之间的通信,不需要去除该报头,但是对于外部通信,DBUS报头可以被去除。
MCPC上的BPDU处理
为了保持当前的生成树,运行STP的设备定期交换BPDU。在MCPC拓扑运行STP的情况下,可能不仅需要在MCPC交换机之间传送BPDU,而且需要在逻辑端口(MCPC1和MCPC2)上传送BPDU。然而,为了避免混淆,期望每次为相同物理链路上的逻辑端口传送BPDU。
例如,如图5A所示,用于MCPC1的BPDU可以总是在S2和S4之间的物理链路上被发送,而用于MCPC2的BPDU可以总是在S2和S5之间的物理链路上被发送。每次使用相同的物理接口可以避免混淆,例如,通过在查询接口数据库时使数据包管理器关于用于BPDU Tx的端口信道获得相同的选值(例如,哈希值)。相同的选值可以有助于保证相同的端口信道成员将被选择。
S2上的STP逻辑可以使用某种类型的数据包管理器API来将BPDU发送至MCPC1。该逻辑可以查询接口数据库,并为以MCPC1为目的地的BPDU设置DBUS报头的值(S2作为源索引,MCPC1作为目的地索引)。如果这些报头值使得端口链路S2至S4被选择,则DBUS报头可以被去除并且BDPU被发送至S4,如图5A所示。然而,如果由于某些原因端口链路S2和S4掉落(down),则BPDU可以在MCT端口上被转发出去,如图5B所示。S3可以接收BPDU数据包(和DBUS报头),去除DBUS报头,并将MCPC1 BDPU发送至S4。
对于在MCT上的MCPC交换机之间传送的BPDU,内部源和目的地索引可以被用在DBUS报头中。例如,S2上的STP逻辑可以在其MCT端口上发送BPDU,同时DBUS报头具有用于指示本地MCT端口上来的BPDU的源索引(例如,“S2_SUP”)。DBUS报头还可以包括目的地索引(例如,“S3_SUP”),以确保消息将在S3上被正确路由。为了使能这种在MCT上传输BPDU的方式,目的地索引可以在MCPC交换机之间是唯一的。
图6A至6B示出了由MCPC接收的BPDU的示例处理。如图6A所示,MCPC可以在S3的端口P3上接收BPDU。该BPDU应该在逻辑端口MCPC1上被接收到时被递送到S2上运行的STP逻辑。为了实现这个目的,用于端口P3的逻辑可以将源索引设置为MCPC1,这使得BPDU将被路由到内部S2逻辑(例如,目的地S2_SUP)。用于S2_SUP上的逻辑端口的数据包管理器可以将BPDU递送至STP逻辑(就像是在MCPC1上接收到一样),从而使得STP作为单个机箱端口信道进行操作。
当MCPC在没有所有权的交换机上接收到BPDU时,BPDU可以被中继到保留有源索引的具有所有权的对等交换机。如图6B所示,仍然假设S2拥有MCPC1,经由替补链路接收(例如,在S3的端口P4上接收)的BPDU应该最终被递送到S2(DBUS+BPDU),就像是在MCPC1上接收到一样。在这种情况下,当BPDU在S3的P4上被接收到时,端口逻辑可以认为MCPC1为S2所拥有,并且在MCT上转发BPDU。BPDU可以与DBUS报头一起转发,DBUS报头指示MCPC1为源索引,并且S1_SUP为目的地索引。结果,在接收到此BPDU时,S2上的逻辑可以将其转发至STP逻辑,就像在MCPC1上接收到一样。
如图5B所示,在链路故障的情况下,MCPC可以利用允许MCPC继续操作的替补物理链路来传送BPDU。在交换机故障的情况下,MCPC还可以利用接管了所有权的对等交换机继续操作。
图7A和7B示出了在拥有(owning)交换机故障的情况下切换到非拥有(non-owning)交换机。如图7A所示,只要拥有交换机是活动的,用于MCPC1和MCPC2二者的BPDU就可以由拥有交换机发送。S2活动的情况下作为示例示出的当前STP参数在表750A中被列出,其中S2被指定为根,并且,对于交换机S3,端口P2被指定为根端口(尽管比直接连接至S1的根开销更高)。
如图7B所示,一旦交换机S2故障,S3将接管所有权,并开始发送用于MCPC1和MCPC2的BPDU。STP参数被更新,以反映此所有权的改变。用于S3的这些更新后的STP参数在表750B中被示出,其中S3被指定为根,并且用于MCPC1和MCPC2的优先级向量的SwitchID字段被更新以反映此。在一些情况中,根开销也可能需要基于拓扑来更新。然而,在所示出的示例中,用于MCPC1和MCPC2的根开销将与S3具有到根节点S1的直接链路的情况保持相同。
通过使STP在MCPC拓扑上运行,本公开的实施例提供了两种技术的优点。例如,MCPC允许设备之间的冗余切换路径,同时运行的STP提供了最佳路径选择,并且避免了环路。
尽管前述内容指向本公开的实施例,但是在不脱离本公开的基本范围的前提下可以设计出本公开的其他和进一步的实施例,本公开的范围由所附权利要求确定。
机译: 多机箱端口通道上的分布式生成树协议
机译: 多机箱端口通道上的分布式生成树协议
机译: 多机箱端口通道上的分布式生成树协议