首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VxLan Overview介绍(二)

【前言】

继上篇

《VxLan Overview闲谈(一)》

后,我也在思考,怎么才能把文章写得既简练又有逻辑性,把抽象晦涩的技术概念讲的稍微通俗易懂一点,当然这个易懂还是针对业内人士的。

第一篇更多是侧重于基本概念讲述,但在写的过程中,也发现要讲清楚一个技术点,会涉及到很多周边和关联性的技术和概念,有很多旁支错节。

比如要讲EVPN,就会涉及到VPN, MPLS, BGP, L2VPN, L3VPN, VPLS,隧道封装技术等等。

要讲VxLan,也会涉及到相关联的一些Overlay技术,比如NVGRE,STT-Stateless Transport Tunneling, LISP等等,还要比较彼此之间的差异性。

VxLan和Hypervisor之间的集成性:涉及到业界主流的Vmware vsphere, MS Hyper-V, Linux KVM和XEN。这些更偏系统领域的知识,倒是我比较感兴趣的地方。

说的更远一点,第一代VM虚机发展到现在,目前已经进入到了containers容器化时代(比如基于Docker的Google kubernetes),再往下据说是更懵圈的Micro Services Architecture in applications, big data analytics, traffic patterns等。

以上有些要点,也是随着写作过程中的资料查找和research才找到了彼此的关联性。

言归正传,这个VxLan的 第二篇,还是围绕VxLan MP-BGP本身,结合一些配置实例,帮助理解技术和概念本身。

因为今天主要是讨论EVPN传递的路由类型,所以先来复习一下EVPN,之前在《EVPN技术篇》里讲过的。

【为什么需要EVPN】

问题:EVPN解决了什么问题,或者说传统的Legacy L2VPN技术,比如VPLS有什么问题?

首先VPLS只能进行Active/Standby forwarding最主要的问题就是不能基于Per-flow流进行多路径负载均衡转发(就是类似L3VPN那样),因为不是Per-flow,假设还要多路径转发,就会带来比如下图所示的一系列问题?

比如说Looping of traffic flooded, Duplicate frame和MAC Flip-Flopping等问题。MAC地址翻动\抖动,大家都知道MAC地址表就是MAC地址和对应的接收到数据帧的Interface,那么由于从多个接口收到同一个MAC地址,其实就是MAC地址从不同Interface学到后,导致MAC地址表中该条目信息始终在变化抖动。

知道基于Flood-and-learn的Legacy L2VPN的问题后,那么横空出世的EVPN自然是要解决以上缺陷的,那么它的特点,也就自然而然的如下所述:

Per-Flow Redundancy and Load Balancing(也叫enhanced LB,其实关键就是Per-Flow)

Active-Active multi-homing

Optimal Forwarding

Fast Convergence

MAC Address Scalability

在正式深入VxLan之前,再来回顾一下EVPN的5种不同的Route-type路由类型(VxLan主要涉及到其中的Type-2 MAC Advertisement Route):

对Type-2的定义,为了描述准确,引用一下原文:The type-2 route is responsible foradvertising MAC address reachabilityviaMP-BGPto all other PEs in a given EVPN instance.描述已经很清楚了,通过MP-BGP宣告Layer 2的MAC/IP信息的传递,广播抑制,利用BGP extened community特性等。下面举个例子,描述一下Type-2 MAC宣告的过程,相信大家就很好理解了。(BTW:咱这个原创也是良心之作,不是蜻蜓点水,或者简单的复制粘贴,的确是下了功夫了,欢迎转发和关注公众号):

从上图中可以看到,地址宣告和学习大致可以分为以下几个部分:

CE-PE之间的的学习,还是通过data-plane数据平面,即PE1从CE1学到了M1的MAC(MAC M1)

PE1将学到的MAC M1,负责通过BGP NLRI Type-2,发布给其他的PEs

BGP MAC advertisement route除了MAC M1外,还传递了什么信息呢?其实上次在《EVPN技术讲解》中已经将Type-2路由信息讲过了,这里再重复一次。就是如上图所示,除了MAC,还包括RD,ESI(0代表Single homed,non-zero代表multi-homed),比如上图中的CE1是multi-homed,所以ESI是ES1。ESI除了标示Ethernet segment外,还有一个作用是啥?相信大家也都想到了,就是Split-horizon防环,比如一些BUM流量,PE2看到ESI是ES1,自然不会把这些流量回传给CE1,也就起到了防环的目的。

至于EVPN的一些诸如DF, Aliasing, ARP Broadcast Suppression,说起来实在是内容太多,不在本文讨论范围之内,想深度了解的同学,关键字给出来了,大家自行去搜索学习一下。

前面的内容中,为了好理解EVPN的关键要点和各种terminology,所以还是用WAN的架构。因为今天讲的重点还是EVPN作为控制平面协议,在VxLan中的应用。而VxLan在数据中心中的架构就是Clos架构,也就是Spine/Leaf架构。所以下面还是围绕Spine/Leaf架构举个实例。

上图的MAC/IP传递学习过程如上图所示,自己理解就行了。主要的技术要点大致分为几个部分:

1)VTEP通过数据平面学习本地host主机信息:

上面讲过了,类似CE-PE间的数据平面学习Local-host learning,延伸到这里,就等同于Host\end point和VTEP之间。这种本地学习,也可以分为几种:

