发明内容
为解决现有存在的技术问题,本发明实施例提供一种报文处理方法、NAT设备、电子设备及计算机可读存储介质,至少能够保证私有网络的出数据与私有网络接收到的针对该出数据的反馈数据(入数据)能够通过同一NAT设备进行地址转换,实现私有网络和外部网络之间的正常通信。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种报文处理方法,所述方法包括:
网络地址转换NAT设备获取报文的头信息,所述头信息至少包括所述报文的N元组信息和标记位;其中4≤N≤7,N为一个整数;所述标记位用于表征所述报文为私有网络向外部网络发送的第一类型报文,或用于表征所述报文为外部网络针对所述第一类型报文而反馈回的第二类型报文;
其中,所述第一类型为Vxlan类型,所述第二类型为非Vxlan类型;
所述NAT设备依据所述报文的N元组信息和标记位,在至少两个NAT设备中确定目标NAT设备;和/或,所述NAT设备获取的头信息用于交换机确定目标NAT设备;
其中,所述NAT设备获取的头信息用于交换机确定目标NAT设备,包括:
所述NAT设备依据所述第一类型报文N元组信息中的目的地址和目的端口号信息对获取的头信息进行更新,或依据所述第二类型报文N元组信息中的源IP地址和源端口号信息对获取的头信息进行更新;
所述NAT设备将所述头信息更新后得到的报文发送至所述交换机,以使所述交换机依据所述报文中更新的头信息确定目标NAT设备;
其中,所述目标NAT设备至少为对所述报文进行地址转换或逆转换的NAT设备。
上述方案中,所述方法还包括:
所述NAT设备依据所述标记位,对所述报文的N元组信息进行更新;其中,所述N元组信息至少包括所述报文的源网际协议IP地址、源端口号、目的地址和目的端口号;
所述NAT设备依据所述报文的更新后的N元组信息,在至少两个NAT设备中确定所述报文的目标NAT设备;
和/或,所述更新后的N元组信息用于交换机确定目标NAT设备。
上述方案中,在所述标记位表征为所述报文为私有网络向外部网络发送的第一类型报文时,所述方法包括:
所述NAT设备获取所述第一类型报文的N元组信息中的目的地址和目的端口号信息;依据所述目的地址和目的端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
所述NAT设备依据所述目的地址和目的端口号信息,得到所述第一类型报文的新的源端口号;获得所述第一类型报文的新的源IP地址、新的目的地址和新的目的端口号;所述NAT设备发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至所述交换机,以使所述交换机确定目标NAT设备。
上述方案中,在所述标记位表征为所述报文为外部网络针对所述第一类型报文而反馈回的第二类型报文时,
所述NAT设备获取所述第二类型报文的N元组信息中的源IP地址和源端口号信息;依据源IP地址和源端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
所述NAT设备依据源IP地址和源端口号信息,得到所述第二类型报文的新的源端口号;获得所述第二类型报文的新的源IP地址、新的目的地址和新的目的端口号;所述NAT设备发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至所述交换机,以使所述交换机确定目标NAT设备。
上述方案中,所述方法还包括:
更新所述标记位;
在确定所述NAT设备为目标NAT设备时,
依据更新后的标记位,至少对所述报文进行地址转换或逆转换。
上述方案中,所述确定所述NAT设备为目标NAT设备,包括:
针对所述报文为私有网络向外部网络发送的第一类型报文的情况,所述NAT设备依据所述第一类型报文的N元组信息中的目的地址和目的端口号信息,计算哈希值;
针对所述报文为外部网络针对所述第一类型报文而反馈回的第二类型报文的情况,所述NAT设备依据报文的N元组信息中的源IP地址和源端口号信息,计算哈希值;
将计算出的哈希值与私有网络中存在NAT设备的总数量进行取模运算,得到第一运算结果;
所述NAT设备的虚拟IP地址标识为所述第一运算结果。
本发明实施例提供一种NAT设备,所述设备包括处理器和存储介质;其中,所述存储介质用于存储计算机序;
所述处理器,用于在执行所述存储介质存储的计算机程序时,至少执行以下步骤:
获取报文的头信息,所述头信息至少包括所述报文的N元组信息和标记位;其中4≤N≤7,N为一个整数;所述标记位用于表征所述报文为私有网络向外部网络发送的第一类型报文,或用于表征所述报文为外部网络针对所属第一类型报文而反馈回的第二类型报文;
其中,所述第一类型为Vxlan类型,所述第二类型为非Vxlan类型;
依据所述报文的N元组信息和标记位,在至少两个NAT设备中确定目标NAT设备;和/或,所获取的头信息用于交换机确定目标NAT设备;
其中,所获取的头信息用于交换机确定目标NAT设备,包括:
依据所述第一类型报文N元组信息中的目的地址和目的端口号信息对获取的头信息进行更新,或依据所述第二类型报文N元组信息中的源IP地址和源端口号信息对获取的头信息进行更新;
将所述头信息更新后得到的报文发送至所述交换机,以使所述交换机依据所述报文中更新的头信息确定目标NAT设备;
其中,所述目标NAT设备至少为对所述报文进行地址转换或逆转换的NAT设备。
上述方案中,所述处理器,还用于执行以下步骤:
依据所述标记位,对所述报文的N元组信息进行更新;其中,所述N元组信息至少包括所述报文的源网际协议IP地址、源端口号、目的地址和目的端口号;
依据所述报文的更新后的N元组信息,在至少两个NAT设备中确定所述报文的目标NAT设备;
和/或,所述更新后的N元组信息用于交换机确定目标NAT设备。
上述方案中,所述处理器,还用于执行以下步骤:
在所述标记位表征为所述报文为私有网络向外部网络发送的第一类型报文时,
获取所述第一类型报文的N元组信息中的目的地址和目的端口号信息;依据所述目的地址和目的端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
依据所述目的地址和目的端口号信息,得到所述第一类型报文的新的源端口号;获得所述第一类型报文的新的源IP地址、新的目的地址和新的目的端口号;发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至交换机,以使所述交换机确定目标NAT设备。
上述方案中,所述处理器,还用于执行以下步骤:
在所述标记位表征为所述报文为外部网络针对所述第一类型报文而反馈回的第二类型报文时,
获取所述第二类型报文的N元组信息中的源IP地址和源端口号信息;依据源IP地址和源端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
依据源IP地址和源端口号信息,得到所述第二类型报文的新的源端口号;获得所述第二类型报文的新的源IP地址、新的目的地址和新的目的端口号;发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至交换机,以使所述交换机确定目标NAT设备。
上述方案中,所述处理器,还用于执行以下步骤:
更新所述标记位;
在确定所述NAT设备为目标NAT设备时,
依据更新后的标记位,至少对所述报文进行地址转换或逆转换。
上述方案中,所述处理器,还用于执行以下步骤:
针对所述报文为私有网络向外部网络发送的第一类型报文的情况,依据所述第一类型报文的N元组信息中的目的地址和目的端口号信息,计算哈希值;
针对所述报文为外部网络针对所述第一类型报文而反馈回的第二类型报文的情况,依据报文的N元组信息中的源IP地址和源端口号信息,计算哈希值;
将计算出的哈希值与私有网络中存在NAT设备的总数量进行取模运算,得到第一运算结果;
NAT设备的虚拟IP地址标识为所述第一运算结果。
本发明实施例中还提供了一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现上述任一项所述的方法的步骤。
本发明实施例中还提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令被执行时用于实现上述任一项所述的方法的步骤。
本发明实施例的报文处理方法、NAT设备、电子设备及计算机可读存储介质,目标NAT设备至少依据报文的N元组信息和标记位来确定;其中,N元组信息中包括用于计算与目标设NAT设备对应的hash的各个元素,依据N元组信息和标记位的结合,至少能够保证私有网络的出数据与私有网络接收到的针对该出数据的反馈数据可经过同一NAT设备,进而方便会话的建立,实现私有网络和外部网络之间的正常通信。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
相关技术中,产生私有网络的出数据经过的NAT设备与私有网络接收到的针对该出数据的反馈数据经过的NAT设备不是同一NAT的这一技术问题的原因在于:出数据的报文的N元组中的元素取值与私有网络接收的反馈数据的N元组中的元素取值不同,由此交换机针对出数据计算出的hash值与针对入数据计算出的hash值不同。其中4≤N≤7中的至少一个整数。
其中,本领域技术人员应该而知,四元组包括:源IP地址、目的IP地址、源端口和目的端口。五元组包括:源IP地址、目的IP地址、协议类型、源端口、目的端口。六元组包括:源媒体接入控制(MAC)地址、源IP地址、目的IP地址、协议类型、源端口、目的端口。六元组:源MAC地址、源IP地址、源端口号、目的MAC地址、目的IP地址和目的端口号。七元组:源MAC地址、源IP地址、源端口号、目的MAC地址、目的IP地址、目的端口号和协议类型。
以五元组为例(对于其它元组的理解请参照五元组的描述),
对于私有网络的出数据而言,源IP地址为产生出数据的客户端使用的私有网络的IP地址,源端口为产生出数据的客户端的端口号,目的地址是私有网络要访问的外部网络的IP地址,目的端口为访问目的地址使用的端口号。协议类型为传输控制协议(TCP,Transmission Control Protocol)或用户数据报协议(User Datagram Protocol,UDP)协议。关于元组中的各个元素的含义说明具体请参见现有相关说明,不赘述。
可以理解,hash值的取值由N元组中的各元素的取值而定。要达到出数据与针对该出数据的入数据经过同一NAT设备进行地址转换的技术效果,至少可从为出数据计算的hash值与为入数据计算的hash值为相同的数值这一角度入手。如何能够使得这两个hash值为相同可参照如下方案描述。
本发明提供的报文处理方法的第一实施例,如图2所示,所述方法包括:
步骤201:获取报文的头信息,所述头信息至少包括所述报文的N元组信息和标记位;
其中,所述N元组信息请参见前述相关说明,不赘述。标记位是为实现本方案可在报文的头信息中增加的比特(bit)位,可占用至少一个比特,具体占用几个bit视具体情况而灵活设定。
步骤202:NAT设备依据所述报文的N元组信息和标记位,在至少两个NAT设备中确定目标NAT设备;和/或,所述NAT设备获取的头信息用于交换机确定目标NAT设备;其中,所述目标NAT设备至少为对所述报文进行地址转换或逆转换的NAT设备。
执行步骤201的主体为NAT设备。执行步骤202的主体可以仅为NAT设备,也可以仅为交换机,还可以同时为NAT设备和交换机。
上述方案中,目标NAT设备至少依据报文的N元组信息和标记位来确定;其中,N元组信息中包括用于计算与目标设NAT设备对应的hash的各个元素,依据N元组信息和标记位的结合,至少能够保证私有网络的出数据与私有网络接收到的针对该出数据的反馈数据可经过同一NAT设备,进而方便会话的建立,实现私有网络和外部网络之间的正常通信。
在一个可选的方案中,所述步骤202还可以包括:
步骤202a:依据所述标记位,对所述报文的N元组信息进行更新;其中,所述N元组信息至少包括所述报文的源网际协议IP地址、源端口号、目的地址和目的端口号;
步骤202b:依据所述报文的更新后的N元组信息,在至少两个NAT设备中确定所述报文的目标NAT设备;和/或,所述更新后的N元组信息用于交换机确定目标NAT设备。
执行步骤202a的主体为NAT设备。执行步骤202b的主体可以仅为NAT设备,也可以仅为交换机,还可以同时为NAT设备和交换机。
在步骤202a和202b中依据根据标记位对报文的N元组信息进行更新,并依据更新后的N元组确定目标NAT设备,至少能够保证私有网络的出数据与私有网络接收到的针对该出数据的反馈数据可经过同一NAT设备。
在一个可选的方案中,所述方法进一步包括(此处针对报文是私有网络的出数据的情况下如何对报文的N元组进行更新并根据更新后的N元组确定目标NAT设备):
在所述标记位表征为所述报文为私有网络向外部网络发送的报文时,
所述NAT设备获取所述报文的N元组信息中的目的地址和目的端口号信息;依据所述目的地址和目的端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
所述NAT设备依据所述目的地址和目的端口号信息,得到所述报文的新的源端口号;获得所述报文的新的源IP地址、新的目的地址和新的目的端口号;所述NAT设备发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至所述交换机,以使所述交换机确定目标NAT设备。
针对私有网络的出数据,至少依据目的地址和目的端口号信息对报文的五元组进行更新,得到更新后的五元组,依据更新后的五元组计算出的目标NAT设备,至少能够保证私有网络的出数据与私有网络接收到的针对该出数据的反馈数据可经过同一NAT设备。
在一个可选的方案中,所述方法进一步包括(此处针对报文是私有网络接收到的针对出数据的反馈数据的情况下如何对报文的N元组进行更新并根据更新后的N元组确定目标NAT设备):
在所述标记位表征为所述报文为外部网络针对报文而反馈回的数据时,
所述NAT设备获取所述报文的N元组信息中的源IP地址和源端口号信息;依据源IP地址和源端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
所述NAT设备依据源IP地址和源端口号信息,得到所述报文的新的源端口号;获得所述报文的新的源IP地址、新的目的地址和新的目的端口号;所述NAT设备发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至所述交换机,以使所述交换机确定目标NAT设备。
针对私有网络的入数据,至少依据源IP地址和源端口号信息对报文的五元组进行更新,得到更新后的五元组,依据更新后的五元组计算出的目标NAT设备。私有网络的出数据和入数据均采用各自的规则对五元组进行更新,并依据更新后的五元组进行目标NAT设备的确定,至少能够保证私有网络的出数据与私有网络接收到的针对该出数据的反馈数据可经过同一NAT设备。
在一个可选的实施例中,所述方法还包括:
更新所述标记位,具体是在更新五元组后对标记位也进行更新;
在确定所述NAT设备为目标NAT设备时,
依据更新后的标记位,至少对所述报文进行地址转换或逆转换。
上述可选方案中,目标NAT设备根据更新后的标记位,确定该报文是私有网络的入数据还是出数据,并执行相应的地址转换或逆转换功能,以将入数据从私有网络发送至外部网络,或使得私有网络中的某个客户端接收来自外部网络的入数据。
下面结合图3所示的应用场景,对本发明实施例的技术方案做详细描述,以帮忙理解本发明。
以私有网络采用VPC网络,集群NAT设备包括NAT 1、NAT 2、NAT 3和NAT 4为例,私有网络的出数据为Vxlan类型的数据。可以理解,根据现有相关网络协议的规定,私有网络的入数据,也即来源于外部网络的针对出数据的反馈数据为非Vxlan类型的数据。
私有网络的出数据过程:
以同一客户端如客户端1访问一次外部网络产生的同一业务流包括多个报文为例,以该同一业务流中的其中一个报文-首报文(报文1)为例,
步骤300:私有网络中的客户端1产生访问数据,并经过Vxlan头封装后得到报文1,并发送报文1至交换机;
这里,对于报文1来说,因为其是Vxlan类型的数据,所以在报文的组成结构上至少包括三部分:IP头部分、UDP头部分以及净荷数据部分。其中,五元组中的源IP地址和目的地址承载在IP头部分;源端口号和目的端口号承载在UDP头部分。将IP头部分和UDP头部分视为报文的头信息。
视此处的报文1的五元组为报文1的初始五元组,其初始五元组中的源IP地址为客户端1使用的私有网络的IP地址,源端口号为客户端1的其中一个端口号,目的地址是客户端1要访问的外部网络的IP地址,目的端口号为访问目的地址使用的端口号。
此外,为报文1设置一个标记位,该标记位至少占用1比特(bit),承载在UDP头部分。该标记位可以取值为第一数值、第二数值和第三数值中的任意一种。例如,第一数值可以为0;第二数值可以为1;第三数值可以为2。
本应用场景中,设置报文1中的标记位的初始值为第一数值0。
标记位取值为不用数值代表着不同的含义,标记位的取值可随着情况的不同发生变化。具体如下所述。
步骤301:交换机根据报文1中的初始五元组中的元素取值得到hash=1,并将报文1发送至与hash=1对应的NAT设备-NAT 1(中间NAT设备);
预先设定,hash=1对应的NAT设备为NAT 1。
步骤302:NAT 1判断接收到的报文1是否为Vxlan类型的数据;
是时执行步骤303;
需要说明的是,私有网络的出数据均为Vxlan类型的数据。
本领域技术人员可以理解,NAT 1是否为最终需要对报文1进行地址转换的NAT设备还需要根据如下方案来确定。
步骤303:NAT 1读取报文1中的标记位;
如果标记位为第一数值如0,则执行步骤304;
步骤304:NAT 1对报文1进行解封装,得到报文1初始五元组中的元素取值,并对报文1的头信息进行更新得到头信息更新后的报文1,并发送头信息更新后的报文1至交换机。
本步骤中,可以理解,更新是对报文1中的五元组及标记位进行更新,对报文中的净荷数据并不需要更新。也就是说,依据该元素取值得到报文1的新的五元组;更新报文1的标记位;并将头信息更新后的报文1发送至交换机。
这里,对报文1进行解封装,得到报文1的初始五元组中的目的地址和目的端口号。基于该目的地址和目的端口号计算hash值,并将该计算出的hash值视为Hashval。并将Hashval值与预定值如0xffff进行预定操作如逻辑与运算得到报文1的新的源端口号;并设置目的端口号为相关协议的规定值4789;将源IP地址设置为其中一个NAT设备的虚拟IP地址(Virtual IP Address,VIP)如NAT 1的VIP地址,将目的IP地址设置为其中一个NAT设备的VIP地址,优选为与前述源IP地址使用的VIP地址不同的NAT的VIP地址如NAT 2的VIP地址。
其中,相关协议规定,Vxlan类型的报文均使用端口号为4789的端口进行传输。本方案中,私有网络中的各个NAT设备使用不同的VIP地址。
本领域技术人员应该理解,此处相当于对报文1的初始五元组进行了更新,得到报文1的新的五元组。因为私有网络要发送的报文的五元组中的元素发生了变化,所以标记位也随之进行更新,将标记位从0更新为1。五元组和标记位进行了更新相当于报文1的IP头和UDP头这两个部分进行了更新,报文1的净荷数据没有发生更新。
步骤305:根据报文1中的更新后的五元组,交换机重新计算hash值;并将报文1发送至与该重新计算得出的hash值对应的NAT设备;
假定重新计算得出的hash值=2,hash值=2对应的NAT设备为NAT 2,交换机将头信息发生更新的报文1发送至NAT 2。
步骤306:NAT 2读取头信息发生更新的报文1的标记位;
如果标记位为第二数值1,则认为该报文1是五元组已经发生更新的报文,执行步骤307;
步骤307:NAT 2确定自身为需要对报文1进行地址转换的NAT设备(目标NAT设备),执行NAT的地址转换功能;
执行NAT的地址转换功能可以是:解封装Vxlan头部信息,根据五元组信息,查询会话(session),如果session存在,当将session视为一种地址转换映射关系时,直接通过session进行地址转换后,利用转换后的公网地址和目的端口号将报文1发送到外部网络。如果session不存在,则建立session,执行地址转换功能,利用转换后的公网地址和目的端口号将报文1发送到外部网络。
上述执行NAT的地址转换功能的具体过程请参见现有相关描述,此处不做重点说明。
上述方案中描述的是对客户端1访问外部网络的同一业务流中的其中一个报文-首报文(报文1)的处理流程的描述,对该同一业务流中的剩余报文逐一进行如上方案的处理,便可将客户端1访问外部网络的同一业务流中的所有报文均发送至外部网络中去。需要说明的是,不论是该同一业务流中的哪个报文,均需设置标记位的初始值为0,以表明该报文为私有网络的客户端产生的访问数据、其五元组是还未发生更新的初始五元组。
本领域技术人员可以理解,上述方案中描述的是对客户端1访问外部网络的同一业务流中的其中一个报文-首报文(报文1)的处理流程的描述,对于该同一业务流中的其它报文、以及客户端1对外部网络访问产生的其它业务流和其它客户端对外部网络访问产生的业务流中的报文的处理流程与前述方案相同,此处不做类似描述。
在私有网络将客户端1访问外部网络的同一业务流中的各个报文按照步骤300~307的方案发送出去之后,外部网络针对私有网络所发送的这些数据存在反馈数据。针对这些反馈数据的处理流程是:
以针对出数据-报文1的反馈数据-报文1’为例进行说明:
步骤400:交换机接收外部网络的反馈数据-报文1’,根据报文1’中的(初始)五元组,计算hash值;并将报文1’发送至与该hash值对应的NAT设备(中间NAT设备)中。
这里,将交换机接收到的反馈数据-报文1’中的五元组视为反馈报文的初始五元组。假定此处计算出的hash=1,对应的NAT为NAT 1。
步骤401:NAT 1判断接收到的报文1’是否为Vxlan类型的数据;
判断为不是Vxlan类型的数据时,执行步骤402;
可以理解,相关协议规定:外部网络发送至私有网络的数据不是Vxlan类型的数据。
步骤402:NAT 1对报文1’进行解封装,得到报文1’的初始五元组中的元素取值,并对报文1’的头信息进行更新得到头信息更新后的报文1’,并发送头信息更新后的报文1’至交换机。
这里,对报文1’进行解封装,得到报文1’的初始五元组中的源IP地址和源端口号。基于该源IP地址和源端口号计算hash值,并将该计算出的hash值视为Hashval。并将Hashval值与预定值如0xffff进行预定操作如逻辑与运算得到报文1的新的源端口号;并设置目的端口号为相关协议的规定值4789;将源IP地址设置为其中一个NAT设备的VIP地址如NAT 1的VIP地址,将目的IP地址设置为其中一个NAT设备的VIP地址,优选为与前述源IP地址使用的VIP地址不同的NAT的VIP地址如NAT 2的VIP地址。
报文1’虽然不是Vxlan类型的数据,但仍然需要在报文1’中设置标记位,并赋值标记位为第三数值2。
其中,可以理解,报文的标记位的取值为0相当于报文是私有网络的出数据且五元组未经过更新的数据;报文的标记位的取值为1相当于报文是私有网络的出数据且五元组是已经经过更新的数据;报文的标记位的取值为2相当于报文是私有网络的入数据且五元组是已经经过更新的数据。
还可以理解,五元组和标记位进行了更新相当于报文1’的IP头和UDP头这两个部分进行了更新,报文1’的净荷数据没有发生更新。
步骤403:根据报文1’中的更新后的五元组,交换机重新计算hash值;并将报文1’发送至与该重新计算得出的hash值对应的NAT设备;
假定重新计算得出的hash值=2,hash值=2对应的NAT设备为NAT 2,交换机将头信息发生更新的报文1’发送至NAT 2。
步骤404:NAT 2读取头信息发生更新的报文1’的标记位;
如果标记位为第三数值2,则认为该报文1’是五元组已经发生更新的私有网络的入数据,执行步骤405;
步骤405:NAT 2确定自身为需要对报文1’进行地址转换的NAT设备(目标NAT设备),执行NAT的地址逆转换功能;
步骤406:NAT 2将报文1’发送至目标客户端,目标客户端接收报文1’;
可以理解,目标客户端为期望接收反馈数据的客户端。
其中,执行NAT的地址逆转换功能可以是:解封装Vxlan头部信息,根据五元组信息,查询会话(session),如果session存在,当将session视为一种地址逆转换映射关系时,直接通过session进行地址逆转换后,将报文1’发送至相应的客户端。如果session不存在,则丢弃报文1’。上述执行NAT的地址逆转换功能的具体过程请参见现有相关描述,此处不做重点说明。其中,本领域技术人员应该而知,地址转换(映射)可以是从源IP地址映射到目的地址、从源端口号映射到目的端口号的过程,而地址逆转换(映射)则是从目的地址映射到源IP地址、从目的端口号映射到源端口号的过程。
前述方案中,关于hash值的计算,VIP地址的概念等相关描述参见现有相关说明,此处不赘述。
上述方案中描述的是私有网络接收到外部网络针对对客户端1访问外部网络的同一业务流中的其中一个报文而返回的反馈数据的处理过程,对该业务流的其它报文的反馈数据的处理流程如上方案的处理,如此,客户端便可将外部网络反馈回的所有的反馈数据。
从步骤304和步骤402可看出,出数据的五元组的更新是利用出数据的初始五元组中目的地址和目的端口号;入数据的五元组的更新是利用入数据的初始五元组中源IP地址和源端口号。本领域技术人员可以理解,同一客户端发送的出数据使用的目的地址、目的端口号和该客户端接收针对该出数据的入数据使用的源IP地址、源端口号为相同,均为该客户端访问的外部网络的IP地址和访问该IP地址使用的端口号。由此,便可保证为出数据计算的hash值与为该出数据的反馈数据-入数据计算的hash值为相同的数值,如此,可达到私有网络的出数据与针对该出数据的入数据可经过同一NAT设备进行地址转换的技术效果,进而实现私有网络和外部网络之间的正常通信。
在一个可选的实施例中,每个NAT设备可包括至少两个处理器(CORE),本方案中,利用前述方案,可达到私有网络的出数据与针对该出数据的入数据经过同一NAT设备的同一CORE。如此,便可保证对出数据、入数据的独立处理如查询、维护等。
此外,根据前述的方案可以理解,交换机根据报文1或报文1’的初始五元组中的元素计算出的NAT设备,可能是需要进行地址转换或逆转换的设备,也可能不是需要进行地址转换或逆转换的设备,也就是说,交换机根据报文的初始五元组计算出的NAT设备可能与根据报文的更新后的五元组计算出的NAT设备相同,也可能不同。如果将根据报文的初始五元组计算出的NAT设备视为中间NAT设备,将进行地址转换或逆转换的设备作为目标NAT设备。
在本方案中,可以采用如下方案进行中间NAT设备与目标NAT设备是否是同一NAT设备。且该过程由中间NAT设备来执行:
针对出数据来说,中间NAT设备基于出数据的初始五元组中的目的地址和目的端口号。基于该目的地址和目的端口号计算hash值,并将该计算出的hash值视为中间值Hashval。
针对入数据来说,中间NAT设备基于入数据的初始五元组的源IP地址和源端口号计算hash值,并将该计算出的hash值视为中间值Hashval。
中间NAT设备将Hashval值与私有网络中的NAT设备的总数量M做取模运算,得到数值P;私有网络中的各个NAT设备中,VIP地址取值为P的NAT设备即可为目标NAT设备。如果中间NAT设备经过如上的计算得出目标NAT设备即为自身,那么在对报文的头信息进行更新之后,无需再将头信息更新的报文发送至交换机进行目标NAT设备的计算,中间NAT设备确定自身为需要对该报文进行地址转换或逆转换的NAT设备,执行地址转换或逆转换流程即可。可避免报文不必要的从一个NAT设备-交换机-该NAT设备的传输流程,也可以避免报文由于在不同设备间传输而产生的对带宽资源的占用。
本发明实施例还提供一种NAT设备700,如图5所示,所述NAT设备700包括处理器701和存储介质702;其中,所述存储介质702用于存储计算机程序;
所述处理器701,用于在执行所述存储介质702存储的计算机程序时,至少执行以下步骤:
获取报文的头信息,所述头信息至少包括所述报文的N元组信息和标记位;其中4≤N≤7中的至少一个整数;
依据所述报文的N元组信息和标记位,在至少两个NAT设备中确定目标NAT设备;和/或,所获取的头信息用于交换机确定目标NAT设备;其中,所述目标NAT设备至少为对所述报文进行地址转换或逆转换的NAT设备。
其中,所述处理器701,还用于执行以下步骤:
依据所述标记位,对所述报文的N元组信息进行更新;其中,所述N元组信息至少包括所述报文的源网际协议IP地址、源端口号、目的地址和目的端口号;
依据所述报文的更新后的N元组信息,在至少两个NAT设备中确定所述报文的目标NAT设备;
和/或,所述更新后的N元组信息用于交换机确定目标NAT设备。
其中,所述处理器701,还用于执行以下步骤:
在所述标记位表征为所述报文为私有网络向外部网络发送的报文时,
获取所述报文的N元组信息中的目的地址和目的端口号信息;依据所述目的地址和目的端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
依据所述目的地址和目的端口号信息,得到所述报文的新的源端口号;获得所述报文的新的源IP地址、新的目的地址和新的目的端口号;发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至交换机,以使所述交换机确定目标NAT设备。
其中,所述处理器701,还用于执行以下步骤:
在所述标记位表征为所述报文为外部网络针对报文而反馈回的数据时,
获取所述报文的N元组信息中的源IP地址和源端口号信息;依据源IP地址和源端口号信息,得到目标NAT设备的标识;确定具有所述标识的NAT设备为所述目标NAT设备;
和/或,
依据源IP地址和源端口号信息,得到所述报文的新的源端口号;获得所述报文的新的源IP地址、新的目的地址和新的目的端口号;发送所述新的源端口号、新的源IP地址、新的目的地址和新的目的端口号至交换机,以使所述交换机确定目标NAT设备。
其中,所述处理器701,还用于执行以下步骤:
更新所述标记位;
在确定所述NAT设备为目标NAT设备时,
依据更新后的标记位,至少对所述报文进行地址转换或逆转换。
其中,所述处理器701,还用于执行以下步骤:
针对所述报文为私有网络向外部网络发送的报文的情况,依据报文的N元组信息中的目的地址和目的端口号信息,计算哈希值;
针对所述报文为外部网络针对报文而反馈回的数据的情况,依据报文的N元组信息中的源IP地址和源端口号信息,计算哈希值;
将计算出的哈希值与私有网络中存在NAT设备的总数量进行取模运算,得到第一运算结果;
NAT设备的虚拟IP地址标识为所述第一运算结果。
本发明实施例的电子设备还可以如图6所示,NAT设备700包括:至少一个处理器701、存储介质702、至少一个网络接口704和用户接口703。电子设备700中的各个组件通过总线系统705耦合在一起。可理解,总线系统705用于实现这些组件之间的连接通信。总线系统705除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统705。
其中,用户接口703可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
可以理解,存储介质702可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储介质702旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例中的存储介质702用于存储各种类型的数据以支持电子设备700的操作。这些数据的示例包括:用于在电子设备700上操作的任何计算机程序,如操作系统7021和应用程序7022。其中,操作系统7021包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序7022可以包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序7022中。
上述本发明实施例揭示的方法可以应用于处理器701中,或者由处理器701实现。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器701可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储介质702,处理器701读取存储介质702中的信息,结合其硬件完成前述方法的步骤。
本申请实施例还提供一种存储介质,所述存储介质可以为图5和6中的存储介质702,用于存储计算机程序,该计算机程序被执行时执行前述的报文处理方法。
需要说明的是,本发明实施例提供的NAT设备,由于该NAT设备解决问题的原理与前述的报文处理方法相似,因此,NAT设备的实施过程及实施原理均可以参见前述报文处理方法的实施过程及实施原理描述,重复之处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。