用于检测链路故障的系统和方法

文档序号:6655620阅读:185来源:国知局
专利名称:用于检测链路故障的系统和方法
技术领域
本发明一般地涉及计算机网络,更具体而言,涉及用于快速有效地检测链路故障的方法和装置。
背景技术
许多组织(包括商业、政府和教育机构)都采用计算机网络从而使雇员和其他人可以共享并交换信息和/或资源。计算机网络一般包括利用一种或多种通信介质互连的多个实体。实体可包含任何设备,如计算机,其通过通信介质“发出”(即发送)或“吸收”(即接收)消息,如数据帧。一种常见类型的计算机网络是局域网(LAN),其一般指单个建筑物或校园内的私有网络。LAN一般采用数据通信协议(LAN标准),如以太网、FDDI或令牌环,这些协议定义了由通信体系结构(即协议栈)的数据链路和物理层执行的功能。
耦合在以太网LAN上的实体可以采用电气和电子工程师协会(IEEE)802协议族来通过LAN彼此通信。在体系结构上,IEEE 802LAN参考模型包括物理层和数据链路层,其通常分别被称为参考模型的第1层(L1)和第2层(L2)。
物理层处理发送和接收载波,载波支持传输介质上的承载数据的信号。在物理层执行的功能一般包括对信号编码/解码、生成/去除用于同步的前导信息以及在传输介质上发送和接收比特。数据链路层处理数据帧,并执行流和错误控制。数据链路层一般包括媒体访问控制(MAC)层和逻辑链路控制(LLC)子层。MAC子层将要发送的数据组装到具有地址和检错字段的帧中,分解接收到的帧,执行地址识别和检错,并管理对LAN传输介质的访问。LLC子层提供到更高层的接口并执行流和错误控制。
一个或多个中间网络设备常用于将LAN耦合在一起,并允许相应的实体交换信息。例如,网桥可用于在两个或更多个LAN或末端站之间提供“桥接”或“交换”功能。一般来说,网桥是计算机,并且包括多个端口,这多个端口经由LAN或者耦合到其他网桥,或者耦合到诸如路由器或主机计算机之类的末端站。用于将网桥彼此耦合的端口通常被称为干线端口,而用于将网桥耦合到末端站的端口通常被称为接入端口。桥接功能包括在源端口接收来自发送实体的数据,并将该数据传送到至少一个目的地端口以转发到一个或多个接收实体。
大多数计算机网络包括冗余通信路径,从而使任何给定链路或网络设备的故障不会隔离网络的任何部分。这种网络一般被称为网格化或部分网格化网络。然而,冗余链路的存在可能导致网络内迂回路径或“环路”的形成。环路是非常不希望形成的,因为数据帧可能无限地经过环路。此外,网桥复制目的地未知的帧。如果环路存在,则在帧被复制时产生的流量可能给网络带来过重的负担。
为了避免环路形成,大多数网桥和交换机执行生成树协议,该协议允许其计算活动网络拓扑,这种活动网络拓扑是无环路的(即树状的),并且连接网络内的每一对LAN和/或末端站(即,树是生成型的)。电气和电子工程师协会(IEEE)已经发布了一种定义由802.1D兼容设备执行的生成树协议的标准(IEEE Std.802.1D-1998TM)。通常,通过执行802.1D生成树协议,网桥将桥接网络内的单个网桥选为“根网桥”。802.1D标准利用了这一事实,即通过指定根网桥是具有最低网桥ID的网桥,而使每个网桥具有唯一的数值标识符(网桥ID)。另外,对于耦合到任何网桥的每个LAN,一个网桥(“指定网桥”)上的恰好一个端口(“指定端口”)被选择。指定网桥一般是离根网桥最近的网桥。根网桥上的所有端口都是指定端口,而根网桥是所有这样的LAN上的指定网桥该根网桥具有到这些LAN的端口。
每个非根网桥还从其非指定端口中选择一个端口(其“根端口”),该端口给出了到根网桥的最低代价路径。根端口和指定端口被选择以包含在活动拓扑中,并且被置于转发(forwarding)状态,从而使数据帧可被转发到这些端口上以及从这些端口转发,从而转发到互连网络的网桥和末端站的LAN和链路上。未被包含在活动拓扑中的端口被置于阻止(blocking)状态。当端口处于阻止状态时,数据帧将不会转发到该端口或从该端口接收。网络管理员还可以通过将端口置于被禁用(disabled)状态而从生成树中排除端口。
为了获得运行生成树协议所必需的信息,网桥交换被称为配置网桥协议数据单元(BPDU)消息或简称为BPDU的消息。BPDU携带用于计算活动拓扑的信息,如假定根和最低根路径代价。更具体而言,在启动后,每个网桥首先假定其自身是根网桥,并据此发送BPDU。在接收到来自相邻设备的BPDU后,检查其内容并与由接收网桥存储在存储器中的类似信息(例如,假定根和最低根路径代价)相比较。如果来自接收的BPDU的信息“好于”所存储的信息,则网桥采用更好的信息,并将其用在从其除了接收到“更好”信息的端口以外的端口发送的BPDU中(将与接收端口相关联的代价添加到根路径代价上)。尽管BPDU不被网桥转发,但是根网桥的标识符最终被传播到所有网桥,并被所有网桥采用,如上所述,从而允许其选择其根端口和任何指定端口。
为了使活动拓扑适应变化和故障,根网桥周期性地(例如,每个hello时间)发送BPDU。响应于在其根端口上接收到BPDU,网桥从其指定端口(如果有的话)发送其自身的BPDU。从而,BPDU被周期性地传播到整个桥接网络,确认活动拓扑。在BPDU信息被更新和/或超时以及活动拓扑被重新计算时,端口可以从阻止状态转变到转发状态,反之亦然。即,作为新的BPDU信息的结果,先前被阻止的端口可能获知其应当处于转发状态(即,其现在是根端口或指定端口)。
快速生成树协议近年来,IEEE发布了一种定义快速生成树协议(RSTP)的新标准(IEEE Std.802.1W-2001TM规范标准)。RSTP类似地将桥接网络的一个网桥选为根网桥,并定义了提供LAN和/或末端站间的完全连接性同时切断任何环路的活动拓扑。每个网桥的每个端口被根据端口是否是活动拓扑的一部分而被分配以角色。由802.1W规范标准定义的角色包括根、指定、替换和备份。提供到根端口的最优(例如最低代价)路径的网桥端口被分配以根端口角色。提供到根网桥的替换(例如较高代价)路径的每个网桥端口被分配以替换端口角色。对于每个LAN,提供从该LAN到根网桥的最低代价路径的一个端口被分配以指定端口角色,而耦合到LAN的所有其他端口被分配以根、备份或者(在某些情况下)替换端口角色。在根网桥处,所有端口被分配以指定端口角色。
已被分配以根端口和指定端口角色的那些端口被置于转发状态,而被分配以替换和备份角色的端口被置于丢弃或阻止状态。倘若被分配以替换端口角色的所有端口被置于阻止状态,则被分配以根端口角色的端口可以快速转变到转发状态。类似地,倘若先前的根端口已转变到丢弃或阻止状态,那么如果在当前被分配以根端口角色的端口上发生故障,则被分配以替换端口角色的端口可以被重新分配以根端口角色,并快速转变到转发状态。倘若下游网桥的端口角色与被分配以指定端口角色的端口一致,那么被分配以指定端口角色的端口或者要被重新分配以指定端口角色的备份端口可以快速转变到转发状态。RSTP提供了明确的握手,这种握手由相邻网桥用来确认新的指定端口可以快速转变到转发状态。
与在802.1D规范标准中描述的STP类似,运行RSTP的网桥也交换BPDU以便确定向网桥的端口分配哪些角色。BPDU也用在用于使指定端口快速转变到转发状态的握手中。
利用RSTP,网桥可以从故障中快速恢复。但是,由于检测故障所花费的时间,仍然可能导致延迟。即,一直要到检测到现有根端口处的故障,转换被分配以替换端口角色的端口以变为新的根端口的过程才会开始。当前的用于克服这些对第1层链路故障检测的限制的技术或者消耗大量资源(如处理器和存储器资源和/或带宽),或者花费太长时间来检测链路故障从而降低了RSTP的效率。因此,需要一种快速有效地检测链路故障的技术。

