快速恢复链路的方法和装置的制作方法

文档序号:7922202阅读:93来源:国知局
专利名称:快速恢复链路的方法和装置的制作方法
技术领域
本发明涉及网络通信技术,特别涉及快速恢复链路的方法和装置。
背景技术
以太网端口有两种物理连接状态可用(available)和不可用(DOWN)。一条以太网物理链路(下文简称链路)恢复连通,需要链路两端端口的物理状态经过物理层协商均变为可用。但是,链路恢复连通不光依赖该链路两端端口的物理状态均可用,还依赖于该链路两端端口的逻辑状态如端口的STP状态、聚合成员状态等是否可用。其中,当端口的物理状态变为可用后,会立即向上层协议模块上报LINK UP,以触发上层协议模块将端口的逻辑状态切换为逻辑状态可用。当链路两端端口的逻辑状态均变为可用时,则表示该链路即恢复连通,可用于数据转发。可以看出,一条链路恢复连通的过程是该链路两端端口的逻辑状态均变为可用的过程,两个端口逻辑状态变为可用的时间差则是该以太网物理链路恢复的时间。而由于在实际应用中,链路两端端口存在各种差异,两端端口逻辑状态变为可用的时间差不容易确定,无法保证快速恢复链路。

发明内容
本发明提供了快速恢复链路的方法和装置,以实现快速恢复链路。本发明提供的技术方案包括一种快速恢复链路的方法,包括A,链路上的每一端口在其物理状态可用(available)后,开启本端端口对应的逻辑状态切换定时器,并检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的报文,如果否,执行步骤B,如果是,执行步骤C ;B,检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,向对端端口发送用于触发逻辑状态切换的报文,并执行步骤C ;C,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。一种快速恢复链路的装置,该装置应用在链路上的端口中,包括处理单元、检查单元和触发单元;其中,所述处理单元用于在本端端口的物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的报文;所述检查单元用于在所述处理单元的检测结果为否时,检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,向对端端口发送用于触发逻辑状态切换的报文,并发送触发通知给所述触发单元;
所述触发单元用于在所述处理单元的检测结果为是时,或者接收到所述触发通知时,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。一种快速恢复链路的方法,包括A,链路上的每一端口在其物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并向对端端口发送用于触发逻辑状态切换的通知报文;B,检测本端端口是否收到对端端口发送的针对所述通知报文的确认报文,如果是,执行步骤E,如果否,执行步骤C ;C,检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的通知报文,如果是,向对端端口发送针对该通知报文的确认报文,并执行步骤E ;如果否,执行步骤D ;D,检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,重新向对端端口发送所述用于触发逻辑状态切换的通知报文,并重启所述逻辑状态切换定时器,返回步骤B,否则,直接返回步骤B;E,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。一种快速恢复链路的装置,该装置应用在链路上的端口中,包括处理单元、第一检测单元、第二检测单元、检查单元和触发单元;其中,所述处理单元用于在本端端口的物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并向对端端口发送用于触发逻辑状态切换的通知报文;所述第一检测单元用于检测本端端口是否收到对端端口发送的针对所述通知报文的确认报文;所述第二检测单元用于在所述第一检测单元的检测结果为否时,检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的通知报文,如果是,向对端端口发送针对该通知报文的确认报文,并发送触发通知给触发单元,如果否,发送检查通知给所述检查单元;所述检查单元用于检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,重新向对端端口发送所述通知报文,重启所述逻辑状态切换定时器,并触发第一检测单元执行检测操作,否则,直接触发第一检测单元执行检测操作;所述触发单元用于接收到所述触发通知,或者在所述第一检测单元的检测结果为是时,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。。由以上技术方案可以看出,本发明中,链路的端口在物理状态变为可用之后,并非立即向上层协议模块上报以触发上层协议模块将本端端口的逻辑状态切换为逻辑状态可用,而是等待对端发送的报文或者自身已开启的逻辑状态切换定时器超时才向上层协议模块上报以触发上层协议模块将本端端口的逻辑状态切换为逻辑状态可用,而根据上面技术方案可以知道,一端口向对端端口发送报文比如通知报文、确认报文等,则表示该端口的物理状态已变为可用,以及一端口在物理状态变为可用后收到对端端口发送的报文比如通知报文、确认报文等,则触发上层协议模块将本端端口的逻辑状态切换为逻辑状态可用,如此,可以得到本发明是在两端端口在物理状态均变为可用的时间内触发上层协议模块将本端端口的逻辑状态切换为逻辑状态可用,这相比于现有技术,显然缩短了两端口逻辑UP的时间差,实现快速恢复链路的目的。


