EVPN简介

article/2025/9/25 7:21:36

EVPN全称是Ethernet VPN,它最开始由RFC7432定义,RFC的全称是:BGP MPLS-Based Ethernet VPN,从名字上看,这是一个基于BGP和MPLS的L2 VPN。虽然这是一个2015年才有编号的RFC,但是当它还是草案时,很多厂商已经开始实现EVPN。

在这之前与MPLS相关的L2 VPN标准在很早前就提出过。这包括:

  • RFC4447提出基于LDP的VPWS(Virtual Private Wire Service)
  • RFC4762提出基于LDP的VPLS(Virtual Private LAN Service)
  • RFC4761提出基于BGP的VPLS。

VPLS可以看成是一个full mesh(拓扑中任意两个PE都相连)版本的VPWS。这些L2 VPN标准方案,在2006年左右提出,现在已经实际应用。VPLS可以把SP(Service Provider)网络看成一个大的Ethernet Switch,SP提供的PE端口可以看成这个大交换机的端口,而每个CE设备看成是连接在交换机上的设备。VPLS这种架构,便于用户理解和组建网络,但是随着发展,VPLS最大的问题也正是,实现上太过模拟一个Ethernet交换机。

一个交换机怎么工作的?主要这几个动作,Learn,Flood,Filter,Forward。交换机自身有转发表,记录了MAC地址对应的交换机端口。与路由器的路由表不一样,这个转发表并没有一个控制层(control plane)写入,而是通过数据层(data plane)的自学习建立。当交换机收到一个Ethernet Frame,交换机首先会将Frame的源MAC和入口端口记录在转发表中,之后交换机根据Frame的目的MAC,查表找到相应的端口将Frame发送出去。如果目的MAC在转发表中不存在,那么交换机会将这个Frame发送到除了入口端口的其他所有交换机端口(Flood),在响应设备返回的Ethernet Frame中,再记录MAC地址和交换机端口的关系。这样下一次发往这个MAC地址的Frame,没有必要再经过一次Flood。

VPLS采用同样的方式构建转发表,也就是说在数据层进行flood-learn,或者说是在SP提供的WAN上进行flood-learn。同样的,为了避免转发表无限膨胀,还需要给转发表设置aging,清除不活跃的转发条目。所有这些,随着网络规模的增加,对PE和WAN网络的造成了很大的负担,进而限制了VPLS的网络规模。所以,尽管VPLS还有其他的问题和限制,但其没有控制层,或者说数据层不受控制,是VPLS发展的最大问题。现在都说SDN架构,数据控制分离,到这还基本没有控制层,明显不合适,因此EVPN被提出。EVPN架构是在现有的BGP VPLS(RFC4761)方案上,参考了BGP/MPLS L3 VPN(RFC4364)的架构提出的。我们知道SDN架构是控制数据分离,应用在控制层之上构建。对于EVPN来说,控制层是MP-BGP,而EVPN可以看成是构建在MP-BGP上的应用。所以EVPN不仅仅是一种技术和架构,它也有应用场景的定义。更具体的说,EVPN不仅定义了L2 VPN的一种改进方案,还定义了各个应用场景下的行为,像multi-homing,fast convergence,auto-discovery,MAC mobility等等,这些场景都非常有意思。随着EVPN技术的讨论,EVPN也被用来传递IP路由信息,作为VXLAN等overlay网络的控制层,用来作为数据中心互联的控制层等。所有的这些场景和讨论,在一篇文章讲清楚不现实,讲清楚起码要一本书。本文只介绍EVPN的基本概念和简单场景,虽然基本和简单,这些内容是EVPN最核心的部分。

EVPN中的一些名词

  • EVI(EVPN Instance):EVPN是一种虚拟私有网络,那么在一套物理设备上必然可以有多个同时存在的EVPN实例,每个实例独立存在。每个EVI连接了一组或者多组用户网络,构成一个或者多个跨地域的二层网络。
  • ET(Ethernet Tag):刚刚说了,每个EVI可以构成一个或者多个二层网络。当EVI包含了多个二层网络时,通过Ethernet Tag来区分这些二层网络。如果我们把二层网络看成是广播域的话(Broadcast Domain),那么ET就是用来区分不同广播域的。

