一种网络中转的方法、网络中转服务器和内核管理模块转让专利

申请号 : CN200810089936.0

文献号 : CN101252527B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 樊华恒

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明公开了一种网络中转的方法、网络中转服务器和内核管理模块,其中,网络中转的方法包括:步骤A、网络中转Relay服务器中的内核管理模块在接收到报文时,判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,执行步骤B;步骤B、内核管理模块在内核空间中转发所述报文;其中,所述第一数据通道为发送端与Relay服务器对应的数据通道;所述第二数据通道为Relay服务器与接收端对应的数据通道。采用本发明,能够实现在内核空间中转发所述报文,避免现有技术中从内核空间复制该报文到用户空间,以及执行用户态和内核态之间的切换所对应的操作,进而提高Relay服务器中转报文的效率。

权利要求 :

1.一种网络中转的方法,其特征在于,该方法包括:

步骤A、网络中转Relay服务器中的内核管理模块在接收到报文时,判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,执行步骤B;

步骤B、内核管理模块在内核空间中转发所述报文;如果所述报文为来自发送端通过所述第一数据通道发送的报文,则步骤B包括:内核管理模块将当前Relay服务器的网络IP地址信息修改为所述报文对应的源地址信息;将接收端的IP地址信息修改为所述报文对应的目标IP地址信息;内核管理模块在内核空间中通过所述第二数据通道将修改后的报文转发给接收端;

其中,所述第一数据通道为发送端与Relay服务器对应的数据通道;所述第二数据通道为Relay服务器与接收端对应的数据通道。

2.根据权利要求1所述的方法,其特征在于,所述发送端为网络地址转换NAT后的节点或者为应用服务端。

3.根据权利要求1所述的方法,其特征在于,所述接收端为NAT后的节点或者为应用服务端。

4.根据权利要求1所述的方法,其特征在于,当发送端需要中止报文的转发时,该方法进一步包括:发送端发送会话结束请求给Relay服务器;

Relay服务器在接收到所述会话结束请求后,通知内核管理模块拆除已建立的第一数据通道与第二数据通道的映射关系;分别关闭所述第一数据通道和所述第二数据通道。

5.一种网络中转服务器,其特征在于,该服务器包括:应用管理模块和内核管理模块,其中,所述应用管理模块,用于管理发送端与网络中转Relay服务器对应的第一数据通道;

以及Relay服务器与接收端对应的第二数据通道,并用于触发所述内核管理模块建立第一数据通道与第二数据通道的映射关系;

所述内核管理模块,用于在所述应用管理模块的触发下建立第一数据通道与第二数据通道的映射关系,还用于在接收到报文时,判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,在内核空间中转发所述报文,如果所述报文为来自发送端通过所述第一数据通道发送的报文,则所述内核管理模块在内核空间中转发报文具体包括:内核管理模块将当前Relay服务器的网络IP地址信息修改为所述报文对应的源地址信息;将接收端的IP地址信息修改为所述报文对应的目标IP地址信息;内核管理模块在内核空间中通过所述第二数据通道将修改后的报文转发给接收端。

6.根据权利要求5所述的服务器,其特征在于,该服务器还包括:

接收请求模块,用于在发送端需要中止报文的中转时,接收发送端发送的会话结束请求,并发送中止通知给所述内核管理模块;

所述内核管理模块,用于在接收到所述中止通知后,拆除已建立的第一数据通道与第二数据通道的映射关系;并分别关闭所述第一数据通道和所述第二数据通道。

7.一种内核管理模块,其特征在于,该模块包括:映射建立单元、判断单元和发送单元;其中,所述映射建立单元,用于建立第一数据通道与第二数据通道的映射关系,所述第一数据通道为发送端与网络中转Relay服务器对应的数据通道,所述第二数据通道为Relay服务器与接收端对应的数据通道;

所述判断单元,用于在接收到报文时,判断所述映射建立单元当前是否已建立所述第一数据通道与所述第二数据通道的映射关系,如果是,发送转发通知给所述发送单元;

所述发送单元,用于在接收到所述转发通知后,在内核空间中将所述报文转发,其中,所述发送单元包括:修改子单元和发送子单元;其中,所述修改子单元,用于在所述报文为来自发送端通过所述第一数据通道发送的报文时,将当前Relay服务器的网络IP地址信息修改为所述报文对应的源地址信息;将接收端的IP地址信息修改为所述报文对应的目标IP地址信息;

所述发送子单元,用于在内核空间中通过所述第二数据通道将修改后的报文转发给接收端。

8.根据权利要求7所述的模块,其特征在于,该模块还包括:

