1. VXLAN+EVPN控制平面和数据平面分析

1.1 vxlan节点动态发现隧道动态建立过程(type3路由


Type3路由的作用:用于自动建立vxlan隧道和自动生成头端复制列表
Type3路由什么时候发送:BGP-EVPN对等体和二层广播域及evpn实例配置完成之后发送。

控制平面

  • 首先在leaf1,leaf2之间建立BGP EVPN对等体关系,然后在leaf1和leaf2分别建立二层广播 域,并配置关联二层vni,在二层广播域下创建evpn实例,配置本端EVPN实例的RD,ERT,IRT。然后配置本端VTEP地址和对应vni从bgp evpn路由获取形成头端复制列表的命令之后。leaf1和leaf2会相互发送BGP-EVPN路由给对端。路由包括本端EVPN实例的ERT,和type3路由,用于形成BUM流量转发表
  • Leaf1和Leaf2在收到对端发来的BGP EVPN路由后,首先检查该路由携带的EVPN实例的出方向VPN-Target,如果与本端EVPN实例的入方向VPN-Target相等,则接收该路由,否则丢弃该路由。在接收该路由后,Leaf1和Leaf2将获取其中携带的对端VTEP IP地址和二层VNI,如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道;同时,如果对端二层VNI与本端相同,则创建一个头端复制表,用于后续BUM报文转发。

type3报文截图

1.2 Type2路由-同子网通信通告MAC路由

跨Leaf同子网场景



控制平面:

  1. 当vm1 ping vm2时,同子网发送arp广播请求去请求192.168.1.2的mac地址,
  2. arp报文到达leaf1,leaf1判断其收到报文的接口所属vsi(bd域实例),leaf1学习到vm1的mac地址 1b69与对应的vsi实例进行绑定,并且生成BGP-EVPN的type2路由通告给对端evpn邻居。
  3. leaf2收到type2路由,根据type2路由中的出方向RT和本端evpn实例的入方向RT比较,一致则接受该路由,不一致则丢弃该路由。一致情况下,提取mac地址和二层vni信息,记录到本地的l2vpn实例下的mac地址表中。

数据平面:

  1. Leaf1收到的arp广播报文从ge2/0口收到,该接口绑定了二层vsi实例,对应的vni是10,根据vni10,找到对应的头端复制列表,将这个BUM报文复制分别往头端复制列表的各个VTEP对端发送。
  2. Leaf3收到该vxlan隧道报文,解封装,根据vni编号10在其关联的二层接口广播,vm2收到该arp广播报文,发现其请求的IP是本机,那么学习将该arp报文的源MAC地址和IP记录到本地,并作出arp响应。目的mac是vm1的mac,响应报文到达leaf2,
  3. leaf2根据先前通过arp广播报文学习到的l2vpn的mac地址表项进行转发,发现去往vm1出接口是tunnel0,是个vxlan隧道,通过vxlan进行封装。
  4. 报文到达Leaf1,解封装,发现其arp响应报文的目的MAC是16b9,动态学习到的,不是通过EVPN学习到的,那么找到对应的接口转发出去。
  5. vm1收到arp响应报文,构建icmp报文源IP 192.168.1.1,目的IP 192.168.1.2,源MAC为 vm1,目的MAC vm2
    到达leaf1,通过查询mac地址表进行对应的vxlan封装

1.3 Type2路由-跨子网通告MAC/ARP/IP路由(IRB路由)

跨Leaf跨子网场景



控制平面

  1. VM1去ping VM2,跨网段通信,需要发送arp请求网关的MAC,VM1首次与leaf1通信,因其目的mac是leaf1,leaf1通过arp报文学习到VM1的ARP表项,根据VM1所在的二层广播域(vsi实例)找到绑定vbdif接口(vsi接口)的L3VPN实例,获取关联的三层VNI。然后leaf1上的EVPN实例根据上述信息生成IRB路由。
  2. Leaf1向Leaf2发送BGP EVPN路由,该路由携带本端EVPN实例的ERT、扩展团体属性、路由下一跳和IRB路由。扩展团体属性携带了隧道类型(取值是VXLAN);路由下一跳属性携带的是本端的VTEP IP。
  3. Leaf2收到Leaf1发来的BGP EVPN路由后,同时进行如下处理:
    检查该路由携带的ERT,如果与本端EVPN实例的IRT一致,那么接受路由,EVPN实例获取IRB类型路由后,还可以从中提取ARP类型路由,用于本端vpn实例的arp表项。(ensp vpn实例的arp表项没有?华三模拟器实验vpn实例里也没有对端的arp表项)
    检查该路由携带的ERT,如果与本端L3VPN实例的eIRT一致,那么接受路由。本端L3VPN实例收到该IRB路由,从中提取PC1的主机IP地址、三层VNI,在其路由表中保存PC1的主机路由,并根据路由的下一跳迭代出接口,最终迭代结果是指向Leaf1的VXLAN隧道。
  4. MAC地址的学习
    上一节的type2的mac路由

上面的控制平面数据交互只是leaf1收到了vm1的请求网关的arp报文触发的。
数据平面:

  1. leaf1收到了vm1的请求网关的arp广播报文请求,做出arp响应,vm1收到之后构建icmp报文,将请求交给网关leaf1 192.168.1.254,leaf1收到icmp报文之后查对应l3vpn实例的路由表。192.168.2.0网段的路由交给vsi接口的192.168.2.254,由2.254进行arp广播请求192.168.2.2的mac,通过vsi2 vni封装arp报文到达对端。
  2. Leaf2收到报文解封装,根据二层vni 20 在其管理的本地接口中广播。
  3. vm2收到arp广播报文,做出arp响应。源MAC为VM2的mac,目的MAC是2.254的MAC,leaf2也会学习到vm2的mac地址表项,然后发布type2mac路由通告。
    Leaf2收到响应报文查mac地址表,目的MAC为2.254的mac需要从vxlan 隧道发出。封装
  4. Leaf1收到响应报文,解封装,将vm2的IP和mac记录到本地对应vpn实例下的arp表项中。
  5. 网关Leaf1构建ICMP请求,目的MAC为VM2的MAC,源MAC是网关MAC。网关根据MAC地址转发表查找对应的目的MAC,发现出口是vxlan隧道,进行封装。通过vpnb二层实例的vni找到对应的头端复制列表,进行发送。
  6. Leaf2收到ICMP报文,解封装,查找MAC地址转发表,根据其对应接口发出到达VM2。
  7. VM2收到报文之后发现其目的MAC是自己,拆掉帧头,处理报文,回复ICMP响应。目的地址192.168.1.1,源地址192.168.2.2,源MAC为VM2的MAC,目的MAC是Leaf1网关的MAC。
  8. ICMP响应报文到达Leaf2,查MAC地址转发表进行转发,发现目的MAC的出接口为vxlan隧道,根据vpnb实例关联的二层vni找到对应的头端复制列表进行转发。
  9. 报文到达Leaf1,Leaf1收到之后,对vxlan报文进行解封装,发现请求目的IP地址为192.168.1.1,查询arp表项对应的MAC地址为vm1MAC地址,查询MAC地址转发表选择对应出接口发出。报文最终到达vm1,完成ICMP的响应。



VTEP两端MAC地址一致情况下(分布式网关 网关mac一致),如何判断Leaf1节点请求VM2的ARP报文回给了Leaf2还是Leaf1,抓包看没有回给Leaf1,因为Leaf2有相同MAC,Leaf2处理了。
Leaf1是通过Leaf2通告的VM2 MAC路由继续进行ICMP构建的。


注意:本地初次通信且Leaf没有明细主机路由时且两端VTEP网关MAC没有配成一致情况下通信封装的是二层vni
本地有明细主机路由并且两端VTEP网关的MAC是一致情况下才会封装三层VNI

  • 对于两端MAC没有配置成一致情况下客户端学习到的关于网关的MAC 是对端VTEP的MAC地址。下次客户端跨网段通信时本端VTEP因为目的MAC不是自己,不会接受会查表转发。
  • 对于两端MAC配置成一致情况下客户端学习到的关于网关的MAC,虽然是对端VTEP发送的,但是两边的MAC一致。所以下次通信时本端VTEP会接受,不会转发,查本地vpn实例路由表。

1.4 type5-通告外部路由



什么时候需要Type5路由?

  • a. vxlan网络中的主机想要访问外网,需要spine节点下发其连接的外部网段路由,从而使其他Leaf节点学习到去往外部网络的路由。
  • b. 减少leaf节点的路由条目,leaf节点下连接的网段必须是在整个vxlan网络中是唯一的,不然会冲突。

控制平面:

  1. Spine节点本身public实例下有一条缺省路由,下一跳是24.1.1.2,在BGP对应的vpn实例下发布缺省路由,引入静态路由。
  2. 其他Leaf节点会收到Spine节点通告的BGP-EVPN路由,路由包括L3VPN实例的出方向RT和Type5IP前缀路由。会比较收到的路由中的出方向RT是否和本地的L3VPN实例中的 入方向RT一致,一致则接受路由,不一致则丢弃。一致的情况下,提取三层VNI、IP地址和下一跳保存在对应的vpn实例的路由表中。

数据平面:

  1. VM1访问4.4.4.4,跨网段请求,arp请求网关的MAC,网关回复arp响应,VM1构建ICMP请求,源IP192.168.1.1,目的IP4.4.4.4,源MAC是VM1设备MAC,目的MAC是网关MAC,请求报文到达Leaf1网关设备。
  2. Leaf1设备判断其接受接口,查找接口关联的vpn实例的路由表,匹配缺省路由,下一跳是2.2.2.2,出接口是vsi3,使用三层vni 1000封装。
  3. 通过查询arp表项,找到2.2.2.2的MAC,查找MAC地址转发表,出接口是tunnel1,隧道对端地址是2.2.2.2
  4. 构建ICMP报文,源IP是192.168.1.1,目的IP 4.4.4.4,源MAC是网关MAC(VSI接口),目的MAC是2.2.2.2的MAC。使用三层vni 1000封装。
  5. 报文到达Spine节点,解封装,Spine根据三层VNI找到关联的vpn实例,查找目的地址为4.4.4.4的路由表,匹配缺省路由,下一跳是24.1.1.4。
  6. 报文到达bdr节点,目的请求地址是本机的地址,返回ICMP响应沿源路径返回。


1.5 同子网同Leaf

  1. pc1 ping pc5,发起arp广播请求获取pc5的mac地址
  2. 从子接口vlan10收到的广播报文会将vlantag去掉,替换为对应的BD域的VNI,根据对应VNI10的头端复制列表将arp报文转发到对端VTEP,对端VTEP收到VXLAN封装的ARP请求报文之后,解封装,也会广播该报文,但因为arp请求IP不在该leaf2下,所以不会有arp响应。ensp模拟器到达CE3就没有往下广播了(BUG)。
  3. PC5也会收到arp广播报文,发现请求目的IP是本机,直接回复arp响应报文。
  4. PC1构建ICMP请求,直接访问PC5

1.6 跨子网同Leaf

  1. pc1 ping pc2,跨网段访问,首先发送ARP请求网关的MAC,网关收到之后回复arp响应。
  2. PC1构建ICMP请求,源IP 10.1.1.1,目的IP 10.1.2.1 ,源MAC PC1的MAC,目的MAC为vbdif10的MAC。
  3. Leaf1收到ICMP请求报文,判断其接受接口,查找该接口关联的VPN实例的路由表,发现10.1.2.0/24网段的下一跳是10.1.2.254,出接口是vbdif20。交给vbdif20处理。
  4. vbdif20网关发起arp广播报文请求10.1.2.1的MAC地址,广播报文会通过vni20对应的头端复制列表中发出去,也会广播到vni20关联的接口发出。
  5. PC2会收到arp广播报文,做出响应。源MAC是PC2MAC,目的MAC是 vbdif20的MAC。
  6. Leaf1收到响应报文之后记录arp表项和MAC地址表项,然后构建ICMP报文,目的IP 10.1.2.1 源IP 10.1.1.1,目的MAC为PC2的MAC,源MAC为vbdif20的MAC。查看MAC地址转发表从对应接口发出。
  7. ICMP报文到达PC2,发现请求IP为本机,回复ICMP reply报文,按照上述步骤发给网关最后到达PC1。

VXLAN+EVPN控制平面和数据平面交互过程分析相关推荐

  1. 控制平面和数据平面[也称为转发平面]

    控制平面和数据平面[也称为转发平面] 1. 控制平面: 2. 转发平面: 3. 说明: 3.1 说明1: 3.2 说明2: 1. 控制平面: 指系统中用来传送指令.计算表项的部分. 例如:命令行,we ...

  2. Day8:网络层——导论(数据平面、控制平面)、路由器组成

    偷博!Secretly fighting~ 哈哈 (有道翻译) 又是美好学习的一天!邂逅了一首安静美好的小诗--<门前> 我多么希望,有一个门口 早晨,阳光照在草上 我们站着 扶着自己的门 ...

  3. DPDK — 数据平面开发技术

    目录 文章目录 目录 官方文档 传统服务器的性能瓶颈是什么 如何应对网络密集型的巨大数据量? 异步 I/O 模型的弊端? 协议栈的扩展性? 多核 CPU 的可扩展性? 内存的可扩展性? 解决传统服务器 ...

  4. 计算机网络 | 网络层(数据平面)

    文章目录 网络层:数据平面 一.导论 1.网络层服务 2.网络层的关键功能(两者相互配合完成数据传输) 3.数据平面.控制平面 3.1 数据平面(该怎么转发,某个数据这个口进来那个口出去) 3.2 控 ...

  5. Service Mesh中的通用数据平面API设计

    原文地址:https://blog.envoyproxy.io/the-universal-data-plane-api-d15cec7a 作者:Matt Klein 译者:敖小剑 校对:宋净超 正如 ...

  6. 可编程数据平面(论文阅读)

    可编程数据平面 原文 <A Survey on the Programmable Data Plane: Abstractions, Architectures, and Open Proble ...

  7. 【P4论文分享】基于P4的可编程数据平面研究及其应用

    前言 本文是本人学习的笔记,如有错误欢迎指正. 论文下载地址:基于P4的可编程数据平面研究及其应用 本文目录 前言 1 引 言 传统交换机的局限性 如何增强网络开放性? OpenFlow局限性 解决O ...

  8. 第4章 计算机网络自顶向下——网络层:数据平面

    第4章 网络层:数据平面 目录: 目标: 理解网络服务的基本原理,聚焦于其数据平面 网络服务模型 转发和路由 路由器工作原理 通用转发 互联网中网络层协议的实例和实现 提纲: 导论 数据平面 控制平面 ...

  9. 网内计算:可编程数据平面和技术特定应用综述

    网内计算:可编程数据平面和技术特定应用综述 摘要--与云计算相比,边缘计算提供了更靠近终端设备的处理,降低了用户体验的延迟.最新的In-Network Computing范例采用可编程网络元素在数据达 ...

最新文章

  1. linux多用户怎么表示,Linux如何建立多用户
  2. ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
  3. server多笔记录拼接字符串 sql_Java拼接“1亿行字符串”你会遇到什么问题?
  4. LibSVM使用记录 C++ Visual studio
  5. 聚焦一切关联需求-企业数字化转型:外部驱动力之客户篇
  6. suse leap_Ruby程序检查leap年
  7. Go单测测试 — 数据库 CRUD 的 Mock 测试
  8. java 日本时区_java时区时间ZoneOffset, ZoneId,OffsetTime,OffsetDateTi
  9. 基于51单片机的八位流水灯(三种形式)
  10. 一次应对PowerShell+WMI挖矿***的记录
  11. matlab读取trmm,基于Matlab的TRMM3B43数据处理的思维过程与技术流程
  12. 惠普win7驱动_hp打印机驱动如何安装 hp打印机驱动安装方法【步骤详解】
  13. java 中文变拼音包,中文转化为拼音工具包
  14. Windows Server 2016 安装.NET Framework 3.5 错误处理
  15. [Scala基础]--Either介绍
  16. mysql的pv跟pc_PC板PV板PVC板PPV板区别与用途
  17. FF300R08W2P2B11A 汽车用EasyPACK 模块 2 个独立式
  18. 使用ADO创建Excel数据表
  19. 2015_BOE_Chiu2 杜克大学oct数据集
  20. 上海 程序员落户攻略

热门文章

  1. 在Android Studio上魅族手机、华为手机无法打印Log
  2. Computer:正则表达式技术的简介(元字符/普通字符使用字典及其方法总结大全)、相关库介绍、案例应用之详细攻略
  3. Qt学习:QMessageBox(消息对话框)
  4. slf4j MDC使用
  5. 自由手写体字帖pdf_南构不律手写|回忆手写,自由浪漫的飘逸手写体
  6. mysqli_fetch_assoc
  7. 测试驱动开发(TDD)的实践
  8. 新品亮相丨美格智能高性能Cat.1 bis模组SLM332X上市
  9. 基于主从博弈理论的共享储能与综合能源微网优化运行研究
  10. 字体的样式及字体的分类