斜体为读者提问:
今天把公司网络搞挂了5分钟左右,现在想想应该是网络风暴。事情是这样的,我首先在服务器上用brctl命令添加了一个网桥br0,然后把服务器的两块物理网卡eth0和eth1加入了该网桥中,添加过程中我发现终端上显示两块网卡开启了混杂模式,然后重启网络,结果我的终端几乎每隔一秒不到就显示网桥br0的一大串刷屏信息,然后同事反应他的服务器还有ftp存储服务器等都不能用了,直到我把网桥br0给down掉。
正文
我画了一个示意图:
主机上创建了一个网桥(Bridge),名称为Br0,其实就是一个软件交换机。
从其中的一个接口接收到的帧,比如eth0,如果帧的目的MAC = Un-known MAC或MAC =广播地址,都会无条件转发给其它网桥接口,比如这里的eth1。
那么这个问题就变成了两台交换机,中间用两根网线相连,形成了一个物理环路。由于网桥BR0没有开启生成树STP,所以任何广播报文都会造成广播风暴。
当广播风暴发生时,物理交换机疲于转发环路的广播报文,CPU瞬间飙升至100% ,来不及处理其它报文,所以连接到该交换机的用户或服务器都会失去网络连接。
正确的做法
方法一:BR0上开启STP
那么ETH0、ETH1接口有一个会被STP逻辑关闭,自然就没有了物理环路。
方法二:用Ethernet Channel的方法将两条链路绑定成一条逻辑链路
任何一条物理链路的断开,都不会影响该主机SVI= 10.3.0.235访问网络。
尽管有两根链路,但是入向只能使用其中的一根物理链路;出向可以使用两根物理链路做负载均衡。
如果不用上述方法,读者朋友这种配置方式用在什么地方?
如果Eth0、Eth1连接交换机不同VLAN的端口,也不会引起环路,会正常工作。
此时Br0充当两个VLAN之间的流量桥梁,可以对流量进行过滤检查工作。此外,也可以利用BR0来完成流量数据的在线备份工作。
如果网络里没有物理交换机,BR0可以充当交换机来使用。Eth0、Eth1接口分别连接一台主机,只要主机在同一个网段,就可以正常通信,和接在物理交换机上没有什么区别。
领取专属 10元无门槛券
私享最新 技术干货