CN114567616A - 一种VxLAN NAT穿越的方法、系统和设备 - Google Patents

一种VxLAN NAT穿越的方法、系统和设备 Download PDF

Info

Publication number
CN114567616A
CN114567616A CN202210187259.6A CN202210187259A CN114567616A CN 114567616 A CN114567616 A CN 114567616A CN 202210187259 A CN202210187259 A CN 202210187259A CN 114567616 A CN114567616 A CN 114567616A
Authority
CN
China
Prior art keywords
vtep
vxlan
nat
target
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.)
Granted
Application number
CN202210187259.6A
Other languages
English (en)
Other versions
CN114567616B (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.)
Tianyi Safety Technology Co Ltd
Original Assignee
Tianyi Safety Technology 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 Tianyi Safety Technology Co Ltd filed Critical Tianyi Safety Technology Co Ltd
Priority to CN202210187259.6A priority Critical patent/CN114567616B/zh
Publication of CN114567616A publication Critical patent/CN114567616A/zh
Application granted granted Critical
Publication of CN114567616B publication Critical patent/CN114567616B/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/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • 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

Landscapes

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

Abstract

本申请实施例公开了一种VxLAN NAT穿越的方法、系统和设备,其中,第一VTEP端将VxLAN报文发送至NAT设备,NAT设备将VxLAN报文中携带的第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文;第二VTEP端接收新的VxLAN报文,并生成对应的初始响应报文;第二VTEP端根据初始响应报文中携带的第一VTEP端的MAC地址,在目标映射表中查找,确定目标端口号,将携带有目标端口号和公网地址的目标响应报文发送至NAT设备,NAT设备将目标响应报文中的公网地址转换为私网地址且将目标端口号转换为私网端口号后发送给第一VTEP端,实现NAT穿越。简化配置,传输路径无绕转,提高传输效率。

Description

