vxlan转发原理

news2024/11/20 15:39:11

openstack neutron组件也用到了vxlan,还有dvr,在云计算环境到底分布式网关好还是集中式网关好,vxlan对称还是非对称转发好,什么样的控制平面好,要对这些问题得出结论不管怎样先得深刻理解vxlan转发流程。

三层转发就是查路由表转发,云计算环境下一个租户一个vpn,一个vpn对应一个vrf,一个租户很多vxlan,同一vxlan内二层转发,vxlan之间三层转发,而且还有一些vxlan要出公网,分布式网关中有一个网关作为boarder,把云上路由发布出去或者引进外部路由,这个boader主备或者主主多活负载分担。


集中式网关

一个租户一个vpn,简化一下一个租户在openstack neutron上有一个router,这个router就是图中的一个VRF。一个vxlan就是neutron中一个network,有一个vni,一个network只有一个子网,这样跨vxlan转发就是跨了网转发,一个vxlan就是一BD(bridge domain),BD里有MAC转发表,根据MAC做二层转发,BD上有一个bdif接口连接到IP VRF上,流量到这个上去就查路由做三层转发,从其它bdif口出去,就到其它vxlan的BD上了。同时一个BD上还有vxlan tunnel口和vlan口,BD做vlan和vxlan互相转换,一个BD只能有一个vlan id和一个vxlan id,vlan id是本地id,不同节点相同BD上的vxlan id必须相同,vlan id可以不一样。vxlan tunnel是full mesh的,单播报文在BD查MAC找到出口tunnel,tunnel上有源和目的IP,做vxlan encap,然后default vrf出去,vxlan报文来了,解析出vxlan id,根据vxlan id找到BD,在BD里添加vlan tag,然后查MAC转发给本地。对于BUM报文,就是报文目的MAC上BD上没有或者目的MAC比较特殊,vxlan有头端复制或者核心复制,头端复制,由BD复制在所有vxlan tunnel口发一份,vxlan encap的目的IP是远端IP,核心复制就是BD不复制,vxlan encap的目的IP是一个组播IP,由underlay路由器进行复制,underlay得支持组播协议,三层组播协议太复杂了。

VRF中需要路由,BD上需要MAC,假如路由静态配置或者自动生成直连路由,BD上MAC由flooad-learn生成,再加头端复制,vxlan就可以玩转了。但还有个问题,tunnel是怎么建立的,远端IP怎么得来的,图上我把tunnel简化了,而且画在BD上,其实不是这样的,tunnel是所有BD共享的,而且未必需要full-mesh,两个计算节点上的虚拟机没有相同的vni,而且是不同租户的没有三层互通的需求,那么这两台计算节点没必要建立tunnel,BD是共享tunnel的,一个BD一个vni,其实就是vni和tunnel的绑定关系,如果有控制面帮助自动建立tunnel,搞定tunnel和vni的绑定关系,再同步MAC和IP,那么就完美了,下次再写。

左和中间是计算节点,右是网络计算,所有节点都有vxlan encap/decap能力,是VTEP。图中有两个租户,每个租户有两个vxlan,第一个vxlan对应的IP段是192.168.1.0/24,网关是192.168.1.1,子网里有几个虚拟机,第二vxlan对应的IP段是192.168.2.0/24,网关是192.168.2.1。流量跨不跨节点,流量跨不跨vxlan,组合起来就是四种场景,再加流量出外网就是五种场景了。

  • 不跨节点不跨vxlan

图中蓝色的线,本节点BD二层转发。

  • 不跨节点跨vxlan

不存在,要跨vxlan一定得有三层转发,三层在网络节点上,那么一定跨节点了。

  • 跨节点不跨vxlan

图中绿色的线,左和中间BD都进行二层转发。

  • 跨节点跨vxlan

画中黄色的线,左和中间BD二层转发,右三层转发。

  • 出外网

画中紫色的线,中间二层转发,右三层转发。


分布式网关非对称转发

集中式网关的问题就是网关压力太大,所有跨vxlan和出外网的流量都要走网关节点,即使是同一计算节点上两个虚拟机跨vxlan互通流量也要出本计算节点在网关节点上绕了一圈。把网关复制很多份,每个计算节点也放置一份,网关配置一模一样的IP和MAC,网关只对本节点的ARP做应答,对网关的ARP请求不允许从vxlan tunnel口出去,这样同一计算节点跨vxlan就在本计算节点就能搞定了。此时网络节点只保留出外网的功能,网络节点不能再配置网关的MAC和IP,得另外配置一个子网的IP,出外网的流量在计算节点网关做策略重定向到网络节点,这就是neutron vxlan dvr模式。

  • 不跨节点不跨vxlan

图中蓝色的线,BD二层转发。

  • 不跨节点跨vxlan

画中红色的线,本节点两个BD二层转发,VRF三层转发。

  • 跨节点不跨vxlan

图中绿色的线,左和中间BD二层转发。

  • 跨节点跨vxlan

