The more you know the more you know you don't know

背景

近期在交换机配置中发生了一次接线错误导致交换机环路,从而引发广播风暴的一个例子。所以特意花时间了解一下交换机产生广播风暴的原理,并整理了此篇文章,一来可以梳理自己的知识,二来也希望能通过此文章帮助到你。

01

交换机正常转发请求过程

在搞清楚广播风暴之前,需要先梳理一下在二层网络世界中,数据包是如何被转发的。

正常情况下的网络接线图

访问流程图

访问流程详解

  1. Core Switch收到数据包后,首先查询目的IP是否在arp表中缓存
  2. 若被缓存,则直接将请求转发到对应端口
  3. 若未被缓存,则发起arp广播,问询全部端口
  4. 若服务器收到该请求,则查询是否为本地IP,若是则响应,若不是则直接丢弃该报文
  5. 若是其他交换机(My Switch)收到请求后,先查询是否有arp缓存,若没有,则进行泛洪(将请求转发给除接收口外的其他全部端口)
  6. My Switch连接的服务器收到请求后,同第四步
  7. 交换机收到请求后,将信息缓存后回应该请求

细节

核心交换机收到的响应请求端口为端口40(核心与接入互连在核心端的端口),mac地址为Server的网卡Mac地址

接入交换机收到的响应请求端口为端口13(接入与server互连,接入的端口),mac地址为Server的网卡Mac地址

02

交换机发生环路时细节

异常接线图

访问流程图

发生环路的细节

当核心和接入两个交换机通过两根线相连时,核心交换机发起arp广播时,先由CW1发送给接入的SW1端口,接入交换机收到请求后,又通过SW2端口泛洪回了核心交换机。于是发生了死循环,导致广播风暴。

03

QA

问题1:交换机泛洪指的是什么?

二层交换机收到广播包后,将该请求转发至除接收口外的其他全部端口,在本例中,接入交换机是不会通过SW1端口将广播请求转发给核心交换机

问题2:如何发现交换机环路?

  1. 网络延迟增大。交换机负载增高
  2. 若两交换机之间有两根线互连,则通过交换机端口信息可发现两个端口流量正好相同
  3. 通过抓包可发现大量的广播包

问题3:如何避免交换机环路?

  1. 划分vlan(将两个互连端口分到不同的vlan下)
  2. 交换机端口聚合(将两个端口认为是一个端口)

问题4:为什么一个广播请求导致的交换机环路就能使得网络瘫痪?

因为虽然单个请求量小,但是在交换机高速运转下,也会占用非常多的局域网资源。交换机负载被迅速吃光

问题5:arp表的过期时间默认是多少?

交换机arp表过期时间正确的应答默认20分钟过期,非正常的应答默认3分钟过期(例如无人应答的情况)

问题6:如果一直有正常请求,是否还会更新ARP表?

不会,除非缓存过期,更新ARP表有以下几种情况

  1. 主动发起arp广播,收到对应主机应答时(清空arp缓存、缓存到期等情况)
  2. 收到其他人的广播请求,将源IP源Mac信息更新到本地arp表

问题7:如果mac地址发送改变,交换机如何得知?

mac地址发送改变时,需要重启网卡并通过免费arp广播的方式通知局域网内所有主机更新arp缓存,此时交换机也会更新自己的arp缓存,若该广播交换机未收到,并且该网卡从未向外界发送过数据包,则交换机会一直将数据转发到错误的端口上,导致有损

总结

导致交换机环路的原因很简单,无非就是两个交换机通过两根网线连接后导致的循环转发,但如果想要知道事情是如何发生的,则需要深入了解网络原理,以及数据转发时的细节,正是这些原理和细节的理解,才能在下一次出现相同的问题时,快速定位到问题的root cause,并能举一反三。