一种VxLAN NAT穿越的方法、系统和设备
技术领域
本申请涉及数据网络云融合业务领域,尤其涉及一种VxLAN NAT穿越的方法、系统和设备。
背景技术
VxLAN(Virtual Extensible Local Area Network,虚拟扩展局域网)是用户通过VPN(Virtual Private Network,虚拟专网),实现用户站点之间的大二层互通的一种方式。入云专线是指用户通过物理或虚拟专线,实现用户分支到云端的连接的业务。VxLAN跨域入云专线是指从用户站点到云的二、三层连接的一种方式,可以为用户提供一点入云和快速业务开通。VxLAN跨域入云专线的用户通常在VTEP(VxLAN Tunnel End Point,VxLAN隧道的端点)上首先获得IP(Internet Protocol Address,互联网协议地址)地址,具备上网的条件,在此基础上构建VxLAN隧道实现跨域入云业务的建立。目前,由于IPv4(InternetProtocol version 4,互联网通信协议第四版)地址紧缺,用户接入可能是公网地址,也有可能是私网地址。
VxLAN协议在设计之初是为数据中心间大二层网络互连的场景而发明的,在该场景中VTEP的两个端口通常并没有NAT(Network Address Translation,网络地址转换)设备,因此,在该协议中并没有考虑NAT穿越的问题。
现有技术中,通过在NAT设备手工配置端口映射,将客户内网的服务IP和端口映射为NAT上的公网IP与端口,额外增加客户侧配置成本。基于IPSec解决VxLAN的NAT穿越问题的方案,需叠加IPSec(Internet Protocol Security,IP安全)隧道实现NAT穿越,数据封装效率低,较为复杂。另外,基于中继服务器解决VxLAN的NAT穿越问题的方案,需部署中继服务器来维护公网地址、私网地址、VxLAN隧道之间的映射关系,另外中继服务器负载高,且流量有绕转。
发明内容
本申请实施例提供一种VxLAN NAT穿越的方法、系统和设备,简化用户侧的网络配置,降低部署成本,实现用户完全无感知的VxLAN穿越NAT方案,并且传输路径无绕转,提高数据传输效率。
第一方面,本申请一实施例提供了一种VxLAN NAT穿越的方法,应用于包括第一VTEP端、第二VTEP端和NAT设备的网络系统,所述第一VTEP端位于私网内,所述第二VTEP端位于公网内,所述方法包括:
所述第一VTEP端将VxLAN报文发送至所述NAT设备,以使所述NAT设备按照预设转换关系,将所述VxLAN报文中携带的所述第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文;
所述第二VTEP端接收来自所述NAT设备的所述新的VxLAN报文,并生成对应的初始响应报文;
所述第二VTEP端根据所述初始响应报文中携带的所述第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,并将携带有所述目标端口号和所述公网地址的目标响应报文发送至所述NAT设备,以使所述NAT设备根据所述预设转换关系,将所述目标响应报文中的所述公网地址转换为私网地址,以及,将所述目标端口号转换为私网端口号;
所述第一VTEP端接收来自所述NAT设备的转换后的私网地址和转换后的私网端口号,以实现NAT穿越。
在一些示例性的实施方式中,各个所述映射表是所述第二VTEP端通过如下方式确定的:
基于各个VxLAN的VNI标识,建立各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的映射表。
在一些示例性的实施方式中,通过如下方式在各个映射表中确定目标映射表:
确定所述初始响应报文对应的目标VNI标识;
根据所述目标VNI标识和建立的各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的各个映射表,确定所述目标VNI标识对应的目标映射表。
在一些示例性的实施方式中,所述第二VTEP端包括VxLAN报文入向处理模块、VxLAN报文出向处理模块和VxLAN协议处理模块。
在一些示例性的实施方式中,所述第二VTEP端接收来自所述NAT设备的所述新的VxLAN报文,并生成对应的初始响应报文,包括:
所述VxLAN报文入向处理模块接收来自所述NAT设备的所述新的VxLAN报文,并获取所述新的VxLAN报文中的所述第一VTEP端的MAC地址;
所述协议栈模块响应所述新的VxLAN报文后生成包括所述MAC地址的初始响应报文。
在一些示例性的实施方式中,所述第二VTEP端根据所述初始响应报文中携带的所述第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,包括:
所述VxLAN出向报文处理模块,根据所述初始响应报文中的MAC地址和所述目标映射表,确定目标端口号。
在一些示例性的实施方式中,所述第一VTEP端的配置的自身的源端口为默认源端口。
第二方面,本申请一实施例提供了一种虚拟扩展局域网VxLAN网络地址转换NAT穿越的系统,包括第一VTEP端、第二VTEP端和NAT设备,所述第一VTEP端、所述第二VTEP端和所述NAT设备分别用于执行第一方面所述的对应的方法。
第三方面,本申请一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行计算机程序时实现上述第一方面任一种方法的步骤。
第四方面,本申请一实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述第一方面任一种方法的步骤。
本申请实施例具备如下有益效果:
位于私网内的第一VTEP端将VxLAN报文发送至NAT设备,以使NAT设备按照预设转换关系,将VxLAN报文中携带的第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文;这样,第二VTEP端接收来自NAT设备的新的VxLAN报文后,并生成对应的初始响应报文,并根据初始响应报文中携带的第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,再将携带有目标端口号和公网地址的目标响应报文发送至NAT设备,NAT设备根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号;NAT设备将转换后的私网地址和私网端口号发送至第一VTEP端,以实现NAT穿越。该穿越过程,无需在用户侧对NAT设备进行特殊的配置,也无需在用户侧新增支持VxLANNAT穿越的特殊设备,也无需引入新的协议,简化用户侧的网络配置,降低部署成本,实现用户完全无感知的VxLAN穿越NAT方案。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种VxLAN NAT穿越的方法的应用场景示意图;
图2为本申请一实施例提供的一种VxLAN NAT穿越的方法的流程示意图;
图3为本申请一实施例提供的一种第二VTEP端的结构示意图;
图4为本申请一实施例提供的一种EBPF的原理示意图;
图5为本申请一实施例提供的一种VxLAN NAT穿越的方法的信令流程图;
图6为本申请一实施例提供的一种VxLAN NAT穿越的系统的结构示意图;
图7为本申请一实施例提供的一种VxLAN NAT穿越的设备的结构示意图;
图8为本申请一实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
为了方便理解,下面对本申请实施例中涉及的名词进行解释:
(1)VxLAN:一种网络虚拟化技术,可以改进大型云计算在部署时的扩展问题,是对VLAN的一种扩展。可以穿透三层网络对二层进行扩展,可通过封装流量并将其扩展到第三层网关,以此来解决虚拟内存系统的可移植性限制,使其可以访问在外部IP子网上的服务器。
(2)VTEP:VxLAN隧道的端点,负责VxLAN报文的封装与解封装。每个VTEP具备两个接口,一个是本地桥接接口,负责原始以太帧接收和发送,另一个是IP接口,负责VxLAN数据帧接收和发送。VTEP可以是物理交换机或软件交换机。
(3)NAT设备,比如是NAT路由器,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
在具体实践过程中,VxLAN采用MAC(Media Access Control Address,局域网地址)-in-UDP(User Datagram Protocol,用户数据报协议)报文封装模式,通过将二层报文使用三层协议封装,实现二层网络在三层范围内扩展,从而实现基于IP网络来构建二层虚拟网络。由于VxLAN技术可以实现跨越IP网络的边界,该技术成为了云内虚机漂移以及云外云网协同的关键技术。
但在实际的应用场景中,由于IPv4地址的短缺问题,绝大多数场景需要使用私网地址,则对网络环境增加了NAT设备部署的需求。而VxLAN连接需要建立双向连接,当两端设备中的任意一端位于NAT设备后时,由于该设备建立VxLAN的IP与端口在公网不可见,导致VxLAN协议无法建立连接的问题。
目前解决的方案有以下几种:
(1)通过在NAT设备手工配置端口映射,将客户内网的服务IP和端口映射为NAT上的公网IP与端口,但是需要额外增加客户侧配置成本。
(2)通过部署专用的支持STUN协议或KCP协议的中继系统,通过中继系统实现两侧的内网信息的获取和交互,但是,需要额外的设备投资、网络部署与适配,且存在流量绕转的问题。
(3)通过叠加一层IPsec隧道实现上层VxLAN隧道的连接,但是,数据封装效率低,转发性能差,方案复杂。
为此,本申请提供了一种VxLAN NAT穿越的方法,该方法中,第一VTEP端位于私网内,第二VTEP端位于公网内。具体的,第一VTEP端将VxLAN报文发送至NAT设备,这样NAT设备按照预设转换关系,将VxLAN报文中携带的第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文;NAT设备将新的VxLAN报文转发至第二VTEP端,这样,第二VTEP端接收来自NAT设备的新的VxLAN报文,并生成对应的初始响应报文;第二VTEP端根据初始响应报文中携带的第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,并将携带有目标端口号和公网地址的目标响应报文发送至第一VTEP端;第一VTEP端根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号,以实现NAT穿越。该方法能够建立VTEP间的VxLAN连接,并且传输路径无绕转,提高数据传输效率。
在介绍完本申请实施例的设计思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
参考图1,其为本申请实施例提供的一种VxLAN NAT穿越的方法的应用场景示意图。其中,VxLAN是一个VLAN的扩展协议。VxLAN本质上是一种隧道封装技术。它使用TCP/IP协议栈的封装/解封装技术,将L2的以太网帧封装成L4的UDP数据报,然后在L3的网络中传输,效果就像L2的以太网帧在一个广播域中传输一样,实际上是跨越了L3网络,但却感知不到L3网络的存在左右两边是L2广播域,中间跨越一个L3网络,VTEP是VxLAN隧道端点,当L2以太网帧到达VTEP的时候,通过VxLAN的封装,跨越L3层网络完成通信,由于VxLAN的封装"屏蔽"了L3网络的存在,所以整个过程就像在同一个L2广播域中传输一样。VTEP A在私网中,VTEP B在公网中。如何实现简便且高效的VxLAN NAT穿越十分必要。
当然,本申请实施例提供的方法并不限用于图1所示的应用场景中,还可以用于其它可能的应用场景,本申请实施例并不进行限制。对于图1所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。
下面结合图1所示的应用场景,对本申请实施例提供的技术方案进行说明。
参考图2,本申请实施例提供一种VxLAN NAT穿越的方法,应用于包括第一VTEP端、第二VTEP端和NAT设备的网络系统,第一VTEP端位于私网内,第二VTEP端位于公网内,该方法包括以下步骤:
S201、第一VTEP端将VxLAN报文发送至NAT设备,以使NAT设备按照预设转换关系,将VxLAN报文中携带的第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文。
S202、第二VTEP端接收来自NAT设备的新的VxLAN报文,并生成对应的初始响应报文。
S203、第二VTEP端根据初始响应报文中携带的第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,并将携带有目标端口号和公网地址的目标响应报文发送至NAT设备,以使NAT设备根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号。
S204、第一VTEP端接收来自NAT设备的转换后的私网地址和转换后的私网端口号,以实现NAT穿越。
本申请实施例具备如下效果,位于私网内的第一VTEP端将VxLAN报文发送至NAT设备,以使NAT设备按照预设转换关系,将VxLAN报文中携带的第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文;这样,第二VTEP端接收来自NAT设备的新的VxLAN报文后,并生成对应的初始响应报文,并根据初始响应报文中携带的第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,再将携带有目标端口号和公网地址的目标响应报文发送至NAT设备,NAT设备根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号;NAT设备将转换后的私网地址和私网端口号发送至第一VTEP端,以实现NAT穿越。该穿越过程,无需在用户侧对NAT设备进行特殊的配置,也无需在用户侧新增支持VxLAN NAT穿越的特殊设备,也无需引入新的协议,简化用户侧的网络配置,降低部署成本,实现用户完全无感知的VxLAN穿越NAT方案。
涉及到S201,VTEP是VxLAN连接的端点,一个点到点的VxLAN信息交互,需要两个VTEP端点共同参与完成。本申请实施例中,假设第一VTEP端点位于内网环境,使用私网地址,第二VTEP端点位于公网环境,使用公网地址。首先,第一VTEP端和第二VTEP端分别进行VxLAN配置,配置VxLAN VNI、源端口以及目标端口。在实际的应用过程中,第一VTEP端的目的端口和第二VTEP端的目的端口通常配置为IANA(The Internet Assigned NumbersAuthority,互联网数字分配机构)指定的VxLAN默认端口,也即,4789。为了实现NAT穿越,第一VTEP端的源端口也需要设置为4789。第一VTEP端配置VxLAN的二层广播报文送往第二VTEP端点。
在第一VTEP端和第二VTEP端分别进行VxLAN配置完成后,第一VTEP端向第二VTEP端发送VxLAN报文时,在内网环境下,首先会发送到NAT设备,这样,NAT设备执行NAT转换,将VxLAN报文中携带的第一VTEP端的私网的源地址转换为公网地址。在实际的应用过程中,在NAT设备执行NAT转换时,还将VxLAN报文中携带的第一VTEP端的私网的源端口转换为新的源端口(转换后的公网端口),然后得到新的VxLAN报文。
需要说明的是,新的VxLAN报文中的转换后的公网端口,在发送到第二VTEP端后,第二VTEP端的VxLAN协议处理模块不进行记录。
涉及到S202,参考图3,第二VTEP端包括VxLAN报文入向处理模块31、VxLAN报文出向处理模块32和VxLAN协议处理模块33。具体的,NAT设备将新的VxLAN报文继续转发至第二VTEP端,第二VTEP端生成对应的初始响应报文的过程如下:
VxLAN报文入向处理模块接收来自NAT设备的新的VxLAN报文,并获取新的VxLAN报文中的第一VTEP端的MAC地址;协议栈模块响应新的VxLAN报文后生成包括MAC地址的初始响应报文。
由于VxLAN报文中均携带了第一VTEP端的MAC地址,这样,在第二VTEP端的VxLAN报文入向处理模块接收到来自NAT设备的新的VxLAN报文后,对该新的VxLAN报文进行识别,获取新的VxLAN报文中的第一VTEP端的MAC地址。另外,对新的VxLAN报文进行识别时,还可以获取VxLAN VNI以及源端口号,并且基于各个VNI、各个源端口号和各个MAC的对应关系建立映射表。然后继续转发至VxLAN协议处理模块。进而VxLAN协议处理模块响应新的VxLAN报文后生成包括MAC地址的初始响应报文。
涉及到S203,第二VTEP端根据初始响应报文中携带的第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,并将携带有目标端口号和公网地址的目标响应报文发送至NAT设备,以使NAT设备根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号。
其中,目标映射表为若干映射表中的一个,通过如下方式在各个映射表中确定目标映射表:由于每个VxLAN均对应一个VNI标识(VxLAN Network Identifier,VxLAN网络标识),因此,首先确定响应报文对应的目标VNI标识,这样,再根据目标VNI标识和建立的各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的各个映射表,确定目标VNI标识对应的目标映射表。
而各个映射表是通过如下方式建立的:基于各个VxLAN的VNI标识,建立各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的映射表。也即,每个映射表对应一个VNI标识,且包括了该VNI标识下的源MAC地址和对应的NAT转换后的公网端口的映射关系。
这样,由于通过NAT设备转发的来自第一VTEP端的转换后的公网端口在第二VTEP端不记录,因此,需要VxLAN出向报文处理模块通过目标映射表来匹配目标端口号,也即,根据初始响应报文中的MAC地址和目标映射表,确定对应的目标端口号,并将携带有目标端口号和公网地址的目标响应报文发送至NAT设备。用确定的目标端口后替换第二VTEP端配置的原来的换目标端口,实现内网穿透。
而为了实现NAT穿越,NAT设备再根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号。
需要说明的是,各个映射表是第二VTEP端在获取到新的VxLAN报文后建立的,这里只是举例说明,并不形成具体的限定。
另外,为了实现高效的VxLAN连接的NAT穿越,在公网侧的第二VTEP端部署EBPF(Extended Berkeley Packet Filter,加强网络数据过滤包)程序。EBPF是在内核层内嵌的一套通用执行引擎,可以动态的从用户态导入EBPF程序,在内核态虚拟机中执行。在linux网络程序链中的TC ingress和TC egress处引入EBPF程序,可以在IP报文没有进入L3处理前,提前进行报文的预处理。
因此,在本申请实施例中,参考图4示出的EBPF的原理,第二VTEP端的VxLAN入向报文处理模块和VxLAN出向报文处理模块均可以通过部署EBPF程序实现,这样可以利用linux内核的EBPF技术框架,在VxLAN报文通过linux内核协议栈时,通过EBPF程序以内核外挂程序方式,实现了VxLAN连接的NAT穿越。
另外,EBPF程序仅部署于公网侧的第二VTEP端即可,EBPF程序编译后可以在内核动态加载,实现内核层的外挂式网络报文处理。
涉及到S204,第一VTEP端接收来自NAT设备的转换后的私网地址和转换后的私网端口号,以实现NAT穿越。
为了使本申请的技术方案更完善,下面用一个完成的流程进行说明,参见图5,至少包括如下步骤:
S501、第一VTEP端通过私网IP向NAT设备发送VxLAN报文。
S502、NAT设备按照预设转换关系,将VxLAN报文中携带的第一VTEP端的源地址转换为公网地址,并将第一VTEP端的源端口转换为公网端口,得到新的VxLAN报文。
S503、NAT设备将新的VxLAN报文发送至第二VTEP端。
S504、基于EBPF的第二VTEP端的VxLAN报文入向处理模块获取新的VxLAN报文,并获取新的VxLAN报文中的第一VTEP端的MAC地址以及建立映射表。
S505、第二VTEP端的协议栈模块响应新的VxLAN报文后生成包括MAC地址的初始响应报文。
S506、基于EBPF的第二VTEP端的VxLAN报文出向处理模块根据初始响应报文中的MAC地址和目标映射表,确定目标端口号。
S507、第二VTEP端向NAT发送包括NAT转换后的公网地址和确定的目标端口号。
S508、NAT设备根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号。
S509、NAT设备将转换后的私网地址和转换后的私网端口号发送至第一VTEP端,以实现NAT穿越。
综上,本申请实施例中,第二VTEP端的VxLAN报文入向处理模块,对入向VxLAN报文中的源信息进行分析与获取,对每一个VNI建立映射表。VxLAN报文出向处理模块,主要负责对VxLAN出向消息进行分析,通过匹配目标IP、MAC地址定位VxLAN连接请求消息中的UDP端口,负责修改响应报文中UDP端口为映射表中记录的端口。映射表处理模块负责建立与维护MAC地址、VNI和UDP源端口的映射表项。另外,由于该端口在客户侧NAT设备已经存在内网映射关系,因此,实现了VxLAN报文的内网穿越。
另外,本申请实施例中,私网侧的VTEP端点无需支持特殊协议,如STUN(SessionTraversal Utilities for NAT,NAT会话穿越应用程序)协议或PCP(Port ControlProtocol,端口控制协议)协议等辅助支持NAT穿越的协议,也不需要进行特殊配置,例如地址和端口的静态映射配置,也不需要新增支持VxLAN NAT穿越的特殊设备;私网侧VTEP端点仅需配置VxLAN的源端口为4789。在云端VxLAN的端点与NAT穿越程序同主机部署,不需额外部署硬件或中转系统。
如图6,基于与上述VxLAN NAT穿越方法相同的发明构思,本申请实施例还提供了一种VxLAN NAT穿越的系统,该系统包括第一VTEP端61、第二VTEP端62和NAT设备63。其中,第一VTEP端,比如可以是私网内的笔记本电脑;第二VTEP端,比如可以是公网内的某个服务器;NAT设备,比如可以是私网内的NAT路由器。第一VTEP端、第二VTEP端和NAT设备配合执行本申请实施例中的VxLAN NAT穿越的方法。
如图7所示,基于与上述VxLAN NAT穿越方法相同的发明构思,本申请实施例还提供了一种VxLAN NAT穿越的设备,该设备集成在包括第一VTEP端、第二VTEP端和NAT设备的网络系统中,该设备包括第一发送单元71、第一接收单元72、确定单元73和第二接收单元74。
第一发送单元71,用于使第一VTEP端将VxLAN报文发送至NAT设备,以使NAT设备按照预设转换关系,将VxLAN报文中携带的第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文;
第一接收单元72,用于使第二VTEP端接收来自NAT设备的新的VxLAN报文,并生成对应的初始响应报文;
确定单元73,用于使第二VTEP端根据初始响应报文中携带的第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,并将携带有目标端口号和公网地址的目标响应报文发送至NAT设备,以使NAT设备根据预设转换关系,将目标响应报文中的公网地址转换为私网地址,以及,将目标端口号转换为私网端口号;
第二接收单元74,用于使第一VTEP端接收来自NAT设备的转换后的私网地址和转换后的私网端口号,以实现NAT穿越。
在一些示例性的实施方式中,还包括映射表确定单元,用于使第二VTEP端通过如下方式确定各个映射表:
基于各个VxLAN的VNI标识,建立各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的映射表。
在一些示例性的实施方式中,映射表确定单元具体还用于,通过如下方式在各个映射表中确定目标映射表:
确定初始响应报文对应的目标VNI标识;
根据目标VNI标识和建立的各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的各个映射表,确定目标VNI标识对应的目标映射表。
在一些示例性的实施方式中,第二VTEP端包括VxLAN报文入向处理模块、VxLAN报文出向处理模块和VxLAN协议处理模块。
在一些示例性的实施方式中,第一接收单元72具体用于:
VxLAN报文入向处理模块接收来自NAT设备的新的VxLAN报文,并获取新的VxLAN报文中的第一VTEP端的MAC地址;
协议栈模块响应新的VxLAN报文后生成包括MAC地址的初始响应报文。
在一些示例性的实施方式中,确定单元73具体用于:
VxLAN出向报文处理模块,根据初始响应报文中的MAC地址和目标映射表,确定目标端口号。
在一些示例性的实施方式中,第一VTEP端的配置的自身的源端口为默认源端口。
本申请实施例提的VxLAN NAT穿越的装置与上述VxLAN NAT穿越的方法采用了相同的发明构思,能够取得相同的有益效果,在此不再赘述。
基于与上述VxLAN NAT穿越的方法相同的发明构思,本申请实施例还提供了一种电子设备,该电子设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、服务器等。如图8所示,该电子设备可以包括处理器81和存储器82。
处理器81可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器82作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器82还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;上述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于:移动存储设备、随机存取存储器(RAM,RandomAccess Memory)、磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、随机存取存储器(RAM,RandomAccess Memory)、磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等各种可以存储程序代码的介质。
以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本申请实施例的方法,不应理解为对本申请实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本申请实施例的保护范围之内。

