用于非对称链路聚合的装置和方法

文档序号:7997882阅读:355来源:国知局
用于非对称链路聚合的装置和方法
【专利摘要】本发明公开了一种用于非对称链路聚合的装置和方法,其中该方法在接入交换机中实现,该接入交换机通过第一组端口和相应链路连接到至少两个聚合交换机,该接入交换机通过第二组端口连接到外部网络,且该至少两个聚合交换机连接到内部网络,该方法包括:响应于从第二组端口中的一个接收到帧,根据该帧的源地址选择第一组端口中的一个;利用选择的第一组端口中的一个发送该帧。
【专利说明】用于非对称链路聚合的装置和方法

【技术领域】
[0001]本发明一般涉及数据处理领域,具体涉及链路聚合,更具体涉及一种用于非对称链路聚合的装置和方法。

【背景技术】
[0002]链路聚合(link aggregat1n)是指将多个并行的网络链路组合起来以使带宽相对于单个链路的带宽大幅增加、并在一个链路发生故障的情况下提供冗余的各种方法。这些方法包括IEEE802.1ax中定义的用于以太网的链路聚合控制协议(LACP)以及若干专有解决方案。
[0003]例如,在IEEE802.1ax的链路聚合中,两个参与系统的多个端口之间的多个物理链路可被聚合并对每个系统代表单个逻辑链路。在该逻辑链路上的通信流根据分配算法被分配给可用的物理链路。这种逻辑构造能够避免参与系统将任何帧转发回到逻辑链路,从而打破了实际存在的环路。
[0004]为了进一步提高带宽和系统弹性(resilience),人们提出不仅同一对系统的多个端口之间的多个物理链路可被聚合在一起,而且多对系统的多个端口之间的多个物理链路也可被聚合在一起。例如,在数据中心中,每个接入交换机通常连接两个聚合交换机,这样,接入交换机与两个聚合交换机之间的两个或多个物理链路可被聚合,以便进一步提高带宽和提供冗余。这样,例如,如果一个聚合交换机发生故障,接入交换机仍可以使用另一个聚合交换机及其间的物理链路来进行通信。由于两个聚合交换机之间通常也存在链路,这样,就会在网络拓扑中形成回路。为此,使用运行在各交换机上的生成树协议(STP)以便通过阻挡一侧的连接来打破环路。然而,这会将接入交换机和聚合交换机之间的可用带宽减少50%。图1示出了在由一个接入交换机和两个聚合交换机形成的网络拓扑中使用STP来打破回路的示意图。如图所示,接入交换机与两个聚合交换机连接。通过在各交换机中使用STP,接入交换机与一个聚合交换机之间的连接被阻挡,从而使接入交换机与聚合交换机之间的可用带宽减少了 50%。
[0005]人们提出了若干实现和方法以便在获得足够的冗余和弹性(resilience)的同时获得带宽的充分利用。已知的解决方案有=IEEE的DLAG(分布式链路聚合组)建议,IBM系统联网的 vLAG (虚拟链路聚合组)、Cisco 的 vPC、Arista Network 的 MLAG、Extreme Networks的M-LAG等。
[0006]这些解决方案均试图通过在两个聚合交换机上运行分布式链路聚合来形成单个交换机的假象(至少从链路聚合伙伴的角度来看),以实现上述目标。图2示出了分布式链路聚合的示意图。如图所示,接入交换机与两个聚合交换机连接。通过在接入交换机和两个聚合交换机之间运行分布式链路聚合协议,使得接入交换机与两个聚合交换机之间的两个链路看起来如同单个链路一样。也就是说,从接入交换机的角度来看,两个链路形成一个链路聚合组(LAG),而从聚合交换机的角度来看,这两个链路形成一个分布式链路聚合组。
[0007]这些解决方案存在如下缺点:
[0008]1.运行分布式链路聚合的方法涉及在“单个交换机”形成和拆除时的各种同步和切换。这极大地增加了设计的复杂性,带来了额外的处理负担,并且很可能是成问题的。
[0009]2.这些解决方案除在形成单个交换机的假象之外,对聚合交换机总是会有其他影响。例如,一些解决方案在假象形成时禁止了交换机间链路(ISL)上的MAC学习机制。这增加了用户理解整个影响和部署网络的复杂性。
[0010]3.使来自不同厂商的交换机形成该假象几乎是不可能的。
[0011]4.该假象不能扩展到跨越超过两个聚合交换机。
[0012]可见,本领域中需要一种改进的链路聚合的解决方案。


【发明内容】

[0013]在本发明的一个方面,提出了一种用于非对称链路聚合的方法,其中该方法在接入交换机中实现,该接入交换机通过第一组端口和相应链路连接到至少两个聚合交换机,该接入交换机通过第二组端口连接到外部网络,且该至少两个聚合交换机连接到内部网络,该方法包括:响应于从第二组端口中的一个接收到帧,根据该帧的源地址选择第一组端口中的一个;利用选择的第一组端口中的一个发送该帧。
[0014]在本发明的另一个方面,提出了一种用于非对称链路聚合的装置,其中该装置在接入交换机中实现,该接入交换机通过第一组端口和相应链路连接到至少两个聚合交换机,该接入交换机通过第二组端口连接到外部网络,且该至少两个聚合交换机连接到内部网络,该装置包括:用于响应于从第二组端口中的一个接收到帧,根据该帧的源地址选择第一组端口中的一个的装置;用于利用选择的第一组端口中的一个发送该帧的装置。
[0015]本发明的解决方案的优点包括以下各项中的至少一个:
[0016]1.它不需要运行分布式链路聚合或相关协议,降低了设计的复杂性;它没有额外的同步,额外的处理负担极低;它没有改变聚合交换机的任何行为,而只在接入交换机上实施,用户很容易部署。
[0017]2.接入交换机可以与来自不同厂商的多于两个的聚合交换机连接,并使所有链路得到完全利用。
[0018]3.自然地实现了对称负载均衡。
[0019]说明书附图
[0020]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0021]图1示出了在由一个接入交换机和两个聚合交换机形成的网络拓扑中使用STP来打破回路的不意图;
[0022]图2示出了分布式链路聚合的示意图;
[0023]图3A示出了根据本发明的实施例的典型的A-LAG拓扑;
[0024]图3B示出了根据本发明的实施例的另一典型的A-LAG拓扑;
[0025]图3C示出了根据本发明的实施例的另一典型的A-LAG拓扑;
[0026]图4示出了由于聚合交换机处的DLF而形成返回帧的情况;
[0027]图5示出了根据本发明的实施例的使用入端口阻挡位图来消除反向流中的重复中贞的示例;
[0028]图6示出了根据本发明的实施例针对包含端口通道的A-LAG系统使用入端口阻挡位图来消除重复帧的示例;
[0029]图7示出了据本发明的实施例使用信标探测机制来检测ISL故障的示意图;
[0030]图8示出了根据本发明的一些实施例的接入交换机响应于接收到帧而执行的处理过程的流程图;
[0031]图9示出了根据本发明的另一些实施例的接入交换机响应于接收到帧而进行的处理过程的流程图;
[0032]图10示出了根据本发明的又一些实施例的接入交换机响应于接收到帧而进行的处理过程的流程图;
[0033]图11示出了根据本发明的再一些实施例的接入交换机响应于接收到帧而进行的处理过程的流程图;
[0034]图12示出了根据本发明的实施例的接入交换机用于检查聚合交换机间的链路故障的过程的流程图;
[0035]图13示出了适于用来实现本发明实施方式的示例性计算机系统12的框图。

