【STP】生成树协议及STP 802.1D (下)

1 STP采用 4 Step 来解决二层环路:

1) 在每个交换网络(广播域)中选举一个根桥(RootBridge)
2) 在每个非根桥上选举一个根端口(Root Port)
3) 为每个Segment选举一个指定端口(Designated Port)
4) 阻塞非指定端口(Non-Designated Port)

2 比较原则

交换机之间需要相互交换生成树的协议消息来检测桥接环路,以保证STP工作的正常,该消息称为网桥协议数据单元(BPDU,Bridge Protocol Data Unit), BPDU消息中包含着用于STP选举的各项参数,其中最为重要的是四个字段:RootID、Root Path Cost、Bridge ID和PortID,这四个字段用于各种STP选举。

阻塞端口也会不断收到BPDU,以保证故障发生的时候,仍然可以计算出一棵新的STP。要理解STP的工作过程,非常重要的一点是要理解BPDU中各字段的含义,因为这些都是STP赖以工作的根本。生成树构造一个无环路拓扑时,总是使用相同的4步来判定:

1) 最低Root ID
2) 到根桥的最低Root Path Cost
3) 最低的发送者Bridge ID
4) 最低的发送者Port ID

交换机使用这4步来保存各个端口接收到的“最佳“的BPDU的一个副本。每个BPDU到达时,都会按照这个4步判决步骤来进行检查,看它是否该端口保存的BPDU更优,如果是,则会更新。

当一个交换机开始活动时, 他的每个端口都是每 2s 发送一个BPDU,而当一个端口收到一个比现在发送的更优的BPDU,则本地端口会停止发送,如果在一段时间内 (缺省为Max Age 20s)后他若没收到来自邻居的BPDU,则他将再次发送。因此对于802.1D来说,根桥会不停的向所有接口发送BPDU,而非根桥会从自己的根端口持续收到BPDU,并且向自己的指定端口去中继BPDU,非指定端口是不会发送BPDU的,只会持续侦听。

Root ID也就是根桥的ID,一般来说如果根已经选举出来的话则交换机发送的BPDU根桥ID都一样,所以往往这一个项可能比较不出结果,但是假设有这么一个环境,一台交换机接入一个交换网络,则该交换机初始情况下自己发送出来的BPDU可能Root ID字段填写的就是自己的Bridge ID,当然它也会收到交换网络中泛洪的BPDU,这时候就PK两个BPDU中的RootID,谁更小就更优。

3 详细步骤

1 ) 在每个交换网络(广播域)中选举一个根桥(Root)
 【STP】生成树协议及STP <wbr>802.1D <wbr>(下)
当网络刚开始运行时,所有的交换机都自恋地认为自己是根桥,纷纷发送BPDU,BPDU中当然包含着各自的桥ID,然后进行PK,桥ID最小的交换机成为根桥。在比较的时候先比较网桥优先级,如果大家的网桥优先级都一样,再进一步比较交换机的MAC地址,也是选最小的。注意这里的MAC地址并不是指的交换机的某个接口的MAC,而是它的背板MAC地址。

让MAC地址去最终影响选举过程显然是不靠谱的,所以在项目中我们一定会人为的干预STP的选举,用手工的方式将关键位置的交换机的网桥优先级修改成最小,使得它成为根桥。

2 ) 在每个非根桥上选举一个根端口(Root Port)
 【STP】生成树协议及STP <wbr>802.1D <wbr>(下)
每一个根桥上都有选举一个根端口,而且只选一个。对于STP而言,一切的选举活动都与BPDU息息相关,拿上图中的SW3举例。它有两个端口加入到STP的选举,这两个端口都会收到BPDU,在BPDU中包含着那四个最重要的字段。现在SW3要考试比较这两个BPDU,首先是看RootID,这当然都是一样的都是SW1的桥ID,接下来比到从P1、P2到根的开销,由于P1、P2这两个端口都是100M带宽的端口,因此端口Cost都是19。那么SW3从P1去往根桥的路径开销=0+19,而从P2去往根桥的路径开销=4+19,显然从P1走要更优,因此比较到这一步就PK出了结果,P1胜出成为SW3的根端口。

3 ) 为每个Segment选举一个指定端口(Designated Port)
 【STP】生成树协议及STP <wbr>802.1D <wbr>(下)
在每一个段上选举一个指定端口,指定端口负责向这个网段泛洪来自根桥的BPDU。根桥的所有端口都是指定端口,都不会被阻塞。所以上图中根桥直连的两端链路中,指定端口DP就已经选举出来了,就剩下SW2-SW3直连的这段链路,要PK一下。首先我们知道的是两者都会收到对方发送来的BPDU,SW3会收到SW2从P2接口发出的BPDU,SW2也一样。同样是四个步骤的PK,先比RootID,这个相同,再比较到根的Cost,SW2发送给SW3的这个BPDU中Root Path Cost字段值为4,而SW3发给SW2的BPDU中Root Path Cost字段值为19,显然是SW2的P2端口距离根桥更近,因此它胜出,成为这段链路的制定端口,而SW3的P2也就是非指定端口。

4 ) 阻塞非指定端口(Non-Designated Port)
 【STP】生成树协议及STP <wbr>802.1D <wbr>(下)
在根端口、指定端口都选举出来之后,非指定端口也就定下来了,非指定端口将最终被STP阻塞。所谓的阻塞,指的是软件意义上的阻塞,也就是把嘴堵上,不让说话了,当然这张嘴还是有说话的能力的,当STP检测到拓扑变更的时候,例如SW3连接SW1的接口DOWN掉了,那么它又会自动把原先被阻塞的端口恢复,又开始让它说话了。

4 注意事项:

  • 根桥的角色是可抢占的
  • Bridge ID中的MAC地址,是交换机的背板MAC,查看交换机上的所有MAC,使用命令:show interface | include bia ,二层交换机的端口MAC就在这了:)




红茶三杯

网络工程 | 项目管理 | 技术培训
学习 沉淀 成长 分享

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值