zl程序教程

您现在的位置是:首页 >  其他

当前栏目

数据中心——Vxlan基本概念3(动态建立Vxlan隧道技术)

技术数据中心 动态 建立 基本概念 隧道 vxlan
2023-09-14 09:15:39 时间

目录

E-V-P-N基本概念

什么是E-V-P-N

为什么出现E-V-P-N技术

E-V-P-N技术的优点

E-V-P-N协议的五种路由类型

Type2路由类型

MAC/IP路由的报文格式

细分为三种路由类型

MAC通告路由

ARP类型路由

IRB类型路由

注意事项

什么情况下会发Type2类型路由

Type3路由类型

Inclusive Multicast路由的报文格式

如何通过Type3创建Vxlan隧道以及头端复制列表

EVPN实例中RD值的两种分配方式

什么情况下会发Type3类型路由

Type5路由类型

IP prefix route路由的报文格式

注意事项

如何通过Type5路由发布主机IP路由、网段路由

同子网互访报文如何转发

静态Vxlan方式

EVPN方式

跨子网互访报文如何转发

集中式网关(Vxlan和EVPN类似,只是实现方式不同)

分布式网关(一般使用EVPN实现)

E-V-P-N用于建立Vxlan隧道的相关实验


E-V-P-N基本概念

什么是E-V-P-N

E-V-P-N全称Ethernet VPN(以太网虚拟专用网络),是由RFC7432(BGP MPLS-Based Ethernet V P N)定义,是一种用于二层网络互联的V P N技术。

为什么出现E-V-P-N技术

1.最初的Vxlan方案中没有定义控制平面,是手工配置Vxlan隧道,配置复杂,不易网络扩展

   并且在隧道建立过程中BUM报文泛洪,占用带宽,消耗网络资源

2.传统的二层虚拟专用网技术VPLS(MPLS二层隧道技术)配置复杂,工作量大。

   传统的VPLS技术还无法通过多个独立的链路实现Multihoming,存在流量环回问题

E-V-P-N技术的优点

1.EVPN可以使用MP-BGP协议作为Vxlan的控制平面

   通过在VTEP之间交换BGP EVPN路由自动建立Vxlan隧道,避免了不必要的流量泛洪。

   使用BGP通告MAC,使得MAC地址在数据转发前通过控制面协议学习

2.EVPN可以使用MP-BGP协议作为MPLS转发的控制平面。

  引入Ethernet Segment标识,标识Multihoming。引入ESI标签,避免环回。

  使用BGP通告MAC取代基于数据的MAC学习,使得MAC也可以像IP路由一样形成ECMP负载分担路径。

3.E-V-P-N实现了转发面和控制面的分离:MP-BGP控制平面承载了MAC/IP路由信息,数据平面的封装有若干选择。

8bc46effbda5405e85c5a2e92586e99b.png

目前业界使用最广泛的EVPN方案为:控制平面为MP-BGP协议扩展,数据层面为Vxlan封装转发

4.EVPN通过不同的路由类型可以同时发布二层MAC信息和三层路由信息


E-V-P-N协议的五种路由类型

E-V-P-N协议在M-BGP的框架下新增一个NLRI(网络层可达信息),在NLRI中定义了5种路由类型。

Type 1  Ethernet auto-discovery (AD) route             以太网段自动发现路由

Type 2  MAC/IP advertisement route                    MAC/IP路由

Type 3  Inclusive multicast Ethernet tag route  集成组播路由。即BUM报文的发送(广播、未知单播、组播)

Type 4  Ethernet segment route                               以太网段路由

Type 5  IP prefix route                                            IP前缀路由(一般用于分布式网关场景)

其中Type 1、Type 4用于EVPN ESI多活场景,实现防环,负载分担的作用。

DCN使用普通Vlan(非Vxlan场景),然后使用EVPN作为DCI互访的双归场景下,实现转发防环和路径优化作用

