在传统的交换网络中,设备通过单条链路进行连接,当某一个点或是某一个链路发生故障时可能导致网络无法访问,解决这种问题的办法是在网络中提供冗余链路,但是交换机网络中的冗余链路会产生广播风暴、MAC地址失效等现象,最终出现的结果就是网络瘫痪,为避免因冗余链路形成环路而产生广播风暴和交换设备地址系统失效问题,同时使用冗余链路提高网络的可靠性,交换机都提供了生成树协议来解决这些问题,网络正常时自动将备份链路断开,在网络故障时自动启用备份链路。
实验拓扑如下图所示
交换机端口 | 设备 | IP地址 | 掩码 |
S1 1/10 | PC1 | 192.168.1.10 | 255.255.255.0 |
S2 1/10 | PC2 | 192.168.1.11 | 255.255.255.0 |
一、了解广播风暴的危害
1.设置PC1的IP地址为192.168.1.10,PC2的IP地址为192.168.1.11,PC1 ping PC2,结果如下:
C:\Documents and Settings\Administrator>ping 192.168.1.11
Pinging 192.168.1.11 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.1.11:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 4ms, Average = 1ms
由于生成树协议在神码交换机中默认是关闭的,可以看到此时已无法Ping通,交换机Link指示灯频繁闪烁,PC机反应迟缓,整个网络已被广播风暴袭击,无法进行正常通信。
二、理解生成树协议:
生成树协议通过选择根桥、根端口、指定端口三个步骤来完成生成树的计算。
选择根网桥
根网桥的选择是通过交换机的网桥ID来确定的。打开交换机的生成树协议,并查询交换机的网桥ID:
S1(config)#spanning-tree //开启生成树协议
MSTP is starting now, please wait.............
MSTP is enabled successfully.
s1#spanning-tree //开启生成树协议
MSTP is starting now, please wait.............
MSTP is enabled successfully.
s1#show spanning-tree
-- MSTP Bridge Config Info --
Standard : IEEE 802.1s
Bridge MAC : 00:03:0f:01:25:28
Bridge Times : Max Age 20, Hello Time 2, Forward Delay 15
Force Version: 3
########################### Instance 0 ###########################
Self Bridge Id : 32768 - 00:03:0f:01:25:28
Root Id : this switch
Ext.RootPathCost : 0
Region Root Id : this switch
Int.RootPathCost : 0
Root Port ID : 0
Current port list in Instance 0:
Ethernet0/0/1 Ethernet0/0/2 Ethernet0/0/2 4(Total 3)
PortName ID ExtRPC IntRPC State Role DsgBridge DsgPort
-------------- ------- --------- --------- --- ---- ------------------
Ethernet0/0/1 128.001 0 0 FWD DSGN 32768.00030f012528 128.001
Ethernet0/0/2 128.002 0 0 FWD DSGN 32768.00030f012528 128.002
Ethernet0/0/24 128.024 0 0 FWD DSGN 32768.00030f012528 128.024
其中,Self Bridge Id : 32768 - 00:03:0f:01:25:28就是该交换机的网桥ID。它由二部分组成,前面的数字32768是交换机的默认优先级,其取值范围为0~65535,步长为4096,数字越小则优先级越高;后面是该交换机的MAC地址。若各交换机优先级相同,则比较交换机的MAC地址,越小则优先级越高。
同样我们可以查询到S2的网桥ID为Self Bridge Id : 32768 - 00:03:0f:01:7d:b0比较两个网桥ID的大小,它们的优先级相同,而MAC地址中最小的是交换机S1。因此,S1被生成树协议选定为根网桥。
选择根端口
根网桥确定后,第二步需要在非根网桥上选择根端口。选择根端口的依据是:
a)端口到达根网桥的路径成本最低。路径成本是指从非根网桥到根网桥上所有链路的成本之和。神码设备默认10M/100M自适应的路径开销为200000。
b)若路径成本无法选择根端口,则依据非根网桥的直连(上游)网桥的桥ID最小来选择根端口,这在交换机级联时可能出现此种情况。
c)若依然无法确定根端口,则再依据上游端口ID最小来确定根端口。端口ID形如128.001,前面的128为端口优先级,其取值范围为0~255,步长为1,默认值为128。后面的001为端口编号。
选择指定端口
每条连接交换机的链路上都需选择指定端口。根网桥的所有端口都是指定端口,非根网桥的指定端口依据以下方法选择:
a)根路径成本最低;
b)端口所在网桥的桥ID值较小;
c)端口ID值较小。
在此例中,S1为根网桥,其所有端口都是指定端口,S1的E0/0/1和S2的E0/0/1为根端口。
先比较根路径成本:
S1的E0/0/1到根网桥的路径成本:经过S2交换机连接到S1,故路径成本为200000,同样,S2的E/0/0/2根路径成本也是200000,无法比较。
再比较端口所在网桥的桥ID值。如前所述,S1的桥ID为32768 - 00:03:0f:01:25:28,S2的桥ID为32768 - 00:03:0f:01:7d:b0,S2的桥ID值较小,所以S2的E0/0/1端口为指定端口。
最后,将S2 E0/0/2端口关闭,生成树协议计算完成,封闭了物理环路,并将S1的E0/0/2到S2的E0/0/2链路作为冗余链路。
三、验证生成树的冗余性
用PC1 ping PC2
C:\>ping 192.168.1.11
Pinging 192.168.1.11 with 32 bytes of data:
Reply from 192.168.1.11: bytes=32 time=4ms TTL=64
Reply from 192.168.1.11: bytes=32 time=1ms TTL=64
Reply from 192.168.1.11: bytes=32 time=1ms TTL=64
Reply from 192.168.1.11:bytes=32 time=1ms TTL=64
Ping statistics for 192.168.1.11:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 4ms, Average = 1ms
可以正常通信,没有广播风暴发生,生成树协议工作正常。
再查看两台交换机的生成树信息:
s1#show spanning-tree
- -- MSTP Bridge Config Info --
- Standard : IEEE 802.1s
- Bridge MAC : 00:03:0f:01:25:28
- Bridge Times : Max Age 20, Hello Time 2, Forward Delay 15
- Force Version: 3
- ########################### Instance 0 ###########################
- Self Bridge Id : 32768 - 00:03:0f:01:25:28
- Root Id : this switch
- Ext.RootPathCost : 0
- Region Root Id : this switch
- Int.RootPathCost : 0
- Root Port ID : 0
- Current port list in Instance 0:
- Ethernet0/0/1 Ethernet0/0/2 Ethernet0/0/2 4(Total 3)
PortName ID ExtRPC IntRPC State Role DsgBridge DsgPort
- -------------- ------- --------- --------- --- ---- ------------------ -------
Ethernet0/0/1 128.001 0 0 FWD DSGN 32768.00030f012528 128.001
Ethernet0/0/2 128.002 0 0 FWD DSGN 32768.00030f012528 128.002
Ethernet0/0/24 128.024 0 0 FWD DSGN 32768.00030f012528 128.024
s2#show spanning-tree
- -- MSTP Bridge Config Info --
- Standard : IEEE 802.1s
- Bridge MAC : 00:03:0f:01:7d:b0
- Bridge Times : Max Age 20, Hello Time 2, Forward Delay 15
- Force Version: 3
- ########################### Instance 0 ###########################
- Self Bridge Id : 32768 - 00:03:0f:01:7d:b0
- Root Id : 32768 - 00:03:0f:01:25:28
- Ext.RootPathCost : 200000
- Region Root Id : 32768 - 00:03:0f:01:25:28
- Int.RootPathCost : 0
- Root Port ID : 128.4
- Current port list in Instance 0:
- Ethernet0/0/1 Ethernet0/0/2 Ethernet0/0/24 (Total 3)
PortName ID ExtRPC IntRPC State Role DsgBridge DsgPort
- -------------- ------- --------- --------- --- ---- ------------------ -------
Ethernet0/0/1 128.003 0 0 FWD ALTR 32768.00030f012528 128.001
Ethernet0/0/2 128.004 0 0 BLK ROOT 32768.00030f012528 128.002
Ethernet0/0/24 128.023 0 0 FWD DSGN 32768.00030f012528 128.024
从show中可以看出,交换机S1是根交换机,交换机S2的1端口是根端口。
上述show命令输出结果显示交换机S2的端口F0/2角色为替换端口,状态为阻塞状态。