【具体实施方式】
[0036]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0037]本发明提出了一种用于连接多个系统的特殊的链路聚合,其可称为非对称链路聚合(A-LAG)。A-LAG的所有链路都积极地传送通信流。图3A示出了根据本发明的实施例的典型的A-LAG拓扑,其中,接入交换机通过两条链路和A-LAG端口分别与两个聚合交换机连接,通过非A-LAG端口与外部网络连接;且两个聚合交换机之间也通过链路连接,且两个聚合交换机连接到内部网络。其他实施例中的图也是这样的典型连接关系,后面将不再赘述。图3B示出了根据本发明的实施例的另一典型的A-LAG拓扑,其中,接入交换机通过多于两条链路分别与至少两个聚合交换机连接,且相邻聚合交换机之间也通过链路连接。图3C示出了根据本发明的实施例的另一典型的A-LAG拓扑,其中,接入交换机并非物理交换机,而是运行在服务器管理程序之下的虚拟交换机,该虚拟交换机同样通过多于两条链路分别与多于两个聚合交换机连接,且相邻聚合交换机之间也通过链路连接。在以上拓扑中,接入交换机可通过一个或多个端口连接到外部网络,而聚合交换机则可通过其端口连接到内部网络,例如数据中心。仅在接入交换机上进行两个或更多个链路之间的链路聚合,而聚合交换机没有意识到链路聚合,且将物理链路当作单个链路。聚合交换机可以是普通的聚合交换机,除了要求其具有基本的OSI第二层交换功能外没有其他要求。由于在链路两端的系统对链路具有不同的观点,因此可称之为非对称链路聚合(A-LAG)。具有聚合链路的系统可称为A-LAG系统;该链路聚合组可称为A-LAG ;未意识到聚合的另一端的系统可称为A-LAG伙伴系统;A-LAG系统与A-LAG伙伴系统之间的链路可称为A-LAG链路。一个A-LAG系统可连接到多个伙伴系统。通常,接入交换机作为A-LAG系统运行,而聚合交换机作为A-LAG伙伴系统运行。A-LAG系统可以是物理交换机或纯粹基于软件的虚拟交换机。当然,也可以考虑由其他交换机或其他网络设备作为A-LAG系统和A-LAG伙伴系统运行。
[0038]当接入交换机从外部网络接收到帧时,接入交换机(例如,其中的帧分配器)使用分配算法将该帧分配给构成A-LAG的该组链路。在本发明的实施例中,该分配算法应当确保具有给定源MAC地址的帧被发送到单个链路,即所有具有该源MAC地址的帧都被发送到该同一个链路。该分配算法可使用各种已知或未知方法来确保具有给定源MAC地址的帧被发送到单个链路。例如,该分配算法可对源MAC地址执行哈希运算来获得相应的端口号,从而确定该端口所连接的链路。在本发明的一实施例中,接入交换机还可以将不同的源MAC地址及获得的相应端口号存储在一个源MAC地址-出端口号映射表中。这样,当接入交换机再次接收到具有该源MAC地址的帧时,可以省略根据源地址计算端口号的步骤,而直接从该表中获得相应的端口号,并把帧通过该端口及其所连接的链路发送到相应的聚合交换机。所述分配算法可针对所有类型的帧(单播、广播、未知单播等)都根据其源MAC地址将其发送到单个链路。
[0039]如本领域的技术人员可知的,当链路另一端的聚合交换机接收到具有给定源MAC地址的帧时,作为正常的交换机操作,它将在其MAC地址表中创建包含该源MAC地址和接收该帧的端口的端口号的表项(如果该表项还不存在的话),即MAC地址学习,以便当该聚合交换机接收到来自内部网络的目的MAC地址为该源MAC地址的帧时,它将通过查找MAC地址表中的该表项确定该端口号,并通过该端口将该帧沿所述链路发送到接入交换机。由于具有同一个源地址的帧被发送到单个链路,这样就避免了当具有同一个源地址的不同帧被发送到不同链路时,因为一个聚合交换机既通过一个端口从接入交换机接收到帧,又通过另一个端口从另一个聚合交换机接收到该帧,而在其MAC地址表中产生具有相同源MAC地址但不同端口号的相冲突的表项,即产生MAC地址飘移(flapping)。如本领域的技术人员可知的,当发生了 MAC地址飘移时,如果交换机接收到目的MAC地址为该源MAC地址的帧,由于该MAC地址对应于两个不同的端口号,交换机将不会转发该帧,而是将其丢弃;或者,交换机将持续不断地重新学习MAC地址,从而造成性能恶化。因此,根据本发明的实施例的接入交换机使用分配算法避免了在聚合交换机处产生MAC地址飘移以及由此造成的帧丢失或性能恶化。
[0040]一旦A-LAG确保了具有给定源地址的帧被发送到单个链路,通常将自然地实现对称负载均衡。这是由于具有不同源地址的帧将根据其源地址在不同链路之间分配,从而在转发大量具有不同源地址的帧的情况下可能自然地形成负载均衡。可选地,所述分配算法可选择为能够使得大量不同的源地址的帧大体均匀地分布到不同的端口。此外,这种负载均衡是对称的,即具有给定源地址的正向流的帧及对应的反向流的帧将在同一个链路上传输。正向流包括由接入交换机发送到聚合交换机的帧,其由帧的源地址来标识。反向流包括从聚合交换机接收到接入交换机的帧,其由帧的目的地址来标识。如上所述,当聚合交换机从接入交换机接收到正向流的帧时,聚合交换机将在其MAC地址表中创建包含该帧的源地址及接收端口号的表项(如果该表项尚不存在的话)。而当聚合交换机从内部网络接收到目的地址为所述源地址的反向流的帧时,聚合交换机将通过查询MAC地址表中的该表项确定端口号,并通过该端口将反向流的帧发送到接入交换机。这样,这实现了双向的对称负载均衡。
[0041]在A-LAG成员关系发生变化(例如,增加新的聚合交换机和链路或移除聚合交换机及链路)或成员链路状态发生变化(例如,发生链路故障)时,接入交换机能立即知道该变化,并可以使用分配算法根据正向流的帧的源地址为正向流的帧选择新的链路。但在新的正向流的帧通过新选择的链路发送到聚合交换机之前,聚合交换机可能不会意识到该变化。这会造成对称负载均衡的短暂中断。在此期间,先前选择的路径上的反向流的帧可能会由于被发送到具有故障A-LAG链路的聚合交换机而丢失。因此,当接入交换机意识到针对A-LAG流的链路选择发生变化时,接入交换机可通知聚合交换机相应地更新其MAC地址表。这可以通过在新选择的链路上发送具有相应源地址的虚构的帧以便聚合交换机将该源地址及端口号学习到MAC地址表中来实现。该虚构的帧将不会对网络造成打扰。可使用RAPR (反向地址解析协议)帧作为该帧的类型。例如,接入交换机可以针对前述源MAC地址-出端口号映射表中的每个源MAC地址,使用分配算法重新计算端口号并以其更新该表中的表项,然后构造具有该源MAC地址的虚构的帧,并将其通过该重新计算的端口号发送到相应链路上。这样,当链路另一端的聚合交换机接收到该虚构的帧后,将使用该帧中包含的源MAC地址及接收端口号更新其MAC地址表,从而及时为反向流的帧建立新的传输路径。
[0042]如本领域的技术人员可知的,当聚合交换机接收到来自接入交换机的帧后,它将提取该帧包含的目的MAC地址,在其MAC地址表中查找包含该MAC地址的表项来获得该MAC地址对应的端口号,并将该帧从该端口发送出去。该表项是先前当聚合交换机接收到反向流的帧后通过MAC地址学习机制在MAC地址表中创建的。如果在聚合交换机接收到来自接入交换机的帧时,MAC地址表中还没有创建包含其目的MAC地址的表项,即聚合交换机遇到目的查找失败(DLF),则聚合交换机会将该帧泛洪(flood)到除接收端口之外的所有其他端口。如果另一个聚合交换机接收到该帧,并也遇到目的查找失败,该另一个聚合交换机也会将该帧泛洪到其除接收端口之外的所有其他端口,从而该帧将通过该另一个聚合交换机与接入交换机之间的链路返回到接入交换机,即接入交换机将接收到返回帧。此外,当聚合交换机接收到来自接入交换机的广播帧后,它也会将该帧泛洪到其除接收端口外的所有其他端口。当另一个聚合交换机接收到该广播帧时,也会将该帧泛洪到其除接收端口之外的所有其他端口,从而该广播帧将通过该另一个聚合交换机与接入交换机之间的链路返回到接入交换机,从而接入交换机接收到返回帧。
[0043]图4示出了由于聚合交换机处的DLF而形成返回帧的情况。如该图所示,接入交换机在步骤I中通过端口 D从地址为MACl的主机I接收到帧,并通过MAC地址学习机制在其MAC地址表中创建包含MACl和端口号D的表项。接入交换机使用本发明的分配算法根据该帧的源地址MACl选择A-LAGl端口号,并在步骤2中将该帧通过该端口发送给聚合交换机I。聚合交换机I通过其端口 C接收到该帧,并在其MAC地址表中创建包含MACl和端口号C的表项。聚合交换机I在步骤3中将该帧通过其端口 LAGl发送到聚合交换机2。聚合交换机2在接收到该帧后,首先在其MAC地址表中创建包含MACl和其接收端口号LAGl的表项,然后,由于在其MAC地址表中无法查到该帧的目的MAC地址,因此将该帧泛洪到除接收端口之外的每一个端口(端口 A和端口 B),即在步骤4中通过端口 A将该帧发送到地址为MAC2的主机2,并在步骤5中通过端口 B将该帧发送回到接入交换机,从而形成返回帧。如果接入交换机不对返回帧进行抑制,就会通过MAC地址学习机制在MAC地址表中创建包含MACl和端口号A-LAGl的表项,从而和原先创建的包含MACl和端口号D的表项产生冲突。
[0044]在图4中还示出了反向流的帧的传输路径。主机2在步骤6中将目的地址为MACl的帧发送到聚合交换机2。聚合交换机2在接收到该帧后,在MAC地址表中创建包含MAC2和端口号A的表项,然后在步骤7中根据MAC地址表中包含MACl和端口号LAGl的表项将该帧通过端口 LAGl发送到聚合交换机I。聚合交换机I在接收到该帧后,在MAC地址表中创建包含MAC2和端口号LAGl的表项,然后在步骤8中根据MAC地址表中包含MACl和端口号C的表项将该帧通过端口 C发送到接入交换机。接入交换机在接收到该帧后首先在MAC地址表中创建包含MAC2和端口号A-LAGl的表项,并在步骤9中根据MAC地址表中包含MACl和端口号D的表项将该帧从端口 D发送给主机I。
[0045]在典型的网络环境中,广播帧和DLF的数量较少。因此,本发明的A-LAG中的返回帧的数量也较少。然而,A-LAG中的返回帧必须被检测出来并被抑制,否则外部网中的主机的MAC地址将不正确地被重新学习到A-LAG端口(即连接接入交换机和聚合交换机之间的链路的端口)上,从而使主机对于内部网中的主机将不再可达。另一种情况是,当主机从一个端口迁移到另一个端口时,先前学习的主机MAC地址将被重新学习到新的端口上。该端口可以是单个物理端口或代表LAG的逻辑端口。对于物理端口迁移,从主机MAC地址最后出现在先前端口上到主机MAC地址出现在新的端口上,将需要数秒到数分钟的时间。对于虚拟机(VM)迁移,例如VMware的VMot1n,也将需要数秒的时间。而在典型的网络环境中,A-LAG返回帧将在接收到原帧后的仅仅几微秒的时间内被接收到。因此,如果先前出现在交换机的一个端口上的帧的源地址在一个很短的特定时间内出现在另一个A-LAG端口上接收的帧中,则可确定该帧是返回帧。该帧将被丢弃,而不参与MAC地址学习,也不被转发。否贝U,如果先前出现在一个端口上的帧的源地址在一个较长的时间后出现在另一个端口上接收的帧中,则可确定发生了主机的端口迁移,从而可进行正常的MAC地址重新学习和转发。A-LAG返回帧检测可被集成到MAC学习引擎中,以避免额外的查找。
[0046]具体地,在本发明的一实施例中,可在接入交换机的MAC地址表项中添加一个主机移动禁止位。该位在MAC地址表项被创建时被设置,例如设置为I (或O)。每当接收的帧的源地址和入端口与一表项匹配时,该表项的该位也被设置。此外,一个例程周期性地清除所有表项的该位,该周期是可配置的以适应不同场景。当接收的帧的源地址与一表项匹配,而其入端口不同于表项中的端口,且该位被设置时,可确定该帧为返回帧,而将其丢弃,否则进行正常的MAC学习和转发。也就是说,当该位被设置时,表示主机的端口迁移已被禁止,此时如果接收的帧的源地址与MAC地址表项中的源地址相同、而端口号不同,表明该帧是返回帧;而当该位未被设置时,表示主机的端口迁移是允许的,此时如果接收的帧的源地址与MAC地址表项中的源地址相同、而端口号不同,表明这是由于主机的端口迁移造成的。
[0047]当聚合交换机接收到来自内部网的广播帧(在本发明的实施例中,多播帧可被当作广播帧进行处理)或DLF帧时,它将把该帧泛洪到所有的链路上。这样,接入交换机将从每个A-LAG链路接收到该帧的副本,即接收到重复的帧。接入交换机应当消除所接收的重复的帧。为此,接入交换机应当只从一个A-LAG成员端口接收广播帧和DLF帧,而丢弃从其他A-LAG成员端口接收的广播帧和DLF帧。被选择用来接收该帧的端口可称为主端口。在接入交换机中只应存在一个主端口。对于多播帧来说,接入交换机可任意指定一个A-LAG成员端口作为主端口,只有从主端口接收到的多播帧才被接受并被正常处理和转发,而从所有其他A-LAG成员端口接收的多播帧被丢弃。对于从A-LAG端口上接收的单播帧来说,它可能是由聚合交换机作为DLF帧发送的,或者是作为已知目的地址的单播帧发送的。如果它是作为DLF帧发送的,则接入交换机将在每个A-LAG链路上接收到该帧的副本。如果是作为已知目的地址的单播帧发送的,则接入交换机将仅在相应的正向流的帧所使用的链路上接收到该帧。可见在任何情况下,接入交换机都将在相应的正向流的帧所使用的链路上接收到该帧。为此,在本发明的实施例中,接入交换机将选择正向流的帧所使用的端口为单播帧的主端口,只接受从该端口接收的单播帧的副本,而丢弃从所有其他A-LAG端口接收的单播帧的副本。为此,可向接入交换机的每个表项添加一个入端口阻挡位图。该入端口阻挡位图具有对应于每个A-LAG端口的位。当接入交换机针对接收到的正向流的帧,使用分配算法根据其源地址计算出用于转发该帧的A-LAG端口,并在MAC地址表中创建了包含该帧的源地址和接收端口号的表项后,可在该表项中添加入端口阻挡位图,位图中该计算的A-LAG端口所对应位未设置,而对应于其他A-LAG端口的所有其他位被设置。当接入交换机接收到反向流的单播帧,且该帧的目的地址对应于MAC地址表中的一个表项的源地址时,如果该帧的入端口所对应的、该表项中的入端口阻挡位图中的位未设置,则表明该帧是从正向流的帧所使用的A-LAG端口和链路接收的,因此保留该帧,对其进行正常的处理和转发;如果该帧的入端口所对应的、该表项中的入端口阻挡位图中的位已设置,则表明该帧是从其他A-LAG端口和链路接收的,因此丢弃该帧。此外,如本领域的技术人员可知的,交换机中的MAC地址表项通常存在一个老化时间,如果在老化时间内没有收到新的相同源地址的帧,该表项将被删除;该老化时间通常是由老化计时器控制的。因此,为了确保当接入交换机接收到来自聚合交换机的反向流的帧时,包含该帧的目的地址的MAC地址表项仍然存在以便通过其入端口阻挡位图判断该帧是否是应当丢弃的重复帧,可将接入交换机中的老化计时器设置得长于聚合交换机中的老化计时器。
[0048]图5示出了根据本发明的实施例的使用入端口阻挡位图来消除反向流中的重复帧的示例。如该图所示,当接入交换机针对从端口 3接收到的来自MAC地址为MACl的主机I的巾贞在其MAC地址表中添加包含MACl和端口号3的表项时,由于根据分配算法为该巾贞选择的发送端口为A-LAGl端口中的端口 2,因此,在该表项的入端口阻挡位图中对应于端口 2的位未被设置,而对应于A-LAG端口中的其他端口即端口 I的位被设置。在聚合交换机2上的相应MAC地址表项已老化而被删除后,如果聚合交换机2接收到目的地址为主机I的MACl的反向流的帧,则聚合交换机2将把该帧的副本泛洪到其各个出端口,聚合交换机I接收到该帧的副本后将把它转发给接入交换机,从而接入交换机将从端口 I和端口 2接收到该帧的两个副本。对于从端口 I接收的帧的副本,由于包含MACl的表项中的入端口阻挡位图中对应于端口 I的位被设置,该帧副本将被丢弃。而对于从端口 2接收的帧的副本,由于入端口阻挡位中对应于端口 2的位未设置,该帧副本将被正常处理和转发。
[0049]事实上,在一个聚合交换机和接入交换机之间也可存在多个链路,这些链路被聚合为一个端口通道(port-channel)。对于这样的设置,仍然可使用根据本发明的实施例的入端口阻挡位图机制来消除反向流中的重复帧。此时,端口通道被当作单个链路,且端口通道的多个端口被当作一个端口,其可被称为端口通道端口( PCP )。从端口通道中的任何端口接收到的帧将被视为是从端口通道接收的。于是,入端口阻挡位图将用于PCP上,而不是用于单个端口上。也就是说,入端口阻挡位图中包含对应于PCP的位(或对应于PCP中的每个端口的位),当为转发正向流的帧选择该PCP或其中的任一端口时,入端口阻挡位图中对应于该PCP (或其中的每个端口)的位不被设置,而对应于所有其他PCP (或其中的每个端口)的位被设置。当从PCP中的任何端口接收到反向流的帧时,如果包含该帧的目的地址的表项的入端口阻挡位图中对应于该PCP (或该端口)的位被设置,则丢弃该帧;如果该入端口阻挡位图中对应于该PCP (或该端口)的位未被设置,则对该帧进行正常处理和转发。
[0050]图6示出了根据本发明的实施例针对包含端口通道的A-LAG系统使用入端口阻挡位图来消除重复帧的示例。如该图所示,接入交换机的端口通道I和端口通道2都是分别包含三个端口的端口通道。在每个MAC地址表项的入端口阻挡位图中包含对应于这两个端口通道中的每个端口的位,且每个端口通道中的各位共同被设置为I或O。当目的地址为MACl的反向流的帧进入端口通道I中的任何一个通道时,由于包含MACl的地址表项中的入端口阻挡位图中对应于端口通道I中的每个端口的位被设置为1,该帧将被丢弃;而进入端口通道2中的任何一个通道的相同的帧,由于对应于该通道中的位被设置为0,将被接受,并被正常处理和转发。
[0051]此外,A-LAG系统还必须处理不同聚合交换机间的链路(即ISL)发生故障的情况。为了检测ISL故障,在本发明的一实施例中,使用了信标探测(beacon probe)机制。信标探测机制是指从A-LAG的成员端口(例如主端口)定期发送特定的探测广播帧,该帧在所有广播帧中是唯一的。当ISL正常运行时,接入交换机将从A-LAG的所有其他成员端口接收到该帧的副本。而当ISL发送故障时,接收交换机将无法从其主端口之外的其他成员端口接收到该帧的副本,且由此接入交换机可确定发生了 ISL故障。此时,接入交换机可将A-LAG链路视为单独的普通链路,并像普通的交换机那样对所接收到的帧进行正常的处理和转发。
[0052]图7示出了根据本发明的实施例使用信标探测机制来检测ISL故障的示意图。如图所示,在正常情况下,接入交换机定期从其端口 I向聚合交换机I发送探测广播帧,该帧的副本由聚合交换机I发送到聚合交换机2,聚合交换机2将该帧的副本返回到接入交换机的端口 2。如果在聚合交换机I和2之间发生ISL故障,则该帧的副本无法从聚合交换机I到达聚合交换机2,从而接入交换机无法从端口 2接收到该帧的副本,此时接入交换机可确定发生了 ISL故障,从而可将其与不同聚合交换机连接的链路视为单独的普通链路,并进行正常的帧处理和转发。
[0053]现参照图8,其示出了根据本发明的一些实施例的接入交换机响应于接收到帧而执行的处理过程的流程图。如该图所示,在步骤801,接入交换机从一端口接收到帧。然后在步骤802,接收交换机判断在其MAC地址表中是否能找到包含该帧的源地址的表项。响应于该判断为否,在步骤803,在MAC地址表中创建包含该帧的源地址和该端口的端口号的表项,然后前进到步骤806。响应于在步骤802判断在其MAC地址表中能找到包含该帧的源地址的表项,在步骤804,接入交换机进一步判断在MAC地址表中找到的表项的端口号与该端口的端口号是否匹配,如果判断匹配,则前进到步骤806 ;如果判断不匹配,则前进到步骤805。在步骤805,使用该端口的端口号更新该表项中的端口号,然后前进到步骤806。在步骤806,接入交换机判断该端口是否是A-LAG端口。响应于判断该端口是A-LAG端口,即该帧是来自于内部网络的反向流的帧,前进到步骤807,在此接入交换机选择非A-LAG端口(即连接到外部网络的端口)来转发该帧。接入交换机可像普通交换机那样,根据该帧的目的地址选择非A-LAG端口来转发该帧。响应于在步骤806中判断接收该帧的端口是非A-LAG端口,即该帧是来自于外部网络的正向流的帧,前进到步骤808,在此接入交换机基于该帧的源地址选择A-LAG端口以便转发该帧。接入交换机可使用任何一种分配算法来基于帧的源地址来选择A-LAG端口,例如通过对帧的源地址进行哈希运算来获得不同的端口号,只要该分配算法能够保证基于相同的源地址能够获得相同的端口号即可。可选地,该分配算法可使得大量不同的源地址的帧大体均匀地分布到不同的端口号。
[0054]现参照图9,其示出了根据本发明的另一些实施例的接入交换机响应于接收到帧而进行的处理过程的流程图。如该图所示,在步骤901,接入交换机从一端口接收到帧。然后在步骤902,接收交换机判断在其MAC地址表中是否能找到包含该帧的源地址的表项。响应于该判断为否,在步骤903,在MAC地址表中创建包含该帧的源地址和该端口的端口号的表项,然后前进到步骤909。响应于在步骤902判断在其MAC地址表中能找到包含该帧的源地址的表项,在步骤904,接入交换机进一步判断在MAC地址表中找到的表项的端口号与该端口的端口号是否匹配,如果判断匹配,则前进到步骤909 ;如果判断不匹配,则前进到步骤905。在步骤909,接入交换机判断该端口是否是A-LAG端口。响应于判断该端口是A-LAG端口,前进到步骤910,在此接入交换机选择非A-LAG端口来转发该帧。接入交换机可像普通交换机那样,根据该帧的目的地址选择非A-LAG端口来转发该帧。响应于在步骤909中判断接收该帧的端口是非A-LAG端口,前进到步骤911,在此接入交换机基于该帧的源地址选择A-LAG端口以便转发该帧,如以上针对步骤808所更详细描述的那样。在步骤905,判断接收帧的该端口是否是A-LAG端口。响应于该判断为是,可确定该帧是返回帧,因此在步骤906,丢弃该帧,而不使用该帧进行MAC地址学习,也不转发该帧。响应于步骤905的判断为否,即该帧是从外部网络到达接入交换机的正向流的帧,前进到步骤907,在此使用接收帧的该端口的端口号来更新接入所述MAC地址表项中的端口号。然后,在步骤908,基于该帧的源地址选择一个A-LAG端口来转发该帧,如以上针对步骤808所更详细描述的那样。
[0055]现参照图10,其示出了根据本发明的又一些实施例的接入交换机响应于接收到帧而进行的处理过程的流程图。如该图所示,在步骤1001,接入交换机从一端口接收到帧。然后在步骤1002,接收交换机判断在其MAC地址表中是否能找到包含该帧的源地址的表项。响应于该判断为否,在步骤1003,在MAC地址表中创建包含该帧的源地址和该端口的端口号的表项,然后前进到步骤1005。响应于在步骤1002判断在其MAC地址表中能找到包含该帧的源地址的表项,在步骤1004,接入交换机进一步判断在MAC地址表中找到的表项的端口号与该端口的端口号是否匹配,如果判断匹配,则前进到步骤1005 ;如果判断不匹配,则前进到步骤1009。在步骤1005,接入交换机在(步骤1003中新创建的或步骤1004中找到的匹配的)该表项中设置移动禁止位。然后,在步骤1006,接入交换机判断接收该帧的该端口是否是A-LAG端口。响应于该判断为是,选择非A-LAG端口以便转发该帧,例如像正常的交换机那样根据该帧的目的MAC地址来从非A-LAG端口中选择一个。响应于步骤1006的判断为否,基于该帧的源地址选择一个A-LAG端口以便转发该帧,如针对步骤808更详细描述的那样。在步骤1009,接入交换机判断接收该帧的该端口是否是A-LAG端口。响应于该判断为是,前进到步骤1010 ;响应于该判断为否,前进到步骤1014。在步骤1010,接入交换机判断所述表项中的移动禁止位是否被设置。如果判断该移动禁止位被设置,则表明接收该帧的端口与MAC地址表项中的端口不一致不是由于主机的端口移动造成的,而是由于该帧是返回帧造成的,因此在步骤1013丢弃该帧,不使用它进行MAC地址学习,也不进行转发。如果在步骤1010判断移动禁止位未被设置,则表明该帧的端口与MAC地址表项中的端口不一致是由于主机的端口移动造成,因此在步骤1011使用该端口的端口号更新该表项中的端口号。然后,在步骤1012,选择非A-LAG端口以便转发该帧,例如像普通的交换机那样,根据该帧的目的MAC地址来从非A-LAG端口中选择一个。在步骤1014,使用接收帧的该端口的端口号更新该表项中的端口号。然后,在步骤1015中,在该表项中设置移动禁止位。然后,在步骤1016中,基于该帧的源地址选择一个A-LAG端口以便转发该帧,如针对步骤808更详细描述的那样。此外,在这样的实施例中,在接入交换机中还存在一个单独的例程,该例程在MAC地址表中的表项被设置移动禁止位之后周期性地清除该移动禁止位,该周期是可配置的以适应不同的情况,通常,该周期应被设置大于接收到原帧后出现返回帧所需的最大时间,且小于由于主机的端口移动在不同端口上出现相同源地址的帧的所需的最小时间。
[0056]现参照图11,其示出了根据本发明的再一些实施例的接入交换机响应于接收到帧而进行的处理过程的流程图。如该图所示,在步骤1101,接入交换机从一端口接收到帧。然后在步骤1102,接收交换机判断该端口是否是A-LAG端口。响应于判断该端口是A-LAG端口,前进到步骤1122 ;响应于判断该端口不是A-LAG端口,前进到步骤1103。在步骤1103,接收交换机判断在其MAC地址表中是否能找到包含该帧的源地址的表项。响应于该判断为是,前进到步骤1109 ;响应于该判断为否,前进到步骤1104。在步骤1104,在MAC地址表中创建包含该帧的源地址和该端口的端口号的表项。然后,在步骤1105,在该表项中设置移动禁止位。然后,在步骤1106,基于该帧的源地址选择一个A-LAG端口以便转发该帧,如针对步骤808更详细描述的那样。然后,在步骤1107,在该表项中设置入端口阻挡位图,该入端口阻挡位图包含对应于接入交换机的每个A-LAG端口的位,且对应于所选择的A-LAG端口的位未被设置,而对应于其他A-LAG端口的位被设置。如本领域技术人员可理解的,对应于所选择的A-LAG端口的位被设置,而对应于其他A-LAG端口的位未被设置,这也是可以的;事实上,本发明的技术方案只需要这两种位被设置得不同。在步骤1109,接入交换机进一步判断在MAC地址表中找到的表项的端口号与接收帧的该端口的端口号是否匹配,如果判断匹配,则前进到步骤1110 ;如果判断不匹配,则前进到步骤1108。在步骤1108,使用该端口的端口号更新该表项中的端口号,然后前进到步骤1110。在步骤1110,在该表项中设置移动禁止位。然后,在步骤1111,基于该帧的源地址选择一个A-LAG端口以便转发该帧,如针对步骤808更详细描述的那样。在步骤1122,接入交换机判断所接收的帧是否是广播帧。响应于该判断为是,前进到步骤1123 ;响应于该判断为否,前进到步骤1122。在步骤1123,判断接收该帧的该端口是否是指定的主端口。响应于该判断为是,前进到步骤1113 ;响应于该判断为否,在步骤1120中丢弃该帧。在步骤1112,接入交换机判断在其MAC地址表中是否能找到具有该帧的目的MAC地址的表项并且该表项的入端口阻挡位图中对应该端口的位被设置。响应于该判断为是,在步骤1120中丢弃该帧;响应于该判断为否,前进到步骤1113。在步骤1113,接入交换机判断在MAC地址表中是否能找到包含该帧的源地址的表项。响应于该判断为否,前进到步骤1114 ;响应于该判断为是,前进到步骤1115。在步骤1114,在MAC地址表中创建包含该帧的源地址和该端口的端口号的表项,然后前进到步骤1116。在步骤1115,接入交换机判断该表项中的端口号与该端口的端口号是否匹配。如果该判断为是,则前进到步骤1116 ;如果该判断为否,则前进到步骤1119。在步骤1119,接入交换机判断该表项中的移动禁止位是否被设置。响应于该判断为是,在步骤1120中丢弃该帧;响应于该判断为否,前进到步骤1121。在步骤1121,使用该端口的端口号更新该表项中的端口号,然后前进到步骤1116。在步骤1116,在该表项中设置移动禁止位。然后,在步骤1117中,选择非A-LAG端口以便转发该中贞。
[0057]现参照图12,其示出了根据本发明的实施例的接入交换机用于检查聚合交换机间的链路故障的过程的流程图。如该图所示,在步骤1201,由接入交换机周期性地从一个A-LAG端口发送探测广播帧,该探测广播测在所有广播帧中是独特的。在步骤1202,接入交换机判断在指定时间内是否从其他A-LAG端口接收到探测广播帧的副本。响应于该判断为是,返回执行步骤1201。响应于该判断为否,在步骤1203,确定聚合交换机之间发生链路故障。在步骤1204,接入交换机像普通交换机那样对接收到的帧进行处理和转发,也就是说,不再将A-LAG端口所连接的各A-LAG链路视为共同构成A-LAG,并进行本发明中的特殊处理,如根据帧的源MAC地址选择A-LAG端口等,而是将它们视为单独的链路,并进行如普通交换机那样的普通处理,如根据帧的目的地址选择出端口等。
[0058]以上描述了根据本发明的实施例的接入交换机的一些示例性处理流程,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,接入交换机的处理流程可具有更多、更不或不同的步骤,且各步骤之间的顺序等关系可以与所描述和示出的不同。此外,如本领域的技术人员可知的,以上描述实际上公开了根据本发明的实施例的方法和装置。
[0059]在本发明的一个方面,提供了一种用于非对称链路聚合的方法,其中该方法在接入交换机中实现,该接入交换机通过第一组端口(即A-LAG端口)和相应链路连接到至少两个聚合交换机,该接入交换机通过第二组端口(即非A-LAG端口)连接到外部网络,且该至少两个聚合交换机连接到内部网络,该方法包括:响应于从第二组端口中的一个接收到帧(例如,可参见图8中的801、806的否分支,图9中的901、909的否分支,图10中的1001、1006的否分支,以及图11中的1101、1102的否分支),根据该帧的源地址选择第一组端口中的一个(例如,可参见图8中的808,图9中的911,图10中的1008,以及图11中的1111)。
[0060]根据本发明的实施例,该方法还包括:响应于从第二组端口中的一个接收到帧,在接入交换机的MAC地址表中不存在包含该帧的源地址的表项(例如,可参见图8中的802的否分支,图9中的902的否分支,图10中的1002的否分支,以及图11中的1103的否分支),在MAC地址表中创建包含该帧的源地址的表项(例如,可参见图8中的803,图9中的903,图10中的1003,以及图11中的1104);响应于从第二组端口中的一个接收到帧,在接入交换机的MAC地址表中存在包含该帧的源地址的表项,且该表项的端口号与从该帧的端口的端口号不匹配(例如,可参见图8中的804否分支,图9中的904的否分支,图10中的1004的否分支,以及图11中的1109的否分支),则使用该帧的端口的端口号更新该MAC地址表中的该表项(例如,可参见图8中的805,图9中的907,图10中的1014,以及图11中的1108)。
[0061]根据本发明的实施例,该方法还包括:响应于从第一组端口中的一个接收到的帧(例如,可参见图9中的901、905的是分支,图10中的1001、1009中的是分支,以及图11中的1101、1102的是分支),在接入交换机的MAC地址表中存在包含该帧的源地址的表项(例如,可参见图9中的902的是分支,图10中的1002的是分支,以及图11中的1113的是分支),且该表项中的端口号与该帧的端口的端口号不匹配(例如,可参见图9中的904的否分支,图10中的1004的否分支,以及图11中的1115的否分支),则丢弃该帧(例如,可参见图9中的906,图10中的1013,以及图11中的1120)。
[0062]根据本发明的实施例,该方法还包括:从一端口中接收到的帧(例如,可参见图10中的1001,以及图11中的1101),响应于在接入交换机的MAC地址表中存在包含该帧的源地址的表项(例如,可参见图10中的1002的否分支、1003,以及图11中的1103的否分支、1104、1113否分支、1114 ;以及图10中的1002的是分支、1004的是分支,以及图11中的1103的是分支、1109的是分支、1113是分支、1116),则在该表项中设置移动禁止位(例如,可参见图10中的1005,以及图11中的1110、1116);以及响应于从第一组端口中的一个接收到帧(例如,可参见图10中的1001、1009的是分支,以及图11中的1101、1102的是分支),在该MAC地址表中存在包含该帧的源地址的表项但该表项中的端口号与该帧的端口的端口号不匹配(例如,可参见图10中的1002的是分支、1004的否分支,以及图11中的1113的是分支、1115的否分支),并且响应于在该表项中已设置移动禁止位(例如,可参见图10中的1010的是分支,以及图11中的1119的是分支),则丢弃该帧(例如,可参见图10中的1013,以及图11中的1120),响应于在该表项中未设置移动禁止位(例如,可参见图10中的1010的否分支,以及图11中的1119的否分支),则使用该帧的端口的端口号更新该表项(例如,可参见图10中的1011,以及图11中的1121的是分支);其中,所述移动禁止位被周期性地复位。
[0063]根据本发明的一些实施例,其中:响应于从第二组端口中的一个接收到帧(例如,可参见图11中的1101、1102的否分支),在MAC地址表的表项中设置入端口阻挡位图(例如,可参见图11中的1107),该入端口阻挡位图包含对应于第一组端口中的每个端口的位,其中,对应于选择用于发送该巾贞的端口的位未被设置,而对应于第一组端口中的其他端口的位被设置;以及响应于从第一组端口中的一个接收到帧(例如,可参见图11中的1101、1102的是分支),该帧的目的地址匹配该MAC地址表的一表项中的源地址,且该表项的入端口阻挡位图中对应于该端口的位被设置(例如,可参见图11中的1112的是分支),则丢弃该帧。
[0064]根据本发明的另一些实施例,该方法还包括:响应于从第一组端口中的一个接收的帧(例如,可参见图11中的1101、1102的是分支),该帧为广播帧(例如,可参见图11中的1122的是分支),且该端口并非指定的主端口(例如,可参见图11中的1123的否分支),则丢弃该帧(例如,可参见图11中的1120)。
[0065]根据本发明的进一步的实施例,所述接入交换机中的用于MAC地址表项的老化计时器被设置得长于聚合交换机中的用于MAC地址表项的老化计时器。
[0066]根据本发明的实施例,该方法还包括:周期性地从第一组端口中的一个发送探测广播帧(例如,可参见图12中的1201),所述探测广播帧在所有广播帧中是唯一定义的;响应于不是在指定时间内从第一组端口中的其他端口接收到所述探测广播帧(例如,可参见图12中的1202的否分支),确定在聚合交换机之间发生链路故障(例如,可参见图12中的1203),并且像普通交换机那样对接收到的帧进行处理和转发(例如,可参见图12中的1204)。
[0067]根据本发明的实施例,该方法还包括:将所接收的帧的源地址和所选择端口的端口号存储在接入交换机的映射表中。
[0068]根据本发明的实施例,该方法还包括:响应于检测到链路变化,根据所存储的每个源地址,重新选择第一组端口中的一个,生成包含该源地址的虚构帧,并将该虚构帧从该选择的端口发送。
[0069]在本发明的另一个方面,还提供了一种用于非对称链路聚合的装置,其中该装置在接入交换机中实现,该接入交换机通过第一组端口和相应链路连接到至少两个聚合交换机,该接入交换机通过第二组端口连接到外部网络,且该至少两个聚合交换机连接到内部网络,该装置包括:用于响应于从第二组端口中的一个接收到帧,根据该帧的源地址选择第一组端口中的一个的装置;用于利用选择的第一组端口中的一个发送该帧的装置。
[0070]根据本发明的实施例,该装置还包括:用于响应于从第二组端口中的一个接收到帧,在接入交换机的MAC地址表中不存在包含该帧的源地址的表项,则在该MAC地址表中创建包含该帧的源地址的表项的装置;用于响应于从第二组端口中的一个接收到帧,在接入交换机的MAC地址表中存在包含该帧的源地址的表项,且该表项的端口号与从该帧的端口的端口号不匹配,则使用该帧的端口的端口号更新该MAC地址表中的该表项的装置。
[0071]根据本发明的实施例,该装置还包括:用于响应于从第一组端口中的一个接收到的帧,在接入交换机的MAC地址表中存在包含该帧的源地址的表项,且该表项中的端口号与该帧的端口的端口号不匹配,则丢弃该帧的装置。
[0072]根据本发明的实施例,该装置还包括:用于从一端口中接收到的帧,响应于在接入交换机的MAC地址表中不存在包含该帧的源地址的表项,则在该表项中设置移动禁止位的装置;以及用于响应于从第一组端口中的一个接收到帧,在该MAC地址表中存在包含该帧的源地址的表项但该表项中的端口号与该帧的端口的端口号不匹配,并且响应于在该表项中已设置移动禁止位,则丢弃该帧,响应于在该表项中未设置移动禁止位,则使用该帧的端口的端口号更新该表项的装置;以及用于周期性地复位所述移动禁止位的装置。
[0073]根据本发明的实施例,其中:响应于从第二组端口中的一个接收到帧,在该MAC地址表的该表项中设置入端口阻挡位图的装置,该入端口阻挡位图包含对应于第一组端口中的每个端口的位,其中,对应于选择用于发送该帧的端口的位未被设置,而对应于第一组端口中的其他端口的位被设置;以及响应于从第一组端口中的一个接收到帧,该帧的目的地址匹配该MAC地址表的一表项中的源地址,且该表项的入端口阻挡位图中对应于该端口的位被设置,则丢弃该帧。
[0074]根据本发明的实施例,其中,接入交换机中的用于MAC地址表项的老化计时器被设置得长于聚合交换机中的用于MAC地址表项的老化计时器。
[0075]根据本发明的实施例,该装置还包括:用于响应于从第一组端口中的一个接收的帧,该帧为广播帧,且该端口并非指定的主端口,则丢弃该帧的装置。
[0076]根据本发明的实施例,该装置还包括:用于周期性地从第一组端口中的一个发送探测广播帧的装置,所述探测广播帧在所有广播帧中是唯一定义的;用于响应于不是在指定时间内从第一组端口中的其他端口接收到所述探测广播帧,确定在聚合交换机之间发生链路故障,并且像普通交换机那样对接收到的帧进行处理和转发的装置。
[0077]根据本发明的实施例,该装置还包括:用于将所接收的帧的源地址和所选择端口的端口号存储在接入交换机的映射表中的装置。
[0078]根据本发明的实施例,该装置还包括:用于响应于检测到链路变化,根据所存储的每个源地址,重新选择第一组端口中的一个,生成包含该源地址的虚构帧,并将该虚构帧从该选择的端口发送的装置。
[0079]以上参照附图详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0080]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0081]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0082]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0083]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0084]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0085]以上参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0086]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruct1nmeans)的制造品(article of manufacture)0
[0087]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0088]图13示出了适于用来实现本发明实施方式的示例性计算机系统12的框图。图13显示的计算机系统12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0089]如图1所示,计算机系统12以通用计算设备的形式表现。计算机系统12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0090]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0091]计算机系统12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0092]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0093]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0094]计算机系统12也可以与一个或多个外部设备14 (例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统12交互的设备通信,和/或与使得该计算机系统12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22进行。并且,计算机系统12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0095]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0096]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本【技术领域】的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本【技术领域】的其它普通技术人员能理解本文披露的各实施例。
【权利要求】
1.一种用于非对称链路聚合的方法,其中该方法在接入交换机中实现,该接入交换机通过第一组端口和相应链路连接到至少两个聚合交换机,该接入交换机通过第二组端口连接到外部网络,且该至少两个聚合交换机连接到内部网络,该方法包括: 响应于从第二组端口中的一个接收到帧,根据该帧的源地址选择第一组端口中的一个; 利用选择的第一组端口中的一个发送该帧。
2.根据权利要求1方法,还包括: 响应于从第二组端口中的一个接收到帧,在接入交换机的MAC地址表中不存在包含该帧的源地址的表项,则在 该MAC地址表中创建包含该帧的源地址的表项; 响应于从第二组端口中的一个接收到帧,在接入交换机的MAC地址表中存在包含该帧的源地址的表项,且该表项的端口号与该帧的端口的端口号不匹配,则使用该帧的端口的端口号更新该MAC地址表中的该表项。
3.根据权利要求1的方法,还包括: 响应于从第一组端口中的一个接收到的帧,在接入交换机的MAC地址表中存在包含该帧的源地址的表项,且该表项中的端口号与该帧的端口的端口号不匹配,则丢弃该帧。
4.根据权利要求1的方法,还包括: 从一端口中接收到的帧,响应于在接入交换机的MAC地址表中不存在包含该帧的源地址的表项,则在该表项中设置移动禁止位;以及 响应于从第一组端口中的一个接收到帧,在该MAC地址表中存在包含该帧的源地址的表项但该表项中的端口号与该帧的端口的端口号不匹配,并且响应于在该表项中已设置移动禁止位,则丢弃该帧,响应于在该表项中未设置移动禁止位,则使用该帧的端口的端口号更新该表项; 其中,所述移动禁止位被周期性地复位。
5.根据权利要求2至4中任何一个的方法,其中: 响应于从第二组端口中的一个接收到帧,在该MAC地址表的表项中设置入端口阻挡位图,该入端口阻挡位图包含对应于第一组端口中的每个端口的位,其中,对应于选择用于发送该帧的端口的位未被设置,而对应于第一组端口中的其他端口的位被设置;以及 响应于从第一组端口中的一个接收到帧,该帧的目的地址匹配该MAC地址表的一表项中的源地址,且该表项的入端口阻挡位图中对应于该端口的位被设置,则丢弃该帧。
6.根据权利要求5的方法,其中,接入交换机中的用于MAC地址表项的老化计时器被设置得长于聚合交换机中的用于MAC地址表项的老化计时器。
7.根据权利要求1至4中任何一个的方法,还包括: 响应于从第一组端口中的一个接收的帧,该帧为广播帧,且该端口并非指定的主端口,则丢弃该帧。
8.根据权利要求1的方法,还包括: 周期性地从第一组端口中的一个发送探测广播帧,所述探测广播帧在所有广播帧中是唯一定义的; 响应于不是在指定时间内从第一组端口中的其他端口接收到所述探测广播帧,确定在聚合交换机之间发生链路故障,并且像普通交换机那样对接收到的帧进行处理和转发。
9.根据权利要求1的方法,还包括: 将所接收的帧的源地址和所选择端口的端口号存储在接入交换机的映射表中。
10.根据权利要求9的方法,还包括: 响应于检测到链路变化,根据所存储的每个源地址,重新选择第一组端口中的一个,生成包含该源地址的虚构帧,并将该虚构帧从该选择的端口发送。
11.一种用于非对称链路聚合的装置,其中该装置在接入交换机中实现,该接入交换机通过第一组端口和相应链路连接到至少两个聚合交换机,该接入交换机通过第二组端口连接到外部网络,且该至少两个聚合交换机连接到内部网络,该装置包括: 用于响应于从第二组端口中的一个接收到帧,根据该帧的源地址选择第一组端口中的一个的装置; 用于利用选择的第一组端口中的一个发送该帧的装置。
12.根据权利要求11的装置,还包括: 用于响应于从第二组端口中的一个接收到帧,在接入交换机的MAC地址表中不存在包含该帧的源地址的表项,则在该MAC地址表中创建包含该帧的源地址的表项的装置; 用于响应于从第 二组端口中的一个接收到帧,在接入交换机的MAC地址表中存在包含该帧的源地址的表项,且该表项的端口号与从该帧的端口的端口号不匹配,则使用该帧的端口的端口号更新该MAC地址表中的该表项的装置。
13.根据权利要求11的装置,还包括: 用于响应于从第一组端口中的一个接收到的帧,在接入交换机的MAC地址表中存在包含该帧的源地址的表项,且该表项中的端口号与该帧的端口的端口号不匹配,则丢弃该帧的装置。
14.根据权利要求11的装置,还包括: 用于从一端口中接收到的帧,响应于在接入交换机的MAC地址表中不存在包含该帧的源地址的表项,则在该表项中设置移动禁止位的装置;以及 用于响应于从第一组端口中的一个接收到帧,在该MAC地址表中存在包含该帧的源地址的表项但该表项中的端口号与该帧的端口的端口号不匹配,并且响应于在该表项中已设置移动禁止位,则丢弃该帧,响应于在该表项中未设置移动禁止位,则使用该帧的端口的端口号更新该表项的装置;以及 用于周期性地复位所述移动禁止位的装置。
15.根据权利要求12至14中任何一个的装置,其中: 响应于从第二组端口中的一个接收到帧,在该MAC地址表的该表项中设置入端口阻挡位图的装置,该入端口阻挡位图包含对应于第一组端口中的每个端口的位,其中,对应于选择用于发送该帧的端口的位未被设置,而对应于第一组端口中的其他端口的位被设置;以及 响应于从第一组端口中的一个接收到帧,该帧的目的地址匹配该MAC地址表的一表项中的源地址,且该表项的入端口阻挡位图中对应于该端口的位被设置,则丢弃该帧。
16.根据权利要求15的装置,其中,接入交换机中的用于MAC地址表项的老化计时器被设置得长于聚合交换机中的用于MAC地址表项的老化计时器。
17.根据权利要求11至14中任何一个的装置,还包括:用于响应于从第一组端口中的一个接收的帧,该帧为广播帧,且该端口并非指定的主端口,则丢弃该帧的装置。
18.根据权利要求11的装置,还包括: 用于周期性地从第一组端口中的一个发送探测广播帧的装置,所述探测广播帧在所有广播帧中是唯一定义的; 用于响应于不是在指定时间内从第一组端口中的其他端口接收到所述探测广播帧,确定在聚合交换机之间发生链路故障,并且像普通交换机那样对接收到的帧进行处理和转发的装置。
19.根据权利要求11的装置,还包括: 用于将所接收的帧的源地址和所选择端口的端口号存储在接入交换机的映射表中的装置。
20.根据权利要求19装置,还包括: 用于响应于检测到链路变化,根据所存储的每个源地址,重新选择第一组端口中的一个,生成包含该源地址的虚构帧,并将该虚构帧从该选择的端口发送的装置。
【文档编号】H04L12/24GK104079424SQ201310108565
【公开日】2014年10月1日 申请日期:2013年3月29日 优先权日:2013年3月29日
【发明者】陶孜谨, 唐刚, J·基达姆比, A·比斯瓦斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1