一种链路状态的检测方法

文档序号:7734614阅读:611来源:国知局
专利名称:一种链路状态的检测方法
技术领域
本发明涉及接入技术,具体地说,涉及对等实体间链路状态的检测方法。
背景技术
在Internet的接入服务中,接入服务器和每一个接入用户之间按照接入协议维护每一条链路的链路状态。接入协议可以是点到点(PPP)协议或各种承载协议,例如,承载于异步传输模式点到点(PPP over ATM)协议,承载于以太网点到点(PPP over Ethernet)协议。
当用户通过接入服务器接入到网络时,在用户和接入服务器之间建立链路。当链路建立好之后,根据接入协议按如下方法检测链路的状态服务器和用户以一定的时间间隔互发请求回应报文,并在接收到对方的请求回应报文后,回送一个回应应答报文。如果链路的一方长时间接收不到对方的请求回应报文,或者当对方响应的回应应答报文有错,或者没有响应,则认为链路发生了故障。链路的任何一方认为链路发生故障时都会导致链路的拆除。
上述检测链路的状态的方法的实现原理如图1所示。接入服务器包括控制模块和数据转发处理模块,控制模块通常由软件实现,用以完成对设备的控制以及控制报文的处理,负责各种用户信息、转发路由表、链路状态等信息的转发和维护,因此来自用户报文中的所有控制报文、链路检测报文即上述检测链路状态的请求回应报文、以及回应应答报文都交给控制模块处理。数据转发处理模块通常由硬件实现,利用上述信息完成用户数据报文的转发。
随着需求的增加,接入服务器所接入的用户数量越来越多,并发的用户数可能高达数千。接入服务器的控制模块需要同时检测数千个链路,收发大量的报文,极大地增加了CPU的负荷。一旦CPU由于负荷过大,不能及时发出请求回应报文,也不能及时响应用户的请求回应报文时,将会导致大量用户链路被拆除,从而导致用户上网中断。

发明内容
本发明的目的在于提供一种链路状态的检测方法,以在维护链路时降低接入服务器CPU的负荷。
本发明通过以下技术方案实现一种链路状态的检测方法,该方法包括以下步骤A)设置一加速模块,由加速模块接收来自用户的链路检测报文;B)记录该用户链路检测报文接收状态,判断链路检测报文是否是用户请求回应报文,如果是,则向该用户返回回应报文,执行步骤C,否则直接执行步骤C;C)由控制模块根据用户链路检测报文接收状态确定链路的状态。
所述步骤C进一步包括,由加速模块定时刷新每个用户的链路检测报文接收状态,控制模块判断是否长时间未接收到来自用户的链路检测报文,如果是,判定链路工作不正常,否则,判定链路正常。
较佳地,步骤A进一步包括,接收到链路检测报文后,从链路检测报文中提取用户信息,根据用户信息检查用户的链路是否处于打开状态,如果是则执行步骤B,否则丢弃所接收的报文。
较佳地,步骤A和B之间进一步包括,判断接收的报文是否符合接入协议要求,如果是,则执行步骤B,否则丢弃所接收的报文。
所述记录用户链路检测报文接收状态包括,设置链路检测报文接收状态为一计数值。所述定时刷新链路检测报文接收状态包括,定时地将计数值递减,所述判断是否长时间未接收到来自用户的链路检测报文包括,判断计数值是否到达预定的阈值。
所述步骤C进一步包括,由控制模块向用户发送请求回应报文。
所述链路检测报文接收状态存储于用户状态表。
所述链路检测报文为用户向接入服务器发送的请求回应报文,和/或用户回应接入服务器请求回应的回应应答报文。
本发明与现有技术相比较,具有以下特点现有技术收发链路检测报文都是由运行在控制模块CPU上的软件完成的,每接收一个数据报文,CPU就需要从外部设备读取一个完整的数据报文,这个过程需占用数百个指令周期;而本发明由独立的加速模块收发链路检测报文,控制模块的CPU只需从报文接收状态获知链路是否正常,不必读取整个数据报文,对每个数据报文的处理只需占用CPU几个指令周期。因此,本发明可以有效降低接入服务器进行链路检测时CPU的负荷,从而提高系统的性能,增强系统的健壮性。