c4213ff856b741afbfbb27fff9e5c708.png

其中Type 2、Type3、Type5实现路由信息的传递,实现Vxlan隧道的建立和维护,为转发平面提供隧道

接下来主要对Type2、Type3、Type5类型路由做主要介绍


Type2路由类型

MAC/IP路由的报文格式

77b1e4242c944795a0b9b395e24aac31.png

细分为三种路由类型

2f3463fd20294fbe9c1ec95e77242ed5.png

MAC通告路由

其中,MAC Address Length和MAC Address字段为主机MAC地址

场景一:Leaf之间动态学习主机MAC

在同子网二层互访中,Leaf之间通过交互MAC/IP路由来相互通告已经获取到的主机MAC地址

eb31ef6bff0e4c6c9b71945ba8396b18.png

但是实际上在此场景中,当建立Vxlan隧道后,通过头端复制列表(广播方式,同静态)封装数据方式来学习主机MAC信息(头端复制列表通过3类路由建立)

          即用Type3就可以实现同子网互通,没有必要使用Type2

如果想通过报文交互学习主机MAC信息,想要减少广播报文的传播,可以通过Type2路由来学习MAC地址(结合ARP广播抑制部署)

场景二:在集中式网关中,实现MAC动态学习

3层网关自动通过MAC/IP路由将自己VTEP接口的MAC通告给二层网关(使得二层网关得到了三层网关的MAC地址)

fe2c6130774b44ee96017c9bee3bcb2a.png

集中式网关向EVPN对等体发送的MAC路由

场景三:在DCI之间传递主机的MAC地址

当PE上的MAC地址表信息发生变化时,PE即向对等体PE发送MAC地址通告路由,更新对端PE上的MAC表

4a6cb2945d414bc1ae6dd7a65441e5a9.png

ARP类型路由

MAC/IP路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在VTEP之间传递主机ARP表项,实现主机ARP通告。

其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP路由也称为ARP类型路由。

场景一:实现ARP广播抑制(避免头端复制)  需要先在Vxlan二层网关启用ARP广播抑制功能

1、当PC3访问PC4时,Leaf2会建立关于PC3的ARP缓存

当Leaf1收到PC3的ARP请求时,Leaf1就得到了PC3的ARP缓存信息,然后将此缓存信息转换为Type2的路由通过头端复制列表转发。

当Leaf2收到此类型路由后做ARP缓存(知道了PC3的MAC地址、VNI、Vtep地址、对应本地的BD域)

0cc68b19abb640be8541cd1c1d175934.png

2、当PC5访问PC3时,Leaf2会根据PC3的ARP缓存做ARP广播抑制

发送ARP请求到Leaf2,当Leaf2启用了广播抑制的功能时,Leaf2根据ARP请求查看自己的缓存里是否有关于目的IP地址PC3对应的主机信息。

如果存在,会将ARP请求的广播MAC直接替换为单播PC3的MAC,进行Vxlan封装后进行转发

如果不存在,ARP请求的广播目的MAC不变,进行Vxlan封装后进行转发

2f95358c465049dbab21df5316c2296c.png

在集中式网关场景下,推荐使用。当主机发送三层网关的ARP请求时,ARP广播抑制将广播转为单播,节约带宽

9c780659fd384d8fbc505e325d920a6e.png

注意:也可以在Leaf2开启ARP代答功能实现ARP广播抑制(华为部分数据中心设备支持)

         但是在数据中心有些集群状态的探测需要ARP报文来保活,所以不适合用代答的形式

基于BD的ARP二层代答:

       使能此功能后,二层网关设备在收到ARP请求后,优先尝试本地代答。

       只有当本地无法代答时,才会广播