Claims (10)

1.一种虚拟扩展局域网VxLAN网络地址转换NAT穿越的方法,其特征在于,应用于包括第一VTEP端、第二VTEP端和NAT设备的网络系统,所述第一VTEP端位于私网内,所述第二VTEP端位于公网内,所述方法包括:
所述第一VTEP端将VxLAN报文发送至所述NAT设备,以使所述NAT设备按照预设转换关系,将所述VxLAN报文中携带的所述第一VTEP端的源地址转换为公网地址,得到新的VxLAN报文;
所述第二VTEP端接收来自所述NAT设备的所述新的VxLAN报文,并生成对应的初始响应报文;
所述第二VTEP端根据所述初始响应报文中携带的所述第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,并将携带有所述目标端口号和所述公网地址的目标响应报文发送至所述NAT设备,以使所述NAT设备根据所述预设转换关系,将所述目标响应报文中的所述公网地址转换为私网地址,以及,将所述目标端口号转换为私网端口号;
所述第一VTEP端接收来自所述NAT设备的转换后的私网地址和转换后的私网端口号,以实现NAT穿越。
2.根据权利要求1所述的方法,其特征在于,各个所述映射表是所述第二VTEP端通过如下方式确定的:
基于各个VxLAN的VNI标识,建立各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的映射表。
3.根据权利要求2所述的方法,其特征在于,通过如下方式在各个映射表中确定目标映射表:
确定所述初始响应报文对应的目标VNI标识;
根据所述目标VNI标识和建立的各个第一VTEP端的MAC地址和对应的NAT转换后的公网端口的各个映射表,确定所述目标VNI标识对应的目标映射表。
4.根据权利要求1所述的方法,其特征在于,所述第二VTEP端包括VxLAN报文入向处理模块、VxLAN报文出向处理模块和VxLAN协议处理模块。
5.根据权利要求4所述的方法,其特征在于,所述第二VTEP端接收来自所述NAT设备的所述新的VxLAN报文,并生成对应的初始响应报文,包括:
所述VxLAN报文入向处理模块接收来自所述NAT设备的所述新的VxLAN报文,并获取所述新的VxLAN报文中的所述第一VTEP端的MAC地址;
所述协议栈模块响应所述新的VxLAN报文后生成包括所述MAC地址的初始响应报文。
6.根据权利要求4所述的方法,其特征在于,所述第二VTEP端根据所述初始响应报文中携带的所述第一VTEP端的MAC地址,在目标映射表中查找,确定匹配的目标端口号,包括:
所述VxLAN出向报文处理模块,根据所述初始响应报文中的MAC地址和所述目标映射表,确定目标端口号。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述第一VTEP端的配置的自身的源端口为默认源端口。
8.一种虚拟扩展局域网VxLAN网络地址转换NAT穿越的系统,其特征在于,包括第一VTEP端、第二VTEP端和NAT设备,所述第一VTEP端、所述第二VTEP端和所述NAT设备分别用于执行权利要求1-7任一项所述的对应的方法。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时实现权利要求1至7任一项所述方法的步骤。
CN202210187259.6A 2022-02-28 2022-02-28 一种VxLAN NAT穿越的方法、系统和设备 Active CN114567616B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210187259.6A CN114567616B (zh) 2022-02-28 2022-02-28 一种VxLAN NAT穿越的方法、系统和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210187259.6A CN114567616B (zh) 2022-02-28 2022-02-28 一种VxLAN NAT穿越的方法、系统和设备

