生成树
STP(Spanning Tree Protocol 生成树协议):所有生成树协议都在通过发送信息比较信息进行选举,找到环路中应该被关闭的接口(接口阻塞);发送的比较信息称为BPDU,网桥协议数据单元。
泛洪:当交换机收到某一个数据帧时,交换机会从该VLAN本交换机除进入接口外所有的接口转发该数据帧的过程。
为了保证交换网络高可用性,在交换机之间使用冗余链路,由于网络中的泛洪机制可能造成二层的桥接环路,会导致:
? 1、广播风暴;
? 2、Mac地址表的不稳定;
? 3、数据帧的重复拷贝;
二层广播风暴:主机A给主机C发送了一个ARP广播帧,1交换机广播给2交换机,2交换机又会广播发送给交换机1,如此循环;重复循环发送同一个数据帧会在不同的接口处刷新同一条Mac地址映射,会导致Mac地址表不稳定;每当1发出的数据帧被循环一次,主机C都需要回复一个数据,数据帧重复拷贝;
1、生成树协议的类型
- STP(标准生成树协议,又称802.1D);
- RSTP(快速生成树协议,又称802.1W);
- MSTP(多生成树协议,又称802.1S);
思科:802.1D:PVST(per-VLAN spanning tree:基于VLAN的生成树协议);802.1W:PVRST+(基于VLAN的快速生成树协议)。基于VLAN是一个VLAN生成一棵树;
cisco: ?
如图:
? PVSTP,PC0传输数据时,走Switch0–Switch1之间链路;PC1传输数据时,走Switch2–Switch1之间的链路;每一个VLAN建立一棵树;缺点:当一个交换网络中存在的VLAN较多时,就会有过多的树,占用过多资源;
2、802.1D ;标准生成树
BPDU :网桥协议数据单元,分为配置BPDU–config-BPDU和拓扑变更BPDU–TC-BPDU;
网络初步搭建的时候,交换机之间使用config-BPDU来生成树;构建完成后如果网络结构发生变换,则使用TC-BPDU来重新修改生成树。
BPDU(Bridge Protocol Data Unit)的数据结构:
华为: 思科:
-
Protocol ID:2字节,标识数据帧是一个BPDU的数据帧; -
Version:1字节,BPDU版本;STP为0,RSTP为2,MSTP为3; -
Message type: 2字节,信息类型,代表着BPDU 的类型 (0X00 配置 0X80 拓扑TC);
- 0x00:STP的Configuration BPDU
- 0x80:STP的TCN BPDU(Topology Change Notification BPDU)
- 0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)
-
Flags :1字节,标记位,在802.1D 中,用于标识BPDU 是拓扑变更BPDU还是拓扑变更确认BPDU;
- 0 bit(左边、高位bit)表示 “ TCN(拓扑变更BPDU) ”;
- 最后一位 7 bit(右边、低位bit)表示 “ TCA(拓扑变更确认BPDU) ”;
-
Root ID :8字节,根标识符,用于标记一颗树的树根。与根网桥的BID 一致。 -
Cost of path : 4字节,路径开销。在华为设备中,称作 RPC (root path cost 根路径开销)。 -
Bridge ID :8字节,网桥标识符, BID , 用于标识本设备在本生成树的唯一性。 -
Port ID :2字节,端口标识符, PID ,用于标识设备上某接口的唯一性。 -
Message age :2字节,在思科中默认为30s,就是对应的MAC地址条目的老化时间,(但实际上该时间为此BPDU 经过的跳数);华为中,代表着该BPDU传递的跳数,最大20跳(默认值为0,每经过一台交换机 值+1)
- Max-hop :默认为20 ,收到BPDU之后 将message age中的时间与max-hop进行比较,若小 于,则正常使用该BPDU ,若大于,则忽略BPDU;
-
Max-age : 2字节,最大时间,可以理解为hello包的超时时间。默认时间为20s ;------ 第一个状态的切换时间; -
hello time: 2字节,默认为2s ,BPDU 发送的间隔; -
Forward delay : 2字节,转发延时,端口状态切换等待的时间,默认为15s;
BID:
? BID 组成:BID优先级字段(4bit)+ 扩展系统ID(12bit)+ Mac地址(6字节,48bit);
? BID用来选举根网桥;MAC地址使用来保证BID的唯一性;
? BID 作用: 1、比较BID优先级 ;2、比较MAC地址;
? BID 优先级: 4 bit,默认值为32768(1000) ,范围0-65535(实际范围0-61440[1-14,默认为8]),越小越优。BID 优先级单位4096.调整BID优先级时值必须为4096的倍数;
? 扩展系统ID: 8 bit,在802.1D和802.1W 无意义,在802.1S中有用的;
? Mac地址: 为交换机背板地址池中所有MAC地址中最小的,MAC地址越小越优;
PID:
? PID:端口标识符;2个字节组成,
? PID 组成:PID优先级(4bit构成)+端口标识符(12bit构成);
? PID 作用:1、比较PID优先级;2、Port number;
? PID 优先级 :默认值为128,范围0255(实际使用范围0240),单位16;
? 端口标识符(Port number):标识交换机接口唯一性;
RID:根ID;最优质的BID
RPC:
? 华为:
? 802.1T 标准,cost范围0-2000000
? COST = RPC + PC
? COST: 开销值
? PC:path cost 路径开销;
? RPC:root path cost 根路径开销
不同交换机计算链路对应的RPC值也不相同
? 思科:
? 802.1D-1998
? 10G----- 2
? 1G ------ 4
? 100M—19
? 10M-----100
? 不同带宽的链路使用不同的cost (该cost值是内部编码的),非线性过程。
修改Cost值的计算方法:
[sw 1]stp pathcost-standard ?
dot1d-1998 IEEE 802.1D-1998
dot1t IEEE 802.1T
legacy Legacy
修改交换机的Cost值计算方法需要非常谨慎,如果需要修改必须保证交换网络中所有设备的STP设备使用的计算方法一致;
端口状态:
1、disable —关闭状态1、关闭生成树协议;2、接口物理关闭;
2、blocking —阻塞状态;不能发送BPDU,可以接受BPDU,不能发送和接送和数据;
3、listening —监听状态;可以发送、接收BPDU,不能发送和接收数据;(进行生成树选举)
4、learning —学习状态,可以发送BPDU,不能发送和接收数据;(学习Mac地址表) —目的:限制未知单播帧的泛洪;
5、forwarding —转发状态;可以发送并接收BPDU和数据帧;
最终状态:blocking、forwarding
?
端口角色:
1.根端口 (RP:Root Port),存在于非根网桥之上,一个非根网桥仅有一个根端口,用于接收来自于根的 BPDU;
2.指定端口(DP:Designated Port),在一条链路中有且仅有一个,用于转发BPDU;
3.阻塞端口(NDP:Not Designated Port)被逻辑上关闭的接口;
生成树选举:
1.选举 根网桥 (标识一颗树,在一个生成树中有且仅有一个)
? 选举规则: 最小的BID(先比较BID优先级,再比较MAC地址)
2.选举端口角色
? 选举根端口:1.接口最小的开销值(RPC+PC)2.最小的BID(发送方的) 3.最小的PID(发送方的)
? 选举指定端口:1.本设备根端口到根网桥的开销值最小的交换机上的接口 2.最小的BID(本交换机)3.最小的PID(本设备)
? 园区网分层结构
? 出口层(OR):广域网接入;出口策略;带宽控制;
? 核心层(CO):高度转发;服务器接入;路由选择;
? 汇聚层(GS):流量汇聚;链路冗余;设备冗余;路由选择;(策略控制)
? 接入层(AS):用户接入;接入安全;访问控制;
配置:
华为交换机默认的配置模式不是标准的802.1D生成树协议;
选择生成树的类型:
[Huawei]stp mode ?
mstp Multiple Spanning Tree Protocol (MSTP) mode
rstp Rapid Spanning Tree Protocol (RSTP) mode
stp Spanning Tree Protocol (STP) mode
[sw1]stp mode stp #使用标准生成树协议;
Info: This operation may take a few seconds. Please wait for a moment...done.
查看STP协议中的信息(BPDU):
[sw1]display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge :32768.4c1f-cc79-32e5
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC :32768.4c1f-cc5c-02af / 400000
CIST RegRoot/IRPC :32768.4c1f-cc79-32e5 / 0
CIST RootPortId :128.5
BPDU-Protection :Disabled
TC or TCN received :41
TC count per hello :0
STP Converge Mode :Normal
Time since last TC :0 days 0h:12m:22s
Number of TC :9
Last TC occurred :Ethernet0/0/5
查看已启动接口状态:
[sw1]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
0 Ethernet0/0/2 DESI FORWARDING NONE
0 Ethernet0/0/3 DESI FORWARDING NONE
0 Ethernet0/0/4 DESI FORWARDING NONE
0 Ethernet0/0/5 DESI FORWARDING NONE
0 Ethernet0/0/6 DESI FORWARDING NONE
[sw2]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 ALTE DISCARDING NONE
0 Ethernet0/0/3 ALTE DISCARDING NONE
0 Ethernet0/0/4 ALTE DISCARDING NONE
0 Ethernet0/0/5 ALTE DISCARDING NONE
0 Ethernet0/0/6 ALTE DISCARDING NONE
#在华为802.1W中将阻塞端口分为两种,一类叫做备份,另一类叫做替代;
修改BID优先级:
[Huawei]stp priority ?
INTEGER<0-61440> Bridge priority, in steps of 4096
[sw1]stp priority 28672 #将sw1的BID优先级修改为28672;
同样也可以指定root和备用root(将接口优先级设定为0和4096):
[sw1]stp root ?
primary Primary root switch
secondary Secondary root switch
[sw1]stp root primary
[sw1]stp root secondary
修改接口cost值:
[sw1]interface GigabitEthernet 0/0/1
[sw1-GigabitEthernet0/0/1]stp cost ?
INTEGER<1-200000000> Port path cost
修改接口PID的优先级:
[sw1-GigabitEthernet0/0/1]stp port priority ?
INTEGER<0-240> Port priority, in steps of 16
关闭监听对话:
[sw1]user-interface console 0
[sw1-ui-console0]idle-timeout 0 0
802.1D工作过程简述:
? 当交换机接口启动STP协议后,有disable状态切换至blocking状态;等待20s之后,由blocking状态切换至listening状态,进行生成树的选举;选举产生根端口、指定端口和阻塞端口;阻塞端口有listening状态切换至blocking状态;根端口和指定端口则等待15s(Forward delay)后,由listening状态切换至learning状态;进行Mac地址的学习,建立Mac地址表;之后等待15秒之后由learning状态切换至forwarding状态;收敛完成。
? 在交换机初次进入learning状态时,所有交换机都会发送config-BPDU,进行根网桥、根端口、指定端口、阻塞端口的选举;当收敛完成时,只有根网桥会继续发送config-BPDU,对树中非根网桥进行信息的传达;指定端口负责将根端口收到的BPDU进行转发,转发的BPDU会将其中的BID替换为自己的BID,RTC值会修改为转发交换机的RTC值(标准是802.1T);
802.1D 重新收敛:
? 重新收敛是指网络已经收敛完成,当网络结构发生变换时,由链路状态出现故障的直连交换机;在链路根端口所在交换机一直向根网桥发送TCN-BPDU(网络拓扑变更BPDU),直到收到根网桥回复的TCA(网络拓扑变更确认BPDU)才会停止,之后会由根网桥统一下发配置BPDU进行收敛;
*STP协议工作全过程:
STP通过4个步骤来保证网络中不存在二层环路。
- 在交换网络中选举一个根桥(Root Bridge,RB )
- STP的计算需要一个参考点,而根网桥(root交换机)就是这个参考点,它是STP经计算得到的这棵无环的树的树根。
- 桥ID最小的交换机将成为根桥。
- 对于一个交换网络而言,正常情况下只会存在一个根桥。
- 如下图所示,SW1、SW2及SW3的桥优先级都是32768,因此MAC地址最小的SW1成为网络中的根桥。
- STP的正常工作依赖于该协议所使用的报文的正常交互,这种报文就是BPDU (Bridge Protocol Data Unit,网桥协议数据单元),BPDU中
包含着几个重要的数据(根ID、RPC、网桥ID、桥ID),这些数据是STP进行无环拓扑计算的关键。
- 选举指定接口(Designated Port, DP )
- STP将在每个网段中选举一个指定接口,这个接口是该网段内所有接口中到达根桥的最优接口。并且,指定接口还负责向该网段发送BPDU。
- 对于非根桥而言:
- 首先,所有接口中收到最优BPDU的接口将成为该设备的根接口(根ID->RPC->网桥ID->接口ID),
- 然后,该非根桥使用自己接收的最优BPDU为本设备上的其他接口各计算一个BPDU,
- 最后,使用计算出的BPDU与接口上所维护的BPDU(接口自身也会从网络中收到BPDU,并将BPDU保存起来)进行比较,如果前者更优,那么该接口将成为指定接口,并且其所保存的BPDU也被前者替代,交换机将替代后的BPDU从该指定接口转发给下游交换机;如果后者更优,那么该接口将成为非指定接口(非指定接口指的是既不是根接口,又不是指定接口的接口)。
- 简单来说,对于非根桥而言,根接口的选举过程是非根桥将自己所收到的所有BPDU进行比较,而指定接口的选举过程则是非根桥用自己计算出的BPDU跟别的设备发过来的BPDU进行比较。
- 如下图所示网络中,在SW1与SW2之间的网段中,SW1的Port1被选举为指定接口;在SW1与SW3之间的网段中,SW1的Port2被选举为指定接口。
- 一般而言,根桥的所有接口都是指定接口。
- STP还会在SW2及SW3之间的网段中选举一个指定接口,最终SW2的Port2接口胜出(网桥ID较小),成为该网段的指定接口。
- 阻塞非指定接口,打破二层环路
- 经STP计算后,如果交换机的某个(或者某些)接口既不是根接口又不是指定接口,我们将这种接口称为非指定接口,那么该接口将会被STP阻塞,如此一来网络中的二层环路也就被打破了。
- 如下图所示的网络中,SW3的Port2由于既不是根接口,又不是指定接口,因此被阻塞。
- 被阻塞的接口既不会接收也不会转发业务数据(业务数据有别于BPDU,可以简单理解为用户的应用数据),
- 另外被阻塞的接口也不会发送BPDU,但是会持续侦听BPDU,以便感知网络拓扑的变更情况。
|