场景二:实现分布式网关下的虚拟机迁移

  • 当一台虚拟机从当前网关迁移到另一个网关下之后
  • 新网关学习到该虚拟机的ARP(一般通过虚拟机发送免费ARP实现),并生成主机信息(包含主机IP地址、主机MAC地址、二层VNI、网关VTEP IP地址)。(如果先前已经学习到此MAC,则将此表项的序列号+1进行更新)
  • 然后通过传递ARP类型路由将主机信息发送给虚拟机的原网关以及其他的EVPN邻居。
  • EVPN对等体收到此ARP类型路由后将更新MAC表项(以序列号最大的表项为准)
  • 原网关收到此ARP类型路由后将更新MAC表项(以序列号最大的表项为准)
  • 原网关感知到虚拟机的位置发生变化,触发ARP探测,当探测不到原位置的虚拟机时,撤销原位置虚拟机的ARP和主机路由。并发送(回收序列号为N的MAC表项)ARP类型路由给自己的EVPN,让EVPN邻居撤销序列号为N的MAC表项(防止非NVE2的EVPN邻居的设备受到自己发送的老旧的MAC表项的影响)

d8ffa9f203204d689ab28e9071e7a684.png

IRB类型路由

除了ARP类型路由的功能外,还支持主机IP路由通告

场景一:ARP广播抑制

场景二:分布式网关场景下的虚拟机迁移

场景三:主机IP路路由通告

在分布式网关场景中,要实现跨子网主机的三层互访,两端VTEP(作为三层网关)需要互相学习主机IP路由。

作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机IP路由。

其中,IP Address Length和IP Address字段为主机IP路由的目的地址,同时MPLS Label2字段必须携带三层VNI。

IRB类型路由只可以发布32位主机IP路由(要发送网段路由需要Type5类型路由实现)

通过IRB学习32位主机路由过程

Host1首次与Leaf1通信时,通过动态ARP报文学习到Host1的ARP表项

Leaf1根据报文的入接口找到对应的二层广播域,然后找到绑定该广播域VBDIF接口的L3VPN实例获取其三层VNI

然后Leaf1将EVPN实例的RT、EVPN实例的RD、二层VNI、三层VNI、主机IP地址、MAC地址等信息生成IRB路由,通过BGP传递给EVPN对等体

Leaf2收到后检查路由携带的ERT

如果与本端的EVPN实例的IRT相同,则接收该路由;从中提取出包含的ARP类型路由,进行主机ARP通告

如果与本端的L3VPN实例的IRT相同,则接收该路由;从中提取出包含的IRB类型路由(包含Host1的主机IP地址、三层VIN),然后在该实例路由表中保存Host1的主机IP路由,并根据路由的下一跳(Leaf1的VTEP地址)将其迭代进Vxlan隧道

Leaf2传输路由到Leaf1的过程类似

EVPN对等体之间发送的IRB路由

注意事项

Type2类型路由可以通过irb类型通告主机IP来建立Vxlan隧道实现跨子网互访(分布式网关)

在华为的数据中心中一般

       ARP类型路由用于集中式网关场景

       IRB类型路由用于分布式网关场景

什么情况下会发Type2类型路由

MAC类型路由会根据情况自动发送

在BGP的EVPN视图下,peer [VTEP IP地址] advertise arp 配置发布ARP类型路由

在BGP的EVPN视图下,peer [VTEP IP地址] advertise irb  配置发布irb类型路由

         并且需要在Vbdif接口下配置arp collect host enable  开启主机信息收集功能

         此时Leaf会发送主机32位路由给Evpn对等体

在BD域视图下:arp broadcast-suppress enable  配置BD域内的ARP广播抑制功能


Type3路由类型

此路由类型通过互相传递二层VNI和VTEP IP地址等信息,进行Vxlan隧道的动态建立以及创建头端复制列表来转发后续BUM报文。

Inclusive Multicast路由的报文格式

该路由类型由前缀和PMSI属性组成

9aa31c2461d543189d3b911c3743eac8.png

a8c3f536ecac4323be4698107ecce33f.png