简单画了一下它们的关系。

  • Ethernet Segment:这是在CE同时连接到多个PE时才会有的概念。本文暂时不涉及多连接的情况。
  • MAC-VRF:PE上的虚拟转发单元,类似于BGP/MPLS L3 VPN中的VRF。通过将PE抽象出多个虚拟单元,可以支持多租户场景,使PE同时被多个EVI使用。MAC-VRF中包含了实际的MAC转发表。

EVPN服务模式

前面说过,每个EVI,是可以连接一组或多组网络。这与EVPN的三种服务模式相关。

VLAN-Based Service Interface

这种模式下,每个EVI只有一个广播域,连接一组用户网络。如下图所示:

这种模式隔离最好,每组网络都是独立的,缺点是太费EVI了,例如,一个用户如果需要10组L2 VPN网络,就需要10个EVI,而通常SP能提供的EVI数量是有限的。这种模式下,在EVI内部类似于一个FLAT网络。每个MAC-VRF中只有一张MAC转发表。

VLAN Bundle Service Interface

一个EVI有多个广播域,连接了多组用户网络,但是多组用户网络共用MAC转发表。如下图所示:

这种模式,EVI内部类似于VLAN with SVL(Shared VLAN learning)。实际上广播域还是一个,通过逻辑分组区分不同的VLAN。在这种模式下,每个MAC-VRF只有一张MAC转发表,但是转发表类似于下图所示:

端口5连接的CE对应了三个用户VLAN。由于多组用户网络共用MAC转发表,实际上是通过MAC地址来做转发决策,因此这种模式要求所有网络中MAC地址唯一。并且,EVPN连接的用户网络VLAN ID必须一致(如图所示)。举个例子,右边VID11的网络,有一条转发信息发送到了左边,左边为了实现多租户隔离,只能对某一个入口网络开放转发信息,这样才能做到多租户隔离,而由于只有一张转发表,EVI(更确切的说是MAC-VRF)只能允许VID11的入口网络使用这条转发信息。

VLAN-Aware Bundle Service Interface

一个EVI有多个广播域,连接了多组用户网络,但是每组用户网络有自己独立的MAC转发表。如下图所示:

这种模式,EVI内部类似于VLAN with IVL(Independent VLAN learning)。每个MAC-VRF有多张MAC转发表,每张MAC转发表对应一个用户网络。MAC地址和ET同时用来做转发决策,通过ET定位到MAC转发表,再通过MAC地址在转发表内寻址。这种二手手机号码出售模式允许多组用户网络之间存在重复的MAC地址,并且每组网络的VLAN ID可以不一致。例如,左边VID12的转发信息,可以直接发到VID11对应的MAC-VRF中。这种模式能解决上面两种模式的问题,不过就是实现相对来说复杂一些。

EVPN的实现

前面说过EVPN的实现参考了BGP/MPLS L3 VPN的架构。下面这个图就是一个BGP/MPLS L3 VPN的架构。EVPN架构在这个层面上是一样的。

控制层(control plane)

这里的控制层是指MAC转发信息的传递和MAC-VRF中MAC转发表的写入。具体的说,就是CE1的MAC地址,怎么发送到PE2,进而让PE2收到目的MAC是CE1 MAC地址的Ethernet Frame时,知道应该通过Tunnel发送到PE1。

CE1 -> PE1

CE-PE之间通常还是通过数据层进行MAC 学习。也就是说,PE1需要通过解析CE1发来的数据包,读取其中的源MAC地址,并记录在MAC-VRF中的MAC转发表中。通常这些数据包是设备发出的第一个数据包,例如DHCP,ARP等。采用这种传统的方式,一是CE不需要关心SP网络的实现,另一个是能更好的兼容CE设备。MAC-VRF也对应了一个RD(Route Distinguisher)和一组RT(Route Target)。RD用来区分EVPN实例的信息,RT用来过滤MAC 路由。这在之前介绍BGP/MPLS L3 VPN时有过详细的介绍,这里就不说了。 好了,有关CE1的MAC转发信息到达了PE1,确切的说是到达了PE1内的MAC-VRF。

