[*1*].冗余链路中存在的问题
这一部分使用下面这个拓扑来讲解一下链路冗余容易造成的三个问题:
如图所示SW1和SW2之间有两条线路相连,它们之间任何一条链路出现故障另外一条线路可以马上顶替出现故障的那条链路,这样可以很好的解决单链路故障引起的网络中断,但在此之前有下面三个问题需要考虑。
以太网交换机传送的第二层数据帧不像路由器传送的第三层数据包有TTL(Time To Live),如果有环路存在第二层帧不能被适当的终止,他们将在交换机之间永无止境的传递下去。结合交换机的工作原理,来看一下上面这张拓扑中广播风暴是如何形成的: 1,PC1发出一个广播帧(可能是一个ARP查询),SW1收到这个广播帧,SW1将这个广播帧从除接收端口的其他端口转发出去(即发往fa0/2、fa0/23、fa0/24)。 2,SW2从自己的fa0/23和fa0/24都会收到SW1发过来的相同的广播帧,SW2再将这个广播
帧从除接收端口外的所有其他接口发送出去(SW2将从fa0/23接收的广播帧发往其他三个端口fa0/24、fa0/1、fa0/2,从fa0/24接收到的也会发往其他三个端口fa0/23、fa0/1、fa0/2)。
3,这样这个广播帧又从fa0/23以及fa0/24传回了SW1,SW1再用相同的方法传回SW2,除非物理线路被破坏,否则PC1-4将不停的接收到广播帧,最终造成网络的拥塞甚至瘫痪。
* MAC地址表不稳定
广播风暴除了会产生大量的流量外,还会造成MAC地址表的不稳定,在广播风暴形成过程中:
1,PC1发出的广播帧到达SW1,SW1将根据源MAC进行学习,SW1将PC1的MAC和对应端口fa0/1写入MAC缓存表中。
2,SW1将这个广播帧从除接收端口之外的其他端口转发出去,SW2接收到两个来自SW1的广播(从fa0/23和fa0/24),假设fa0/23首先收到这个广播帧,SW2根据源MAC进行学
习,将PC1的MAC和接收端口fa0/23存入自己的MAC缓存表,但是这时候又从fa0/24收到了这个广播帧,SW1将PC1的MAC和对应的fa0/24接口存入自己的MAC缓存表。
3,SW2分别从自己的这两个接口再将这个广播帧发回给SW1,这样PC1的MAC地址会不停的在两台交换机的fa0/23和fa0/24之间波动,MAC地址缓存表也不断的被刷新,影响交换机的性能。
* 重复帧拷贝
冗余拓扑除了会带来广播风暴以及MAC地址的不稳定,还会造成重复的帧拷贝:
1,假设PC1发送一个单播帧给PC3,这个单播帧到达SW1,假设SW1上海没有PC3的MAC地址,根据交换机的原理,对未知单播帧进行泛洪转发,即发往除接收端口外的所有其他端口(fa0/2、fa0/23、fa0/24)。
2,SW2分从自己的fa0/23和fa0/24接收到这个单播帧,SW3知道PC3连接在自己的fa0/1接口上,所以SW1将这两个单播帧都转发给PC3。
3,PC1只发送了一个单播帧,PC3却收到了两个单播帧,这会给某些网络环境比如流量统计带来不精确计算等问题。
[*2*].STP介绍
基于冗余链路中存在的这些问题STP被设计出来用来解决这些问题,下面介绍STP的工作原理。
* STP算法
STP通过拥塞冗余路径上的一些端口,确保到达任何目标地址只有一条逻辑路径,STP借用交换BPDU(Bridge Protocol Data Unit,桥接数据单元)来阻止环路,BPDU中包含BID(Bridge ID,桥ID)用来识别是哪台计算机发出的BPDU。在STP运行的情况下,虽然逻辑上没有了环路,但是物理线上还是存在环路的,只是物理线路的一些端口被禁用以阻止环路的发生,如果正在使用的链路出现故障,STP重新计算,部分被禁用的端口重新启用来提供冗余。
STP使用STA(Spanning Tree Algorithm,生成树算法)来决定交换机上的哪些端口被堵
塞用来阻止环路的发生,STA选择一台交换机作为根交换机,称作根桥(Root Bridge),以该交换机作为参考点计算所有路径。
* 根交换机选举
首先要知道什么是BID(Bridge ID,桥ID),因为根交换机的选举是基于BID的,BID由三部分组成:优先级、发送交换机的MAC地址、Extended System ID(扩展系统ID,可选项)如下图所示:
BID一共8个字节,其中优先级2个字节,MAC地址6个字节。在不使用Extended System ID的情况下,BID由优先级域和交换机的MAC地址组成,针对每个VLAN,交换机的MAC地址都不一样,交换机的优先级可以是0-65535。在使用Extended System ID的情况下每个VLAN的MAC地址可以相同(在GNS3模拟器中不支持Extended System ID,Cisco Packet Tracer 5.3支持Extended System ID)。值得一提的是,现在的交换机普遍使用Extended System ID。拥有最小BID的交换机被选举成为根交换机。
在同一个广播域中的所有交换机都参与选举根交换机,当一台交换机启动时,它假设自己
是根交换机,并默认每隔2秒发送一次“次优BPDU”帧,BPDU帧中的Root ID(根交换机的BID)和本机的BID相同。在一个广播域中的交换机互相转发BPDU帧,并且从接收到的BPDU中读取Root ID,如果读取到的Root ID比本交换机的BID小,交换机更新Root ID为这个较小的Root ID,然后继续转发修改后的BPDU;如果接收的BPDU中的Root ID比本交换机的BID大,那么继续将自己的BID作为Root ID向外发送BPDU,直到最后在同一个生成树实例中拥有一致的Root ID,这个Root ID对应了这个广播域中某台交换机的BID(并且这个BID一定是这个广播域最小的),这台交换机就被选作根交换机。
下面用一个实例来演示一下根交换机的选举,在Cisco Packet Tracer 5.3中搭建下面这样的拓扑:
线连接好后等待几十秒钟,它们会自动选举出根交换机,使用下面的命令验证:
1 | /* |
2 | * 在SW1上查看生成树信息,因为SW1、SW2、SW3上面都没有划分其他的VLAN, |
| | |
3 | * 所以默认只有VLAN0001的生成树信息。 |
4 | * |
| | |
5 | * "Spanning tree enabled protocol ieee", |
6 | * 表示交换机使用的生成树协议是"PVST+",这也是思科默认的生成树协议。 |
| | |
气炮7 | * |
8 | * "Root ID"后面是VLAN1中根交换机的BID参数, |
| | |
决定系数9 | * Priority 32769,表示根交换机的优先级是32769, | 华中理工大学出版社
10 | * Address是根交换机的MAC地址, |
| | | |
11 | * "This bridge is the root",表示当前这台交换机就是根交换机。 |
12 | * |
| | |
13 | * "Hello Time 2sec Max Age 20sec Forward Delay 15sec" |
14 | * BPDU发送间隔默认2秒,最大存在时间是20秒,转发延时是15秒。 |
| | |
15 | * |
16 | * "Bridge ID"后面的参数是本交换机的BID参数, |
| | |
17 | * 因为SW1就是根交换机,所以这个下面的参数和"Root ID"是一样的, |
18 | * 其中"priority 32768 sys-id-ext 1",表示SW1的优先级是32768, |
| | |
19 | * Extended System ID是1,所以优先级就是32768+1。 |
20 | * |
| | |
21 | * 所以SW1的BID=SW1的优先级+SW1的MAC地址=32769+0001.9681.2683 |
22 | * 接下来查看SW2和SW3的生成树信息,就会知道为什么SW1可以被选举成根交换机了。 |
| | |
23 | */ |
24 | SW1#show spanning-tree |
| | |
中世纪欧洲地图
25 | VLAN0001 |
26 | Spanning tree enabled protocol ieee |
| | |
27 | Root ID Priority 32769 |
28期权费 | Address 0001.9681.2683 |
| | |
29 | This bridge is the root |
30 | Hello Time 2 ec Max Age 20sec Forward Delay 15sec |
| | |
31 | |
32 | Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) |
| | |
33 | Address 0001.9681.2683 |
34 | Hello Time 2sec Max Age 20sec Forward Delay 15sec |
| | |
37 | Interface Role Sts Cost Prio.Nbr Type |
38 | ----------- ---- --- --------- -------- ---------- |
| | |
39 | Fa0/1 Desg FWD 19 128.1 P2p |
40 | Fa0/2 Desg FWD 19 128.2 P2p |
| |
41 | Fa0/3 Desg FWD 19 128.3 P2p |
42 | |
| | |
45 | * |
46 | * 可以看到SW2的BID中,优先级是32769,和根交换机(SW1)的相同, |
| | |
47 | * 但是SW2的MAC地址是0030.A310.3975,大于SW1的MAC地址, |
48 | * 因为BID=优先级+MAC地址, |
| | |
49 | * 从这里可以看出SW1的BID要小于SW2的BID, |
50 | * 所以SW1为根交换机。 |
| | |
51 | */ |
52 | SW2#show spanning-tree |
| | |
53 | VLAN0001 |
54 | Spanning tree enabled protocol ieee |
| | |
55 | |
56 | /*这里是根交换机,也就是SW1的BID信息*/ |
| | |
57 | Root ID Priority 32769 |
58 | 即刻反击 Address 0001.9681.2683 |
| | |