如何通过Type3创建Vxlan隧道以及头端复制列表

Type2类型路由可以通过irb类型通告主机IP来建立Vxlan隧道实现跨子网互访(分布式网关)

Type3类型路由通过创建头端复制列表来建立Vxlan隧道实现同子网互访和集中式网关下的跨子网互访

通过配置的EVPN实例中的RT值(入方向与出方向)来决定是否建立Vxlan隧道实现二层互访

通过VNI来决定是否创建头端复制列表

794fe114ef524fb8aa933d3a0ee66b12.png

  • 在Leaf上配置相应的BGP EVPN对等体、VNI、VTEP、RD、RT(入和出)等值
  • 配置成功后会互发BGP EVPN路由。携带本端EVPN实例的出方向RT与Type3路由(携带VTEP、RD、VNI信息)
  • 收到对端发送的BGP EVPN路由后,检查接收到的出方向RT值是否与本端EVPN实例的入方向RT值一致
  • 若一致则接收该路由,不一致则丢弃该路由
  • 当接收该路由后,从中获取到对端VTEP IP地址、VNI信息
    • 当收到的VTEP IP地址三层可达,则本端会建立一条去对端的Vxlan隧道
    • 如果VNI与本端相同,则将此VTEP IP地址作为头端复制列表中的一个地址,进行同子网内的BUM转发

注意:需要互相收到type 3的路由才可以建立vxlan隧道(否则是单通的)

EVPN实例中RD值的两种分配方式

RD的作用:

当设备收到RD不同的路由时,认为这些路由来自不同的EVPN实例。

用来解决当不同的EVPN实例中存在相同路由或者相同MAC的情况

注意:

每个本地的BD域配置的EVPN实例中的RD值必须本地唯一

分配方式:

由于每个本地的BD域配置的EVPN实例中的RD值必须本地唯一,所以当通过以下方式配置EVPN实例的RD值时会使得逻辑更清晰。

1、可以为每一个BD域配置全局唯一的RD

2、将VNI相同的BD域配置相同的RD,不同的VNI配置不同的RD

什么情况下会发Type3类型路由

在NVE接口下,vni [vni] head-end peer-list protocol bgp  配置发送Type3类型路由

设备向EVPN对等体发送的3类路由


Type5路由类型

通过IP前缀类型发布主机IP路由、网段路由到EVPN网路

IP prefix route路由的报文格式

7be9c44acbb344f8962d74c8b0b63178.png

 该类型路由的IP Prefix Length和IP Prefix字段既可以携带主机IP地址,也可以携带网段地址:

  • 当携带主机IP地址时,该类型路由在VXLAN控制平面中的作用与IRB类型路由是一样的,主要用于分布式网关场景中的主机IP路由通告。(只发布32位主机IP地址)
  • 当携带网段地址时,通过传递该类型路由,可以实现VXLAN网络中的主机访问外部网络

注意事项

一般情况下,Leaf发布下属主机的32位IP路由,类似IRB类型路由的作用。(因为不同的Leaf节点可能连接着相同的网段,所以如果Leaf节点发布的是下属主机IP所在的网段路由,则可能与其他Leaf节点发布的网段路由冲突,进而导致某些Leaf节点的下属主机不可达)

只有在如下两种场景中,Leaf节点可发布网段路由

  • Leaf节点连接的网段在整个VXLAN网络中是唯一的,而且有效的主机明细路由数量较大,此时可发布主机IP所在的网段路由,从而减轻Leaf节点上路由存储的压力。
  • VXLAN网络中的主机需要访问外部网络,此时Leaf节点可在VXLAN网络中发布其连接的外部网段路由,从而使其他Leaf节点学习到去往外部网络的路由。

如何通过Type5路由发布主机IP路由、网段路由

将主机IP路由、网段路由转为Type5路由,然后发布,具体转换步骤如下

