Technical documentation
发布日期:2023-06-07 浏览次数:1979 来源:赵顺杰
CCNP培训RS路由交换课程-STP生成树理论选路步骤和实验演示
WOLFLAB官方微信:17316362402,关注【WOLF-LAB】了解思科认证EI CCNP培训课程!
思科认证EI CCNP培训-STP生成树选路的步骤:
1. 网络当中选举根桥 Root Bridge
– 根桥:监控和检测网络当中生成树的情况
– 网络当中选举根桥之后,只有根桥会主动的发送BPDU,每2s发送一次
– 所有的非根桥设备,不会主动发送BPDU,只会中继根桥发送过来的BPDU
1. 每个非根桥上选举一个根端口 Root Port
– 根端口:距离根桥开销最小的接口
1. 每一段链路选举指定端口 Designated Port
1. 非根端口,非指定端口,置为Block状态
BPDU消息当中较为重要的条目:
1. Root ID
2. COST
3. Bridge ID 由 优先级(优先级 + VLAN ID) 和 MAC地址组成
4. Port ID
根桥的选举:
1. Root ID
先比较优先级,优先级小的成为根桥 默认情况下,设备的优先级=32768
如果优先级相同,MAC地址小的会成为根桥
Bridge ID的组成 分为 2byte优先级 + 6byteMAC地址
4bit 的优先级 + 12bit vlan ID
1000 000000000001
1 乘以 2 15 + 1乘以 2 0
0000 000000000001 1 (0 + 1)
0001 000000000001 4097 (4096 + 1)
0010 000000000001 8193 (8192 + 1)
0011 000000000001 12289 (8192 + 4096 + 1)
通过更改优先级,更改根桥的选举
spanning-tree vlan 1 priority (4096的倍数)
spanning-tree vlan 1 root primary
spanning-tree vlan 1 root secondary
1. 当此时的根桥优先级大于等于32768时,敲了root primary 命令行,自动降低优先级到24576
1. 当此时的根桥优先级小于28672的时候,敲了root primary 命令行
– 本设备的mac地址小于当前根桥的mac地址 降低优先级跟当前根桥一致,通过mac地址比较选举成为根桥
– 本设备的mac地址大于当前根桥的mac地址 降低自己的优先级,比当前根桥再低一级
2. 当此时的根桥优先级等于4096的时候,敲了root primary 命令行
– 报错,root primary命令行无法使得设备的优先级降低为0
– 例外,本设备的mac地址小于当前根桥的mac地址时,不会报错,会降低优先级到4096
拓补图:
思科认证EI CCNP培训-实验一 :
SW1的Mac-address: 000a.b8ac.3880
SW2的Mac-address: 0019.2fe9.5e80
SW3的Mac-address: 001b.2b22.c700
设备之间形成trunk之后,SW1将会成为根桥,因为所有设备的优先级默认都是32768,而SW1的MAC地址最小
SW2(config)#spanning-tree vlan 1 priority 24576 //更改SW2的优先级
SW2(config)show spanning-tree //查看生成树结果
SW2的优先级最低,它成为了根桥
思科认证EI CCNP培训-实验二:
将所有设备的优先级恢复原样
SW2(config)#spanning-tree vlan 1 root primary //SW2会自动降低优先级为24576去抢根桥
SW3(config)#spanning-tree vlan 1 root Secondary //SW3会自动降低优先级到28672成为备选根桥
配置secondary的好处在于当根桥down掉之后 备用根桥由于优先级比其它人高而成为下一个根桥
思科认证EI CCNP培训-实验三:
将所有设备恢复原样
SW1(config)#spanning-tree vlan 1 priority 24576 //手动设置SW1的优先级为24576
SW2(config)#spanning-tree vlan 1 root primary //使得SW2抢根桥
SW2(config)show spanning-tree //发现SW2降低优先级比24576再低一级
由于SW2的MAC地址比SW1大,当要从SW1手上抢根桥的时候仅仅将优先级降低跟SW1一样无法将根桥抢到手,因此只能够降低优先级比根桥再低一级,才能将根桥抢到手.
实验四:
将所有设备恢复原样
SW2(config)#spanning-tree vlan 1 priority 24576 //手动设置SW2的优先级为24576
SW1(config)#spanning-tree vlan 1 root primary //使得SW1抢根桥
SW1(config)show spanning-tree //发现SW1降低优先级为24576
由于SW1的mac地址小于SW2,当需要从SW2手上抢根桥的时候,仅仅需要降低优先级跟根桥SW2一致即可通过MAC地址的比较将根桥抢到手中.
实验五:
将所有设备恢复原样
SW1(config)#spanning-tree vlan 1 priority 4096 //手动设置SW1的优先级为4096
SW2(config)#spanning-tree vlan 1 root primary //使得SW2抢根桥
发现报错了,由于SW2想要从SW1手里抢夺根桥,且发现自己的mac地址大于SW1,也就是说仅仅将优先级降低跟根桥一致的4096无法将根桥抢到手,需要降低优先级为0,而此命令行无法将优先级降低为0,因此报错.
实验六:
将所有设备恢复原样
SW1(config)#spanning-tree vlan 1 priority 4096 //手动设置SW2的优先级为4096
SW1(config)#spanning-tree vlan 1 root primary //使得SW1抢根桥
SW1(config)show spanning-tree //发现SW1降低优先级为4096
没报错,由于SW1要从SW2手中抢根桥,且发现自己的mac地址小于SW2,因此只需要降低自己的优先级与根桥SW2一致即可通过mac地址比较使自己成为根桥, 因此自己的优先级通过此命令行降低为了4096,并将根桥抢到手.
根端口的选举,通过从接口上接收到的BPDU消息比较选出
1. Root ID
2. COST (本端口去往根桥的开销,由收到的BPDU当中的cost值加上自己接口的cost值得出)
3. Bridge ID
4. Port ID
指定端口的选举,通过链路上的BPDU消息比较选出
1. Root ID
2. COST
3. Bridge
4. Port ID
Port-ID
四位十六进制数组成
0X 8003
接口的优先级默认 128
分为前两个十六进制数 和 后两个十六进制数
前两个十六进制数表示优先级 仅前4bit有效 后两个十六进制数标识了端口ID
80 03
1000 0000 = 128 0000 0011
"开销"
按照链路的带宽来表示
10M 100
100M 19
1000M 4
10000M 2
拓补图:
思科认证EI CCNP培训-实验七:
将SW1的优先级降低到0,使得SW1成为根桥.
观察SW2上由STP生成树做出的选路.
SW2的视角上:
从F0/11接口收到的BPDU
Root ID = SW1 由于根桥是SW1
COST = 0 由于是SW1接口发送的BPDU,而SW1的F0/11接口距离根桥的距离是0,自己接口cost值为19,因此去往根桥的开销为0+19=19
Bridge ID = SW1 由于是SW1发送的BPDU,Bridge是它自己
Port ID = 128.13 由于是SW1的F0/11接口发送出来的BPDU,优先级默认128
从F0/12接口收到的BPDU
Root ID = SW1 由于根桥是SW1
COST = 0 由于是SW1接口发送的BPDU,而SW1的F0/12接口距离根桥的距离是0,自己接口cost值为19,因此去往根桥的开销为0+19=19
Bridge ID = SW1 由于是SW1发送的BPDU,Bridge是它自己
Port ID = 128.14 由于是SW1的F0/12接口发送出来的BPDU,优先级默认128
因此从F0/11接口收到的BPDU更优,因此SW2的F0/11接口成为了RP根端口,通过port-ID小来做出决定
SW3的视角上:
从F0/13接口收到的BPDU
Root ID = SW1 由于根桥是SW1
COST = 0 由于是SW1接口发送的BPDU,而SW1的F0/13接口距离根桥的距离是0,自己接口cost值为19,因此去往根桥的开销为0+19=19
Bridge ID = SW1 由于是SW1发送的BPDU,Bridge是它自己
Port ID = 128.15 由于是SW1的F0/13接口发送出来的BPDU,优先级默认128
从F0/23接口收到的BPDU
Root ID = SW1 由于根桥是SW1
COST = 19 由于是SW2接口发送的BPDU,而SW2的F0/23接口距离根桥的距离是19,自己接口cost值为19,因此去往根桥的开销为0+19=38
Bridge ID = SW2 由于是SW2发送的BPDU,Bridge是它自己
Port ID = 128.25 由于是SW2的F0/23接口发送出来的BPDU,优先级默认128
因此从F0/13接口收到的BPDU更优,因此SW3的F0/13接口成为了RP根端口,通过COST值便做出决定
指定端口的选举是在某一段链路上进行的,它的初衷是在一段链路上选择出来一个负责发送BPDU的接口,因此是通过在链路上双方发出来的BPDU比较做出决定,而不是如同RP选举一样全是通过接收到的BPDU做出选择
DP的选举
根桥上的接口大部分情况下都能成为指定端口,是通过链路上的cost值比较出来的,因为根桥上的接口去往根桥的开销是0,因此它们有先天的外挂.会成为DP
我们观察SW2和SW3之间的链路
SW3从F0/23接口发出的BPDU
Root ID = SW1 由于根桥是SW1
COST = 19 由于是SW3接口发送的BPDU,而SW3的F0/23接口距离根桥的距离是19
Bridge ID = SW3 由于是SW3发送的BPDU,Bridge是它自己
Port ID = 128.25 由于是SW3的F0/23接口发送出来的BPDU,优先级默认128
SW2从F0/23接口发送出的BPDU
Root ID = SW1 由于根桥是SW1
COST = 19 由于是SW2接口发送的BPDU,而SW2的F0/23接口距离根桥的距离是19
Bridge ID = SW2 由于是SW2发送的BPDU,Bridge是它自己
Port ID = 128.25 由于是SW2的F0/23接口发送出来的BPDU,优先级默认128
最后,SW2的F0/23接口成为了这一段链路的指定端口DP,原因是SW2的BPDU在Bridge上战胜了SW3,因为SW2的MAC地址更小.
可以通过更改接口的优先级而左右SPT生成树的选路
思科认证EI CCNP培训-实验八:
SW1(config)#interface F0/12
SW1(config-if)#spanning-tree port-priority 0 //更改SW1 F0/2接口的优先级
SW2的视角上:
从F0/11接口收到的BPDU
Root ID = SW1 由于根桥是SW1
COST = 0 由于是SW1接口发送的BPDU,而SW1的F0/11接口距离根桥的距离是0,自己接口cost值为19,因此去往根桥的开销为0+19=19
Bridge ID = SW1 由于是SW1发送的BPDU,Bridge是它自己
Port ID = 128.13 由于是SW1的F0/11接口发送出来的BPDU,优先级默认128
从F0/12接口收到的BPDU
Root ID = SW1 由于根桥是SW1
COST = 0 由于是SW1接口发送的BPDU,而SW1的F0/12接口距离根桥的距离是0,自己接口cost值为19,因此去往根桥的开销为0+19=19
Bridge ID = SW1 由于是SW1发送的BPDU,Bridge是它自己
Port ID = 0.14 由于是SW1的F0/12接口发送出来的BPDU,更改优先级0,因此优先级更小
因此从F0/12接口收到的BPDU更优,因此SW2的F0/12接口成为了RP根端口,它们通过port-id做出决定
作业:根据以上学习的STP生成树选路原则,完成以下图中的STP生成树选路,并将结果图发送给老师的邮箱.
WOLFLAB官方微信:17316362402
WOLFLAB官方QQ:2569790740
关注WOLF-LAB实验室,了解EI CCNP培训课程!