VTEP接收到来自host的incoming entherent frame,从中学到host的source MAC。

Host主机主动发起GARP或者RARP请求时。

或者VTEP发起的针对网关地址的ARP请求。

2)EVPN路由发布和Remote-host learning远端主机学习:

在VTEP学习到本地的Host主机MAC/IP后,它就会通过控制平面MP-BGP将这些信息发布到Fabric里的其他VTEP节点上,这样就避免了第一代无控制平面的flood-and-learn对fabric带来的大量BUM流量的资源消耗。

EVPN路由的发布通过L2VPN EVPN address family,包括信息就是上面那张图上列举过的:RD, MAC, IP, L2 VNI, L3 VNI等

这里要注意的几点就是:

VTEP在发布EVPN路由的时候,会将自己的VTEP source address作为BGP的next-hop,这个属性在整个fabric网络传递过程中是不能改变的,因为远端的VTEP在为overlay网络转发数据包时,必须知道这个MAC/IP是源自哪个VTEP。

一般要配置2个Loopback地址,一个用于BGP控制平面,另一个用于标识VTEP设备本身,也就是用于VTEP之间的Underlay的L3邻接关系。

MP-BGP EVPN使用BGP extended community扩展团体属性在EVPN路由中传输导出的RT。 当EVPN VTEP收到EVPN路由时,会将收到的路由中的路由RT(route-target)与其本地配置的RT导入策略进行比较,以决定是否导入或忽略路由。

3) 对称和非对称IRB

也就是Symmetric and Asymmetric Integrated Routing and Bridging。

一般都是采用Symmetric IRB方式,下面会讲一讲S_IRB和A_IRB的不同以及S_IRB的好处。

【非对称IRB】

如上图左侧所示,左侧服务器H1要发送数据包给右侧的服务器H2。在入向VTEP上,它就负责做了VNI之间的路由,也就是VxLan包头里的VNI标识已经是VNI-B。

然后,数据包到了对应的VTEP-4。

VTEP4作为出向VTEP,负责在目标VNI中将数据包转发给目标服务器H2。

非对称IRB的最大的问题,就是因为要在入向VTEP完成VNI之间的转换,所以势必要求,所有的VTEP要配置全网的VNI(就好比上图,所有的VTEP都要配置VNIA和B),以及需要学习所有VNI下关联的所有服务器Host的ARP和MAC信息。一个是配置维护工作,另一个随着网络规模增长,带来的可扩展性的问题。

所以,接下来就看对称A_IRB的工作原理和不同点是什么:

相对非对称IRB,对称IRB在入向Ingress和出向Engress的VTEP上都执行L2\L3的寻址,对称IRB有一些逻辑组件:

L3 VNI:在网络中,每一个租户的VRF instance必须对应一个唯一的L3 VNI,这种一一映射关系在整个网络中必须是一致的。所有VxLan间的路由流量采用封装在VxLan包头中的L3 VNI,并且为接受方VTEP提供VRF Context信息。接收方VTEP利用这个L3 VNI,决定是否转发包含在内部IP分组的VRF Context信息。

提醒一下:L3 VNI一定是和Tenant和VRF相关的,不要和L2 VNI搞混,一个租户下面可以有多个L2 VNI。

VTEP router MAC address:每一个VTEP设备都有一个唯一的系统MAC地址,被其他VTEP设备用来做VNI之间的路由,这个MAC地址用来作为内层包头的D-MAC。

如上图所示,当一个数据包需要从VNI-A发送到VNI-B时:

首先,在左侧入向VTEP上,不像非对称IRB将VNI标识设为转换后的VNI-B,而是L3 VNI。

同时,入向VTEP除了在VxLan包头里重写封装了L3 VNI外,同时也重写了在内层包头的D-MAC,将其换成了目的VTEP设备的MAC,就是刚才讲的VTEP router MAC。

当出向VTEP设备,也就是VTEP-4接收到这个VxLan数据包后,首先接封装移除VxLan包头,然后再看内层包头,发现D-MAC就是它自己的MAC地址,所以它就执行L3路由查找,因为VxLan包头里带着L3 VNI,所以它就知道,将这个包放到对应这个L3 VNI租户的路由进程中去执行路由查找。

下面这张图的例子就很清楚的描述了这个过程,大家自己看吧,就不解释了,重点看一下图片右侧那个L3 VNI和Tenant下的VRF Instance的对应路由寻址。

所以,经过以上对比,可以得知对称IRB的好处就是:

当执行VNI之间的数据转发时,入向VTEP设备不需要知道目的VNI。本地VTEP不需要学习和维护远端VTEP所关联的远程服务器Host的ARP\MAC信息。换句话说,每一个VTEP只需要维护那些在本地关联有服务器的VNI,这个就比非对称IRB在维护性和扩展性上带来了很大的好处。

贴一个配置实例,帮助大家理解L3 VNI,以及和Tenant, vrf的关系:

首先为tenant租户evpn-tenant-1创建vrf。

配置L3 VNI 39000,刚才讲了,用于在出向VTEP关联租户下的VRF路由进程。

定义RD、RT以及import/export策略,上面也提过了。

基本原理就差不多了,原来和特性各厂家都是大同小异。有兴趣的同学,还是做一些实验,比较一下各个厂家在VxLan BGP EVPN上的不同配置方式,帮助理解不同实现方式。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180524G1JOLV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券