超详细VXLAN分布式网关通信原理,看这篇就够了(主页文章还有对应实验)

超详细VXLAN分布式网关通信原理,看这篇就够了(主页文章还有对应实验)
1.BGP EVPN分布式网关通信原理
 a.VXLAN隧道建立

  同子网互通:

   a.CE1和CE2建立BGP EVPN邻居后,会传递EVPN的Type3的路由,Type3路由包含两部分:前缀和PMSI,前缀携带Originator IP(用于告知对端玩的VTEP IP),PMSI会携带Tunnel Identifier也就是VTEP IP和L2 VNI(用于建立VXLAN隧道和该VNI的头端复制列表)

  跨子网互通(这李介绍IRB情况):

    因为是跨子网并且跨VTEP,所以CE1和CE3上是需要有32位的主机路由(不同的Leaf节点可能连接着相同的网段,所以如果Leaf节点发布的是下属主机IP所在的网段路由,则可能与其他Leaf节点发布的网段路由冲突,进而导致某些Leaf节点的下属主机不可达)

  a.PC1首次和CE1通信的时候,CE1会记录PC1的IP地址和MAC地址进入ARP表项,然后载对应网关下配置:arp host collect enable,用于收集租户侧的的主机信息和生成IRB的路由(包含MAC地址,IP地址,L2 VNI,L3 VNI)

  b.然后通过BGP EVPN邻居将路由传递给CE3,在IP vpn-instance处和Bridge domain下对比vpn-target,决定是否接收路由,RT值对应将IRB路由收下,在路由表生成对应的主机路由,在BD域下生成对应的用于生成ARP抑制表,所以跨子网互通会通过L3 VNI

 b.MAC地址动态学习

   1.当首次有数据包从PC1到CE1的时候,CE1会学习到PC1的MAC地址,BD域(比如Bridge domian 2000等)和入接口(二层子接口),所以此时会记录MAC地址表项和ARP表项。

   2.CE1根据MAC地址表项会生成Type2的EVPN路由(主机MAC地址通告),根据ARP表项生成Type2的EVPN路由(主机ARP通告,用户ARP广播抑制),该路由携带本端EVPN实例的出方向VPN-Target、路由下一跳属性,二层VNI,MAC地址,MAC地址长度

   3.CE3收到CE1的BGP EVPN路由后,首先检查该路由携带的EVPN实例的出方向VPN-Target,如果与本端EVPN实例的入方向VPN-Target相等,则接收该路由,否则丢弃该路由。在接收该路由后。CE3在本地MAC地址表项中添加CE1的MAC地址,出接口不再是某些物理接口,而是对端VTEP地址

 注意:

  1.在第一次CE1和CE3通信时会发送ARP广播来请求CE3的MAC地址,若此VXLAN的广播域太大,会对那些不需要回应此报文的设备增加负担,所以此时可以在CE1和CE3上都开启ARP广播抑制功能。

  2.在开启此功能后,会产生Type2的EVPN路由(主机ARP通告的)不管是CE1和CE3在发送ARP广播时,都会检查本地的表项中是否有对端的MAC地址,如果有的话,会将全F的MAC地址替换成对端MAC地址,这样就将广播ARP变为单播ARP

 c.同子网已知报文转发

  1.CE1收到来自PC1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域,并在该二层广播域内查找出接口和封装信息(查找ARP表,没有对应MAC地址,就发送ARP广播也可能是单播)。

  2.CE1上VTEP根据查找到的封装信息对数据报文进行VXLAN封装,然后根据查找到的出接口进行报文转发。

  3.CE3上VTEP收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层的二层报文。

  4.CE3根据内层二层报文的目的MAC,从本地MAC表找到对应的出接口和封装信息,为报文添加VLAN Tag,转发给对应的主机Host2

 d.同子网BUM报文转发

  1.CE1收到来自PC1的报文,根据报文中接入的端口和VLAN信息获取对应的二层广播域。

  2.CE1上根据对应BD内有一个泛洪表(我自己这样称)发给具有相同VNI的VETP,并进行VXLAN封装。然后将封装后的报文从出接口转发出去。

  3.CE3作为集中复制节点接收到VXLAN报文后,根据UDP目的端口号、源/目的IP地址、VNI判断VXLAN报文的合法有效性。然后依据VNI获取对应的二层广播域,进行VXLAN解封装,获取内层二层报文,再根据二层广播域对应VNI的头端复制列表进行VXLAN封装,此时外层的源IP地址为CE1的VTEP地址,不会影响VTEP间的MAC地址学习。

  4.CE3检查内层二层报文的目的MAC,发现是BUM MAC,在对应的二层广播域内的非VXLAN隧道侧进行广播处理,即:从其他VTEP发来的广播包,不会再发给具有相同VNI的VTEP了,CE3分别从本地MAC表中找到非VXLAN隧道侧的所有出接口和封装信息,为报文添加VLAN Tag,转发给对应的终端PC2。

 e.跨子网报文转发

  CE1属于BD10,CE2属于BD20

  1.不再像同子网一样直接再VTEP建立VXLAN隧道,需要VTEP和Spine(也就是网关所在位置)建立VXLAN隧道

  2.CE1接收来自PC1的报文后,从报文中的vlan id判断从那哪个子接口接收,判断该报文属于哪一个BD域,然后查看目的IP地址,判断是需要进行三层转发,以VBDIF的MAC地址为目的MAC地址,发给VBDIF网关

  3.VBDIF网关查路由表,判断需要进行VXLAN封装,封装上L3VNI,内层IP为PC1和PC2的IP,M源MAC为本端VTEP的MAC地址,目的MAC为对端VTEP的MAC地址,将VXLAN数据包发给CE3

  4.CE3侧VXLAN报文后进行解封装,发现VNI是L3 VNI,进行L3的查表转发,然后够内层报文中的L3中的目的IP地址是PC2的IP地址,查对应的路由表,从VBDIF20发出,然后封装源MAC为VBDIF20,目的MAC为PC2,将数据包发给PC2

  5.CE2根据查找到的出接口和封装信息,为报文添加VLAN Tag,转发给对应的PC2