PE1 -> PE2/MP-BGP

PE之间的MAC转发信息传递,是通过MP-BGP来进行,也就是在EVPN内部,MAC转发信息是通过控制层来传输。这是EVPN与VPLS最核心的区别。因为EVPN内部是SP网络了,SP想怎么玩都可以。MP-BGP是BGP-4的扩展,改版多次,最新的版本由RFC4760定义。EVPN中的MP-BGP本质上还是一个IBGP。现在PE1有了CE1的MAC转发信息,需要做的是封装成BGP数据传递给PE2。首先EVPN在MP-BGP中定义了自己的地址族(AFI 25,SAFI 70)。在这个地址族下,又定义了不同的NLRI(Network Layer Reachability Information)。同时EVPN也定义了多个新的BGP Extended Community(RFC4360),具体如下表所示。

看起来似乎很多,这里我们只看Route Type 2,也就是MAC/IP route,它的NLRI信息定义如下:

  • RD:RD与MAC-VRF关联,RD的作用是为了区分不同的EVI之间重复的信息,因为PE之间只有一条MP-BGP连接,但是同时存在多个EVI。RD在这里的作用与L3 VPN中一样。
  • ESI:前面说过,Ethernet Segment是与多连接相关,ESI用来区分多连接中的每条链路。
  • Ethernet Tag ID:Ethernet Tag ID是4个字节,可以包含12bit或者24bit的标识符。前面说过,Ethernet Tag是用来区分同一个EVI中的不同的广播域的。只有在VLAN-Aware Bundle Service Interface下,才存在多个广播域,Ethernet Tag ID才有意义。Ethernet Tag ID可以用来区分MAC/IP route属于MAC-VRF中的哪张MAC转发表。
  • MAC Address Length/MAC Address:MAC地址。这就是PE需要封装到BGP中的数据。
  • IP Address Length/IP Address:IP地址。注意这里的IP地址是可选的,这部分在后面讲ARP/ND时会再说。
  • MPLS Label:VPN label。在MPLS网络中传输时的内层标签。在数据层,PE根据MPLS label将收到的Ethernet Frame发送到相应的MAC-VRF,进而发送到对应的CE。

MAC/IP route还必须带上一到多个作为Extended community存在的RT。

PE1将这个MAC/IP route发送到PE2。与L3 VPN中的作用一样,PE2通过MAC/IP route中带的RT和自身的MAC-VRF的RT进行匹配,定位到哪些MAC-VRF接收这条路由。由于MAC-VRF可能存在多个转发表,因此可能还需要ET ID来确定路由具体写入到哪个转发表。

到此为止,PE1通过MP-BGP将MAC转发信息写到了PE2。现在PE2上的MAC-VRF知道了,对应的MAC应该转发到PE1上。

PE2

控制层数据到PE2 就结束了。前面介绍PE1传给PE2的MAC/IP route中,有一个可选的IP地址项。如果IP地址也随着MAC/IP route传输到了PE2,那么PE2已经有了响应ARP request的全部信息。此时,如果PE2收到了ARP request,没有必要广播出去。因此,EVPN定义PE2可以支持ARP proxy,这样可以避免ARP request在骨干网上广播,减少不必要的广播信息

这是控制层MAC学习带来的好处。在VPLS模式下,PE2没有办法事先知道CE1的IP/MAC,只能通过ARP request广播来获取响应。

数据层(data plane)

接下来看一下数据层,例如CE2如何ping到CE1。

CE2 -> PE2

在ping之前,CE2因为不知道CE1的MAC地址,必须要先发送ARP request,通过CE1的IP地址查询CE1的MAC地址。前面说过PE2可以配置ARP proxy,这样PE2收到ARP request之后,直接将CE1的MAC地址放在ARP response中回送给CE2。CE2拿到MAC地址,组装Ethernet Header,将ping包发送到PE2。

