泛洪:
泛洪(Flooding)是交换机和网桥使用的一种数据流传递技术,将从某个接口收到的数据流向除该接口之外的所有接口发送出去。

泛洪的过程
交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写 入MAC地址表中。交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。

问题描述:


交换芯片bcm53134上挂ARM1和ARM2两个平台。Port口连接对应上图。
发送端 Arm1通过组播发包,接收端arm1发现丢包情况。
细节请参考udp包箭头指向
Bcm53134端口状态:与arm2连接的是100M ,其他端口都协商为1000M
网络中udp组播包最大32k
通过监控port1 的 TxBroadcastPkts arm2也发了udp组播包。

将发送端arm2接上笔记本抓包发现port1也能收到udp组播包,初步判断是flooding导致的,而且该port1端口协商后为100M的网络带宽,由于udp数据包较大较多超过了带宽,该端口处理异常导致交换芯片内部拥塞。

解决方式一

建立mac映射表,单个mac地址验证:
相关寄存器如下:
组播端口控制寄存器,我们将[11:10] 写入 2‘b10 ,即只比对MPORT_ADD5的地址,frame的mac地址相符则转发到MPORT_ETYPE5所置位的端口。

MULTIPORT_ADDR5的[47:0] 写入组播mac地址0x01005E010101 (224.1.1.1)
MPORTVEC5 [8:0]置1的位为符合mac地址的帧会转发到该端口。
代码如下:

设置单个组播地址,证实有用ulData = 0x0800;BCM53134SpiWrite(byPort, 0x04,0x0e,(unsigned char *)&ulData,2);ullData = 0x01005E010101; BCM53134SpiWrite(byPort, 0x04,0x60,(unsigned char *)&ullData,8);ulData = 0x04;BCM53134SpiWrite(byPort, 0x04,0x68,(unsigned char *)&ulData,2);

上述方式只针对单个组播地址有效。ADDR5寄存器对应的是port5,正是连接arm1的端口。

解决方式二

建立arl 组的方式,这种方式可以容纳多个mac地址
arl写mac控制寄存器。rwctl的0位写0,bit7写1

arla_fwd_entry0的[8:0]写要转发该mac包的端口置1.

 ullData = 0x01005E010101; //224-239.1(7bit 0-127).1(8bit 0-255).1(8bit 0-255)for(i = 0; i < 512; i++){       BCM53134SpiWrite(byPort, 0x05,0x10,(unsigned char *)&ullData,8);ullData += 1;}ulData = 0x1c004;BCM53134SpiWrite(byPort, 0x05,0x18,(unsigned char *)&ulData,4);ullData = 0x01005E010101; ulData = 0x80;for(i = 0; i < 512; i++){      BCM53134SpiWrite(byPort, 0x05,0x02,(unsigned char *)&ullData,8);BCM53134SpiWrite(byPort, 0x05,0x00,(unsigned char *)&ulData,2);ullData += 1;}

忘entry0写入了512个组播地址,当查找到对应mac的帧会转发到page0x05 offset 0x18设定的端口。

补充,关于组播地址:

算法:
(224-239,1-128(7bit),0-255(8bit),0-255(8bit))
最笨的方法,也是最安全的方法,就是把IP地址,换成二进制数。再把二进制换成16进制,第1个8位(从左往右看)不用,因为有组播MAC的限制已经规定是0100.5E开头,

第2个8位中的第1位规定为0(从左往右看).所以当不为0时,要改成0来换算。

Example:

源IP 224.1.1.1

换算成二进制 11100000.00000001.00000001.00000001

再换成16进制 01 .01 .01

加上组播MAC头 0100.5E

最后形成: 0100.5E01.01.01

可用的其它31个组播IP地址:

224.129.1.1

225.1.1.1 225.129.1.1

226.1.1.1 226.129.1.1

227.1.1.1 227.129.1.1

228.1.1.1 228.129.1.1

229.1.1.1 229.129.1.1

230.1.1.1 230.129.1.1

231.1.1.1 231.129.1.1

232.1.1.1 232.129.1.1

233.1.1.1 233.129.1.1

234.1.1.1 234.129.1.1

235.1.1.1 235.129.1.1

236.1.1.1 236.129.1.1

237.1.1.1 237.129.1.1

238.1.1.1 238.129.1.1

239.1.1.1 239.129.1.1

加上:224.1.1.1 刚好32个。

源IP 224.132.1.1

换算成二进制 11100000.10000100.00000001.00000001

第24位为0 11100000.00000100.00000001.00000001

再换成16进制 04 .01 .01

加上组播MAC头 0100.5E

最后形成: 0100.5e04.01.01

可用的其它31个组播IP地址:

224.4.1.1

225.4.1.1 225.132.1.1

226.4.1.1 226.132.1.1

227.4.1.1 227.132.1.1

228.4.1.1 228.132.1.1

229.4.1.1 229.132.1.1

230.4.1.1 230.132.1.1

231.4.1.1 231.132.1.1

232.4.1.1 232.132.1.1

233.4.1.1 233.132.1.1

234.4.1.1 234.132.1.1