在BGP的VPN实例视图下,import-route引入网段/主机路由。会将被引入的网段/主机路由转为VPNV4路由,

然后再在BGP的VPN实例视图下,输入advertise l2vpn evpn命令,将VPNV4路由转为Type5路由通告给EVPN邻居。

发送Type5路由

在将主机路由通过Type5传递出去的话,需要携带本端L3VPN实例的eERT、扩展团体属性、路由下一跳属性以及IP前缀。

其中,扩展团体属性携带的是隧道类型(取值是VXLAN隧道)、本端VTEP的MAC地址;路由下一跳属性携带的是本端的VTEP IP地址。

接收Type5路由

当EVPN邻居收到BGP EVPN路由后,进行如下处理:

检查该路由携带的eERT,如果与本端L3VPN实例的eIRT相同,则接收该路由,否则丢弃该路由。

然后,L3VPN实例获取到该路由携带的IP前缀类型路由,从中提取Host1的主机IP地址、三层VNI,在其路由表中保存Host1的主机IP路由,并将路由的下一跳迭代出接口设置为VXLAN隧道接口

a914f79c740c497fa8c2132d2eb02963.png

设备向EVPN对等体发送的5类路由(此处下发的是缺省路由0.0.0.0/0)


同子网互访报文如何转发

静态Vxlan和EVPN的转发示意图类似,只是实现的方式不同

5961b96e5d7f4c7cad9b9b8c4469eda8.png

静态Vxlan方式

BUM报文:通过手动配置对应的VNI的头端复制列表来实现报文转发

DMAC已知的单播报文:根据流量,设备自动学习MAC表项,实现Vxlan的封装

EVPN方式

BUM报文:通过Type3路由动态创建头端复制列表来实现BUM报文转发

DMAC已知的单播报文:可以通过Type2路由类型动态学习MAC表项,实现Vxlan封装

                                     也可以根据流量学习MAC表项,实现Vxlan封装


跨子网互访报文如何转发

对于Vxlan网络,不同子网,即不同网段的主机,走三层转发

集中式网关(Vxlan和EVPN类似,只是实现方式不同)

所有三层转发、查路由表这些都在集中式网关上做,不需要EVPN控制面去传递三层路由

cd3db5c7613a48f3bdd0f95ac6382f93.png

  1. Leaf1收到来自Host1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,在对应的二层广播域内查找出接口和封装信息。
  2. Leaf1上VTEP根据查找到的出接口和封装信息进行VXLAN封装,向Spine转发报文。
  3. Spine收到VXLAN报文后进行解封装,发现内层报文中的目的MAC是三层网关接口VBDIF10的MAC地址MAC3,判断需要进行三层转发。
  4. Spine剥除内层报文的以太封装,解析目的IP。根据目的IP查找路由表,找到目的IP的下一跳地址,再根据下一跳地址查找ARP表项,获取目的MAC、VXLAN隧道出接口及VNI等信息。
  5. Spine重新封装VXLAN报文,向Leaf2转发。其中内层报文以太头中的源MAC是三层网关接口VBDIF20的MAC地址MAC4。
  6. Leaf2上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。依据VNI获取对应的二层广播域,然后进行VXLAN解封装,获取内层二层报文,并在对应的二层广播域内查找出接口和封装信息。
  7. Leaf2根据查找到的出接口和封装信息,为报文添加VLAN Tag,转发给对应的Host2。

Host2向Host1发送报文的过程类似,这里不再赘述。

分布式网关(一般使用EVPN实现)

分布式网关跨Leaf的主机不同子网互访就需要互相通告各自的主机路由给对方(通过EVPN控制面)

通过L3VPN实例与EVPN实例互相交换路由(本端EVPN实例将EVPN路由通过发送给对端的L3VPN实例中)

传递路由主要依赖Type2的irb类型路由、部分情况使用Type5路由