PE2 -> PE1

PE2的MAC-VRF记录了MAC的转发信息,因此PE2知道,目的MAC是CE1 MAC的Ethernet Frame应该发送到PE1。PE2->PE1这部分实际上是跑在SP网络上。在EVPN下,定义了三种数据层。

先假设用MPLS作为数据层,VXLAN作为数据层以后有机会再单独介绍。

前面在控制层MAC/IP route中带的MPLS Label(VPN Label)在这里有用处了。它会被加到ping包中,之后为了在MPLS网络中传输,还会在MPLS Label Stack中加上Public Label。中间通过MPLS传输,这就是一个普通的MPLS unicast传输。到达PE1的,实际上是带上了VPN Label的ping包。

PE1 -> CE1

PE1收到的带VPN Label的ping包。这个VPN Label是PE1通过MP-BGP发往PE2的。因此,PE1必然知道这个VPN Label应该对应自己的哪个MAC-VRF。所以,VPN Label被剥离,ping包被发往相应的MAC-VRF,通过读取MAC-VRF中的MAC转发表,发往相应的端口,也就是CE1。这样,CE2 ping到了CE1。

这就是EVPN架构中最基本的内容。总的来说,EVPN架构与BGP/MPLS L3 VPN是一样的。只是这里的转发信息是MAC转发信息,而L3 VPN中的转发信息是IP prefix转发信息。

EVPN的发展

EVPN的流行不仅在于它为L2 VPN带来的改进,更多在于EVPN提供了一个L2 网络的控制层。具体可以概括为以下几点:

  • 可以通过控制层学习L2和L3的可达信息。传统的控制层只有L3的可达信息。
  • 通过MAC/IP route和ARP代理,减少网络广播。
  • 完整的多连接场景定义。
  • 完整的BUM数据发送的优化定义。
  • 支持MAC迁移。
  • 支持拓扑自发现。
  • 支持多租户。

随着发展,EVPN开始支持更多的场景,EVPN新增了Route type 5,用来传输IP prefix 路由信息;作为overlay网络,例如VXLAN,的控制层;应用在数据中心互联的场景等,虽然相应的标准还没有最终确定,但是IETF草案已经讨论改版多次。以后有机会再说说这些内容。


http://chatgpt.dhexx.cn/article/MB4AVBwR.shtml

相关文章

简单静态网页的设计

总体思路&#xff1a;先构思好一个图书馆的框架 以这个框架为主体&#xff0c;进行拓展&#xff0c;丰富其他内容&#xff1a; 只是简单地做了四个页面&#xff0c;“我的图书馆”页面可以采用同样的方式编写出来。 主体的编程&#xff1a; <!doctype html><html>…

宠物网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

一、网页介绍 1.网页编辑&#xff1a;任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad &#xff09;等任意html编辑软件进行运行及修改编辑等操作 2.知识应用&#xff1a;技术方面主要应用了网页课程中的: D…

HTML+CSS实现简单静态网页的制作

效果图展示&#xff1a; 用DIV分块布局 html代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>网站首页</title><link rel"stylesheet" type"text/css" /></head&g…

简单网页设计静态成品分享

最近做了很多原创的网页设计&#xff0c;都是简单的网页&#xff0c;采用的是divcss布局方式。页面整体宽度为1024px. 欢迎欣赏

一分钟学习静态网页制作

第一章静态网页制作&#xff1a; 什么叫做HTML&#xff1a;超文本标记语言 HTML优势&#xff1a;世界知名浏览器都支持Google&#xff0c;苹果&#xff0c;微软&#xff0c;等等……还有市场需求 跨平台&#xff1a;1.win系统 2.苹果系统 3.linux系…

CSS静态网页制作

