著录项信息
专利名称 | 通信链路和服务可用性的检测方法、终端及系统 |
申请号 | CN201210066316.1 | 申请日期 | 2012-03-14 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-07-18 | 公开/公告号 | CN102594628A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/26 | IPC分类号 | H;0;4;L;1;2;/;2;6;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 深圳市共进电子股份有限公司 | 申请人地址 | 广东省深圳市南山区南海大道1019号南山医疗器械产业园B116、B118;A211-A213、B201-B213;A311-313;B411-413
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 深圳市共进电子股份有限公司 | 当前权利人 | 深圳市共进电子股份有限公司 |
发明人 | 王水权;刘友盛;王大为;路冠军;邓乐 |
代理机构 | 深圳市深佳知识产权代理事务所(普通合伙) | 代理人 | 唐华明 |
摘要
本发明公开了一种通信链路和服务可用性的检测方法,包括:基于会话初始化协议SIP的终端向服务器发送心跳,终端向服务器获取心跳应答,根据心跳应答的结果,终端判断终端与服务器之间的注册状态。本发明通过终端向服务器发送心跳包来检测通信链路和服务可用性是否正常,从而及时获知终端的注册状态,而不必等待注册刷新来获知注册状态,提高了语音通话系统的实时性和可用性。
1.一种通信链路和服务可用性的检测方法,其特征在于,包括:
基于会话初始化协议SIP的终端获取所述服务器支持的心跳方式;
所述终端建立服务器与心跳方式的映射表;所述映射表包括服务器所支持的心跳方式集,所述心跳方式集包含服务器支持的不同类型的心跳,所述不同类型的心跳包括链路层心跳和业务层心跳,每种类型的心跳对应一个心跳列表,所述心跳列表包含一种类型的心跳的数量和节点,所述节点包含心跳方式和状态信息;
所述终端遍历获取的心跳方式,并从遍历的心跳方式中获得活动的心跳方式;
所述终端根据所述活动的心跳方式,向服务器发送与所述活动的心跳方式对应的心跳;
所述终端向服务器获取心跳应答;
根据心跳应答的结果,所述终端判断所述终端的注册状态。
2.根据权利要求1所述的通信链路和服务可用性的检测方法,其特征在于:所述心跳为链路层心跳。
3.根据权利要求2所述的通信链路和服务可用性的检测方法,其特征在于:
根据心跳应答的结果,所述终端判断所述终端的注册状态包括:若心跳应答失败,则所述终端判断所述终端与服务器之间的链路异常。
4.根据权利要求1所述的通信链路和服务可用性的检测方法,其特征在于:所述心跳为业务层心跳。
5.根据权利要求4所述的通信链路和服务可用性的检测方法,其特征在于:
根据心跳应答的结果,所述终端判断所述终端与服务器之间的注册状态包括:若心跳应答失败,则所述终端判断所述终端注册状态异常。
6.根据权利要求1所述的通信链路和服务可用性的检测方法,其特征在于:
所述终端遍历获取的心跳方式,并从遍历的心跳方式中获得活动的心跳方式具体为:
所述终端遍历获取的心跳方式,并根据遍历的心跳方式,向服务器发送与遍历的心跳方式对应的心跳,
所述终端获取与遍历的心跳方式对应的心跳应答结果,
若与遍历的心跳方式对应的心跳应答成功,则所述终端将与该心跳应答成功对应的遍历的心跳方式作为活动的心跳方式;
若与获取的心跳方式对应的心跳应答失败,则所述终端将与该心跳应答失败对应的遍历的心跳方式作为非活动的心跳方式。
7.一种基于SIP的终端,其特征在于:包括:
发送模块,用于向服务器发送心跳;
第一获取模块,用于在发送模块向服务器发送心跳之后,向服务器获取心跳应答;
处理模块,用于在第一获取模块向服务器获取心跳应答之后,根据心跳应答的结果,判断终端的注册状态;
所述终端还包括:第二获取模块和映射模块,所述第二获取模块用于在所述发送模块向服务器发送心跳之前,获取所述服务器支持的心跳方式,所述映射模块用于在获取模块获取到所述服务器支持的心跳方式之后,建立服务器与心跳方式的映射表,并遍历第二获取模块获取的心跳方式,从遍历的心跳方式中获得活动的心跳方式;其中,所述映射表包括服务器所支持的心跳方式集,所述心跳方式集包含服务器支持的不同类型的心跳,所述不同类型的心跳包括链路层心跳和业务层心跳,每种类型的心跳对应一个心跳列表,所述心跳列表包含一种类型的心跳的数量和节点,所述节点包含心跳方式和状态信息;
所述发送模块进一步用于根据所述映射模块获得的活动的心跳方式,向服务器发送与所述活动的心跳方式对应的心跳。
8.根据权利要求7所述的基于SIP的终端,其特征在于:
所述发送模块进一步用于向服务器发送链路层心跳,
所述第一获取模块进一步用于在所述发送模块向服务器发送链路层心跳之后,向服务器获取链路层心跳应答;
所述处理模块进一步用于根据所述第一获取模块获取链路层心跳应答失败的结果,判断所述终端与服务器之间的链路异常。
9.根据权利要求8所述的基于SIP的终端,其特征在于:
所述发送模块进一步用于向服务器发送业务层心跳,
所述第一获取模块进一步用于在所述发送模块向服务器发送业务层心跳之后,向服务器获取业务层心跳应答;
所述处理模块进一步用于根据所述第一获取模块获取业务层心跳应答失败的结果,判断所述终端注册状态异常。
10.根据权利要求7所述的基于SIP的终端,其特征在于:
所述发送模块进一步用于在映射模块遍历获取的心跳方式之后,根据遍历的心跳方式,向服务器发送与遍历的心跳方式对应的心跳;
所述第一获取模块进一步用于在所述发送模块向服务器发送与遍历的心跳方式对应的心跳之后,获取与遍历的心跳方式对应的心跳应答结果;
映射模块进一步用于若第一获取模块获取与遍历的心跳方式对应的心跳应答成功,将与该心跳应答成功对应的遍历的心跳方式作为活动的心跳方式;若第一获取模块与遍历的心跳方式对应的心跳应答失败,将与该心跳应答失败对应的遍历的心跳方式作为非活动的心跳方式。
11.一种基于SIP的语音通信系统,其特征在于:包括如权利要求7所述的基于SIP的终端和与所述终端连接的服务器。
通信链路和服务可用性的检测方法、终端及系统\n技术领域\n[0001] 本发明涉及通信技术领域,特别是涉及一种通信链路和服务可用性的检测方法、终端及系统。\n背景技术\n[0002] 随着网络语音通信(VOIP,Voice over Internet Protocol)的逐渐推广,会话初始化协议(SIP,Session Initiation Protocol)在VOIP应用中的优势也越来越明显。但在实际应用中,由于SIP协议并没有提供终端和注册服务器之间的通信链路和服务可用性的检测机制,当通信链路或服务不可用时,将导致注册状态的改变,而终端需要通过SIP协议中的注册刷新机制才能得知注册状态改变,但在VOIP系统实际部署使用中,注册刷新的周期时间长(如:3600秒),导致终端无法及时获知注册状态改变,从而不能够及时做出相应的处理,一旦注册状态异常,将严重影响系统的实时性和可用性。\n发明内容\n[0003] 本发明实施例提供一种通信链路和服务可用性的检测方法、终端及系统,能够及时检测通信链路和服务可用性,判断注册状态。\n[0004] 一种通信链路和服务可用性的检测方法,包括:\n[0005] 基于会话初始化协议SIP的终端向服务器发送心跳,\n[0006] 所述终端向服务器获取心跳应答,\n[0007] 根据心跳应答的结果,所述终端判断所述终端与服务器之间的注册状态。\n[0008] 一种基于SIP的终端,包括:\n[0009] 发送模块,用于向服务器发送心跳;\n[0010] 第一获取模块,用于在发送模块向服务器发送心跳之后,向服务器获取心跳应答;\n[0011] 处理模块,用于在第一获取模块向服务器获取心跳应答之后,根据心跳应答的结果,判断终端的注册状态。\n[0012] 一种基于SIP的语音通信系统,包括如权利要求11所述的基于SIP的终端和与所述终端连接的服务器。\n[0013] 本发明实施例的优点在于通过终端向服务器发送心跳包来检测通信链路和服务可用性是否正常,从而及时获知终端的注册状态,而不必等待注册刷新来获知注册状态,提高了语音通话系统的实时性和可用性。\n附图说明\n[0014] 图1是实施例1一种通信链路和服务可用性的检测方法流程示意图;\n[0015] 图2是实施例2一种通信链路和服务可用性的检测方法流程示意图;\n[0016] 图3是实施例3一种通信链路和服务可用性的检测方法流程示意图;\n[0017] 图4是实施例4一种通信链路和服务可用性的检测方法流程示意图;\n[0018] 图5是实施例5一种通信链路和服务可用性的检测方法流程示意图;\n[0019] 图6是实施例6一种基于SIP的终端;\n[0020] 图7是实施例7一种基于SIP的终端;\n[0021] 图8是实施例8一种基于SIP的语音通信系统。\n具体实施方式\n[0022] 本发明实施例提供一种通信链路和服务可用性的检测方法,以下进行详细说明。\n[0023] 实施例1\n[0024] 如图1所示,一种通信链路和服务可用性的检测方法,包括:\n[0025] 101、基于SIP的终端向服务器发送心跳。\n[0026] 102、所述终端向服务器获取心跳应答。\n[0027] 103、根据心跳应答的结果,所述终端判断所述终端与服务器之间的注册状态。\n[0028] 本实施例是基于SIP的终端可以通过向服务器定时发送心跳来检测终端与服务器是否连接正常,注册状态是否改变。定时检测时间可以自由设置。终端向服务器发送心跳可以具体为终端以指数倍增或固定时间超时重发指定次数算法的方式向服务器发送心跳包。\n[0029] 实施例2\n[0030] 如图2所示,一种通信链路和服务可用性的检测方法,包括:\n[0031] 201、基于会话初始化协议SIP的终端向服务器发送链路层心跳。\n[0032] 202、所述终端向服务器获取链路层心跳应答。\n[0033] 203、若链路层心跳应答失败,所述终端判断所述终端与服务器之间的链路异常。\n[0034] 当终端检测出终端与服务器之间的链路异常,可以及时作出相应的处理。\n[0035] 实施例3\n[0036] 如图3所示,一种通信链路和服务可用性的检测方法,包括:\n[0037] 301、基于会话初始化协议SIP的终端向服务器发送业务层心跳。\n[0038] 302、所述终端向服务器获取业务层心跳应答。\n[0039] 303、若业务层心跳应答失败,所述终端判断所述终端注册状态异常。\n[0040] 当终端检测出终端与服务器之间的注册状态异常,可以及时作出相应的处理。\n[0041] 实施例4\n[0042] 如图4所示,一种通信链路和服务可用性的检测方法,包括:\n[0043] 基于会话初始化协议SIP的终端向服务器发送心跳,该步骤包括:\n[0044] 401、所述终端获取所述服务器支持的心跳方式。\n[0045] 终端可以通过读取配置文件或者直接由外部接口等方式获取服务器所支持的心跳方式,以及获取相应的包格式等信息,包格式信息用于实现心跳包组装和解析接口。\n[0046] 402、所述终端建立服务器与心跳方式的映射表。\n[0047] 所述映射表包括服务器所支持的心跳方式集,所述心跳方式集包含服务器支持的不同类型的心跳,所述不同类型的心跳包括链路层心跳和业务层心跳,每种类型的心跳对应一个心跳列表,所述心跳列表包含一种类型的心跳的数量和节点,所述节点包含心跳方式和状态信息。\n[0048] 具体的,终端初始化内存中的心跳映射表,心跳映射表存储注册服务器IP/域名、端口及其所支持的心跳方式集,心跳方式集包含了该注册服务器所支持的所有类型的心跳列表,每种类型的心跳对应一个心跳列表,每个心跳列表包含一种类型心跳的总数量及心跳节点,节点包括心跳方式和状态信息。心跳的类型包括链路层心跳和业务层心跳;数量信息表明服务器支持的该类心跳方式的数量;状态信息描述每个心跳的当前状态,包括:支持(supported)、活动(active)、非活动(inactive);初始化心跳映射表时,状态信息都为supported。当然,可以增加心跳类型来支持更多的心跳方式。\n[0049] 403、终端遍历获取的心跳方式,从遍历的心跳方式中获得活动的心跳方式,并根据所述活动的心跳方式,向服务器发送与所述活动的心跳方式对应的心跳。\n[0050] 活动的心跳方式是服务器支持的且正在应用的心跳方式,而非活动的心跳方式是服务器支持的但当前并不应用的心跳方式。通过遍历获取的心跳方式,终端可以找出当前活跃的心跳方式,并作为定时检测的心跳方式,以保证检测的准确性。\n[0051] 优选的,所述终端遍历获取的心跳方式,从遍历的心跳方式中获得活动的心跳方式具体为:所述终端遍历获取的心跳方式,并根据遍历的心跳方式,向服务器发送与遍历的心跳方式对应的心跳,所述终端获取与遍历的心跳方式对应的心跳应答结果。若与遍历的心跳方式对应的心跳应答成功,则所述终端将与该心跳应答成功对应的遍历的心跳方式作为活动的心跳方式;若与获取的心跳方式对应的心跳应答失败,则所述终端将与该心跳应答失败对应的遍历的心跳方式作为非活动的心跳方式。所述终端将与该心跳应答成功对应的遍历的心跳方式作为活动的心跳方式还包括:所述终端将活动的心跳方式置于心跳集的前端。这样在定时检测过程中,按次序选择心跳集中的心跳方式,将活动的心跳方式优先作为检测的心跳方式,有利于保证检测效率。所述终端将与该心跳应答失败对应的遍历的心跳方式作为非活动的心跳方式还包括:所述终端将不活动的心跳方式置于心跳集的后端。\n换而言之,不活动的心跳方式将置于活动的心跳方式之后,在定时检测过程中,按次序选择心跳集中的心跳方式,不活动的心跳方式只有在活动的心跳方式作为检测的心跳方式失效的情况下,才作为检测的心跳方式。\n[0052] 优选的,所述终端根据所述活动的心跳方式,向服务器发送与所述活动的心跳方式对应的心跳包括:当终端处于已注册状态时,终端将心跳集的第一个活动的链路层心跳方式作为链路检测的心跳方式,向服务器发送与所述第一个活动的链路层心跳方式对应的心跳,和/或将心跳集的第一个活动的业务层心跳方式作为服务有效性检测的心跳方式,向服务器发送与所述第一个活动的业务层心跳方式对应的心跳。选择最新测试过的活动心跳方式作为检测的心跳方式,有利于提高检测效率。\n[0053] 需要说明是,若终端已经处于注册状态,检查注册服务器的地址/端口信息是否和终端中的心跳映射表中的注册服务器信息一致,如果不一致,需要重新获取注册服务器支持的心跳方式,更新心跳映射表。\n[0054] 404、所述终端向服务器获取心跳应答。\n[0055] 在终端向服务器发送心跳后,若服务器接收到该心跳,则将给终端回复一个应答。\n[0056] 405、根据心跳应答的结果,所述终端判断所述终端与服务器之间的注册状态。\n[0057] 若终端在服务器上的注册状态已经改变(如注册失败)或者通信链路异常,则服务器将无法向终端返回应答,则终端将出现应答超时,即心跳应答失败。因此,若心跳应答失败,即表明终端注册失败或通信链路异常,应当及时作出相应的处理。\n[0058] 需要说明的是,在链路层心跳检测正常情况下,终端可以选取活动的业务层心跳,并向服务器发送,以检测终端注册状态是否正常。\n[0059] 以下再举一实施例进行详细说明。\n[0060] 实施例5\n[0061] 一种通信链路和服务可用性的检测方法,包括:\n[0062] 501、终端获取注册状态。\n[0063] 502、若终端已经注册,终端检查服务器信息是否有变化。\n[0064] 503、若有变化,则获取服务器信息,并判断服务器信息是否与心跳映射表中服务器信息匹配。\n[0065] 504、如不匹配,终端需要获取注册服务器所支持的心跳方式及其心跳包格式等信息,更新心跳映射表。\n[0066] 505、依次遍历心跳方式集中的各种类型的心跳方式,组装对应的心跳包。\n[0067] 506、判断是否已经完成遍历。\n[0068] 507、若未完成遍历,采用指数倍增或固定时间超时重发指定次数算法向当前注册服务器发送已经组装的心跳包。\n[0069] 508、再判断心跳应答是否超时。\n[0070] 509、如果超时,则将对应的心跳方式设为inactive的心跳方式,并将节点向本心跳集后端移动,并返回步骤505。\n[0071] 510、如果没有超时,将对应的心跳方式设为active,并将节点向本心跳集前端移动,并返回步骤505。\n[0072] 511、若步骤506判断结果为完成遍历,则取一个链路层心跳方式中的第一个active方式组包。\n[0073] 512、以指数倍增或固定时间超时重发指定次数算法向当前注册服务器发送心跳包。\n[0074] 513、判断链路层心跳应答是否正常。\n[0075] 514、若链路层心跳应答失败,则表明链路异常,应及时处理,如:立即发送注册请求、注册服务器切换等处理。\n[0076] 同样的,515、若步骤506判断结果为完成遍历,则取一个业务层心跳方式中的第一个active方式组包。\n[0077] 516、以指数倍增或固定时间超时重发指定次数算法向当前注册服务器发送心跳包。\n[0078] 517、判断业务层心跳应答是否正常。\n[0079] 518、若业务层心跳应答失败,则表明注册状态异常,应及时处理。\n[0080] 当然,若步骤513判断链路层心跳应答正常,可以继续执行步骤515。\n[0081] 若步骤502终端检查服务器信息没有变化,则可以直接进行步骤511或515。\n[0082] 本发明还提供了与上述方法相对应的一种基于SIP的终端,以下进行详细说明。\n[0083] 实施例6\n[0084] 如图6所示,一种基于SIP的终端,包括发送模块601、第一获取模块602和处理模块603。发送模块601用于向服务器发送心跳;第一获取模块602用于在发送模块向服务器发送心跳之后,向服务器获取心跳应答;处理模块603用于在第一获取模块向服务器获取心跳应答之后,根据心跳应答的结果,判断终端的注册状态。\n[0085] 发送模块向服务器发送心跳之后,第一获取模块向服务器获取心跳应答,处理模块根据心跳应答的结果,如应答正常或者应答超时,判断终端的注册状态。\n[0086] 实施例7\n[0087] 如图7所示,一种基于SIP的终端,包括发送模块701、第一获取模块702和处理模块703。发送模块701用于向服务器发送心跳;第一获取模块702用于在发送模块701向服务器发送心跳之后,向服务器获取心跳应答;处理模块703用于在第一获取模块702向服务器获取心跳应答之后,根据心跳应答的结果,判断终端的注册状态。\n[0088] 所述发送模块701进一步用于向服务器发送链路层心跳。所述第一获取模块702进一步用于在所述发送模块701向服务器发送链路层心跳之后,向服务器获取链路层心跳应答;所述处理模块703进一步用于根据所述第一获取模块702获取链路层心跳应答失败的结果,判断所述终端与服务器之间的链路异常。\n[0089] 优选的,所述发送模块701进一步用于向服务器发送业务层心跳。所述第一获取模块702进一步用于在所述发送模块701向服务器发送业务层心跳之后,向服务器获取业务层心跳应答;所述处理模块703进一步用于根据所述第一获取模块702获取业务层心跳应答失败的结果,判断所述终端注册状态异常。\n[0090] 优选的,所述终端还包括第二获取模块704和映射模块705。所述第二获取模块\n704用于在所述发送模块701向服务器发送心跳之前,获取所述服务器支持的心跳方式。所述映射模块705用于在第二获取模块704获取到所述服务器支持的心跳方式之后,建立服务器与心跳方式的映射表,并遍历第二获取模块704获取的心跳方式,从遍历的心跳方式中获得活动的心跳方式。所述发送模块701进一步用于根据所述映射模块705获得的活动的心跳方式,向服务器发送与所述活动的心跳方式对应的心跳。\n[0091] 终端通过第二获取模块704和映射模块705来获得可以用于检测的心跳方式。\n[0092] 优选的,所述映射表包括服务器所支持的心跳方式集,所述心跳方式集包含服务器支持的不同类型的心跳,所述不同类型的心跳包括链路层心跳和业务层心跳,每种类型的心跳对应一个心跳列表,所述心跳列表包含一种类型的心跳的数量和节点,所述节点包含心跳方式和状态信息。\n[0093] 优选的,所述发送模块701进一步用于在映射模块705遍历获取的心跳方式之后,根据遍历的心跳方式,向服务器发送与遍历的心跳方式对应的心跳。\n[0094] 所述第一获取模块702进一步用于在所述发送模块701向服务器发送与遍历的心跳方式对应的心跳之后,获取与遍历的心跳方式对应的心跳应答结果。\n[0095] 映射模块705进一步用于若第一获取模块702获取与遍历的心跳方式对应的心跳应答成功,将与该心跳应答成功对应的遍历的心跳方式作为活动的心跳方式;若第一获取模块702与遍历的心跳方式对应的心跳应答失败,将与该心跳应答失败对应的遍历的心跳方式作为非活动的心跳方式。\n[0096] 优选的,所述映射模块705还包括排序子模块,所述排序子模块用于在映射模块\n705将与该心跳应答成功对应的遍历的心跳方式作为活动的心跳方式及将与该心跳应答失败对应的遍历的心跳方式作为非活动的心跳方式之后,将活动的心跳方式置于心跳集的前端,将不活动的心跳方式置于心跳集的后端。\n[0097] 优选的,所述终端还包括注册模块,所述注册模块用于向服务器注册。所述发送模块701还用于在注册模块已向服务器注册状态下,将心跳集的第一个活动的链路层心跳方式作为链路检测的心跳方式,向服务器发送与所述第一个活动的链路层心跳方式对应的心跳,和/或将心跳集的第一个活动的业务层心跳方式作为服务有效性检测的心跳方式,向服务器发送与所述第一个活动的业务层心跳方式对应的心跳。\n[0098] 实施例8\n[0099] 如图8所示,本发明提供了一种基于SIP的语音通信系统,包括如上所述的基于SIP的终端801和与所述终端连接的服务器802。\n[0100] 需要指出的是,上述的心跳类型不限于链路层心跳和业务层心跳,还可以是其他类型的心跳。业务层心跳又可以包括基于SIP选项(Options)方法的业务层心跳和基于SIP探测(Ping)方法的业务层心跳。\n[0101] 以上对本发明实施例所提供的一种通信链路和服务可用性的检测方法、终端及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
法律信息
- 2014-11-05
- 2012-09-19
实质审查的生效
IPC(主分类): H04L 12/26
专利申请号: 201210066316.1
申请日: 2012.03.14
- 2012-07-18
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-09-14
|
2011-04-20
| | |
2
| |
2008-04-09
|
2007-10-30
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |