为什么说二层域范围太大会导致生成树无法收敛!

 

 

上半年的时候在百度贴吧看到了一个求助帖子,话不多说了,我直接上图吧

配文:求助~

做毕业设计 在核心层做了dhcp服务,可是下面的pc机不能获得正确的动态地址 该怎么弄啊(所有交换机都做了trunk 老师说 核心层做trunk的话,汇聚层就不用做中继了 )

图片

图我们就不细看了,我们可以看一下这个毕业生的思路:

1、他设计了一个核心—汇聚—接入三层架构的网络,在核心设备上做互联网出口;

2、他想在核心设备上做一个DHCP的服务,但是可能他不会做“DHCP中继”,所以核心设备上挂DHCP服务器,导致接入层下面的PC和AP都得不到IP地址;

所以他把毕业设计贴到贴吧上来求助。

在这种三层架构的网络中,下挂有大量PC的场合把DHCP服务器集中设置在核心位置的DHCP服务器上是否有问题,这都还值得商榷。(这个我们后续文章再说关于DHCP部署位置的问题)就这个老师的提议:老师说 核心层做trunk的话,汇聚层就不用做中继了。而这句话(核心层做trunk的话,汇聚层就不用做中继了)要是真的落实下来,那可真就成了搞破坏了。

 

我们先来看一下,如果核心和汇聚之间做Trunk,且网关都做在核心设备上,这个网络会变成一个什么样子:

图片

可能各位读者也看出来了,这是一个非常大且复杂,有一个四边形和一个三角形重叠的环路,造成广播风暴的风险特别大。所以在这种三层架构的网络环境中,把网关全部集中在核心设备上,这是一种搞破坏的做法,绝对不可取。

 

可能又有人会跳出来了,他们会说:“不是有生成树协议嘛!在核心设备上设置成根桥,这不就有端口被阻塞,这个广播风暴的风险不就避免了吗?”

 

这下子又会有一大群人跳出来反对我的说法。因为他们会根据教材上的资料,来开始说话了。他们会说,生成树协议一开始是把接口置为阻塞状态,然后只发送BPDU报文,直到选择出根桥、根端口(RP)、指定端口(DP)以后,形成了逻辑无环的结构以后,RP、DP才会置为Forwarding并开始转发数据。

 

这么说其实也没问题,很多人太相信生成树的“效果”,也正是相信了生成树这样的一个先阻塞,再学习,再转发的机制。但是,他们却忘了三个很重要的前提:

 

(1)生成树协议在整个网络中选择根桥的时候,每台交换机都会先“假定”自己是根桥,然后再BPDU报文中的“根桥字段”填写自己的桥ID,直到收到对方交换机传来的BPDU报文,进行桥ID比对以后,确认谁的桥ID最低,这样才能选择出真正的根桥。这个过程,效率会特别低。(这个最小的桥ID是人为配置的,或者交换机的MAC地址决定的,不是网络自行决定的。)

图片

 

(2)根桥上的所有端口都是指定端口。一旦一个交换机的角色成为“根桥”,那它上面的接口都将是指定端口,而指定端口的最终状态必将成为“转发Forwarding”状态。

(3)交换机只有在配置发生改变(修改了桥ID、优先级),还有拓扑发生变化时(增加、减少交换机或互联接口UP/Down)时会发送BPDU,一旦一台交换机迟迟收不到其他交换机的BPDU报文,则它会认为自己就是根桥,则大约30s以后,它上面的接口将全部进入到转发状态,如果是在一个环状网络中,这很危险。

 

如果说,在一个三角形的结构中,所有的交换机都与预定根桥(一般都是管理员指定)直连,此时BPDU在交换机之间相互学习,效率还不算低。此时,可以很快选择出根桥、RP、DP。

图片

如果说,网络中出现了一台没有和根桥直连的交换机,则在选举根桥,根端口、指定端口的时候,还需要多考虑一个“根路径成本”,即不同的链路带宽根路径成本不一样,还要进行比较,又会进一步降低效率。

 

那么回到刚才的话题上来,为什么说文章之前的网络结构,生成树无法收敛?

在这里要先说一点,因为网络是“正在使用”的环境,除了BPDU要通过网络传递,还要传递的还有正常的业务数据。

图片

网络中除了BPDU以外,还有更多流量的正常业务数据,会导致各个链路的延迟各不相同。对于使用UDP、组播方式传递的BPDU报文,优先级又会进一步降低。导致每台网络设备收到的BPDU的时间就会有较大的错乱。于是,就有可能在某一个时间段,核心与汇聚交换机之间的四边形结构中,出现几秒的接口全部Forwarding的情况。也就这几秒钟的时间,足够让网络流量将这个二层环路瞬间打满流量,进而接口上发送拥塞。如下图所示:

那么,要用到生成树的网络,需要怎么接?

 

生成树协议的计算能力非常弱鸡,如果不按照规范,随心所欲地规划二层网络结构,就很容易导致生成树无法计算出正确的指定端口或根端口,进而导致无法控制广播风暴。所以,为了便于生成树的计算,以及流量的管理,二层网络结构要求每三台交换机,两两连接成三角形的结构。

图片

或许有人考虑着:“反正冗余链路多多益善,接入交换机只有一条链路冗余不够,我再在接入层交换机之间再接一条链路!”

于是我就明确告诉你吧:这种做法是错误的!它破坏了生成树计算的最佳结构,使得二层通道打得太大,会造成生成树无法成功计算完成的后果。

图片

其实,接入和汇聚之间只需要多一条冗余链路就够了,因为两条链路同时中断的概率实在太低了。除非是管理员失职,一条链路断了,拖那么一两年才想起来去换。

 

如果你真的害怕接入—汇聚之间只有一条冗余链路太少的话,也可以考虑在接入—汇聚之间做链路捆绑,不过考虑到接入层和汇聚层的设备大概率会是不同厂商,也很少有人这么做。

 

当二层的结构设计为三角形以后,下面的任务也就简单了。

图片

当然,在目前这种多个VLAN存在的网络环境中,生成树的单位是“VLAN”而不是整个交换机,所以生成树的类型也一般是PVST或MSTP,它们的共性都是:每个VLAN使用一个生成树。所以在有些场合中,针对不同的VLAN设置不同的根桥,把流量引入不同的汇聚交换机,从而达到一个流量负载分担的效果。

图片

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值