CN109862088B - Tcp连接迁移方法及装置 - Google Patents
Tcp连接迁移方法及装置 Download PDFInfo
- Publication number
- CN109862088B CN109862088B CN201910064512.7A CN201910064512A CN109862088B CN 109862088 B CN109862088 B CN 109862088B CN 201910064512 A CN201910064512 A CN 201910064512A CN 109862088 B CN109862088 B CN 109862088B
- Authority
- CN
- China
- Prior art keywords
- address
- port
- public network
- port identification
- nat
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请提供一种TCP连接迁移方法及装置,NAT设备接收TCP连接的端点设备发送的迁移通知,将NAT设备记录的端点设备的第一IP地址和第一端口标识与公网IP地址和公网端口标识的转换关系,更新为目标设备的第二IP地址和第二端口标识与该公网IP地址和公网端口标识的转换关系;断开到达第一IP地址和第一端口标识的连接,建立到达第二IP地址和第二端口标识的连接,以将TCP连接的端点从端点设备迁移至目标设备。如此,简化了进行TCP连接迁移所需执行的操作。
Description
技术领域
本申请涉及通信技术领域,具体而言,涉及一种TCP连接迁移方法及装置。
背景技术
TCP(TransmissionControlProtocol,传输控制协议)连接通常具有两个端点,TCP连接迁移是指将一条TCP连接的一个端点从一台设备迁移至另一台设备,而这个迁移过程对于该条TCP连接另一个端点是透明的,也即:该另一个端点无法感知到上述迁移过程。相关技术中,TCP连接迁移的实现过程比较复杂。
发明内容
有鉴于此,本申请的目的包括提供一种TCP连接迁移方法及装置,以至少部分地改善上述问题。
为了达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种TCP连接迁移方法,应用于NAT(NetworkAddressTranslation,网络地址转换)设备,所述方法包括:
接收TCP连接的端点设备发送的迁移通知,其中,所述迁移通知包括所述端点设备的第一IP(InternetProtocol,互联网协议)地址和第一端口标识以及目标设备的第二IP地址和第二端口标识;
将所述NAT设备记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系,更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接,以将所述TCP连接的端点从所述端点设备迁移至所述目标设备。
第二方面,本申请实施例还提供一种TCP连接迁移方法,应用于TCP连接的端点设备,所述端点设备和NAT设备通信连接,所述方法包括:
在将数据迁移至目标设备时,向所述NAT设备发送包括所述端点设备的第一IP地址和第一端口标识以及所述目标设备的第二IP地址和第二端口标识的迁移通知,以使所述NAT设备执行如下操作:
将记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;以及,
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接。
第三方面,本申请实施例还提供一种TCP连接迁移装置,应用于NAT设备,所述装置包括:
通知接收模块,用于接收TCP连接的端点设备发送的迁移通知,其中,所述迁移通知包括所述端点设备的第一IP地址和第一端口标识以及目标设备的第二IP地址和第二端口标识;
转换关系更新模块,用于将所述NAT设备记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系,更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;
连接迁移模块,用于断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接,以将所述TCP连接的端点从所述端点设备迁移至所述目标设备。
第四方面,本申请实施例还提供一种TCP连接迁移装置,应用于TCP连接的端点设备,所述端点设备和NAT设备通信连接,所述装置包括:
通知发送模块,用于在将数据迁移至目标设备时,向所述NAT设备发送包括所述端点设备的第一IP地址和第一端口标识以及所述目标设备的第二IP地址和第二端口标识的迁移通知,以使所述NAT设备执行如下操作:
将记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;以及,
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接。
相对于现有技术而言,本申请具有以下有益效果:
本申请实施例提供的一种TCP连接迁移方法及装置,NAT设备接收TCP连接的端点设备发送的迁移通知,该迁移通知包括端点设备的第一IP地址和第一端口标识以及目标设备的第二IP地址和第二端口标识;将NAT设备记录的第一IP地址和第二端口标识与公网IP地址和公网端口标识的转换关系,更新为第二IP地址和第二端口标识与公网IP地址和公网端口标识的转换关系;断开到达端点设备的第一IP地址和第一端口标识的连接,建立到达目标设备的第二IP地址和第二端口标识的连接,以将TCP连接的端点从端点设备迁移到目标设备。如此,无需通过复杂的编程即可实现TCP连接的迁移。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种NAT设备和TCP连接的端点设备的交互示意图;
图2为本申请实施例提供的一种应用于NAT设备的TCP连接迁移方法的流程示意图;
图3为本申请实施例提供的一种NAT设备的方框示意图;
图4为本申请实施例提供的TCP连接迁移方法的一种时序图;
图5为本申请实施例提供的一种应用于NAT设备的TCP连接迁移装置的功能模块框图;
图6为本申请实施例提供的一种TCP连接的端点设备的方框示意图;
图7为本申请实施例提供的一种应用于TCP连接的端点设备的TCP连接迁移装置的功能模块框图。
图标:100-NAT设备;110、211-TCP连接迁移装置;111-通知接收模块;112-转换关系更新模块;113-连接迁移模块;120-第一处理器;130-第一机器可读存储介质;140-第一系统总线;210、220、230-设备;2111-通知发送模块;212-第二处理器;213-第二机器可读存储介质;214-第二系统总线。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参照图1,图1是本申请实施例提供的一种NAT设备100和TCP连接的端点设备的交互示意图。其中,设备210和设备220通过NAT设备100通信连接。设备210和设备220可以是具有通信功能的任意物理设备或虚拟设备,NAT设备100可以是任意支持NAT协议的设备,例如网关服务器。
在本实施例中,设备210和设备220之间建立有一条TCP连接(例如为conn1),该TCP连接conn1在设备210和设备220任一者上的端点可以是一个Socket(套接字),该Socket与一个IP地址及一个端口标识(例如,端口号)绑定。其中,IP地址用于标识该Socket所在的设备,端口标识用于标识该设备上的一个应用程序(或进程)。如此,即可通过TCP连接实现应用程序和应用程序间的通信。
在本实施例中,约定如下内容:TCP连接conn1在设备210上的端点具有第一IP地址(例如图1所示的172.20.4.118/24)和第一端口标识(例如100)。
现假设设备210需要下线,故需要将TCP连接conn1在设备210上的端点迁移至设备230,相关技术中,通常是从设备210获取TCP连接conn1的所有数据,例如Socket的所有相关数据,并在设备230上复现该所有数据。这种方式一方面涉及到TCP协议(包括三层协议栈和四层协议栈)的修改,很不方便。
另一方面,上述方式要求TCP连接conn1的端点在从设备210迁移至设备230前后,具有相同的IP地址和端口标识,即:维持第一IP地址和第一端口标识不变。否则,迁移过程将被设备220上的端点感知到。这使得断开设备210和设备220之间的连接、建立设备230和设备220之间的连接需要无缝切换,否则将会同时存在两个具有第一IP地址、第一端口标识的端点,造成TCP连接无法正常传输数据,即:迁移失败。因此,上述的迁移方式通常需要通过复杂的编程实现。针对上述问题,本申请实施例提供一种TCP连接方法及装置,能够简化TCP连接迁移的实现过程。下面对该内容进行描述。
请参照图2,图2是本申请实施例提供的一种TCP连接迁移方法的流程示意图。所述TCP连接迁移方法可以应用于图1中示出的NAT设备100。下面对该方法包括的各个步骤进行详述。
步骤S21,接收TCP连接的端点设备发送的迁移通知,其中,所述迁移通知包括所述端点设备的第一IP地址和第一端口标识以及目标设备的第二IP地址和第二端口标识。
请结合参照图3,其中示例性地示出了通过本实施例提供的TCP连接迁移方法将图1中示出的TCP连接conn1的端点从设备210迁移到设备230的时序图。
初始状态下,在图1所示场景中,设备210和设备220之间维持有经过NAT设备100的TCP连接conn1,所述TCP连接conn1实际上包括设备210和NAT设备100之间的连接conn2以及设备220和NAT设备100之间的连接conn3。
当需要将TCP连接conn1的端点从设备210迁移至设备230时,可以将设备210上的数据迁移到设备230上,并在数据迁移完成时,由设备210向NAT设备100发送一迁移通知(例如图3所示的通知N1),该迁移通知包括设备210的IP地址172.20.4.118/24和端口标识100以及设备230的IP地址172.20.4.119/24和端口标识101。
其中,设备210可以充当步骤S21中的端点设备,设备230可以充当步骤S21中的目标设备。设备210的IP地址172.20.4.118/24可以充当步骤S21中的第一IP地址,设备210的端口标识100可以充当步骤S21中的第一端口标识,设备230的IP地址172.20.4.119/24可以充当步骤S21中的第二IP地址,设备230的端口标识101可以充当步骤S21中的第二端口标识。
在此值得说明的是,上述的设备210和设备230的IP地址及端口标识仅为示例,本申请实施例不以此为限制。
步骤S22,将所述NAT设备100记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系,更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系。
对于需要通过NAT设备100与外网设备通信的任意内网设备,NAT设备100中可以记录有该内网设备的IP地址和端口标识与公网IP地址和端口标识的转换关系。其中,内网和外网为相对概念,在一些场景中,可以理解为需要通过公网通信的两个不同的局域网。
以图1所示场景为例,对于需要与外网的设备220通信的设备210,NAT设备100上记录有第一IP地址172.20.4.118/24和第一端口标识100与一公网IP地址(例如为10.10.0.31/24)和公网端口标识(例如为101)的转换关系(在此约定为“第一转换关系”)。
基于上述转换关系,当NAT设备100接收到设备210发往设备220的报文时,可以确定该报文的源地址为172.20.4.118/24、源端口为端口100,则按照记录的转换关系将该报文的源地址转换成10.10.0.31/24,以及将该报文的源端口转换成端口101,再将转换后的报文发送出去。上述转换过程对设备210是不可见的,即:设备210无法感知到上述转换过程。
在上述场景中,设备210暴露给设备220的IP地址为10.10.0.31/24、端口标识为101。换言之,对于设备220而言,设备210的IP地址为10.10.0.31/24,端口标识为101。则,当需要访问设备210时,设备220将发送以10.10.0.31/24为目的地址、以端口101为目的端口的报文;当NAT设备100接收到该报文时,可以按照记录的所述第一转换关系对该报文进行转换,例如图3所示的DNAT(Destination NAT,目的网络地址转换)1。详细地,NAT设备100可以将该报文的目的地址转换成172.20.4.118/24,以及将该报文的目的端口转换成端口100,再将转换后的报文发送出去。上述转换过程对设备220是不可见的,即:设备220无法感知到上述转换过程。
由此可见,对于经过NAT转换的TCP连接,NAT设备会将TCP连接的端点设备的IP地址和端口标识与一公网IP地址和公网端口标识进行转换,且该转换过程对于另一端点设备是不可见的。基于这一特性,可以在接收到迁移通知时,将与设备210对应的公网IP地址和公网端口标识更新成与设备230对应。例如图1所示,可以将上述的第一转换关系更新成公网IP地址10.10.0.31和公网端口标识101与第二IP地址172.20.4.119和第二端口标识100的转换关系(在此约定为“第二转换关系”),使得NAT设备100在接收到报文依照所述第二转换关系对该报文进行目的地址转换或源地址转换。所述目的地址转换例如可以是图3中示出的DNAT2。
应当理解,图3中仅示出了设备220主动访问设备210以及主动访问设备220的情形。
通过上述设计,可以在不被设备220感知的情况下,将设备220发往设备210的报文转发至设备230,以及将原本需要从设备210发往设备220的报文,从设备230发往设备220。
步骤S23,断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接,以将所述TCP连接的端点从所述端点设备迁移至所述目标设备。
如上所述,对于经过NAT转换的TCP连接conn1,其实质上包括所述连接conn2以及所述连接conn3。
在实施过程中,当在NAT设备100上更新转换关系后,可以断开conn2,并在NAT设备100和设备230之间建立conn4。其中conn4和conn2在NAT设备100上的端点具有相同的IP地址10.10.0.31/24及端口标识101,conn4在设备230上的端点具有IP地址172.20.4.119/24及端口标识100,conn2在设备210上的端点具有IP地址172.20.4.118/24及端口标识100。
在本实施例中,因为对于设备220而言,连接conn2是不可见的,因此,一方面上述断开连接conn2、建立连接conn4的操作可以直接进行,从而实现TCP连接conn1的迁移,而不必如相关技术中要求新建的连接的端点在设备230的IP地址及端口标识与上述的第一IP地址和第一端口标识一致。另一方面,连接conn4可以在步骤S22之前或之后建立,也可以在断开连接conn2之前或之后建立,本实施例对此没有限制。例如图3所示,可以先建立连接conn4,再执行步骤S22(即:将所述第一转换关系更新为所述第二转换关系)和断开连接conn2的步骤。
通过上述过程,可以将TCP连接conn1的端点从设备210迁移到设备230。例如图3所示,迁移后的TCP连接conn1包括所述连接conn2以及设备230和NAT设备100之间的连接conn4。
通过本申请实施例的上述设计,简化了TCP连接的迁移过程,使得TCP连接的端点设备的上下线更为灵活。在本实施例的一种实现方式中,步骤S23可以包括以下步骤:
在所述NAT设备上关闭以所述第一IP地址为目的地址、以所述第一端口标识指示的端口为目的端口的Socket;
在所述NAT设备上新建以所述第二IP地址为目的地址、以所述第二端口标识指示的端口为目的端口的Socket。
在TCP协议中,提供有用于建立Socket的方法和关闭Socket的方法,将和Socket绑定的IP地址和端口标识作为参数传递给上述方法,并调用上述方法,即可实现相应Socket的关闭和建立。
在本实施例的又一种实现方式中,也可以由NAT设备100通知设备210(即:端点设备)关闭以第一IP地址为源地址、以第一端口标识所指示的端口为源端口的Socket;以及,由NAT设备100通知设备230(即:目标设备)建立以第二IP地址为源地址、以第二端口标识所指示的端口为源端口的Socket,从而实现步骤S23。
在本实施例中,在将TCP连接conn1的端点从设备210迁移至设备230之后,所述方法还可以包括以下步骤:
在接收到以所述公网IP地址为目的地址、以所述公网端口标识指示的端口为目的端口的数据包时,将所述数据包的目的地址修改为所述第二IP地址,以及将所述数据包的目的端口修改为所述第二端口标识指示的端口;和/或,
在接收到以所述公网IP地址为源地址、以所述公网端口标识指示的端口为源端口的数据包时,将所述数据包的源地址修改为所述第二IP地址,以及将所述数据包的源端口修改为所述第二端口标识指示的端口。
可选地,在本实施例中,所述NAT设备100可以包括iptables,iptables是一种包过滤系统,其中包括NAT表。可选地,上述的转换关系可以作为NAT规则配置在iptables的NAT表中。
其中,对于只需供外网设备访问的内网设备,可以将该内网设备的IP地址和端口标识与公网IP地址和公网端口标识的转换关系配置成DNAT(DestinationNAT,目的网络地址转换)规则。对于需主动访问外网设备的内网设备,可以将该内网设备的IP地址和端口标识与公网IP地址和公网端口标识的转换关系配置成SNAT(SourceNAT,源网络地址转换)规则。对于既需要供外网设备访问、又需要主动访问外网设备的内网设备,可以将该内网设备的IP地址和端口标识与公网IP地址和公网端口标识的转换关系配置成DNAT规则和SNAT规则。
这是因为,NAT表中通常包括用于存放SNAT规则的POSTROUTING链和用于存放DNAT规则的PREROUTING链。以设备210是上述的内网设备为例,当设备210只需供外网设备(例如设备220)访问时,可以在NAT设备100的POSTROUTING链中配置如下DNAT规则:
-d 10.10.0.31/24 -p tcp -m tcp -dport 101 -j DNAT -to-destination172.20.4.118:100。
如此,当NAT设备100第一次接收到以10.10.0.31/24为目的地址、以端口101为目的端口的报文时,会生成一条连接跟踪(connectiontracking)记录,所述连接跟踪记录中包括公网IP地址10.10.0.31/24和公网端口标识101与第一IP地址172.20.4.118和第一端口标识100的对应关系。此后,当NAT设备100接收到以10.10.0.31/24为目的地址、以端口101为目的端口的报文时,或是接收到以10.10.0.31/24为源地址、以端口101为源端口的报文时,均根据所述连接跟踪记录进行地址转换。
在实际应用中,当NAT规则(包括DNAT规则和SNAT规则)发生改变时,其对应的连接跟踪记录也会随之改变。因此,当设备210只需供外网设备访问时,若需要将TCP连接conn1的端点从设备210迁移至设备230,可以将NAT设备100上的DNAT规则更新为如下内容:
-d 10.10.0.31/24 -p tcp -m tcp -dport 101 -j DNAT -to- destination172.20.4.119:100。
对应地,如果设备210需要主动对外访问,则NAT设备100中配置有SNAT规则,在实施时,可以对SNAT规则进行更新。其中,更新SNAT规则的过程与上述更新DNAT规则的过程类似,在此不再赘述。
基于上述描述,在本实施例中,所述转换关系可以包括NAT表中的DNAT规则和/或SNAT规则。
应当理解,在本实施例中,设备210既可以是服务端设备,也可以是客户端设备,本实施例不以此为限制。换言之,本实施例提供的TCP连接方法中的端点设备既可以作为服务端,也可以作为客户端。
本申请实施例还提供一种TCP连接方法,该方法可以应用于TCP连接的端点设备,例如图1中示出的设备210。该方法包括以下步骤:
在将数据迁移至目标设备时,向所述NAT设备发送包括所述端点设备的第一IP地址和第一端口标识以及所述目标设备的第二IP地址和第二端口标识的迁移通知,以使所述NAT设备执行如下操作:
将记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;以及,
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接。
请参照图4,图4是本申请实施例提供的一种NAT设备100的方框示意图。NAT设备100包括第一处理器120及第一机器可读存储介质130。第一处理器120与第一机器可读存储介质130通过第一系统总线140通信。并且,第一机器可读存储介质130存储有机器可执行指令,通过读取并执行第一机器可读存储介质130中与上述应用于NAT设备100的TCP连接迁移逻辑对应的机器可执行指令,第一处理器120可以执行上文描述的应用于NAT设备100的TCP连接迁移方法。
请参照图5,本实施例还提供一种TCP连接迁移装置110,TCP连接迁移装置110包括至少一个可以以软件形式存储于第一机器可读存储介质130中的功能模块。从功能上划分,TCP连接迁移装置110可以包括通知接收模块111、转换关系更新模块112以及连接迁移模块113。
其中,所述通知接收模块111用于接收TCP连接的端点设备发送的迁移通知,其中,所述迁移通知包括所述端点设备的第一IP地址和第一端口标识以及目标设备的第二IP地址和第二端口标识。
在本实施例中,所述通知接收模块111可以用于执行步骤S21,关于所述通知接收模块111的描述具体可以参考对步骤S21的描述。
所述转换关系更新模块112用于将所述NAT设备记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系,更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系。
在本实施例中,所述转换关系更新模块112可以用于执行步骤S22,关于所述转换关系更新模块112的描述具体可以参考对步骤S22的描述。
可选地,所述转换关系可以包括NAT表中的DNAT规则和/或SNAT规则。
所述连接迁移模块113用于断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接,以将所述TCP连接的端点从所述端点设备迁移至所述目标设备。
在本实施例中,所述连接迁移模块113可以用于执行步骤S23,关于所述连接迁移模块113的描述具体可以参考对步骤S23的描述。
可选地,在本实施例中,所述连接迁移模块113具体可以用于:在所述NAT设备上关闭以所述第一IP地址为目的地址、以所述第一端口标识指示的端口为目的端口的Socket;在所述NAT设备上新建以所述第二IP地址为目的地址、以所述第二端口标识指示的端口为目的端口的Socket。
可选地,所述TCP连接迁移装置110还可以包括报文转发模块114。
所述报文转发模块114用于在接收到以所述公网IP地址为目的地址、以所述公网端口标识指示的端口为目的端口的数据包时,将所述数据包的目的地址修改为所述第二IP地址,以及将所述数据包的目的端口修改为所述第二端口标识指示的端口;和/或,在接收到以所述公网IP地址为源地址、以所述公网端口标识指示的端口为源端口的数据包时,将所述数据包的源地址修改为所述第二IP地址,以及将所述数据包的源端口修改为所述第二端口标识指示的端口。
请参照图6,图6是以设备210为例示出的一种TCP连接的端点设备的方框示意图。设备210包括第二处理器212及第二机器可读存储介质213。第二处理器212与第二机器可读存储介质213通过第二系统总线214通信。并且,第二机器可读存储介质213存储有机器可执行指令,通过读取并执行第二机器可读存储介质213中与上述应用于设备210的TCP连接迁移逻辑对应的机器可执行指令,第二处理器212可以执行上文描述的应用于设备210的TCP连接迁移方法。
本文中提到的机器可读存储介质(包括第一机器可读存储介质120和第二机器可读存储介质212)可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
请参照图7,是本申请实施例还提供一种TCP连接迁移装置211,TCP连接迁移装置211包括至少一个可以以软件形式存储于第二机器可读存储介质213中的功能模块。从功能上划分,TCP连接迁移装置211可以包括通知发送模块2111。
所述通知发送模块2111用于在将数据迁移至目标设备时,向所述NAT设备发送包括所述端点设备的第一IP地址和第一端口标识以及所述目标设备的第二IP地址和第二端口标识的迁移通知,以使所述NAT设备执行如下操作:
将记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;以及,
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接。
关于通知发送模块2111的描述可以参照上述内容中对相关步骤的描述。
综上所述,本申请实施例提供一种TCP连接迁移方法及装置,NAT设备接收TCP连接的端点设备发送的迁移通知,该迁移通知包括端点设备的第一IP地址和第一端口标识以及目标设备的第二IP地址和第二端口标识;将NAT设备记录的第一IP地址和第二端口标识与公网IP地址和公网端口标识的转换关系,更新为第二IP地址和第二端口标识与公网IP地址和公网端口标识的转换关系;断开到达端点设备的第一IP地址和第一端口标识的连接,建立到达目标设备的第二IP地址和第二端口标识的连接,以将TCP连接的端点从端点设备迁移到目标设备。如此,无需通过复杂的编程即可实现TCP连接的迁移。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种TCP连接迁移方法,其特征在于,应用于网络地址转换NAT设备,所述方法包括:
接收TCP连接的端点设备发送的迁移通知,其中,所述迁移通知包括所述端点设备的第一IP地址和第一端口标识以及目标设备的第二IP地址和第二端口标识;
将所述NAT设备记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系,更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接,以将所述TCP连接的端点从所述端点设备迁移至所述目标设备。
2.根据权利要求1所述的方法,其特征在于,所述转换关系包括NAT表中的目的网络地址转换DNAT规则和/或源网络地址转换SNAT规则。
3.根据权利要求1或2所述的方法,其特征在于,断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接,包括:
在所述NAT设备上关闭以所述第一IP地址为目的地址、以所述第一端口标识指示的端口为目的端口的套接字Socket;
在所述NAT设备上新建以所述第二IP地址为目的地址、以所述第二端口标识指示的端口为目的端口的Socket。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在接收到以所述公网IP地址为目的地址、以所述公网端口标识指示的端口为目的端口的数据包时,将所述数据包的目的地址修改为所述第二IP地址,以及将所述数据包的目的端口修改为所述第二端口标识指示的端口;和/或,
在接收到以所述公网IP地址为源地址、以所述公网端口标识指示的端口为源端口的数据包时,将所述数据包的源地址修改为所述第二IP地址,以及将所述数据包的源端口修改为所述第二端口标识指示的端口。
5.一种TCP连接迁移方法,其特征在于,应用于TCP连接的端点设备,所述端点设备和NAT设备通信连接,所述方法包括:
在将数据迁移至目标设备时,向所述NAT设备发送包括所述端点设备的第一IP地址和第一端口标识以及所述目标设备的第二IP地址和第二端口标识的迁移通知,以使所述NAT设备执行如下操作:
将记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;以及,
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接。
6.一种TCP连接迁移装置,其特征在于,应用于NAT设备,所述装置包括:
通知接收模块,用于接收TCP连接的端点设备发送的迁移通知,其中,所述迁移通知包括所述端点设备的第一IP地址和第一端口标识以及目标设备的第二IP地址和第二端口标识;
转换关系更新模块,用于将所述NAT设备记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系,更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;
连接迁移模块,用于断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接,以将所述TCP连接的端点从所述端点设备迁移至所述目标设备。
7.根据权利要求6所述的装置,其特征在于,所述转换关系包括NAT表中的DNAT规则和/或SNAT规则。
8.根据权利要求6或7所述的装置,其特征在于,所述连接迁移模块,具体用于:
在所述NAT设备上关闭以所述第一IP地址为目的地址、以所述第一端口标识指示的端口为目的端口的Socket;
在所述NAT设备上新建以所述第二IP地址为目的地址、以所述第二端口标识指示的端口为目的端口的Socket。
9.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
报文转发模块,用于在接收到以所述公网IP地址为目的地址、以所述公网端口标识指示的端口为目的端口的数据包时,将所述数据包的目的地址修改为所述第二IP地址,以及将所述数据包的目的端口修改为所述第二端口标识指示的端口;和/或,在接收到以所述公网IP地址为源地址、以所述公网端口标识指示的端口为源端口的数据包时,将所述数据包的源地址修改为所述第二IP地址,以及将所述数据包的源端口修改为所述第二端口标识指示的端口。
10.一种TCP连接迁移装置,其特征在于,应用于TCP连接的端点设备,所述端点设备和NAT设备通信连接,所述装置包括:
通知发送模块,用于在将数据迁移至目标设备时,向所述NAT设备发送包括所述端点设备的第一IP地址和第一端口标识以及所述目标设备的第二IP地址和第二端口标识的迁移通知,以使所述NAT设备执行如下操作:
将记录的所述第一IP地址和所述第一端口标识与公网IP地址和公网端口标识的转换关系更新为所述第二IP地址和所述第二端口标识与所述公网IP地址和所述公网端口标识的转换关系;以及,
断开到达所述端点设备的所述第一IP地址和所述第一端口标识的连接,建立到达所述目标设备的第二IP地址和所述第二端口标识的连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064512.7A CN109862088B (zh) | 2019-01-23 | 2019-01-23 | Tcp连接迁移方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064512.7A CN109862088B (zh) | 2019-01-23 | 2019-01-23 | Tcp连接迁移方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109862088A CN109862088A (zh) | 2019-06-07 |
CN109862088B true CN109862088B (zh) | 2021-06-08 |
Family
ID=66895803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910064512.7A Active CN109862088B (zh) | 2019-01-23 | 2019-01-23 | Tcp连接迁移方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109862088B (zh) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5190084B2 (ja) * | 2010-03-30 | 2013-04-24 | 株式会社日立製作所 | 仮想マシンのマイグレーション方法およびシステム |
US8478813B2 (en) * | 2010-04-28 | 2013-07-02 | Microsoft Corporation | Transparent migration of endpoint |
CN102118458A (zh) * | 2011-03-10 | 2011-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种虚拟机热迁移的方法及系统 |
CN103379185B (zh) * | 2012-04-26 | 2016-08-03 | 华为技术有限公司 | 一种网络地址转换的方法、设备和系统 |
US9906459B2 (en) * | 2013-01-27 | 2018-02-27 | Hewlett Packard Enterprise Development Lp | Socket state transfer |
CN104427598B (zh) * | 2013-09-09 | 2018-02-23 | 中国移动通信集团公司 | 长时间在线业务免心跳的方法和装置 |
CN104660550B (zh) * | 2013-11-20 | 2019-03-01 | 北京邮电大学 | 一种在多服务器之间进行会话迁移的方法 |
CN105790985B (zh) * | 2014-12-23 | 2020-06-16 | 中兴通讯股份有限公司 | 数据倒换的方法、第一设备、第二设备及系统 |
EP3223456B1 (en) * | 2016-03-24 | 2018-12-19 | Alcatel Lucent | Method for migration of virtual network function |
CN113259415B (zh) * | 2016-07-30 | 2023-03-10 | 华为技术有限公司 | 一种网络报文处理方法、装置及网络服务器 |
CN106506522B (zh) * | 2016-11-28 | 2019-08-06 | 杭州迪普科技股份有限公司 | Tcp连接的管理方法和装置 |
-
2019
- 2019-01-23 CN CN201910064512.7A patent/CN109862088B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109862088A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11303553B1 (en) | Return path trace | |
JP5817299B2 (ja) | アドレス変換装置、通信システム及びアドレス変換方法 | |
JP5865684B2 (ja) | コンテンツセントリック・ネットワークにおけるネットワークアドレス変換によるカストディアンルーティング | |
US7634577B1 (en) | Media gateway proxy | |
JP4494891B2 (ja) | ローカル接続変換との仮想接続 | |
US20100312880A1 (en) | Method and device for connecting packet-oriented communication terminals | |
CN109120746B (zh) | 网络地址转换方法、装置及地址转换设备 | |
CN113364660B (zh) | Lvs负载均衡中的数据包处理方法及装置 | |
EP2466846B1 (en) | Sip-based custodian routing in content-centric networks | |
US7769866B2 (en) | Virtual connectivity with subscribe-notify service | |
JP7366283B2 (ja) | ルート更新方法及び装置 | |
WO2024208053A1 (zh) | 跨云数据互联网络通信方法、装置及系统 | |
US20140089386A1 (en) | Methods, systems, and computer readable media for providing mapping information associated with port control protocol (pcp) in a test environment | |
CN109862088B (zh) | Tcp连接迁移方法及装置 | |
US9485707B2 (en) | Direct routing of communication sessions for mobile IP communication end points | |
CN104518959A (zh) | 一种设备间通信的方法及装置 | |
CN110809033B (zh) | 报文转发方法、装置及交换服务器 | |
US7454525B1 (en) | Enabling communication when signaling protocol packets contain embedded addresses subject to translation | |
JP5103244B2 (ja) | 呼制御装置、呼制御システム、呼制御方法及びコンピュータプログラム | |
CN112243048B (zh) | 数据传输方法、相关设备、系统以及计算机可读存储介质 | |
CN114301913B (zh) | 一种请求处理方法及系统 | |
CN103957152B (zh) | IPv4与IPv6网络通信方法及NAT‑PT网关 | |
JP7338272B2 (ja) | 情報処理装置及び情報処理プログラム | |
US20240340360A1 (en) | Private network device manageability via smartphone gateway | |
CN115334036B (zh) | 智能控制源地址转换的方法和装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |