CN109167846B - 一种通信端口的分配方法与装置 - Google Patents

一种通信端口的分配方法与装置 Download PDF

Info

Publication number
CN109167846B
CN109167846B CN201810872874.4A CN201810872874A CN109167846B CN 109167846 B CN109167846 B CN 109167846B CN 201810872874 A CN201810872874 A CN 201810872874A CN 109167846 B CN109167846 B CN 109167846B
Authority
CN
China
Prior art keywords
port
source port
value
message
initial
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
Application number
CN201810872874.4A
Other languages
English (en)
Other versions
CN109167846A (zh
Inventor
孟相玉
张代生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN201810872874.4A priority Critical patent/CN109167846B/zh
Publication of CN109167846A publication Critical patent/CN109167846A/zh
Application granted granted Critical
Publication of CN109167846B publication Critical patent/CN109167846B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2517Translation of Internet protocol [IP] addresses using port numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5046Resolving address allocation conflicts; Testing of addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

本公开提供一种通信端口的分配方法应用于网关设备,所述网关设备包括于NAT组网内,所述NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经所述网关设备通信,该方法包括:接收所述内网设备的报文,获取所述报文的初始源端口;基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送;若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送。应用本公开实施例可以实现在NAT组网并发多端口待分配场景下,减少端口分配冲突,提高端口分配效率。

Description

一种通信端口的分配方法与装置
技术领域
本申请涉及通信技术领域,尤其涉及一种通信端口的分配方法与装置。
背景技术
随着IT(Information Technology,信息技术)行业的不断发展,接入互联网的计算机数量不断增加,从而需要为更多的计算机分配公网IP地址,但是公网上IPV4地址资源是有限的,而IPV6网络还未广泛部署应用,从而导致公网IP地址不足的问题越来越显著。在这种时代背景下,NAT(Network Address Translation,网络地址转换)技术应运而生,网关设备通过部署该技术,可以实现NAT网络内部的多个设备通过共享一个公网IP地址以实现对互联网的访问,从而可以最大限度地节约公网IP地址资源。
然而,NAT网络中的多台内网设备上,可能存在多个的应用,当其并发访问互联网,就会导致网关设备基于NAT进行端口分配时,较大概率存在端口分配冲突,导致端口分配失败或分配效率降低。
发明内容
有鉴于此,本申请提供一种通信端口的分配方法与网关设备,用以解决在在NAT组网并发多端口待分配场景下,较大概率存在端口分配冲突,导致端口分配失败或分配效率降低的问题。
具体地,本申请是通过如下技术方案实现的:
本公开第一方面,一种通信端口的分配方法,所述方法应用于网关设备,所述网关设备包括于NAT组网内,所述NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经所述网关设备通信,包括:
所述网关设备,接收所述内网设备的报文,获取所述报文的初始源端口;基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送;若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送。
结合第一方面,在第一种可能的实现方式中,所述基于所述初始源端口,按第一预定策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送,包括:
所述网关设备基于初始源端口值SPV1、步进值SV1,根据公式1:OPV1=SPV1+SV1*(M-1),计算获得第一源端口值OPV1;其中所述初始源端口值SPV1、第一源端口值OPV1都在第一端口池范围内;M为正整数,初始值为1;获取已有会话记录的端口列表OPL,若其中没有OPV1值,则替换所述报文的初始源端口值为OPV1,尝试结束,向外网设备发送该报文;否则,判断M是否大于第一阈值K,其中K为大于1的正整数,如果是,则尝试结束;否则M=M+1,返回所述公式1继续计算。
结合第一方面,在第二种可能的实现方式中,所述若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送,包括:
所述网关设备,基于预设私有端口值PPV,步进值SV2,根据公式2:OPV2=PPV+SV2*(N-1),计算获得第二源端口值OPV2;其中所述预设私有端口值PPV、第二源端口值OPV2都在第二端口池范围内;N为正整数,初始值为1;获取已有会话记录的端口列表OPL,若其中没有OPV2值,则替换所述报文的初始源端口值为OPV2,尝试结束,向外网设备发送该报文;否则,判断N是否大于第二阈值T,其中T为大于1的正整数,如果是,则尝试结束;否则N=N+1,返回所述公式2继续计算。
结合第一方面,在第三种可能的实现方式中,其中所述第一端口池包含的端口总数量多于所述第二端口池包含的端口总数量。
结合第一方面,在第四种可能的实现方式中,其中所述第二端口池的端口老化时间短于所述第一端口池的端口老化时间。
本公开第二方面,提供一种通信端口的分配装置,所述装置应用于网关设备,所述网关设备包括于NAT组网内,所述NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经所述网关设备通信,该装置包括:
收发模块,用于接收所述内网设备的报文;
端口分配模块,获取所述报文的初始源端口;基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,由所述收发模块向外网设备发送;若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,由所述收发模块向外网设备发送。
结合第二方面,在第一种可能的实现方式中,所述基于所述初始源端口,按第一预定策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,由所述收发模块向外网设备发送,所述装置包括:
所述端口分配模块,基于初始源端口值SPV1、步进值SV1,根据公式1:OPV1=SPV1+SV1*(M-1),计算获得第一源端口值OPV1;其中所述初始源端口值SPV1、第一源端口值OPV1都在第一端口池范围内;M为正整数,初始值为1;获取已有会话记录的端口列表OPL,若其中没有OPV1值,则替换所述报文的初始源端口值为OPV1,尝试结束,由所述收发模块向外网设备发送该报文;否则,判断M是否大于第一阈值K,其中K为大于1的正整数,如果是,则尝试结束;否则M=M+1,返回所述公式1继续计算。
结合第二方面,在第二种可能的实现方式中,所述若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,由所述收发模块向外网设备发送,所述装置包括:
所述端口分配模块,基于预设私有端口值PPV,步进值SV2,根据公式2:OPV2=PPV+SV2*(N-1),计算获得第二源端口值OPV2;其中所述预设私有端口值PPV、第二源端口值OPV2都在第二端口池范围内;N为正整数,初始值为1;获取已有会话记录的端口列表OPL,若其中没有OPV2值,则替换所述报文的初始源端口值为OPV2,尝试结束,由所述收发模块向外网设备发送该报文;否则,判断N是否大于第二阈值T,其中T为大于1的正整数,如果是,则尝试结束;否则N=N+1,返回所述公式2继续计算。
结合第二方面,在第三种可能的实现方式中,其中所述第一端口池包含的端口总数量多于所述第二端口池包含的端口总数量。
结合第二方面,在第四种可能的实现方式中,其中所述第二端口池的端口老化时间短于所述第一端口池的端口老化时间。
本公开第三方面,提供一种数据处理装置,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接。所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行前述的方法。
本公开第四方面,提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现本公开第一方面所述的方法。
本公开中,提供一种通信端口的分配方法应用于网关设备,所述网关设备包括于NAT组网内,所述NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经所述网关设备通信,该方法包括:接收所述内网设备的报文,获取所述报文的初始源端口;基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送;若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送。应用本公开实施例可以实现在NAT组网并发多端口待分配场景下,减少端口分配冲突,提高端口分配效率。
附图说明
图1是本公开实施例提供的系统组网示意图;
图2是本公开实施例提供的通信端口的分配方法流程图;
图3是本公开实施例提供的通信端口的分配交互过程示意图;
图4是本公开提供的装置功能模块框图;
图5是本公开提供的图4所示装置的硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好地理解本公开实施例中的技术方案,下面先对本公开实施例适用的系统架构进行简单说明。
请参见图1所示例的系统组网,该组网包括网关设备、位于NAT内的多个内网设备以及位于NAT外的多个外网设备,其中内网设备可经网关设备和外网设备进行基于NAT技术进行通信,其通信过程称之为NAT会话,所述位于NAT内的网络可以是一个或多个私网,所述位于NAT外的网络可以是互联网(Internet)。
通常NAT技术有三种实现方式,包括:静态转换(Static NAT)、动态转换(DynamicNAT)和端口多路复用(Port address Translation,PAT),其中所述静态转换(Static NAT)是指网关设备针对NAT内设备经其发往NAT外的报文进行特定处理,即对该报文携带的私网IP地址转换为公网IP地址,公网IP地址与私网IP地址是一一对应的,是一成不变的,某个私网IP地址只转换为某个公网IP地址,借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问;其中所述动态转换(Dynamic NAT)是指网关设备针对NAT内设备经其发往NAT外的报文进行特定处理,即对该报文携带的私网IP地址转换为公网IP地址,公网IP地址是不确定的,是随机的,所有被授权访问上Internet的私网IP地址可随机转换为任何指定的合法公网IP地址,也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换,动态转换可以使用多个合法公网IP地址集。当ISP(Internet Service Provider,互联网服务提供商)提供的合法公网IP地址数略少于私网内的计算机数量时,可以采用动态转换的方式。
端口多路复用(Port address Translation,PAT)是指网关设备针对NAT内设备经其发往NAT外的报文进行特定处理,即改变该报文的源IP和源端口,针对不同的内网设备及其上应用,即不同的NAT会话分配不同的端口进行源端口替换,其中每一个源端口和替换端口就标识一个NAT会话,通过此方式,内部网络的多个主机通过共享一个合法公网IP地址实现对Internet的访问,从而可以最大限度地节约公网IP地址资源。因此,目前网络中应用最多的NAT方式就是PAT。
在PAT方式中,由于端口0~1023作为知名端口使用,不作为NAT中的转换端口,因此,NAT中默认使用的端口范围是1024~65535,即可用的端口资源池的范围是1024~65535。当从内部网络发送至公共网络的报文到达NAT设备时,NAT设备对报文的源IP地址进行转换,将报文的源IP地址从私网地址转换为公网地址,还要从NAT设备的端口池中选择一个端口,将报文的源端口转换为该选择的端口。现有技术方案以报文源端口为基准,例如源端口为1024,检查NAT设备的1024端口是否占用,如果1024端口已经占用,则将报文源端口号加1,回退并重新分配端口1025,检查NAT设备的1025端口。如果1025端口占用,则将此端口号继续加1,重复上述操作,如果找到可用端口,将报文源端口替换为找到的可用端口。如果回退次数达到预设阈值,将报文丢弃。上述方式中,如果预设阈值较小,回退次数减少,当内网设备较多时,分配端口的次数达到预设阈值时,未必能分配到可用端口,这将造成大量的来自内网报文被丢弃,导致转发失败,也会造成可用端口因为没有被尝试分配而闲置;如果预设阈值较大,如将1024~65535的所有端口都尝试分配,会造成回退次数过多,降低端口分配的效率。可见,现有技术方案端口分配效率和端口利用率是相互矛盾的,提高端口分配效率,需要设置较小阈值,造成端口利用率降低;提高端口利用率,需要设置较大阈值,造成端口分配效率降低。
实际组网中,NAT网络中的多台内网设备上,可能存在多个应用,当其并发访问互联网,就会导致网关设备基于NAT进行端口分配时,较大概率存在端口分配冲突,导致端口分配失败或分配效率降低。本公开所要解决的问题就是PAT模式下存在的上述问题。
本公开提供的一种通信端口的分配方法,应用于网关设备,该网关设备包括于NAT组网内,该NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经该网关设备通信,其通过,为实现本公开提供的方法,下面结合附图对本公开实施例中技术方案作进一步详细的说明。请参见图2,为本公开提供的通信端口的分配方法流程图,可包括以下步骤:
步骤201、网关设备接收所述内网设备的报文,获取所述报文的初始源端口。
步骤202、网关设备基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送。
步骤203、若失败,网关设备则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送。
至此,完成图2所示的流程。
通过图2所示的流程可以看出,网关设备接收所述内网设备的报文,获取所述报文的初始源端口;基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送;若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送。应用本公开实施例可以实现在NAT组网并发多端口待分配场景下,减少端口分配冲突,提高端口分配效率。
更具体来说,内网设备上的某个应用基于业务触发请求报文,需要访问位于外网设备上对应的服务端,网关设备若收到该请求报文,获取其初始源端口,则根据第一预设策略及第二预设策略为该报文分配新的端口,用于替换其初始源端口,通过上述机制可以有效规避多台内网设备及其上应用,并发访问导致较大概率出现端口分配失败或分配效率降低的问题。
为了使本领域技术人员更好地理解本公开实施例提供的技术方案,下面结合具体应用场景对本公开实施例提供的技术方案进行说明。请参见图3,为本公开实施例提供的一种通信端口的分配交互过程示意图。
存在多台内网设备,假设其进行以下配置以及具备以下初始条件:
1)内网设备的IP地址及掩码分别为:10.0.0.2/24、10.0.0.3/24、10.0.0.4/24、10.0.0.5/24、10.0.0.6/24、10.0.0.7/24、10.0.0.8/24。
2)内网设备位于私网内即NAT内,比如其可以是一台个人电脑,用户通过浏览器,输入www.baidu.com网址,访问对应的Web服务器;也可以是某个应用程序,比如支付宝客户端,用户可以通过操作该应用,实现业务操作,比如支付宝用户登录、转账及支付等,以上操作会触发预将发往对应位于互联网的外网设备的报文。
网关设备,假设其进行以下配置以及具备以下初始条件:
1)网关设备具有双网络接入能力,其中和内网设备通信的IP地址及掩码为为10.0.0.1/24;和外网设备通信的公网IP地址及掩码为20.20.20.1/24。
2)内网设备和位于互联网外网设备交互的报文,需经网关设备完成通信。
3)网关设备针对内网设备与外网设备的对应每个通信,都保存有相应NAT会话记录,请参见表1示例:
Figure BDA0001752579050000091
表1
4)第一端口池范围为[1024,49151],即第一源端口可以为1024至49151之间的任意正整数值,包含边界值。
5)第二端口池范围为[PPV,65535],即第二源端口可以为PPV至65535之间的任意正整数值,包含边界值,其中PPV为大于49151、小于65535的正整数,其数值基于用户可配置,比如,设置PPV为65500,则第二端口池范围为[65500,65535]。
外网设备,假设其进行以下配置以及具备以下初始条件:
1)外网设备IP地址及掩码为20.20.20.2/24,基于此配置,外网设备与网关设备进行通信。
2)外网设备位于互联网,比如其可以是一个网站后台服务器,比如www.baidu.com网址对应的Web服务器,也可以是某个应用程序对应的应用服务器,比如支付宝APP对应的后台服务器。
基于上述配置,内网设备可经网关设备和外网设备通信,由网关设备为其进行端口分配,可以执行如图3所示的端口分配交互过程:
步骤S301、内网设备发送报文,比如:IP地址及掩码为10.0.0.2/24的内网设备以源端口为1024、目的端口为1024,向外网服务器发送UDP报文。
步骤S302、网关设备接收所述内网设备的报文,获取所述报文的初始源端口,包括:
网关设备会获取该报文的五元组信息即源IP地址,源端口,目的IP地址,目的端口和传输层协议,其用于唯一标识一个网络会话过程,请参考表2所示例:
Figure BDA0001752579050000101
表2
其中网关设备获知该报文源端口值为1024,并且预发往目的IP地址为20.20.20.2的外网设备。
步骤S303-1、网关设备按第一预设策略,尝试从第一端口池即[1024,49151],为所述报文分配第一源端口,包括:
a)网关设备基于初始源端口值SPV1、步进值SV1,根据公式1:OPV1=SPV1+SV1*(M-1),计算获得第一源端口值OPV1;其中M为正整数,初始值为1,所述初始源端口值SPV1、第一源端口值OPV1都在第一端口池范围内。
比如:该报文源端口值SPV1为1024,假定步进值SV1为1,M初始值为1,则按所述公式1:OPV1=1024+1*(1-1)经第一次计算,可以算出此时第一源端口值OPV1=1024。
b)网关设备获取NAT会话记录,请参考表1所示例,获取当前NAT会话记录中的端口映射关系即源端口与对应替换端口,依据参考表1所示例的记录查找端口映射关系,即源端口8080对应替换端口8080,源端口2121对应替换端口2121,而源端口为1024报文没有相应的值为1024的替换端口,网关设备则为该报文生成新的NAT会话记录,将第一源端口值1024赋予对应替换端口,作为源端口是1024的端口映射,增加到NAT会话记录表中,请参考表3所示例,表3中序号为3的记录,即为新增NAT会话记录:
Figure BDA0001752579050000111
表3
网关设备以第一源端口值为1024即替换初始源端口值1024,替换后的源IP地址为20.20.20.1的报文,向外网设备20.20.20.2发送。此处示例中,按公式1计算获得第一源端口值和初始源端口值相等,都为1024,依据公式1两者也存在不相等的可能,比如:如果是M=2时,根据公式1经第二次计算,OPV1=1024+1*(2-1),即第一源端口值OPV1为1025,与初始源端口值1024不相等。
c)网关设备按第一阈值K,其中K为大于1的正整数,比如K=2,按步骤a尝试进行第一源端口分配,判断M是否大于第一阈值K,如果是,则尝试结束;否则M=M+1,返回步骤a中按所述公式1继续计算,进行尝试。
步骤S303-2、外网设备收到源端口为第一源端口即为1024、源IP地址为20.20.20.1的报文,标识该NAT会话建立成功。
按步骤S303-1至步骤S303-2的另外一种可能的情况,当网关设备按第一预设策略按第一阈值K,比如K=2,尝试2次分配第一源端口失败后,则按图3所示步骤S304-1、S304-2继续执行。
步骤S304-1、网关设备按第二预设策略,尝试从第二端口池,比如[65500,65535],为所述报文分配第二源端口,此处以内网设备发送如下报文为示例:IP地址及掩码为10.0.0.6/24的内网设备以源端口为1024、目的端口为1024,向外网服务器发送UDP报文,包括:
a)网关设备基于预设私有端口值PPV、步进值SV2,根据公式2:OPV2=PPV+SV2*(N-1),计算获得第二源端口值OPV2;其中N为正整数,初始值为1;所述预设私有端口值PPV、第二源端口值OPV2都在第二端口池范围内。
比如:预设私有端口值PPV为65500,假定步进值SV2为1,N初始值为1,则按所述公式2:OPV2=65500+1*(1-1)经第一次计算,可以算出此时第二源端口值OPV2=65500。
b)网关设备获取NAT会话记录,获取当前NAT会话记录中的端口映射关系即源端口与对应替换端口,请参考表4所示例:
Figure BDA0001752579050000121
表4
基于表4中序号为5的记录,可见当前NAT会话记录中存在值为65500的替换端口,则第一次尝试分配第二源端口失败。
c)网关设备按第二阈值T,其中T为大于1的正整数,比如T=3,判断N是否大于第二阈值T,如果是,则尝试结束;否则N=N+1,返回步骤a中按所述公式2继续计算,进行尝试,若直至尝试结束还未成功分配第二源端口,则标识此NAT会话建立失败,该报文被丢弃。
比如:按以上步骤循环执行,基于参考表4所示例,直到N=3即第三次尝试成功,按公式2:OPV2=65500+1*(3-1),经第三次计算,可以算出此时第二源端口值OPV2=65502。
网关设备以第二源端口值为65502即替换初始源端口值1024,替换后的源IP地址为20.20.20.1的报文,向外网设备20.20.20.2发送;网关增加一条对应记录到NAT会话记录表中,请参考表5中序号为6的记录所示例:
Figure BDA0001752579050000131
表5
基于第二预设策略,尝试从第二端口池为所述报文分配第二源端口的方式,可以避免在第一端口池已分配第一源端口数量较多且密集时,仍然尝试在第一端口池分配,大概率出现端口分配冲突而失败的问题,实现了端口资源的充分利用。
步骤S304-2、外网设备收到源端口为第二源端口即65502、源IP地址为20.20.20.1的报文,标识该NAT会话建立成功。
步骤S305、NAT会话管理维护,包括网关设备针对每条NAT会话记录,根据预设的端口老化时间进行检查,若端口老化时间内,该会话无业务,则删除其对应NAT会话记录,其中属于所述第一端口池的端口的老化时间T1,比如为150秒,要短于属于所述第二端口池的端口的老化时间T2,比如为300秒。
由于所述第一端口池包含的端口总数量多于所述第二端口池包含的端口总数量,则第二端口池端口资源相比第一端口池端口资源更稀缺;通过设置不同端口池的端口不同的老化时间,可以加速回收相对稀缺的第二端口池端口资源,有利于提高端口分配的效率。
比如:参考表5示例中序号为7的NAT会话记录,经过150秒该会话无业务,则网关设备判断该记录对应端口为65502,属于所述第二端口池的端口,则删除其对应NAT会话记录。
再比如:参考表5示例中序号为3的NAT会话记录,经过300秒该会话无业务,则网关设备判断该记录对应端口为1024,属于所述第一端口池的端口,则删除其对应NAT会话记录。
基于以上步骤,通过划分两类端口池及其对应使用相应的端口分配策略的方式,可以实现在NAT组网并发多端口待分配场景下,减少端口分配冲突,提高端口分配效率。
以上对本公开提供的方法进行了描述。下面对本公开提供的装置进行描述。
请参见图4,为本公开提供的一种通信端口的分配装置,所述装置应用于网关设备,所述网关设备包括于NAT组网内,所述NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经所述网关设备通信,其特征在于,如图4所示,该装置包括:
收发模块,用于接收所述内网设备的报文;
端口分配模块,获取所述报文的初始源端口;基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,由所述收发模块向外网设备发送;若失败,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,由所述收发模块向外网设备发送。
在其中一种实施方式中,所述端口分配模块,基于初始源端口值SPV1、步进值SV1,根据公式1:OPV1=SPV1+SV1*(M-1),计算获得第一源端口值OPV1;其中所述初始源端口值SPV1、第一源端口值OPV1都在第一端口池范围内;M为正整数,初始值为1;获取已有会话记录的端口列表OPL,若其中没有OPV1值,则替换所述报文的初始源端口值为OPV1,尝试结束,由所述收发模块向外网设备发送该报文;否则,判断M是否大于第一阈值K,其中K为大于1的正整数,如果是,则尝试结束;否则M=M+1,返回所述公式1继续计算。
在其中一种实施方式中,所述端口分配模块,基于预设私有端口值PPV,步进值SV2,根据公式2:OPV2=PPV+SV2*(N-1),计算获得第二源端口值OPV2;其中所述预设私有端口值PPV、第二源端口值OPV2都在第二端口池范围内;N为正整数,初始值为1;获取已有会话记录的端口列表OPL,若其中没有OPV2值,则替换所述报文的初始源端口值为OPV2,尝试结束,由所述收发模块向外网设备发送该报文;否则,判断N是否大于第二阈值T,其中T为大于1的正整数,如果是,则尝试结束;否则N=N+1,返回所述公式2继续计算。
在其中一种实施方式中,所述端口分配模块基于第一端口池、第二端口池进行端口分配,其中第一端口池包含的端口总数量多于所述第二端口池包含的端口总数量。
在其中一种实施方式中,所述端口分配模块基于第一端口池、第二端口池进行端口分配,其中所述第二端口池的端口老化时间短于所述第一端口池的端口老化时间。
至此,完成图4所示装置的描述。
对应地,本公开还提供了图4所示装置的一种网关设备的硬件结构,参见图5,图5为本公开提供的一种网关设备的硬件结构示意图。该设备包含:通信接口501、处理器502、内存503、非易失性存储器504和总线505;其中,通信接口501、处理器502、内存503、非易失性存储器504通过总线505完成相互间的通信。
其中,通信接口501,用于发送和接收报文。处理器502可以是一个中央处理器(CPU),内存503可以从非易失性存储器504中读取存储有机器可读指令,处理器502可以执行内存503中存储的机器可读指令,以实现上述图2所示的方法。
本文中提到的内存503可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器,或者类似的存储介质,或者它们的组合。本文中提到的非易失性存储器504可以是任何非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
至此,完成图5所示的硬件结构描述。
此外,本申请实施例还提供了一种包括机器可执行指令的机器可读存储介质,例如图5中的机器可读内存503及非易失性存储器504,所述机器可执行指令可由数据处理装置中的处理器501及处理器502执行以实现以上描述的数据处理方法。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种通信端口的分配方法,所述方法应用于网关设备,所述网关设备包括于NAT组网内,所述NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经所述网关设备通信,其特征在于,包括:
接收所述内网设备的报文,获取所述报文的初始源端口;
基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送;
若所述分配第一源端口的失败次数大于预设的阈值,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送;其中,所述第二端口池的端口老化时间短于所述第一端口池的端口老化时间。
2.根据权利要求1所述的方法,所述基于所述初始源端口,按第一预定策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,向外网设备发送,其特征在于,包括:
基于初始源端口值SPV1、步进值SV1,根据公式1:OPV1=SPV1+SV1*(M-1),计算获得第一源端口值OPV1;其中所述初始源端口值SPV1、第一源端口值OPV1都在第一端口池范围内;M为正整数,初始值为1;
获取已有会话记录的端口列表OPL,若其中没有OPV1值,则替换所述报文的初始源端口值为OPV1,尝试结束,向外网设备发送该报文;否则,判断M是否大于第一阈值K,其中K为大于1的正整数,如果是,则尝试结束;否则M=M+1,返回所述公式1继续计算。
3.根据权利要求1所述的方法,所述若分配第一源端口的失败次数大于预设的阈值,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,向外网设备发送,其特征在于,包括:
基于预设私有端口值PPV,步进值SV2,根据公式2:OPV2=PPV+SV2*(N-1),计算获得第二源端口值OPV2;其中所述预设私有端口值PPV、第二源端口值OPV2都在第二端口池范围内;N为正整数,初始值为1;
获取已有会话记录的端口列表OPL,若其中没有OPV2值,则替换所述报文的初始源端口值为OPV2,尝试结束,向外网设备发送该报文;否则,判断N是否大于第二阈值T,其中T为大于1的正整数,如果是,则尝试结束;否则N=N+1,返回所述公式2继续计算。
4.根据权利要求1所述的方法,其特征在于,其中所述第一端口池包含的端口总数量多于所述第二端口池包含的端口总数量。
5.一种通信端口的分配装置,所述装置应用于网关设备,所述网关设备包括于NAT组网内,所述NAT组网内还包括内网设备、外网设备,所述内网设备和外网设备经所述网关设备通信,其特征在于,该装置包括:
收发模块,用于接收所述内网设备的报文;
端口分配模块,获取所述报文的初始源端口;基于所述初始源端口,按第一预设策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,由所述收发模块向外网设备发送;若所述分配第一源端口的失败次数大于预设的阈值,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,由所述收发模块向外网设备发送;其中,所述第二端口池的端口老化时间短于所述第一端口池的端口老化时间。
6.根据权利要求5所述的装置,所述基于所述初始源端口,按第一预定策略,尝试从第一端口池为所述报文分配第一源端口,若成功,则替换所述报文的初始源端口为第一源端口,由所述收发模块向外网设备发送,其特征在于,包括:
所述端口分配模块,基于初始源端口值SPV1、步进值SV1,根据公式1:OPV1=SPV1+SV1*(M-1),计算获得第一源端口值OPV1;其中所述初始源端口值SPV1、第一源端口值OPV1都在第一端口池范围内;M为正整数,初始值为1;
所述端口分配模块,获取已有会话记录的端口列表OPL,若其中没有OPV1值,则替换所述报文的初始源端口值为OPV1,尝试结束,由所述收发模块向外网设备发送该报文;否则,判断M是否大于第一阈值K,其中K为大于1的正整数,如果是,则尝试结束;否则M=M+1,返回所述公式1继续计算。
7.根据权利要求5所述的装置,所述若分配第一源端口的失败次数大于预设的阈值,则按第二预设策略,尝试从第二端口池为所述报文分配第二源端口,若成功,则替换所述报文的初始源端口为第二源端口,由所述收发模块向外网设备发送,其特征在于,包括:
所述端口分配模块,基于预设私有端口值PPV,步进值SV2,根据公式2:OPV2=PPV+SV2*(N-1),计算获得第二源端口值OPV2;其中所述预设私有端口值PPV、第二源端口值OPV2都在第二端口池范围内;N为正整数,初始值为1;
所述端口分配模块,获取已有会话记录的端口列表OPL,若其中没有OPV2值,则替换所述报文的初始源端口值为OPV2,尝试结束,由所述收发模块向外网设备发送该报文;否则,判断N是否大于第二阈值T,其中T为大于1的正整数,如果是,则尝试结束;否则N=N+1,返回所述公式2继续计算。
8.根据权利要求5所述的装置,其特征在于,其中所述第一端口池包含的端口总数量多于所述第二端口池包含的端口总数量。
9.一种数据处理装置,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行如权利要求1至4任一项所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,所述机器可读指令促使所述处理器实现权利要求1至4任一项所述的方法。
CN201810872874.4A 2018-08-02 2018-08-02 一种通信端口的分配方法与装置 Active CN109167846B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810872874.4A CN109167846B (zh) 2018-08-02 2018-08-02 一种通信端口的分配方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810872874.4A CN109167846B (zh) 2018-08-02 2018-08-02 一种通信端口的分配方法与装置