发明内容
简要来说,本发明涉及一种用于监视计算机网络中的链路的操作并快速有效地检测这些链路的故障的系统和方法。在图示实施例中,计算机网络包括多个中间网络设备(包括两个网络设备,如网桥),这些中间网络设备由具有载波的点对点链路互连,载波支持承载数据的信号。每个网桥具有链路建立实体,并且还被配置为包括故障检测引擎,故障检测引擎与耦合到点对点链路的相应网桥端口通信。故障检测引擎包括消息生成器、一个或多个状态机和快速故障检测器逻辑。在图示实施例中,状态机使选定端口在启用(enabling)、工作(working)、禁用(disabling)和故障(failed)状态间转变。
在建立了点对点链路,从而建立了载波后,两个故障检测引擎生成并交换故障检测分组,从而向彼此告知其存在情况。其后,每个故障检测引擎确保其相应网桥在链路上连续发送。具体而言,如果网桥有要在链路上发送的网络消息,则该消息被发送。如果网桥没有要发送的网络消息,则故障检测引擎生成并发送故障检测分组。因此,链路在两个方向上保持全利用状态,携带网络消息或者故障检测分组。如果检测到通信停止,即网络消息和/或故障检测分组的接收中断,则故障检测引擎推断点对点链路已发生故障。作为响应,故障检测引擎生成并发送包含“强制停机(force_down)”消息或信号的故障检测分组。故障检测引擎随后使载波被丢弃,并使链路被切断。接收到“强制停机”故障检测分组的网桥类似地丢弃载波并切断链路(假定其还未这么作)。优选地,两个故障检测引擎在保持停机(hold-down)时段中使链路保持切断。在保持停机时段期满后,故障检测引擎允许链路建立实体运行,以尝试在两个网桥间重新建立点对点链路。如果链路被重新建立,则故障检测引擎再一次交换故障检测分组以向彼此告知其存在情况。
在本发明的另一个方面中,故障检测引擎可被指示终止其故障检测操作。为此,故障检测引擎生成并发送包含“禁用”消息的故障检测分组。在发出具有“禁用”消息的故障检测分组后,发送网桥停止发出故障检测分组。在接收到具有“禁用”消息的故障检测分组后,接收网桥不再期望从其他网桥接收到故障检测分组。然而,接收网桥并不推断故障检测分组的中断是链路故障的结果。
在本发明的又一个方面中,故障检测引擎可被指示切断链路,即使未检测到故障时也是如此。在这种情况下,故障检测引擎生成并发送包含“强制停机”消息的故障检测分组。随后网桥丢弃载波并切断链路。响应于接收到具有“强制停机”消息的故障检测分组,接收网桥丢弃载波并在保持停机时段中切断链路。在保持停机时段期满后,网桥可以再次尝试重新建立链路。


