专利名称:用于提供单播分组的快速重新路由的方法和装置的制作方法
用于提供单播分组的快速重新路由的方法和装置与相关申请的交叉引用本申请要求2009年5月13日提交的美国临时专利申请No. 61/178,016的益处。 本申请还涉及与本申请同日提交的代理卷号为AVA10-17、题目为“Method And Apparatus For Maintaining PortState Tables In A Forwarding Plane Of A Network Element (用于维护网络元件的转发平面内的端口状态表的方法和装置)”的申请。通过引用将上面 指出的每个申请的教导和公开完整结合在此。
背景技术:
数据通信网络可以包括各种计算机、服务器、节点、路由器、交换机、集线器和代理 服务器,以及被耦接和配置为彼此传递数据的其它设备。此处这些设备被称为“网络元件”, 并且可以在网络上提供各种网络资源。通过在网络上的通信链路在网络元件之间传递协议 数据单元(诸如,分组、信元、帧或段),通过数据通信网络传递数据。特定的协议数据单元 可被多个网络元件处理,并且当它在网络上在它的源和它的目的地之间传播时跨越多个通 信链路。诸如计算机、电话、蜂窝电话、个人数字助理和其它类型的消费电子产品的主机连 接到通信网络,并且通过通信网络传输/接收数据,并且因此,是由通信网络提供的通信服 务的用户。网络元件通常被实现为具有控制网络元件的操作的控制平面(control plane)以 及处理流过网络的通信量的数据平面(data plane)。数据平面通常具有线卡集合,所述线 卡具有连接到网络上的链路的端口。数据在特定端口处被接收、在数据平面内被交换,并且 在一个或多个其它端口处被输出到网络的其它链路上。为了能够迅速地处理数据,通常以 硬件实现数据平面,从而使用硬件查找等执行关于如何处理数据的所有判决。在端口失效的情况下,流过该端口的通信量应当被转向为从替换端口流出,以便 能够通过网络恢复连接性。为了最小化对该网络元件所处理的通信量的影响,例如,为了最 小化停机时间(downtime)和分组丢失,通信量重新路由越快发生越好。优选地,能够使得 通信量在10毫秒(ms)内失效恢复到替换端口是有利的。优选地,通信量应当散布在其余 端口上,而不是从失效端口全部移到特定的指定替换端口,以便防止指定的替换端口的通 信量过载。端口可能出于许多原因而失效,包括线卡故障、连接到端口的链路的故障(例如, 线路中断)、远端线卡故障等。术语多链路中继线路(或称“多链路聚合主干”)(multi-link trunk,MLT)、链路聚合组(Link Aggregation Group, LAG)和逻辑端口是同义词,并且这些 术语被互换地使用。类似地,网络元件内的内部转发数据路径可能失效,这可能导致一个端 口或一组端口表现出失效,或者沿着到端口的外部对等端点的逻辑/虚拟连接可能存在某 些其它故障。存在端口可能失效的多种原因。在端口失效的情况下,去往该端口的通信量应当被转向为从替换端口流出,以便 能够通过网络恢复连接性。为了最小化对该网络元件所处理的通信量的影响,例如,为了最 小化停机时间(down-time)和分组丢失,通信量重新路由越快发生越好。优选地,能够使得通信量在10毫秒(ms)内失效恢复到替换端口是有利的。优选地,在LAG或MLT的情况下, 通信量应当散布在其余端口上,而不是从失效端口全部移到特定的指定替换端口,以便防 止指定的替换端口的通信量过载。
发明内容
诸如上面解释的常规机制具有各种缺点。一个这种缺点是常规网络元件从故障中 恢复所花费的时间量。恢复花费的时间量越长,性能延迟(包括更多的丢弃分组)以及其 它端口克服失效端口的加载越长。当前的解决方案不提供有效地检测端口故障并且分发端 口状态,以便使得能够在分组/信元/帧转发过程中进行快速重新路由的全面的方法。这 些解决方案通常过多地使用管理和/或控制平面软件以便处理一个故障子集。其方法导致 较长的网络停机时间和较多的分组丢失。本发明的实施例显著地克服了这些缺点,并且提供了用于提供在网络元件的转发 平面内维护端口状态表的方法和装置的机制和技术。这对最小化网络停机时间(downtime) 和分组丢失是至关重要的,并且提供网络设备内在这种故障发生时的无缝故障恢复 (failover)。本发明允许在节点集群内非常快速和有效地检测和分发端口状态。这种机制 使得快速路径能够在出现这些故障时执行无缝的快速重新路由,而不需要来自管理和/或 控制平面软件的动态辅助。其它实施例包括其上具有计算机可读代码的计算机可读介质,所述计算机可读代 码用于提供网络元件内的单播分组到与多链路中继线路相关联的可用端口的快速重新路 由。所述计算机可读介质包括用于由网络元件的数据平面内的FDU接收单播分组,并且确 定该分组的目的地的指令。该计算机可读介质还包括在由FDU维护的端口状态表内执行查 找,以针对目的地确定处于UP (上行)状态的可用本地端口,并且如果没有本地端口处于UP 状态,则在端口状态表内执行查找,以便针对该目的地确定处于UP状态的可用远程端口的 指令。附加地,该计算机可读介质包括用于当为该单播分组确定了处于UP状态的端口时转 发该分组,并且当不能为该单播分组确定处于UP状态的端口时丢弃该分组的指令。其它实施例包括一种计算机化设备,其配置为处理此处作为本发明的实施例所公 开的所有方法操作。在这些实施例中,该计算机化设备包括存储器系统、处理器、连接这些 组件的互连机构中的通信接口。所述存储器系统被编码有用于如此处所解释的提供网络元 件内的单播分组到与多链路中继线路相关联的可用端口的快速重新路由的处理,当在处理 器上被实施时(例如,当执行时),该处理在所述计算机化设备内按照此处的解释操作,以 便执行此处作为本发明的实施例所解释的所有方法实施例和操作。因此,执行或被编程为 执行此处解释的处理的任意计算机化设备是本发明的实施例。此处公开的本发明的其它布置包括执行上面概述和下面详细公开的方法实施例 的步骤和操作的软件程序。更具体地,计算机程序产品是具有计算机可读介质的实施例,所 述计算机可读介质包括编码在其上的计算机程序逻辑,当在计算机化设备内被执行时,提 供相关联的操作,用于提供此处解释的网络元件内的单播分组到与多链路中继线路相关联 的可用端口的快速重新路由。当在具有计算系统的至少一个处理器上被执行时,所述计算 机程序逻辑使得所述处理器执行此处作为本发明的实施例指出的操作(例如,方法)。本发 明的这些布置通常被作为布置或编码在计算机可读介质上的软件、代码和/或其它数据结构提供,所述计算机可读介质诸如是光学介质(例如,CD-ROM)、软盘或硬盘或其它介质,诸 如一个或多个ROM或RAM或PR0M芯片内的固件或微代码,或作为专用集成电路(ASIC),或 作为一个或多个模块中的可下载的软件映像、共享库等。软件或固件或其它这些配置可被 安装在计算机化设备上,以便使得计算机化设备内的一个或多个处理器执行此处作为本发 明的实施例解释的技术。在计算机化设备的集合中,诸如,在一组数据通信设备或其它实体 内操作的软件处理也可以提供本发明的系统。本发明的系统可分布在若干数据通信设备上 的许多软件处理内,或所有处理可以在一组少数的专用计算机上或单独在一个计算机上运 行。应当理解,本发明的实施例可被严格地表达为,诸如,数据通信设备内的软件程 序、软件和硬件、或是仅为硬件和/或电路。如此处解释的本发明的特征可被用于数据通信 设备和/或用于这种设备的软件系统,所述设备诸如是由新泽西州林克罗夫特市的Avaya 公司制造的设备。注意,本公开中讨论的每个不同特征、技术、配置等可被独立地或组合地执行。因 此,本发明可以许多不同方式被表达。还要注意,此处的概述部分未指出本公开或所提出的发明的每个实施例和/或增 加的新颖方面。而是,该概述仅提供对不同实施例和相对于常规技术的相应新颖点的初步 讨论。对于本发明的附加细节、元素和/或可能的设想(改变),读者需要参考下面进一步 讨论的本公开的具体实施方式
部分和相应附图。
如附图中所示,从下面对本发明的优选实施例的更具体的描述中,将明了上面的 内容,其中类似的附图标记在所有不同视图中指示相同部分。这些图不必是成比例的,而是 重点在于示出本发明的原理。图1是示出了组织节点集群的第一个例子的功能方框图;图2是示出了组织节点集群的另一个例子的功能方框图;图3是示出了组织节点集群的另一个例子的功能方框图;图4是示出了组织节点集群的另一个例子的功能方框图;图5是示出了组织节点集群的另一个例子的功能方框图;图6是示出了组织节点集群的另一个例子的功能方框图;图7是示例通信网络的功能方框图;图8是示例网络元件的功能方框图;图9是可用于诸如图8的网络元件的网络元件的示例线卡的功能方框图;图10是可用于诸如图9的线卡的线卡的示例端口数据库的功能方框图;图11是示例网络元件集群的功能方框图,示出了节点集群内的数据路径组件之 间的端口状态信息流;图12示出了根据本发明的实施例操作的网络元件的示例计算机系统体系结构;图13包括根据本发明的实施例,用于为独立端口执行单播分组的快速重新路由 的方法的流程图;和图14包括根据本发明的实施例,用于为多链路中继线路端口执行单播分组的快速重新路由的方法的流程图。
具体实施例方式网络元件处理数据的方式随时间而发展。例如,两个或更多个物理链路可以在一 组网络元件之间延伸,并且被总地用作MLT或LAG。图1示出了由多个链路24a-d连接的 两个网络元件(网络元件1和网络元件2)的例子,多个链路24a-d被分组,从而形成多链 路中继线路22。具体地,MLT22中的每个链路24a-d可被任意一个网络元件用于向另一个 网络元件转发数据。因此,如果网络元件1具有要发送到网络元件2的数据(例如,帧/分 组),网络元件1可以从MLT22中选择链路24a-d中的一个,并且在该链路上向网络元件2 传输分组。图2示出了可以互连网络元件的另一种示例方式。具体地,在这个例子中,网络元 件1和网络元件2被交换机间中继线路(Inter-SwitchTrunk,1ST) 26互连,IST26可以是 单个链路或它自己可以是多链路中继线路。当多链路中继线路的链路被物理地连接到两个 不同的网络元件时,MLT被称为分离的多链路中继线路(Split Multi-Link Trunk, SMLT)。 每个网络元件1和2可以具有连接到网络元件3的一个或多个链路,这些链路被组成一组 从而形成SMLT23。因此,如果网络元件1具有要发送到网络元件3的数据(例如,帧/分 组),网络元件1可以选择连接它的SMLT链路之一,或可以在与交换机间中继线路26相关 联的链路之一上传输分组,以便使得网络元件2能够在其与SMLT相关联的链路之一上将数 据转发到网络元件3。图3示出了另一个例子,其中网络元件1不具有连接到SMLT23的任何链路,但是 被IST25和26连接到具有被连接到与SMLT相关联的链路的端口的两个其它网络元件(网 络元件2和网络元件3)。在这种情况下,如果网络元件1具有要在SMLT上发送的数据,它 将选择1ST链路之一(注意,每个1ST链路自身可以是SMLT),并且将数据转发到网络元件 2或3。1ST可以是物理的并且在两个网络元件之间直接延伸,或可以是逻辑的并且通过一 个或多个中间网络元件在隧道上延伸。图4示出了另一个例子,其中网络元件1还参与到SMLT23内。在这种情况下,如 果网络元件1具有要发送的数据,它可以在其与SMLT23相关联的链路之一上转发数据,或 可以在与IST25或26中的一个相关联的链路之一上转发数据,以便使得能够在SMLT23上 转发数据。图5和6示出了在正方形SMLT布置中互连网络元件的另一种方式。在图5所示 的布置中,4个网络元件在正方形布置中通过IST25-28互连,并且在图6中,4个网络元件 在网状布置中通过IST25-28互连。1ST可以是物理的并且在两个网络元件之间直接延伸, 或可以是逻辑的并且通过一个或多个中间网络元件在隧道上延伸。虽然示出了可以互连网络设备的几种示例方式,但是还存在互连网络元件集群的 其它方法,并且这组示例的互连体系结构不旨在是无遗漏的。因此,这些例子仅旨在提供互 连网络元件的少数方法的代表性例子。一组网络元件在此处被称为集群。图7示出了示例的通信网络10,其中订户12连接到边缘交换机14。边缘交换机 14连接到核心交换机16,核心交换机16通过网络在链路18上转发数据。这些交换机中的 每一个可以是物理的路由交换机(rouswitchter)或可以是被连接在一起以便作为集群操作的多个设备。每个链路18可以是MLT,或在路由器/交换机被实现为多个物理设备的情 况下,可以是SMLT。从网络路由的角度来看,分组可有多种方式穿过网络。例如,在图7中, 边缘交换机A能够通过核心交换机C和D将分组传输到边缘交换机B,或可替换地,可以能 够通过核心交换机E和F传输分组。可以使用网络层路由协议确定用于传输分组的路径。如上所述,取决于互连网络元件的方式,网络元件可以有许多方法转发帧/分组, 以便使得帧/分组能够到达其目的地。如此处使用的,术语“集群”用于指在网络层提供节 点级弹跳的一个或多个节点。因此,在图1中,网络元件1是一个集群;在图2中,网络元件 1和2是一个集群,并且在图3和4中,网络元件1、2和3是一个集群,并且在图5和6中, 网络元件1-4是一个集群。如上所述,可以有组织集群中的节点的其它方式。集群节点之间的逻辑连接此处被称为交换机间中继线路(1ST)。1ST可以是集群 中从一个网络元件延伸到相邻网络元件的物理链路,或可以是逻辑链路,该逻辑链路是穿 过集群内的一个或多个中间网络元件的隧道。从非1ST端口接收分组的节点被称为本地节 点。对于接收到的分组来说,集群内的所有其它节点被称为远程节点。两个或更多个链路可以组成一组,以便形成多链路中继线路(MLT)。给每个MLT分 配一个MLT组ID (MLT-ID),它是集群内的全局值,并且在集群节点中是唯一的。其所有端口 成员仅在一个节点上的MLT被称为常规MLT组。其端口成员在两个或更多个节点上的MLT 组被称为分离的MLT或SMLT组。当逻辑端口被实现为MLT或SMLT时,实际上存在能够将 分组转发到其在网络上的 下一跳的多个物理端口。因此,如果MLT/SMLT的端口之一失效,使得分组被转发到其余端 口之一,从而分组可以穿过网络而不是被丢弃是有利的。类似地,不是为MLT/SMLT中的每 个端口指定主端口和后备端口,在MLT/SMLT的其余端口上负载共享分组,从而分组可被分 布在处于UP的其余端口上是有利的。根据一个实施例,这个处理以硬件实现,从而快速通 路(数据平面)可以自动适应单个和多个端口失效,并且自动地以公平的方式在其余端口 上重定向分组通信量。图8示出了可被用作图1-6中任意一个所示的任意网络元件的示例网络元件20 的功能方框图。在图8所示的例子中,网络元件包括控制平面31和数据平面32。控制平面 具有一个或多个CPU34,并且一般地运行控制处理,诸如路由处理、管理处理等。控制平面对 数据平面编程,以便指示数据平面如何在网络上转发数据。可以使用许多不同的体系结构构造数据平面32,并且图8所示的例子仅是一个这 种体系结构的一个例子。在图8所示的例子中,数据平面包括多个线卡36,每个线卡实现连 接到网络中的链路的多个物理端口。线卡在这个实施例中被交换机结构40互连,虽然在其 它实施例中,线卡可以直接互连,并且以分布式方式执行交换功能。如图9所示,每个线卡36包括物理地连接到网络上的链路的多个端口 38。线卡还 包括处理从附接端口接收的分组的一个或多个功能单元42。如此处使用的,处理在进入和 外出两个方向上来自附接端口的分组并且进行转发判决的功能单元被称为转发数据路径 单元或FDU42。线卡还可以包括CPU44,CPU44与控制平面交互,以便使得控制平面能够将 指令编程到FDU42内,并且可选择地编程到线卡上的其它组件内,从而FDU42在网络上正确 地处理数据。CPU44还周期地检查FDU42和线卡中的其它组件的状态,以便检测何时出现故 障。
每个FDU42维护端口状态数据库46。这个端口状态数据库46维护物理链路状态 和其本地和所有远程端口的连接状态。如图10所示,端口状态数据库46包括两个表-本地 端口数据表48和远程端口数据表50。本地端口数据表48维护属于本地节点的端口状态, 并且远程端口数据表50维护属于集群中的远程端口的端口状态。在MLT组的情况下,FDU 将本地节点上的MLT端口成员保持在本地表内,并且将所有其它远程节点上的端口成员保 持在远程表内。当FDU接收到分组时,需要寻找MLT (或SMLT)内的处于UP的端口,以便将分组转 发到其在网络上的目的地。如上所述,在MLT上的所有端口都为本地的情况下,FDU将必须 确定本地端口中的哪一些处于UP状态,从而不会试图在处于DOWN (下行)的端口上转发分 组。类似地,当与MLT相关联的端口不全是本地(例如,SMLT)时,FDU将必须选择与SMLT 相关联的分离的物理网络元件上的并且具有UP状态的端口。根据一个实施例,每个FDU维护它用于维护集群内的每个端口的状态的端口状态 数据库46。该数据库维护物理链路状态和其本地和所有远程端口的连接状态。该数据库包 括两个表_即,本地表48和远程表50。本地表维护属于本地节点上的所有FDU的端口状 态,并且远程表维护集群内的所有远程节点上的所有端口的端口状态。在MLT组的情况下, FDU在本地表内保持本地节点上的MLT端口成员的状态,并且在远程表内保持所有其它远 程节点上的MLT端口成员的状态。本地表还维护所有1ST端口的状态。当接收到分组时, FDU将使用端口状态数据库确定处于UP的用于该分组的端口,并且将分组转发到该端口以 便在网络上输出。由于端口状态数据库46被FDU42用于确定转发判决,保持更新端口状态表是重要 的,从而它包含关于每个端口的状态的当前信息。由于每个线卡具有一个或多个FDU,需要 每个FDU(在每个线卡内)与本地网络元件内的所有其它线卡内的FDU以及集群内的其它 网络元件内的所有其它FDU同步。在一个实施例中,每个线卡维护心跳计时器。每次心跳计时器中的一个特定计 时器超时时,心跳引擎54产生一个心跳分组,并且将该心跳分组发送到该线卡上的本地 FDU42。心跳分组携带有线卡上的所有端口的本地物理链路状态,以便将该线卡上的端口的 状态通知给本地FDU。该分组指出全局端口 ID(GPID)和网络元件ID。FDU使用这个状态更 新其本地端口状态数据库。FDU还将该分组转发到本地节点内的所有其它FDU以及集群内 的其它节点上的所有其它FDU。每个FDU使用该分组携带的端口状态来更新其端口状态数 据库。除了维护与收集/报告其自己的端口状态信息相关联的计时器之外,每个线卡/ FDU还将维护与本地节点内的所有其它FDU以及集群内的其它节点上的所有其它FDU相关 联的一组计时器。每个FDU期望从每个其它本地和远程FDU接收周期心跳分组。因此,为每 个FDU(为本地网络元件上的每个FDU和集群内的每个远程网络元件上的每个FDU)维护本 地接收计时器。如果相应的接收计时器超时,则检测到FDU故障(本地或远程)。在接收计 时器超时之前未接收到心跳分组的情况下,与该FDU相关联的每个端口将被设置为DOWN, 从而不向与该FDU相关联的端口发送分组,直到它恢复为止。心跳分组允许FDU彼此传递状态信息,并且允许每个FDU 了解数据平面内的所有 端口的状态。如下所述,这允许数据平面自动地针对端口故障进行调整,从而数据可被重定向到处于UP的端口并且远离处于DOWN的端口。所有这些在没有控制平面的干预的情况 下发生,并且因此不将特定端口/线卡的故障通知给控制平面。为了使得控制平面能够得 知数据平面故障,管理/控制处理器44周期地向其本地FDU42注入心跳分组或从其本地 FDU42提取心跳分组。每个注入的心跳分组完整地循环通过目标FDU和相关联的端口,并且 然后被提取回到处理器。管理心跳分组穿过进入和外出数据路径两者内的所有功能块。每 次控制处理器注入这种属性的管理心跳分组,它开始其相应的接收计时器。如果接收计时 器超时,则控制处理器检测到线卡故障。处理器使用这种信息设置将被传递到控制平面30 的系统警报。因此,控制平面可以得知数据平面故障。然而,由于数据平面具有自我复原机 制以便适应端口故障并且从而重定向通信量,重定向通信量不需要涉及控制平面,并且因 此将故障通知控制平面对于通过网络元件的通信量的恢复不是至关重要的。每个FDU还使用心跳分组确定其端口的状态,在一个实施例中,每个FDU为配置在 逻辑/虚拟连接内的每个附接端口维护一对计时器。计时器之一用于产生将在所述连接上 被发送的心跳分组。另一个计时器(接收计时器)用于检测连接故障。如果来自该连接的 其它端点的心跳分组未被及时接收,该计时器超时。FDU根据心跳分组的到达和接收计时器 超时更新其端口状态表。每个线卡上的每个FDU维护其自己的端口状态表46。这个表维护物理链路状态 和其本地端口以及集群内的所有FDU的所有远程端口的连接状态。FDU使用接收到的心跳 分组和计时器超时消息(由于连接超时或远程FDU故障)更新该表。该表被划分为两个 部分属于本地节点的端口状态和属于远程节点的端口状态。该端口状态表还维护MLT和 SMLT组信息。转发逻辑使用该端口状态表执行下面更详细解释的快速重新路由。图11示出了 4个节点的集群内的端口状态分组的分发,其中黑色箭头表示端口状 态分组到集群内的所有FDU的流动。如这个图中所示,产生包含与特定FDU相关联的每个 端口的状态的分组1。以左上网络元件的左上线卡内的附图标记1示出这个分组。这个分 组将被传递到FDU,从而FDU可以更新其端口状态数据库,以便反映其端口的当前状态。然 后该分组将被传递到本地节点内的每个其它FDU (箭头2)。在一个实施例中,这可通过使得 交换机结构将该分组广播到本地节点内的所有其它FDU实现。该分组还将被转发到集群内 的其它节点(箭头3),从而端口状态可被分发(箭头4)到与集群内的每个节点相关联的每 个FDU。当FDU接收到包含端口状态信息的分组时,它使用该信息更新其自己的端口状态数 据库。这使得同步集群内所有FDU的端口状态数据库。集群中可以存在若干网络元件,网络元件中可以存在多个FDU和可以存在由每个 FDU支持的多个端口。为了使得每个节点能够保持追踪哪个FDU已经提供了状态分组,并 且将特定端口状态分组与特定FDU相关联,可以实现编号方案。优选地,在集群范围内唯一 地实现编号方案,从而可以唯一地标识集群内的每个FDU0在一个实施例中,端口状态分组 携带关于其每个端口的信息。该分组将指出源节点ID和全局端口 ID(GPID)。全局端口 ID 是使得可以在端口数据库内唯一地标识端口的全局唯一标识符(节点内全局唯一的)。前面的消息描述FDU如何交换消息以便使得能够在数据路径内的端口之间同步 端口状态。在操作中,这种端口状态信息将使得FDU能够为特定的数据分组选择可用端口, 并且确信所选择的端口处于UP。当端口成为DOWN时,集群中的FDU将停止选择这些端口, 而是选择与下行端口(down port)相关联的MLT/SMLT内的替换端口,以便用于处理该分组。因此,数据路径能够自动地适应端口故障、线卡故障等,以便将分组重新路由到可用的 替换端口而不涉及控制平面。因此,可以在网络元件内和在网络元件的集群之间迅速地进 行少于IOms的分组重新路由。当FDU接收到数据分组时,它将读取端口 ID、MLT_ID和散列函数,并且将这些值传 递到端口状态数据库。端口状态数据库将首先搜索与MLT-ID相关联的并且处于UP的本地 端口,并且然后搜索与该MLT相关联并且处于UP的远程端口。在一个实施例中,端口状态 表被设计为卸载来自该FDU的端口选择处理。在这个实施例中,FDU将对端口的请求传递 到端口状态表,并且端口状态表智能地实现该请求,以便返回保证处于UP的作为MLT/SMLT 的一部分的端口,并且相对于远程端口优先使用本地端口。另外,在端口在远程节点上的情 况下,端口状态表将检查以便寻找处于UP的1ST端口,FDU可以在该端口上将分组转发到 远程节点,从而远程节点可以在远程节点上转发分组。因此,端口状态表不仅确定是否存在 可用的远程端口,而且还确定是否存在可用的1ST端口,FDU可以使用该1ST端口将分组传 递到远程节点,以便在远程端口上进行转发。图10示出了可用于卸载来自FDU的端口选择的实施例。在图10的实施例中,端 口数据库包括数据库控制逻辑56,数据库控制逻辑56配置为从FDU接收端口选择请求,并 且如果存在一个可用端口,则返回该可用端口。端口数据库可能需要对本地和远程端口表 进行多个数据库访问操作/调用,以便确定将响应端口选择请求返回哪个端口。数据库控 制逻辑,可选择地在FDU的控制下,控制这个处理的执行,以便自动执行选择端口的处理。数据库控制逻辑可以硬件实现,并且在也以硬件实现的本地和远程表内执行数据 访问。当端口失效时,该端口的状态(UP/DOWN)将被反映在端口状态表内。当FDB查找返 回作为MLT/SMLT组的一部分的目的地时,FDU将通过数据库控制逻辑向端口状态表执行端 口访问操作。因此,不是由FDU从FDB (以控制平面更新,并且因此,相对慢)确定端口,而 是FDU使用FDB确定接收方,并且然后使用以硬件实现的端口数据库单独确定用于到达该 接收方的端口。这使得能够基于端口的当前状态和MLT组ID动态地确定端口,从而可以为 分组从相关联的(MLT)端口组中选择可用端口。这使得网络设备能够适应多个故障(多个 端口 /链路故障),并且通过将分组从下行端口重新路由到MLT内的保证处于UP的端口快 速地进行适应调整。由于端口故障通知跨越集群内的多个网络设备,FDU可以将分组转发到 不同节点上的另一个端口,从而可以用类似的方式实现网络设备内以及网络设备之间的端 口选择。这使得不仅能够从仅具有本地端口的MLT内进行端口选择,而且使得能够在集群 内的不同节点上实现的端口之间实现端口选择,从而可以动态地实现SMLT内的端口选择。 另外,由于节点能够从与MLT/SMLT相关联的所有其它端口之间进行选择,来自下行端口的 通信量可被散布/分布在MLT/SMLT的其余端口上,而不是被完全转移到特定的替换端口。 类似地,可以适应多个端口故障和端口故障组合,而不中断通过节点集群的分组转发,这是 由于当接收到分组时,端口状态数据库将能够查找处于UP的任何可用端口,并且返回任何 可用端口的值以便由FDU使用。图12是示出了计算机系统(FDU)IlO的示例体系结构的方框图,计算机系统 (FDU) 110执行、运行、解释、操作或以其他方式实施快速重新路由操作应用140-1和适用于 解释此处公开的示例配置的快速重新路由操作处理140-2。如这个例子中所示,计算机系 统110包括互连机构111,诸如耦接存储器系统112、处理器113、输入/输出接口 114和通信接口 115的数据总线或其它电路。通信接口 115使得计算机系统110能够与网络(未示 出)上的其它设备(即,其它计算机)通信。存储器系统112是任意类型的计算机可读介质,并且在这个例子中,被编码有此 处解释的快速重新路由操作应用140-1。快速重新路由操作应用140-1可被表达为软件代 码,诸如支持根据此处描述的不同实施例的处理功能的数据和/或逻辑指令(例如,存储在 存储器内或另一计算机可读介质诸如可移动盘上的代码)。在计算机系统110的操作过程 中,处理器113通过互连111访问存储器系统112,以便启动、运行、执行、解释或以其他方 式实施快速重新路由操作应用140-1的逻辑指令。以这种方式执行快速重新路由操作应 用140-1产生快速重新路由操作处理140-2中的处理功能。换言之,快速重新路由操作处 理140-2表示运行时在计算机化设备110内的处理器113之内或之上执行或实施的快速重 新路由操作应用140-1的一个或多个部分或运行时实例(或整个快速重新路由操作应用 140-1)。注意,此处公开的示例配置包括快速重新路由操作应用140-1自身(即,为非执行 或非运行逻辑指令和/或数据的形式)。快速重新路由操作应用140-1可被存储在计算机 可读介质(诸如软盘)、硬盘、电子的、磁的、光学的或其它计算机可读介质上。快速重新路 由操作应用140-1还可被存储在存储器系统112内,诸如在固件、只读存储器(ROM)内,或 在这个例子中,作为可执行代码存储在,例如,随机存取存储器(RAM)内。除了这些实施例, 还应当注意,此处的其它实施例包括快速重新路由操作应用140-1作为快速重新路由操作 处理140-2在处理器113中的执行。本领域的技术人员应当理解,计算机系统110可以包 括其它处理和/或软件和硬件组件,诸如这个例子中未示出的操作系统。在操作过程中,计算机系统100的处理器113通过互连111访问存储器系统112, 以便启动、运行、实施、解释或以其他方式执行快速重新路由应用140-1的逻辑指令。执行 快速重新路由应用140-1产生快速重新路由处理140-2中的处理功能。换言之,快速重新 路由处理140-2表示计算机系统100内的处理器113之内或之上执行的快速重新路由应用 140-1的一个或多个部分(或整个应用)。应当注意,除了快速重新路由处理140-2之外,此处的实施例包括快速重新路由 应用140-1自身(即,非执行或非运行逻辑指令和/或数据)。快速重新路由应用140-1可 被存储在计算机可读介质,诸如软盘、硬盘或光学介质上。快速重新路由应用140-1还可被 存储在存储器类型的系统内,诸如在固件、只读存储器(ROM)内,或在这个例子中,作为可 执行代码存储在存储器系统112内(例如,在随机存取存储器或RAM内)。除了这些实施例,还应当注意,此处的其它实施例包括快速重新路由应用140-1 作为快速重新路由处理140-2在处理器113中的执行。本领域的技术人员应当理解,计算 机系统100可以包括其它处理和/或软件和硬件组件,诸如控制与计算机系统100相关联 的硬件资源的分配和使用的操作系统。图13和14中给出了当前公开的方法的特定实施例的流程图。此处矩形元素代表 “处理块”,并且表示计算机软件指令或指令组。可替换地,处理块表示由功能等同电路,诸 如,数字信号处理器电路或专用集成电路(ASIC)执行的步骤。这些流程图未给出任何特定 编程语言的语法。而是这些流程图示出了本领域的技术人员构造电路或生产计算机软件以 便执行根据本发明的所需处理所需要的功能信息。应当注意,未示出许多例程程序元素,诸如循环和变量的初始化以及对临时变量的使用。本领域的普通技术人员将会明了,除非此 处另外指出,所描述的特定步骤序列仅是说明性的,并且可被改变而不脱离本发明的精神。 因此,除非另外说明,下面描述的步骤不带有顺序含义,当可能时,这些步骤可以任何方便 的或所希望的顺序执行。图13示出了可被实现以便执行单播分组的快速重新路由的处理200的特定实施 例。处理200以处理块202开始,处理块202说明以网络元件的数据平面内的FDU接收单
播分组。处理块204说明确定分组的目的地。在处理了接收到的单播分组之后,其转发目 的地被解析为目的地端口。这可被FDU以方便的方式,例如,通过在转发数据库(用于以太 网的过滤数据库)中执行查找来执行。处理块206说明确定目的地端口是独立端口还是MTL组。如果FDU确定目的地端 口是独立端口,FDU可以将该分组直接转发到目的地端口,或可以向数据库控制逻辑发送请 求,以便确定目的地端口是否处于UP。处理块208公开了在由FDU保持的端口状态表中执行查找,以便针对该目的地确 定处于UP状态的可用本地端口,并且如果没有本地端口处于UP状态,则在端口状态表中执 行查找,以便针对该目的地确定处于UP状态的可用远程端口。在接收到请求之后,数据库 控制逻辑查询本地表,以便确定目的地端口的状态,并且将该状态返回FDlL 处理块210说明当为该单播分组确定了处于UP状态的端口时转发该分组,或当远 程表中的所有端口成员都处于DOWN状态时丢弃该分组。如果目的地端口处于UP,FDU将该 分组转发到该目的地端口。如果目的地端口不处于UP,FDU将丢弃该分组。注意,在这个实 施例中,端口状态为UP或DOWN。现在参考图14,示出了用于为MLT组执行单播分组的快速重新路由的处理300的 流程图。处理300以处理块302开始,处理块302说明以网络元件的数据平面内的FDU接 收单播分组。处理块304说明确定分组的目的地。在处理了接收到的单播分组之后,其转发目 的地被解析为目的地端口。处理块306说明确定目的地端口是独立端口还是MTL组。在这个情况下,目的地 端口是MLT端口成员。处理块308公开了根据单播分组中所选择的字段产生散列值,以便确定MLT端 口成员。处理块310说明使用MLT组ID和散列值确定处于UP状态的端口成员。MLT组 ID(MLT-ID)和散列值将被传递到数据库控制逻辑,并且被数据库控制逻辑用于查询本地 表,以便获得处于UP状态的端口成员。处理块312说明确定本地表中的所有端口成员是否都处于下行,并且当所有端口 成员处于下行时,从远程表中确定MLT端口。数据库控制逻辑优选地选择MLT内以该散列 值标识的端口,以首先查询该端口的状态。如果与该散列值相关联的MLT端口处于UP,数据 库控制逻辑将该端口的值返回FDU。如果该端口处于下行,数据库控制逻辑将访问本地数据 库,以便确定与MLT相关联的其它端口中是否有一个端口处于UP。如果是的,它返回找到的 处于UP的第一个本地端口的端口 ID。处理块314公开了为从远程表中选择的端口成员确定处于UP状态的1ST端口成员。如果可以获得一个或多个远程端口,数据库逻辑将确定将被用于向与处于UP的远程端 口相关联的远程网络元件转发分组的1ST端口。然后。数据库控制逻辑以1ST端口 ID响 应 FDU。处理块316说明确定针对远程端口没有1ST端口成员处于UP状态,并且丢弃该分 组。如果不可以获得1ST端口成员,则将丢弃该分组。类似地,如果不可以获得远程端口, 则丢弃该分组。处理块318说明当为单播分组确定了处于UP状态的端口时转发分组,或当远程表 中的所有端口成员都处于DOWN状态时丢弃该分组。如果目的地端口处于UP,FDU将该分组 转发到该目的地端口。如果目的地端口不处于UP,FDU将丢弃该分组(110)。可以理解,对“微处理器”和“处理器”的引用或“微处理器”和“处理器”包括可以 在一个或多个独立和/或分布式环境中通信的一个或多个微处理器,并且因此被配置为通 过有线或无线通信与其它处理器通信,其中这种一个或多个处理器可被配置为在可以是类 似设备或不同设备的一个或多个处理器控制的设备上操作。因此,对这些术语“微处理器” 或“处理器”的使用可被理解为包括中央处理单元、算数逻辑单元、专用集成电路(IC)和/ 或任务引擎,提供这些例子用于说明而不是作为限制。另外,除非另外指明,对存储器的引用可以包括一个或多个处理器可读和可访问 的存储器元件和/或组件,它们可以在以处理器控制的设备之内,在以处理器控制的设备 之外,和/或可使用各种通信协议通过有线或无线网络被访问,并且除非另外指明,可被安 排为包括外部和内部存储器设备的组合,其中基于应用,这些存储器可以是邻近的和/或 分开的。因此,可以理解对数据库的引用包括一个或多个存储器联合体,其中这些引用可以 包括商业上可获得的数据库产品(例如,SQL、Informix, Oracle)并且还有私有数据库,并 且还可以包括用于关联存储器的其它结构,诸如链接、队列、图、树,提供这些结构用于说明 而不是作为限制。除非另外规定,对网络的引用可以包括一个或多个内联网和/或互联网以及虚拟 网络。根据上述内容,此处对微处理器指令或微处理器可执行指令的引用可被理解为包括 可编程硬件。除非另外说明,对单词“大体上”的使用可被认为包括精确的关系、状态、布置、取 向和/或其它特性,以及如本领域的技术人员所理解的对它们的偏离,所述偏离的程度以 不会本质上影响公开的方法和系统为准。在本发明的整个公开中,对修饰名词的冠词(“一个”)的使用可被理解为是出于 方便而使用的,并且除非特别指出,包括一个或多于一个所修饰的名词。除非此处另外规定,被描述为和/或以其他方式在图中被描绘为与其它元件、组 件、模块和/或其部分通信、相关联和/或基于其它元件、组件、模块和/或其部分的元件、 组件、模块和/或其部分可被理解为以直接和/或间接的方式与其它元件、组件、模块和/ 或其部分通信、相关联和/或基于其它元件、组件、模块和/或其部分。虽然已经以特定实施例描述了方法和系统,所述方法和系统不限于此。显然根据 上述教导可以明了许多修改和变形。本领域的技术人员可以做出对此处描述和说明的细 节、材料和部件布置的许多附加改动。已经描述了本发明的优选实施例,本领域的普通技术人员现在将会明了可以使用结合有这些概念的其它实施例。另外,被包括为本发明的一部分的软件可被包含在包括计 算机可用介质的计算机程序产品内。例如,这种计算机可用介质可以包括其上存储有计算 机可读程序代码段的可读存储器设备、诸如硬盘驱动器、⑶-ROM、DVD-ROM或计算机盘。计 算机可读介质还可以包括其上以数字或模拟信号承载有程序代码段的光学的、有线的或无 线的通信链路。因此,本发明不应被局限于描述的实施例,而是仅由所附权利要求书的精神 和范围限制。
权利要求
一种用于提供网络元件内的单播分组到与多链路中继线路(MLT)相关联的可用端口的快速重新路由的方法,所述方法包括下述步骤由网络元件的数据平面内的转发数据单元(FDU)接收单播分组;确定所述分组的目的地;和在由FDU维护的端口状态表内执行查找,以便针对所述目的地确定处于上行状态的可用本地端口,并且如果没有本地端口处于上行状态,则在端口状态表中执行查找,以便针对所述目的地确定处于上行状态的可用远程端口。
2.如权利要求1所述的方法,还包括当为所述单播分组确定了处于上行状态的端口时 转发所述分组,或当不能为所述单播分组确定处于上行状态的端口时丢弃所述分组。
3.如权利要求1所述的方法,其中所述确定所述分组的目的地包括确定所述目的地端 口是独立端口还是MLT组。
4.如权利要求3所述的方法,其中当所述目的地端口是MLT组时,则从所述单播分组中 的所选择的字段产生散列值,以便确定MLT端口成员。
5.如权利要求4所述的方法,还包括使用所述MLT组ID和所述散列值确定处于上行状 态的端口成员。
6.如权利要求5所述的方法,还包括确定是否本地表内的所有端口成员都处于下行, 并且当所述所有端口成员都处于下行时,从远程表中确定MLT端口。
7.如权利要求6所述的方法,还包括为从所述远程表中选择的端口成员确定处于上行 状态的1ST端口成员。
8.如权利要求7所述的方法,还包括确定对于所述远程端口没有处于上行状态的1ST 端口成员,并且丢弃所述分组。
9.一种转发数据单元(FDU),包括存储器;处理器;通信接口 ;耦接所述存储器、处理器和通信接口的互连机构;和其中,所述存储器被编码有提供单播分组的快速重新路由的应用,当在处理器上被执 行时,所述应用提供用于处理信息的处理,该处理使得FDU执行如下的操作由网络元件的数据平面内的所述FDU接收单播分组;确定所述分组的目的地;和在由FDU维护的端口状态表内执行查找,以便针对所述目的地确定处于上行状态的可 用本地端口,并且如果没有本地端口处于上行状态,则在端口状态表中执行查找,以便针对 所述目的地确定处于上行状态的可用远程端口。
10.如权利要求9所述的FDU,还包括当为所述单播分组确定了处于上行状态的端口时 所述FDU转发所述分组,或当不能为所述单播分组确定处于上行状态的端口时丢弃所述分
全文摘要
本发明涉及用于提供网络元件内的单播分组到与多链路中继线路相关联的可用端口的快速重新路由的方法、装置和计算机程序产品。由网络元件的数据平面内的转发数据单元FDU接收单播分组,并且确定分组的目的地。在由FDU维护的端口状态表内执行查找,以便针对所述目的地确定处于UP状态的可用本地端口,并且如果没有本地端口处于UP状态,则在端口状态表中执行查找,以便针对所述目的地确定处于UP状态的可用远程端口。如果不能为单播分组确定处于UP状态的端口,则丢弃该分组。
文档编号H04L12/56GK101888331SQ201010178189
公开日2010年11月17日 申请日期2010年5月13日 优先权日2009年5月13日
发明者H·阿萨普尔 申请人:阿瓦亚公司