【HCIE】10.EVPN

news2024/11/24 9:50:11

VPLS技术,公共网络中的一个L2VPN

VPN一共有8种类,三大属性是:MPLS(IP),L2(L3),P2P(P2MP)

MPLS VPN的属性是:MPLS,L3,P2MP

VPLS和EVPN的属性是:MPLS L2 P2MP

L3vpn是两个不在同一网段的网络互通

L2vpn是两个在相同网段的网络互通,二层转发需要直接向对方请求ARP,MAC地址表是怎么形成的。MPLS标签封装两个,一个用于数据传输,一个用于标识是哪个VPN。

VPLS

问题:不能实现负载分担,网络部署困难,不能CE多归属场景

他在MPLS网络上提供了类似LAN的业务,允许用户可以从多个地理位置接入网络,相互访问。

实现VPNLS,需要:创建隧道和PW(中间两个RT值连起来的线,伪线),VSI(虚拟交换实例),绑定PW和AC(接入链路,就是PE连接CE站点的链路)到VSI

VIS

为每一个VPLS单独划分的一个虚拟交换处理单元。VSI用于存放独立的MAC地址标和执行转发,并负责终结PW

绑定PW和AC到VSI

VPSL的报文转发过程

MAC地址的学习是靠数据转发(一台交换机拿到一个数据包对源地址首先进行学习)

底层配置:公网部分OSPF,对应的接口启了LDP

分配内层标签:静态分配标签,LDP跨跳分配,MP-BGP分配
mpls l2vpn	//开启mpls l2vpn功能,默认支持3层VPN

mpls ldp remote-peer 名字	//跨跳建立LDP
	remote-ip 3.3.3.3

vsi vpn1 static
	pwsignal ldp	//伪线通过哪种方式产生
	vis-id 100	//ID号码
	peer 3.3.3.3	//邻居是谁

interface ethernet0/0/0.10	//绑定实例
l2 bingding vsi vpn1

对于SW1

这里需要保留标签,因为接口下面可能会有很多VLAN,具体要让哪个VLAN通的话,可以进行控制。

二层VPN也会有环路,只要有泛洪机制存在,就有可能存在环路

如图,VPLS可能会出现双规归场景,像这种拓扑,因为二层的泛洪机制就有可能会出现环路,因为这不是交换机所以不能使用STP协议,但是也可以学习STP让一个端口进行堵塞,这样就可以消除环路,但是也产生了一个新的问题就是无法形成多路径可能会造成流量堵塞。

收敛速度慢

收敛速度在亚秒级,和数量地址的数量相关,PE1会逐条删除MAC地址

EVPN

颠覆了传统的L2 VPN数据学习MAC地址的方式,引入控制面学习MAC和IP指导数据转发,实现了转控分离,之前都是靠着数据转发一步一步的学习MAC地址,现在是MAC可以变成一种路由,携带的MAC地址进行传递,中间的设备可以学习MAC也可以不学习MAC

解决了典型问题,实现双活,快速收敛等

EVPN就是MP-BGP里面的一种地址族,负责的是控制平面的传递(内层标签的传递),外层转发也灵活多样(MPLS GRE SRV6)。

所以VPN都负责两个部分。其一,隧道头到隧道尾,可以使用LDP,GRE MPLS;其二,传递内层标签,使用EVPN。

EVPN基本术语

ES,用户站点连接到PE的一组链路,使用ESI来标识

EVI,EVPN的实例,每个用户都要有独立的MAC地址表,MAC地址表就由EVI实例产生。

MAC-VRF,PE上属于EVI的MAC地址表

DF,指定转发器,主要用于防止环路

ESI Label

BUM流量,广播,组播,未知单播转发行为是泛洪

ES和ESI

ES代表用户站点连接到PE的一组一台链路,使用ESI来表示

ESI总长度为10个字节,且在全网范围唯一

同意ES双规的两个PE配置的ESI必须相同

EVI和MAC-VRF

EVI代表一个EVPN实例,用于标识一个EVPN客户。

MAC-VRF是PE上属于EVI的MAC地址表

