EVPN工作流程和报文

总结

EVPN当中常用到路由表项(按照出现的先后顺序排名)

关键信息 形成表项 作用
三类 实例的RD/RT/LABLE BUM表 BUM流量转发
四类 ESI ESI成员信息表 多活,DF选项时使用
一类 ESI的LABLE ESI成员信息表 环路避免,快速收敛,负载分担
二类 MAC/IP 地址 MAC-VRF表 ARP抑制、主机迁移

VXLAN当中的VPN没有TYPE-1和TYPE-4的,为什么呢

TYPE-1里面传的主要内容是ESI,ESI是防环的,而VXLAN在部署的CE和PE之间会采用M-LAG或堆叠这种技术,这种技术就能防环,所以用不到TYPE-1;TYPE-4是用来先DF,而M-LAG或堆叠也能实现这种效果,所以也用不到TYPE-4.

  • EVPN工作流程概述
    1. 配置实例的RD/RT/LABLE
    2. 配置MP-BGP,之后type-3将实例的RD/RT/LABLE,通告给所有的PE,形成BUM表;
    3. 绑定AC接口与VPN实例获得站点信息并分配ESI,通过type-4通告给所有PE,
      1. 形成ESI成员信息转发表
      2. ESI进行DF选举;
    4. PE会再给站点分配一个标签,通过type-1通告给所有的PE,同ESI下的PE学习后会修改;
    5. 最后的二类就比较简单了,当PE学到了MAC之后立马通过type-2进行通告

很多人在学习EVPN的时候会发现怎么会有两个标签呢?其实不是两个标签应该是三个标签;如果承载网络使用的MPLS,那最外层必须有一个MPLS标签,此外还有两个标签,其实一个标签是标签站点的,还有一个标签是用来标识实例的。

连接不同的站点的PE通信时往往会携带两个标签,最外层的标签是MPLS标签,内部的标签就是BUM当中为实例所分配的标签,BUM表当中的标签主要是为了区分实例。而连接同一个站点的PE通信时往往携带三个标签,还要再加一个ESI的标签,ESI的标签是为了区分站点的,让两个PE认识到自己连接了同样的站点,这样可以防止环路。

EVPN启动过程—控制平面

PS:控制平面基本上都是MP-BGP报文

image-20230501122145832

第一步:RD和RT配置

image-20230501122159611

  • 给EVPN实例配置RD和RT
    • 实例当然这也是通过VRF来对应实现的,只不过这里叫EVN实例;
    • 由于我们是做二层VPN,这个VRF当中最重要的表是MAC地址表,这张表也叫MAC-VRF表。

第二步:创建MP-BGP

image-20230501122214678

  • 在各个PE上创建BGP进程,并指定对等体
    • 开始发送3类路由信息了,发送给所有的对等体

    • 3类的路由信息里面有RD,同时还有MP-BGP给实例分配的一个标签,这个标签其实就标识实例,其实就数据转发时的内层标识,与MPLS-VPN当中内层标识是一个意思。

    • 其它的邻居收到之后就学习到了:“如果想去往这个实例,报文的内层标签是用这个”,其实这个学习到了会体现在一个表当中,这张表叫—BUM流量转发表,如下所示:

      image-20230501122231569

    • 如果所有的PE上都有实例的话,最终的效果是这样,如下所示:

      image-20230501122248604

第三步:绑定AC接口到EVPN实例

image-20230501122301551

  • 这一步很好理解呀,每一个示例都要拥有一个物理接口来对应CE
    • 完成后,每个PE都会通过type-4来通知其它的PE一个关键信息—ESI

      image-20230501122318726

    • 收到ESI也会形成一个表格—ESI成员信息表,也就是是ESI用来标识站点,BUM用来标识实例。

      image-20230501122334206

    • ESI有了之后,接下来就晃DF的选举,就是PE1和PE2都收到报文,那么到底哪个PE将信息传给CE1呢?所以PE1和PE2之间要有一个选举。

      • 基于设备,比IP,比小。
      • 基于VALN:不同的VLAN使用不同的DF

ESI其实就是站点的标识,从同一个CE发出去的报文ESI是一样的,你看上图当中PE1和PE2都连接着CE1,而PE1给PE2通知的ESI,与PE2给PE1通知的ESI是一样的,这样PE1和PE2就能意识到它们两个连接了同一个站点。

image-20230501122348930

image-20230501122404684

接下来就是type-1的路由信息了,PE会给ESI一个标签:

image-20230501122416243

