具体实施方式
针对现有技术存在的上述问题,本发明实施例针对应用系统的各种组网方式建立简单的处理模型,并通过管理服务器分析其它业务设备(包括业务源端、客户端等设备)发送给管理服务器的注册信息来确定业务设备相对于管理服务器的组网方式,从而根据组网方式的不同采用相应的处理模型进行信令通信和业务流转发,从而实现管理服务器通过简化的方式,统一管理应用设备间穿越NAT设备的情况,最终实现应用系统业务穿越各类NAT设备的方案。
下面结合附图对本发明实施例进行详细描述。
实施例一
本实施例描述了应用系统组网中没有转发服务器,或者即使有转发服务器,但业务流传输过程也不使用转发服务器进行转发的实现方案。
本实施例的组网中,管理服务器上针对其它业务设备(包括业务源端、客户端等设备)相对于该管理服务器的各种相对位置关系,设置有对应的业务处理模式,管理服务器通过分析所述其它业务设备发送给管理服务器的注册信息,来确定所述业务设备相对于管理服务器的位置关系,从而在接收到客户端的业务请求后,根据确定出的相对位置关系采用对应的业务处理模式进行处理。
为保证所述其它业务设备都能将注册信息发送到管理服务器,应保证所述其它业务设备到管理服务器的通信可达,因此将管理服务器设置在公网侧。也可将管理服务器设置在第一级私网(即管理服务器和公网间只有一个NAT设备),且管理服务器与公网间的NAT设备上配置内部服务器特性(如在NAT设备上通过静态配置方式为其它业务设备开放相应端口,以使所述其它业务设备可以与该管理服务器通信)。
业务设备在接入应用系统时,首先要向该应用系统中的管理服务器进行注册。本发明实施例中,管理服务器除了进行常规注册处理,还要根据业务设备发送的注册报文确定该业务设备相对该管理服务器的位置(即组网方式),并进行记录,以便后续接收到业务设备发送的业务请求时,根据该业务设备与该管理服务器的相对位置,采用相应的处理模型响应业务设备的业务请求。
业务设备的注册流程可如图3所示,包括:
步骤301,业务设备向管理服务器发送注册报文。
其中,注册报文的IP头中携带有源IP地址和目的IP地址,注册报文载荷部分(如SIP(Session Initiation Protocol,初始会话协议)部分)也携带有源IP地址和目的IP地址。注册报文IP头中携带的IP地址会因该注册报文穿越NAT设备而改变,注册报文载荷部分携带的IP地址则不会因该注册报文穿越NAT设备而改变。注册报文载荷部分携带的源IP地址为注册报文发起端的IP地址,目的地址为管理服务器的IP地址。
步骤302,管理服务器接收到该业务设备的注册报文后,对该业务设备进行注册处理,确定该业务设备与该管理服务器间的相对位置关系,并记录确定出的相对位置关系。
其中,管理服务器基于注册报文IP头中携带的IP地址会因该注册报文穿越NAT设备而改变,而注册报文载荷部分携带的IP地址则不会因该注册报文穿越NAT设备而改变的特性,通过比较注册报文的IP头中携带的IP地址,以及该注册报文载荷部分携带的IP地址,来确定发起注册的业务设备与管理服务器间的相对位置。
步骤303,管理服务器向业务设备返回注册响应报文。该步骤可选。
下面结合图4至图7所示的管理服务器和业务设备间的位置关系,详细说明上述流程步骤302中,管理服务器根据注册报文确定业务设备与管理服务器的相对位置的具体实现过程。
如图4所示,当业务设备处在NAT2的私网侧,管理服务器处在NAT1的私网侧,中间间隔了一个公网的情况下,业务设备向管理服务器注册时,注册报文的报文头中携带的源IP地址为自己的私网地址10.0.0.2,目的IP地址为NAT1的公网地址20.0.0.192;注册报文载荷的SIP协议部分携带的源IP地址与报文头源IP地址相同,目的IP地址与报文头目的IP地址相同。该注册报文经过NAT2时,报文头的源IP地址会被NAT2更改为该NAT2的公网IP地址20.0.0.10,目的IP地址保持不变。该注册报文经过NAT1时,报文头的目的IP地址会被NAT1更改为管理服务器的私网IP地址192.0.0.2,源IP地址保持不变。管理服务器在收到该注册报文后,发现报文头的源IP地址和目的IP地址相对于载荷部分的源IP地址和目的IP地址都发生了改变,则说明业务设备和管理服务器在不同的私网,两者相隔着公网。为便于说明,本发明实施例将与管理服务器具有上述相对位置关系的业务设备称为异对象,对象级别为0。
如图5a所示,当业务设备处在NAT设备的私网侧,管理服务器处在NAT设备的公网侧的情况下,业务设备向管理服务器注册时,注册报文的报文头中携带的源IP地址为自己的私网地址10.0.0.2,目的IP地址为管理服务器的公网地址20.0.0.2;注册报文载荷的SIP协议部分携带的源IP地址与报文头源IP地址相同,目的IP地址与报文头目的IP地址相同。经过NAT设备时,报文头的源IP地址会被NAT设备更改为该NAT的公网IP地址20.0.0.10,目的IP地址保持不变。管理服务器接收到该注册报文后,发现报文头的源IP地址与报文载荷部分的源IP地址相比发生变化(从私网地址变为公网地址),而目的IP地址不变(仍是公网地址),则说明该业务设备相对于管理服务器处于一级NAT设备的私网侧。同理,如图5b所示,当业务设备相对于管理服务器处于多级NAT设备的私网侧时,其注册报文的地址也具有上述变化规律。为便于说明,本发明实施例将与管理服务器具有上述相对位置关系的业务设备称为内对象,对象级别为1。
当业务设备和管理服务器处于同一网络,如同时处在同一公网或私网的情况下,业务设备向管理服务器注册时,注册报文不经过NAT设备,因此报文头的IP地址不做更改。管理服务器接收到注册报文后,发现报文头的源IP地址和目的IP地址与载荷部分携带的源IP地址和目的IP地址都没变,则说明该业务设备相对于管理服务器处于同一网络。为便于说明,本发明实施例将与管理服务器具有上述相对位置关系的业务设备称为同对象,对象级别为2。
如图6所示,当业务设备处在NAT设备的公网侧,管理服务器处在NAT的私网侧的情况下,业务设备向管理服务器注册时,注册报文的报文头携带的源IP地址为自己的公网地址20.0.0.2,目的IP地址为NAT设备的公网地址20.0.0.192;注册报文载荷的SIP协议部分携带的源IP地址与报文头源IP地址相同,目的IP地址与报文头目的IP地址相同。经过NAT设备时,报文头的目的IP地址会被NAT设备更改为管理服务器的私网IP地址192.0.0.2。管理服务器接收到该注册消息时,发现报文头的源IP地址与载荷部分携带的源IP地址相比没变(均为公网地址),而报文头的目的IP地址与载荷部分携带的目的IP地址相比发生变化(从公网地址变为私网地址),则说明该业务设备相对于管理服务器处于外网(即公网)。为便于说明,本发明实施例将与管理服务器具有上述位置关系的业务设备称为外对象,对象级别为3。
如图7所示,当管理服务器和业务设备分别位于不同NAT设备的公网侧,中间隔了一个私网的情况下,如果两个NAT设备侧的公网路由可达,则业务设备和管理服务器间可以直接用公网地址进行通信,注册报文的报文头的源IP地址和目的IP地址与载荷部分携带的源IP地址和目的IP地址相比均保持不变,因此可将这种相对位置关系归为业务设备相对于管理服务器处于同一网络的情况。为便于说明,本发明实施例将与管理服务器具有上述相对位置关系的业务设备称为同对象,对象级别为2。
管理服务器在接收到客户端向管理服务器请求业务源端的业务资源的请求后,根据在该客户端和业务源端注册时确定出的该客户端和业务源端与该管理服务器的相对位置,采用相应处理模型响应该请求的流程,可如图8所示,包括:
步骤801,客户端向管理服务器请求业务源端的业务资源。
步骤802,管理服务器指示对应的业务源端准备好相应的业务资源。
步骤803,管理服务器根据业务源端与管理服务器的相对位置,以及客户端与管理服务器的相对位置,确定该客户端和业务源端中发起连接建立过程的一方,然后通知该发起方向对方发起连接建立过程(如建立TCP(TransportControl Protocol,传输控制协议)连接)。客户端和业务源端建立连接的过程中,所经过的NAT设备建立客户端与业务源端之间的地址映射关系。
具体实施时,管理服务器上可预先建立关于业务设备位置信息的位置数据库,当管理服务器在接收到业务设备发送的注册信息,并确定出业务设备与管理服务器的相对位置关系后,在该数据库中记录业务设备的对象类型或/和对象级别,用以标识相对位置关系。当客户端发起业务申请时,管理服务器可通过查询该位置数据库,根据该业务所涉及的客户端与业务源端的对象类型或对象级别,来决定业务连接建立过程的发起方,然后通知该发起方向对端发起连接建立过程。
步骤804,当客户端和业务源端之间建立连接后,业务源端通过该连接发送相应业务流到该客户端。其中,当业务源端发送的数据流经过NAT设备时,NAT设备根据建立的地址映射关系转发所述业务流。
上述流程中,管理服务器选择业务连接建立发起方的基本原则是:
(1)在管理服务器根据客户端与管理服务器的相对位置以及业务源端与管理服务器的相对位置,判断客户端和业务源端分别位于公网和私网的情况下,管理服务器选择位于私网的业务设备作为业务连接建立过程的发起方。由于NAT设备通常允许私网侧无阻塞的向公网侧发起连接,而公网侧向私网侧发起连接则需要依靠其他技术,如需要NAT设备支持ALG(Application LayerGateway,应用层网关)功能,因此让发起连接的业务设备相对于被连接的业务设备处于NAT设备的私网侧,可以使连接穿越NAT设备,NAT设备建立业务设备之间的地址映射关系,保证后续业务流能够穿越NAT设备,正确到达业务对端。
(2)在管理服务器根据客户端与管理服务器的相对位置以及业务源端与管理服务器的相对位置,判断客户端和业务源端均位于公网的情况下,由于该种情况的组网中,在网络无异常的情况下,客户端和业务源端能够互通,因此管理服务器可选择其中的任意一方作为业务连接建立过程的发起方,这样可以使NAT设备建立业务设备之间的地址映射关系,保证后续业务流能够穿越NAT设备,正确到达业务对端。优选的,管理服务器可在确认该客户端和业务源端能够互通的情况下,选择其中的任意一方作为业务连接建立过程的发起方。
(3)在管理服务器根据客户端与管理服务器的相对位置以及业务源端与管理服务器的相对位置,判断客户端和业务源端均位于私网的情况下,且均位于管理服务器所在网络的同一NAT设备的同一侧(即不包括客户端和业务源端分别位于管理服务器两侧的私网)的组网情况,由于该种情况的组网中,在网络无异常的情况下,客户端和业务源端能够互通,因此管理服务器可选择其中的任意一方作为业务连接建立过程的发起方,这样可以使NAT设备建立业务设备之间的地址映射关系,保证后续业务流能够穿越NAT设备,正确到达业务对端。优选的,管理服务器可在确认该客户端和业务源端能够互通的情况下,选择其中的任意一方作为业务连接建立过程的发起方。
具体实施时,由于业务设备的对象级别可标识该业务设备与管理服务器的相对位置,因此管理服务器可根据与建立业务连接的两个业务设备的对象级别,选择业务连接建立的发起方。即,在客户端和业务源端的对象级别不同的情况下,管理服务器选择该客户端和该业务源端中对象级别较低的业务设备向对象级别较高的业务设备发起连接建立过程;在客户端和业务源端的对象级别相同的情况下,如果该客户端和业务源端能够互通,则管理服务器选择该客户端和业务源端之中的任意一方向对方发起连接建立过程。
具体的,当客户端和业务源端的对象级别不同时,客户端和业务源端的对象级别的组合情况可包括:1对2、2对3、1对3、0对3、0对1、0对2六种情形(其中,客户端和业务源端的对象级别可以互置,比如1对2,可以表示为客户端的对象级别为1,业务源端的对象级别为2,也可以表示为客户端的对象级别为2,业务源端的对象级别为1)。针对1对2、2对3、1对3、0对3这些组网情况,管理服务器通知低级别业务设备(数字越小,对象级别越低)向高级别业务设备发起连接请求,具体如图9至图13所示;针对0对1、0对2的组网情况,如图14至图15所示,需要转发服务器进行业务流转发,具体请见后续实施例二的描述。
如图9所示,为1对2的组网情况。管理服务器在公网侧,业务设备1相对于管理服务器处于一级NAT的私网侧(包含业务设备1相对于管理服务器处于多级NAT的私网侧的情况),对象级别为1;业务设备2与管理服务器在同一个公网侧,对象级别为2。此种组网情况下,管理服务器通知业务设备1向业务设备2发起连接请求。
如图10所示,为2对3的组网情况。管理服务器在第1级NAT私网侧,业务设备1在与管理服务器处于同一级私网侧,对象级别为2;业务设备2相对于管理设备处于公网侧,对象级别为3。此种组网情况下,管理服务器通知业务设备1向业务设备2发起连接请求。
如图11所示,为1对3的组网情况。管理服务器在第1级NAT私网侧,业务设备1相对于管理服务器处于N(N>1)级NAT设备的私网侧,对象级别为1;业务设备2相对于管理设备处于公网侧,对象级别为3。此种组网情况下,管理服务器通知业务设备1向业务设备2发起连接请求。
如图12所示,为0对3的组网情况。管理服务器在第1级NAT私网侧,业务设备1在与管理服务器隔着一个公网,并在另一个NAT设备的私网侧(包含多级NAT设备的情况),对象级别为0;业务设备2在管理服务器的另外一个公网侧,对象级别为3。此种组网情况下,管理服务器通知业务设备1向业务设备2发起连接请求。
如图13所示,为另一种0对3的组网情况。管理服务器在第1级NAT私网侧,业务设备1在与管理服务器隔着一个公网,在另一个NAT设备的私网侧(包含多级NAT设备的情况),对象级别为0;业务设备2在业务设备1和管理服务器之间的公网侧,对象级别为3。此种组网情况下,管理服务器通知业务设备1向业务设备2发起连接请求。
如图14所示,为0对1的组网情况。管理服务器和转发服务器在第1级NAT私网侧,业务设备1与管理服务器隔着一个公网、在另一个NAT的私网侧(包含多级NAT),对象级别为0;业务设备2在管理服务器的另外N级私网侧(N大于1),对象级别为1。
如图15所示,为0对2的组网情况。管理服务器和转发服务器在第1级NAT私网侧,业务设备1与管理服务器隔着一个公网、在另一个NAT的私网侧(包含多级NAT),对象级别为0;业务设备2与管理服务器在同一级私网侧,对象级别2。
当客户端和业务源端的对象级别相同时,客户端和业务源端的对象级别的组合情况可包括:0对0、1对1、2对2、3对3四种情形(其中,客户端和业务源端的对象级别可以互置)。其中2对2的组网情况下,可按照现有方式进行业务处理,因此以下就0对0、1对1、3对3的组网情况分别进行说明。
图16、图17和图18分别示出了0对0的三种组网结构,图19、图20和图21分别示出了三种1对1的组网结构,图22、图23分别示出了两种3对3的组网结构。针对0对0、1对1的组网结构,管理服务器选择连接建立的发起方业务设备的过程可如图24所示,针对3对3的组网结构,管理服务器选中连接建立的发起方业务设备的过程可如图25所示。
参见图24,在客户端和业务源端为“0对0”或者“1对1”组网情况下时,管理服务器选择连接建立的发起方业务设备流程,可包括:
步骤2401,管理服务器接收到客户端请求业务源端的业务资源的请求后,通过查询该客户端和业务源端的对象级别,确定出该客户端和业务源端的对象级别均为0或均为1时,判断该客户端和业务源端的注册报文的报文头源IP地址是否相同(管理服务器在接收到业务设备的注册报文后,可保存该注册报文的报文头源IP地址),如果相同,则转入步骤2402,否则转入步骤2404。
该步骤中,管理服务器通过判断该客户端和业务源端的注册报文的报文头源IP地址是否相同,可以判断出该客户端和业务源端是否处于NAT设备中的同一侧。若相同,则说明该客户端和业务源端处于NAT设备的同一侧,如图17、图18、图20或图21所示。此种情况下,若网络无异常,该客户端和业务源端之间可互通。
步骤2402,管理服务器检测该客户端和业务源端之间是否互通,如果互通,则转入步骤2403,否则转入步骤2404。
该步骤中,管理服务器可通过多种方式检测该客户端和业务源端之间是否能够互通。例如,可分别通知客户端设备和业务源端设备向对端设备发送ICMP(Internet Control Message Protocol,Internet控制报文协议)回送请求报文(或其它类似检测报文),客户端设备和业务源端设备在收到对方发送的ICMP回送请求报文后,向管理服务器返回回送应答报文,以表示信息可达。如果在设定长时间内(比如3秒钟),管理服务器接收到业务设备发送的回送应答报文(例如通知客户端向业务源端发送ICMP回送请求报文后从该业务源端接收到回送应答报文),则认为客户端和业务源端之间能够直接通信。
步骤2403,管理服务器选择该客户端和业务源端中的任意一方作为连接建立过程的发起方业务设备。优选的,管理服务器收到第一个回送应答报文后,选择发送该回送应答报文的业务设备作为连接建立过程的发起方业务设备。
步骤2404,管理服务器向发起业务请求的客户端返回失败响应。
参见图25,在客户端和业务源端为“3对3”组网情况下时(如图22或图23所示),管理服务器选择连接建立的发起方业务设备流程,可包括:
步骤2501,管理服务器接收到客户端请求业务源端的业务资源的请求后,通过查询该客户端和业务源端的对象级别,确定出该客户端和业务源端的对象级别均为3时,管理服务器检测该客户端和业务源端之间是否互通,如果互通,则转入步骤2502,否则转入步骤2503。
该步骤中,管理服务器可采用图24所示流程中所采用的方式,检测该客户端和业务源端之间是否能够互通。
步骤2502,管理服务器选择该客户端和业务源端中的任意一方作为连接建立过程的发起方业务设备。优选的,管理服务器收到第一个回送应答报文后,选择发送该回送应答报文的业务设备作为连接建立过程的发起方业务设备。
步骤2503,管理服务器向发起业务请求的客户端返回失败响应。
实施例二
本实施例描述了应用系统组网中设置有转发服务器时的业务流传输实现方案。
本发明实施例的组网中,管理服务器设置在公网侧,或者管理服务器处于私网时,管理服务器应在第一级私网(即管理服务器和公网间只有一个NAT设备),且NAT设备上配置内部服务器特性。
针对需要转发服务器进行中转转发的业务,为保证业务流在需要转发服务器进行转发时,其它业务设备(如客户端、业务源端等)能与转发服务器进行通信,应保证所述其它业务设备到转发服务器通信可达,因此将转发服务器设置在公网侧,或者转发服务器处于私网时,转发服务器应在第一级私网(即转发服务器和公网间只有一个NAT设备),且NAT设备上配置内部服务器特性。
与实施例一相同,业务设备(包括客户端、业务源端、转发服务器等)在接入应用系统时,首先要向应用系统中的管理服务器进行注册。管理服务器在注册过程中,根据注册报文确定出业务设备与管理服务器间的相对位置关系的方式以及相对位置关系的定义(即业务设备的对象类型以及对象级别)与实施例一相同,在此不再赘述。
按照实施例一中针对业务设备与管理服务器相对位置关系所定义的对象类型和对象级别,本实施例中要求转发服务器相对于管理服务器的对象级别为2或者3,或者当应用网络中存在多个转发服务器时,管理服务器需要选择对象级别为2或者3的转发服务器进行业务转发,而不选用对象级别为0或者1的转发服务器。
基于以上组网情况,管理服务器在接收到客户端向管理服务器请求业务源端的业务资源的请求后响应该请求的流程,可如图26所示,包括:
步骤2601,客户端向管理服务器请求业务源端的业务资源。
步骤2602,管理服务器指示对应的业务源端准备好相应的业务资源。
步骤2603,管理服务器分别通知客户端和业务源端向转发服务器发起接建立过程。客户端和转发服务器之间建立连接的过程中,以及业务源端与转发服务器建立连接的过程中,所经过的NAT设备建立相应的地址映射关系。
其中,由于转发服务器设置在公网,或者设置在第一级私网,并且该第一级私网与公网间的NAT设备上配置了内部服务器特性,因此客户端和业务源端的连接请求均可穿越NAT设备到达转发服务器,因而可以与转发服务器建立业务连接。
步骤2604,业务源端与转发服务器建立连接后,发送相应业务流到转发服务器,转发服务器与客户端建立连接后,将收到的业务流复制转发到请求的客户端。其中,当业务源端发送的数据流或者转发服务器转发的业务流经过NAT设备时,NAT设备根据建立的地址映射关系转发所述业务流。
为了减少转发服务器转发业务流的负担,在客户端和业务源端能够建立连接的情况下,本发明实施例可优先在客户端和业务源端之间建立连接,通过客户端和业务源端之间的业务连接传输业务流,在客户端和业务源端无法建立连接的情况下,再通过转发服务器在客户端和业务源端之间传输业务流。其流程可如图27所示,包括:
步骤2701,客户端向管理服务器请求业务源端的业务资源。
步骤2702,管理服务器指示对应的业务源端准备好相应的业务资源。
步骤2703,管理服务器根据客户端和业务源端与管理服务器的相对位置,判断是否能够在客户端和业务源端之间建立连接;如果判断为是,则转入步骤2704,否则转入步骤2705。
其中,管理服务器在根据客户端和业务源端与管理服务器的相对位置,确定出以下组网情况时,判断需要在客户端与转发服务器,以及业务源端与转发服务器之间分别建立业务连接,针对除以下组网情况之外的组网,管理服务器判断能够在客户端和业务源端之间建立连接。这些需要在客户端与转发服务器,以及业务源端与转发服务器之间分别建立业务连接的组网情况包括:
管理服务器位于一级私网,客户端和业务源端分别位于私网,且位于该一级私网与公网之间的NAT设备的两侧,其中至少有一个业务设备与管理服务器之间间隔有公网;
管理服务器位于公网,客户端和业务源端之一在该公网的一个NAT设备的一级或多级私网侧,另一个位于该公网的另一NAT设备的一级或多级私网侧。
具体实施时,由于业务设备的对象级别可标识该业务设备与管理服务器的相对位置,因此管理服务器可根据客户端和业务源端的对象级别,判断是否能够在客户端和业务源端之间建立连接。
具体的,当客户端和业务源端的对象级别分别为0和1时(包括客户端对象级别为0、业务源端对象级别为1,或者客户端对象级别为1、业务源端对象级别为0的情况),如图14或图15所示,管理服务器判断需要在客户端和转发服务器,以及业务源端和转发服务器之间分别建立业务连接。
当客户端和业务源端的对象级别均为0(如图16、图17、图18)或均为1(如图19、图20、图21)时,其中有些组网中,客户端和业务源端之间可以建立业务连接(如图17、图18、图20、图21),而有些组网中,客户端和业务源端之间不能建立业务连接(如图16、图19)。此种情况下,需要判断客户端和业务源端是否处于NAT设备的同一侧,若是,则客户端和业务源端之间可以建立业务连接(如图17、图18、图20、图21);否则,需要分别在客户端和转发服务器,以及业务源端和转发服务器之间建立业务连接(如图16、图19)。
进一步的,虽然管理服务器判断出客户端和业务源端可以建立业务连接,但在某些组网情况下,有可能客户端和业务源端之间无法互通(客户端和业务源端的对象级别相同时,如图17、图18、图20、图21、图22、图23)。为了保证业务实现,针对这些存在客户端和业务源端无法互通的可能性的组网情况,管理服务器可先检测客户端和业务源端之间能否互通,在能够互通的情况下,选择其中一个设备作为连接建立发起方向对方发起连接建立过程,否则分别通知客户端和业务源端向转发服务器发起连接建立过程。
步骤2704,管理服务器根据客户端和业务源端与管理服务器的相对位置,在该客户端和对应的业务源端之中选择连接建立过程的发起方,并通知该发起方向对方发起连接建立过程。连接建立过程中,所经过的NAT设备建立客户端与业务源端之间的地址映射关系。
其中,管理服务器根据客户端和业务源端与管理服务器的相对位置,在该客户端和对应的业务源端之中选择连接建立过程的发起方的具体实现,可如实施例一所述,在此不再赘述。
步骤2705,管理服务器分别通知客户端和业务源端向转发服务器发起连接建立过程。连接建立过程中,所经过的NAT设备建立客户端与业务源端之间的地址映射关系。
步骤2706,当连接建立完成后,业务源端发送的业务流通过建立起的连接传输到客户端。其中,当业务源端发送的数据流或转发服务器转发的数据流经过NAT设备时,NAT设备根据建立的地址映射关系转发所述业务流。
图28示出了图27所示流程中,当管理服务器判断客户端和业务源端为“0对0”或者“1对1”组网情况下时,管理服务器通知发起方业务设备向对方发起连接建立的流程,包括:
步骤2801,管理服务器接收到客户端请求业务源端的业务资源的请求后,通过查询该客户端和业务源端的对象级别,确定出该客户端和业务源端的对象级别均为0或均为1时,通过比较该客户端和业务源端的注册报文的报文头源IP地址是否相同,判断客户端和业务源端是否处于与管理服务器连接的NAT设备的同一NAT设备侧,如果相同,则转入步骤2802,否则转入步骤2804。
步骤2802,管理服务器检测该客户端和业务源端之间是否互通,如果互通,则转入步骤2803,否则转入步骤2804。管理服务器检测客户端和业务源端之间是否互通的方式同前述实施例所述,在此不再赘述。
步骤2803,管理服务器选择该客户端和业务源端中的任意一方作为连接建立过程的发起方业务设备,并通知该发起方向对方发起连接建立过程。
步骤2804,管理服务器分别通知客户端和业务源端向转发服务器发起连接建立过程。
图29示出了图27所示流程中,当管理服务器判断出客户端和业务源端为“3对3”组网情况下时(如图22或图23所示),管理服务器通知发起方业务设备向对方发起连接建立的流程,包括:
步骤2901,管理服务器接收到客户端请求业务源端的业务资源的请求后,通过查询该客户端和业务源端的对象级别,确定出该客户端和业务源端的对象级别均为3时,管理服务器检测该客户端和业务源端之间是否互通,如果互通,则转入步骤2902,否则转入步骤2903。
步骤2902,管理服务器选择该客户端和业务源端中的任意一方作为连接建立过程的发起方业务设备,并通知该发起方向对方发起连接建立过程。
步骤2903,管理服务器分别通知客户端和业务源端向转发服务器发起连接建立过程。
为简化组网,上述设置有转发服务器的各组网中,将转发服务器和管理服务器设置在网络的同一层(即位于第一级私网),在实际应用中,转发服务器也可位于公网(比如图14或图15所示组网中,转发服务器位于NAT1和NAT2之间的公网),此种情况下,管理服务器选择业务连接发起方仍遵循本发明实施例的上述原则。
基于与上述实施例相同的技术构思,本发明实施例还提供了一种可应用于上述流程的管理服务器。该管理服务器可适用于组网架构中没有转发服务器或者不使用转发服务器的场景。如图30A所示,该管理服务器可包括:
注册处理模块31,用于在接收到业务设备的注册报文后对所述业务设备进行注册处理,并根据所述注册报文的报文头和载荷部分携带的地址信息,确定所述业务设备与所述管理服务器的相对位置;
存储模块32,用于存储注册处理模块31确定出的各业务设备与所述管理服务器的相对位置信息;
业务处理模块33,用于当接收到客户端请求业务源端的业务资源的报文后,根据存储模块32存储的所述客户端与所述管理服务器的相对位置信息以及所述业务源端与所述管理服务器的相对位置信息,通知所述客户端和业务源端中的一方向对方发起连接建立过程;其中,在所述连接建立过程中,所述客户端和所述业务源端之间的NAT设备建立相应地址映射关系;以及,通知所述业务源端发送所述客户端所请求的业务流;其中,当所述业务流经过NAT设备时,所述NAT设备根据建立的地址映射关系转发所述业务流。
进一步的,业务处理模块33可包括:
选择单元331,当接收到客户端请求业务源端的业务资源的报文后,根据存储模块32存储的所述客户端与所述管理服务器的相对位置信息以及所述业务源端与所述管理服务器的相对位置信息,在判断其中有一方位于私网,一方位于公网时,选择其中位于私网的一方作为连接建立过程的发起方;或者,根据存储模块32存储的所述客户端与所述管理服务器的相对位置信息以及所述业务源端与所述管理服务器的相对位置信息,在判断两方均位于公网时,选择其中任何一方作为连接建立过程的发起方;或者,根据存储模块32存储的所述客户端和与所述管理服务器的相对位置以及所述业务源端与所述管理服务器的相对位置,在判断两方均位于私网,且两方均位于所述管理服务器所在网络的同一NAT设备的同一侧时,选择其中任何一方作为连接建立过程的发起方;
第一通知单元332,用于通知选择单元331选择出的连接建立过程的发起方,向对方发起连接建立过程;
第二通知单元333,用于通知所述业务源端发送所述客户端所请求的业务流。
进一步的,注册处理模块33还可在接收到业务设备的注册报文后,保存该注册报文的源IP地址。相应的,选择单元331可在判断所述客户端和所述业务源端均位于私网后,通过比较所述客户端的注册报文的源IP地址和所述业务源端的注册报文的源IP地址是否相同,判断两方是否均位于所述管理服务器所在网络的同一NAT设备的同一侧。
进一步的,如图30B所示,业务处理模块33还可包括:检测单元334,用于在第一通知单元332通知其中任何一方向对方发起连接建立过程之前,检测所述客户端和所述业务源端之间是否能够互通。相应的,第一通知单元332在检测单元334检测到所述客户端和所述业务源端能够互通的情况下,通知其中任何一方向对方发起连接建立过程。
具体的,检测单元334可分别通知所述客户端和所述业务源端向对方发送报文;若在设定时间内接收到所述报文的接收方返回的响应报文,则判断所述客户端和所述业务源端之间能够互通。
具体的,注册处理模块33具体用于:
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址不同,报文头目的IP地址与载荷部分的IP地址不同,则判断所述业务设备与所述管理服务器在不同的私网,且两者间相隔有公网;
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址不同,报文头目的IP地址与载荷部分的IP地址相同,则判断所述业务设备相对于所述管理服务器处于一级或多级NAT设备的私网侧;
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址相同,报文头目的IP地址与载荷部分的目的IP地址相同,则判断所述业务设备相对于所述管理服务器处于同一网络;
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址相同,报文头目的IP地址与载荷部分中的目的IP地址不同,则判断所述业务设备相对于所述管理服务器处于公网。
基于与上述实施例相同的技术构思,本发明实施例还提供了一种可应用于上述流程的管理服务器。该管理服务器可适用于组网架构中没有转发服务器或者不使用转发服务器的场景。如图31A所示,该管理服务器可包括:
注册处理模块41,用于在接收到业务设备的注册报文后对所述业务设备进行注册处理,并根据所述注册报文的报文头和载荷部分携带的地址信息,确定所述业务设备与所述管理服务器的相对位置;
存储模块42,用于存储注册处理模块41确定出的各业务设备与所述管理服务器的相对位置信息;
业务处理模块43,用于当接收到客户端请求业务源端的业务资源的报文后,根据存储模块42存储的所述客户端与所述管理服务器的相对位置信息以及所述业务源端与所述管理服务器的相对位置信息,判断是否需要转发服务器转发业务流;如果判断为是,则通知所述客户端和所述业务源端分别向所述转发服务器发起连接建立过程;否则,根据存储模块42存储的所述客户端与所述管理服务器的相对位置信息以及所述业务源端与所述管理服务器的相对位置信息,通知所述客户端和业务源端中的一方向对方发起连接建立过程;其中,在所述连接建立过程中,所述客户端和所述业务源端之间的NAT设备建立相应地址映射关系;以及,通知所述业务源端发送所述客户端所请求的业务流;其中,当所述业务流经过NAT设备时,所述NAT设备根据建立的地址映射关系转发所述业务流。
具体的,业务处理模块43可包括:判断单元431、选择单元432、第一通知单元433和第二通知单元434,其中:
判断单元431,用于当接收到客户端请求业务源端的业务资源的报文后,根据存储模块42存储的所述客户端与所述管理服务器的相对位置信息以及所述业务源端与所述管理服务器的相对位置信息,判断是否需要转发服务器转发业务流,并在判断为是时,指示第一通知单元433通知所述客户端和所述业务源端向所述转发服务器发起连接建立过程,在判断为否时,指示选择单元432选择连接建立过程的发起方;
选择单元432,用于根据存储模块42存储的所述客户端与所述管理服务器的相对位置信息以及所述业务源端与所述管理服务器的相对位置信息,从所述客户端和所述业务源端中选择连接建立过程的发起方;
第一通知单元433,用于根据判断单元431的指示通知所述客户端和所述业务源端向所述转发服务器发起连接建立过程,通知选择单元432选择出的连接建立过程发起方向对方发起连接建立过程;
第二通知单434元,用于通知所述业务源端发送所述客户端所请求的业务流;
其中,判断单元431在确定以下组网之一时判断无需转发服务器转发业务流:
所述客户端和所述业务源端中有一方位于私网,一方位于公网;
所述客户端和所述业务源端均位于公网;
所述客户端和所述业务源端均位于私网,且均位于所述管理服务器所在网络的同一NAT设备的同一侧;
判断单元431在确定以下组网时判断需要转发服务器转发业务流:
所述客户端和所述业务源端均位于私网,且位于所述管理服务器所在网络的不同NAT设备的私网侧。
具体的,选择单元432在确定所述客户端和所述业务源端中有一方位于私网,一方位于公网时,选择其中位于私网的一方作为连接建立过程的发起方;或者,在确定所述客户端和所述业务源端均位于公网时,选择其中任何一方作为连接建立过程的发起方;或者,在确定所述客户端和所述业务源端均位于私网,且均位于所述管理服务器所在网络的同一NAT设备的同一侧时,选择其中任何一方作为连接建立过程的发起方。
进一步的,如图31B所示,业务处理模块43还可包括检测单元435,用于在选择单元432确定所述客户端和所述业务源端均位于公网时,或者,所述客户端和所述业务源端均位于私网,且均位于所述管理服务器所在网络的同一NAT设备的同一侧时,检测所述客户端和所述业务源端之间是否能够互通。相应的,第一通知单元433在检测单元435检测到能够互通的情况下,通知其中任何一方向对方发起连接建立过程;在检测单元435检测到所述客户端和所述业务源端之间不能互通时,分别通知所述客户端和所述业务源端向所述转发服务器发起连接建立过程。
具体的,检测单元435分别通知所述客户端和所述业务源端向对方发送报文;若在设定时间内接收到所述报文的接收方返回的响应报文,则判断所述客户端和所述业务源端之间能够互通。
进一步的,注册处理模块41还在接收到业务设备的注册报文时,保存该注册报文的源IP地址。相应的,判断单元431在判断所述客户端和所述业务源端均位于私网后,通过比较所述客户端的注册报文的源IP地址和所述业务源端的注册报文的源IP地址是否相同,判断两方是否均位于所述管理服务器所在网络的同一NAT设备的同一侧。
具体的,注册处理模块41具体用于:
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址不同,报文头目的IP地址与载荷部分的IP地址不同,则判断所述业务设备与所述管理服务器在不同的私网,且两者间相隔有公网;
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址不同,报文头目的IP地址与载荷部分的IP地址相同,则判断所述业务设备相对于所述管理服务器处于一级或多级NAT设备的私网侧;
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址相同,报文头目的IP地址与载荷部分的目的IP地址相同,则判断所述业务设备相对于所述管理服务器处于同一网络;
若发现注册报文的报文头源IP地址与载荷部分中的源IP地址相同,报文头目的IP地址与载荷部分中的目的IP地址不同,则判断所述业务设备相对于所述管理服务器处于公网。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。