效果如图所示 css代码如下 * {padding: 0;margin: 0; } body {background-color: #f3f5f7; } a {text-decoration: none; } li {list-style: none; } .w {width: 1200px;margin: 0 auto; } .header {margin: 50px auto;height: 40px;text-align: center; } .clearfix:before, …

使用html制作静态网页

网页主要由三部分组成&#xff1a;分别为结构&#xff0c;表现和行为。 XHTML&#xff1a;可扩展文本标签语言&#xff0c;XHTML是一种基于XML的语言。XHTML是一个扮演者类似HTML角色的XML。 HTML提供了六级标题&#xff0c;分别为<h1>、<h2>、<h3>、<h4…

静态网站简单制作

制作一个简单的静态网站 总体框架&#xff1a; <html> <frameset rows"20%,80%"><frame src"top.html" noresize scrolling"no" name"top"></frame><frameset cols"30%,70%"><frame src…

用HTML+CSS+JS搭建一个超简单的静态实用网站页面

废话少说先上效果图&#xff0c;查看网站请访问→http://110.41.21.119:16001/ 这是一个超简洁的网页&#xff0c;主要特征有&#xff1a; 头部背景颜色渐变效果&#xff1a; <div class"header"><div class"loader"><span style"--i:…

静态网页入门讲解,制作属于你自己的网页(一)

写在开始 这个系列教程主要针对完全没有接触过网页制作的萌新小伙伴开设的&#xff0c;如果你有一定的网页知识积累&#xff0c;可以果断关闭&#xff01; 网页前端设计中牵涉的内容太多了&#xff0c;基础教程却比较缺乏&#xff0c;所以博主希望能够通过这样一个系列&#…

最全静态网页模板网站

前言 最近好多人私信我&#xff1a;我学了不久前端&#xff0c;想要用一些项目实战来练练手。那么&#xff0c;我以后将定期更新静态网页实战&#xff0c;专用于提供初学者的练习。 那么这次博客为大家提供一些模板网站&#xff0c;希望初学者借鉴和学习优质资源&#xff1a; …

搭建静态网页

day3作业 请给openlab搭建web网站​ 网站需求&#xff1a;​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!!​ 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于[www.openlab.com…

HTML前端静态网页制作

在制作网页之前&#xff0c;首先先分析网页是那些部分组成&#xff0c;可以从以下的代码看出&#xff0c;分为头部、导航栏、logo部分、文字部分等等这些组成。多的不说&#xff0c;直接上代码&#xff0c;本次静态网页代码分为html和css部分。 <!DOCTYPE html> <htm…

web前端简单静态网页制作

那么Web页面制作基础&#xff0c;能让你掌握什么呢&#xff1f; 1.掌握Web基础知识。 2.掌握HTML5基础知识。 3.掌握CSS基础知识。 网页设计源代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

HTML+CSS制作的纯静态网页

刚学完HTMLCSS&#xff0c;一定要按照自己的想法去制作网页&#xff0c;虽然没有交互&#xff0c;但是可以对前面的知识有一个很大的重用&#xff0c;你的知识框架会更加完美。css基础html是勾勒&#xff0c;css是染色&#xff0c;基础的css学完你会有种想写页面的冲动&#xf…

游戏网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…

个人介绍网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

一个简单的静态网页制作(html+css)

这是仿照中国高等教育学生信息网写的一个静态网页&#xff08;参考2020年3月份的&#xff09; 这也是我当时辛辛苦苦写了几天的劳动成果&#xff0c;希望大家可以尊重。 截图如下 下面是主要的代码&#xff1a; <!DOCTYPE html> <html> <head> <meta c…

html实战-制作静态网页

教程视频&#xff1a;http://edu.csdn.net/course/detail/535 从42开始 制作的网页&#xff1a;http://www.cnos.co/ 整体思路&#xff1a; 先布局再CSS控制 骨架搭好了&#xff0c;初始化样式&#xff0c; 后再弄CSS样式。注意&#xff1a;将CSS的样式导入到外部样式表时…

制作静态网页

首先进行CSS样式布局&#xff0c;根据样图进行块级标签分布&#xff0c;为每一个块级标签设置颜色以查看布局是否正确&#xff0c;最好是每设置一个块级标签颜色就查看一次是否排布正确&#xff0c;这样可以及时发现问题并解决问题&#xff1b;等到每一块区域都划分完成后&…