分布式网关要注意EVPN实例与L3VPN实例中eERT、eIRT值的关系:

  • eERT与eIRT用于控制本端L3VPN实例与对端EVPN实例之间、本端L3VPN实例与对端L3VPN实例之间进行BGP EVPN路由的发布和接收
  • eERT是本端向其它EVPN对等体传输路由时使用,eIRT是本端接收对端通告路由时使用(主要分为以下两种请开给你)

   1.对端配置了EVPN实例与L3VPN实例,在通告路由时会携带EVPN实例中配置的eERT发送给本端L3VPN实例,本端的L3VPN实例中的eIRT与eERT一致时会将路由放入EVPN路由表中。(同时:当本端L3VPN的eIRT与对端的L3VPN实例eERT一致时,也会将路由放入实例路由表中

    2.对端没有配置EVPN实例,只配置L3VPN实例,则对端通告路由会携带L3VPN实例配置的eERT发送给本端的L3VPN实例,本端的L3VPN实例中的eIRT与eERT一致时会接受,同时将路由放入EVPN路由表和实例路由表中。

  • 三层VNI用于Leaf节点在收到数据报文时判断使用哪个L3VPN实例的路由表指导转发。
  • 当前L3VPN实例IPv4地址族向EVPN实例发布路由时,不会携带当前VPN实例IPv4地址族中配置的EVPN出方向VPN-Target属性,只会携带广播域BD下EVPN实例中配置的出方向VPN-Target属性列表中的所有VPN-Target属性
  • 当收到EVPN实例发来的路由时,只有其携带的VPN-Target属性包含在当前VPN实例IPv4地址族入方向VPN-Target属性列表中时,才允许该路由进入到当前VPN实例IPv4地址族路由表。

ed6cb59fdf0e4995af9e94e98323dd0b.png

  1. Leaf1收到来自Host1的报文,检测到报文的目的MAC是网关接口MAC,判断该报文需要进行三层转发。
  2. Leaf1根据报文的入接口找到对应的二层广播域,然后找到绑定该广播域VBDIF接口的L3VPN实例。根据报文的目的IP地址,查找该L3VPN实例下的路由表,获取该路由对应的三层VNI,以及下一跳地址。再根据下一跳的迭代出接口是VXLAN隧道接口,判断需要进行VXLAN封装:
  3. 根据VXLAN隧道的目的IP和源IP地址,获取对应的MAC地址,并将内层目的MAC和源MAC替换。
  4. 将三层VNI封装到报文中。
  5. 外层封装VXLAN隧道的目的IP和源IP地址,源MAC地址为Leaf1的NVE1接口MAC地址,目的MAC地址为网络下一跳的MAC地址。03394b9e06e7468ba118ecd4e12d9051.png
  6. 封装后的报文根据外层MAC和IP信息在IP网络中传输,送达Leaf2。
  7. Leaf2收到VXLAN报文后进行解封装,检测到报文的目的MAC是自己的MAC地址,判断该报文需要进行三层转发。
  8. Leaf2根据报文携带的三层VNI找到对应的L3VPN实例,通过查找该L3VPN实例下的路由表,获取报文的下一跳是网关接口地址,然后将目的MAC地址替换为Host2的MAC地址,源MAC地址替换为Leaf2的MAC地址,转发给Host2。

c54aa415c41a41daaa7d1ecd147208ed.png

 Host2向Host1发送报文的过程类似,这里不再赘述。


E-V-P-N用于建立Vxlan隧道的相关实验

动态建立Vxlan隧道实现同子网互访实验配置_多谢思考的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/125607968动态建立Vxlan实现隧道跨子网互访实验配置(集中式网关场景)_多谢思考的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/125608018动态建立Vxlan隧道实现跨子网互访实验配置(分布式网关单租户多子网场景)_多谢思考的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/125645823动态建立Vxlan隧道实现租户访问外网实验配置(分布式网关单租户多子网场景)_多谢思考的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/125649282