画中黄色的线,2.3和1.5通信,流量从2.3出来,BD2进行二层转发,左节点VRF进行三层转发,到了左BD1,encap BD1的vni转发到中间BD1,再到1.5,流量从1.5回来时,BD1进行二层转发,中间节点VRF进行三层转发,到了中间BD2,encap BD2的vni转发到左BD2,再到2.3。路径不对称,来回encap的vni也不一样。

  • 出外网

画中紫色的线,2.5到8.8,出去时2.5到自己的网关进行VRF进行三层转发,路由重定向到网络节点,还从进来的bdif出,再回到的BD2进行vxlan encap,到了网络节点的BD2,再到网络节点VRF进行三层转发,再做NAT出去了,回来了在网络节点做NAT,VRF转发到BD2,BD2到中间节点的BD2,再到2.5,路径不对称,来回encapR vni一样,路由有点复杂。

分布式网关对称转发

非对称转发跨节点跨vxlan时流量路径不对称,不对称导致有状态的防火墙会把正常流量丢了,流量统计和QOS等功能不好找地方落地,还有一个问题是vni不对称,流量用的vni是目的vxlan的vni,流量去时和回来时vni不一样,所以出现了l3 vni,每个租户一个l3 vni,跨节点跨vxlan转发用l3 vni,走l3 vni的BD,IP VRF中虚拟机的IP用32位精确匹配,用路由控制去l2 bd还是l3 bd,这下把路径和vni不对称问题都解决了。

  • 不跨节点不跨vxlan

图中蓝色的线,BD二层转发。

  • 不跨节点跨vxlan

画中红色的线,本节点两个BD二层转发,VRF三层转发。

  • 跨节点不跨vxlan

图中绿色的线,左和中间BD二层转发。

  • 跨节点跨vxlan

画中黄色的线,2.3和1.5通信,流量从2.3出来,BD2进行二层转发,左节点VRF进行三层转发,走l3 vni的BD,encap l3 vni转发到中间l3 vni BD,再到VRF进行三层转发,中间BD1进行二层转发到1.5,回来相反,每个节点进行了二层和三层转发,相比非对称转发多了一次三层转发。

  • 出外网