Publications (2)

Publication Number Publication Date
CN109167846A CN109167846A (zh) 2019-01-08
CN109167846B true CN109167846B (zh) 2022-01-25

Family

ID=64898767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810872874.4A Active CN109167846B (zh) 2018-08-02 2018-08-02 一种通信端口的分配方法与装置

Country Status (1)

Country Link
CN (1) CN109167846B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112702338B (zh) * 2020-12-22 2022-07-01 杭州迪普科技股份有限公司 Ike报文获取方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100463448C (zh) * 2005-09-02 2009-02-18 中兴通讯股份有限公司 一种网络端口地址转换的实现方法
CN102685272B (zh) * 2012-05-30 2015-03-11 华为技术有限公司 一种分配公网地址的方法及装置
CN104519150B (zh) * 2014-12-31 2018-03-02 迈普通信技术股份有限公司 网络地址转换端口分配方法及系统
CN105450792B (zh) * 2015-12-23 2018-09-14 东软集团股份有限公司 用于多核转发网络地址端口转换的端口分配方法和装置
CN105827748B (zh) * 2016-05-12 2019-03-15 东莞市南星电子有限公司 一种基于ICE的SIP穿越Symmetric NAT设备的方法

Also Published As

Publication number Publication date
CN109167846A (zh) 2019-01-08