注意,这个标签是用来标识站点的,前面那个标签是用来标识实例的

而且这个标签只有PE2会学习,PE3和PE4不学习,因为PE3和PE4通过对比ESI发现PE1发送的带有标签的报文当中ESI不是我本地的,所以不学习,而PE2则会学习,如下所示:

image-20230501122429676

最终收敛状态如下:

image-20230501122455667

总结状态

image-20230501122507124

假如说现在PE1已经学习到了MAC地址,接下来要进行第四步了

第四步:向对等体通告MAC地址

PE1会通过MP-BGP向对等体通告type-2的信息,里面主要就是MAC地址,这个MAC地址是通过MP-BGP通告给对等体,也就是说EVPN的MAC的通告地址是控制层面完成的,而不是在数据层面。

image-20230501122546153

注意看,又出现一个标签,注意这个标识是用来标识这个MAC地址的,就是上图当中的301,其它的PE进行学习,注意PE3和PE4会进行学习并形成MAC地址表,而PE2是个特殊,PE2学完了之后会发现ESI是相同的,意识到自己与PE2连接是同一个站点,既然是这样,那就没有必要通过PE1到处,自己也能到达,所以它会自动把出接口修改成自己对于CE的出接口并且把标签去掉,如下所示:

image-20230501122556405

PE2学习到MAC之后,它也会发送给所有的PE,PE1发现自己有了这条MAC就不会学习了,而PE3和PE4则会再学一条,尽管这一条与刚才那一条有是重复的,但是在PE3和PE4看来这并不是重复的,因为lable并不一样,这样在PE3和PE4看上去,有点像等价路由了,如下所示:

image-20230501122610030

image-20230501122626177

控制平面-报文

三类

TYPE3的路由信息与VXLAN的关系

image-20230501122646158

如果是在VXLAN环境当中,当我们完成第一步和二步之后,也就是说现在MP-BGP的隧道已经起来了,而且所有PE本地的RD、RT、LABEL都已经分配好了,VXLAN会借助TYPE-3的路由信息,把本端的RD、RT、LABEL必给MP-BGP对等体,这时候,MP-BGP对等体之间就会再次建立隧道,这个隧道是建立在MP-BGP基础之上的,也就是—VXLAN隧道。

四类

image-20230501122702246

一类

image-20230501122719666

EVPN启动过程-转发平面-广播

第一步:ARP请求

第一步:CE1开始发送ARP报文了,CE1连接了两个PE,到底发给哪一个呢?全都发!我们下面就用PE1来举例子

image-20230501122731270

  1. PE1收到报文之后,会根据源IP地址进行学习, 这个地方的行为与VPLS是一样的,都是在数据层面进行的学习,形成MAC-VRF表,如下所示:

    image-20230501122742094

第二步:PE1泛洪

注意,第二步是在控制平面完全完成之后才进行的

  1. PE1看到报文是一个广播报文,PE1会泛洪给所有的对等体,也就是P1会发给PE2、PE3、PE4,泛洪的时候会查询BUM表,因为BUM表里面有各个PE的VRF的内部标签,在发送的时候要携带这个内部标签的,外部标签有可能就是LDP形成的标签。

  2. PE4因为一个NO-DF,而且看到PE1给的报文是一个广播报文,PE4会丢弃掉,PE3会正常学习到。PE1发给PE2的时候也有点特殊,除了刚才那二层标识之外,还会再打上一个ESI标签,所以是三层标签,如下所示:

    image-20230501122754483

    PE2收到之后发现ESI与自己相同,PE2又是DF,所以PE2会收下,且不会再次广播 ,因为它已经知道了已经有PE学到了。

EVPN启动过程-转发平面-单播

第一步:CE2回复ARP

CE2回复ARP Reply,PE3会通过数据面学习CE2的MAC,PE4也有可能收到,因为是双活效果,我们假设发送到PE3

image-20230501122807229

学习到了之后会通过MP-BGP通告给所有的PE,如下所示:

image-20230501122817544

PE4会学习,再接着通告,PE3不学,PE1和PE2会学习,如下所示:

image-20230501122827176

第二步:PE3查到表项

CE2的单播报文到达PE3,PE3已经查到表项,发现通过PE1和PE2都可以,一般也是都会发送,这也是双活的体现。

PE1或PE2就会收到,收到之后PE发现这个MAC对应的VRF,去掉标签之后,然后转给VRF,PE2收到之后也会这么做。

posted @ 2023-05-01 12:31  张贺贺呀  阅读(67)  评论(0编辑  收藏  举报