图1为现有技术链路检测原理图。
图2为本发明链路检测原理图。
图3为加速模块处理报文的流程图。
具体实施例方式
由于现有技术中,接入服务器中控制模块不仅处理来自用户的控制报文,而且处理接入服务器和用户之间的链路检测报文。为了降低接入服务器中控制模块的CPU负担,本发明通过一加速模块来处理链路检测报文,控制模块通过记录的链路检测报文接收状态判定链路是否正常。以下以PPP链路状态检测为例详细说明本发明。
参见图2所示,图2为本发明原理图。加速模块接收来自用户的请求回应报文,即LCP-Echo-Request报文,同时对LCP-Echo-Request报文,可以返回回应应答报文,即LCP-Echo-Reply报文,进一步地,还可以接收用户的LCP-Echo-Reply报文,加速模块接收到上述报文后进行记录。该加速模块可用硬件实现,也可用软件实现,较佳地,为降低CPU的负担,采用硬件实现。控制模块只处理控制报文,也可根据应用的需要向用户发送接入服务器的LCP-Echo-Request报文,例如,按PPP协议定期地发送,也可在控制模块的CPU负荷较轻的时候发送。
为便于记录和查询链路检测报文的接收状态,建立一用户状态表,该表中记录的个数与接入的用户数一致,每个记录对应一个用户,表项内容包括用于指示用户对应的PPP链路当前是否处于打开(opened)状态的链路状态项,用于指示最近是否接收到对应用户的LCP-Echo-Request或LCP-Echo-Reply报文的链路检测报文接收状态项。例如,表项中的“链路状态”使用一个比特,‘1’表示链路处于opened状态,‘0’表示链路处于closed状态;“链路检测报文接收状态”用两个比特,“00”表示最近没有接收过用户的LCP-Echo-Request或LCP-Echo-Reply报文,其他值表示接收过。在系统复位初始化的时候表项的所有内容都要被清0。
参见图3所示,图3为加速模块处理报文的流程图。其具体步骤如下步骤301,为了保证用户状态表实时地反映所记录的信息,对用户状态表进行刷新,当刷新时间到时,执行步骤302,检查用户状态表中各个用户的“链路检测报文接收状态”是否为“00”,如果某个用户的不是“00”,则将用户状态表中该用户的“链路检测报文接收状态”减1;对“链路检测报文接收状态”已经是“00”的不做任何修改,如此循环,直至用户状态表中所有记录被刷新。当刷新时间未到时,则执行步骤303;步骤303,由加速模块判断所收到的报文是否是链路检测报文,如果是,则执行步骤304,否则结束处理;步骤304,从链路检测报文提取用户信息,并根据用户信息查找用户状态表;步骤305,根据用户状态表的链路状态项判断用户链路是否处于打开状态,如果是则执行步骤306,否则丢弃该报文;
步骤306,判断链路检测报文是否符合PPP接入协议要求,如果是则执行步骤307,否则丢弃该报文;步骤307,将用户状态表中该用户的链路检测报文接收状态设置一计数值,以通过计数值的变化判断是否长时间未收到链路检测报文,例如,设置链路检测报文接收状态为11,每进行一次刷新时,链路检测报文接收状态减1,当链路检测报文接收状态为00时,则表明在从11减至00的3个刷新周期内没有接收过用户的链路检测报文;步骤308,判断收到的链路检测报文是否为用户的LCP-Echo-Request报文,如果是,则代理控制模块向用户发送LCP-Echo-Reply报文,否则结束处理。
由于PPP链路的建立和维护是通过状态机实现的,按照RFC1661协议,一个状态机包含10个状态,控制模块为每个用户(对应一条用户PPP链路)分配一个状态机,当用户对应的状态机处于Opened状态时,将链路状态项设置为‘1’,否则设置为‘0’,上述用户状态表的链路状态项就是控制摸根据用户PPP链路对应的状态机处理结果记录的。
控制模块定时地读取用户状态表中链路检测报文接收状态,判断对应的用户是否长时间没有向接入服务器发送LCP-Echo-Request和LCP-Echo-Reply报文,如果是,则判定链路不正常,并确定是否需要向用户发送LCP-Echo-Request报文,或者是否需要拆除用户PPP链路,否则判定链路正常。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,本发明也可应用于其他检测。例如,利用ARP包(或PING包)来检测一个用户是否在线;Portal认证方式下,服务器对用户的检测;MPLS协议草案中检测数据在线(Detecting Data Plane Liveliness in MPLS),原理和这个PPP链路检测是相同。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种链路状态的检测方法,其特征在于,该方法包括以下步骤A)设置一加速模块,由加速模块接收来自用户的链路检测报文;B)记录该用户链路检测报文接收状态,判断链路检测报文是否是用户请求回应报文,如果是,则向该用户返回回应应答报文,执行步骤C,否则直接执行步骤C;C)由控制模块根据用户链路检测报文接收状态确定链路的状态。
2.如权利要求1所述的检测方法,其特征在于,所述步骤C进一步包括,由加速模块定时刷新每个用户的链路检测报文接收状态,控制模块根据链路检测报文接收状态判断是否长时间未接收到来自用户的链路检测报文,如果是,判定链路工作不正常,否则,判定链路正常。
3.如权利要求1或2所述的检测方法,其特征在于,步骤A进一步包括,接收到链路检测报文后,从链路检测报文中提取用户信息,根据用户信息检查用户的链路是否处于打开状态,如果是则执行步骤B,否则丢弃所接收的报文。
4.如权利要求1或2所述的检测方法,其特征在于,步骤A和B之间进一步包括,判断接收的报文是否符合接入协议要求,如果是,则执行步骤B,否则丢弃所接收的报文。
5.如权利要求2所述的检测方法,其特征在于,所述记录用户链路检测报文接收状态包括,设置链路检测报文接收状态为一计数值。
6.如权利要求2或5所述的检测方法,其特征在于,所述定时刷新链路检测报文接收状态包括,定时地将计数值递减,所述判断是否长时间未接收到来自用户的链路检测报文包括,判断计数值是否到达预定的阈值。
7.如权利要求1所述的检测方法,其特征在于,所述步骤C进一步包括,根据需要由控制模块向用户发送请求回应报文。
8.如权利要求1所述的检测方法,其特征在于,所述链路检测报文接收状态存储于用户状态表。
9.如权利要求1所述的检测方法,其特征在于,所述链路检测报文为用户向接入服务器发送的请求回应报文,和/或用户回应接入服务器请求回应的回应应答报文。
全文摘要
本发明公开了一种链路状态的检测方法,包括A)设置一加速模块,由加速模块接收来自用户的链路检测报文;B)记录该用户链路检测报文接收状态,判断链路检测报文是否是用户请求回应报文,如果是,则向该用户返回回应报文,执行步骤C,否则直接执行步骤C;C)由控制模块根据用户链路检测报文接收状态确定链路的状态。本发明可以有效降低接入服务器进行链路检测时CPU的负荷,从而提高系统的性能,增强系统的健壮性。
文档编号H04L29/06GK1578234SQ03149910
公开日2005年2月9日 申请日期2003年7月29日 优先权日2003年7月29日
发明者陈武茂, 左文树, 刘毓 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1