- # STP(Spanning-Tree Protocol,生成树协议)的工作原理,在分层网络中存在冗余链路的情况下容易引起流量环路,使用STP能够动态的管理这些冗余链路;当某台交换机的一条连接丢失时,另一条链路能迅速取代失败链路,并且不会产生流量环路。文章主要包括下面几点内容:冗余拓扑中存在的问题、生成树协议、生成树收敛、利用生成树实现负载均衡等。
- # 1、STP交换机角色
- # 根交换机(root bridge)和非根交换机(none root bridge)
- # 首先要知道什么是BID(Bridge ID,桥ID),因为根交换机的选举是基于BID的,BID由三部分组成——优先级、发送交换机的MAC地址、Extended System ID(扩展系统ID,可选项);BID一共8个字节,其中优先级2个字节,MAC地址6个字节。优先级包括Priority 4bit(4096*n)和Extended System ID 12bit(pvst协议和rapid-pvst协议采用vlan id,MST 采用instance id);在进行BID比较时,先比较桥优先级,优先级值小的为根桥;当桥优先级值相等时,再比较桥的背板MAC地址,MAC地址小的为根桥。
- IOU1#sh spanning-tree
- VLAN0001
- Spanning tree enabled protocol ieee # 表示交换机使用的生成树协议是"PVST+",这也是思科默认的生成树协议
- Root ID Priority 32769 # 表示根交换机的优先级是32769,
- Address aabb.cc00.0800 # 根交换机的MAC地址
- This bridge is the root # 表示当前这台交换机就是根交换机
- Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec # BPDU发送间隔默认2秒,最大存在时间是20秒,转发延时是15秒。
- Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) # Extended System ID是1,所以总优先级就是32768+1=32769
- Address aabb.cc00.0800
- Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
- Aging Time 300 sec
- Interface Role Sts Cost Prio.Nbr Type
- ------------------- ---- --- --------- -------- --------------------------------
- Et1/1 Desg FWD 100 128.6 Shr
- Et1/2 Desg FWD 100 128.7 Shr
- Et1/3 Desg FWD 100 128.8 Shr
- IOU2#sh spanning-tree
- VLAN0001
- Spanning tree enabled protocol ieee
- Root ID Priority 32769
- Address aabb.cc00.0800
- Cost 100
- Port 10 (Ethernet2/1)
- Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
- Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
- Address aabb.cc00.0d00
- Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
- Aging Time 300 sec
- Interface Role Sts Cost Prio.Nbr Type
- ------------------- ---- --- --------- -------- --------------------------------
- Et2/1 Root FWD 100 128.10 Shr
- Et2/3 Altn BLK 100 128.12 Shr
- Et3/3 Altn BLK 100 128.16 Shr
- IOU3#sh spanning-tree
- VLAN0001
- Spanning tree enabled protocol ieee
- Root ID Priority 32769
- Address aabb.cc00.0800
- Cost 100 # 端口cost :100
- Port 14 (Ethernet3/1) # Ethernet3/1 为 10M
- Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
- Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
- Address aabb.cc00.0a00
- Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
- Aging Time 300 sec
- Interface Role Sts Cost Prio.Nbr Type
- ------------------- ---- --- --------- -------- --------------------------------
- Et3/1 Root FWD 100 128.14 Shr
- Et3/2 Desg FWD 100 128.15 Shr
- Et3/3 Desg FWD 100 128.16 Shr
- # 2、端口cost和路径cost
- # 根交换机被选举出来后,计算其他交换机到根交换机的cost,STA考虑两种cost,端口cost和路径cost,路径cost是从根交换机出发到最终交换机入方向的端口cost总和,也就是说在上面的拓扑图图三中,假设SW1是根交换机,想要改变SW3到根交换机SW1的花费,应该在SW3的fa0/1来改变,而不是在SW1的fa0/3端口上改变。
- # 如果一台交换机有多条路径到达根交换机,这台交换机会选择路径花费最小的那条,下面是默认的端口cost参照表:
- # 10G -- 2,1G -- 4,100M -- 19,10M -- 100
- # 3、BPDU结构浅析
- # BPDU包含12个字段
- Frame 1417: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0
- IEEE 802.3 Ethernet
- Logical-Link Control
- Spanning Tree Protocol
- Protocol Identifier: Spanning Tree Protocol (0x0000)
- Protocol Version Identifier: Spanning Tree (0)
- BPDU Type: Configuration (0x00)
- BPDU flags: 0x00 # 标记域,包含TC(Topology Change,拓扑改变)比特位,TCA(Topology Change Acknowledgment,拓扑改变确认)比特位。
- Root Identifier: 32768 / 1 / aa:bb:cc:00:08:00 # Root ID:包含了根交换机的BID。
- Root Path Cost: 0 # Cost of path:到根交换机的路径花费。
- Bridge Identifier: 32768 / 1 / aa:bb:cc:00:08:00 # Bridge ID:转发BPDU的交换机的BID。
- Port identifier: 0x8007 # Port ID:转发BPDU的交换机的PID,PID等于端口优先级(默认128)加端口号,
- Message Age: 0 # Message age:BPDU已经存在的时间。
- Max Age: 20 # Max age:BPDU最大存在时间。
- Hello Time: 2 # Hello time:根交换机发送配置信息的间隔时间,默认2秒。
- Forward Delay: 15 # Forward Delay:转发延时,默认15秒。
- # STP端口角色
- # 1)根端口(Root Port,RP):转发并接收BPDU;每个非根交换机上有且仅有一个根端口,
- # 2)指派端口(Designated Port,DP):转发并自身发送BPDU;网络上除根端口外,所有允许转发流量的端口,每个网段都有一个指派端口,根交换机上的端口都是指派端口。
- # 3)非指派端口:只接收BPDU;既不是根端口也不是指派端口,这种端口虽然是激活的但是会被堵塞(Blocking)用来阻止环路,根端口和指派端口都处于转发(Forwarding)状态。
- # 4)禁用端口:被管理员使用"shutdown"命令关闭的端口称作禁用端口,禁用端口不参与生成树算法。
STP 抓包分析
来源: http://www.bubuko.com/infodetail-2291021.html