迪普交换机清空配置_交换机环路详解相关推荐

  1. 中兴交换机配置telnet连接_锐捷交换机如何配置?一步步详解,交换机配置再也不难了...

    锐捷交换机最近挺火,这段时间不断的有朋友多次提到锐捷交换机的配置,本期我们来了解锐捷交换机的配置.本期内容共分为两部分,第一部分是vlan的基础配置命令,第二部分是锐捷交换机的配置实例,我们一起来看下 ...

  2. 166、锐捷交换机如何配置?一步步详解,交换机配置再也不难了

    本期内容共分为两部分,第一部分是vlan的基础配置命令,第二部分是锐捷交换机的配置实例,我们一起来看下,如何一步步的连接及配置锐捷交换机. 一.连接及远程登陆 用一台计算机作为控制台和网络设备相连,通 ...

  3. 421、锐捷交换机如何配置?一步步详解,交换机配置再也不难了

    一.连接及远程登陆 用一台计算机作为控制台和网络设备相连,通过计算机对网络设备进行配置. 1.硬件连接: 把Console线一端连接在计算机的串行口上,另一端连接在网络设备的Console口上. 按照 ...

  4. 桂林理工大学 计算机网络 实验报告2交换机基本配置和交换机的VLAN配置

     林 理 工 大 学 实  验  报  告 班级   计算机类  学号   3202052   姓名     同组实验者     无      实验名称          交换机基本配置和交换机的VL ...

  5. Win7下SQLite安装配置与使用方法详解

    Win7下SQLite安装配置与使用方法详解 2014-10-08    分类:数据库.编程开发.首页精华2人评论     来源:aehyok 分享到:更多1 前言 SQLite 是一个软件库,实现了 ...

  6. Win7系统Visual Studio 2013配置OpenCV3.1图文详解

    Win7系统Visual Studio 2013配置OpenCV3.1图文详解 OpenCV3.1对硬件加速和移动开发的支持相对于老版本都有了较大改进,支持新的开发工具,更易于扩展,配置方式也比以前简 ...

  7. pycharm导入python环境是空的_PyCharm导入python项目并配置虚拟环境的教程详解

    PyCharm导入python项目并配置虚拟环境的教程详解 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹: 打开了python项目后,需要配置该项目对应的pyth ...

  8. java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...

  9. Spring零配置之@Configuration注解详解

    转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...

最新文章

  1. 关于tomcat无法启动问题详解
  2. qchart画完以后删除_画错了,重新画一幅吧!”这句话对学画画的孩子来说,伤害有多大?...
  3. 织梦直接往数据库写入数据
  4. MyBatis学习总结(7)——Mybatis缓存
  5. 人是不是不应该善良?
  6. Linux基础知识总结一
  7. 双光耦开关电源电路图_开关电源光耦的工作原理及典型接法
  8. usb key 开发(一)
  9. 斗地主中的提示出牌算法(Lua)
  10. Java - Log
  11. 华文行楷字帖欣赏_毛笔行书欣赏,华文行楷在线转换,偏旁部首练字帖,
  12. 解决win10新装系统无法登录微软账户及microsoft store
  13. 获取windows程序界面数据
  14. 前端自学Vue笔记干货(第一版,持续更新中~~~)
  15. Java中对excle的一些操作
  16. 网站使用手机相机_手机如何修改证件照片大小和分辨率
  17. 友好城市(线性dp)
  18. signature=9584e09619c4aa010122e7ad7d4cb4c6,来用百度密语吧!!!
  19. VS2013新建Win32项目改配置x64位 图文详解
  20. 如何用php制作超级玛丽,html5 利用canvas实现超级玛丽简单动画

热门文章

  1. spring学习(39):注入map类型
  2. 第三十七期:如果你这样回答“什么是线程安全”,面试官都会对你刮目相看
  3. 嵌入式开发中模拟SPI的驱动
  4. CSS3属性之text-indent文本缩进使用详解
  5. Django-视图层
  6. Confluence 6 在 Apache 或者系统级别阻止垃圾
  7. centos7下python3与python2共存并且开启py3虚拟环境
  8. 我的物联网项目(十二) 单体应用架构不行?
  9. C# WebApi POST 提交
  10. 笔记:Zygote和SystemServer进程启动过程