CN107395496A - 一种数据转发方法、装置、网关设备和存储介质 - Google Patents
一种数据转发方法、装置、网关设备和存储介质 Download PDFInfo
- Publication number
- CN107395496A CN107395496A CN201710455148.8A CN201710455148A CN107395496A CN 107395496 A CN107395496 A CN 107395496A CN 201710455148 A CN201710455148 A CN 201710455148A CN 107395496 A CN107395496 A CN 107395496A
- Authority
- CN
- China
- Prior art keywords
- port
- mark
- address
- triple
- network
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/255—Maintenance or indexing of mapping tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2557—Translation policies or rules
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种数据转发方法、装置、网关设备和存储介质;本发明实施例采用接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址,然后,根据目的地址、目的端口、源地址获取相应的三元组,其中,三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,获取三元组对应的端口标识集合,端口标识集合包括端口标识、及其对应的端口状态信息,根据端口状态信息,从该端口标识集合中查找可用端口标识,根据三元组和该可用端口标识对应的第二网络本地端口向该服务器转发数据包;该方案无需频繁地对连接表进行加锁并在连接表中查找连接,可以降低数据转发的延迟,极大地提升了数据转发的性能。
Description
技术领域
本发明涉及通讯技术领域,具体涉及一种数据转发方法、装置、网关设备和存储介质。
背景技术
网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。
目前,通讯领域中可以通过网关设备集群来实现两个网络之间的通讯,比如,通过网关设备可以实现内网和外网之间的数据通讯。
其中,网关设备在转发数据时,需要查询可用的端口。目前的可用端口查询方式为:逐个轮询所有的端口如6553个端口,然后,对当前网关设备上的连接表进行加锁即锁定,在加锁后的连接表中查询是否存在当前轮询到的端口所对应的连接,若存在,则轮询一个端口,若不存在,则表示当前轮询到的端口为可用端口。
由于,目前的可用端口查询方式需要频繁地对连接表进行加锁并在连接表中查找,因此,会降低数据转发的性能。
发明内容
本发明实施例提供一种数据转发方法、装置、网关设备和存储介质,可以提升数据转发的性能。
本发明实施例提供一种数据转发方法,包括:
接收第一网络中终端发送的数据包,所述数据包携带源地址、源端口、目的端口以及目的地址;
根据所述目的地址、所述目的端口、所述源地址获取相应的三元组,其中,所述三元组包括第二网络中服务器的地址、端口以及第二网络本地地址;
获取三元组对应的端口标识集合,所述端口标识集合包括端口标识、以及所述端口标识对应的端口状态信息;
根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识;
根据所述三元组和所述可用端口标识对应的第二网络本地端口向所述服务器转发所述数据包。
相应的,本发明实施例还提供了数据转发装置,包括:
接收单元,用于接收第一网络中终端发送的数据包,所述数据包携带源地址、源端口、目的端口以及目的地址;
第一获取单元,用于根据所述目的地址、所述目的端口、所述源地址获取相应的三元组,其中,所述三元组包括第二网络中服务器的地址、端口以及第二网络本地地址;
第二获取单元,用于获取三元组对应的端口标识集合,所述端口标识集合包括端口标识、以及所述端口标识对应的端口状态信息;
端口查找单元,用于根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识
数据转发单元,用于根据所述三元组和所述可用端口标识对应的第二网络本地端口向所述服务器转发所述数据包。
相应的,本发明实施例还提供一种网关设备包括存储器和处理器,所述存储器存储有指令,所述处理器加载所述指令以执行本发明实施例任一提供的数据转发方法。
相应的,本发明实施例还提供一种存储介质,所述存储介质存储有指令,所述指令被处理器执行时实现本发明实施例任一提供的方法的步骤。
本发明实施例采用接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址,然后,根据该目的地址、该目的端口、该源地址获取相应的三元组,其中,该三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,获取三元组对应的端口标识集合,该端口标识集合包括端口标识、以及端口标识对应的端口状态信息,根据端口标识集合内端口标识对应的端口状态信息,从该端口标识集合中查找可用端口标识,根据该三元组和该可用端口标识对应的第二网络本地端口向该服务器转发该数据包;该方案无需频繁地对连接表进行加锁并在连接表中查找连接,可以降低数据转发的延迟,极大地提升数据转发的性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有的可用端口查询的示意图;
图2是本发明实施例提供的数据转发系统的场景示意图;
图3是本发明实施例提供的数据转发方法的流程示意图;
图4a是本发明实施例提供的数据转发系统的另一场景示意图;
图4b是本发明实施例提供的数据转发方法的另一流程示意图;
图4c是本发明实施例提供的数据转发系统的架构图;
图5a是本发明实施例提供的数据转发装置的第一种结构示意图;
图5b是本发明实施例提供的数据转发装置的第二种结构示意图;
图5c是本发明实施例提供的数据转发装置的第三种结构示意图;
图6是本发明实施例提供的网关设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,当网关设备接收到新请求时,目前的可用端口查询方式为:逐个轮询所有的端口如6553个端口,然后,对当前网关设备上的连接表进行加锁即锁定,在加锁后的连接表中查询是否存在当前轮询到的端口所对应的连接,并返回结果,若存在,则轮询一个端口,若不存在,则表示当前轮询到的端口为可用端口,则基于该可以端口服务器集群中相应的服务器转发请求。可见,目前的可用端口查询方式需要频繁地对连接表进行加锁并在连接表中查找,因此,会降低数据转发的性能。本发明实施例提供了一种数据转发方法、装置、网关设备和存储介质。
本发明实施例提供一种数据转发系统,该系统包括本发明实施例任一提供的数据转发装置,该数据转发装置可以集成在网关设备中,该网关设备可以为提供网关功能的设备,如提供NAT(Network Address Translation,网络地址转换)、FULLNAT等网关功能的设备。例如网关设备可以为LD(提供FULLNAT网关功能的服务器)等。此外,该系统还可以包括其他设备,比如,终端和提供业务的服务器等。
参考图2,本发明实施例提供了一种数据转发系统,包括:提供FULLNAT网关功能的服务器即LD,终端和服务器,终端位于第一网络中,服务器位于第二网络中,LD分别连接第一网络和第二网络,实现第一网络与第二网络之间的数据转发。其中,服务器可以为RS(real server,提供真实服务的后端服务器)。具体地数据转发过程如下:
第一网络中的终端向LD发送数据包,该数据包携带源地址、源端口、目的端口以及目的地址,LD根据该目的地址、该目的端口、该源地址获取相应的三元组,其中,该三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,LD获取三元组对应的端口标识集合,该端口标识集合包括端口标识、以及端口标识对应的端口状态信息,根据端口标识集合内端口标识对应的端口状态信息,从该端口标识集合中查找可用端口标识,根据该三元组和该可用端口标识对应的第二网络本地端口向该服务器转发该数据包。
此外,服务器还可以向LD发送数据包,LD可以将该数据转发给第一网络中的终端。
以下将分别进行详细说明。
实施例一、
本实施例将从数据转发装置的角度进行描述,该数据转发装置具体在网关设备中,该网关设备可以为提供网关功能的设备,如提供网关功能的服务器等。
可选地,网关设备可以包括提供NAT(Network Address Translation,网络地址转换)、FULLNAT网关功能的设备等,比如,LD(提供FULLNAT网关功能的服务器)等。
一种数据转发方法,包括:接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址,然后,根据该目的地址、该目的端口、该源地址获取相应的三元组,其中,该三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,获取三元组对应的端口标识集合,该端口标识集合包括端口标识、以及端口标识对应的端口状态信息,根据端口标识集合内端口标识对应的端口状态信息,从该端口标识集合中查找可用端口标识,根据该三元组和该可用端口标识对应的第二网络本地端口向该服务器转发该数据包。
如图3所示,该数据转发方法的具体流程可以如下:
101、接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址。
其中,第一网络可以广域网(WAN),如公网、外网等;相应的,本实施例中第二网络可以为局域网(LAN),如私网、内网等。
数据包的类型有多种,比如,可以为请求数据包、响应数据包等等。本实施例中的数据包可以遵循预定的网络通讯协议,如超文本传输协议(HTTP,Hyper Text TransferProtocol)。
当第一网络中终端向网关设备发送的数据包可以携带四元组,包括源地址、源端口、目的端口以及目的地址;其中,源地址可以为终端的网络地址,源端口可以为终端的网络端口,目的地址可以为第一网络地址,目的端口可以为第一网络端口。
网关设备可以配置若干第一网络地址和第一网络端口,以便实现与第一网络中设备的数据通讯。
其中,第一网络地址可以由网关设备配置的第一网络的出口地址,比如,当第一网络为外网时,该第一网络地址可以为外网出口地址,如外网出口ip(即vip),该第一网络端口为外网端口(即vport)。
102、根据该目的地址、该目的端口、该源地址获取相应的三元组,其中,该三元组包括第二网络中服务器的地址、端口以及第二网络本地地址。
其中,第二网络本地地址为网关设备本地配置的第二网络的入口地址。该第二网络可以为局域网,如内网、私网等。如第二网络为内网时,该第二网络本地地址可以为内网本地地址即local ip。
本实施例中,为能够实现与第二网络中设备的数据通讯,网关设备可以在本地配置若干第二网络本地地址(local ip)和第二网络本地端口(local port)。本实施例主要介绍是在数据转发过程中查询可用的第二网络本地端口的方式。
本实施例中,在网关设备接收到数据包时,网关设备需要进行地址端口转换,以实现数据转发。比如目的地址转换(DNAT)、源地址转换(SNAT)以及端口转换等。具体地,将数据包的目的地址(即第一网络地址)转换为第二网络中服务器的地址,将数据包的目的端口(即第一网络端口)转换为第二网络中服务器的端口,将数据包的源地址(即终端的地址)转换为第二网络本地地址(local ip)。
可见本实施例三元组可以通过端口地址转换得到,也即步骤“根据该目的地址、该目的端口、该源地址获取相应的三元组”可以包括:
将目的地址、目的端口分别转换成第二网络中服务器的地址、端口;
将该源地址转换成第二网络本地地址;
根据该第二网络本地地址、以及该服务器的地址、端口,组成三元组。
可选地,本实施例可以在接收数据包时,可以先确定第二网络中提供服务的服务器,然后,将目标地址、目的端口分别转换成该服务器的地址、端口。其中,确定提供服务的服务器的方式有多种,比如,可以根据调度算法从服务器集群中确定相应的服务器提供服务或业务。
也即步骤“将目的地址、目的端口分别转换成第二网络中服务器的地址、端口”可以包括:
根据预设调度算法从第二网络的服务器集群中选取相应的服务器;
将该目的地址、该目的端口分别转换成该服务器的地址、端口。
103、获取三元组对应的端口标识集合,其中,端口标识集合包括端口标识、以及端口标识对应的端口状态信息。
其中,端口标识集合内的每个端口标识用于标识相应的第二网络本地端口。该端口标识可以有多种,比如为提高端口查询速度,可以为位图(bitmap)中的位,此时,端口标识集合可以为位图,位图中的每一位代表一个第二网络本地端口。也即步骤“获取三元组对应的端口标识集合”可以包括:获取三元组对应的位图,其中,位图中每一位代表一个第二网络本地端口。
其中,端口标识对应的端口状态信息为端口标识对应的端口的状态信息,该端口状态信息可以包括:用于指示端口处于可用状态或者不可用状态的指示信息。
该指示信息可以根据实际需求设定,比如,可以通过数字来指示端口处于可用状态或者不可用状态,例如,1表示端口处于不可用状态、0表示端口处于可用状态等等。
可选地,为便于查询可用的第二网络本地端口,可以预选建立三元组与端口集合之间的映射关系,这样后续在查询端口时,可基于该映射关系获取相应的端口标识集合,并在该集合内查询可用端口标识。比如,在步骤101之前,本实施例方法还可以包括:
建立地址端口映射关系集合,该地址端口映射关系集合包括:预设三元组与端口标识集合之间的映射关系;
此时,步骤“获取该三元组对应的端口标识集合”可以包括:根据该三元组和地址端口映射关系集合,获取该三元组对应的端口标识集合。
其中,映射关系集合的表现形式可以根据实际需求设定,比如,可以为表格形式。为了提高端口查询速度,本实施例中映射关系集合可以采用哈希表体现,即映射关系集合为哈希表。具体地,将三元组作为关键词key,将三元组对应的端口标识集合作为关键词对应的数据元素。
其中,地址端口映射关系集合的建立可以用户建立,也可以由系统设定。本实施例中建立映射关系集合的方式有多种,比如,可以先获取每个服务器的端口和地址,然后,针对每个服务器的端口、地址与第二网络本地地址建立映射关系,得到映射关系集合。也即步骤“建立地址端口映射关系集合”可以包括:
获取第二网络中服务器的地址、端口,得到服务器对应的二元组;
获取本地配置的第二网络本地地址;
根据配置的第二网络本地地址以及该二元组,组成相应的三元组,得到预设三元组;
建立预设三元组与端口标识集合之间的映射关系,得到地址端口映射关系集合。
比如,建立预设三元组与端口标识集合之间的映射关系后,可以将该映射关系添加到初始映射关系集合中,以更新关系集合。
例如,当下发规则时,对于每个RS的二元组和每个local ip组成相应的三元组,针对每个三元组逐个创建位图,一个三元组可以对应一个位图,然后,将三元组及其对应的位图添加到哈希表中。
可选地,由于网关设备上端口只有一组,每个三元组对应的端口标识集合中的端口标识是相同的。为了节省资源,不同三元组可以对应同一个端口标识集合。因此,本实施例中多个三元组可以对应同一个端口标识集合,此时地址端口映射关系集合包括多个预设三元组与一个端口标识集合之间的映射关系,也即,多个预设三元组对应同一个端口标识集合。
比如,在映射关系集合为哈希表时,哈希表中各key对应的数据元素可以是同一数据元素。在端口标识集合为位图时,不同三元组对应同一位图。
此外,本实施例中每个三元组还可以各自对应一个端口标识集合,此时,地址端口映射关系集合中每个预设三元组可以各自对应一个端口标识集合。在数据转发或端口查找时,为了保证各端口标识集合内的端口状态信息保持一致,以提升数据转发性能,本实施例还需要对端口标识集合内的状态信息进行同步。具体地,步骤“建立预设三元组与端口标识集合之间的映射关系”可以包括:
获取待建立映射关系的多个端口标识集合;
对每个端口标识集合内的端口状态信息进行同步;
建立同步后的端口标识集合与预设三元组之间的映射关系,得到地址端口映射关系集合。
其中,多个端口标识集合包括相同的端口标识,比如均包含端口1、端口2……端口65535。考虑到每个端口标识集合内端口标识对应的状态信息可能不相同,会导致数据转发失败,因此,本实施例可以对每个端口标识集合内的端口状态信息进行同步,使得每个端口标识集合中相同端口标识对应的端口状态信息相同。比如,使得每个端口标识集合中端口1对应的端口状态信息保持一致。
例如,可以对待建立映射关系的多个位图进行值同步,使得每个位图与其他位图的位值相同。可选地,当需要删除映射关系,需要基于待删除的三元组从映射关系集合将相应的端口标识如位图删除;例如从哈希表中将该三元组及其对应的位图摘除。
104、根据端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识。
本实施例中在获取三元组对应的端口标识集合后,可以在端口标识集合中查询可用端口标识。具体地,可以在端口标识集合查找端口状态信息符合预设可用状态条件的端口标识,该端口标识即为可用端口标识。
其中,预设可用状态条件可以视状态信息而定,比如,当端口状态信息包括用于指示端口处于可用状态或者不可用状态的指示信息时,该预设可用状态条件包括端口状态信息为用于指示端口处于可用状态的指示信息。
为提高可用端口的查询速度,本实施例可以对端口标识设置相应的值以指示该端口标识对应的端口是否可用,也即端口状态信息可以包括:指示端口处于可用状态、或者不可用状态的端口标识值。例如,设置端口标识的值为第一预设值(如0),表示该端口标识对应的端口处于空闲状态,为可用端口;可以设置端口标识的值为第二预设值(如1),表示该端口标识对应的端口被占用不可用。其中,第一预设值和第二预设值可以根据实际需求设定,比如,第一预设值为2、第二预设值位3等等。
具体地,步骤“根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识”可以包括:
在该端口标识集合中查找端口标识值为第一预设值的目标端口标识,所述第一预设值用于指示端口处于可用状态;
将该目标端口标识作为可用端口标识。
例如,当端口标识集合为位图时,可以根据端口被占用情况设置位图中每一为的值,如当端口被占用后,将位图中相应的位设置为1,当端口未被占用(如释放)时,将位图中相应的位设置0。此时,步骤“所述第一预设值用于指示端口处于可用状态”可以包括:在位图中查找位值为0的位,该位即为可用端口标识。
实际应用中,可以遍历端口标识集合中的标识,以确定标识值为第一预设值的端口标识;也即步骤“在该端口标识集合中查找端口标识值为第一预设值的目标端口标识”可以包括:
遍历端口标识集合中的端口标识;
确定当前遍历到的端口标识的值是否为第一预设值;
若是,则确定当前遍历到的端口标识为目标端口标识;
若否,则遍历下一个端口标识,直到遍历完集合内所有的标识。
为了方便端口管理,本实施例在查找到端口标识值为第一预设值的目标端口标识时,可以将该目标端口标识的值设置为第二预设值,第二预设值用于指示端口处于不可用状态。在多个三元组各自对应一个端口标识集合的情况下,为了后续端口查找的准确性,本实施例在查找到目标端口标识之后,可以将所有端口标识集合内目标端口标识对应的标识值设置为第二预设值。
例如,可以遍历位图的所有位,找出位值为0的位,如果找到第N位为0,那么可用端口为N对应的端口,并将第N位的值设置为1;或者在每个三元组各自对应一个位图的情况下,可以将所有位图中的第N位的值设置为1。
可选地,为了便于对可用端口的管理,当连接释放时如连接超时释放时,可以通过该连接对应的三元组和端口将端口标识集合中相应端口标识的值更新为第一预设值。也即本实施例方法还可以包括:
当连接释放时,获取该连接对应的目标三元组,以该目标三元组对应的目标端口;
获取该目标三元组对应的目标端口标识集合;
根据该目标端口将该目标端口标识集合中相应端口标识的值更新为第一预设值。
在每个三元组各自对应一个端口标识集合的情况下,本实施例可以将每个端口标识集合中目标端口对应的端口标识值均更新为第一预设值,实现端口状态同步。
例如,如果连接超时释放,通过连接对应的三元组(rsip+rsport+lip)查找哈希表得到位图,并将连接对应的端口为端口P(对应位图中的第P位),那么可以将位图中第P位清0;在多个三元组各自对应一个位图的情况下,可以将每个位图中第P位清0,实现端口状态同步。
105、根据三元组和可用端口标识对应的第二网络本地端口向该服务器转发该数据包。
比如,可以将数据包的源端口转换成可用端口标识对应的第二网络本地端口,然后,根据三元组和该第二网络本地端口,组成四元组,根据该四元组向服务器转发该数据包。
由上可知,本发明实施例采用接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址,然后,根据目的地址、目的端口、源地址获取相应的三元组,其中,三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,获取三元组对应的端口标识集合,该端口标识集合包括端口标识、以及端口标识对应的端口状态信息,根据端口标识集合内端口标识对应的端口状态信息,从该端口标识集合中查找可用端口标识,根据三元组和可用端口标识对应的第二网络本地端口向该服务器转发该数据包;该方案无需频繁地对连接表进行加锁并在连接表中查找连接,可以降低数据转发的延迟,极大地提升数据转发的性能。
实施例二、
根据实施例一所描述的方法,以下将作进一步详细说明。
如图4a所示,本实施例提供了一种数据转发系统,包括:提供FULLNAT网关功能的网关服务器即LD,终端和服务器集群,终端位于第一网络中,服务器集群位于第二网络中,LD分别连接第一网络和第二网络,实现第一网络与第二网络之间的数据转发。其中,服务器集群可以包括多个提供业务或服务器的服务器,比如服务器可以为RS(real server,提供真实服务的后端服务器)。
下面将基于图4b所示的数据转发系统,来对本发明的数据转发方法进一步描述。
如图4b所示,一种数据转发方法,具体流程可以如下:
201、终端向网关服务器发送数据包,其中,数据包携带源地址、源端口、目的端口以及目的地址。
其中,第一网络可以广域网(WAN),如公网、外网等;相应的,本实施例中第二网络可以为局域网(LAN),如私网、内网等。
该数据包的类型有多种,比如,可以为请求数据包、响应数据包等等。本实施例中的数据包可以遵循预定的网络通讯协议,如超文本传输协议(HTTP,HyperText TransferProtocol)。
其中,数据包携带四元组,包括源地址、源端口、目的端口以及目的地址。源地址可以为终端的网络地址,源端口可以终端的网络端口,目的端口可以为第一网络地址(vip),目的端口可以为第一网络端口(vport)。比如,当终端通过客户端发送数据包时,该源端口为客户端的网络地址(cport)、源地址为客户端的网络地址(cip),此时四元组包括:源地址cip、源端口cport、目的地址vip、目的端口vport。
网关服务器在数据转发之前可以预先配置若干第一网络地址和第一网络端口。
202、网关服务器根据预设调度算法从服务器集群确定提供服务的目标服务器。
其中,预设调度算法可以根据实际需求设定,比如,可以根据服务器集群内服务器的负载选取目标服务器。
203、网关服务器将目的地址、目的端口转换成目标服务器的地址、端口,以及将源地址转换成第二网络本地地址,得到三元组。
其中,该三元组包括目标服务器的地址、端口以及第二网络本地地址。
网关服务器在接收到数据包时,可以同时做SNAT和DNAT,将目的地址vip转换为rsip,目的端口vport转换为rsport,源地址cip转换为local ip,从而得到三元组(rsip、rsport、local ip)。
204、网关服务器根据三元组和地址端口映射关系集合,获取三元组对应的端口标识集合。
该端口标识集合包括端口标识、以及端口标识对应的端口状态信息。
其中,端口标识集合内的每个端口标识用于标识相应的第二网络本地端口。该端口标识可以有多种,比如为提高端口查询速度,可以为位图(bitmap)中的位,此时,端口标识集合可以为位图,位图中的每一位代表一个的第二网络本地端口。
其中,端口标识对应的端口状态信息为端口标识对应的端口(即第二网络本地端口)的状态信息,该端口状态信息可以包括:用于指示端口(即第二网络本地端口)处于可用状态或者不可用状态的指示信息。
该指示信息可以根据实际需求设定,比如,可以通过数字来指示端口处于可用状态或者不可用状态,例如,1表示端口处于不可用状态、0表示端口处于可用状态等等。
本实施例中,映射关系集合的表现形式可以根据实际需求设定,比如,可以为表格形式。为了提高端口查询速度,本实施例中映射关系集合可以采用哈希表体现,即映射关系集合为哈希表。具体地,将三元组作为关键词key为三元组,将三元组对应的端口标识集合作为关键词对应的数据元素。
比如,通过三元组(rsip、rsport、local ip)以及哈希表查找该三元组(rsip、rsport、local ip)对应的位图。
其中,地址端口映射关系集合的建立可以用户建立,也可以由系统设定。比如,网关服务器可以获取RS对应的二元组(rsip、rsport),以及网关服务器本地配置的local ip(如lip1、lip2、lip3、lip4),然后,通过对二元组和local ip组合,得到若干三元组,如(rsip、rsport、local ip1)、(rsip、rsport、local ip2)、……(rsip、rsport、local ip4)。接着网关服务器建立三元组与端口标识集合之间的映射关系,如针对每个三元组创建位图,以建立三元组与位图之间的映射关系,然后,将该映射关系添加到映射关系集合中,如将三元组及其对应位图添加到哈希表中。
可选地,由于网关设备上端口只有一组,每个三元组对应的端口标识集合中的端口标识是相同的。为了节省资源,不同三元组可以对应同一个端口标识集合,此时地址端口映射关系集合包括多个不同的预设三元组与相同端口标识集合之间的映射关系。比如,不同的三元组对应相同的位图。
例如,在映射关系集合为哈希表时,哈希表中各key对应的数据元素可以是同一数据元素。在端口标识集合为位图时,不同三元组对应同一位图。
此外,本实施例中每个三元组还可以各自对应一个端口标识集合,此时,地址端口映射关系集合中每个预设三元组可以各自对应一个端口标识集合。在数据转发或端口查找时,为了保证各端口标识集合内的端口状态信息保持一致,以提升数据转发性能,本实施例还需要预先对端口标识集合内的状态信息进行同步。比如,在建立映射关系时,可以对每个端口标识集合内的端口状态信息进行同步。
譬如,可以对待建立映射关系的多个位图进行值同步,使得每个位图与其他位图的位值相同。
205、网关服务器根据端口标识集合内端口标识对应的端口状态信息,从端口标识集合中查找可用端口标识。
为提高可用端口的查询速度,本实施例可以对端口标识设置相应的值以指示该端口标识对应的端口是否可用,也即端口状态信息可以包括:指示端口处于可用状态、或者不可用状态的端口标识值。例如,设置端口标识的值为第一预设值(如0),表示该端口标识对应的端口处于空闲状态,为可用端口;可以设置端口标识的值为第二预设值(如1),表示该端口标识对应的端口被占用不可用。其中,第一预设值和第二预设值可以根据实际需求设定,比如,第一预设值为2、第二预设值位3等等。
例如,当端口标识集合为位图时,可以根据端口被占用情况设置位图中每一为的值,如当端口被占用后,将位图中相应的位设置为1,当端口未被占用(如释放)时,将位图中相应的位设置0。
此时,网关服务器可以遍历位图的所有位,查找位值为0的位,该位即为可用端口标识。如果找到第N位为0,那么可用端口为N,并将第N位置1。
为了方便端口管理,本实施例在查找到端口标识值为第一预设值的目标端口标识时,可以该目标端口标识的值设置为第二预设值,第二预设值用于指示端口处于不可用状态。在多个三元组各自对应一个端口标识集合的情况下,为了后续端口查找的准确性,本实施例在查找到目标端口标识之后,可以将所有端口标识集合内目标端口标识对应的标识值设置为第二预设值。
例如,可以遍历位图的所有位,找出位值为0的位,如果找到第N位为0,那么可用端口为N对应的端口,并将第N位的值设置为1;或者在每个三元组各自对应一个位图的情况下,可以将所有位图中的第N位的值设置为1。
206、网关服务器将源端口转换成目标端口标识对应的第二网络本地端口,得到四元组。
其中,四元组包括:目标服务器的地址(rsip)、端口(rsport)以及第二网络本地地址(local ip)、第二网络本地端口(local port)。
比如,查找到第N位为0时,表明第N位对应的第二网络本地端口local port为可用端口,即local port N为可用端口;那么此时可以源端口cport转换成local port N,便得到数据转发四元组(rsip、rsport、local ip、local port N)。
207、网关服务器根据四元组向服务器集群内的目标服务器转发数据包。
例如,网关服务器可以根据四元组(rsip、rsport、local ip、local port)向目标服务器转发数据包。
可选地,为节省资源,当连接释放时如连接超时释放时,可以通过该连接对应的三元组和端口将端口标识集合中相应端口标识的值更新为第一预设值;在每个三元组各自对应一个端口标识集合的情况下,本实施例可以将每个端口标识集合中目标端口对应的端口标识值均更新为第一预设值,实现端口状态同步。例如,如果连接超时释放,通过连接对应的三元组(rsip+rsport+lip)查找哈希表得到位图,并将连接对应的端口为端口P(对应位图中的第P位),那么可以将位图中第P位清0;在多个三元组各自对应一个位图的情况下,可以将每个位图中第P位清0,实现端口状态同步。
根据上述数据转发的描述,本实施例还提供了一种数据转发系统的架构图,参考图4c,每个LD拥有一个local ip列表,包括4个local ip(lip1、lip2、lip3、lip4),所有service共享这个列表。当client访问service时,根据service的调度算法挑选出一个RS,然后通过轮询从共享的local ip列表中挑选出一个lip,最后使用三元组(rsip+rsport+lip)查找全局的哈希表得到对应的位图;然后遍历位图的所有位,找出下一个为0的位,这个效率是非常高的,如果找到第N位为0,那么可用端口为N,并将第N位置1。
如果连接超时释放,通过连接中保存的三元组(rsip+rsport+lip)查找哈希表得到位图,并将连接中保存的端口P转换为位图中第P位,然后将位图中第P位清0。
由上可知,本发明实施例提供了一种FULLNAT网关的快速查找可用端口的方案,该方案包括接收第一网络中终端发送的数据包,然后,根据数据包的目的地址、目的端口、源地址获取相应的三元组,其中,三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,获取三元组对应的端口标识集合,该端口标识集合包括端口标识、以及端口标识对应的端口状态信息,根据端口标识集合内端口标识对应的端口状态信息,从该端口标识集合中查找可用端口标识,根据该三元组和该可用端口标识对应的第二网络本地端口向该服务器转发该数据包;该方案无需频繁地对连接表进行加锁并在连接表中查找连接,可以解决查找可用端口的性能瓶颈问题,最大程度降低FULLNAT网关的转发延迟,提高集群和网关的数据转发能力。
实施例三、
为了更好地实施以上方法,本发明实施例还提供数据转发装置,如图5a所示,该数据转发包括:接收单元301、第一获取单元302、第二获取单元303、端口查找单元304和数据转发单元305,如下:
(1)接收单元301;
接收单元301,用于接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址。
其中,第一网络可以广域网(WAN),如公网、外网等,相应的,第二网络可以为局域网(LAN),如私网、内网等。
数据包的类型有多种,比如,可以为请求数据包、响应数据包等等。本实施例中的数据包可以遵循预定的网络通讯协议,如超文本传输协议(HTTP,Hyper Text TransferProtocol)。
当第一网络中终端向网关设备发送的数据包可以携带四元组,包括源地址、源端口、目的端口以及目的地址;其中,源地址可以为终端的网络地址,源端口可以终端的网络端口,目的端口可以为第一网络地址,目的端口可以为第一网络端口。
其中,第一网络地址可以由网关设备配置的第一网络的出口地址,比如,当第一网络为外网时,该第一网络地址可以为外网出口地址,如外网出口ip(即vip),该第一网络端口为外网端口(即vport)。
(2)第一获取单元302;
第一获取单元302,用于根据该目的地址、该目的端口、该源地址获取相应的三元组,其中,该三元组包括第二网络中服务器的地址、端口以及第二网络本地地址。
其中,第二网络本地地址为网关设备本地配置的第二网络的入口地址。该第二网络可以为局域网,如内网、私网等。如第二网络为内网时,该第二网络本地地址可以为内网本地地址即local ip。
为能够实现与第二网络中设备的数据通讯,网关设备可以在本地配置若干第二网络本地地址(local ip)和第二网络本地端口(local port)。
本实施例中,在网关设备接收到数据包时,网关设备需要进行地址端口转换,以实现数据转发。具体地,将数据包的目的地址(即第一网络地址)转换为第二网络中服务器的地址,将数据包的目的端口(即第一网络端口)转换为第二网络中服务器的端口,将数据包的源地址(即终端的地址)转换为第二网络本地地址(local ip)。
比如,第一获取单元302,可以具体用于:将目的地址、目的端口分别转换成第二网络中服务器的地址、端口;将该源地址转换成第二网络本地地址;根据该第二网络本地地址、以及该服务器的地址、端口,组成三元组。其中,第一获取单元302可以根据预设调度算法从第二网络的服务器集群中选取相应的服务器,将该目的地址、该目的端口分别转换成该服务器的地址、端口。
(3)第二获取单元303;
第二获取单元303,用于获取三元组对应的端口标识集合,所述端口标识集合包括端口标识、以及所述端口标识对应的端口状态信息。
其中,端口标识集合内每个端口标识用于标识相应的第二网络本地端口。该端口标识可以有多种,比如为提高端口查询速度,可以为位图(bitmap)中的位,此时,端口标识集合可以为位图,位图中的每一位代表一个的第二网络本地端口。
此时,第二获取单元303可以用于获取三元组对应的位图,其中,位图中每一位代表一个第二网络本地端口。
其中,端口标识对应的端口状态信息为端口标识对应的端口的状态信息,该端口状态信息可以包括:用于指示端口处于可用状态或者不可用状态的指示信息。
该指示信息可以根据实际需求设定,比如,可以通过数字来指示端口处于可用状态或者不可用状态,例如,1表示端口处于不可用状态、0表示端口处于可用状态等等。
可选地,为便于查询可用的第二网络本地端口,可以预选建立三元组与端口集合之间的映射关系,这样后续在查询端口时,可基于该映射关系获取相应的端口标识集合,并在该集合内查询可用端口标识。参考图5b,本实施例装置还可以包括:建立单元306;
该建立单元306,可以用于在接收单元301接收数据包之前,建立地址端口映射关系集合,该地址端口映射关系集合包括:预设三元组与端口标识集合之间的映射关系;
第二获取单元303,可以用于:根据该三元组和地址端口映射关系集合,获取该三元组对应的端口标识集合。
其中,映射关系集合的表现形式可以根据实际需求设定,比如,可以为表格形式。为了提高端口查询速度,本实施例中映射关系集合可以采用哈希表体现,即映射关系集合为哈希表。具体地,将三元组作为关键词key,将三元组对应的端口标识集合作为关键词对应的数据元素。
其中,建立单元306,可以用于:
获取第二网络中服务器的地址、端口,得到服务器对应的二元组;
获取本地配置的第二网络本地地址;
根据配置的第二网络本地地址以及二元组,组成相应的三元组,得到预设三元组;
建立预设三元组与端口标识集合之间的映射关系,得到地址端口映射关系集合。
可选地,由于网关设备上端口只有一组,每个三元组对应的端口标识集合中的端口标识是相同的。为了节省资源,不同三元组可以对应同一个端口标识集合。因此,本实施例中多个三元组可以对应同一个端口标识集合,此时地址端口映射关系集合包括多个预设三元组与一个端口标识集合之间的映射关系,也即,多个预设三元组对应同一个端口标识集合。
此外,本实施例中每个三元组还可以各自对应一个端口标识集合,此时,地址端口映射关系集合中每个预设三元组可以各自对应一个端口标识集合。在数据转发或端口查找时,为了保证各端口标识集合内的端口状态信息保持一致,以提升数据转发性能,本实施例还需要对端口标识集合内的状态信息进行同步。
此时,建立单元306可以用于:
获取待建立映射关系的多个端口标识集合;
对每个端口标识集合内的端口状态信息进行同步;
建立同步后的端口标识集合与预设三元组之间的映射关系,得到地址端口映射关系集合。
可选地,第二获取单元303还可以用于在查找到可用端口标识之后,将端口标识集合中所述目标端口标识对应的端口标识值更新为第二预设值,所述第二预设值用于指示端口处于不可用状态。
(4)、端口查找单元304;
端口查找单元304,用于根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识。
比如,端口查找单元304可以用于在端口标识集合查找端口状态信息符合预设可用状态条件的端口标识,该端口标识即为可用端口标识。
其中,预设可用状态条件可以视状态信息而定,比如,当端口状态信息包括用于指示端口处于可用状态或者不可用状态的指示信息时,该预设可用状态条件包括端口状态信息为用于指示端口处于可用状态的指示信息。
为提高可用端口的查询速度,本实施例可以对端口标识设置相应的值以指示该端口标识对应的端口是否可用,也即端口状态信息可以包括:指示端口处于可用状态、或者不可用状态的端口标识值。例如,设置端口标识的值为第一预设值(如0),表示该端口标识对应的端口处于空闲状态,为可用端口;可以设置端口标识的值为第二预设值(如1),表示该端口标识对应的端口被占用不可用。其中,第一预设值和第二预设值可以根据实际需求设定,比如,第一预设值为2、第二预设值位3等等。
比如,端口查找单元304,可以用于在该端口标识集合中查找端口标识值为第一预设值的目标端口标识;将该目标端口标识作为可用端口标识,所述第一预设值用于指示端口处于可用状态。
例如,当端口标识集合为位图时,可以根据端口被占用情况设置位图中每一为的值,如当端口被占用后,将位图中相应的位设置为1,当端口未被占用(如释放)时,将位图中相应的位设置0。
实际应用中,可以遍历端口标识集合中的标识,以确定标识至为第一预设值的端口标识,端口查找单元304可以用于:
遍历端口标识集合中的端口标识;
确定当前遍历到的端口标识的值是否为第一预设值;
若是,则确定当前遍历到的端口标识为目标端口标识;
若否,则遍历下一个端口标识,直到遍历完集合内所有的标识。
(5)数据转发单元305;
数据转发单元305,用于根据该三元组和该可用端口标识对应的第二网络本地端口向该服务器转发该数据包。
比如,数据转发单元305可以将数据包的源端口转换成可用端口标识对应的第二网络本地端口,然后,根据三元组和该第二网络本地端口,组成四元组,根据该四元组向服务器转发该数据包。
可选地,为了便于对可用端口的管理,当连接释放时如连接超时释放时,可以通过该连接对应的三元组和端口将端口标识集合中相应端口标识的值更新为第二预设值。参考图5c,本实施例装置还可以包括设置单元307,该设置单元307可以用于:
当连接释放时,获取该连接对应的目标三元组,以及该目标三元组对应的目标端口;
获取该目标三元组对应的目标端口标识集合;
根据该目标端口将该目标端口标识集合中相应端口标识的值更新为第二预设值。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
该数据转发装置具体可以集成网关设备,该网关设备可以为提供网关功能的服务器等,比如提供NAT(Network Address Translation,网络地址转换)、FULLNAT网关功能的服务器等。
由上可知,本发明实施例采用接收单元301接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址,然后,由第一获取单元302根据目的地址、目的端口、源地址获取相应的三元组,其中,三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,由第二获取单元303获取三元组对应的端口标识集合,该端口标识集合包括端口标识、以及端口标识对应的端口状态信息,由端口查找单元304根据端口标识集合内端口标识对应的端口状态信息,从该端口标识集合中查找可用端口标识,由数据转发单元305根据该三元组和该可用端口标识对应的第二网络本地端口向该服务器转发该数据包;该方案无需频繁地对连接表进行加锁并在连接表中查找连接,可以降低数据转发的延迟,极大地提升数据转发的性能。
实施例四、
为了更好地实施以上方法,本发明实施例还提供了一种网关设备,该网关设备可以提供网关功能设备,如提供网关功能的服务器等。
比如,网关设备可以包括提供NAT(Network Address Translation,网络地址转换)、FULLNAT网关功能的设备等,比如,LD(提供FULLNAT网关功能的服务器)等。
参考图6,本发明实施例提供了一种网关设备400,包括存储器401和处理器402,所述存储器存储有指令,所述处理器402加载所述指令以执行以下步骤:
接收第一网络中终端发送的数据包,所述数据包携带源地址、源端口、目的端口以及目的地址;
根据所述目的地址、所述目的端口、所述源地址获取相应的三元组,其中,所述三元组包括第二网络中服务器的地址、端口以及第二网络本地地址;
获取三元组对应的端口标识集合,所述端口标识集合包括端口标识、以及所述端口标识对应的端口状态信息;
根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识。
可选地,该处理器402还用于执行:在接收数据包之前,建立地址端口映射关系集合,所述地址端口映射关系集合包括:预设三元组与端口标识集合之间的映射关系;此时,步骤“获取所述三元组对应的端口标识集合”可以包括:根据所述三元组和地址端口映射关系集合,获取所述三元组对应的端口标识集合。
可选地,所述端口状态信息包括用于指示端口处于可用状态、或者不可用状态的端口标识值;该处理器402用于执行以下步骤:
在所述端口标识集合中查找端口标识值为第一预设值的目标端口标识,所述第一预设值用于指示端口处于可用状态;
将所述目标端口标识作为可用端口标识。
可选地,该处理器402还用于执行以下步骤:
当连接释放时,获取所述连接对应的目标三元组,以及所述目标三元组对应的目标端口;
获取所述目标三元组对应的目标端口标识集合;
根据所述目标端口将所述目标端口标识集合中相应端口标识的值更新为第一预设值。
可选地,该处理器402还用于执行以下步骤:
在查找到可用端口标识之后,将端口标识集合中所述目标端口标识对应的端口标识值更新为第二预设值,所述第二预设值用于指示端口处于不可用状态。
可选地,该处理器402用于执行以下步骤:
获取第二网络中服务器的地址、端口,得到服务器对应的二元组;
获取本地配置的第二网络本地地址;
根据配置的第二网络本地地址以及二元组,组成相应的三元组,得到预设三元组;
建立预设三元组与端口标识集合之间的映射关系,得到地址端口映射关系集合。
可选地,该处理器402用于执行以下步骤:
根据预设调度算法从第二网络的服务器集群中选取相应的服务器;
将所述目的地址、所述目的端口分别转换成所述服务器的地址、端口;
将所述源地址转换成第二网络本地地址;
根据所述第二网络本地地址、以及所述服务器的地址、端口,组成三元组。
由上可知,本发明实施例提供的终端可以接收第一网络中终端发送的数据包,该数据包携带源地址、源端口、目的端口以及目的地址,然后,根据目的地址、目的端口、源地址获取相应的三元组,其中,三元组包括第二网络中服务器的地址、端口以及第二网络本地地址,获取三元组对应的端口标识集合,该端口标识集合包括端口标识、以及端口标识对应的端口状态信息,根据端口标识集合内端口标识对应的端口状态信息,从该端口标识集合中查找可用端口标识;该方案无需频繁地对连接表进行加锁并在连接表中查找连接,可以降低数据转发的延迟,极大地提升数据转发的性能。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种数据转发方法、装置、网关设备和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (15)
1.一种数据转发方法,其特征在于,包括:
接收第一网络中终端发送的数据包,所述数据包携带源地址、源端口、目的端口以及目的地址;
根据所述目的地址、所述目的端口、所述源地址获取相应的三元组,其中,所述三元组包括第二网络中服务器的地址、端口以及第二网络本地地址;
获取三元组对应的端口标识集合,所述端口标识集合包括端口标识、以及所述端口标识对应的端口状态信息;
根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识;
根据所述三元组和所述可用端口标识对应的第二网络本地端口向所述服务器转发所述数据包。
2.如权利要求1所述的数据转发方法,其特征在于,在接收数据包之前,所述数据转发方法还包括:
建立地址端口映射关系集合,所述地址端口映射关系集合包括:预设三元组与端口标识集合之间的映射关系;
获取所述三元组对应的端口标识集合,包括:根据所述三元组和地址端口映射关系集合,获取所述三元组对应的端口标识集合。
3.如权利要求2所述的数据转发方法,其特征在于,建立预设三元组与端口标识集合之间的映射关系,包括:
获取待建立映射关系的多个端口标识集合;
对每个端口标识集合内的端口状态信息进行同步;
建立同步后的端口标识集合与预设三元组之间的映射关系,得到地址端口映射关系集合。
4.如权利要求1-3任一项所述的数据转发方法,其特征在于,所述端口状态信息包括用于指示端口处于可用状态、或者不可用状态的端口标识值;
根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识,包括:
在所述端口标识集合中查找端口标识值为第一预设值的目标端口标识,所述第一预设值用于指示端口处于可用状态;
将所述目标端口标识作为可用端口标识。
5.如权利要求4所述的数据转发方法,其特征在于,在查找到可用端口标识之后,所述数据转发方法还可以包括:
将端口标识集合中所述目标端口标识对应的端口标识值更新为第二预设值,所述第二预设值用于指示端口处于不可用状态。
6.如权利要求4所述的数据转发方法,其特征在于,所述数据转发方法还包括:
当连接释放时,获取所述连接对应的目标三元组,以及所述目标三元组对应的目标端口;
获取所述目标三元组对应的目标端口标识集合;
根据所述目标端口将所述目标端口标识集合中相应端口标识的值更新为第一预设值。
7.如权利要求2所述的数据转发方法,其特征在于,建立地址端口映射关系集合,包括:
获取第二网络中服务器的地址、端口,得到服务器对应的二元组;
获取本地配置的第二网络本地地址;
根据配置的第二网络本地地址以及二元组,组成相应的三元组,得到预设三元组;
建立预设三元组与端口标识集合之间的映射关系,得到地址端口映射关系集合。
8.如权利要求1所述的数据转发方法,其特征在于,根据所述目的地址、所述目的端口、所述源地址获取相应的三元组,包括:
根据预设调度算法从第二网络的服务器集群中选取相应的服务器;
将所述目的地址、所述目的端口分别转换成所述服务器的地址、端口;
将所述源地址转换成第二网络本地地址;
根据所述第二网络本地地址、以及所述服务器的地址、端口,组成三元组。
9.一种数据转发装置,其特征在于,包括:
接收单元,用于接收第一网络中终端发送的数据包,所述数据包携带源地址、源端口、目的端口以及目的地址;
第一获取单元,用于根据所述目的地址、所述目的端口、所述源地址获取相应的三元组,其中,所述三元组包括第二网络中服务器的地址、端口以及第二网络本地地址;
第二获取单元,用于获取三元组对应的端口标识集合,所述端口标识集合包括端口标识、以及所述端口标识对应的端口状态信息;端口查找单元,用于根据所述端口标识集合内端口标识对应的端口状态信息,从所述端口标识集合中查找可用端口标识;
数据转发单元,用于根据所述三元组和所述可用端口标识对应的第二网络本地端口向所述服务器转发所述数据包。
10.如权利要求9所述的数据转发装置,其特征在于,还包括:建立单元;
所述建立单元,用于在接收单元接收数据包之前,建立地址端口映射关系集合,所述地址端口映射关系集合包括:预设三元组与端口标识集合之间的映射关系;
所述端口查找单元,用于:根据所述三元组和地址端口映射关系集合,获取所述三元组对应的端口标识集合;端口查找子单元,用于在所述端口标识集合中查找可用端口标识。
11.如权利要求10所述的数据转发装置,其特征在于,所述建立单元,用于:
获取待建立映射关系的多个端口标识集合;
对每个端口标识集合内的端口状态信息进行同步;
建立同步后的端口标识集合与预设三元组之间的映射关系,得到地址端口映射关系集合。
12.如权利要求9所述的数据转发装置,其特征在于,所述端口状态信息包括用于指示端口处于可用状态、或者不可用状态的端口标识值;
所述端口查找单元,用于:
在所述端口标识集合中查找端口标识值为第一预设值的目标端口标识,所述第一预设值用于指示端口处于可用状态;
将所述目标端口标识作为可用端口标识。
13.如权利要求12所述的数据转发装置,其特征在于,还包括设置单元;
所述设置单元,用于:当连接释放时,获取所述连接对应的目标三元组,以及所述目标三元组对应的目标端口;
获取所述目标三元组对应的目标端口标识集合;
根据所述目标端口将所述目标端口标识集合中相应端口标识的值更新为第一预设值。
14.一种网关设备,其特征在于,包括存储器和处理器,所述存储器存储有指令,所述处理器加载所述指令以执行如权利要求1-8任一项所述的数据转发方法。
15.一种存储介质,其特征在于,所述存储介质存储有指令,所述指令被处理器执行时实现如权利要求1-8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710455148.8A CN107395496B (zh) | 2017-06-16 | 2017-06-16 | 一种数据转发方法、装置、网关设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710455148.8A CN107395496B (zh) | 2017-06-16 | 2017-06-16 | 一种数据转发方法、装置、网关设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107395496A true CN107395496A (zh) | 2017-11-24 |
CN107395496B CN107395496B (zh) | 2020-12-15 |
Family
ID=60332993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710455148.8A Active CN107395496B (zh) | 2017-06-16 | 2017-06-16 | 一种数据转发方法、装置、网关设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107395496B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109120732A (zh) * | 2018-07-18 | 2019-01-01 | 北京天融信网络安全技术有限公司 | 分布式nat系统中的业务板热插方法、系统及存储介质 |
CN109862435A (zh) * | 2018-11-16 | 2019-06-07 | 京信通信系统(中国)有限公司 | 直播视频的监控方法、装置、计算机存储介质及设备 |
CN110536187A (zh) * | 2018-05-25 | 2019-12-03 | 华为技术有限公司 | 转发数据的方法和接入层交换设备 |
CN110727499A (zh) * | 2019-09-18 | 2020-01-24 | 平安科技(深圳)有限公司 | 资源数据获取的方法、装置、计算机设备和存储介质 |
CN111263381A (zh) * | 2018-12-03 | 2020-06-09 | 中国电信股份有限公司 | 业务处理方法、装置、系统、终端和计算机可读存储介质 |
CN111369712A (zh) * | 2018-12-25 | 2020-07-03 | 金联汇通信息技术有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
CN111447300A (zh) * | 2020-03-26 | 2020-07-24 | 深信服科技股份有限公司 | 一种目标端口确定方法、装置、设备及可读存储介质 |
CN111800308A (zh) * | 2020-05-21 | 2020-10-20 | 视联动力信息技术股份有限公司 | 一种数据处理的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035901A (zh) * | 2009-09-30 | 2011-04-27 | 冲电气网络株式会社 | 通信装置及其通信方法 |
CN103916382A (zh) * | 2013-12-25 | 2014-07-09 | 三亚中兴软件有限责任公司 | 基于sip媒体能力重协商的nat穿越方法、代理服务器和系统 |
CN103945014A (zh) * | 2013-01-21 | 2014-07-23 | 中国科学院声学研究所 | 一种pat模式下的端口复用方法及网络地址转换设备 |
WO2014187212A1 (zh) * | 2013-05-24 | 2014-11-27 | 中兴通讯股份有限公司 | 一种转发报文的方法及装置 |
-
2017
- 2017-06-16 CN CN201710455148.8A patent/CN107395496B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035901A (zh) * | 2009-09-30 | 2011-04-27 | 冲电气网络株式会社 | 通信装置及其通信方法 |
CN103945014A (zh) * | 2013-01-21 | 2014-07-23 | 中国科学院声学研究所 | 一种pat模式下的端口复用方法及网络地址转换设备 |
WO2014187212A1 (zh) * | 2013-05-24 | 2014-11-27 | 中兴通讯股份有限公司 | 一种转发报文的方法及装置 |
CN103916382A (zh) * | 2013-12-25 | 2014-07-09 | 三亚中兴软件有限责任公司 | 基于sip媒体能力重协商的nat穿越方法、代理服务器和系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110536187A (zh) * | 2018-05-25 | 2019-12-03 | 华为技术有限公司 | 转发数据的方法和接入层交换设备 |
CN110536187B (zh) * | 2018-05-25 | 2021-02-09 | 华为技术有限公司 | 转发数据的方法和接入层交换设备 |
CN109120732B (zh) * | 2018-07-18 | 2022-03-11 | 北京天融信网络安全技术有限公司 | 分布式nat系统中的业务板热插方法、系统及存储介质 |
CN109120732A (zh) * | 2018-07-18 | 2019-01-01 | 北京天融信网络安全技术有限公司 | 分布式nat系统中的业务板热插方法、系统及存储介质 |
CN109862435A (zh) * | 2018-11-16 | 2019-06-07 | 京信通信系统(中国)有限公司 | 直播视频的监控方法、装置、计算机存储介质及设备 |
CN111263381A (zh) * | 2018-12-03 | 2020-06-09 | 中国电信股份有限公司 | 业务处理方法、装置、系统、终端和计算机可读存储介质 |
CN111263381B (zh) * | 2018-12-03 | 2023-04-07 | 中国电信股份有限公司 | 业务处理方法、装置、系统、终端和计算机可读存储介质 |
CN111369712A (zh) * | 2018-12-25 | 2020-07-03 | 金联汇通信息技术有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
CN111369712B (zh) * | 2018-12-25 | 2022-04-26 | 金联汇通信息技术有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
CN110727499A (zh) * | 2019-09-18 | 2020-01-24 | 平安科技(深圳)有限公司 | 资源数据获取的方法、装置、计算机设备和存储介质 |
CN110727499B (zh) * | 2019-09-18 | 2024-05-28 | 平安科技(深圳)有限公司 | 资源数据获取的方法、装置、计算机设备和存储介质 |
CN111447300A (zh) * | 2020-03-26 | 2020-07-24 | 深信服科技股份有限公司 | 一种目标端口确定方法、装置、设备及可读存储介质 |
CN111800308A (zh) * | 2020-05-21 | 2020-10-20 | 视联动力信息技术股份有限公司 | 一种数据处理的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107395496B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107395496A (zh) | 一种数据转发方法、装置、网关设备和存储介质 | |
CN104104742B (zh) | 使用网络地址转换和请求重定向的用户平面业务操控 | |
US7382778B2 (en) | Link layer emulation | |
EP1819134B1 (en) | Symmetric network adress translation system using STUN technique and method for implementing the same | |
US8139483B2 (en) | Network traffic control in peer-to-peer environments | |
CN107770062A (zh) | 一种数据包发送方法、装置及网络架构 | |
JPH098838A (ja) | Lanを相互接続するための方法および装置 | |
CN101088264A (zh) | 地址变换装置以及地址变换方法 | |
CN101827039B (zh) | 一种负载分担的方法和设备 | |
JP2001103092A (ja) | Dns問い合わせ装置、dns問い合わせ方法、および記録媒体 | |
CN104601738B (zh) | 一种分布式网络地址转换系统 | |
CN102035900A (zh) | 用于通过中继方式进行nat穿越的方法、系统和中继服务器 | |
CN101436981B (zh) | 在扩展的IPv4网络中的域名服务器系统 | |
CN103200102A (zh) | 一种业务路由方法、装置和系统 | |
US8601140B2 (en) | Method for acquiring traversal resource, peer to peer node and peer to peer system | |
WO2023173720A1 (zh) | 应用访问方法、云端代理及节点代理组件、设备、介质 | |
CN109547452A (zh) | Linux网桥设备上实现TCP透明代理的方法及系统 | |
SE517217C2 (sv) | Metod och system för kommunikation mellan olika nätverk | |
CN107276846A (zh) | 一种网关容灾方法、装置和存储介质 | |
JP2008098887A (ja) | ファイル転送サーバ | |
US7356031B1 (en) | Inter-v4 realm routing | |
CN109889620A (zh) | linux系统下实现网络地址转换环回的方法、装置及存储介质 | |
CN105282034B (zh) | Arp/ndp学习系统及学习方法 | |
JP4773312B2 (ja) | ファイル転送サーバ | |
CN100403713C (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 |