Publications (2)

Publication Number Publication Date
CN114567616A true CN114567616A (zh) 2022-05-31
CN114567616B CN114567616B (zh) 2023-10-31

Family

ID=81714871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210187259.6A Active CN114567616B (zh) 2022-02-28 2022-02-28 一种VxLAN NAT穿越的方法、系统和设备

Country Status (1)

Country Link
CN (1) CN114567616B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277884A (zh) * 2022-07-14 2022-11-01 苏州盛科通信股份有限公司 一种子网替换方法、装置、交换芯片、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108667945B (zh) * 2017-03-30 2020-10-23 华为技术有限公司 一种报文传输方法及装置
CN111371666B (zh) * 2018-12-26 2021-12-31 华为技术有限公司 一种处理报文的方法、设备及系统
CN109547316A (zh) * 2018-12-29 2019-03-29 瑞斯康达科技发展股份有限公司 Vxlan报文穿越nat设备的方法、系统、存储介质
CN111131544B (zh) * 2019-12-26 2023-03-24 杭州迪普科技股份有限公司 一种实现nat穿越的方法
CN111404732B (zh) * 2020-03-05 2023-04-07 广东睿江云计算股份有限公司 一种nat网关灾备实现方法及其系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277884A (zh) * 2022-07-14 2022-11-01 苏州盛科通信股份有限公司 一种子网替换方法、装置、交换芯片、电子设备及存储介质