画中紫色的线,2.5到8.8,出去时2.5到自己的网关进行VRF进行三层转发,从l3 vni出到网络节点,网络节点VRF进行三层转发,再做NAT出去了,回来了在网络节点做NAT,VRF转发从l3 vni出,到了中间节点的VRF转发回来,路径是对称。(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

对称和非对称比较

非对称方案VRF中路由不需要32位精确匹配,只要bdif上网关IP配置上就能自动生成路由,再额外一条defaul路由把出外网流量导引到网络节点上去,网络节点上有所有vxlan的BD,还得有vxlan中一个IP地址,和网关不同。问题是BD上MAC超级多,要有本vxlan中所有虚拟机的MAC。左和中间两个BD是二层互通的,两个BD上都有网关,网关IP和MAC一样的,那么BD上学习到的网关MAC到底在bdif上还是tunnel口呢,网关MAC出本节点BD时源mac必须替换掉成本vtep的router mac,目的MAC保持虚拟机的MAC,BD上的网关MAC就在bdif口上,对网关arp请求也不能从tunnel口出去。

对称转发需要配置l3 vni,每个节点上VRF连接l3 vni的bdif口配置的IP和MAC都不相同,这个MAC就是system mac或者说是router mac,每个vtep不同,l3 vni转发时内层mac就用这个mac,ip其实可有可没有,有好理解,一个router mac对应一个IP,路由通告时下一跳就是这个mac,l3 vni转发时是这个IP,目的MAC是这个IP对应的router mac,源MAC是本vtep的router MAC。对称转发要求VRF中要有所有虚拟机的路由,VTEP之间一定要能同步IP,还有一条出外网路由到网络节点。网络节点只要有l3 vni就可以。既然VRF中所有路由都有了,那么跨节点不跨vxlan能不能用l3 vni转发呢,其实可以的,网关开启arp代答,本节点IP不代答,tunnel口抑制arp出去,把所有跨节点流量吸引到网关上去,网关做三层转发,这样BD上MAC表就很小了,只要有网关和本BD上虚拟机MAC就行了。

 原文链接:https://zhuanlan.zhihu.com/p/342476389

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

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

相关文章

Java——继承——Extends

继承为什么要继承呢?继承的语法继承的概念子类中访问父类性质Java的单继承super和this子类构造方法protected中super的使用final关键字今天我们来说说面向对象的又一特征:继承!为什么要继承呢? class Dog{public String name;pub…

QT Qmake 笔记

文章目录概述QT修改样式qmake概述库引用和库路径指定QT创建动态库和使用小例子写动态库用动态库参考资料附录概述 需要先安装osg,然后再编译安装osgQOpenGL的插件。 其中,osgQOpenGL是OSG嵌入到qt中的一种实现方式,换言之,能够支…

【小学信息技术教资面试】《认识鼠标》教案

1.题目:认识鼠标 2.内容: 3.基本要求: (1)掌握鼠标的基本操作 (2)体现学生的主体地位 (3)多种教学方法结合使用 (4)配合板书讲解 《认识鼠标》…

C语言学习之路(高级篇)—— 变量和内存分布(下)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 程序的内存分区模型 1) 内存分区 1.1 运行之前 我们要想执行我们编写的c程序,那么第一步需要对这个程序进行编译。 预处理&#xf…

linux进程替换(简介)

一:什么是进程替换? 定义: 进程替换,是指用一个新进程来替换此时正执行的进程。新进程从头开始执行自己的代码。 例子: 我们有一个父进程A,在父进程A中有一个子进程B 一般来说,子进程是执行…

Redis的数据复制

介绍 Redis 的复制 Redis 的复制功能分为同步(sync)和命令传播(command propagate)这两个操作 同步操作用于,将从服务器的数据库状态更新至主服务器当前所处的数据库状态;命令传播操作用于,在…

Java基础1112_包机制_JavaDoc生成文档

目录包机制JavaDoc生成文档方法一方法二包机制 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间; 包语句的语法格式为:package pkg1[. pkg2[. pkg3 …]]; 一般利用公司的域名倒置作为包名;com.b…

二进制搭建k8s集群——部署多master

二进制搭建k8s集群——部署多master二进制搭建k8s集群——部署多master部署master02 节点部署负载均衡在lb01、lb02节点上配置nginx和keepalived两台负载均衡器配置keepalived所有node节点修改配置文件在 master01 节点测试创建pod二进制搭建k8s集群——部署多master 架构说明&…

C~回调函数

还是c的学习啊 一、函数指针 在讲回调函数之前,我们需要了解函数指针。 我们都知道,C语言的灵魂是指针,我们经常使用整型指针,字符串指针,结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体…

win10下docker安装

业精于勤荒于嬉,总是与偷懒做斗争。 很多年了,一直不愿做事情,不愿意想事情。 1、安装 Docker Toolbox -- Install on Windows | Docker Documentation http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/DockerToolbox-…

今年你们赚到钱了吗?

峥嵘的2022年,各位程序员们,你们赚到钱了吗? 今天是2022年12月21日,眼看就快过年了! 今年你们赚到钱了吗?对于我而言,又是一个"窘迫/囧迫"的穷年,有点心慌慌,有…

windows安装Elasticsearch

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是分布式的&#xff…

纷享销客《华东地区新增长专刊》重磅发布

增长,是企业发展永恒的主题。 纷享销客的使命是用创新科技和行业智慧赋能企业增长。在服务超过5000中大型客户的基础上,我们发现,各行各业从营销端到流通端,再到生产端,已然出现了全渠道、全场景、端到端、一体化融合…

【战“疫”案例展】壹点灵心理服务平台——携手抗疫,共克时艰“星光”同行公益项目...

‍网易云信战“疫”案例本项目由网易云信投递并参与“数据猿行业盘点季大型主题策划活动—— #榜样的力量# 《新冠战“疫”——中国数据智能产业最具社会责任感企业》榜单/奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业自2019年底以来,人们的情绪持…

电脑垃圾站刚清空的文件怎么找回?总结了三种方法

当电脑上删除文件后会临时存放在电脑垃圾站中,如果还需要这些文件,还能有“后悔药”,直接在电脑垃圾站里面找到进行“还原”即可,但是当垃圾站的文件刚被清空了怎么办?如何找回文件呢?下面分享三种方法恢复…

赛狐ERP|假期模式补货建议,解决春节备货难题

马上就到春节假期了,有两个让亚马逊卖家特别头疼的难题: 工厂放假停工 拿不到货 尤其今年不同于往年,各种因素的影响让供应商的放假时间特别早,工厂放假停工以及年后生产排期的不确定性,会导致卖家很长一段时间都无法…

activemq安装windows环境,数据订阅与发布,生产者与消费者

官网下载,选择适合本地jdk编译环境的部署包 安装完成后解压到指定目录,目录不要包含中文,否则可能启动不成功。 解压完成后找到指定路径 双击即可运行 ,见到如下界面启动成功 访问本地管理页面http://127.0.0.1:8161/ 输入账号…

SpringBoot全局异常处理

1、异常处理的种类 我大概把一次请求分成三个阶段,来分别进行全局的异常处理。 在进入Controller之前,譬如请求一个不存在的地址,404错误。在执行RequestMapping时,进入逻辑处理阶段前。譬如传的参数类型错误。以上都正常时&…

升级Win11系统卡在了35%怎么解决?

升级Win11系统卡在了35%怎么解决?Windows11是微软开发的电脑的最新操作系统,不少人都会选择更新到Windows11,但是进行更新安装对很多人来讲并不是一件很简单的事情,不少人都在抱怨安装时常常卡在35%或85%,并且带有一个…

Java.Util复习贴

参加了数次竞赛之后,我发现我的瓶颈所在——语法。于是今天来复习一下常用的Java库函数吧。 比赛中用java8还是10我就不care啦,我直看官方最新文档。地址在 https://docs.oracle.com/javase/10/docs/api/java/util/package-summary.html 首先看到java.…