拆除单元,用于在发送端需要中止报文的转发时,拆除所述映射建立单元已建立的第一数据通道与第二数据通道的映射关系;并分别关闭所述第一数据通道和所述第二数据通道。

说明书 :

一种网络中转的方法、网络中转服务器和内核管理模块

技术领域

[0001] 本发明涉及互联网技术领域,尤其涉及一种网络中转的方法、网络中转服务器和内核管理模块。

背景技术

[0002] 随着互联网应用的快速发展,基于国际协议版本4(IPV4:Internet Protocolversion 4)的互联网公网地址紧缺问题非常突出,因此诞生了网络地址转换(NAT:Network Address Translators)技术,它可以使多台局域网计算机共享同一公网地址(IP:Internet Protocol)来接入互联网。但由此带来的问题是,NAT隐藏了局域网内的真实节点信息,使互联网的其它节点与该局域网内的真实节点无法互相通讯,从而大大限制了诸如即时通信(IM:Instant Messaging)、点到点(P2P)、交互式流媒体等网络应用。 [0003] 为了解决这个问题,通过网络中转穿越NAT(TURN:Traversal Using RelayNAT)技术应运而生。TURN技术可以使隐藏在NAT后的节点与拥有公网IP的中转服务器通讯,进而由中转服务器转发网络数据,达到穿越NAT的目的。
[0004] 目前,基于应用层转发的TURN技术已经比较成熟。参见图1,图1为现有技术中实现网络中转的流程示意图。其中,在该实施例中,以传输控制协议(TCP:Transmission Control Protocol)为例,并且,发送端设定为NAT后的节点x(End Point x),以下简称EPx,目标端设定为应用服务y,其具体结构示意图如图2所示。如图1所示,该流程包括以下步骤:
[0005] 步骤101,建立数据通道x。
[0006] 其中,数据通道x为EPx与网络中转(Relay)服务器的TCP连接对应的数据通道。此外,在建立数据通道x时,Relay服务器可以对EPx做必要的接 入认征。 [0007] 当EPx需要向应用服务y中转数据时,执行步骤102。
[0008] 步骤102,EPx直接向数据通道x发送报文。
[0009] 步骤103,Relay服务器在应用层接收到报文后,对该报文头进行解析。 [0010] 其中,Relay服务器对该报文头进行解析,可以解析出要转发的应用服务y的IP地址和应用服务y接收该报文的端口信息。
[0011] 步骤104,Relay服务器根据应用服务y的IP地址和应用服务y接收该报文的端口信息,建立与应用服务y进行TCP连接对应的数据通道y。
[0012] 其中,在数据通道y后,还需要进一步建立数据通道y和数据通道x的映射关系,然后执行步骤105。
[0013] 步骤105,将上述报文从数据通道y转发。
[0014] 此外,当应用服务y需要响应该报文时,应用服务y直接向数据通道y发送响应报文。Relay服务器在应用层接收到该响应报文后,根据数据通道y和数据通道x的映射关系,将上述响应报文直接从数据通道x转发。
[0015] 此外,当EPx想中止报文的中转时,直接将数据通道x关闭,这样,本次数据中转结束。
[0016] 可见,现有技术中通过Relay服务器在应用层转发报文,能够实现EPx与应用服务y之间进行信息交互。但是,如图2所示,在现有技术中,通过Relay服务器在应用层转发报文,不可避免的需要从内核空间复制该报文到用户空间,并且也需要执行用户态和内核态之间的切换操作,这样,就会造成计算资源的大量浪费,从而降低Relay服务器中转报文的效率。

发明内容