Similar Documents

Publication Publication Date Title
CN108924268B (zh) 一种容器云服务系统及pod创建方法、装置
US8289968B1 (en) Distributed network address translation in computer networks
US11606301B2 (en) Verifying intents in stateful networks using atomic address objects
US10931580B2 (en) Packet processing method and network device
US20090063706A1 (en) Combined Layer 2 Virtual MAC Address with Layer 3 IP Address Routing
US11240745B2 (en) Network slice instance processing method and apparatus, and system
EP2824872B1 (en) Host providing system and communication control method
US8695079B1 (en) Allocating shared resources
CN109981493B (zh) 一种用于配置虚拟机网络的方法和装置
US11146531B2 (en) Separating CGN forwarding and control
CN109525684B (zh) 报文转发方法和装置
CN108989476B (zh) 一种地址分配方法以及装置
CN106533973B (zh) 分发业务消息的方法、设备和系统
CN110012118B (zh) 一种提供网络地址转换nat服务的方法及控制器
US10419392B2 (en) Method, device and system for implementing address sharing
US10237233B2 (en) Allocating identifiers with minimal fragmentation
CN109167846B (zh) 一种通信端口的分配方法与装置
CN113014680B (zh) 一种宽带接入的方法、装置、设备和存储介质
CN112367256A (zh) 创建方法、设备及存储介质
CN115904626A (zh) 一种部署云资源池架构的方法及系统
CN111294316A (zh) 基于用户态协议栈虚拟路由器的网络隔离方法和装置
CN112600765B (zh) 一种配置资源调度方法及装置
CN111988446B (zh) 一种报文处理方法、装置、电子设备及存储介质
CN113904871A (zh) 网络切片的接入方法、pcf实体、终端和通信系统
CN114765601A (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