数据中心——Vxlan基本概念3(动态建立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路由信息,数据平面的封装有若干选择。
目前业界使用最广泛的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互访的双归场景下,实现转发防环和路径优化作用
其中Type 2、Type3、Type5实现路由信息的传递,实现Vxlan隧道的建立和维护,为转发平面提供隧道
接下来主要对Type2、Type3、Type5类型路由做主要介绍
Type2路由类型
MAC/IP路由的报文格式
细分为三种路由类型
MAC通告路由
其中,MAC Address Length和MAC Address字段为主机MAC地址
场景一:Leaf之间动态学习主机MAC
在同子网二层互访中,Leaf之间通过交互MAC/IP路由来相互通告已经获取到的主机MAC地址
但是实际上在此场景中,当建立Vxlan隧道后,通过头端复制列表(广播方式,同静态)封装数据方式来学习主机MAC信息(头端复制列表通过3类路由建立)
即用Type3就可以实现同子网互通,没有必要使用Type2
如果想通过报文交互学习主机MAC信息,想要减少广播报文的传播,可以通过Type2路由来学习MAC地址(结合ARP广播抑制部署)
场景二:在集中式网关中,实现MAC动态学习
3层网关自动通过MAC/IP路由将自己VTEP接口的MAC通告给二层网关(使得二层网关得到了三层网关的MAC地址)
集中式网关向EVPN对等体发送的MAC路由
场景三:在DCI之间传递主机的MAC地址
当PE上的MAC地址表信息发生变化时,PE即向对等体PE发送MAC地址通告路由,更新对端PE上的MAC表
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域)
2、当PC5访问PC3时,Leaf2会根据PC3的ARP缓存做ARP广播抑制
发送ARP请求到Leaf2,当Leaf2启用了广播抑制的功能时,Leaf2根据ARP请求查看自己的缓存里是否有关于目的IP地址PC3对应的主机信息。
如果存在,会将ARP请求的广播MAC直接替换为单播PC3的MAC,进行Vxlan封装后进行转发
如果不存在,ARP请求的广播目的MAC不变,进行Vxlan封装后进行转发
在集中式网关场景下,推荐使用。当主机发送三层网关的ARP请求时,ARP广播抑制将广播转为单播,节约带宽
注意:也可以在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表项的影响)
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属性组成
如何通过Type3创建Vxlan隧道以及头端复制列表
Type2类型路由可以通过irb类型通告主机IP来建立Vxlan隧道实现跨子网互访(分布式网关)
Type3类型路由通过创建头端复制列表来建立Vxlan隧道实现同子网互访和集中式网关下的跨子网互访
通过配置的EVPN实例中的RT值(入方向与出方向)来决定是否建立Vxlan隧道实现二层互访
通过VNI来决定是否创建头端复制列表
- 在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路由的报文格式
该类型路由的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隧道接口
设备向EVPN对等体发送的5类路由(此处下发的是缺省路由0.0.0.0/0)
同子网互访报文如何转发
静态Vxlan和EVPN的转发示意图类似,只是实现的方式不同
静态Vxlan方式
BUM报文:通过手动配置对应的VNI的头端复制列表来实现报文转发
DMAC已知的单播报文:根据流量,设备自动学习MAC表项,实现Vxlan的封装
EVPN方式
BUM报文:通过Type3路由动态创建头端复制列表来实现BUM报文转发
DMAC已知的单播报文:可以通过Type2路由类型动态学习MAC表项,实现Vxlan封装
也可以根据流量学习MAC表项,实现Vxlan封装
跨子网互访报文如何转发
对于Vxlan网络,不同子网,即不同网段的主机,走三层转发
集中式网关(Vxlan和EVPN类似,只是实现方式不同)
所有三层转发、查路由表这些都在集中式网关上做,不需要EVPN控制面去传递三层路由
- Leaf1收到来自Host1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,在对应的二层广播域内查找出接口和封装信息。
- Leaf1上VTEP根据查找到的出接口和封装信息进行VXLAN封装,向Spine转发报文。
- Spine收到VXLAN报文后进行解封装,发现内层报文中的目的MAC是三层网关接口VBDIF10的MAC地址MAC3,判断需要进行三层转发。
- Spine剥除内层报文的以太封装,解析目的IP。根据目的IP查找路由表,找到目的IP的下一跳地址,再根据下一跳地址查找ARP表项,获取目的MAC、VXLAN隧道出接口及VNI等信息。
- Spine重新封装VXLAN报文,向Leaf2转发。其中内层报文以太头中的源MAC是三层网关接口VBDIF20的MAC地址MAC4。
- Leaf2上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。依据VNI获取对应的二层广播域,然后进行VXLAN解封装,获取内层二层报文,并在对应的二层广播域内查找出接口和封装信息。
- 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地址族路由表。
- Leaf1收到来自Host1的报文,检测到报文的目的MAC是网关接口MAC,判断该报文需要进行三层转发。
- Leaf1根据报文的入接口找到对应的二层广播域,然后找到绑定该广播域VBDIF接口的L3VPN实例。根据报文的目的IP地址,查找该L3VPN实例下的路由表,获取该路由对应的三层VNI,以及下一跳地址。再根据下一跳的迭代出接口是VXLAN隧道接口,判断需要进行VXLAN封装:
- 根据VXLAN隧道的目的IP和源IP地址,获取对应的MAC地址,并将内层目的MAC和源MAC替换。
- 将三层VNI封装到报文中。
- 外层封装VXLAN隧道的目的IP和源IP地址,源MAC地址为Leaf1的NVE1接口MAC地址,目的MAC地址为网络下一跳的MAC地址。
- 封装后的报文根据外层MAC和IP信息在IP网络中传输,送达Leaf2。
- Leaf2收到VXLAN报文后进行解封装,检测到报文的目的MAC是自己的MAC地址,判断该报文需要进行三层转发。
- Leaf2根据报文携带的三层VNI找到对应的L3VPN实例,通过查找该L3VPN实例下的路由表,获取报文的下一跳是网关接口地址,然后将目的MAC地址替换为Host2的MAC地址,源MAC地址替换为Leaf2的MAC地址,转发给Host2。
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
相关文章
- 【华为云技术分享】智能诊断和优化,华为云DAS服务云DBA平台让您无忧运维
- 【华为云技术分享】计算python程序执行时间
- 【华为云技术分享】华为云文档数据库服务DDS监控告警全新优化
- 【并发技术16】线程同步工具Exchanger的使用
- 如何做好技术 Team Leader?
- 对一门技术的掌握程度
- Rhino脚本引擎技术介绍
- Android版OpenCV图像处理技术亲自验证[二十五]之SQRBox过滤器(附源码)
- 一个 SAP 开发工程师十余年的技术写作之路回顾
- ML与Regularization:正则化理论即bias-variance tradeoff(权值衰减/提前终止/数据扩增/Dropout/融合技术)在机器学习中的简介、常用方法、案例应用之详细攻略
- NLP:自然语言处理技术近十年发展技术更迭的简介、案例之详细攻略(持续更新)daiding待更新
- 音视频流媒体技术介绍(下篇)
- 快速迁移数据中心:华为云数据库SQL Server实践案例技术解析
- Java动态追踪技术探究(动态修改)
- 前后台交互经常使用的技术汇总(后台:Java技术,前台:Js或者Jquery)
- 73.第十七章 企业级容器技术docker -- docker介绍和安装(一)
- 《云数据中心网络架构与技术》读书笔记 | 第6章 构建数据中心的逻辑网络(Overlay网络)
- 实时流处理架构与技术选型
- 手机app开发可选技术——Flutter