一种资源回收方法、装置、设备及存储介质与流程
未命名
08-29
阅读:80
评论:0

1.本技术涉及通信技术领域,尤其涉及一种资源回收方法、装置、设备及存储介质。
背景技术:
2.网络地址转换(network address translation,nat)是一种将内网用户的私有ip地址转化为公网ip地址的技术,如今nat多指网络地址和四层端口地址一同转换,即网络地址端口转换(network address port translation,napt)。nat有效解决了公网ip地址资源日益短缺问题,同时还可以有效隐藏内部网络中的主机,具有一定的网络安全保护作用。
3.当一个内网用户首次访问外网,nat设备从nat地址资源池选取可用的ip地址(公网属性)和port,替换用户报文的源ip地址(私网/内网)和源port,并根据报文原本的五元组和nat后的五元组建立正向流表和反向流表,以指导后续报文的转换和转发。相同五元组的正反向数据流称为一个会话,对应的正反向流表统称为会话表,也记为nat流表。所谓tcp会话表即会话的四层协议为tcp时,nat设备建立的会话表。nat会话表和nat设备分配的地址池资源均为nat会话资源。若是内网持续不断发起新的会话,nat资源池总会被耗尽;不仅如此,随着会话表项的增多,用于存放会话表的存储介质(如ddr)也会被耗尽。因此,分配的会话资源在不被使用后需要进行回收,以释放地址池资源和会话表占用的存储资源。
4.目前主要通过定时器周期性触发表项老化任务,进行nat会话资源的回收。定时器会周期性地、轮询扫描所有的tcp会话表,判断会话表的非活跃时间是否大于老化周期。如果非活跃时间大于老化周期,删除会话表项并回收nat地址资源;否则不处理该会话表项。
5.但是,tcp作为可靠传输控制协议,其默认老化周期通常为一个小时甚至几个小时,如果只根据老化周期删除表项、回收资源,会存在各种问题。比如,过长的老化周期会导致无法及时回收nat会话资源,设备上存在大量无用的tcp会话,严重占用nat地址资源和表项存储资源。而如果设置较短的老化周期,可能会导致协议正常时延范围内tcp会话表被异常老化,报文无法查找到tcp会话表。
技术实现要素:
6.有鉴于此,本技术提供一种资源回收方法、装置、设备及存储介质,用以在会话表不会被异常老化的情况下,合理地实现会话资源的回收,避免设备上存储资源的浪费。
7.具体地,本技术是通过如下技术方案实现的:
8.根据本技术的第一方面,提供一种资源回收方法,应用于位于第一设备与第二设备之间的网络设备中,所述方法,包括:
9.接收第一设备发送的用于断开其与第二设备之间连接的第一报文;
10.将所述第一报文转发给所述第二设备;
11.接收所述第二设备反馈的所述第一报文的第一响应报文;
12.基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果;
13.接收所述第二设备发送的用于断开其与所述第一设备之间连接的第二报文;
14.将所述第二报文转发给所述第一设备;
15.接收所述第一设备反馈的所述第二报文的第二响应报文;
16.基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果;
17.当所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表;
18.回收维持所述第一设备与所述第二设备之间通信的公网地址资源。
19.根据本技术的第二方面,提供一种资源回收装置,设置于应用于位于第一设备与第二设备之间的网络设备中,所述装置,包括:
20.接收模块,用于接收第一设备发送的用于断开其与第二设备之间连接的第一报文;
21.转发模块,用于将所述第一报文转发给所述第二设备;
22.所述接收模块,还用于接收所述第二设备反馈的所述第一报文的第一响应报文;
23.确认模块,用于基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果;
24.所述接收模块,还用于接收所述第二设备发送的用于断开其与所述第一设备之间连接的第二报文;
25.所述转发模块,还用于将所述第二报文转发给所述第一设备;
26.所述接收模块,还用于接收所述第一设备反馈的所述第二报文的第二响应报文;
27.所述确认模块,还用于基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果;
28.删除模块,用于当所述确认模块确认所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表;
29.回收模块,用于回收维持所述第一设备与所述第二设备之间通信的公网地址资源。
30.根据本技术的第三方面,提供一种网络设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本技术实施例第一方面所提供的方法。
31.根据本技术的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本技术实施例第一方面所提供的方法。
32.本技术实施例的有益效果:
33.本技术实施例提供的资源回收方法、装置、设备及存储介质中,接收第一设备发送的用于断开其与第二设备之间连接的第一报文;将所述第一报文转发给所述第二设备;接收所述第二设备反馈的所述第一报文的第一响应报文;基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果;接收所述第二设备发送用于断开其与所述第一设备之间连接的第二报文;将所述第二报文转发给所述第一设备;接收所述第一设备反馈的所述第二报文的第二响应报文;基于所述第二报文与所述第二响应报
文,确认所述第二设备是否已完成断开连接的第二结果;当所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表;回收维持所述第一设备与所述第二设备之间通信的公网地址资源。由于本技术是在确认设备双方均断开了其与对端设备的通信连接,才进行了会话表与公网地址资源的回收,实现了合理地删除会话表以回收会话表所占用的存储资源,同时也合理且及时地对公网地址资源进行了回收,而且不会存在现有技术中会话表异常老化的情况,提高了网络设备中存储资源的利用率,避免了网络设备上存储资源的浪费。
附图说明
34.图1是本技术实施例提供的一种资源回收方法的流程示意图;
35.图2是本技术实施例提供的一种资源回收装置的结构示意图;
36.图3是本技术实施例提供的一种实施资源回收方法的网络设备的硬件结构示意图。
具体实施方式
37.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如本技术的一些方面相一致的装置和方法的例子。
38.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
39.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
40.下面对本技术提供的资源回收方法进行详细地说明。
41.参见图1,图1是本技术提供的一种资源回收方法的流程图,应用于位于第一设备与第二设备之间的网络设备,该网络设备可以但不限于为nat设备,上述第一设备与第二设备可以分别为内网与外网的设备,如当第一设备为外网设备时,第二设备为内网设备;而当第一设备为内网设备时,第二设备为外网设备;上述网络设备在实施该方法时,可包括如下所示步骤:
42.s101、接收第一设备发送的用于断开其与第二设备之间连接的第一报文。
43.本步骤中,为了实现在两设备之间断开连接后及时释放支持两设备之间通信的会话资源,网络设备会对第一设备与第二设备之间的通信进行监测处理,因此,网络设备会及时监测是否接收到第一设备发送的其用于断开与第二设备之间通信连接的上述第一报文。
44.s102、将所述第一报文转发给所述第二设备。
45.本步骤中,当接收到上述第一报文后,表明第一设备欲与第二设备断开通信连接,在将其转发给第二设备的同时,此时可以进行记录,以便后续资源回收流程的执行。
46.s103、接收所述第二设备反馈的所述第一报文的第一响应报文。
47.本步骤中,当网络设备将第一报文转发给第二设备后,第二设备会根据是否确认第一设备断开其到第二设备的通信连接的结果,构建第一响应报文,然后向第一设备反馈该第一响应报文。
48.s104、基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果。
49.本步骤中,网络设备接收到第二设备反馈的第一响应报文后,就可以基于第一报文与第一响应报文,确定第二设备是否会确认第一设备断开其到第二设备的通信连接,进而就可以得到第一设备是否已完成第一设备侧的断开通信连接的第一结果。
50.s105、接收所述第二设备发送的用于断开其与所述第一设备之间连接的第二报文。
51.本步骤中,由于第一设备与第二设备之间的通信是双向的,因此,只有两设备之间的双向通信均断开连接,网络设备才不需要继续为两设备之间的通信提供资源,因此,在第一设备断开了第一设备到第二设备方向的通信连接后,网络设备还需要继续监测第二设备是否要断开第二设备到第一设备所在方向的通信连接,因此,当第二设备若要断开第二设备到第一设备所在方向的通信连接时,网络设备就可以接收到上述第二报文。
52.s106、将所述第二报文转发给所述第一设备。
53.本步骤中,网络设备在接收到上述第二报文后,表明第二设备欲与第一设备断开通信连接,在将其转发给第一设备的同时,可以进行记录,以便后续资源回收流程的执行。
54.s107、接收所述第一设备反馈的所述第二报文的第二响应报文。
55.本步骤中,当网络设备将第二报文发送给第一设备后,第一设备在接收到该第二报文后,会根据是否确认第二设备断开其到第二设备所在通信方向的通信连接的结果,构建第二响应报文,然后向第二设备反馈该第二响应报文,由此网络设备会接收到该第二响应报文。
56.s108、基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果。
57.本步骤中,网络设备接收到第一设备反馈的第二响应报文后,就可以基于第二报文与第二响应报文,确定第一设备是否会确认第二设备断开其到第一设备所在通信方向的通信连接,进而就可以得到第二设备是否已完成第二设备侧的断开通信连接的第二结果。
58.s109、当所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表。
59.具体地,只有在第一设备与第二设备都断开了各自到对端设备的通信连接后,网络设备才不需要继续为两设备之间通信连接提供资源服务,因此,网络设备在得到上述第一结果和第二结果后,会基于这两个结果来确认第一设备和第二设备是否均完成了断开各自到对端设备之间的通信连接,当确认均完成断开连接的动作后,则表明网络设备不再需要继续为两设备通信提供服务,因此,网络设备也就可以删除本地存储的上述会话表,以使释放资源为其他设备间通信提供服务,而不再需要等待老化时间的到达后再执行会话表删
除操作,由此也就实现了及时释放会话表占用的存储资源的目的。
60.s110、回收维持所述第一设备与所述第二设备之间通信的公网地址资源。
61.本步骤中,由于网络设备在为第一设备与第二设备之间提供通信服务时,会涉及公网地址资源的分配,即会对往来的报文进行私网地址信息与公网地址信息之间的转换,而该公网地址资源是在两设备首次交互时分配的。例如,若第一设备为位于外网的客户端,第二设备为位于内网的服务端,网络设备在将第一报文转发给第二设备时,会先将第一报文中的公网地址转换为私网地址,然后再转发给第二设备。同理,当第一设备位于内网,第二设备位于外网,网络设备就需要将第一报文中的私网地址转换为网络设备为其分配的公网地址,然后再进行转发。因此,网络设备在确认第一设备与第二设备双方均断开通信连接时,网络设备为其通信分配的公网地址资源业务需要做回收处理,故在执行完步骤s109之后,网络设备还需要及时回收维持所述第一设备与所述第二设备之间通信的公网地址资源,从而使得网络设备可以利用回收的公网地址资源为其他设备之间通信服务。
62.需要说明的是,上述第一响应报文、第二报文、第二响应报文的处理方式也参考第一报文的处理方式,此处不再一一详细说明。
63.本技术提供的资源回收方法中,接收第一设备发送的用于断开其与第二设备之间连接的第一报文;将所述第一报文转发给所述第二设备;接收所述第二设备反馈的所述第一报文的第一响应报文;基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果;接收所述第二设备发送用于断开其与所述第一设备之间连接的第二报文;将所述第二报文转发给所述第一设备;接收所述第一设备反馈的所述第二报文的第二响应报文;基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果;当所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表;回收维持所述第一设备与所述第二设备之间通信的公网地址资源。由于本技术是在确认设备双方均断开了其与对端设备的通信连接,才进行了会话表与公网地址资源的回收,实现了合理地删除会话表以回收会话表所占用的存储资源,同时也合理且及时地对公网地址资源进行了回收,而且不会存在现有技术中会话表异常老化的情况,提高了网络设备中存储资源的利用率,避免了网络设备上存储资源的浪费。
64.可选地,基于上述实施例,本实施例中,上述会话表包括第一会话表;则在执行步骤s101之后,还可以包括下述过程:若所述第一报文中的fin位处于置位状态,则在所述第一报文对应的第一会话表中记录第一设定值,所述第一设定值为基于所述第一报文中的第一序列号确定出的。
65.具体地,网络设备在接收到第一报文后,当确认第一报文中的fin位处于置位状态时,即第一报文为tcp格式的第一fin报文时,则表明第一设备欲断开其到第二设备的通信连接,因此,网络设备为了能够及时释放支持第一设备与第二设备交互的服务资源,可以从第一报文中提取出第一序列号,然后基于第一序列号可以计算出上述第一设定值,该第一设定值为第二设备确认第一设备断开通信连接时应该反馈的实际序列号的数值,而该序列号与第一序列号在数值上具有关联关系。此外,为了方便本技术资源回收流程的执行,在计算出第一设定值之后,会将第一设定值记录在第一报文对应的第一会话表中。
66.值得注意的是,fin位及第一序列号在第一报文中tcp报文头中的位置及说明分别
如下表1、表2和表3所示。第一序列号可以从sequence number中获取,其中,表3中的ack用于指示序列号有效,fin用于指示发端完成发送任务。
67.表1
[0068][0069]
表2
[0070]
bitnamedescription0~31sequence number序列号
[0071]
表3
[0072]
bitnamedescription11ack确认序列号有效15fin发端完成发送任务
[0073]
在此基础上,可以按照下述过程执行步骤s104:若第一响应报文中的第二序列号与所述第一设定值相匹配,则确认所述第一结果为所述第一设备已完成断开连接。
[0074]
具体地,当第二设备对第一设备侧主动断开其到第二设备的通信连接进行确认时,则上述第一响应报文为第一确认报文,即tcp协议的第一ack报文。该第一ack报文中会携带与第一报文中的第一序列号相对应的第二序列号。然后网络设备可以基于第一序列号确定出第一ack报文应该携带的实际序列号,即上述第一设定值。进而,网络设备会从上述第一报文对应的第一会话表中提取出预先记录的第一设定值,然后将第二序列号与上述第一设定值进行匹配,若确认第二序列号与第一设定值相匹配,则表明在将第一ack报文到达第一设备后,第一设备也就完成了其到第二设备的通信连接,因此,网络设备可以确认第一设备完成了断开连接,即断开第一设备到第二设备的通信连接,即第一结果为第一设备已完成断开连接。
[0075]
若网络设备确认上述第二序列号与第一设定值不匹配,则确认第一设备到第二设备的通信连接未完成断开,相应地,第一结果为第一设备未能完成断开连接,则表明暂时不能执行资源回收流程,还需要继续提供通信服务。
[0076]
需要说明的是,上述第一ack报文的报文格式也请参考表1所示,且第一ack报文中的第二序列号可以从第一ack报文中的tcp报文头中的ack sequence number中提取,ack sequence number的说明可以参考表4所示:
[0077]
表4
[0078]
[0079]
可选地,上述第一设定值为所述第一报文中的第一序列号与1的和值。
[0080]
需要说明的是,上述第一会话表为用于支持第一设备到达第二设备的通信方向反向的会话表。例如,当第一设备为外网中的设备,第二设备为内网中的设备时,则该第一会话表可以理解为第一报文所属数据流的正向会话表。而当第一设备为内网中的设备,第二设备为外网中的设备时,则该第一会话表可以理解为第一报文所属数据流的反向会话表。
[0081]
同理,基于上述实施例,本实施例中,在执行步骤s105之后,本实施例提供的资源回收方法,还可以包括下述过程:若第二报文中的fin位处于置位状态,则在第二报文对应的第二会话表中记录第二设定值,第二设定值为基于第二报文中的第三序列号确定出的。
[0082]
具体地,网络设备在接收到第二报文后,当确认第二报文中的fin位处于置位状态时,即第二报文为第二fin报文时,则表明第二设备欲断开其到第一设备的通信连接,因此,网络设备为了能够及时释放支持第二设备与第一设备交互的服务资源,可以从第二报文中提取出第三序列号,然后基于第三序列号可以计算出上述第二设定值,该第二设定值为第一设备确认第二设备断开通信连接时应该反馈的实际序列号的数值,而该序列号与第三序列号在数值上具有关联关系。此外,为了方便本技术资源回收流程的执行,在计算出第二设定值之后,会将第二设定值记录在第二报文对应的第二会话表中。
[0083]
在此基础上,可以按照下述过程执行步骤s108:若所述第二响应报文中的第四序列号与所述第二设定值相匹配,则确认所述第二结果为所述第二设备已完成断开连接。
[0084]
具体地,当第一设备对第二设备侧主动断开其到第一设备的通信连接进行确认时,则上述第二响应报文为第二确认报文,即第二ack报文。该第二ack报文中会携带与第二报文中的第三序列号相对应的第四序列号。然后网络设备可以基于第三序列号确定出第二ack报文应该携带的实际序列号,即上述第二设定值。进而,网络设备会从上述第二报文对应的第二会话表中提取出预先记录的第二设定值,然后将第四序列号与上述第二设定值进行匹配,若确认第四序列号与第二设定值相匹配,则表明在将第二ack报文到达第二设备后,第二设备也就完成了其到第一设备的通信连接,因此,网络设备可以确认第二设备完成了断开连接,即断开第二设备到第一设备的通信连接,即第二结果为第二设备已完成断开连接。
[0085]
若网络设备确认上述第四序列号与第二设定值不匹配,则确认第二设备到第一设备的通信连接未完成断开,相应地,第二结果为第二设备未能完成断开连接,则表明暂时不能执行资源回收流程,还需要继续提供通信服务。
[0086]
可选地,上述第二设定值为所述第二报文中的第三序列号与1的和值。
[0087]
需要说明的是,上述第二会话表为用于支持第二设备到达第一设备的通信方向反向的会话表。例如,当第一设备为外网中的设备,第二设备为内网中的设备时,则该第二会话表可以理解为第二报文所属数据流的反向会话表。而当第一设备为内网中的设备,第二设备为外网中的设备时,则该第一会话表可以理解为第二报文所属数据流的正向会话表。而第一报文与第二报文属于同一数据流。
[0088]
在此基础上,以第一设备为外网中的设备,第二设备为内网中的设备为例进行说明。则网络设备可以将第一设定值写入到第一报文所属数据流的正向会话表中,而该正向会话表正是为第二设备向第一设备提供通信服务的会话表。也就是说,当第二设备反馈的第一响应报文到达网络设备后,网络设备就需要利用该正向会话表提供第一响应报文的转
发服务。因此,通过将第一设定值写入到该正向会话表,网络设备就可以在为第一响应报文提供通信服务的同时,从该正向会话表中提取出该第一设定值,然后将该第一设定值与第一响应报文中的第二序列号进行比对处理,方便且高效。同理,第二报文对应的第二会话表可以理解为反向会话表,即为第一设备到达第二设备所在通信方向提供通信服务的会话表。这样,网络设备在基于第二报文计算出第二设定值后,为了方便后续的匹配流程,网络设备可以将第二设定值写入到上述反向会话表中。这样,当网络设备接收到第一设备反馈的第二响应报文后,就可以从本地提取出上述反向会话表,进一步地,网络设备在基于反向会话表为第二响应报文提供转发服务的同时,还可以从反向会话表中提取出上述第二设定值,进而执行将上述第二设定值与第二响应报文中的第三序列号进行匹配的流程。
[0089]
进一步地,本实施例中提供的资源回收方法,还可以包括下述过程:在上述第一会话表中记录与上述第一结果相匹配的第一状态;在上述第二会话表中记录与上述第二结果相匹配的第二状态。
[0090]
具体地,当网络设备得到上述第一结果后,就可以将该第一结果对应的第一状态记录在第一会话表中,以便后续资源回收流程的实施。同理,在得到第二结果后,也会在第二会话表中记录第二结果对应的第二状态。具体来说,若第一结果为第一设备已完成断开连接,则第一状态的取值可以为1,若第一结果为第一设备未完成断开连接,则第一状态的取值可以为0;同理,若第二结果为第二设备已完成断开连接,则第二状态的取值可以为1,若第二结果为第二设备未完成断开连接,则第二状态的取值可以为0,值得注意的是,上述取值的说明仅是一个示例,并不构成第一状态和第二状态的具体取值的限定,实际应用中,第一状态和第二状态取何值可以根据实际情况进行配置。还以第一设备为外网中的设备,第二设备为内网中的设备为例进行说明。则网络设备在正向会话表中记录上述第一状态;在上述反向会话表中记录上述第二状态。
[0091]
在此基础上,可以按照下述过程执行步骤s109:分别查询上述第一会话表中的所述第一状态和上述第二会话表中的所述第二状态;若上述第一状态与上述第二状态均为已完成断开连接,则删除所述第一会话表和所述第二会话表。
[0092]
具体地,网络设备当均得到第一状态和第二状态后,就可以通过这两个状态来确定第一设备与第二设备是否均主动断开了各自到对端设备的通信连接,进而在确认均已断开连接后,删除上述第一会话表和第二会话表。
[0093]
具体来说,网络设备中会提供多个线程来执行资源回收流程,在其他线程执行完步骤s101~s108后,网络设备中的查询线程会从第一会话表中提取出第一状态,同时从第二会话表中提取出第二状态,然后确认第一状态和第二状态的取值是否均为1,若取值均为1,表明第一设备和第二设备均主动断开了其到对端所在通信方向的通信连接,然后就可以删除用于支持第一设备与第二设备交互的第一会话表和第二会话表。还以第一设备为外网中的设备,第二设备为内网中的设备为例进行说明。则网络设备在正向会话表中查询上述第一状态;在上述反向会话表中查询上述第二状态。
[0094]
值得注意的是,在删除会话表的同时,若还有其他用于支持第一设备与第二设备之间通信的资源,也可以一并做删除或清除处理,以释放网络设备为该两设备提供通信服务的资源。
[0095]
至此,本技术通过tcp头部fin标志位、序列号和确认序列号准确识别tcp四次握手
的每一步,并通过会话表记录tcp通信状态;在通信双方完成四次握手后,nat设备主动回收tcp会话表项资源和nat地址池资源。这样,也就不会造成tcp协议正常时延范围内的报文无法查找到nat会话表,还能够快速回收会话资源,提高了利用率。
[0096]
为了更好地理解本实施例,以第一设备为客户端client,第二设备为服务端server,网络设备为nat设备为例进行说明,客户端与服务端之间的会话为tcp会话,为了能够让nat设备及时释放存储资源,nat设备实施本技术提供的资源回收流程如下:
[0097]
步骤1:nat设备收到client发送的第一fin报文,当解析发现第一fin报文中的tcp报文头的fin字段置位,则表明客户端client发送的第一fin报文用于断开其到服务端server所在通信方向的通信连接,然后nat设备会在本地存储的用于维持客户端与服务端之间通信连接的反向会话表中进行记录,如记录client发送的第一fin报文已收到的状态,并记录client发送的第一fin报文中第一序列号+1(seq1+1)的取值,即第一设定值。
[0098]
步骤2:nat设备会将该第一fin报文转发给服务端server。
[0099]
步骤3:服务端server接收到第一fin报文后,若响应该断开连接,则会通过nat设备发送第一ack报文,这样,nat设备在收到服务端server的第一ack报文后,由于在为第一ack报文提供转发服务时,需要提取出本地维护的客户端与服务端通信的反向会话表,而上述第一设定值正好在反向会话表中,故网络设备在提供转发服务之前,会先从第一ack报文中解析出tcp报文头中序列号ack seq(第二序列号),然后从该反向会话表中提取出预先记录的第一设定值,进而将第一ack报文中的ack seq1与反向会话表中记录的seq+1进行匹配,若匹配一致,则在反向会话表中记录第一状态,用于表征client已经完成断开连接。
[0100]
步骤4:nat设备收到服务端server发送的第二fin报文,从第二fin报文中解析发现tcp报文头中fin字段置位,则表明服务端server发送的第二fin报文用于断开其到客户端client所在通信方向的通信连接,然后nat设备会在本地存储的用于维持客户端与服务端之间通信连接的正向会话表中进行记录,如记录服务端server发送的第二fin报文已收到的状态,并记录server发送的第二fin报文中第三序列号+1(seq2+1)的取值,即第二设定值。
[0101]
步骤5:客户端client收到第二fin报文后,若响应该断开连接,则会通过nat设备发送第二ack报文。这样,nat设备收到client反馈的第二ack报文后,由于在为第二ack报文提供转发服务时,需要提取出本地维护的客户端与服务端通信的正向会话表,而上述第一设定值正好在正向会话表中,故网络设备在提供转发服务之前,则会先从第二ack报文中解析tcp报文头中序列号ack seq2(第四序列号),然后从该正向会话表中提取出预先记录的第二设定值,进而将第二ack报文中的ack seq2与正向会话表中记录的第二设定值进行匹配,若匹配一致,则在正向会话表中记录第二状态,用于表征server已经完成断开连接。
[0102]
步骤6:nat设备可以从反向会话表和正向会话表中分别提取出第一状态和第二状态,若基于这两个状态均确认tcp会话的client和server均完成断开连接,则nat设备会主动删除用于维持该tcp会话的反向会话表和正向会话表,同时回收为支持该tcp会话所分配的nat公网地址资源。
[0103]
由此,本技术结合了tcp协议的特性,识别并记录tcp四次握手的过程和状态,当tcp通信双方完成握手断开连接后,nat设备会主动删除tcp会话表并回收地址资源。相比通过定时器周期性扫描老化tcp表项,本技术可以准确地删除nat设备上需要回收的tcp会话
表项,并且可以更快速地回收nat地址池资源,由此提高了nat设备的内存资源和地址池资源的利用率,而且提高了nat设备转换性能和吞吐量。
[0104]
基于同一发明构思,本技术还提供了与上述资源回收方法对应的资源回收装置。该资源回收装置的实施具体可以参考上述对资源回收方法的描述,此处不再一一论述。
[0105]
参见图2,图2是本技术一示例性实施例提供的一种资源回收装置,设置于应用于位于第一设备与第二设备之间的网络设备中,上述装置,包括:
[0106]
接收模块201,用于接收第一设备发送的用于断开其与第二设备之间连接的第一报文;
[0107]
转发模块202,用于将所述第一报文转发给所述第二设备;
[0108]
上述接收模块201,还用于接收所述第二设备反馈的所述第一报文的第一响应报文;
[0109]
确认模块203,用于基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果;
[0110]
上述接收模块201,还用于接收所述第二设备发送的用于断开其与所述第一设备之间连接的第二报文;
[0111]
上述转发模块202,还用于将所述第二报文转发给所述第一设备;
[0112]
上述接收模块201,还用于接收所述第一设备反馈的所述第二报文的第二响应报文;
[0113]
上述确认模块203,还用于基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果;
[0114]
删除模块204,用于当所述确认模块203确认所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表;
[0115]
回收模块205,用于回收维持所述第一设备与所述第二设备之间通信的公网地址资源。
[0116]
可选地,基于上述实施例,本实施例中,上述会话表包括第一会话表;在此基础上,本实施例提供的资源回收装置,还可以包括:
[0117]
记录模块(图中未示出),用于在所述接收模块201在接收第一设备发送的用于断开其与第二设备之间连接的第一报文之后,若所述第一报文中的fin位处于置位状态,则在所述第一报文对应的第一会话表中记录第一设定值,所述第一设定值为基于所述第一报文中的第一序列号确定出的;
[0118]
在此基础上,上述确认模块203,具体用于若所述第一响应报文中的第二序列号与所述第一设定值相匹配,则确认所述第一结果为所述第一设备已完成断开连接。
[0119]
同理,上述会话表还包括第二会话表;在此基础上,上述记录模块(图中未示出),还用于在所述接收模块201接收所述第二设备发送用于断开其与所述第一设备之间连接的第二报文之后,若所述第二报文中的fin位处于置位状态,则在所述第二报文对应的第二会话表中记录第二设定值,所述第二设定值为基于所述第二报文中的第三序列号确定出的;
[0120]
上述确认模块203,具体用于若所述第二响应报文中的第四序列号与所述第二设定值相匹配,则确认所述第二结果为所述第二设备已完成断开连接。
[0121]
进一步地,上述记录模块(图中未示出),还用于在所述第一会话表中记录与所述第一结果相匹配的第一状态;在所述第二会话表中记录与所述第二结果相匹配的第二状态;
[0122]
所述删除模块204,具体用于分别查询所述第一会话表中的所述第一状态和所述第二会话表中的所述第二状态;若所述第一状态与所述第二状态均为已完成断开连接,则删除所述第一会话表和所述第二会话表。
[0123]
基于同一发明构思,本技术实施例提供了一种网络设备,该网络设备可以为上述nat设备。如图3所示,该网络设备包括处理器301和机器可读存储介质302,机器可读存储介质302存储有能够被处理器301执行的计算机程序,处理器301被计算机程序促使执行本技术任一实施例所提供的资源回收方法。此外,该网络设备还包括通信接口303和通信总线304,其中,处理器301,通信接口303,机器可读存储介质302通过通信总线304完成相互间的通信。
[0124]
上述网络设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0125]
通信接口用于上述网络设备与其他设备之间的通信。
[0126]
上述机器可读存储介质302可以为存储器,该存储器可以包括随机存取存储器(random access memory,ram)、ddr sram(double data rate synchronous dynamic random access memory,双倍速率同步动态随机存储器),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0127]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0128]
对于网络设备以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0129]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0130]
上述装置中各个单元/模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0131]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实
施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元/模块,即可以位于一个地方,或者也可以分布到多个网络单元/模块上。可以根据实际的需要选择其中的部分或者全部单元/模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0132]
以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
技术特征:
1.一种资源回收方法,其特征在于,应用于位于第一设备与第二设备之间的网络设备中,所述方法,包括:接收第一设备发送的用于断开其与第二设备之间连接的第一报文;将所述第一报文转发给所述第二设备;接收所述第二设备反馈的所述第一报文的第一响应报文;基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果;接收所述第二设备发送的用于断开其与所述第一设备之间连接的第二报文;将所述第二报文转发给所述第一设备;接收所述第一设备反馈的所述第二报文的第二响应报文;基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果;当所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表;回收维持所述第一设备与所述第二设备之间通信的公网地址资源。2.根据权利要求1所述的方法,其特征在于,所述会话表包括第一会话表;在接收第一设备发送的用于断开其与第二设备之间连接的第一报文之后,还包括:若所述第一报文中的fin位处于置位状态,则在所述第一报文对应的第一会话表中记录第一设定值,所述第一设定值为基于所述第一报文中的第一序列号确定出的;基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果,包括:若所述第一响应报文中的第二序列号与所述第一设定值相匹配,则确认所述第一结果为所述第一设备已完成断开连接。3.根据权利要求2所述的方法,其特征在于,所述会话表还包括第二会话表;在接收所述第二设备发送用于断开其与所述第一设备之间连接的第二报文之后,还包括:若所述第二报文中的fin位处于置位状态,则在所述第二报文对应的第二会话表中记录第二设定值,所述第二设定值为基于所述第二报文中的第三序列号确定出的;基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果,包括:若所述第二响应报文中的第四序列号与所述第二设定值相匹配,则确认所述第二结果为所述第二设备已完成断开连接。4.根据权利要求3所述的方法,其特征在于,还包括:在所述第一会话表中记录与所述第一结果相匹配的第一状态;在所述第二会话表中记录与所述第二结果相匹配的第二状态;当所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表,包括:分别查询所述第一会话表中的所述第一状态和所述第二会话表中的所述第二状态;若所述第一状态与所述第二状态均为已完成断开连接,则删除所述第一会话表和所述
第二会话表。5.根据权利要求2所述的方法,其特征在于,所述第一设定值为所述第一报文中的第一序列号与1的和值。6.根据权利要求3所述的方法,其特征在于,所述第二设定值为所述第二报文中的第三序列号与1的和值。7.一种资源回收装置,其特征在于,设置于应用于位于第一设备与第二设备之间的网络设备中,所述装置,包括:接收模块,用于接收第一设备发送的用于断开其与第二设备之间连接的第一报文;转发模块,用于将所述第一报文转发给所述第二设备;所述接收模块,还用于接收所述第二设备反馈的所述第一报文的第一响应报文;确认模块,用于基于所述第一报文与所述第一响应报文,确认所述第一设备是否已完成断开连接的第一结果;所述接收模块,还用于接收所述第二设备发送的用于断开其与所述第一设备之间连接的第二报文;所述转发模块,还用于将所述第二报文转发给所述第一设备;所述接收模块,还用于接收所述第一设备反馈的所述第二报文的第二响应报文;所述确认模块,还用于基于所述第二报文与所述第二响应报文,确认所述第二设备是否已完成断开连接的第二结果;删除模块,用于当所述确认模块确认所述第一结果与所述第二结果均为已完成断开连接,则删除本地存储的用于维持所述第一设备与所述第二设备之间连接的会话表;回收模块,用于回收维持所述第一设备与所述第二设备之间通信的公网地址资源。8.根据权利要求7所述的装置,其特征在于,所述会话表包括第一会话表;所述装置,还包括:记录模块,用于在所述接收模块在接收第一设备发送的用于断开其与第二设备之间连接的第一报文之后,若所述第一报文中的fin位处于置位状态,则在所述第一报文对应的第一会话表中记录第一设定值,所述第一设定值为基于所述第一报文中的第一序列号确定出的;所述确认模块,具体用于若所述第一响应报文中的第二序列号与所述第一设定值相匹配,则确认所述第一结果为所述第一设备已完成断开连接。9.根据权利要求8所述的装置,其特征在于,所述会话表还包括第二会话表;所述记录模块,还用于在所述接收模块接收所述第二设备发送用于断开其与所述第一设备之间连接的第二报文之后,若所述第二报文中的fin位处于置位状态,则在所述第二报文对应的第二会话表中记录第二设定值,所述第二设定值为基于所述第二报文中的第三序列号确定出的;所述确认模块,具体用于若所述第二响应报文中的第四序列号与所述第二设定值相匹配,则确认所述第二结果为所述第二设备已完成断开连接。10.根据权利要求9所述的装置,其特征在于,所述记录模块,还用于在所述第一会话表中记录与所述第一结果相匹配的第一状态;在所述第二会话表中记录与所述第二结果相匹配的第二状态;
所述删除模块,具体用于分别查询所述第一会话表中的所述第一状态和所述第二会话表中的所述第二状态;若所述第一状态与所述第二状态均为已完成断开连接,则删除所述第一会话表和所述第二会话表。11.一种网络设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的计算机程序,所述处理器被所述计算机程序促使执行权利要求1-6任一项所述的方法。12.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有计算机程序,在被处理器调用和执行时,所述计算机程序促使所述处理器执行权利要求1-6任一项所述的方法。
技术总结
本申请提供了一种资源回收方法、装置、设备及存储介质。该方法为:接收第一设备发送的用于断开其与第二设备之间连接的第一报文;将第一报文转发给第二设备;接收第二设备反馈的第一响应报文;基于第一报文与第一响应报文,确认第一设备是否已完成断开连接的第一结果;接收第二设备发送用于断开其与第一设备之间连接的第二报文;将第二报文转发给第一设备;接收第一设备反馈的第二响应报文;基于第二报文与第二响应报文,确认第二设备是否已完成断开连接的第二结果;当第一结果与第二结果均为已完成断开连接,则删除本地存储的用于维持第一设备与第二设备之间连接的会话表;回收维持第一设备与第二设备之间通信的公网地址资源。第一设备与第二设备之间通信的公网地址资源。第一设备与第二设备之间通信的公网地址资源。
技术研发人员:黄默冰 张树坤 于效强
受保护的技术使用者:新华三技术有限公司
技术研发日:2023.05.27
技术公布日:2023/8/28
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/