235.4.1.1 235.132.1.1

236.4.1.1 236.132.1.1

237.4.1.1 237.132.1.1

238.4.1.1 238.132.1.1

239.4.1.1 239.132.1.1

加上224.132.1.1,刚好32个。

bcm交换芯片组播泛洪问题处理相关推荐

  1. Aruba无线网络广播和组播泛洪控制

    问题:两台连接了Aruba的无线网络的计算机,其中一台发送组播泛洪包,另一台无法收到 参考:Optimizing VLAN Broadcast and Multicast Traffic 如图:勾选后 ...

  2. 广播泛洪_这三种类型的报文,交换机会进行泛洪:广播、组播、未知单播

    随着互联网的发展,各种应用层出不穷,日新月异,对网络设备的要求也越来越高,对广大设备厂商也提出更多的要求.不过这些事情都与二层交换机没有关系:) ,因为各种应用的数据到达二层交换机时,都只会变成一个一 ...

  3. 交换机组播风暴_cisco交换机风暴控制

    理解风暴控制 大量的广播, 单播或组播数据包, 当端口收到一个数据包风暴发生时, 转发 这些数据包可能会导致网络变慢或超时. 风暴控制配置交换机作为一个整体, 但 都是基于每个端口的上运作.默认情况下 ...

  4. 交换机组播风暴_【交换机】交换机如何配置storm-contro风暴控制

    功能简介 当内网的突发流量后或流量很大时,交换机会对流量进行控制,降低流量保证内网的数据通信流畅. 但是在无盘环境里,无盘服务器之间的数据传输量很大,所以在无盘环境里建议关闭风暴控制,保证无盘系统的正 ...

  5. 交换机组播协议-二层组播/三层组播总结

    一.组播介绍: 组播技术解决的是以最小的网络开销实现单点发送,多点接收的问题.就实现点对多点数据传输问题,比广播/单播传输更高效,更能节省网络带宽,降低网络负载. 当ip网络中某Rx主机需要接收信息时 ...

  6. BCM交换芯片之L4分析

    1 ContentAware processor 1.1 各厂家的L4功能 交换芯片ACL功能在不同的厂家中有不同的叫法,BCM称为ContentAware processor,Marvell称为Po ...

  7. 交换机组播风暴_广播风暴的成因以及解决办法有哪些?

    广播风暴就是因为以太网中出现了明环或暗环,引起广播包被指数涨速递增,整个网络流量被广播包占据,其他的转发业务不能进行. 以太交换机对广播包的处理,是不管从哪个端口收到广播包,都完整地复制一份转发到其他 ...

  8. 交换机组播风暴_用思科交换机杜绝局域网广播风暴

    网络广播可以为公司的网络带来巨大的流量.当一个设备发出了一个单独 的广播的时间,子网的所有设备甚至虚拟局域网都可以收到广播的内容. 怎么对广播进行管理,以保证网络的安全有效性 ? 一种方法是采用思科提 ...

  9. 组播基本概念、IGMP、IGMP监听学习笔记

    前言 一直对组播这个概念迷迷糊糊,特别是交换机处理组播的方式,非常想搞懂但是懒癌发作.这几天终于耐心地看了下有关组播的资料,大致了解了一下同一广播域内组播的相关知识.组播占了计算机网络的一大部分,特别 ...

最新文章

  1. DB2load遇到SQL3508N错误
  2. 一次想不到的Spring事务失效问题跟踪(事务不会滚)
  3. notepad++ 换行技巧 log换行
  4. execve系统调用_《操作系统》知识结构
  5. python变量进阶(可变不可变,局部变量和全局变量)
  6. HDU - 4547 CD操作(LCA模板)
  7. 计算机应用考试其一级属于中级,计算机软件水平考试可以直接考中级吗?
  8. Sublime text 2按Ctrl+`无法调出console的可能问题
  9. Docker的主要作用
  10. 只读的泛型集合(IList(Of T))
  11. linux nvme 驱动 版本,Linux 上的 NVMe
  12. 动手动脑(Java)
  13. Android小项目--2048小游戏
  14. eclipse svn插件安装总失败 每次打开eclipse总提示 subversive svn connectors
  15. 安卓仿苹果键盘输入法_仿ios输入法
  16. java贪吃蛇程序v1
  17. Android 平台 Native 代码的崩溃捕获机制及实现
  18. latex 参考文献没有显示_LaTeX 中的参考文献
  19. springboot+英语在线学习系统 毕业设计-附源码211714
  20. python基础训练—数字

热门文章

  1. python重复元素的统计
  2. window10 android studio连接不上夜神/mumu/蓝叠模拟器
  3. 小i智慧学堂复旦开讲人工智能时代运营管理创新
  4. Hadoop ViewFs的多Replication模式:Nfly link模式
  5. WPF(C#) LinearGradientBrush线性渐变画刷
  6. 实现table表格循环逐条高亮
  7. 每周一荐:卡农,Google Bookmarks
  8. 阿里云 EMAS Serverless 升级发布
  9. 抖音在发作品前怎么养号-刚注册养号注意事项
  10. 使用PyTorch实现验证码识别