2.总结

 a.VXLAN隧道建立:

  同子网:通过Type3的EVPN路由的传递,来建立VXLAN隧道

  跨子网:通过Type3的EVPN路由的传递,来建立VXLAN隧道,通过Type2的IRB路由收集主机信息,跨子网直接通过主机路由通信

 b.同子网互访:PC1的数据包发出的时候,先查ARP表,没有对应IP-MAC的映射的话,就发ARP广播(开了ARP广播抑制,就是ARP广播变成单播),然后通过子接口进入对应的BD,查MAC地址表,若有MAC-Port的对应关系就直接转发,没有的话就泛洪(通过头端复制泛洪给对应的VNI的VTEP),然后封装上VXLAN头部(这里是L2的VNI),发给对端CE,解封装VXLAN头部,根据VNI找到对应的BD域,查找MAC地址表,封装后,将数据包发给PC2

 c.跨子网互访(此处IRB型):PC1将数据包发出的时候,发现是跨子网,发ARP请求网关的MAC地址,封装上数据包后,通过子接口进入对应的BD域,将数据包发给对应的VBDIF,解封装数据包,查找对应的路由表,发现下一跳进行VXLAN封装(这里就是封装L3 VNI),发给对端后,解封装,发现是L3 VNI,查对应路由表,然后从对应VBDIF发出,然后封装源MAC为VBDIF的,目的MAC为PC2,将数据包发给PC2

Read more

基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有)。 附: 1

基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有)。 附: 1

基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有)。 附: 1.配套quartus从MATLAB系数生成直到仿真成功(图1和图4)说明文档。 2.配套仿真出波形(图1)的视频。 也可以其他FPGA verilog定制设计 最近在搞FPGA上的FIR数字滤波器设计,不得不说,这玩意儿还是挺有意思的。FIR滤波器在数字信号处理中应用广泛,设计起来也相对简单,尤其是用FPGA实现,灵活性很高。今天就来聊聊怎么用Quartus和Vivado来实现FIR滤波器,顺便分享一下从MATLAB生成系数到仿真成功的整个过程。 首先,FIR滤波器的核心就是它的系数。我们通常会用MATLAB来设计这些系数。MATLAB里有个fir1函数,可以很方便地生成FIR滤波器的系数。比如,我们设计一个低通滤波器,截止频率是0.2π,阶数是20,代码可以这么写: n = 20; % 滤波器阶数 Wn = 0.2; % 截止频率 b = fir1(n, Wn); % 生成滤波器系数 生成系数后,我们可以把这些系数导出到文件中,供FPGA设计使用。MATLAB里可以用dlmwrite函数把系