Also Published As

Publication number Publication date
CN114567616B (zh) 2023-10-31

Similar Documents

Publication Publication Date Title
US10541836B2 (en) Virtual gateways and implicit routing in distributed overlay virtual environments
US10355991B1 (en) Managing communications using alternative packet addressing
US9258272B1 (en) Stateless deterministic network address translation
WO2016173271A1 (zh) 报文处理方法、设备及系统
US20150172156A1 (en) Detecting end hosts in a distributed network environment
US8798060B1 (en) Converting between tunneling protocols
CN110034993B (zh) 传输数据的方法、设备和网络系统
US11444808B1 (en) Scaling network address translation (NAT) and firewall functionality to support public cloud networks
JP2022541381A (ja) ハイブリッドクラウド環境における通信方法、ゲートウェイ、並びに管理方法及び装置
US20210273915A1 (en) Multi-access interface for internet protocol security
EP3306876A1 (en) Method and gateway for acquiring route as required
CN112671628A (zh) 业务服务提供方法及系统
US10952228B2 (en) Traffic scheduling and processing method, user side translator and core translator
CN112671938A (zh) 业务服务提供方法及系统、远端加速网关
Aazam et al. Impact of ipv4-ipv6 coexistence in cloud virtualization environment
US8874693B2 (en) Service access using a service address
JP7264960B2 (ja) IPv6専用SIPクライアントとIPv4専用サーバまたはクライアントとの間の通信を強化する方法およびシステム
CN114567616B (zh) 一种VxLAN NAT穿越的方法、系统和设备
CN111565237B (zh) 网络参数确定方法、装置、计算机设备及存储介质
CN108337331B (zh) 网络穿透方法、装置、系统及网络连通性检查方法
US10938778B2 (en) Route reply back interface for cloud internal communication
CN116132435B (zh) 一种容器云平台的双栈跨节点通信方法和系统
Hughes Transition mechanisms
CN115695369A (zh) 云租户报文隔离方法、装置、系统、设备、介质和程序产品
CN115334036A (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