[0017] 本发明实施例提供了一种网络中转的方法、网络中转服务器和内核管理模块,以便提高Relay服务器中转报文的效率。
[0018] 本发明实施例所提供的一种网络中转的方法,包括:
[0019] 步骤A、网络中转Relay服务器中的内核管理模块在接收到报文时,判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,执行步骤B;
[0020] 步骤B、内核管理模块在内核空间中转发所述报文;如果所述报文为来自发送端通过所述第一数据通道发送的报文,则步骤B包括:内核管理模块将当前Relay服务器的网络IP地址信息修改为所述报文对应的源地址信息;将接收端的IP地址信息修改为所述报文对应的目标IP地址信息;内核管理模块在内核空间中通过所述第二数据通道将修改后的报文转发给接收端;
[0021] 其中,所述第一数据通道为发送端与Relay服务器对应的数据通道;所述第二数据通道为Relay服务器与接收端对应的数据通道。
[0022] 本发明实施例所提供的一种网络中转服务器,包括:应用管理模块和内核管理模块,其中,
[0023] 所述应用管理模块,用于管理发送端与网络中转Relay服务器对应的第一数据通道;以及Relay服务器与接收端对应的第二数据通道,并用于触发所述内核管理模块建立第一数据通道与第二数据通道的映射关系;
[0024] 所述内核管理模块,用于在所述应用管理模块的触发下建立第一数据通道与第二数据通道的映射关系,还用于在接收到报文时,判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,在内核空间中转发所述报文,如果所述报文为来自发送端通过所述第一数据通道发送的报文,则所述内核管理模块在内核空间中转发报文具体包括:内核管理模块将当前Relay服务器的网络IP地址信息修改为所述报文对应的源地址信息;
将接收端的IP地址信息修改为所述报文对应的目标IP地址信息;内核管理模块在内核空间中通过所述第二数据通道将修改后的报文转发给接收端。
[0025] 本发明实施例所提供的一种内核管理模块,包括:映射建立单元、判断单元和发送单元;其中,
[0026] 所述映射建立单元,用于建立第一数据通道与第二数据通道的映射关系,所述第一数据通道为发送端与网络中转Relay服务器对应的数据通道,所述第二数据通道为Relay服务器与接收端对应的数据通道;
[0027] 所述判断单元,用于在接收到报文时,判断所述映射建立单元当前是否已建立所述第一数据通道与所述第二数据通道的映射关系,如果是,发送转发通知给所述发送单元; [0028] 所述发送单元,用于在接收到所述转发通知后,在内核空间中将所述报文转发,其中,所述发送单元包括:修改子单元和发送子单元;其中,
[0029] 所述修改子单元,用于在所述报文为来自发送端通过所述第一数据通道发送的报文时,将当前Relay服务器的网络IP地址信息修改为所述报文对应的源地址信息;将接收端的IP地址信息修改为所述报文对应的目标IP地址信息;
[0030] 所述发送子单元,用于在内核空间中通过所述第二数据通道将修改后的报文转发给接收端。
[0031] 从上述方案可以看出,本发明实施例在内核管理模块接收到报文时,如果判断出当前已建立第一数据通道与第二数据通道的映射关系,则直接在内 核空间中转发所述报文,这样能够避免现有技术中从内核空间复制该报文到用户空间,以及执行用户态和内核态之间的切换所对应的操作,进而节省大量计算资源,实现了直接在内核空间中转发所述报文,进而提高Relay服务器中转报文的效率。
[0032] 附图说明
[0033] 图1为现有技术中实现网络中转的流程示意图;
[0034] 图2为现有技术中实现网络中转的结构示意图;
[0035] 图3为本发明实施例中网络中转方法的示例性流程图;
[0036] 图4为本发明实施例中的网络中转服务器的结构示意图;
[0037] 图5为本发明实施例中内核管理模块的一种结构示意图。
[0038] 具体实施方式
[0039] 考虑到现有技术中Relay服务器在应用层转发报文会导致用户态和内核态之间的切换,进而也不可避免从内核空间复制报文到用户空间。因此,本发明实施例提出了一种能够解决现有技术诸多问题的网络中转方法。具体实现时,包括:Relay服务器中的内核管理模块在接收到报文时,该内核管理模块判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,则在内核空间中转发所述报文。这样,实现了直接在内核空间中转发报文,进而提高Relay服务器中转报文的效率。
[0040] 其中,上述第一数据通道为发送端与Relay服务器对应的数据通道;第二数据通道为Relay服务器与接收端对应的数据通道。
[0041] 另外,通过内核管理模块在内核空间中转发所述报文,能够保证Relay服务器仅在应用层对该数据通道进行控制管理,省略现有技术在应用层所进行的诸如执行从内核空间复制该报文到用户空间,以及执行用户态和内核态之间切换的操作,大大释放Relay服务器在应用层的资源,实现了直接在内核空间中转发报文的目的,进而提高Relay服务器中转报文的效率。
[0042] 为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
[0043] 图3为本发明实施例中网络中转方法的示例性流程图。本实施例中,以发送端与Relay服务器、接收端与Relay服务器进行TCP连接为例,如图3所示,当内核管理模块接收到报文时,该流程可包括如下步骤:
[0044] 步骤301,内核管理模块判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,执行步骤302,否则,执行步骤303。
[0045] 本实施例中,在执行步骤301之前,通常可包括以下步骤:
[0046] A1、建立发送端与Relay服务器进行TCP连接对应的数据通道。 [0047] 这里,上述第一数据通道为发送端与Relay服务器之间进行TCP连接对应的数据通道。此外,本实施例中,在建立第一数据通道时,Relay服务器可对发送端作一些必要的接入认证,具体实施方法与现有技术类似,这里不再一一赘述。
[0048] A2、建立Relay服务器与接收端进行TCP连接对应的数据通道。 [0049] 这里,上述第二数据通道为Relay服务器与接收端之间进行TCP连接对应的数据通道。
[0050] 此外,上述第一数据通道与第二数据通道的映射关系是内核管理模块在Relay服务器通过应用层发送的内核控制原语通知的触发下建立的。优选地,内核管理模块在建立第一数据通道与第二数据通道的映射关系时,还会同时维护发送端和接收端分别对应的IP地址信息。
[0051] 本实施例中,上述发送端可以为NAT后的节点,相应地,接收端为应用服务端。这样,实际应用中,在执行上述步骤A1之前,还可包括:建立发送端与Relay服务器进行TCP连接对应的第一信令通道。此外,在建立第一信令通道时,本实施例的Relay服务器可对发送端作一些必要的接入认证,具体实施方法与现有技术类似,这里不再一一赘述。之后,执行上述步骤A1,并在建立第一数据通道后,优选地,将该第一数据通道对应的第一通道标识X、要转发报文对应的接收端的IP地址信息以及该接收端接收报文的端口通过所述第一信令通道发送给Relay服务器;Relay服务器可根据所述第一通道标识X,建立所述第一数据通道与第一信令通道的映射关系,以便于第一数据通道根据第一 信令通道传输的控制信令实现报文的传输。
[0052] 这样,上述步骤A2中,可根据接收端的IP地址信息和接收端接收报文的端口,建立Relay服务器与接收端进行TCP连接对应的第二数据通道。
[0053] 此外,本实施例中,发送端和接收端也可都为NAT后的节点。这样,实际应用中,上述步骤A1建立第一数据通道之前,通常包括:
[0054] A11、建立发送端与Relay服务器进行TCP连接对应的第一信令通道。 [0055] 其中,在建立第一信令通道时,本实施例Relay服务器可对发送端作一些必要的接入认证,具体实施方法与现有技术类似,这里不再一一赘述。
[0056] A12、建立接收端与Relay服务器进行TCP连接对应的第二信令通道。 [0057] 其中,在建立第二信令通道时,本实施例Relay服务器可对发送端作一些必要的接入认证,具体实施方法与现有技术类似,这里不再一一赘述。
[0058] 之后,执行上述步骤A1,并在建立第一数据通道后,将所述第一通道标识X、接收端的标识信息通过第一信令通道发送给Relay服务器;Relay服务器根据所述第一通道标识X,建立其与第一信令通道的映射关系;并根据接收端的标识信息查找到该接收端对应的第二信令通道,通过该第二信令通道通知该接收端有通讯请求;这样,上述步骤A2中,在接收端明确所述通讯请求后,建立接收端与Relay进行TCP连接对应的第二数据通道。 [0059] 此外,为使本发明有具体的实际应用,本发明实施例中在上述步骤A2后,还将所述第二数据通道对应的第二通道标识Y反馈给接收端。之后,为便于后续的建立第二数据通道与第二信令通道的映射关系,接收端还需将所述第二数据通道对应的第二通道标识Y发送给Relay服务器;Relay服务器根据第二数据通道标识y,建立第二数据通道与第二信令通道的映射关系,以便执行后续的操作。
[0060] 步骤302,内核管理模块在内核空间中转发报文。
[0061] 本实施例中,在上述报文为来自发送端通过所述第一数据通道发送的报文时,上述步骤302中内核管理模块在内核空间中转发报文可包括:
[0062] B1、内核管理模块将当前Relay服务器的网络IP地址信息修改为所述报文 对应的源地址信息。
[0063] 因为报文为来自发送端通过所述第一数据通道发送的报文,明显地,该报文对应的源地址信息为发送端的IP地址信息,本实施例通过执行步骤B1,能够保证使接收端确定所述报文为来自Relay服务器的报文。因为报文为来自发送端通过所述第一数据通道发送的需要Relay服务器转发的报文,明显地,该报文的目标地址信息为Relay服务器的IP地址信息,因此,还需执行步骤B2。
[0064] B2、内核管理模块将接收端的IP地址信息修改为所述报文对应的目标IP地址信息。
[0065] 其中,内核管理模块根据其维护的接收端的IP地址信息,直接将该接收端的IP地址信息修改为所述报文对应的目标IP地址信息。
[0066] B3、内核管理模块在内核空间中通过所述第二数据通道将修改后的报文转发给接收端。
[0067] 可见,通过上述方法,可以实现在内核空间中转发报文,省略现有技术中需要在用户空间和内核空间复制报文的操作,进而避免用户态和内核态之间的切换,节省了计算资源,从而提高Relay服务器中转报文的效率。
[0068] 步骤303,按照现有技术的方法执行转发所述报文的操作。
[0069] 此外,本实施例中,当接收端响应上述Relay服务器转发的报文时,或者,当接收端发送要转发的报文时,也能通过上述类似的转发操作将报文在内核空间中转发,这里不再一一赘述。
[0070] 此外,本实施例中,当发送端需要中止报文的中转时,还可执行步骤304。 [0071] 步骤304,发送端通过第一信令通道发送会话结束请求给Relay服务器。 [0072] 步骤305,Relay服务器在接收到所述会话结束请求后,通知内核管理模块拆除已建立的第一数据通道与第二数据通道的映射关系;并分别关闭所述第一数据通道和所述第二数据通道。
[0073] 具体地,Relay服务器在接收到所述会话结束请求后,通过内核控制原语通知内核管理模块拆除已建立的第一数据通道与第二数据通道的映射关系。至此,可以完成中止发送端需要中转报文的操作。
[0074] 对应本实施例中网络中转的方法,本实施例提供了一种网络中转服务器,具体可以参加图4。图4为本发明实施例中的网络中转服务器的结构示意图。如图4所示,该服务器包括:应用管理模块401和内核管理模块402。
[0075] 其中,应用管理模块401用于管理发送端与Relay服务器对应的第一数据通道;以及Relay服务器与接收端对应的第二数据通道,并用于触发内核管理模块402建立第一数据通道与第二数据通道的映射关系。
[0076] 内核管理模块402用于在应用管理模块401的触发下建立第一数据通道与第二数据通道的映射关系,还用于在接收到报文时,判断当前是否已建立第一数据通道与第二数据通道的映射关系,如果是,在内核空间中转发所述报文。
[0077] 此外,该服务器还包括:接收请求模块403。
[0078] 其中,接收请求模块403用于在发送端需要中止报文的中转时,接收发送端发送的会话结束请求,并发送中止通知给内核管理模块402。
[0079] 内核管理模块402用于在接收到所述中止通知后,拆除已建立的第一数据通道与第二数据通道的映射关系;并分别关闭所述第一数据通道和所述第二数据通道。 [0080] 具体实现时,内核管理模块可有多种结构形式,图5示出了内核管理模块的一种结构示意图。如图5中所示,该模块包括:映射建立单元501、判断单元502和发送单元503。 [0081] 其中,映射建立单元501用于建立第一数据通道与第二数据通道的映射关系,所述第一数据通道为发送端与网络中转Relay服务器对应的数据通道,所述第二数据通道为Relay服务器与接收端对应的数据通道。
[0082] 判断单元502用于在接收到报文时,判断所述映射建立单元当前是否建立所述第一数据通道与所述第二数据通道的映射关系,如果是,发送转发通知给发送单元503。 [0083] 发送单元503用于在接收到所述转发通知后,在内核空间中将所述报文转发。 [0084] 此外,发送单元503可包括:修改子单元5031和发送子单元5032。 [0085] 其中,修改子单元5031用于在所述报文为来自发送端通过所述第一数据通道发送的报文时,将当前Relay服务器的网络IP地址信息修改为所述报文对应的源地址信息;将接收端的IP地址信息修改为所述报文对应的目标IP地址信息。
[0086] 发送子单元5032用于在内核空间中通过所述第二数据通道将修改后的报文转发给接收端。
[0087] 此外,该模块还包括:拆除单元504。
[0088] 其中,拆除单元504用于在发送端需要中止报文的转发时,拆除所述映射建立单元已建立的第一数据通道与第二数据通道的映射关系;并分别关闭所述第一数据通道和所述第二数据通道。
[0089] 本发明实施例中,内核管理模块内部各个单元的具体操作过程可与图3所示方法流程中描述的操作一致,并且各个单元可以是物理功能单元,也可以是软件功能单元,并且各个单元还可进行细分或进行合并,具体实现时,本领域普通技术人员可根据实际情况进行处理,此处不再一一列举。
[0090] 可见,本发明实施例中在内核管理模块接收到报文时,如果该内核管理模块判断出当前已建立第一数据通道与第二数据通道的映射关系,则在内核空间中转发所述报文,实现了在内核空间中转发所述报文,避免了现有技术中从内核空间复制该报文到用户空间,以及执行用户态和内核态之间的切换所对应的操作,节省了大量计算资源,进而提高Relay服务器中转报文的效率。
[0091] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。