By Ne0inhk

一、FPGA到底是什么???(一篇文章让你明明白白)

一句话概括 FPGA(现场可编程门阵列) 是一块可以通过编程来“变成”特定功能数字电路的芯片。它不像CPU或GPU那样有固定的硬件结构,而是可以根据你的需求,被配置成处理器、通信接口、控制器,甚至是整个片上系统。 一个生动的比喻:乐高积木 vs. 成品玩具 * CPU(中央处理器):就像一个工厂里生产好的玩具机器人。它的功能是固定的,你只能通过软件(比如按不同的按钮)来指挥它做预设好的动作(走路、跳舞),但你无法改变它的机械结构。 * ASIC(专用集成电路):就像一个为某个特定任务(比如只会翻跟头)而专门设计和铸造的金属模型。性能极好,成本低(量产时),但一旦制造出来,功能就永远无法改变。 * FPGA:就像一盒万能乐高积木。它提供了大量基本的逻辑单元(逻辑门、触发器)、连线和接口模块。你可以通过“编程”(相当于按照图纸搭建乐高)将这些基本模块连接起来,构建出你想要的任何数字系统——可以今天搭成一个CPU,明天拆了重新搭成一个音乐播放器。 “现场可编程”

By Ne0inhk
小米 “养龙虾”:手机 Agent 落地,智能家居十年困局被撬开

小米 “养龙虾”:手机 Agent 落地,智能家居十年困局被撬开

3月6日,小米正式推出国内首个手机端类 OpenClaw Agent 应用 ——Xiaomi miclaw,开启小范围邀请封测。这款被行业与网友戏称为小米 “开养龙虾” 的新品,绝非大模型浪潮下又一款语音助手的常规升级,而是基于自研 MiMo 大模型、具备系统级权限、全场景上下文理解能力的端侧智能体。 作为深耕智能家居领域的行业媒体,《智哪儿》始终认为:智能家居行业过去十年的迭代,始终没能跳出 “被动执行” 的底层困局。而 miclaw 的落地,不止是小米在端侧 AI 赛道的关键落子,更是为整个智能家居行业的底层逻辑重构,提供了可落地的参考范本。需要清醒认知的是,目前该产品仍处于小范围封测阶段,复杂场景执行成功率、端侧功耗表现、第三方生态适配进度等核心体验,仍有待大规模用户实测验证。本文将结合具象场景、量化数据与多维度视角,客观拆解 miclaw 的突破价值、现实挑战,以及它对智能家居行业的长期影响。 01 复盘行业困局:智能家居十年 始终困在 “被动执行”

By Ne0inhk

FPGA新手最容易走偏的10个弯路(干货避坑)

作者寄语:本人多年FPGA技术总监兼高校实训导师,见过很多天资聪颖的年轻人因为方向错误,在入门阶段耗费半年甚至一年时间原地打转。这篇文章不是泛泛而谈的鸡汤,而是血泪总结的实战避坑指南。如果你正在学习FPGA,或者刚入职感到迷茫,请务必花10分钟读完。照着做,你的学习效率至少翻倍。 一、引言:为什么FPGA学习这么难? 很多新手觉得FPGA难,其实不是语言难(Verilog语法比C语言简单得多),而是思维模式没转换过来。 * 软件是顺序执行的,硬件是并行发生的; * 软件有操作系统兜底,硬件出错就是时序违例、亚稳态、毛刺; * 软件可以“跑起来再改”,硬件一旦上板,调试成本极高。 以下这10个弯路,是新手最容易踩的“雷区”。避开它们,你就超越了80%的初学者。 二、FPGA新手必避的10个弯路 ⚠️ 弯路一:只看视频不动手,不上板验证 ❌ 典型症状 硬盘里存了50G的教程视频,从未新建过工程;仿真波形看着完美,就觉得自己学会了;第一次上板:灯不亮、通信不通、时序混乱,瞬间崩溃。  深度解析

By Ne0inhk