一种隧道创建方法及装置
技术领域
本发明涉及网络通信技术领域,尤其涉及一种隧道创建方法及装置。
背景技术
VXLAN(Virtual eXtensible Local Area Network,可扩展虚拟局域网络)是基于IP(Internet Protocol,互联网协议)网络、采用“MAC(Media Access Control,媒体访问控制)in UDP(User Datagram Protocol,用户数据报协议)”封装形式的二层VPN(VirtualPrivate Network,虚拟专用网)技术。VXLAN可以基于已有的服务提供商或企业IP网络,为分散的物理站点提供二层互联功能,其主要应用于数据中心网络。
由于VXLAN广泛用于overlay(一种虚拟网络)数据中心互联中,RFC(Request ForComments,一系列以编号排定的文件)没有对VXLAN的控制平面进行定义,EVPN(EthernetVirtual Private Network,以太虚拟专用网络)网络技术应运而生,RFC7432对该网络技术进行了规定。使用EVPN多归属组网,可以解决VXLAN无法实现负载分担的问题,使用BGP(Border Gateway Protocol,边界网关协议)作为上层控制协议,使得VPN(VirtualPrivate Network,虚拟专用网络)的拓扑更加具有灵活性。
在现有EVPN网络中,当VTEP设备收到2类路由或者5类路由,且该路由的ERT(Export Route Target,出口路由目标)与本地VPN的IRT(Import Route Target,入口路由目标)匹配时,BGP模块会向L2VPN(Layer 2VPN,二层VPN)模块通告EVPN路由的下一跳信息,L2VPN再把下一跳信息通告给TUNNEL(隧道)模块,创建以该EVPN路由的下一跳地址为目的地址的VXLAN隧道。
然而实践发现,现有EVPN网络中,当EVPN网络规模较大,VTEP设备较多时,各VTEP设备可能会需要创建大量的VXLAN隧道,而VTEP设备的隧道资源及硬件资源有限,当超过一定数量时,则无法再创建,影响了新增的部分业务。
发明内容
本发明提供一种隧道创建方法及装置,以提高VXLAN隧道资源利用率。
本发明实施例提供一种隧道创建方法,应用于以太虚拟局域网EVPN网络中的第一虚拟可扩展局域网隧道终端VTEP设备,所述方法包括:
当接收到满足预设条件的EVPN路由时,判断所述EVPN路由中携带的虚拟专用网VPN标识与本地VPN标识是否匹配;
若匹配,则创建所述EVPN路由对应的VXLAN隧道;
否则,拒绝创建所述EVPN路由对应的VXLAN隧道
本发明实施例提供一种隧道创建装置,应用于以太虚拟局域网EVPN网络中的第一虚拟可扩展局域网隧道终端VTEP设备,所述装置包括:
接收单元,用于接收EVPN路由;
判断单元,用于当所述接收单元接收到满足预设条件的EVPN路由时,判断所述EVPN路由中携带的虚拟专用网VPN标识与本地VPN标识是否匹配;
创建单元,用于若所述EVPN路由中携带的VPN标识与本地VPN标识匹配,则创建所述EVPN路由对应的VXLAN隧道;否则,拒绝创建所述EVPN路由对应的VXLAN隧道。
应用本发明实施例,当接收到满足预设条件的EVPN路由时,判断该EVPN路由中携带的虚拟专用网VPN标识与本地VPN标识是否匹配;若匹配,则创建该EVPN路由对应的VXLAN隧道;否则,拒绝创建该EVPN路由对应的VXLAN隧道,与现有VXLAN隧道创建方案相比,避免了无用VXLAN隧道对VXLAN隧道资源的占用,提高了VXLAN隧道资源利用率。
附图说明
图1是本发明实施例提供的一种隧道创建方法的流程示意图;
图2是本发明实施例提供的一种具体应用场景的架构示意图;
图3是本发明实施例提供的一种隧道创建装置的结构示意图;
图4是本发明实施例提供的另一种隧道创建装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
请参见图1,图1为本发明实施例提供的一种隧道创建方法的流程示意图,该方法可以应用于EVPN网络中的第一VTEP设备,如图1所示,该方法可以包括以下步骤:
步骤101、当接收到满足预设条件的EVPN路由时,判断该EVPN路由中携带的VPN标识与本地VPN标识是否匹配。若是,转至步骤102;否则,转至步骤103。
本发明实施例中,第一VTEP设备并不特指某一固定的VTEP设备,而是可以指代EVPN网络中的任意的VTEP设备,本发明实施例后续不再复述。
本发明实施例中,当第一VTEP设备接收到远端VTEP设备发送的EVPN路由(如2类路由或5类路由)时,第一VTEP设备可以判断该EVPN路由的ERT与本地VPN的IRT是否匹配;若匹配,则第一VTEP设备可以确定该EVPN路由满足预设条件;否则,第一VTEP设备可以确定该EVPN路由不满足预设条件。
本发明实施例中,当第一VTEP设备确定接收到的EVPN路由满足预设条件时,第一VTEP设备并不会直接创建该EVPN路由对应的VXLAN隧道,而是需要判断该EVPN路由中携带的VPN标识与本地VPN标识是否匹配,并根据判断结果确定是否创建接收到的EVPN路由对应的VXLAN隧道。
其中,该VPN标识用于标识VTEP设备所属的VPN,例如,该VPN标识可以为L3VNI(Layer 3VXLAN Network Identifier,三层VXLAN网络标识符)。
步骤102、创建该EVPN路由对应的VXLAN隧道。
步骤103、拒绝创建该EVPN路由对应的VXLAN隧道。
本实施例中,若第一VTEP设备确定接收到的EVPN路由满足预设条件,且该EVPN路由中携带的VPN标识与本地VPN标识匹配,则第一VTEP设备可以创建该EVPN路由对应的VXLAN隧道;否则,第一VTEP设备可以拒绝创建该EVPN路由对应的VXLAN隧道,以避免创建无用的VXLAN隧道,提高隧道资源利用率。
作为一种可选的实施方式,在本发明实施例中,若上述EVPN路由中携带的VPN标识与本地VPN标识匹配,则上述创建该EVPN路由对应的VXLAN隧道之前,还可以包括:
判断该EVPN路由对应的VXLAN隧道是否存在数据发送需求;
若存在,则确定执行创建该EVPN路由对应的VXLAN隧道的步骤;
否则,拒绝创建该EVPN路由对应的VXLAN隧道。
在该实施方式中,当第一VTEP设备确定接收到的EVPN路由满足预设条件,且该EVPN路由中携带的VPN标识与本地VPN标识匹配时,第一VTEP设备并不会直接创建该EVPN路由对应的VXLAN隧道,而是需要进一步判断该EVPN路由对应的VXLAN隧道是否存在数据发送需求,并在确定该EVPN路由对应的VXLAN隧道存在数据发送需求时,才创建该EVPN路由对应的VXLAN隧道;否则,拒绝创建该EVPN路由对应的VXLAN隧道,以避免创建的VXLAN隧道闲置并占用VXLAN隧道资源,进一步提高隧道资源利用率。
作为一种可选的实施方式,在本发明实施例中,上述判断该EVPN路由对应的VXLAN隧道是否存在数据发送需求,可以包括:
判断是否接收到目标数据报文;其中,该目标数据报文的目的地址对应的转发表项中的下一跳信息与EVPN路由的下一跳相同;
若接收到,则确定该EVPN路由对应的VXLAN隧道存在数据发送需求;
否则,确定该EVPN路由对应的VXLAN隧道不存在数据发送需求。
在该实施方式中,当第一VTEP设备接收到的EVPN路由满足预设条件时,第一VTEP设备可以记录该EVPN路由的下一跳信息。
例如,第一VTEP设备可以通过BGP模块把该EVPN路由的下一跳信息通告给L2VPN模块,L2VPN模块接收到该EVPN路由的下一跳信息之后,并不会直接通知TUNNEL模块去创建对应的VXLAN隧道,而是先记录该EVPN路由的下一跳信息。
在该实施方式中,当第一VTEP设备确定接收到的EVPN路由满足预设条件,且该EVPN路由中携带的VPN标识与本地VPN标识匹配时,第一VTEP设备可以判断是否接收到目的地址对应的转发表项中的下一跳信息与上述EVPN路由的下一跳相同的数据报文(本文中称为目标数据报文)。
具体的,在该实施方式中,当第一VTEP设备接收到本地VM(Virtual Machine,虚拟机)发送的数据报文时,第一VTEP设备需要根据该数据报文的目的地址查询本地转发表项,如查找FIB(Forward Information Base,转发信息库)表,若查询到对应的转发表项,则第一VTEP设备可以进一步根据该转发表项中的下一跳信息查找下一跳邻接表项。若第一VTEP设备未查找到对应的下一跳邻接表项,则表明对应的VXLAN隧道还未创建,则第一VTEP设备可以判断该下一跳信息与上述自身记录的下一跳信息是否相同,若相同,则第一VTEP设备确定接收到目标数据报文。
值得说明的是,在本发明实施例中,若第一VTEP设备查找到对应的下一跳邻接表项,则第一VTEP设备可以根据该下一跳邻接表项找到对应的VXLAN隧道,并对该数据报文进行VXLAN封装后,通过该VXLAN隧道转发,其具体实现在此不做赘述。
此外,若第一VTEP设备根据接收到的数据报文的目的地址未查找到对应的转发表项,则第一VTEP设备可以丢弃该数据报文。
在该实施方式中,若第一VTEP设备确定接收到目标数据报文,则第一VTEP设备可以确定上述EVPN路由对应的VXLAN隧道存在数据发送需求,进而,第一VTEP设备可以创建该EVPN路由对应的VXLAN隧道;否则,VTEP设备可以确定上述EVPN路由对应的VXLAN隧道不存在数据发送需求,进而,第一VTEP设备可以拒绝创建该EVPN路由对应的VXLAN隧道。
值得说明的是,在本发明实施例中,若第一VTEP设备记录了接收到的EVPN路由的下一跳信息,但该EVPN路由中携带的VPN标识与本地VPN标识不同,则第一VTEP设备可以删除自身记录的该EVPN路由的下一跳信息,其具体实现本发明实施例不做赘述。
进一步地,在本发明实施例中,考虑到对于一些比较重要的设备,如VM或用户上线时都需要访问的公共服务器或存储设备,需要保证其连接的VTEP设备与其它VTEP设备之间存在VXLAN隧道,以保证VM或用户能够实时访问该服务器或存储设备,因而,在网络部署时可以在该类设备上设置重要性标记(该重要性标记可以用于表示设备的重要性),当VTEP设备向外发送针对该类设备的EVPN路由时,需要携带隧道优先创建标识,以使接收到该EVPN路由的VTEP设备优先创建该EVPN路由对应的VXLAN隧道。
相应地,作为一种可选的实施方式,在本发明实施例中,若上述EVPN路由中携带的VPN标识与本地VPN标识匹配,则上述判断该EVPN路由对应的VXLAN隧道是否存在数据发送需求之前,还包括:
判断该EVPN路由中是否携带有隧道优先创建标识;
若携带,则创建该EVPN路由对应的VXLAN隧道;
否则,确定执行上述判断该EVPN路由对应的VXLAN隧道是否存在数据发送需求的步骤。
在该实施方式中,第一VTEP设备确定接收到的EVPN路由中携带的VPN标识与本地VPN标识匹配时,第一VTEP设备可以进一步判断该EVPN路由中是否携带有携带优先创建标识;若该EVPN路由中未携带有优先创建标识,则第一VTEP设备需要进一步判断该EVPN路由对应的VXLAN隧道是否存在数据发送需求,并按照上述流程进行VXLAN隧道创建;若该EVPN路由中携带有优先创建标识,则第一VTEP设备确定需要优先创建该EVPN路由对应VXLAN隧道,从而第一VTEP设备可以直接创建该EVPN路由对应的VXLAN隧道,即通过L2VPN模块将本端的源地址以及接收到的EVPN路由的下一跳信息通知该TUNNEL模块,由TUNNEL模块创建对应的VXLAN隧道;其中,VXLAN隧道创建的具体流程在此不做赘述。
进一步地,在本发明实施例中,为了避免已创建的VXLAN隧道长时间无数据转发,导致闲置的VXLAN隧道占用隧道资源,可以对已创建的VXLAN隧道引入老化机制。
相应地,作为一种可选的实施方式,在本发明实施例中,创建EVPN路由对应的VXLAN隧道之后,还可以包括:
当检测到EVPN路由对应的VXLAN隧道在预设时长内无数据转发时,删除该EVPN路由对应的VXLAN隧道。
在该实施方式中,第一VTEP设备根据接收到的EVPN路由创建对应的的VXLAN隧道之后,第一VTEP设备可以对其数据转发状态进行检测,若第一VTEP设备检测到该EVPN路由对应的VXLAN隧道在预设时长内(该预设时长可以根据实际场景设定)无数据转发,则第一VTEP设备可以认为该VXLAN隧道为闲置状态,为了避免其对隧道资源的占用,提高隧道资源的占用率,第一VTEP设备可以删除该EVPN路由对应的VXLAN隧道。
例如,第一VTEP设备根据接收到的EVPN路由创建对应的VXLAN隧道之后,可以针对该VXLAN隧道启动一个老化计时器(假设老化时间为T),并对该VXLAN隧道的数据转发状态进行检测,若该VXLAN隧道存在数据转发,则重置老化计时器;若该VXLAN隧道在时间T内无数据转发,则可以删除该VXLAN隧道。
值得说明的是,在本发明实施例中,对于携带有隧道优先创建标识的EVPN路由对应的VXLAN隧道,可以按照上述流程进行老化处理,也可以设置为永久隧道,而不进行老化。
可见,在图1所示的方法流程中,通过在接收到满足预设条件的EVPN路由时,判断EVPN路由中携带的虚拟专用网VPN标识与本地VPN标识是否匹配,并当匹配时,创建该EVPN路由对应的VXLAN隧道;否则,拒绝创建EVPN路由对应的VXLAN隧道,避免了无用VXLAN隧道对隧道资源的占用,提高了VXLAN隧道资源的利用率。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体应用场景对本发明实施例提供的技术方案进行描述。
请参见图2,为本发明实施例提供的一种具体应用场景的架构示意图,如图2所示,在该应用场景中,RR(Route Reflector,路由反射器)设备与VTEP1、VTEP2、VTEP3、VTEP4均建立EVPN IBGP邻居关系,VTEP1、VTEP2、VTEP3各下挂一个VM,VTEP4下挂一个子网。
基于该应用场景,本发明实施例提供的隧道创建方案的实现流程如下:
1、VTEP1上收到VTEP2、VTEP3和VTEP4发送的2类或5类路由。若VTEP1判断接收的EVPN路由的ERT和本地VPN的IRT匹配,则VTEP1需要进一步判断接收到的EVPN路由中携带的L3VNI与本地的L3VNI是否相同;若相同,转至步骤2;否则,不再通知TUNNEL模块生成VXLAN隧道。
2、若接收的EVPN路由中携带的L3VNI与本地的L3VNI相同,则VTEP1将这些EVPN路由下发到路由管理,再下刷到FIB表。其中,VTEP1的FIB表项可以如下表所示:
3、VTEP1接收到该EVPN路由时,通过BGP模块把接收到的EVPN路由的下一跳信息通告给L2VPN模块;L2VPN模块记录该EVPN路由的下一跳信息,但不通知TUNNEL模块创建VXLAN隧道。
4、当VM1发送数据报文给VM3时,目的地址为12.1.1.2,VTEP1接收到该数据报文后,查找FIB表,发现存在对应的FIB表项(目的地址/掩码为12.1.1.2/32,下一跳为3.3.3.3,出接口为vsi(Virtual Switching Instance,虚拟交换实例)1),进而,VTEP1根据该FIB表项中的下一跳信息查找下一跳邻接表项,以找到对应的VXLAN隧道,进行VXLAN封装。但由于VTEP1接收EVPN路由时,并没有创建VXLAN隧道,因而没有相应的下一跳邻接表项。
5、当VTEP1根据接收到的数据报文的目的地址查找到对应的FIB表项,但根据该FIB表项的下一跳信息未查找到对应的下一跳邻接表项时,VTEP1反向通知L2VPN模块,告知L2VPN模块,需要创建目的地址为3.3.3.3的VXLAN隧道。L2VPN模块收到此消息后,去查找记录的下一跳信息中是否有该下一跳信息,如果有则把该下一跳信息和本端的源地址通告给TUNNEL模块,创建VXLAN隧道tun1。
6、TUNNEL模块根据接收到的下一跳信息和本端的源地址创建对应的VXLAN隧道后,返回消息告知L2VPN模块VXLAN隧道创建成功,L2VPN模块下发下一跳为3.3.3.3的下一跳邻接表项,出接口为VXLAN隧道tun1.
7、下一跳邻接表项下发成功后,VTEP1对VM1发送给VM3的数据报文进行VXLAN封装,通过VXLAN隧道tun1转发出去,实现VM1和VM3之间的通信。
8、当VTEP1根据接收到的数据报文的目的地址未查找到对应的FIB表项时,丢弃接收到的数据报文。
9、对于任一已创建的VXLAN隧道,VTEP1为该VXLAN隧道启动对应的老化计时器,老化时间为T。若在老化时间内该VXLAN隧道存在数据转发,则重置老化时间;若老化时间内无数据转发,则反向通知L2VPN模块,通知TUNNEL模块删除对应的VXLAN隧道。
10、假设图2中还包括VTEP5,且该VTEP5下接入一个公共服务器,该网络内的VM或者用户上线时都需要访问该公共服务器,且该公共服务器在该网络中极其重要,因而要优先保证其他VTEP设备和VTEP5之间建立永久隧道,保证网络VM或者用户能实时访问该公共服务器。在网络部署时,在VTEP5上设置重要性标记,扩展BGP能力,使得BGP能携带该重要性标记,当VTEP5向外发送针对该公共服务器的EVPN路由时,携带隧道优先创建标识。
11、VTEP1收到VTEP5的2类路由时,若该EVPN路由的ERT和本地VPN的IRT匹配,且该EVPN路由中携带的L3VNI与本地的L3VNI相同,则VTEP1将该EVPN路由中携带的隧道优先创建标识通告给L2VPN模块,L2VPN模块识别该隧道优先创建标识,则建立VXLAN隧道,其中,该VXLAN隧道为永久隧道,邻接表项不会老化,从而保证网络中VM或用户能实时访问公共服务器。
通过以上描述可以看出,在本发明实施例提供的技术方案中,当接收到满足预设条件的EVPN路由时,判断该EVPN路由中携带的虚拟专用网VPN标识与本地VPN标识是否匹配;若匹配,则创建该EVPN路由对应的VXLAN隧道;否则,拒绝创建该EVPN路由对应的VXLAN隧道,与现有VXLAN隧道创建方案相比,避免了无用VXLAN隧道对VXLAN隧道资源的占用,提高了VXLAN隧道资源利用率。
请参见图3,为本发明实施例提供的一种隧道创建装置的结构示意图,其中,该隧道创建装置可以应用于上述EVPN网络中的第一VTEP设备,如图3所示,该隧道创建装置可以包括:
接收单元310,用于接收EVPN路由;
判断单元320,用于当所述接收单元310接收到满足预设条件的EVPN路由时,判断所述EVPN路由中携带的虚拟专用网VPN标识与本地VPN标识是否匹配;
创建单元330,用于若所述EVPN路由中携带的VPN标识与本地VPN标识匹配,则创建所述EVPN路由对应的VXLAN隧道;否则,拒绝创建所述EVPN路由对应的VXLAN隧道。
在可选实施例中,所述判断单元320,还用于若所述EVPN路由中携带的VPN标识与本地VPN标识匹配,判断所述EVPN路由对应的VXLAN隧道是否存在数据发送需求;
所述创建单元330,具体用于若所述EVPN路由对应的VXLAN隧道存在数据发送需求,创建所述EVPN路由对应的VXLAN隧道;否则,拒绝创建所述EVPN路由对应的VXLAN隧道。
在可选实施例中,所述判断单元320,具体用于判断所述接收单元310是否接收到目标数据报文;其中,所述目标数据报文的目的地址对应的转发表项中的下一跳信息与所述EVPN路由的下一跳相同;若接收到,则确定所述EVPN路由对应的VXLAN隧道存在数据发送需求;否则,确定所述EVPN路由对应的VXLAN隧道不存在数据发送需求。
在可选实施例中,所述判断单元320,还用于若所述EVPN路由中携带的VPN标识与本地VPN标识匹配,则判断所述EVPN路由中是否携带有隧道优先创建标识;
所述创建单元330,还用于若所述EVPN路由中携带有优先创建标识,则创建所述EVPN路由对应的VXLAN隧道;
所述判断单元320,还用于若所述EVPN路由中未携带有优先创建标识,则判断所述EVPN路由对应的VXLAN隧道是否存在数据发送需求。
请一并参见图4,为本发明实施例提供的另一种隧道创建装置的结构示意图,如图4所示,在图3所示实施例的基础上,图4所示的隧道创建装置还包括:
检测单元340,用于检测所述EVPN路由对应的VXLAN隧道是否存在数据转发;
删除单元350,用于当所述EVPN路由对应的VXLAN隧道在预设时长内无数据转发时,删除所述EVPN路由对应的VXLAN隧道。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,当接收到满足预设条件的EVPN路由时,判断该EVPN路由中携带的虚拟专用网VPN标识与本地VPN标识是否匹配;若匹配,则创建该EVPN路由对应的VXLAN隧道;否则,拒绝创建该EVPN路由对应的VXLAN隧道,与现有VXLAN隧道创建方案相比,避免了无用VXLAN隧道对VXLAN隧道资源的占用,提高了VXLAN隧道资源利用率。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。