EVPN路由

EVPN就是一个BGP协议,就是使用BGP协议来传递的,BGP中的一个地址族

EVPN定义了一种新的BGP VLRI来承载所有的EVPN路由,被称为EVPN VLRI

EVPN NLRI被MP-BGP携带。MP-BGP支持多协议扩展,定义EVPN的AFI 是25,SAFI是70

发送的顺序是3,4,1,2

EVPN工作流程

底层的MPLS是打通的,一定是有一个外层标签的

BUM流量表

PE上面配置一个2层实例,相当于虚拟出来了一台交换机,会自动产生一个BUM转发表,生成BUM标签,并把这些标签发给其他的设备,这样当其他设备带上了BUM转发表的标签时传递的数据将执行转发行为。使用3类路由(集成多播路由),用3类携带BUM的标签。

上图,PE1为例,他讲发送3类路由发现邻居并分配BUM标签

上图,PE2,PE3和PE4生成BUM流量转发表

过程中所有PE均发送3类路由,最终形成稳定的BUM流量转发表

undo dcn	//防止有bug
system-view i	//传统配置方式

IGP互通,起了MPLS LDP
evpn sorce-address 1.1.1.1	配置源地址

创建BGP EVPN邻居
bgp 123
peer 3.3.3.3 as-number 123
peer 3.3.3.3 connect-interface l0
l2vpn-family evpn
peer 3.3.3.3 enable

创建EVPN实例(观察3类路由)
evpn vpn-instance vpn1
route-distinguisher 1:1
vpn-target 1:1 export-extcommunity
vpn-tartget 1:1 import-extcommunity
建立起邻居后,现在就可以传BUM流量
dis bgp evpan all routing-table inclusive-route  0:32:3.3.3.3

选举DF

一旦接口绑定实例之后,就会通告4类路由,用于选举DF

4类路由互相介绍我连接了哪一个ESI,如果连接了同一个ESI那么就开始选举DF,此时只有1个PE向CE转发BUM流量就是有DF身份的PE设备。

interface e1/0/9
evpn binding vpn-instance vpn1
esi 0011.2233.4455.6677.8899

就只传了一个ESI ID,用来查看哪台设备和自己连接了一个ES

1类路由

虽然有DF设备可以阻止环路,阻止的过程是只有从DF设备才可以进入BUM流量。但是还有一种场景可能会出现环路,就是从DF设备进入的流量又从非DF设备出来,然后泛洪的时候可能会又从DF设备进入,那么这样也就造成了环路。

设备会通过1类路由根据ES再生成一个标签,用于标识是这个ESI的标签,这个流量再发给DF的时候还会携带ESI标识的标签,这个时候DF会看到ESI标签和自己在一个ES里面,所以就把数据包丢弃。

启动过程阶段(3,4,1)

  1. 首先,要通过BGP的配置建立EVPN的邻居,启用实例,就有了MAC地址表,天然具备了BUM转发能力,就会产生BUM标签,通过3类路由互相之间两两交互。大家生成了第一张标签BUM流量转发表,记录了要给每个邻居发送BUM流量需要携带的标签
  2. 选举DF,使用4类路由互相发送,里面携带了ESI,可以看到谁与自己在同一个ES,就可以选举一个DF,之后通过1类路由补充针对ESI的标签,用于防环。

流量转发

CE1上面产生一个ARP请求会往外发送,发给了非DF设备,非DF设备发给了DF设备,又交给了CE2,数据走完了之后,沿途的MAC地址表中就学习到了1111

CE1访问CE2,首先发送ARP请求。PE1接收报文,生成本地MAC表条目。

与此同时,除了数据转发学习MAC,非DF设备收到后会生成MAC地址表进行加工,加上RD值,ESI,MAC和标签把它传递给自己的每一个邻居。往外推的方式是没有标签的,只学习到了MAC地址,只知道转发到哪一个邻居,但是不知道标签该对应多少,只有第二次通过单播报文再发一遍,才能知道去往不同的邻居携带什么样的标签。

转头机制