图1示出了 LINK UP DELAY功能实现示意图2为本发明实施例1提供的流程图3为本发明实施例1中info报文的示意图4至图7为本发明实施例1中场景1至场景4的示意图8为本发明实施例2提供的流程图9为本发明实施例2中info报文、ack报文的示意图10至图12为本发明实施例2中场景1至场景3的示意图
图13为本发明实施例提供的装置结构图14为本发明实施例提供的另一装置结构图。
具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。由于一条链路恢复连通的过程是该链路两端端口的逻辑状态均变为可用(为便于描述,下面均以逻辑状态可用简称为逻辑UP)的过程,也即,两个端口逻辑UP的时间差则是该以太网物理链路恢复的时间,这个时间差越短,表示以太网物理链路恢复的性能越好, 切换过程中的丢包率就越低。因此,缩短以太网物理链路两个端口逻辑UP的时间差是提高以太网物理链路性能的关键。LINK UP DELAY功能被广泛用于缩短链路两个端口逻辑UP的时间差,所谓LINK UP DELAY功能,其是指在端口的物理状态变为可用(由于物理状态可用是物理层协商的结果,为便于描述,下面均以物理状态可用简称为物理UP)后延迟触发逻辑UP,延迟的时间可通过命令行配置。基于此,就需要在链路两端口配置LINK UP DELAY功能,通过调整两端端口触发逻辑UP的时间来缩短两端端口逻辑UP的时间差,实现快速恢复链路的目的,下面通过图1进行分析如图1所示,假设端口 A、B为一条链路的两端端口,假如端口 A为先物理UP的端口,则端口 A和端口 B逻辑UP的时间差Δ Tlogic为ATlogic — Tlogic—b_Tlogic—a一 Tphy—b+tdelay—b_ (Tphy—a+tdelay—a)= (Tphy—b_T= Δ Tphy+tdelay b_tdelay a (公式 1)其中,Tl0gio为端口 B逻辑UP的时间点,Tltjgie a为端口 A逻辑UP的时间点,Tphy b 为端口 B物理UP的时间点,tdelay b为端口 B设置的用于延迟触发逻辑UP的LINK UP DELAY 时间,Tphy—a为端口 A物理UP的时间点,tdelay a为端口 A设置的用于延迟触发逻辑UP的LINK UP DELAY时间,Δ Tphy为端口 A和端口 B物理UP的时间差。从上面的公式1可以看出,使Δ Tlogic减小到0,就能保证端口 A和端口 B逻辑UP的时间差最小,达到同步,基于此,tdelay a、ttelay b、Δ Tphy,三者满足以下条件tdelay a_tdelay b= ATphy。(公式 2)简单地,为使端口 A和端口 B的逻辑UP同步,可仅在端口 A配置LINK UPDELAY功能即配置Tphy a,由于端口 B未配置LINK UP DELAY功能,因此,上述的tdelay b就等于0,基于上面的公式2,可以得到当tdelay a = Δ Tphy时,端口 A和端口 B的逻辑UP同步为先物理UP 的端口 A等待对端即端口 B物理UP后再触发逻辑UP,而端口 B在物理UP后立即触发逻辑 UP,这能保证端口 A和端口 B的逻辑UP同步,实现快速恢复链路的目的。综上可以看出,通过在链路端口配置LINK UP DELAY功能能够实现快速恢复链路。 但是,其需要事先知道链路两端端口中先物理UP的端口,以及两端端口物理UP的时间差。 而在实际应用中,链路两端端口存在各种差异,触发链路恢复的因素各不相同,哪一个端口先物理UP是很难确定的,至于两端端口物理UP的时间差,更是不方便精确测量,估算又不够准确。因此,本发明又提出了不需要事先知道链路两端端口中先物理UP的端口,以及两端端口物理UP的时间差,但可以实现快速恢复链路的方案,下面分别通过实施例1和实施例2进行描述实施例1 由于现有技术中,当链路的端口物理UP后,该端口会立即向上层协议模块上报, 以触发上层协议模块将该端口的逻辑状态切换为逻辑UP,而本实施例1中,通过控制链路两端端口中先物理UP的端口延时触发逻辑UP,S卩,先物理UP的端口等待另一后物理UP的端口,这样就可以缩短两端口触发逻辑UP的时间差,以实现快速恢复链路的目的。本实施例ι具体实现时可包括图2所示的流程参见图2,图2为本发明实施例1提供的流程图。如图2所示,该流程可包括以下步骤步骤201,链路的一端口(记为端口 A)在自身的物理状态为物理UP时,开启自身对应的逻辑状态切换定时器(简称LINK UP定时器)。本实施例中,端口 A对应的LINK UP定时器可设置在端口 A中,也可独立于端口 A, 本发明并不具体限定。步骤202,端口 A检测自身是否收到对端端口(即链路所连接的对端设备上的端口,记为端口 B)发送的用于触发逻辑状态切换的报文(简称为info报文),如果是,执行步骤205,否则,执行步骤203。本实施例1中,info报文为直连链路上的交互报文,在接收端口终结。该info报文可为本实施例1重新定义的报文,也可通过对现有协议定义的报文进行修改得到。其中, 重新定义的info报文可采用图3所示的格式,在图3中,DMAC字段采用广播MAC地址,SMAC 字段为发送该info报文的端口的MAC地址,Type字段可标识重新定义的报文,取值可为 0X9909。当然,作为扩展,重新定义的info报文还可采用不同于图3的格式,本发明并不具体限定。步骤203,端口 A检查自身已开启的LINK UP定时器是否超时,如果是,执行步骤 204,否则,返回步骤202。本步骤203中,LINK UP定时器的周期t可为毫秒级的数值,可基于下文描述的本实施例1下四种场景的分析设置。步骤204,端口 A向端口 B发送info报文。之后执行步骤205。步骤205,端口 A关闭已开启的LINK UP定时器,向上层协议模块上报LINK UP,以触发上层协议模块将该端口 A的逻辑状态切换为逻辑UP。当链路两端的端口即端口 A和端口 B的逻辑状态均为逻辑UP时,该链路即可恢复,可以正常用于数据的传输。至此,完成图2的描述。通过图2所示的流程可以看出,链路的端口在物理UP之后,并非立即向上层协议模块上报LINK UP以触发逻辑UP,而是等待到对端发送的info报文或者自身已开启的LINK UP定时器超时才向上层协议模块上报LINK UP以触发逻辑UP, 而根据图2所示的流程可以知道,当一端口发送info报文,表示该端口已物理UP,当一端端口在物理UP接收到对端端口发送的info报文,则触发上层协议模块将自身的逻辑状态切换为逻辑UP,如此可以看出本发明实施例1中,两端端口在物理UP后的info报文交互时间内均逻辑UP,这显然缩短了两端口逻辑UP的时间差,实现快速恢复链路的目的。下面通过以下四种场景对图2所示的流程进行详细分析由于一条链路两端端口物理UP的时间并不是完全相同,其可能存在先后顺序,此处设两端端口为端口 A和B,其中,端口 A物理UP的时间点为Tphy_a,端口 A上报LINK UP 的时间点(由于端口向上层协议模块上报LINKUP与上层协议模块将该端口的逻辑状态切换为逻辑UP几乎同步,因此,该上报LINK UP的时间点可简称为逻辑UP的时间点)为Tltjgic a,端口 B物理UP的时间点为Tphy b,端口 B逻辑UP的时间点为Tltjgie b,Δ Tphy为两端口物理 UP的时间差,也即时间间隔,Δ Tphy = Tphy b-Tphy a, Δ Tlogic为链路两端端口逻辑UP的时间差, AT\。gi。= Tlt5gie b-Tlt5gi^另外,基于图2的描述可以知道,链路中两端端口在物理UP后需要启动自身对应的LINK UP定时器,本实施例1中,该两端端口启动的LINK UP定时器的周期可相同,也可不同,为简单描述,下面各个场景均以该两端端口启动的LINK UP定时器的周期相同,均为t为例。还有,基于图2的描述可以知道,链路的端口在LINK UP定时器超时时需要向对端发送info报文,该info报文的传输时间取决于info报文的长度。当链路的两端端口发送长度相同的info报文时,info报文的传输时间应该相同,本实施例1以链路两端端口发送的info报文长度相同为例,也即两端端口发送的info报文的传输时间相同,均为ATtx。基于上面描述,下面分别描述以下四种场景场景1 本场景1应用于Δ \χ<= ATphy<=t的情况,具体如图4所示。在这种情况下, 先物理UP的端口假设为端口 A会开启自身上的LINK UP定时器。至于另一端口假使为端口 B,由于Δ Ttx <= Δ Tphy < = t,则表示该端口 B肯定在端口 A开启的LINK UP定时器的超时时间t未到达时物理UP。该端口 B物理UP后同样会开启自身上的LINK UP定时器。当端口 A上的LINK UP定时器超时时,端口 A关闭自身已开启的LINK UP定时器, 立即向对端发送info报文,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 A的逻辑状态切换为逻辑UP,该端口 A逻辑UP的时间Tltjgie a = Tphy a+t。而由于ATtx <=Δ Tphy < = t,则表示当端口 B收到端口 A发送的info报文时,该端口 B开启的LINK UP定时器肯定没有超时,基于图2的描述,端口 B由于接收到info报文,其也会关闭自身已
8开启的LINK UP定时器,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 B的逻辑状态切换为逻辑UP,此时,该端口 B逻辑UP的时间Tltjgie b = Tlogic a+ Δ Ttx。基于上面得到的Tltjgie a、Tltjgie b,则可以得到本场景1下,两端口逻辑UP的时间差 ATlogic = Tlogic b-Tlogic a= ATtx0而两端口经由的从均物理UP到均逻辑UP的时间(为图 4 中阴影部分)Δ Tsyn = t-Δ Tphy+ Δ Ttx < = t。基于场景1的分析可以知道,如果设置t、ΔΤ χ, Δ Tphy满足以下条件ATtx < = ATphy<=t,则能使ATltjgi。优化至Δ \Χ,而通常,由于info报文的长度比较短,各个端口传输该info报文的时间ATtx也比较短,因此,将两端口逻辑UP的时间差ATltjgi。减小至 Δ Ttx,能够达到快速恢复链路的目的。场景2 本场景2应用于t> ATtx >= ATphy的情况,具体如图5所示。在这种情况下, 先物理UP的端口假设为端口 A会开启自身上的LINK UP定时器。至于另一端口假使为端口 B,由于t > Δ Ttx > = Δ Tphy,则表示该端口 B肯定在端口 A开启的LINK UP定时器的超时时间t未到达时物理UP。该端口 B物理UP后同样会开启自身上的LINK UP定时器。当端口 A上的LINK UP定时器超时时,端口 A关闭自身已开启的LINK UP定时器, 立即向对端发送info报文,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 A的逻辑状态切换为逻辑UP,该端口 A逻辑UP的时间Tltjgie a = Tphy a+t。而由于t > Δ Ttx > = Δ Tphy,则表示端口 B在收到端口 A发送的info报文之前自身开启的LINK UP定时器已超时,其肯定在自身开启的LINK UP定时器超时时关闭该LINK UP定时器,且立即向对端即端口 A发送info报文,并上报LINK UP至上层协议模块,以触发上层协议模块将该端口 B的逻辑状态切换为逻辑UP,此时该端口 B逻辑UP的时间Tltjgie b = Tphy b+t。基于上面得到的Tltjgie a、Tltjgie b,则可以得到本场景2下,两端口逻辑UP的时间差 ATlogic = Tlogic b-Tlogic a= ATphy。而两端口经由的从均物理UP到均逻辑UP的时间(为图 5中阴影部分)ATsyn =t。基于场景2的分析可以知道,如果设置t、Δ Ttx、Δ Tphy满足以下条件t > Δ Ttx > =Δ Tphy,则 Δ Tltjgic 等于 ATphy。场景3 本场景3应用于t+ATtx >= ATphy>t的情况,具体如图6所示。在这种情况下, 先物理UP的端口假设为端口 A会开启自身上的LINK UP定时器,至于另一端口假设为端口 B,由于t+ Δ Ttx > = Δ Tphy > t,则表示该端口 B肯定在端口 A开启的LINK UP定时器超时后物理UP,其中,当该端口 B物理UP后同样会开启自身上的LINK UP定时器。当端口 A上的LINK UP定时器超时时,端口 A关闭自身已开启的LINK UP定时器, 立即向对端即端口 B发送info报文,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 A的逻辑状态切换为逻辑UP,此时,该端口 A逻辑UP的时间I\。gi。a = Tphy a+t。 而由于t+ATtx >= Δ Tphy >t,则表示端口 B肯定在开启的LINK UP定时器超时前收到端口 A发送的info报文,此时,端口 B关闭自身已开启的LINK UP定时器,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 B的逻辑状态切换为逻辑UP,此时,该端口 B 逻辑 UP 的时间 Tltjgic b = Tlogic a+ Δ Ttx0基于上面得到的Tltjgie a、Tltjgie b,则可以得到本场景3下,两端口逻辑UP的时间差ATlogic = Tlogic b-Tlogic a= ATtx0而两端口经由的从均物理UP到均逻辑UP的时间(为图 6 中阴影部分)Δ Tsyn = t+Δ Ttx- Δ Tphy < ATtx0基于场景3的分析可以知道,如果设置t、Δ Ttx、Δ Tphy满足以下条件t+ Δ Ttx > = Δ Tphy > t,则能使Δ Tlogic减少至Δ Ttx,以达到快速恢复链路的目的。场景4 本场景4应用于t+ATtx< ATphy的情况,具体如图7所示。在这种情况下,先物理UP的端口假设为端口 A会开启自身上的LINK UP定时器。至于另一端口假设为端口 B, 由于t+ Δ Ttx < Δ Tphy,则表示端口 B在端口 A肯定在端口 A开启的LINK UP定时器超时后物理UP。其中,当该端口 B物理UP后同样会开启自身上的LINK UP定时器。当端口 A上的LINK UP定时器超时时,端口 A关闭自身已开启的LINK UP定时器, 立即向对端发送info报文,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 A的逻辑状态切换为逻辑UP,该端口 A逻辑UP的时间Tltjgie a = Tphy a+t。而由于t+ Δ Ttx < Δ Tphy,则表示端口 B在物理UP之后不会收到端口 A发送的info报文,因此,其必须在自身开启的LINK UP定时器超时时,关闭自身已开启的LINK UP定时器,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 B的逻辑状态切换为逻辑UP,此时,该端口 B 逻辑 UP 的时间 Tltjgie b = Tphy—b+t。基于上面得到的、Tltjgie a、Tlogic b,则可以得到本场景4下,两端口逻辑UP的时间差 ATlogic = Tlogic b-Tlogic a= ATphy。而两端口经由的从均物理UP到均逻辑UP的时间(为图 7中阴影部分)ATsyn =t。至此,完成本实施例1中四种场景的描述。本实施例1下的四种场景能够覆盖Δ Tphy, t、Δ Ttx之间数量关系的所有情况。但是,从上述四种场景的描述可以看出,在不同的场景下,Δ Tltjgi。的取值不同,比如,场景1和场景 3 下 ATltjgie= Δ Ttx,而场景 2 和场景 4 下 ATltjgie= Δ Tphy,其中,ATltjgie= Δ Tphy 与现有技术一样,相当于没有对链路的恢复作任何优化。基于此,为实现链路快速恢复的效果,就需要限定场景,而场景由ATphy、t、ATtj*S。因此,为保证链路快速恢复的效果,需要限定t、Δ Tphy, Δ \Χ。本实施例1中,可保证上述场景1或场景3中t、Δ Tphy, ATtx的条件,以达到链路快速恢复的目的。至此,完成实施例1的描述,下面对实施例2进行描述实施例2 本实施例2具体实现时可包括图8所示的流程参见图8,图8为本发明实施例2提供的流程图。如图8所示,该流程可包括以下步骤步骤801,链路的一端口(记为端口 Α)将自身的物理状态切换为物理UP后,向对端端口(即链路所连接的对端设备的端口,记为端口 B)发送用于触发逻辑状态切换的通知报文(简称info报文),并开启自身对应的逻辑状态切换定时器(简称LINK UP定时器)。本实施例中,端口 A对应的LINK UP定时器可设置在端口 A中,也可独立于端口 A, 本发明并不具体限定。步骤802,端口 A检测自身是否收到端口 B发送的针对所述info报文的确认报文 (简称ack报文),如果是,执行步骤806,否则,执行步骤803。
本实施例2中的info报文、ack报文为直连链路上的交互报文,在接收端口终结, 其可由本实施例2重新定义,也可通过对现有协议定义的报文进行修改得到。其中,重新定义时,该报文可采用图9所示的格式,在图9中,DMAC字段采用广播MAC地址,SMAC字段为发送该报文的端口的MAC地址,Type字段可标识重新定义的报文,取值可为0X9909,status 字段为报文的类型标识,当取值为1时,表示该报文为info报文,当取值为2时,表示该报文为ack报文。当然,作为扩展,本实施例2重新定义的报文还可采用不同于图9的格式, 本发明并不具体限定。步骤803,端口 A检测自身是否收到端口 B发送的info报文,如果是,执行步骤 805,否则,执行步骤804。步骤804,端口 A检查已开启的LINK UP定时器是否超时,如果是,重新向端口 B发送info报文,并重启自身对应的LINK UP定时器,之后返回步骤802,否则,直接返回步骤 802。从步骤804可以看出,端口 A在已开启的LINK UP定时器超时时,需要重新向端口 B发送info报文,并重启自身对应的LINK UP定时器,如此,可以得到端口 A对应的LINK UP 定时器是在端口 A接收到端口 B针对该端口 A发送的info报文返回的确认报文之前或者是在接收到端口 B发送的info报文之前被周期性地重启。该周期为LINK UP定时器的超时时间(记为t)。并且,由于端口在重启对应的LINK UP定时器时都需要重新向端口 B发送info报文,这进一步可以得到端口 A也是以t为周期发送向端口 B发送info报文。步骤805,向端口 B发送ack报文,之后执行步骤806。步骤806,端口 A关闭已开启的LINK UP定时器,向上层协议模块上报LINKUP以触发上层协议模块将该端口 A的逻辑状态切换为逻辑UP。当链路两端的端口即端口 A和端口 B的逻辑状态均为逻辑UP时,该链路即可恢复,可以正常用于数据的传输。至此,完成图8的描述。为使图8所示的流程更加清楚,下面通过以下三种场景对图8所示的流程进行详细描述由于一条链路两端端口物理UP的时间并不是完全相同,其可能存在先后顺序,此处设两端端口为端口 A和B,其中,端口 A物理UP的时间点为Tphy a,端口 A逻辑UP的时间点为T1()gi。—a,端口 B物理UP的时间点为Tphy b,端口 B逻辑UP的时间点为I\。gi。b,Δ Tphy为两端口物理UP的时间差,也即时间间隔,ATphy = Tphyb-Tphya, ATlogic为链路两端端口逻辑UP 的时间差,ΔΙ\_。= Tltjgie b-TltjgieY另外,基于上述步骤801的描述可以知道,链路中两端端口在物理UP后需要启动自身对应的LINK UP定时器,并且,基于上述步骤804的描述可以知道,该LINK UP定时器被周期性地重启,其中,本实施例2中,两端端口启动LINK UP定时器的周期可相同,也可不同,为简单描述,下面各个场景均以该两端端口启动LINK UP定时器的周期相同,均为t为例。还有,链路的两端端口在未触发逻辑UP之前需要周期性地向对端端口发送info报文,该info报文的传输时间取决于info报文的长度。当链路的两端端口发送长度相同的info报文时,info报文的传输时间应该相同,本实施例2以链路两端端口发送的info报文长度相同为例,也即两端端口发送的info报文的传输时间相同,均为 ATtx。
基于上面描述,下面分别描述本实施例2下的三种场景场景1 本场景1 应用于 n*t+ ATtx < Δ Tphy < = (n+1) *t,且 ATphy+ Δ Ttx < = (η+1) *t 的情况,其中,η为端口发送info报文的周期,大于等于0,该场景1所应用的情况具体如图10 所示。在这种情况下,先物理UP的端口假设为端口 A开启自身上的LINK UP定时器,并向对端假设为端口 B发送info报文。之后,在端口 A接收到端口 B发送的ack报文或者info 报文之前,端口 A均以t为周期重启LINK UP定时器和发送info报文。至于端口 B,由于 n*t+ATtx< Δ Tphy < = (n+1) *t,则可以得到端口 B在端口 A发送info报文的第η周期内物理UP。由于端口 B在第η周期内物理UP,因此,端口 B对端口 A在第η个周期之前发送的info报文均没有任何回应。在第η周期开始时,端口 A发送info报文到端口 B。由于n*t+Δ Ttx < Δ Tphy < = (n+1) *t,且ATphy+ Δ Ttx < = (n+1) *t,则表示端口 B在接收到来自端口 A在第η个周期内发送的info报文时,仍然没有物理UP,而是在接收到端口 A在第η个周期内发送的info报文之后的时间点(该时间点也属于第η个周期)物理UP。当端口 B物理UP时,端口 B同样会开启自身对应的LINK UP定时器,并向对端即端口 A发送info报文。并且,之后端口 B在物理UP之后、且接收到端口 A发送的ack报文或者info报文之前,均以t为周期重启 LINK UP定时器和发送info报文。当端口 A收到端口 B发送的info报文时,认为端口 B已经物理UP,向端口 B发送针对该接收的info报文的ack报文,并关闭已开启的LINK UP定时器,上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 A的逻辑状态切换为逻辑UP,此时,该端口 A
逻辑 UP 的时间 Tltjgic a = Tphy b+ Δ Ttx0当端口 B收到端口 A发送的ack报文后,关闭自身已开启的LINK UP定时器,并上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 B的逻辑状态切换为逻辑UP 上报逻辑UP,此时,该端口 B逻辑UP的时间Tltjgie b = Tlogic a+ Δ Ttx。基于上面得到的I\。gi。a、I\。gi。b,则可以得到本场景1下,两端口逻辑UP的时间差 ATlogic = Tlogic b-Tlogic a= ATtxtj而两端口经由的从均物理UP到均逻辑UP的时间(为图 10 中阴影部分)Δ Tsyn = Δ Ttx+ Δ Tlogic = 2 Δ Ttx0基于场景1的分析可以知道,如果设置t、ΔΤ χ, Δ Tphy满足以下条件n*t+Δ Ttx < ATphy<= (n+l)*t,,且 Δ Tphy+Δ Ttx <= (n+1) *t,则能使 Δ Tltjgic 优化至 Δ Ttx,而通常, 由于info报文的长度比较短,各个端口传输该info报文的时间ATtx也比较短,因此,将两端口逻辑UP的时间差ATltjgi。减小至Δ Ttx,能够达到快速恢复链路的目的。场景2:本场景2 应用于 n*t+ Δ Ttx < Δ Tphy < = (n+1) *t,且(n+1) *t < Δ Tphy+ Δ Ttx < = (n+1) *t+Δ Ttx的情况,其中,η为发送info报文的周期,大于等于0,该场景2所应用的情况具体如图11所示。在这种情况下,先物理UP的端口假设为端口 A开启自身上的LINK UP 定时器,并向对端假设为端口 B发送info报文。之后,在端口 A接收到端口 B发送的ack 报文或者info报文之前,端口 A以t为周期重启LINK UP定时器和发送info报文。至于端口 B,由于n*t+ATtx < Δ Tphy < = (n+1) *t,则可以得到端口 B在端口 A发送info报文的第η周期内物理UP。由于端口 B在第η周期内物理UP,因此,端口 B对端口 A在第η个周期之前发送的info报文均没有任何回应。在第η周期开始时,端口 A发送info报文到端口 B,由于n*t+A Ttx < ATphy < = (n+1) *t,则可以得到端口 B接收到来自端口 A在第η周期内发送的info报文时,仍然没有物理UP,而是在第η周期内、且接收到端口 A在第η周期内发送的info报文之后的时间点物理UP。当端口 B物理UP时,同样会开启自身上的LINK UP定时器,并向对端即端口 A发送info报文。之后端口 B在物理UP之后、且接收到端口 A发送的ack报文或者info报文之前,均以t为周期重启LINK UP定时器和发送info报文。当端口 A收到端口 B发送的info报文时,由于n*t+ATtx < Δ Tphy < = (n+l)*t, 且(n+1) *t < Δ Tphy+ Δ Ttx < = (n+1) *t+ Δ Ttx,则表示端口 A收到该info报文的时间点在第n+1个周期内。端口 A收到端口 B发送的info报文后,认为端口 B已经物理UP,向端口 B发送与该接收的info报文对应的ack报文,并关闭自身已开启的LINK UP定时器,上报 LINK UP至上层协议模块,以触发该上层协议模块将本端端口 A的逻辑状态切换为逻辑UP, 此时,该端口 A逻辑UP的时间Tltjgic a = Tphy b+ Δ Ttx。基于上面描述的端口 A收到端口 B发送的info报文的时间点在第n+1个周期内, 可以得到当到达第n+1个周期时,端口 A还没有收到端口 B发送的info报文,因此,到达第 n+1个周期时,端口 A还会向端口 B发送info报文。该端口 A发送info报文的时间点早于上述发送ack报文的时间点。如此,端口 B会先收到端口 A发送的info报文,并在接收到info报文时,关闭已开启的LINK UP定时器,上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 B的逻辑状态切换为逻辑UP,此时,该端口 B逻辑UP的时间Tltjgie b = Tphy_a+(n+l) *t+ Δ Ttx。当两端口已经逻辑UP时,后续分别收到的info报文和ack报文忽略。基于上面得到的I\。gi。a、Tl0gicj3,则可以得到本场景2下,两端口逻辑UP的时间差 ΔΙ\_ = Tlogic b-Tlogic a = Tphy—a+(n+l)*t-Tphy—b = (n+l)*t-ATphy。而两端口经由的从均物理UP到均逻辑UP的时间(为图11中阴影部分)Δ Tsyn = Δ Ttx+ Δ Tlogic = ATtx+(n+l)*t-ATphy。基于(n+l)*t<Δ Tphy+Δ Ttx <= (n+1) *t+Δ Τ,可以得到 Δ Tlogic <= Δ \Χ,如此, 可以得到本场景2下,在t、ΔΤ χ, Δ Tphy满足以下条件n*t+ATtx < Δ Tphy < = (n+l)*t, 且(n+l)*t< Δ Tphy+Δ Ttx <= (n+l)*t+ATtx,能使 ATltjgi。优化至小于 ATtx 的数值,这显然能够达到快速恢复链路的目的。场景3:本场景3应用于n*t< ATphy <= n*t+Δ Ttx的情况,其中,η为发送info报文的周期,大于等于0,该场景3所应用的情况具体如图12所示。在这种情况下,先物理UP的端口假设为端口 A开启自身上的LINK UP定时器,并向对端假设为端口 B发送info报文。 之后,在端口 A接收到端口 B发送的ack报文或者info报文之前,端口 A以t为周期重启 LINK UP定时器和发送info报文。至于端口 B,由于n*t< Δ Tphy < = n*t+Δ Ttx,则可以得到端口 B在端口 A发送info报文的第η周期内物理UP,当端口 B物理UP时,同样会开启自身上的LINK UP定时器,并向对端即端口 A发送info报文。并且,之后端口 B在物理UP之后、且接收到端口 A发送的ack报文或者info报文之前,以t为周期重启LINK UP定时器和发送info报文。需要说明的是,由于端口 B在第η周期内物理UP,因此,端口 B对端口 A 在第η个周期之前发送的info报文均没有任何回应。
在第η周期开始时,端口 A发送info报文到端口 B,由于n*t < Δ Tphy < = n*t+Δ Ttx,则表示端口 B在收到端口 A在第η个周期内发送的info报文之前已经物理UP。 由于端口 B物理UP时,会立即向端口 A发送info报文,可以进一步得到端口 B在收到端口 A在第η个周期内发送的info报文之前不光已经物理UP,还已经向端口 A发出了 info报文。当端口 B接收到端口 A在第η个周期内发送的info报文时,关闭已开启的LINK UP定时器,上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 B的逻辑状态切换为逻辑UP,并向端口 A发送ACK报文。此时,该端口 B逻辑UP的时间Tltjgie b = Tphy a+n*t+ATtx。当端口 A收到端口 B发出的info报文时,关闭已开启的LINK UP定时器,上报LINK UP至上层协议模块,以触发该上层协议模块将该端口 A的逻辑状态切换为逻辑UP,并向端口 B发送ACK报文。此时,该端口 A逻辑UP的时间I\。gi。a = Tphy b+ Δ Ttx。基于上面得到的I\。gi。a、I\。gi。b,则可以得到本场景3下,两端口逻辑UP的时间差 ATlogic = Tlogic a-Tlogicj3 = Tphy—b-Tphy—a-n*t = ATphy-n*t,而两端口经由的从均物理 UP 到均逻辑UP的时间(为图12中阴影部分)ATsyn= ATtxtj基于n*t < Δ Tphy < = n*t+Δ Ttx,可以得到上面得到的 Δ Tltjgie <= Δ \Χ。如此, 可以得到本场景3中,当t、ATtx, ATphy满足以下条件n*t < ATphy <= n*t+ATtx,能使 Δ Tltjgi。优化至小于ATtx的数值,这显然能够达到快速恢复链路的目的。至此,完成本实施例2中三种场景的描述。在上述三种场景中,链路两端端口已经逻辑UP后收到的info报文、ack报文均忽略。上述三种场景能够覆盖Δ Tphy, t、Δ Ttx之间数量关系的所有情况。从上述三种场景可以看出,每一种场景下均可以得到ΔΙ\_。<= Δ Ttx,且Δ \Χ<= ATsyn<= 2 Δ Ttx0 也就是说,通过图8所示的流程,不管哪种场景,均能够使链路两端端口的逻辑UP时间差缩短到不大于本条链路上一个报文传输时间(Δ Tlogic <= Δ J,通常链路上的一个报文传输时间仅为几个毫秒甚至毫秒以下,这能够达到快速恢复链路的目的。相比实施例一,由于本实施例二不管哪种场景,均能够使链路两端端口的逻辑UP 时间差缩短到不大于本条链路上一个报文传输时间(ΔΙ\_。<= Δ Ttx),因此,本实施例2 对LINK UP定时器启动的周期t无特殊要求,不受Δ Tphy、ATtxW限制,优化效果较稳定,具有一定的推广性。优选地,考虑到实际情况,可在设置t时,考虑CPU的处理能力,通常不要低于100ms。至此,完成实施例二的描述。以上对本发明提供的方法进行了描述,下面对本发明提供的端口模块进行描述参见图13、图13为本发明实施例提供的装置结构图。该装置应用于实施例1中的端口,具体包括处理单元、检查单元和触发单元;其中,所述处理单元用于在本端端口的物理状态可用(available)后,开启本端端口对应的逻辑状态切换定时器,并检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的报文;所述检查单元用于在所述处理单元的检测结果为否时,检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,向对端端口发送用于触发逻辑状态切换的报文,并发送触发通知给所述触发单元;所述触发单元用于在所述处理单元的检测结果为是时,或者接收到所述触发通知时,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。优选地,所述用于触发逻辑状态切换的报文(比如实施例1中的info报文)为直连链路上传输的报文,终结于接收端口。本实施例中,为达到快速恢复链路的目的,所述逻辑状态切换定时器的周期t满足以下条件ATtx <= ATphy <=t;或者,t+ATtx>= Δ Tphy > t ;其中,Δ \χ为本端端口发送的用于触发逻辑状态切换的报文的传输时间,ATphy为本端端口的物理状态可用和对端端口的物理状态可用的时间差。另外,本发明实施例还提供了另一种端口模块结构图,具体如图14所示。参见图14、图14为本发明实施例提供的另一装置结构图。该装置应用于实施例 2中的端口,具体包括处理单元、第一检测单元、第二检测单元、检查单元和触发单元;其中,所述处理单元用于在本端端口的物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并向对端端口发送用于触发逻辑状态切换的通知报文;所述第一检测单元用于检测本端端口是否收到对端端口发送的针对所述通知报文的确认报文;所述第二检测单元用于在所述第一检测单元的检测结果为否时,检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的通知报文,如果是,向对端端口发送针对该通知报文的确认报文,并发送触发通知给触发单元,如果否,发送检查通知给所述检查单元;所述检查单元用于检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,重新向对端端口发送所述通知报文,重启所述逻辑状态切换定时器,并触发第一检测单元执行检测操作,否则,直接触发第一检测单元执行检测操作;所述触发单元用于接收到所述触发通知,或者在所述第一检测单元的检测结果为是时,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。优选地,所述通知报文、确认报文为直连链路上传输的报文,终结于接收端口。至此,完成本发明提供的端口模块的描述。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种快速恢复链路的方法,其特征在于,该方法包括A,链路上的每一端口在其物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的报文,如果否,执行步骤B,如果是,执行步骤C ;B,检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,向对端端口发送用于触发逻辑状态切换的报文,并执行步骤C ;C,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。
2.根据权利要求1所述的方法,其特征在于,所述用于触发逻辑状态切换的报文为直连链路上传输的报文,终结于接收端口。
3.根据权利要求1所述的方法,其特征在于,所述逻辑状态切换定时器的周期t满足以下条件ATtx <= ATphy <=t;或者,t+ATtx>= ATphy>t;其中,ATtx为本端端口发送的用于触发逻辑状态切换的报文的传输时间,ATphy为本端端口的物理状态可用和对端端口的物理状态可用的时间差。
4.一种快速恢复链路的装置,其特征在于,该装置应用在链路上的端口中,包括处理单元、检查单元和触发单元;其中,所述处理单元用于在本端端口的物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的报文;所述检查单元用于在所述处理单元的检测结果为否时,检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,向对端端口发送用于触发逻辑状态切换的报文,并发送触发通知给所述触发单元;所述触发单元用于在所述处理单元的检测结果为是时,或者接收到所述触发通知时, 关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。
5.根据权利要求4所述的装置,其特征在于,所述用于触发逻辑状态切换的报文为直连链路上传输的报文,终结于接收端口。
6.根据权利要求4所述的装置,其特征在于,所述逻辑状态切换定时器的周期t满足以下条件ATtx <= ATphy <=t;或者,t+ATtx>= ATphy>t;其中,ATtx为本端端口发送的用于触发逻辑状态切换的报文的传输时间,ATphy为本端端口的物理状态可用和对端端口的物理状态可用的时间差。
7.一种快速恢复链路的方法,其特征在于,该方法包括A,链路上的每一端口在其物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并向对端端口发送用于触发逻辑状态切换的通知报文;B,检测本端端口是否收到对端端口发送的针对所述通知报文的确认报文,如果是,执行步骤E,如果否,执行步骤C;C,检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的通知报文,如果是,向对端端口发送针对该通知报文的确认报文,并执行步骤E ;如果否,执行步骤D ;D,检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,重新向对端端口发送所述用于触发逻辑状态切换的通知报文,并重启所述逻辑状态切换定时器,返回步骤B, 否则,直接返回步骤B;E,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。
8.根据权利要求7所述的方法,其特征在于,所述通知报文、确认报文为直连链路上传输的报文,终结于接收端口。
9.一种快速恢复链路的装置,其特征在于,该装置应用在链路上的端口中,包括处理单元、第一检测单元、第二检测单元、检查单元和触发单元;其中,所述处理单元用于在本端端口的物理状态可用available后,开启本端端口对应的逻辑状态切换定时器,并向对端端口发送用于触发逻辑状态切换的通知报文;所述第一检测单元用于检测本端端口是否收到对端端口发送的针对所述通知报文的确认报文;所述第二检测单元用于在所述第一检测单元的检测结果为否时,检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的通知报文,如果是,向对端端口发送针对该通知报文的确认报文,并发送触发通知给触发单元,如果否,发送检查通知给所述检查单元;所述检查单元用于检查本端端口已开启的逻辑状态切换定时器是否超时,如果是,重新向对端端口发送所述通知报文,重启所述逻辑状态切换定时器,并触发第一检测单元执行检测操作,否则,直接触发第一检测单元执行检测操作;所述触发单元用于接收到所述触发通知,或者在所述第一检测单元的检测结果为是时,关闭本端端口已开启的逻辑状态切换定时器,并触发上层将本端端口的逻辑状态切换为逻辑状态可用。
10.根据权利要求9所述的装置,其特征在于,所述通知报文、确认报文为直连链路上传输的报文,终结于接收端口。
全文摘要
本发明提供了快速恢复链路的方法和装置。一种方法为A,链路的每一端口在物理状态可用后,开启本端端口的逻辑状态切换定时器,向对端端口发送用于触发逻辑状态切换的通知报文;B,检测本端端口是否收到对端端口发送的针对通知报文的确认报文,是则执行步骤E,否则执行步骤C;C,检测本端端口是否收到对端端口发送的用于触发逻辑状态切换的通知报文,是则向对端端口发送针对该通知报文的确认报文并执行步骤E;否则执行步骤D;D,检查本端端口的逻辑状态切换定时器是否超时,是则重新向对端端口发送用于触发逻辑状态切换的通知报文,重启逻辑状态切换定时器,返回步骤B,否则返回步骤B;E,关闭本端端口的逻辑状态切换定时器,触发上层将本端端口的逻辑状态切换为逻辑状态可用。
文档编号H04L12/24GK102347859SQ201110288489
公开日2012年2月8日 申请日期2011年9月26日 优先权日2011年9月26日
发明者刘刀桂, 张楠, 文闻, 祁正林 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1