本技术涉及计算机网络,尤其涉及一种网络地址转换方法、装置及计算机设备。
背景技术:
1、在某一区域内的多台计算机设备可以构成一个私网,计算机设备对应私网地址,私网内的计算机设备之间可以使用私网地址进行通信,此私网在互联网对应一个公网地址。若私网中的某计算机设备要与互联网中的另一计算机设备进行通信,需要进行网络地址转换,比如,若私网中的计算机设备向互联网中的另一计算机设备发送数据报文,需要将数据报文中的此计算机设备的私网地址转换为此私网的公网地址,使得互联网中的网络设备可以确定该数据报文的源端。
2、现有技术可以通过运行于计算机设备的代码实现网络地址转换,计算机设备为多cpu核心时,由于中断机制等原因,会出现代码在多个cpu核心中切换运行的情况,资源亲和性较差。
技术实现思路
1、本技术提供了一种网络地址转换方法、装置及计算机设备,可以有效提升网络地址转换过程的资源亲和性和转换效率。
2、第一方面,本技术实施例提供了一种网络地址转换方法,应用于计算机设备,包括:
3、创建目标私网对应的网关实例线程;
4、为网关实例线程分配cpu核资源和内存资源,cpu核资源和内存资源均为计算机设备已隔离的资源;
5、在网关实例线程利用cpu核资源和内存资源,对待转换报文进行网络地址转换,得到转换后报文,待转换报文包括目标私网中的计算机设备发出的报文、或向目标私网中的计算机设备发送的报文。
6、由此,可以为不同的私网各自创建对应的网关实例线程,不同私网的待转换报文可以分别在其对应的网关实例线程中同时进行网络地址转换,单位时间可处理的待转换报文数量有较大提升,本方法还可以使网关实例线程利用分配到的cpu核资源和内存资源,对待转换报文进行网络地址转换,大大提升了网络地址转换过程的资源亲和性和转换效率。
7、结合第一方面的网络地址转换方法,在某些可能的实现方式中,为网关实例线程分配cpu核资源和内存资源的步骤,可以包括:
8、确定网关实例线程的资源需求信息;获取计算机设备中多个cpu核各自的使用率信息、以及计算机设备的内存使用信息;基于资源需求信息、多个cpu核各自的使用率信息、以及内存使用信息,为网关实例线程分配cpu核资源和内存资源。
9、由此,可以结合计算机设备上cpu核以及内存的已有使用情况,以及网关实例线程的实际需求,更加精确地为网关实例线程分配cpu核资源和内存资源。
10、结合第一方面的网络地址转换方法,在某些可能的实现方式中,资源需求信息包括cpu核需求信息和内存需求信息,基于资源需求信息、多个cpu核各自的使用率信息、以及内存使用信息,为网关实例线程分配cpu核资源和内存资源的步骤,可以包括:
11、根据cpu核需求信息和多个cpu核各自的使用率信息,为网关实例线程分配cpu核资源;根据内存需求信息和内存使用信息,为网关实例线程分配内存资源。
12、结合第一方面的网络地址转换方法,在某些可能的实现方式中,根据cpu核需求信息和多个cpu核各自的使用率信息,为网关实例线程分配cpu核资源的步骤,可以包括:
13、对多个cpu核各自的使用率信息进行排序,得到多个cpu核各自对应的排序结果;根据多个排序结果和cpu核需求信息,从多个cpu核中确定网关实例线程的cpu核资源。
14、由此,可以结合cpu核的使用率信息的排序结果,以及网关实例线程的cpu核需求信息进行cpu核资源的确定。
15、结合第一方面的网络地址转换方法,在某些可能的实现方式中,cpu核需求信息包括cpu核需求数量,根据多个排序结果,从多个cpu核中确定网关实例线程的cpu核资源的步骤,可以包括:
16、确定满足预设要求的排序结果为目标排序结果,以及确定目标排序结果对应的cpu核为目标cpu核;循环获取除目标cpu核以外的多个其他cpu核的更新使用率信息,对多个更新使用流程信息进行排序得到多个更新排序结果,确定满足预设要求的更新排序结果为新的目标排序结果,以及确定新的目标排序结果对应的cpu核为又一目标cpu核的步骤,直至目标cpu核的数量满足cpu核需求数量;确定cpu核需求数量个目标cpu核为网关实例线程的cpu核资源。
17、由此,可以进行多轮排序,多轮筛选,从而从多个cpu核中筛选出cpu核需求数量个目标cpu核。
18、结合第一方面的网络地址转换方法,在某些可能的实现方式中,内存使用信息包括多个内存块的使用状态信息,使用状态信息包括已使用信息和未使用信息,根据内存需求信息和内存使用信息,为网关实例线程分配内存资源的步骤,可以包括:
19、从多个内存块中,确定使用状态信息为未使用状态的内存块为候选内存块;基于内存需求信息和至少一个候选内存块,为网关实例线程分配内存资源。
20、由此,可以为网关实例线程正确分配未使用的内存块。
21、结合第一方面的网络地址转换方法,在某些可能的实现方式中,内存需求信息包括内存长度需求值,候选内存块对应长度信息,内存资源包括至少一个目标内存块,基于内存需求信息和至少一个候选内存块,为网关实例线程分配内存资源的步骤,可以包括:
22、当存在与内存长度需求值相同的长度信息时,确定长度信息对应的候选内存块为目标内存块;当不存在于内存长度需求值相同的长度信息时,基于至少一个长度信息与内存长度需求值的差值,为网关实例线程分配至少一个目标内存块。
23、由此,可以优先将长度信息与内存长度需求值相同的候选内存块确定为目标内存块,也即优先为网关实例线程分配连续的内存块。
24、结合第一方面的网络地址转换方法,在某些可能的实现方式中,当不存在于内存长度需求值相同的长度信息时,基于至少一个长度信息与内存长度需求值的差值,为网关实例线程分配至少一个目标内存块的步骤,可以包括:
25、当不存在于内存长度需求值相同的长度信息时,依次计算至少一个长度信息与内存长度需求值的差值;当至少一个差值中存在正差值时,根据正差值对应的候选内存块,为网关实例线程分配至少一个目标内存块;当至少一个差值中不存在正差值时,基于每个候选内存块的差值,为网关实例线程分配至少一个目标内存块。
26、结合第一方面的网络地址转换方法,在某些可能的实现方式中,正差值的数量为至少两个,当至少一个差值中存在正差值时,根据正差值对应的候选内存块,为网关实例线程分配至少一个目标内存块的步骤,可以包括:
27、当至少一个差值中存在至少两个正差值时,比较至少两个正差值的大小,以得到一个目标正差值;根据目标正差值对应的候选内存块的起始地址信息、以及内存需求长度值,对候选内存块进行截取,得到目标内存块,目标内存块的长度信息为内存需求长度值。
28、由此,可以根据网关实例线程的内存需求长度值,从长度信息大于内存需求长度值的候选内存块,为网关实例线程截取目标内存块。
29、结合第一方面的网络地址转换方法,在某些可能的实现方式中,差值的数量为多个,当至少一个差值中不存在正差值时,基于每个候选内存块的差值,为网关实例线程分配至少一个目标内存块的步骤,可以包括:
30、当多个差值中不存在正差值时,计算任意两个差值的二值和值;当多个二值和值中存在与内存长度需求值对应的目标二值和值时,确定得到目标二值和值的两个差值各自对应的内存块为目标内存块。
31、由此,可以为网关实例线程确定两个目标内存块,两个目标内存块的长度信息之和与内存长度需求值相同。
32、结合第一方面的网络地址转换方法,在某些可能的实现方式中,网络地址转换方法还可以包括:
33、当多个和值中不存在与内存长度需求值相同的目标和值时,计算任意三个差值的三值和值;基于三值和值从多个候选内存块中,确定多个目标内存块。
34、由此,可以在无法找到两个合适的目标内存块时,通过三个目标内存块匹配网关实例线程的内存需求。
35、结合第一方面的网络地址转换方法,在某些可能的实现方式中,计算机设备还创建有数据转发线程,在网关实例线程利用cpu核资源和内存资源,对待转换报文进行网络地址转换,得到转换后报文的步骤,可以包括:
36、控制数据转发线程确定待转换报文、以及将待转换报文保存在cpu缓存;确定待转换报文对应的目标私网;控制目标私网对应的网关实例线程从cpu缓存获取待转换报文、以及利用cpu核资源和内存资源,对待转换报文进行网络地址转换,得到转换后报文。
37、结合第一方面的网络地址转换方法,在某些可能的实现方式中,控制数据转发线程确定待转换报文、以及将待转换报文保存在cpu缓存的步骤,可以包括:
38、控制物理网卡接收数据流;控制数据转发线程对数据流进行解析,得到多个数据报文,多个数据报文包括第一数据报文;控制数据转发线程基于第一数据报文,确定多个数据报文为待转换报文;控制数据转发线程将待转换报文保存至cpu缓存。
39、由此,仅需对一个数据报文进行处理,可确定数据流所包含的多个数据报文均为基于同一协议的生成的待转换报文,可以通过同样的逻辑对这些数据报文进行网络地址转换,因此可以将这些数据报文一起同步到cpu缓存,可以降低同步过程产生的资源消耗。
40、结合第一方面的网络地址转换方法,在某些可能的实现方式中,数据流的数据量为第一数据量,控制数据转发线程对数据流进行解析,得到多个数据报文的步骤,可以包括:
41、基于第一数据量和物理网卡的最大传输数据量,计算数据流包含的数据报文的数量信息;控制数据转发线程基于数量信息,对数据流进行解析,得到多个数据报文。
42、结合第一方面的网络地址转换方法,在某些可能的实现方式中,控制数据转发线程基于第一数据报文,确定多个数据报文为待转换报文的步骤,可以包括:
43、控制数据转发线程对第一数据报文进行解析,确定第一数据报文所使用的特征协议;控制数据转发线程获取第一数据量的匹配协议;当匹配协议与特征协议相同时,确定多个数据报文为待转换报文。
44、结合第一方面的网络地址转换方法,在某些可能的实现方式中,网络地址转换方法还可以包括:
45、控制目标私网对应的网关实例线程向数据转发线程发送转换后报文;控制数据转发线程向物理网卡基于转换后报文,生成转换后数据流;通过物理网卡发出转换后数据流。
46、由此可以向目的端传输该转换后报文。
47、结合第一方面的网络地址转换方法,在某些可能的实现方式中,网络地址转换方法还可以包括:
48、从本地内存中确定目标内存;将目标内存的内存页尺寸从默认数值修改为目标数值,目标数值大于默认数值。
49、由此,可以降低计算机设备寻址出错的可能性,从而降低寻址开销,提升设备性能。
50、第二方面,本技术实施例提供一种网络地址转换装置,包括:
51、创建单元,用于创建目标私网对应的网关实例线程;
52、分配单元,用于为网关实例线程分配cpu核资源和内存资源,cpu核资源和内存资源均为计算机设备已隔离的资源;
53、转换单元,用于在网关实例线程利用cpu核资源和内存资源,对待转换报文进行网络地址转换,得到转换后报文,待转换报文包括目标私网中的计算机设备发出的报文、或向目标私网中的计算机设备发送的报文。
54、第三方面,本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序适于处理器进行加载,以执行本技术第一方面、以及第一方面的任意一种可能的实现方式所提供的任一种网络地址转换方法。
55、第四方面,本技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行计算机程序时实现本技术第一方面、以及第一方面的任意一种可能的实现方式所提供的任一种网络地址转换方法。
56、第五方面,本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机设备上运行时,使得该计算机设备执行上述第一方面或第一方面任意一种可能的实现方式所提供的任一种网络地址转换方法。