EVPN支持CE多活接入PE。PE2感知直连CE1,刷新最优的MAC表条目,并生成和通告Type 2路由。

dis bgp evpn all routing-table

集成单播路由,type3(主要是BUM标签)

ES路由,type4(主要是ES编号)

AD路由,type1(记录了ESI编号所对应的标签)

EVPN故障快速收敛

发送一个撤销对应ESI编号的路由全部删除掉。

启动过程

  1. 配置EVPN的源地址,配置EVPN的peer,创建VPN实例
  2. 创建完成VPN实例之后,会产生3类路由,带标签,BUM流量标签,互相之间传递BUM流量标签,形成了BUM流量转发表
  3. 接口绑定到VPN实例,起了ESI ID,产生了4类路由,交互ESI编号选举DF,自动传1类路由(携带标签,最终形成ESI转发表)
  4. 启动过程结束

报文交互过程(广播报文)

  1. 假如1.1访问1.2,构建出一个ARP出来,封装源MAC1.1目的MACFF,会交给非DF设备,首先对MAC地址进行学习,地址是个广播地址,执行泛洪行为(封装一个BUM标签),如果给自己这边的DF设备发的时候还会有一个ESI标签。
  2. 非DF设备学习到了一个MAC信息,将这个MAC地址变成EVPN 2类的路由,将这个MAC信息发给了所有的邻居,3和4学习到后都会做记录(记录去往MAC11对应的设备是PE几),同时也会把信息给PE1,PE1一看ESI我也在这个网络里面,那么就做了个转向。
  3. PE3与PE4因为有ESI的记录,所以能意识到PE1也能在这个ESI里面。

3类路由里面携带了BUM标签

4类路由里面携带了ESI ID

1类路由里面携带了ESI 的标签

2类路由里面携带了 内层标签,对应的ESI还有MAC地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1043916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【必看】自动化测试:selenium(环境部署和元素定位)

一、什么是selenium? > 一个web自动化测试工具; 二、主流的自动化工具: > QTP:收费 支持(支持web、桌面软件自动化) > selenium:免费,开源 只支持web项目 > Robot frameword: 基于Python扩…

VM装Windows虚拟机扩容

1.进入服务器CMD模式,输入diskpart,回车 2.查看卷 list volume 3.指定扩容的磁盘 select volume 1 4.查看磁盘 list disk 5.查看逻辑分区 list parttition 6.选择需要扩展的逻辑分区 select partition 1 7.扩展 extend 8.退出并查看磁盘大小

Linux系统离线安装Python

目录 一、简介 二、前提准备 三、下载Python源码 四、将离线python包传输到Linux主机 五、编译以及创建软链接 一、简介 由于工作原因,我们经常会在内网环境下使用Linux,不过这样会让我们安装一些软件变得困难,例如需要安装Python。虽然…

工业静电控制ESD防静电手环监控看板的优势

在现代工业生产中,静电问题一直是令人头痛的难题。静电不仅会对产品质量造成严重影响,还可能导致设备故障和生产线停工。为了解决这一问题,一种新型的防静电监测系统应运而生——ESD防静电手环监控看板。该系统采用全自动智能测量、预警和提示…

2023《生信知识库》订阅

写在前面 自2021年11月末,我们开始通过《小杜的生信笔记》分享自己的学习笔记。我们的教程也受到很多同学的关注。我们的分享主要基于小杜自己的学习笔记,如画图,分析等。在知乎中,我们推出一期R语言绘图总汇https://zhuanlan.zhi…

【工具使用】Audition软件导入.sesx文件报错问题