本发明的以下描述参考了附图,在附图中图1是计算机网络的高度示意性的图示;图2是根据本发明配置的中间网络设备的部分功能框图;图3是根据本发明的状态图的高度示意性的图示;图4是按层组织的通信体系结构的高度示意性的图示;图5A-C是根据本发明的优选方法的流程图;图6是根据本发明的故障检测分组的优选格式的高度示意性的图示;以及图7是根据本发明的故障检测分组的替换格式的高度示意性的图示。
具体实施例方式
图1是包括两个子网(即,子网A 102和子网B 104)的计算机网络100的高度示意性图示。计算机网络100还包括多个(例如两个)中间网络设备106、108。网络设备106通过链路110耦合到子网102,网络设备108通过链路112耦合到子网104。另外,这两个网络设备106、108通过点对点链路114互连。一个或多个局域网(LAN)和/或末端站可以耦合到每个网络设备106、108。例如,服务器116经由链路115耦合到网络设备106,而工作站或个人计算机118经由链路117耦合到网络设备108。这两个子网102、104优选地包括多个互连的LAN、末端站和中间网络设备(未示出)。
每个网络设备106、108具有多个端口202,并且被配置为将在第一端口202上接收到的网络消息交换或转发到第二端口202,从而使末端站116和118可以彼此通信,并与置于子网102、104中的其他末端站通信。每个网络设备106、108例如通过端口号识别其自身的端口202,例如端口0(PO)、端口1(P1)、端口2(P2)、端口3(P3)等。从而,网络设备106、108能够将其端口中的特定多个与耦合到其的LAN、末端站和/或网络设备相关联。
应当理解,图1的计算机网络100仅用于示例目的,本发明也可用于可能具有复杂得多的拓扑的其他网络。还应当理解,网络设备106、108可能是集线器、网桥、交换机或路由器、或支持其各种功能组合的设备。而且,除了中间网络设备外,本发明还可以有利地用于其他网络实体。例如,本发明可用于末端站,如服务器、工作站、个人计算机等,并且这里的任何内容都不是要限制本发明的应用。
图2是图1的网络设备106的部分功能框图。具体而言,图2仅图示了一个端口(即,端口PO 202a)和其关联组件。媒体访问控制(MAC)实体206与每个端口(如端口P0)相关联。根据本发明,每个MAC实体206具有故障检测引擎210。而且,每个故障检测引擎210优选地具有多个子组件,包括快速故障检测逻辑211、故障检测分组生成器212和状态机214。除了MAC实体206外,还有链路建立引擎208。一个或多个帧发送和接收对象(如对象204)与端口202b相关联,从而可以捕捉在端口P1接收到的网络消息(包括数据和控制帧),并且要由网络设备106发送的帧可被传递到端口P1。帧接收和发送对象204一般是消息存储结构,如优先级队列。
网络设备106可以对于其所有端口具有单个链路建立引擎208,或者其可以具有多个引擎208。
尽管在图2中只示出了单个端口,但是本领域技术人员将会理解,网络设备106一般包括多个端口,每个端口优选地由一个号(例如P0-P2)标识。此外,设备106处的多个端口可以通过一个或多个线路卡和/或网络接口卡(NIC)建立。设备106还可以具有一个或多个中央处理单元(CPU)和/或微处理器,以及用于执行计算的关联存储设备和一个或多个总线结构。设备106还可以(但是不一定)具有其他组件,如转发引擎、一个或多个过滤数据库、生成树协议(STP)引擎等。
图3是根据本发明的高度示意性的状态图300。在优选实施例中,端口202可以处于五种可能故障检测状态中的任何一种启用状态302、工作状态304、禁用状态306和故障状态308。当端口首先开始运行本发明的故障检测协议时,进入启用状态302。当由点对点链路连接的两个端口已建立并在运行故障检测协议时,进入工作状态304。当要终止故障检测操作时,使用禁用状态306,而当已检测到故障并且将要使链路停止工作时,使用故障状态308。
在图示实施例中,故障检测引擎210是在硬件中实现的,如通过一个或多个专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)或通过其他制造技术实现,其中FPGA具有被配置和安排为产生顺序逻辑电路和状态机的寄存器和组合逻辑。但是,本领域技术人员将会认识到,本发明也可以以包含程序指令的一个或多个软件模块或库的形式实现,这些程序指令能够存储在电、磁和/或光介质上,还能够以电子和/或光学形式发送。这些程序指令与这里描述的方法有关,并且可由网络设备106的一个或多个处理元件(未示出)执行。也可以采用硬件、软件和固件的各种组合。
用于本发明的合适的中间网络设备平台包括但不限于可从California,San Jose的思科系统公司购得的Catalyst 4000和6000系列交换机。
计算机网络(包括网络100)一般采用通信体系结构或协议栈来支持网络的末端节点之间的通信。协议栈至少在逻辑上被组织为多层,并且末端节点和网络设备具有被配置为工作在这些层中的各层上的硬件、软件和固件组件。另外,协议栈的层还指定在置于计算机网络内的源站和目标站之间传送的数据的格式,等等。每层还在数据通过该层时提供预定服务。通常,较低的层是标准化的,并且一般实现在硬件和固件中,而较高的层通常实现在软件中。
图4是根据开放系统互连(OSI)模型的协议栈400的高度示意性的图示。该模型定义了七层,按上升顺序是物理层402、数据链路层404、网络层406、传输层408、会话层410、表达层412和应用层414。物理层402涉及沿通信信道(如电线)的实际信号传输,并且例如定义与信道结合使用的线缆、插孔和连接器的类型。数据链路层404(也称为第2层(L2))负责数据传输。网络层406(也称为第3层(L3))提供网络路由选择。传输层408(也称为第4层(L4))支持端对端可靠性。
会话层410允许不同机器上的用户在其间建立会话。会话可以支持高于由传输层提供的服务,例如允许用户登录到远程分时系统。表达层412用于执行共同请求的功能,例如以特定方式对数据编码。应用层414包含高级应用,如虚拟终端软件、文件传送软件、电子邮件等。
如图4所示,数据链路层404被划分为多个子层,包括链路层控制(LLC)子层416和媒体访问控制(MAC)子层418。近年来,在被称为IEEE草案P802.3ah(其当前版本是2004年4月19日发布的草案3.3)的草案协议标准(其全部内容通过引用结合于此)中,电气和电子工程师协会(IEEE)已在数据链路层404内定义了若干附加子层。具体而言,IEEE定义了操作、管理和维护(OAM)子层420和MAC控制子层422,这两层都置于LLC和MAC子层416和418之间。根据本发明,在数据链路层404内提供了新的子层。具体而言,提供了故障检测子层424,其优选地置于OAM和MAC控制子层420和422之间。如这里所述,MAC实体206的故障检测引擎210(图2)优选地工作在该新的故障检测子层424内。另外,链路建立子层430优选地置于LLC和OAM子层之间,尽管本领域技术人员将会认识到,其也可以位于其他位置,如LLC子层416之上,如虚线方格430a所示。
网络设备可以工作在协议栈400的各级上。例如,网桥可以工作在数据链路层或第2层上。数据链路层处的数据帧一般包括头部,该头部包含发出消息的实体的MAC地址(被称为源地址)和消息被发送到的实体的MAC地址(被称为目的地地址)。为了执行桥接功能,第2层网桥检查在源端口上接收到的每个数据帧的MAC目的地地址,并将帧交换到已与该MAC目的地地址相关联的(一个或多个)目的地端口上。
其他网络设备(通常被称为路由器)可以工作在更高的通信层,如OSI或TCP/IP参考模型的网络层或第3层。L3层处的数据帧也包括头部。L3数据帧的头部包括IP源地址和IP目的地地址。路由器或L3交换机可以将接收到的数据帧从一种LAN标准(例如以太网)重组装或转换为另一种(例如令牌环)。从而,L3网络设备通常用于互连不相似的子网。
在图示实施例中,网络设备106和108优选地是工作在L2的网桥。但是,本领域技术人员将会认识到,网络设备106和/或108可以工作在协议栈400的更高层,如工作在L3、L4甚至更高层的交换机或路由器。
本发明的故障检测技术被设计用于在任何两个网络实体之间延伸的点对点链路上,例如但不限于在网络设备106和108之间延伸的链路114、在网络设备106和服务器116之间延伸的链路115以及在网络设备108和工作站118之间延伸的链路117。其并不用于共享介质上,例如包含共享LAN网段的多于两个设备的LAN网段。
如这里所述,与现有技术相比,本发明的故障检测技术允许快得多地识别出故障。另外,本发明的故障检测技术可以在无需切断或中止链路工作的情况下终止。
图5A-C是根据本发明的优选方法的流程图。首先,网络设备(如网络设备106)初始化主题链路,例如链路114,如框502所指示(图5A)。这一般包括给链路加电并建立将在其上发送数据信号的载波,这可以是帧发送和接收对象204的功能。随后,启用相应端口的MAC服务,如框504所指示。网络设备106使得链路建立引擎208尝试通过链路104建立通信,如框506所指示。链路建立引擎208采用传统协议来建立链路114。合适的链路建立协议包括在Chin等人共同拥有的美国专利No.5,959,968中描述的端口聚集协议、来自思科系统公司的单向链路检测(UDLD)协议和IEEE标准802.1X(端口访问)或802.3ad(链路聚集控制协议)。作为链路建立过程的一部分,引擎208确定链路114的双向方向性,确定或假定共同终止,并且还可以确定使用权(right-to-use)特征。
如判决框508所指示,MAC实体206随后确定链路114是否已成功建立。如果是,则MAC实体确定故障检测引擎210(对于与链路相关联的端口)是否启用,如指向判决框512的“是”箭头510所指示。更具体而言,作为其启动过程的一部分,MAC控制子层422可被配置为启用或禁用工作在子层424的故障检测引擎210,如箭头426所指示(图4),其图示了从MAC控制子层422到故障检测子层424的命令流。在图示实施例中,网络管理员可以调节网络设备106处的设置或其配置,以使得设备106的故障检测子层424被启用或禁用。假定在设备106已启用故障检测,则初始化故障检测,如指向框516的“是”箭头514所指示。
如框518所指示,故障检测引擎210指示状态机214转变到启用状态302(图3),从而将部件202b与启用故障检测状态相关联。故障检测引擎210还生成一个或多个启用型故障检测分组,并从端口P1 202b发送这些分组,如框520所指示。
图6是故障检测分组600的优选格式的高度示意性的图示。故障检测分组600由多个字段构成,包括目的地地址(DA)字段602、源地址(SA)字段604、长度/类型字段606、LLC/SNAP(子网访问协议)字段608、代码字段612、故障检测状态字段614、填充字段615和帧校验序列(FCS)字段616。可以是六个八位字节的目的地地址字段602优选地加载有十六进制01-80-C2-00-00-01。可以是六个八位字节的源地址字段604加载有与端口(例如端口P1 202b)相关联的MAC地址,从该端口发送相应的故障检测分组600。长度/类型字段606优选地是两个八位字节字段,其加载有指定分组600的长度的值。LLC/SNAP字段608优选地是六个八位字节字段,其加载有十六进制AAAAOC的LLC值和十六进制00000C的组织唯一标识符(OUI)值。代码字段612优选地是两个八位字节字段,其加载有指示分组600是故障检测分组的预定义值。故障检测状态字段614优选地是一个八位字节字段,其加载有预定值,例如“00”,指示该故障检测分组600是启用型分组。填充字段615包含足够数目的“填充”八位字节,以优选地使分组总长度达到64个八位字节。优选地,包含在填充字段615中的八位字节加载有0值。FCS字段616加载有对分组600计算的纠错值。
图7是可用于本发明的故障检测分组700配置的替换格式的高度示意性的图示。分组700包含目的地地址字段702、源地址字段704、类型字段706、故障检测状态字段714、填充字段715和FCS字段716。目的地地址702、源地址704、故障检测状态714、填充715和FCS 716字段优选地分别加载有如上针对目的地地址602、源地址604、故障检测状态614、填充615和FCS 616字段所述的信息。类型字段是2个八位字节字段,其加载有标识分组为故障检测分组的特殊“以太网型”代码(从IEEE注册当局获得)。
本领域技术人员将会认识到,也可以使用其他分组格式。
除了生成并发送一个或多个启用型故障检测分组600外,设备106的故障检测引擎210还“监听”可能经由链路114从网络设备108接收到的任何故障检测分组600,如判决框522所指示(图5B)。
考虑网络设备108,在其耦合到链路114的端口P2处接收到来自设备106的一个或多个启用型故障检测分组600,并且由于包含在接收的故障检测分组600中的目的地地址和长度/类型值,这些分组被传递到置于设备108处的故障检测引擎。假定设备108的故障检测引擎已被启用并初始化。随后,启用型故障检测分组的接收使得设备108处的故障检测引擎推断设备106支持故障检测协议。作为响应,设备108处的故障检测引擎使得与其端口P2相关联的状态机转变到工作状态304,并生成一个或多个工作型故障检测分组,并经由链路114向设备106发送这些分组。工作型故障检测分组600类似于上述启用型分组,只不过故障检测状态字段614加载有不同值(例如“01”),以表明该故障检测分组600是工作型分组。在设备106接收到来自网络设备108的工作型故障检测分组600,并将其传递到故障检测引擎210。
在经由链路114从网络设备108接收到故障检测分组600后,设备106处的故障检测引擎210推断设备108参与本发明的故障检测协议。作为响应,网络设备106开始经由链路114向设备108发送连续的网络消息流,从而使链路114保持在全利用状况。具体而言,MAC实体206和故障检测引擎210协同工作以确保设备106经由链路114从端口P1 202b连续发送某些东西,即或者是数据(或控制)帧,或者是工作型故障检测分组600,以供设备108接收,如框524所指示(图5B)。换句话说,在每帧的发送完成时,设备106的MAC实体206查看其是否有另一个数据/控制帧,例如从协议栈的上层接收到的数据帧,以经由端口P1 202b和链路114发送到网络设备108。如果其有这样的数据/控制帧,则发送该帧。如果MAC实体206没有另一个数据/控制帧以供发送,则故障检测引擎210生成工作型故障检测分组600以发送到网络设备108。这样,MAC实体206和故障检测引擎210使链路114在从网络设备106到设备108的方向上保持全利用和连续利用(例如饱和)状况。
示例性的数据帧是由服务器116(或者置于子网A 102中的实体)发出并去往工作站118(或者置于子网B 104中的实体)的消息。示例性的控制帧是配置网桥协议数据单元(BPDU)。
同时,设备106处的故障检测引擎210还恒定地检查来自设备108的工作型故障检测分组600的接收,如判决框526所指示。一旦设备106从设备108接收到其第一工作型故障检测分组600,故障检测引擎210就使状态机转变到工作状态304,如指向框530的“是”箭头528所指示。引擎210还启用其快速故障检测器逻辑211,如框532所指示。以类似的方式,设备108处的故障检测引擎在从设备106接收到工作型故障检测分组600后也启用其快速故障检测逻辑212。此刻,根据本发明的快速故障检测已在网络100的链路114上启用。
应当理解,如果网络设备106在发送任何其自身的故障检测分组之前从设备108接收到启用型故障检测分组,则该设备106开始发送工作型故障检测分组。另外,故障检测引擎210优选地通知一个或多个高层协议端口P1 202b处于工作状态,并且故障检测已启用,如传输箭头428所指示(图4)。
返回判决框522(图5B),如果网络设备106没有从设备108接收到任何故障检测分组,则故障检测引擎210推断设备108不被配置为运行本发明的故障检测协议。作为响应,设备106处的用于端口P1 202b的故障检测引擎210优选地使端口P1 202b转变到禁用状态306,如指向框536的“否”箭头534所指示。故障检测引擎210还停止向设备108发送故障检测分组600,如框538所指示。引擎210还可以通知一个或多个高层协议故障检测未被启用。
应当理解,框516-530和536-538的步骤代表了一种自协商过程或阶段,通过该过程或阶段位于点对点链路的相对末端的两个网络设备可以自动确定它们各自被配置并启用为运行本发明的故障检测过程,或者确定其中之一未被配置。
一旦被启用,设备106和108的快速故障检测器逻辑就监视链路114的健康状况。在图示实施例中,快速故障检测器逻辑以两种方式监视链路114的健康状况。首先,其确认相应网络设备正经由链路114接收连续的网络消息流,即数据、控制或故障检测分组。该连续流中的任何中断将被立即检测到,并被认为是链路114的故障。如上所述,网络设备接收到的故障检测分组600被其故障检测引擎210处理,故障检测引擎210被配置为工作在新的故障检测子层424。另一方面,数据(和其他控制)帧通过故障检测子层424到达MAC控制子层422。因此,通过使故障检测引擎工作在置于MAC 418和MAC控制子层422之间的其自身的子层,引擎210的快速故障检测器逻辑211“看见了”经由链路114在端口P1 202b上从设备108接收的连续的网络消息流。
优选地,在接收到数据帧或故障检测分组600后,每个网络设备处的快速故障检测器211启动定时器(未示出),定时器可被编程以预设限制,例如“F”。每次在快速故障检测器211接收到另一个数据帧或故障检测分组600时,其重启该定时器。如判决框540所指示(图5B),如果定时器在网络设备106在该端口上接收到另一个数据帧或故障检测分组之前期满,则快速故障检测逻辑211断言(declare)链路故障,如指向框544的“是”箭头542所指示。如果在定时器期满之前接收到另一个数据、控制或故障检测分组,则定时器被重启,并且不断言任何链路故障,如“否”箭头546所指示,箭头546返回判决框540。
优选地,在其他状况下也断言链路故障。例如,快速故障检测逻辑211断言链路故障的另一种方式是响应于载波信号的损耗。优选地,载波信号的损耗被报告给故障检测逻辑211,而逻辑211断言链路故障,如框544所指示。快速故障检测逻辑211监视链路114的健康状况的另一种方式是通过检查来自设备108的任何故障型故障检测分组600的接收,如判决框548所指示。如图4所示,故障型故障检测分组600优选地使其故障检测状态字段614被设为预定值,例如“10”。故障检测引擎被配置为将这种分组识别为故障型分组。如果接收到这种故障检测分组,则快速故障检测逻辑211断言链路故障,如也指向框544的“是”箭头550所指示。
在断言链路故障后,故障检测引擎210使与端口相关联的状态机转变到故障状态308,如框552所指示(图5C)。设备106处的故障检测引擎210还通知位于故障链路(例如链路114)的另一端的网络设备(例如设备108)该故障状况。具体而言,故障检测引擎210生成一个或多个(例如两个)故障型故障检测分组600,并从其耦合到故障链路(例如链路114)的端口发送出去,以供其他设备(例如设备108)接收,如框554所指示。随后,故障检测引擎210使得载波被丢弃并切断链路114,如框556所指示。在图示实施例中,故障检测引擎210还防止链路在可预设的保持停机(hold down)时间中被重新激活,如框558所指示。保持停机时间的合适值是3.0秒的量级,尽管本领域技术人员将会认识到可以采用其他值。故障检测引擎210还可以通知一个或多个更高层协议(如生成树协议)该故障状况,如传输箭头428所指示(图4)。
在从设备106接收到故障型故障检测分组600后,设备108处的故障检测引擎类似地断言链路故障,丢弃载波,并切断链路。设备108处的故障检测引擎还使故障链路至少在保持停机时间内保持切断。
在切断时间期满后,网络设备106和108可以尝试重启故障链路114。即,设备106和108的链路建立引擎给链路加电,启用MAC服务并尝试链路建立,如前述的框502-506所指示(图5A)。参考判决框508(图5A),如果链路建立不成功,则本发明的故障检测技术优选地不被启用,如指向结束框562的“否”箭头560所指示。换句话说,如果链路不能成功建立,则永不启用故障检测引擎。此外,如果未在相应网络设备处启用故障检测,则处理类似地终止,如也指向结束框562的“否”箭头564所指示。
在本发明的又一方面中,故障检测引擎(如设备108处的引擎)还可以在链路(如链路114)正在运行的同时禁用或“关闭”故障检测。例如,假定工作在比故障检测子层424更高的级别的应用或协议向设备108处的故障检测引擎发出命令,指示其停止运行故障检测。作为响应,设备108处的故障检测引擎优选地生成一个或多个故障型故障检测分组600并将其发送到设备106。故障型故障检测分组与其他故障检测分组具有相同格式,只不过故障检测状态字段加载有预定义的值(例如“11”),这表明其是禁用型分组600。
设备106处的故障检测引擎210观察任何禁用型故障检测分组600的接收,如判决框566所指示(图5C)。当设备106接收到禁用型故障检测分组600时,其优选地使与端口P1202b相关联的状态机转变到禁用状态306,如框568所指示。引擎210还停止生成工作型故障检测分组600并经由链路114向设备108发送这些分组的操作,如框570所指示。从而,如果设备106没有数据或控制分组要经由链路114发送到设备108,则链路114将变得空闲。即,设备106不再经由链路114向设备108发送连续的网络消息流。设备108处的故障检测引擎在发送了一个或多个禁用型故障检测分组之后,也停止向设备106发送故障检测分组。从而,设备106也不再从设备108接收到连续的数据、控制或故障检测分组流。但是,在与设备106的端口P1 202b相关联的状态机处于禁用状态306的情况下,在经由链路114接收来自设备108的网络消息的过程中发生任何这种中断或停止将不再使链路故障被断言,如框572所指示。这样,故障检测引擎可以在无需切断或中止链路114的情况下终止操作。
除了停止故障检测分组的发送外,故障检测引擎还可以通知一个或多个更高级协议故障检测操作已在链路114上停止。
在本发明的又一方面中,链路可能故意发生故障。例如,假定设备106处的协议或应用检测到故障,如载波损耗、太多的CRC错误等,和/或希望使链路114切断。协议或应用可以使命令被发送到故障检测引擎210,例如如箭头426所指示。响应于该命令,故障检测引擎210断言链路故障,如进入框544的箭头574所指示(图5B)。随后,故障检测引擎210执行前述的框552-558所示的步骤,导致链路被切断并在保持停机时间内保持切断。
IEEE 802.3X规范标准定义了暂停帧(Pause frame)。如果设备向另一个设备发送暂停帧,则接收设备停止发送帧。在本发明的优选实施例中,尽管接收到暂停帧,故障检测分组仍继续被发送。这可以通过在MAC栈中将故障检测引擎210置于802.3X暂停引擎之下来实现。这样,暂停帧只影响在MAC栈中在802.3X暂停引擎之上的帧,例如数据/控制帧。
应当理解,与图3中所示的具有单个状态集不同的是,可以有多个接收和发送状态。例如,接收状态可包括通知,其用于通知更高层协议故障检测分组的发送和识别已停止;启用状态,其用在正发送启用型故障检测分组并且故障检测引擎正等待接收来自链路另一端的设备的故障检测时;被禁用状态,其用在故障检测引擎尚需被激活时;工作状态,其用在已从链路另一端的设备接收到至少一个启用型或工作型故障检测分组之后;禁用状态,其用在更高层协议已发出命令以禁用故障检测并且至少一个禁用型故障检测分组已被发送时;检测到故障(fail_detected)状态,其用在已检测到链路故障以引发故障型故障检测分组的发送时;和强制故障(fail_forced)状态,其用在已接收到故障型故障检测分组时。
类似地,发送状态可包括复位(reset)状态,其用作保持状态,直到释放出复位变量为止;等待空闲(waiting_for_idle)状态,其用在等待发送者完成发送帧时;发送数据(transmit_data)状态,其用于发起数据或控制帧的发送,记住数据或控制帧而不是故障检测分组是最后发送的;递减(decrement)状态,其用于对要发送的故障检测分组计数;发送故障检测(transmit_failure_detection)状态,其用于发起故障检测分组的发送,记住故障检测分组是最后发送的;复位中(resetting)状态,其用于丢弃载波、切断链路并启动保持停机定时器;和停止(stop)状态,其用于在载波已被丢弃后通知上层以便可以尝试重新建立链路。
发送数据、发送故障检测和递减状态可以与预定义的变量一起使用,以确保网络设备在自协商阶段期间在数据或控制帧和故障检测分组之间交替。这确保了故障检测协商的发生并且不会被例如连续运行的数据和/或控制帧流先占。
本领域技术人员还将会认识到,本发明的故障检测过程还可被配置为以各种方式与现有的协议和网络设备操作交互操作。例如,故障检测引擎210可被配置为中止数据或控制帧的发送以便发送故障型故障检测分组。类似地,在自协商期间IEEE 802.3X暂停帧的发送可以禁止故障检测分组的发送。
应当注意到,在上述图示实施例中,本发明的技术是针对应用于两个中间节点之间的点对点链路114(图1)的情形描述的。然而,这并不是要限制本发明。其他类型的网络实体之间的其他点对点链路也可以利用本发明。例如,本发明的技术可以被末端站采用,如末端站116和118,以监视其相应链路(如链路115和117)的操作并检测这些链路的故障。
前述描述是针对本发明的特定实施例的。但是,很清楚对所述实施例也可以进行其他变化和修改,同时获得某些或全部优点。例如,可以使用其他格式的故障检测分组。具体而言,故障检测分组可被修改以包括关于链路为何发生故障的信息,例如太多CRC错误。因此,所附权利要求的目的是覆盖所有这些在本发明的真实精神和范围内的变化和修改。
权利要求
1.在被配置为置于计算机网络内并通过点对点链路连接到第二网络实体的网络实体中,一种用于检测所述点对点链路中的故障的方法,所述方法包括以下步骤与所述第二网络实体交换信号,其中所述信号被用于自协商在所述两个网络实体处故障检测过程的存在和操作;在所述链路上向所述第二网络实体发送连续的网络消息流;在所述链路上从所述第二网络实体接收连续的网络消息流;检测在所述链路上从所述第二网络实体接收到的连续的网络消息流中的中断;以及响应于检测到所述中断,断言所述链路发生故障。
2.如权利要求1所述的方法,其中在所述第一和第二网络实体之间发送的连续的网络消息流包括一个或多个数据、控制或故障检测分组。
3.如权利要求1所述的方法,还包括以下步骤响应于检测到所述中断,通知所述第二网络实体所述链路已发生故障。
4.如权利要求3所述的方法,其中所述链路具有用于发送信息的载波,所述方法还包括以下步骤在断言所述链路已发生故障的步骤之后,丢弃所述载波;使所述链路被切断;以及在保持停机时间内防止所述链路被重新建立。
5.如权利要求1所述的方法,其中所述交换步骤包括以下步骤生成一个或多个第一类故障检测分组;经由所述链路将所述一个或多个第一类故障检测分组发送到所述第二网络实体;在所述链路上从所述第二网络实体接收一个或多个第二类故障检测分组;响应于从所述第二网络实体接收到所述一个或多个第二类故障检测分组,生成一个或多个第二类故障检测分组;以及将所述一个或多个第二类故障检测分组发送到所述第二网络实体。
6.如权利要求5所述的方法,其中所述第一类故障检测分组表明置于发送所述第一类故障检测分组的网络实体处的故障检测过程存在并且正在工作,并且所述第二类故障检测分组表明所述发送网络实体处的故障检测过程已推断出在这两个网络实体处的故障检测过程都正在工作。
7.如权利要求1所述的方法,还包括以下步骤通知所述链路的故障的协议。
8.如权利要求1所述的方法,其中所述被通知协议是生成树协议。
9.如权利要求1所述的方法,其中所述网络实体是末端站和中间网络设备之一。
10.如权利要求1所述的方法,还包括与所述第二网络实体交换第二信号的步骤,其中所述第二信号被用于终止在这两个网络实体处的故障检测过程的操作,并且所述故障检测过程的操作是在无需切断所述链路的情况下被终止的。
11.一种用在计算机网络中的网络实体,所述网络实体包括用于发送和接收网络消息的至少一个端口,其中所述至少一个端口被配置用于经由点对点链路连接到第二网络实体;与所述至少一个端口处于通信关系的故障检测引擎,所述故障检测引擎包括快速故障检测器逻辑,和分组生成器,其中所述分组生成器产生故障检测分组以发送到所述第二网络实体,从而自协商所述故障检测引擎的操作,经由所述点对点链路从所述第二网络实体接收连续的网络消息流,并且所述快速故障检测器逻辑响应于从所述第二网络实体接收的网络消息流中的中断,而识别出所述点对点链路中的故障。
12.如权利要求11所述的网络实体,其中所述故障检测引擎还包括状态机,并且所述状态机依赖于所述故障检测引擎的操作和所述点对点链路中的故障的检测,而在多个状态之间转变。
13.如权利要求11所述的网络实体,还包括多个端口;以及耦合到所述端口的至少一个转发引擎,其用于识别要从其发送接收的网络消息的一个或多个目的地端口。
14.如权利要求11所述的网络实体,其中所述点对点链路根据以太网规范标准工作。
全文摘要
一种系统和方法监视计算机网络中的链路,并快速检测这些链路的故障。置于链路相对端的网络实体(106)具有向彼此告知其存在情况的故障检测引擎(210)。其后,每个故障检测引擎确保其实体向另一实体发送连续流,这是通过或者发送数据帧(204)或者发送新定义的故障检测分组实现的。如果检测到该连续流中的中断,则故障检测引擎(210)推断出链路已发生故障。作为响应,故障检测引擎优选地通知其他应用或协议该故障情况,并使链路被切断。
文档编号G06F15/173GK1947024SQ200580012874
公开日2007年4月11日 申请日期2005年5月9日 优先权日2004年5月10日
发明者诺曼·W·芬恩 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1