CN109347993B - 一种端口分配方法及装置 - Google Patents
一种端口分配方法及装置 Download PDFInfo
- Publication number
- CN109347993B CN109347993B CN201811161227.9A CN201811161227A CN109347993B CN 109347993 B CN109347993 B CN 109347993B CN 201811161227 A CN201811161227 A CN 201811161227A CN 109347993 B CN109347993 B CN 109347993B
- Authority
- CN
- China
- Prior art keywords
- port
- public network
- network address
- sub
- message
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- 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/50—Address allocation
- H04L61/5046—Resolving address allocation conflicts; Testing of addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种端口分配方法及装置,涉及通信技术领域。所述方法应用于虚拟设备中的第一子设备,虚拟设备还包括第二子设备,所述方法包括:当检测到第一用户设备访问内网服务器时,为第一用户设备分配第一端口和第一公网地址;判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项;如果不存在与第一端口和第一公网地址对应的表项,则向第二子设备发送同步消息,并在队列表添加与第一端口和第一公网地址对应的第一表项,同步消息中携带有第一端口和第一公网地址,以使第二子设备更新第二子设备的队列表。采用本申请可以避免第一子设备和第二子设备为不同的用户终端分配相同的端口和公网地址,从而可以避免网络出现错误。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种端口分配方法及装置。
背景技术
SSL(Secure Sockets Layer,安全套接字层)VPN(Virtual Private Network,虚拟专用网络)充分利用了SSL协议提供的基于证书的身份认证、数据加密和消息完整性验证机制,能够为应用层之间的通信新建安全连接。SSL VPN可以为企业或者机构提供安全、快捷的远程网络接入服务,适合移动接入。企业员工可以使用终端在任意能够访问互联网的位置安全地接入到企业内部网络,访问内部网络的共享资源。SSL VPN中通常包含网关、用户设备和服务器,网关可以分别与用户设备和服务器建立连接。
在网关堆叠环境下,网关(即堆叠设备)通常包含两台子设备。每台子设备均可以为用户设备提供服务,并且,两台子设备之间可以通过堆叠消息实现会话同步。当外网用户想要访问内网的服务器时,外网用户的用户设备user1可以与网关建立连接,然后,网关的第一子设备可以在预设的端口中随机选择一个端口,当接收到user1发送的业务请求报文时,将该出端口作为源端口、将预设的堆叠设备的公网IP(Internet Protocol,网络协议)地址作为源地址,将该业务请求报文发送给相应的服务器Server1。后续,当接收到Server1发送的响应报文后,向与该源端口和该源地址对应的user1发送该响应报文。
然而,如果第一子设备为user1分配的端口,与第二子设备为user2分配的端口相同,则第一子设备和第二子设备将无法区分Server1发送的响应报文是针对User1还是针对User2的,导致网络出现错误。
发明内容
本申请实施例的目的在于提供一种端口分配方法及装置,以避免第一子设备和第二子设备为不同的用户终端分配相同的端口和公网地址,从而可以避免网络出现错误。具体技术方案如下:
第一方面,提供了一种端口分配方法,所述方法应用于虚拟设备中的第一子设备,所述虚拟设备还包括第二子设备,所述方法包括:
当检测到第一用户设备访问内网服务器时,为所述第一用户设备分配第一端口和第一公网地址;
判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项,所述队列表中包含已分配的端口和公网地址,所述队列表为所述第一子设备与所述第二子设备同步的队列表;
如果不存在与所述第一端口和所述第一公网地址对应的表项,则向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,所述同步消息中携带有所述第一端口和所述第一公网地址,以使所述第二子设备更新所述第二子设备的队列表。
可选的,所述方法还包括:
如果存在与所述第一端口和所述第一公网地址对应的表项,则重新为所述第一用户设备分配端口和公网地址,直到所述队列表中不存在与分配的端口和公网地址对应的表项。
可选的,当所述第一子设备为主设备时,所述为所述第一用户设备分配第一端口和第一公网地址之后,所述方法还包括:
如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则执行所述判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项步骤;
如果不存在与所述第一端口和所述第一公网地址对应的表项,则判断所述第二端口和所述第二公网地址是否与所述第一端口和所述第一公网地址相同;
如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址相同,则向所述第二子设备发送冲突消息,所述冲突消息携带有所述第一端口和所述第一公网地址;
如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址不相同,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
可选的,当所述第一子设备为备设备时,所述为所述第一用户设备分配第一端口和第一公网地址之后,所述方法还包括:
如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
可选的,当所述第一子设备为备设备时,所述向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,包括:
向所述第二子设备发送同步消息;
如果在预设时长内未接收到所述第二子设备发送的冲突消息,则在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项。
可选的,所述方法还包括:
如果在预设时长内接收到所述第二子设备发送的冲突消息,则重新为所述第一用户设备分配端口和公网地址。
可选的,所述同步消息和/或冲突消息至少包括消息类型字段和数据字段;
其中,所述同步消息中的消息类型字段携带同步类型的标识,所述同步消息中的数据字段携带需要添加的所述第一端口和所述第一公网地址;
所述冲突消息中的消息类型字段携带冲突类型的标识,所述冲突消息中的数据字段携带发生冲突的所述第一端口和所述第一公网地址。
第二方面,提供了一种端口分配装置,所述装置应用于虚拟设备中的第一子设备,所述虚拟设备还包括第二子设备,所述装置包括:
第一分配模块,用于当检测到第一用户设备访问内网服务器时,为所述第一用户设备分配第一端口和第一公网地址;
第一判断模块,用于判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项,所述队列表中包含已分配的端口和公网地址,所述队列表为所述第一子设备与所述第二子设备同步的队列表;
第一添加模块,用于如果不存在与所述第一端口和所述第一公网地址对应的表项,则向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,所述同步消息中携带有所述第一端口和所述第一公网地址,以使所述第二子设备更新所述第二子设备的队列表。
可选的,所述装置还包括:
第二分配模块,用于如果存在与所述第一端口和所述第一公网地址对应的表项,则重新为所述第一用户设备分配端口和公网地址,直到所述队列表中不存在与分配的端口和公网地址对应的表项。
可选的,当所述第一子设备为主设备时,所述装置还包括:
接收模块,用于如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则触发所述第一判断模块执行所述判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项步骤;
第二判断模块,用于如果不存在与所述第一端口和所述第一公网地址对应的表项,则判断所述第二端口和所述第二公网地址是否与所述第一端口和所述第一公网地址相同;
发送模块,用于如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址相同,则向所述第二子设备发送冲突消息,所述冲突消息携带有所述第一端口和所述第一公网地址;
第二添加模块,用于如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址不相同,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
可选的,当所述第一子设备为备设备时,所述装置还包括:
第三添加模块,用于如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
可选的,当所述第一子设备为备设备时,所述第一添加模块,具体用于:
向所述第二子设备发送同步消息;
如果在预设时长内未接收到所述第二子设备发送的冲突消息,则在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项。
可选的,所述装置还包括:
第三分配模块,用于如果在预设时长内接收到所述第二子设备发送的冲突消息,则重新为所述第一用户设备分配端口和公网地址。
可选的,所述同步消息和/或冲突消息至少包括消息类型字段和数据字段;
其中,所述同步消息中的消息类型字段携带同步类型的标识,所述同步消息中的数据字段携带需要添加的所述第一端口和所述第一公网地址;
所述冲突消息中的消息类型字段携带冲突类型的标识,所述冲突消息中的数据字段携带发生冲突的所述第一端口和所述第一公网地址。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法步骤。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的端口分配方法。
本申请实施例提供的端口分配方法及装置,当网关中的第一子设备接收到第一用户设备发送的请求报文时,为第一用户设备分配第一端口和第一公网地址,然后判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项,队列表中包含已分配的端口和公网地址,队列表为第一子设备与第二子设备同步的队列表。如果不存在与第一端口和第一公网地址对应的表项,则向第二子设备发送同步消息,并在队列表添加与第一端口和第一公网地址对应的第一表项,同步消息中携带有第一端口和第一公网地址,以使第二子设备更新第二子设备的队列表。基于上述处理,能够避免第一子设备和第二子设备为不同的用户终端分配相同的端口和公网地址,从而可以避免网络出现错误。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的系统框架图;
图2为本申请实施例提供的一种端口分配方法的流程图;
图3为本申请实施例提供的一种端口分配方法的示例的流程图;
图4为本申请实施例提供的一种端口分配方法的示例的流程图;
图5为本申请实施例提供的一种端口分配方法的示例的流程图;
图6为本申请实施例提供的一种端口分配方法的示例的流程图;
图7为本申请实施例提供的一种端口分配装置的结构示意图;
图8为本申请实施例提供的一种端口分配装置的结构示意图;
图9为本申请实施例提供的一种端口分配装置的结构示意图;
图10为本申请实施例提供的一种端口分配装置的结构示意图;
图11为本申请实施例提供的一种端口分配装置的结构示意图;
图12为本申请实施例提供的一种第一子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种端口分配方法,该方法可以由SSL VPN中的网关执行。该网关可以是虚拟设备,该虚拟设备可以是由多个子设备虚拟成的逻辑设备。例如,该网关可以为IRF(Intelligent Resilient Framework,智能弹性架构)堆叠组网的SSLVPN网关,还可以是其他聚合协议虚拟成的一台逻辑设备。该网关可以包括两台或两台以上子设备,本申请实施例以该网关包括两台子设备(即第一子设备和第二子设备)为例进行说明,其他情况与之类似。其中,第一子设备和第二子设备之间可以进行通信,例如,该网关可以为IRF堆叠组网的SSLVPN网关时,第一子设备和第二子设备之间可以通过IRF堆叠消息来进行通信。第一子设备和第二子设备可以同时处理SSLVPN业务,如图1所示,为本申请实施例提供的系统框架图,其中,该网络系统包括多个用户设备、SSLVPN网关和多个服务器,SSLVPN网关包括第一子设备和第二子设备。该用户设备可以是外网的用户设备,该服务器可以是内网的服务器。SSLVPN网关可以分别与用户设备和服务器建立SSL隧道,以实现外网的用户设备访问内网的服务器。
本申请实施例中,第一子设备和第二子设备中分别存储有队列表,并通过本申请实施例提供的同步机制进行同步,这样,该队列表中记录有第一子设备和第二子设备已分配的端口和公网地址。当网关中的任一子设备(可称为第一子设备)接收到第一用户设备发送的请求报文时,第一子设备为第一用户设备分配第一端口和第一公网地址,然后,先判断该队列表中,是否存在与第一端口和第一公网地址冲突的表项。如果不存在,则在本地的队列表添加与第一端口和第一公网地址对应的第一表项,并向第二子设备发送同步消息,以使第二子设备同步队列表。如果存在,则重新为第一用户设备分配端口和公网地址,直到队列表中不存在与分配的端口和公网地址冲突的表项。这样,第一子设备可以通过与上述队列表比较,判断分配的第一端口和第一公网地址是否与虚拟设备中已分配的端口和公网地址重复,如果未重复,则更新队列表;如果重复,则重新为第一用户设备分配端口和公网地址,从而避免了为不同的用户终端分配相同的端口和公网地址,可以避免网络出现错误。
为了便于理解本申请实施例,首先对本申请实施例中所涉及的消息的格式进行说明,具体如下。
对于第一子设备和第二子设备之间的队列表更新、删除、冲突等操作都可以通过消息交互来通知对端。本方案设计的消息格式如下,
MBUF_HEAD_S | ReservedBytes | SSLVPN_HEAD_S | ModuleData |
其中,MBUF_HEAD_S为透传头部,说明报文需要进行透传操作,该字段为现有字段。
ReservedBytes表示使用的内存大小,该字段为现有字段。
SSLVPN_HEAD_S表示该报文的消息类型,其中,消息类型可以包括1、同步;2、删除;3、冲突这三种消息类型,分别对应三种表项的操作。其中,当消息类型为同步时,该消息可称为同步消息;当消息类型为删除时,该消息可称为删除消息;当消息类型为冲突时,该消息可称为冲突消息。SSLVPN_HEAD_S字段为本申请中的新增字段。
ModuleData为数据字段,用于携带需要进行处理或操作的表项内容,例如,当消息类型为同步时,ModuleData字段用于携带需要添加的表项内容;当消息类型为删除时,ModuleData字段用于携带需要删除的表项内容;当消息类型为冲突时,ModuleData字段用于携带发生冲突的表项内容。ModuleData字段为本申请中的新增字段。
下面将结合具体实施方式,以网关中的第一子设备为例,对上述端口分配方法的处理过程进行详细说明,其中,第一子设备可以为网关中的任一子设备。如图2所示,具体步骤如下。
步骤201,当检测到第一用户设备访问内网服务器时,为第一用户设备分配第一端口和第一公网地址。
在实施中,用户设备可以通过SSLVPN网关访问内网服务器。例如,当需要进行某隧道业务时,用户设备可以向SSLVPN网关发送SSL连接请求,该SSL连接请求中可以携带有该业务的标识,SSLVPN网关则会与该用户终端建立SSL隧道,并与该内网业务对应的内网服务器建立SSL隧道。或者,用户设备也可以向SSLVPN网关发送普通的TCP(TransmissionControl Protocol传输控制协议)连接请求,SSLVPN网关可以进行NAT(Network AddressTranslation,网络地址转换)处理,通过NAT处理可以判断网关中是否存在与该用户设备相匹配的接口,如果存在,则允许该用户设备访问内网服务器。
当SSLVPN网关的第一子设备检测到第一用户设备访问内网服务器时,例如,当与该用户设备建立SSL隧道后,需要与内网服务器建立连接时,或者,当检测到某用户终端通过TCP连接匹配到了SSLVPN网关接口的NAT时,第一子设备可以为第一用户设备分配第一端口和第一公网地址。
第一子设备中可以预先设置的端口分配算法,第一子设备可以根据预设的端口分配算法,为第一用户设备分配一个端口(即报文源端口)。其中,端口分配算法可以采用bitmap算法,第一子设备可以通过bitmap算法,在1024-65535范围内确定一个端口A作为第一用户设备对应的报文源端口。
第一子设备还可以为第一用户设备分配一个公网地址。其中,SSLVPN网关可以仅具有一个公网地址,此时,第一子设备可以将该公网地址分配给该用户设备。或者,SSLVPN网关也可以具有多个公网地址,此时,第一子设备可以在多个公网地址中,随机选择一个公网地址分配给第一用户设备。
为了便于区分,本申请实施例中,将第一子设备为第一用户设备分配的端口称为第一端口,将第一子设备为第一用户设备分配的公网地址称为第一公网地址;将第二子设备为第二用户设备分配的端口称为第二端口,将第二子设备为第二用户设备分配的公网地址称为第二公网地址。
步骤202,判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项,队列表中包含已分配的端口和公网地址。
其中,队列表为第一子设备与第二子设备同步的队列表。
在实施中,第一子设备和第二子设备中分别存储有队列表,该队列表可以在第一子设备和第二子设备开启后自动创建。其中,自动创建后的队列表为解锁状态,队列表只有在加锁状态下才可以进行修改操作,在解锁状态下只可以查看操作,不可以修改。如表一所示,为本申请实施例提供的队列表的示例。
表一
加锁状态 | IRF状态 | 公网地址 | 端口 |
其中,表一中各字段的含义如下。
加锁状态字段用于记录本地的队列表的当前状态,比如是否加锁。
IRF状态字段用于记录本设备的设备角色,比如是主设备或备设备。
公网地址字段用于记录已分配的公网地址。
端口字段用于记录已分配的端口。
第一子设备和第二子设备可以通过消息交互来同步该队列表,以保证第一子设备与第二子设备中存储的队列表是相同的,队列表的同步过程后续会进行详细说明。
当第一子设备为第一用户设备分配第一端口和第一公网地址后,可以判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项。
如果存在,则说明该第一端口和该第一公网地址与已分配的端口和公网地址冲突,第一子设备需要重新进行分配,该过程后续会进行详细说明。
如果不存在与第一端口和第一公网地址对应的表项,则说明该第一端口和该第一公网地址未与已分配的端口和公网地址冲突,执行步骤203。
步骤203,如果不存在与第一端口和第一公网地址对应的表项,则向第二子设备发送同步消息,在队列表添加与第一端口和第一公网地址对应的第一表项,同步消息中携带有第一端口和第一公网地址,以使第二子设备更新第二子设备的队列表。
在实施中,如果不存在与第一端口和第一公网地址对应的表项,则第一子设备可以向第二子设备发送同步消息,并可以设置队列表的加锁状态为加锁,例如,可以将加锁状态的字段设置为1。然后,在队列表添加与第一端口和第一公网地址对应的第一表项。当第一表项添加完成后,第一子设备将队列表的加锁状态为解锁,例如,可以将加锁状态的字段设置为0。
同步消息中可以携带有第一端口和第一公网地址。第二子设备接收到该同步消息后,可以获取该同步消息中的第一端口和第一公网地址,然后在第二子设备的队列表中,添加与第一端口和第一公网地址对应的表项。
可选的,如果存在与第一端口和第一公网地址对应的表项,则重新为第一用户设备分配端口和公网地址,直到队列表中不存在与分配的端口和公网地址对应的表项。
在实施中,如果存在与第一端口和第一公网地址对应的表项,则第一子设备会根据预设的端口分配算法,为第一用户设备重新分配端口。例如,第一子设备可以通过bitmap算法,在1-65535范围内重新确定一个端口B,分配给第一用户设备。然后,执行步骤202,直到队列表中不存在与分配的端口和公网地址对应的表项。也即,直到分配的端口和公网地址与当前队列表中的端口和公网地址不发生冲突为止。
可选的,第一子设备还可以删除队列表中的表项。例如,技术人员可以手动删除第一子设备中的表项,或者,第一子设备可以在检测某会话删除时,确定该会话中的公网地址和端口,然后在队列表中查找与该公网地址和端口对应的表项,进而删除该表项。另外,第一子设备删除队列表的表项后,第一子设备可以向第二子设备发送删除消息,该删除消息中携带有该表项中的公网地址和端口,第二子设备接收到该删除消息后,可以从队列表中删除相应的表项。这样,可以提高队列表更新的及时性。
在另一可能的实现方式中,由于现有技术中,第一子设备和第二子设备之间的会话是同步的,因此,在第一子设备删除该会话以及该会话对应的队列表的表项后,也可以无需发送删除消息,基于现有的会话同步机制,第一子设备与第二子设备会话同步后,第二子设备同样会删除该会话,然后删除该会话对应的队列表的表项。这样,可以减少消息交互的次数,节约处理资源。
如图3所示,本申请实施例还提供了一种端口分配方法的示例,应用于第一子设备,具体步骤如下。
步骤301,当检测到第一用户设备访问内网服务器时,为第一用户设备分配第一端口和第一公网地址。
该步骤的具体处理过程可以参照上述步骤201,此处不再赘述。
步骤302,判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项。
如果不存在与第一端口和第一公网地址对应的表项,则执行步骤303~步骤304。如果存在与第一端口和第一公网地址对应的表项,则执行步骤305。
该步骤的具体处理过程可以参照上述步骤202,此处不再赘述。
步骤303,向第二子设备发送同步消息。
其中,该同步消息中携带有第一端口和第一公网地址。
该步骤的具体处理过程可以参照上述步骤203,此处不再赘述。
步骤304,在队列表添加与第一端口和第一公网地址对应的第一表项,以使第二子设备更新第二子设备的队列表。
该步骤的具体处理过程可以参照上述步骤203,此处不再赘述。
步骤305,重新为第一用户设备分配第一端口和第一公网地址,返回步骤302。
该步骤的具体处理过程可以参照上述步骤203,此处不再赘述。
在实际中,第一子设备和第二子设备中可能会同时有用户上线,此时,针对网关中的主设备和备设备,可以分别采用不用的处理方式进行处理。如图4所示,本申请实施例还提供了当两个子设备中同时有用户上线、且第一子设备为主设备时上述端口分配方法的处理过程,以执行主体为第一子设备为例进行说明。
步骤401,当检测到第一用户设备访问内网服务器时,为第一用户设备分配第一端口和第一公网地址。
该步骤的具体处理过程可以参照上述步骤201,此处不再赘述。
步骤402,接收第二子设备发送的同步消息。
其中,该同步消息中可以携带有第二端口和第二公网地址。
步骤403,判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项。
如果不存在与第一端口和第一公网地址对应的表项,则执行步骤404~步骤405。如果存在与第一端口和第一公网地址对应的表项,则执行步骤409。
该步骤的具体处理过程可以参照上述步骤202,此处不再赘述。
步骤404,在队列表添加与第一端口和第一公网地址对应的第一表项。
该步骤的具体处理过程可以参照上述步骤203,此处不再赘述。
步骤405,判断第二端口和第二公网地址是否与第一端口和第一公网地址相同。
如果第二端口和第二公网地址,与第一端口和第一公网地址相同,则执行步骤406。如果第二端口和第二公网地址,与第一端口和第一公网地址不相同,则执行步骤407。
步骤406,向第二子设备发送冲突消息。
其中,冲突消息携带有第一端口和第一公网地址。
步骤407,在队列表添加与第二端口和第二公网地址对应的第二表项。
该步骤的具体处理过程可以参照上述步骤203,此处不再赘述。
步骤408,向第二子设备发送同步消息。
该步骤的具体处理过程可以参照上述步骤203,此处不再赘述。
步骤409,重新为第一用户设备分配第一端口和第一公网地址,直到队列表中不存在与分配的端口和公网地址对应的表项。
该步骤的具体处理过程可以参照上述步骤204,此处不再赘述。
基于上述处理,当主设备与备设备中同时有用户上线时,如果主设备分配的端口和公网地址,与备设备分配的端口和公网地址相冲突,则优先保证主设备的分配的端口和公网地址的有效性,提高了主设备的业务处理效率。
如图5所示,与图4所示的主设备的处理流程相对应,本申请实施例还提供了一种备设备(即第二子设备)执行端口分配方法的示例,具体步骤如下。
步骤501,当检测到第二用户设备访问内网服务器时,为第二用户设备分配第二端口和第二公网地址。
该步骤的具体处理过程可以参照上述步骤201,此处不再赘述。
步骤502,判断本地的队列表中,是否存在与第二端口和第二公网地址对应的表项。
如果不存在与第二端口和第二公网地址对应的表项,则执行步骤503~步骤504。如果存在与第二端口和第二公网地址对应的表项,则执行步骤505。
该步骤的具体处理过程可以参照上述步骤202,此处不再赘述。
步骤503,向第一子设备发送同步消息。
其中,同步消息中携带有第二端口和第二公网地址。
该步骤的具体处理过程可以参照上述步骤203,此处不再赘述。
步骤504,判断在预设时长内未是否接收到第一子设备发送的冲突消息。
其中,该预设时长可以由技术人员根据经验进行设置,也可以是设备默认设置。
如果在预设时长内未接收到第一子设备发送的冲突消息,则执行步骤505。如果在预设时长内接收到第一子设备发送的冲突消息,则执行步骤506
步骤505,在队列表添加与第二端口和第二公网地址对应的第二表项。
步骤506,重新为第二用户设备分配第二端口和第二公网地址,返回步骤502。
如图6所示,第一子设备和第二子设备中可能会同时有用户上线,此时,针对网关中的主设备和备设备,可以分别采用不用的处理方式进行处理。本申请实施例还提供了当两个子设备中同时有用户上线时、且第一子设备为备设备时上述端口分配方法的处理过程,以执行主体为第一子设备为例进行说明。
步骤601,当检测到第一用户设备访问内网服务器时,为第一用户设备分配第一端口和第一公网地址。
步骤602,接收第二子设备发送的携带有第二端口和第二公网地址的同步消息。
步骤603,在队列表添加与第二端口和第二公网地址对应的第二表项。
步骤604,判断添加第二表项后的队列表中,是否存在与第一端口和第一公网地址对应的表项。
如果不存在与第一端口和第一公网地址对应的表项,则执行步骤605~步骤606。如果存在与第一端口和第一公网地址对应的表项,则执行步骤607。
步骤605,向第二子设备发送同步消息。
其中,同步消息中携带有第一端口和第一公网地址。
步骤606,在队列表添加与第一端口和第一公网地址对应的第一表项,以使第二子设备更新第二子设备的队列表。
步骤607,重新为第一用户设备分配第一端口和第一公网地址,返回步骤604。
基于上述处理,当主设备与备设备中同时有用户上线时,如果主设备分配的端口和公网地址,与备设备分配的端口和公网地址相冲突,则优先保证主设备的分配的端口和公网地址的有效性,提高了主设备的业务处理效率。
本申请实施例还提供了另一种端口分配方法的示例,具体内容如下。
参照图1所示的网络系统,公网存在两个用户User1和User2,其中User1通过SSLVPN隧道访问内网的FTP(File Transfer Protocol,文件传输协议)服务器,User2通过匹配网关的NAT业务访问WEB服务器。网关1和网关2中已经自动创建好队列表。
首先,User1通过SSLVPN隧道向内网的FTP服务器发起链接报文,其中,源地址为9.9.9.9,目的地址为80.1.1.1。当网关1接收到该链接报文后,可以向内网FTP服务器发起连接,此时,网关1可以通过bitmap算法选择一个使用的端口比如1025,然后,网关1将队列表加锁,把端口1025和公网地址2.2.2.1加入到队列表中,该表项如表二所示。
表二
加锁状态 | IRF状态 | 公网地址 | 端口 |
1 | 0 | 2.2.2.1 | 1025 |
其中,加锁状态为1表示该队列表处于加锁状态,IRF状态为0表示网关1为主设备。其中,当前网关1完成表项添加后,将队列表设置为解锁状态,也即,将加锁状态置为0,如表三所示。
表三
加锁状态 | IRF状态 | 公网地址 | 端口 |
0 | 0 | 2.2.2.1 | 1025 |
网关1分配公网地址和端口后,还会向网关2发送同步消息,同步消息中消息类型为1(即表示同步),并且携带有端口1025和公网地址2.2.2.1。
网关2接收到同步消息后,将本地的队列表进行加锁,然后添加端口1025和公网地址2.2.2.1对应表项,如表四所示。
表四
加锁状态 | IRF状态 | 公网地址 | 端口 |
1 | 1 | 2.2.2.1 | 1025 |
其中,IRF状态为1表示网关2为备设备。
在添加完成后,网关2将本地的队列表设置为解锁状态,如表五所示。
表五
加锁状态 | IRF状态 | 公网地址 | 端口 |
0 | 1 | 2.2.2.1 | 1025 |
网关1修改队列表后,可以将链接报文为源地址设置为2.2.2.1,源端口设置为1025,目的地址设置为192.168.1.10,目的端口设置为21,然后该链接报文发送给FTP服务器。
当user2通过普通的TCP发起连接时,假设user2匹配到G0/1的NAT配置去访问Web服务器时,链接报文为的源地址为9.9.9.10,源端口为1024,目的地址为99.1.1.10,目的端口为80。因为该链接报文匹配了接口的NAT使用的公网地址也为2.1.1.1,也即,为user2分配的公网地址为2.1.1.1。这时,当网关2可以通过bitmap算法计算出所使用的端口,然后判断本地的队列表中是否已经存在了与该公网地址和该端口对应的表项。例如,如果计算出的端口为1025,则与队列表中的表项冲突,网关2通过bitmap算法重新计算出所使用的端口;如果计算出的端口为1026,则与队列表中的表项不冲突,则对队列表进行加锁操作,添加端口1026和公网地址2.1.1.1对应的表项,并在添加完成后,对表项进行解锁。如表六所示。
表六
加锁状态 | IRF状态 | 公网地址 | 端口 |
0 | 1 | 2.2.2.1 | 1025 |
0 | 1 | 2.2.2.1 | 1026 |
然后,网关2将该链接报文的源地址设置为2.1.1.1,源端口设置为1026,目的地址设置为90.1.1.10,目的端口设置为80,然后发送给Web服务器。
当User1下线后,网关1会删除User1对应的会话,其中,该会话中的公网地址为2.2.2.1,端口为1025。同时,网关1对队列表进行加锁,删除公网地址为2.2.2.1,端口为1025对应的表项。该表项如表七所示。
表七
加锁状态 | IRF状态 | 公网地址 | 端口 |
1 | 0 | —— | —— |
其中,“——”表示表项的内容为空。
删除完成后,网关1将队列表解锁,该表项如表八所示。
表八
加锁状态 | IRF状态 | 公网地址 | 端口 |
0 | 0 | —— | —— |
网关1还会向网关2发送删除消息,删除消息中消息类型为2(即表示删除),并且携带有端口1025和公网地址2.2.2.1。网关2接收到删除消息后,将本地的队列表进行加锁,然后查找端口1025和公网地址2.2.2.1对应表项,删除该表项,并在删除完成后,对队列表进行解锁。如表九所示。
表九
加锁状态 | IRF状态 | 公网地址 | 端口 |
0 | 1 | 2.2.2.1 | 1026 |
0 | 1 | —— | —— |
本申请实施例还提供了另一种端口分配方法的示例,该示例中,网关1和网关2中同时有用户上线,针对网关1(即主设备),具体的处理过程如下。
User1通过SSLVPN隧道向内网的FTP服务器发起链接报文,其中,源地址为9.9.9.9,目的地址为80.1.1.1。网关1当前的队列表如表十所示。
当网关1接收到该链接报文后,可以向内网FTP服务器发起连接。网关1可以通过bitmap算法选择一个使用的端口比如1025,并确定分配的公网地址为2.2.2.1。此时,网关1还接收到网关2发送的同步消息。该同步消息中携带有端口1025和公网地址2.2.2.1。
表十
加锁状态 | IRF状态 | 公网地址 | 端口 |
0 | 0 | 2.2.2.1 | 1028 |
0 | 0 | 2.2.2.1 | 1029 |
网关1判断本地的队列表中,不存在与端口1025和公网地址2.2.2.1对应的表项。然后,对队列表进行加锁,把端口1025和公网地址2.2.2.1加入到队列表中,解锁队列表。该表项如表十一所示。
表十一
加锁状态 | IRF状态 | 公网地址 | 端口 |
0 | 0 | 2.2.2.1 | 1028 |
0 | 0 | 2.2.2.1 | 1029 |
0 | 0 | 2.2.2.1 | 1025 |
之后,网关1判断同步消息中的端口和公网地址,是否与端口1025和公网地址2.2.2.1相同。由于同步消息中的端口为1025和公网地址为2.2.2.1,因此,网关1判定发生冲突,向网关2发送冲突消息。冲突消息中消息类型为3(即表示冲突),并且携带有端口1025和公网地址2.2.2.1。网关2接收到冲突消息后,通过bitmap算法重新计算出所使用的端口。这样,能够避免网关1和网关2为不同的用户终端分配相同的端口和公网地址,可以避免网络出现错误。
基于相同的技术构思,如图7所示,本申请实施例还提供了一种端口分配装置,该装置应用于虚拟设备中的第一子设备,虚拟设备还包括第二子设备,该装置包括:
第一分配模块710,用于当检测到第一用户设备访问内网服务器时,为第一用户设备分配第一端口和第一公网地址;
第一判断模块720,用于判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项,队列表中包含已分配的端口和公网地址,队列表为第一子设备与第二子设备同步的队列表;
第一添加模块730,用于如果不存在与第一端口和第一公网地址对应的表项,则向第二子设备发送同步消息,并在队列表添加与第一端口和第一公网地址对应的第一表项,同步消息中携带有第一端口和第一公网地址,以使第二子设备更新第二子设备的队列表。
可选的,如图8所示,该装置还包括:
第二分配模块740,用于如果存在与第一端口和第一公网地址对应的表项,则重新为第一用户设备分配端口和公网地址,直到队列表中不存在与分配的端口和公网地址对应的表项。
可选的,当第一子设备为主设备时,如图9所示,该装置还包括:
接收模块750,用于如果接收到第二子设备发送的携带有第二端口和第二公网地址的同步消息,则触发第一判断模块720执行判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项步骤;
第二判断模块760,用于如果不存在与第一端口和第一公网地址对应的表项,则判断第二端口和第二公网地址是否与第一端口和第一公网地址相同;
发送模块770,用于如果第二端口和第二公网地址,与第一端口和第一公网地址相同,则向第二子设备发送冲突消息,冲突消息携带有第一端口和第一公网地址;
第二添加模块780,用于如果第二端口和第二公网地址,与第一端口和第一公网地址不相同,则在队列表添加与第二端口和第二公网地址对应的第二表项。
可选的,当第一子设备为备设备时,如图10所示,该装置还包括:
第三添加模块790,用于如果接收到第二子设备发送的携带有第二端口和第二公网地址的同步消息,则在队列表添加与第二端口和第二公网地址对应的第二表项。
可选的,当第一子设备为备设备时,第一添加模块730,具体用于:
向第二子设备发送同步消息;
如果在预设时长内未接收到第二子设备发送的冲突消息,则在队列表添加与第一端口和第一公网地址对应的第一表项。
可选的,如图11所示,该装置还包括:
第三分配模块7100,用于如果在预设时长内接收到第二子设备发送的冲突消息,则重新为第一用户设备分配端口和公网地址。
可选的,同步消息和/或冲突消息至少包括消息类型字段和数据字段;
其中,同步消息中的消息类型字段携带同步类型的标识,同步消息中的数据字段携带需要添加的第一端口和第一公网地址;
冲突消息中的消息类型字段携带冲突类型的标识,冲突消息中的数据字段携带发生冲突的第一端口和第一公网地址。
本申请实施例提供的端口分配装置,当网关中的第一子设备接收到第一用户设备发送的请求报文时,为第一用户设备分配第一端口和第一公网地址,然后判断本地的队列表中,是否存在与第一端口和第一公网地址对应的表项,队列表中包含已分配的端口和公网地址,队列表为第一子设备与第二子设备同步的队列表。如果不存在与第一端口和第一公网地址对应的表项,则向第二子设备发送同步消息,并在队列表添加与第一端口和第一公网地址对应的第一表项,同步消息中携带有第一端口和第一公网地址,以使第二子设备更新第二子设备的队列表。基于上述处理,能够避免第一子设备和第二子设备为不同的用户终端分配相同的端口和公网地址,从而可以避免网络出现错误。
本申请实施例还提供了一种电子设备,该电子设备可以是某虚拟设备中的第一子设备,该虚拟设备还可以包括第二子设备。以下了电子设备为第一子设备为例进行说明。如图12所示,第一子设备可以包括处理器1201、通信接口1202、存储器1203和通信总线1204,其中,处理器1201,通信接口1202,存储器1203通过通信总线1204完成相互间的通信,
存储器1203,用于存放计算机程序;
处理器1201,用于执行存储器1203上所存放的程序时,实现如下步骤:
当检测到第一用户设备访问内网服务器时,为所述第一用户设备分配第一端口和第一公网地址;
判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项,所述队列表中包含已分配的端口和公网地址,所述队列表为所述第一子设备与所述第二子设备同步的队列表;
如果不存在与所述第一端口和所述第一公网地址对应的表项,则向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,所述同步消息中携带有所述第一端口和所述第一公网地址,以使所述第二子设备更新所述第二子设备的队列表。
可选的,处理器1201执行存储器1203上所存放的程序时,还实现如下步骤:
如果存在与所述第一端口和所述第一公网地址对应的表项,则重新为所述第一用户设备分配端口和公网地址,直到所述队列表中不存在与分配的端口和公网地址对应的表项。
可选的,当处理器1201实现步骤:所述第一子设备为主设备时,所述为所述第一用户设备分配第一端口和第一公网地址之后,所述处理器1201执行存储器1203上所存放的程序时,还实现如下步骤:
如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则执行所述判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项步骤;
如果不存在与所述第一端口和所述第一公网地址对应的表项,则判断所述第二端口和所述第二公网地址是否与所述第一端口和所述第一公网地址相同;
如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址相同,则向所述第二子设备发送冲突消息,所述冲突消息携带有所述第一端口和所述第一公网地址;
如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址不相同,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
可选的,当处理器1201实现步骤:所述第一子设备为备设备时,所述为所述第一用户设备分配第一端口和第一公网地址之后,所述处理器1201执行存储器1203上所存放的程序时,还实现如下步骤:
如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
可选的,当处理器1201实现步骤:所述第一子设备为备设备时,所述向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,包括:
向所述第二子设备发送同步消息;
如果在预设时长内未接收到所述第二子设备发送的冲突消息,则在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项。
可选的,所述处理器1201执行存储器1203上所存放的程序时,还实现如下步骤:
如果在预设时长内接收到所述第二子设备发送的冲突消息,则重新为所述第一用户设备分配端口和公网地址。
可选的,所述同步消息和/或冲突消息至少包括消息类型字段和数据字段;
其中,所述同步消息中的消息类型字段携带同步类型的标识,所述同步消息中的数据字段携带需要添加的所述第一端口和所述第一公网地址;
所述冲突消息中的消息类型字段携带冲突类型的标识,所述冲突消息中的数据字段携带发生冲突的所述第一端口和所述第一公网地址。
上述第一子设备提到的通信总线可以是外设部件互连标准(英文:PeripheralComponent Interconnect,简称:PCI)总线或扩展工业标准结构(英文:Extended IndustryStandard Architecture,简称:EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述第一子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(英文:Random Access Memory,简称:RAM),也可以包括非易失性存储器(英文:Non-Volatile Memory,简称:NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(英文:Central ProcessingUnit,简称:CPU)、网络处理器(英文:Network Processor,简称:NP)等;还可以是数字信号处理器(英文:Digital Signal Processing,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)、现场可编程门阵列(英文:Field-Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一端口分配方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一端口分配方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (13)
1.一种端口分配方法,其特征在于,所述方法应用于虚拟设备中的第一子设备,所述虚拟设备还包括第二子设备,所述方法包括:
当检测到第一用户设备访问内网服务器时,为所述第一用户设备分配第一端口和第一公网地址;
判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项,所述队列表中包含已分配的端口和公网地址,所述队列表为所述第一子设备与所述第二子设备同步的队列表;
如果不存在与所述第一端口和所述第一公网地址对应的表项,则向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,所述同步消息中携带有所述第一端口和所述第一公网地址,以使所述第二子设备更新所述第二子设备的队列表;
如果存在与所述第一端口和所述第一公网地址对应的表项,则重新为所述第一用户设备分配端口和公网地址,直到所述队列表中不存在与分配的端口和公网地址对应的表项。
2.根据权利要求1所述的方法,其特征在于,当所述第一子设备为主设备时,所述为所述第一用户设备分配第一端口和第一公网地址之后,所述方法还包括:
如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则执行所述判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项步骤;
如果不存在与所述第一端口和所述第一公网地址对应的表项,则判断所述第二端口和所述第二公网地址是否与所述第一端口和所述第一公网地址相同;
如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址相同,则向所述第二子设备发送冲突消息,所述冲突消息携带有所述第一端口和所述第一公网地址;
如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址不相同,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
3.根据权利要求1所述的方法,其特征在于,当所述第一子设备为备设备时,所述为所述第一用户设备分配第一端口和第一公网地址之后,所述方法还包括:
如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
4.根据权利要求1所述的方法,其特征在于,当所述第一子设备为备设备时,所述向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,包括:
向所述第二子设备发送同步消息;
如果在预设时长内未接收到所述第二子设备发送的冲突消息,则在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
如果在预设时长内接收到所述第二子设备发送的冲突消息,则重新为所述第一用户设备分配端口和公网地址。
6.根据权利要求1~5任一所述的方法,其特征在于,所述同步消息和/或冲突消息至少包括消息类型字段和数据字段;
其中,所述同步消息中的消息类型字段携带同步类型的标识,所述同步消息中的数据字段携带需要添加的所述第一端口和所述第一公网地址;
所述冲突消息中的消息类型字段携带冲突类型的标识,所述冲突消息中的数据字段携带发生冲突的所述第一端口和所述第一公网地址。
7.一种端口分配装置,其特征在于,所述装置应用于虚拟设备中的第一子设备,所述虚拟设备还包括第二子设备,所述装置包括:
第一分配模块,用于当检测到第一用户设备访问内网服务器时,为所述第一用户设备分配第一端口和第一公网地址;
第一判断模块,用于判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项,所述队列表中包含已分配的端口和公网地址,所述队列表为所述第一子设备与所述第二子设备同步的队列表;
第一添加模块,用于如果不存在与所述第一端口和所述第一公网地址对应的表项,则向所述第二子设备发送同步消息,并在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项,所述同步消息中携带有所述第一端口和所述第一公网地址,以使所述第二子设备更新所述第二子设备的队列表;
第二分配模块,用于如果存在与所述第一端口和所述第一公网地址对应的表项,则重新为所述第一用户设备分配端口和公网地址,直到所述队列表中不存在与分配的端口和公网地址对应的表项。
8.根据权利要求7所述的装置,其特征在于,当所述第一子设备为主设备时,所述装置还包括:
接收模块,用于如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则触发所述第一判断模块执行所述判断本地的队列表中,是否存在与所述第一端口和所述第一公网地址对应的表项步骤;
第二判断模块,用于如果不存在与所述第一端口和所述第一公网地址对应的表项,则判断所述第二端口和所述第二公网地址是否与所述第一端口和所述第一公网地址相同;
发送模块,用于如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址相同,则向所述第二子设备发送冲突消息,所述冲突消息携带有所述第一端口和所述第一公网地址;
第二添加模块,用于如果所述第二端口和所述第二公网地址,与所述第一端口和所述第一公网地址不相同,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
9.根据权利要求7所述的装置,其特征在于,当所述第一子设备为备设备时,所述装置还包括:
第三添加模块,用于如果接收到所述第二子设备发送的携带有第二端口和第二公网地址的同步消息,则在所述队列表添加与所述第二端口和所述第二公网地址对应的第二表项。
10.根据权利要求7所述的装置,其特征在于,当所述第一子设备为备设备时,所述第一添加模块,具体用于:
向所述第二子设备发送同步消息;
如果在预设时长内未接收到所述第二子设备发送的冲突消息,则在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项;
或
当所述第一子设备为备设备时,所述第一添加模块,具体用于:
向所述第二子设备发送同步消息;
如果在预设时长内未接收到所述第二子设备发送的冲突消息,则在所述队列表添加与所述第一端口和所述第一公网地址对应的第一表项;
所述装置还包括第三分配模块,用于如果在预设时长内接收到所述第二子设备发送的冲突消息,则重新为所述第一用户设备分配端口和公网地址。
11.根据权利要求7~10任一所述的装置,其特征在于,所述同步消息和/或冲突消息至少包括消息类型字段和数据字段;
其中,所述同步消息中的消息类型字段携带同步类型的标识,所述同步消息中的数据字段携带需要添加的所述第一端口和所述第一公网地址;
所述冲突消息中的消息类型字段携带冲突类型的标识,所述冲突消息中的数据字段携带发生冲突的所述第一端口和所述第一公网地址。
12.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811161227.9A CN109347993B (zh) | 2018-09-30 | 2018-09-30 | 一种端口分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811161227.9A CN109347993B (zh) | 2018-09-30 | 2018-09-30 | 一种端口分配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109347993A CN109347993A (zh) | 2019-02-15 |
CN109347993B true CN109347993B (zh) | 2021-11-05 |
Family
ID=65307759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811161227.9A Active CN109347993B (zh) | 2018-09-30 | 2018-09-30 | 一种端口分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109347993B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8863256B1 (en) * | 2011-01-14 | 2014-10-14 | Cisco Technology, Inc. | System and method for enabling secure transactions using flexible identity management in a vehicular environment |
CN102231682B (zh) * | 2011-07-25 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种堆叠冲突的处理方法和设备 |
US9344397B2 (en) * | 2011-09-27 | 2016-05-17 | Aruba Networks, Inc. | Client aware DHCP lease management |
CN105812497B (zh) * | 2014-12-30 | 2019-04-26 | 北京华为数字技术有限公司 | 网络地址分配方法、设备和系统 |
CN106506724B (zh) * | 2016-11-23 | 2020-10-30 | 新华三技术有限公司 | 一种分配端口块的方法及装置 |
CN106534400B (zh) * | 2016-11-25 | 2019-09-17 | 新华三技术有限公司 | 网络地址转换方法及装置 |
-
2018
- 2018-09-30 CN CN201811161227.9A patent/CN109347993B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109347993A (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10135827B2 (en) | Secure access to remote resources over a network | |
US9350608B2 (en) | Method and system for using virtual tunnel end-point registration and virtual network identifiers to manage virtual extensible local area network access | |
WO2018028606A1 (zh) | 转发策略配置 | |
CN109995641B (zh) | 一种信息处理方法、计算节点和存储介质 | |
WO2017127138A1 (en) | Virtual address for controller in a controller cluster | |
CN109495369B (zh) | 一种报文转发方法及装置 | |
US20210409509A1 (en) | Binding a public cloud user account and a personal cloud user account for a hybrid cloud environment | |
CN105721487B (zh) | 信息处理方法及电子设备 | |
CN111031129B (zh) | 访问请求处理方法、处理装置、电子设备及存储介质 | |
CN113037761A (zh) | 登录请求的验证方法及装置、存储介质、电子设备 | |
CN109347993B (zh) | 一种端口分配方法及装置 | |
US10116580B2 (en) | Seamless location aware network connectivity | |
US8087066B2 (en) | Method and system for securing a commercial grid network | |
CN110620729A (zh) | 一种报文转发方法、装置及报文转发设备 | |
CN113051035B (zh) | 一种远程控制方法、装置、系统及宿主机 | |
CN110365618B (zh) | 网络登录方法及装置 | |
KR101538737B1 (ko) | 동적 호스트 구성 프로토콜을 이용한 ip 할당 방법 | |
CN113904871A (zh) | 网络切片的接入方法、pcf实体、终端和通信系统 | |
JP2018082310A (ja) | PaaS接続プログラム、PaaS接続方法及びPaaS接続装置 | |
US20160248596A1 (en) | Reflecting mdns packets | |
JP2009272693A (ja) | 接続制御システム、接続制御方法および接続制御プログラム | |
US11979292B1 (en) | Virtual network interface management for network functions using network definitions | |
US11829261B2 (en) | Providing a logical data isolation with intermittent connectivity | |
CN116389262B (zh) | 一种配置回滚方法、装置、电子设备及存储介质 | |
CN115914233A (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 |