一,简介 本文主要介绍了在使用Audition导入新的wav文件后,保存,然后再打开.sesx文件时报错:“ 错误: 文件已损坏或使用了不受支持的格式 XML FATAL ERROR: (line: 2835, col: 69) [ D:\Project\AE_Y2311\16channel_test\16_chann…

2023-9-26 JZ22 链表中倒数最后k个结点

题目链接:链表中倒数最后k个结点 import java.util.*;/** public class ListNode {* int val;* ListNode next null;* public ListNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xf…

多协议远程管理 Termius for Mac中文

Termius是一款功能全面、易于使用的远程访问和SSH客户端软件,提供了许多有用的功能和工具,适用于开发人员、系统管理员和网络工程师等需要远程管理和访问服务器的用户。 跨平台支持:Termius可在多个操作系统上运行,包括Windows、…

autojs项目搭建和入门实践

Auto.js 是一款无需root权限的javascript自动化软件,它可以帮助用户在手机上自动执行各种任务,比如自动填写表单、自动点击按钮、自动切换应用等,并且可以通过图形用户界面来管理和编辑脚本。 软件环境 操作系统:win10 VSCODE&…

seata的启动与使用

1 下载seata 下载地址:https://github.com/seata/seata/releases/v0.9.0/ 1.1 修改配置文件 将下载得到的压缩包进行解压,进入conf目录,调整下面的配置文件: registry.conf registry {type "nacos"nacos {serverA…

ARM IIC总线实现温湿传感器

IIC.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h"/* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** */#define SET_SDA_OUT do{G…

VR全景如何助力乡村振兴,VR全景推动农业发展

引言: 乡村振兴是当前我国发展的重要战略,而VR全景技术作为一种创新的数字技术,帮助乡村增加曝光率,为乡村发展提供了机遇,助力乡村振兴。 一.促进乡村文化传承与旅游发展 1.通过VR全景技术,传承乡村文化…

如何评估商城源码的安全性和稳定性?

评估商城源码的安全性和稳定性是选择合适的商城源码的关键一步。以下是一些方法和指标,可用于评估商城源码的安全性和稳定性。希望对大家有所帮助(仅供参考)。 1、源码质量 商城源码的质量是评估其安全性和稳定性的重要指标之一。我们技术可以检查源码的编码规范、…

数据库导入文字不乱吗 CSV

phpMyadmin建立数据库&设置外键&导入csv文件 - 知乎

CMOS图像传感器——Stack Pixel(2)

在去年的时候, 就写过Sony大法的Stack Pixel CMOS图像传感器——Stack Pixel_stacked-pixel cis_沧海一升的博客-CSDN博客对索尼的2-Layer Transistor Pixel技术进行了介绍_stacked-pixel cishttps://blog.csdn.net/qq_21842097/article/details/127007460 IEDM 2021 上…

动手学深度学习(pytorch版)第二章2.1 Note-ndarray

1.入门 x torch.arange(12) //首先,我们可以使用 arange 创建一个行向量 x。这个行向量包含以0开始的前12个整数, //它们默认创建为整数。也可指定创建类型为浮点数。张量中的每个值都称为张量的元素(element) x.shape x.numel…

Educational Codeforces Round 155 (Rated for Div. 2) - D Sum of XOR Functions

学到的几个知识点: 1.拆位 对于整体上的异或操作可以转化为31个二进制位上的操作,每一位再上 。 将一次操作拆为31次来方便操作。 2. s[i]表示异或前缀和,l~r间的异或和为s[r] ^ s[l - 1] ----> 拆完位后这个公式还能再推出一个性…

【CentOS7】安装docker

【CentOS7】安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过命令查看你当前的内核版本 。2.使用 root 权限登录 Centos,将 yum 包更新到最新。(确保联网)3. 如果安装过旧版本的话,卸载旧版本4. 设置yu…

初识Load Runner

Load Runner安装 为什么选择Load Runner Load Runner 有强大的录制功能,Jmeter没有录制功能Load Runner 可以设计丰富的测试场景Load Runner 能够产出丰富的测试报告 Load Runner三大组件之间的关系 每个组件分别是干什么的? virtual User Generator…

搭建Vue的开发环境,Edge浏览器安装VUE拓展工具

一、在下载vue.js文件 在vue官网中下载开发版本的vue.js文件--> 安装 — Vue.js (vuejs.org) 二、将vue.js导入到项目中 这时候我们运行项目控制台会抛出两个错误 三、安装拓展工具 这里以Edge浏览器为例,其他浏览器上可在拓展管理商店中下载 进入Edge的拓展…