Stp应用:
1) stp应用的前提:单点失效
、如图:如果switch f1/1端口坏了,这样A 和B就无法通信。解决的方案通常都是“冗余”备份。备份又分“冷备份、热备份”。这时候就像图2一样。 如图2这样可以实现冗余和备份,但是会出现相当的问题:
第一、 交换机是不隔绝广播域的,而交换机的工作方式就是广播。也就是会出现“广播风暴”。假如A发送一个广播帧,交换机A从接口1/1收到广播会从1/2广播出去给交换机B,交换机B接口2/2收到广播帧也会从其他接口广播出去比如2/1,所以在逆时针出现广播。反过来,顺时针也会出现类似的情况。不像三层的数据包,路由器会通过识别TTL值到最后会丢弃。广播风暴的后果就是消耗大量交换机的CPU memory。
第二、 如果主机A给主机B发送一个单播的数据帧,B可以从两个方向收到,一个是交换机A的1/2,一个是交换机B的2/2。主机B收到数据帧后会作出相应的处理,这样给PC和交换机的处理状况将增加。我们称之为“单播复制”。
第三:假如主机A发送一个单播帧给主机B,但是交换机A和交换机B(交换机A和交换机B是新加入的交换机)没有记录主机B的MAC地址表,但是主机A有可能已经存有主机B的mac地址(arp表在主机的存活时间大概是5分钟?),这时候如果PCA发送一个单播帧的给B的时候,交换机A的第一个动作首先是记录PC A的mac地址,然后向其他端口泛洪。这样交换机B端口的2/2也会记录PC A的mac地址表。同理,在顺时针方向,交换机B的2/1也会记录PCA的mac地址,这样交换机就会删除原先存有的mac地址表,如此循环,造成“MAC地址表抖动”。也会给交换机带来一定的压力。
因此,STP就应用而生。其原理就是将会产生环路的接口从逻辑上block(阻塞)掉。如果某一端口DOWN掉的话,被block的端口会从逻辑上开启。
2)、BPDU:stp发送的信息
Field | Protocol ID | Version | Message type | Flag | Rout ID | Cost of path | Bridge id | Port Id | Message Age | Hello time | Delay |
Bytes | 2 | 1 | 1 | 8 | 4 | 8 | 2 | 2 | 2 | 2 | 2 |
如何选择根网桥rout id
交换机在加电开启时默认都认为自己是根网桥,收到其他交换机的BID或者其他交换机收到本交换机的BID,将比较BID,如何比较BID呢?第一是先比较优先级,小的成为根桥,其次比较mac地址,mac地址越小的将成为根桥。在根桥产生后,只有根桥才产生BPDU。 BID的格式为:
Bride priority | Extended system id | Mac |
默认情况下,优先级都是一样的,而比较的都是mac地址,通过查看mac地址,可以发现同一交换机的mac地址是连续的,而默认的基mac是CPU的mac地址。同一交换机中CPU的mac地址最小。
如何修改优先级 从而影响根网桥:
命令:switch(config)#spanning-tree vlan 1,2,3,4 root primary/secondary
或者直接修改优先级:#spanning-tree vlan 2 priority _后面跟(4096的倍数)