您的位置:首页 > 编程语言 > PHP开发

STP协议解析

2012-03-15 17:43 127 查看
引言:交换机又名网桥,在一个桥接的局域网里,为了增强可靠性,通常要建立一个冗余的路径,网段会用冗余的网桥连接。但是,由于网桥不隔离广播,桥环路对于一个局域网是致命的。
STP协议简介
STP-Spanning Tree Protocol(生成树协议)
生成树协议是一种桥嵌套协议,在IEEE 802.1d规范里定义,可以用来消除桥环路。
实际是逻辑上断开环路,防止二层网络的广播风暴的产生。当线路出现故障,断开的接口被激活,恢复通信,起备份线路的作用。
STP的算法
它的工作原理是这样的:
生成树协议定义了一个数据包,叫做桥协议数据单元BPDU(Bridge Protocol Data Unit)。网桥用BPDU来相互通信,并用BPDU的相关机能来动态选择根桥和备份桥。但是因为从中心桥到任何网段只有一个路径存在,所以桥回路被消除。
在一个生成树环境里,桥不会立即开始转发功能,它们必须首先选择一个桥为根桥,然后建立一个指定路径。在一个网络里边拥有最低桥ID的将变成一个根桥,全部的生成树网络里面只有一个根桥。根桥的主要职责是定期发送配置信息,然后这种配置信息将会被所有的指定桥发送。这在生成树网络里面是一种机制,一旦网络结构发生变化,网络状态将会重新配置。
当选定根桥之后,在转发数据包之前,它们必须决定每一个网段的指定桥,运用生成树的这种算法,根桥每隔2秒钟从它所有的端口发送BPDU包,BPDU包被所有的桥从它们的根端口复制过来,根端口是接根桥的那些桥端口。BPDU包括的信息叫做端口的COST,网络管理员分配端口的COST到所有的桥端口,当根桥发送BPDU的时候,根桥设置它的端口值为零。然后沿着这条路径,下一个桥增加它的配置端口COST为一个值,这个值是它接收和转发数据包到下一个网段的值。
这样每一个桥都增加它的端口的COST值为它所接收的BPDU的包的COST值,所有的桥都检测它们的端口的COST值,拥有最低端口的COST值的桥就变为了指定的桥。
拥有比较高端口COST值的桥置它的端口进入阻塞状态,变为了备份桥。在阻塞状态,一个桥停止了转发,但是它会继续接收和处理BPDU数据包。
STP将一个环形网络生成无环拓朴的步骤:
选择根网桥(Root Bridge
选择根端口(Root Ports
选择指定端口(Designated Ports

选择根网桥的依据:
依据:网桥IDBID
网桥ID是唯一的,交换机之间选择BID值最小的交换机作为网络中的根网桥。桥ID=桥优先级(默认值为32768)+桥MAC
选择根端口的依据
在非根网桥上选择一个到根网桥最近的端口作为根端口;
选择根端口的依据是:
到达根路径成本最低
直连(Sender)的网桥ID最小;
端口(SenderID最小;
根路径成本
根路径成本(开销)-是网桥到根网桥的路径上所有链路的成本之和,默认100M自适应的路径开销为19
选择指定端口的依据
在每个网段上,选择1个指定端口,根桥上的端口全是指定端口
非根桥上的指定端口:
到达根路径成本最低
端口所在的网桥的ID值较小
端口ID值较小
记住一点:
可以看到选择根端口和指定端口依据相近,但有区别:
选举指定端口,比较的是发送的BPDU
选举根端口,比较的是接收的BPDU
非指定端口:当把根网桥、根端口和指定端口选举出来之后,最后一个没有被选举的端口就是非指定端口。
下面我们来看几个例子:



按照我们前面的分析:
第一步:选根桥,很明显SW3的桥ID最小,即根桥。
第二步:在非根桥(SW1,SW2,SW4)上选择根端口。
SW2和SW4的根端口比较好选,首先比较的是接受到达根桥BPDU的开销,我们假设都是100M网络,那每经过一个转发接口时,开销加上19,且根桥发出时开销值为0。开销值分别是f0/3(0), f0/6(0);然后是SW1,我们发现SW1上两个端口接收到的BPDU开销值相同,所以接下来比较的是sender BID,SW4的BID小于SW2的BID,故SW1的f0/8端口是根端口。
第三步:每个网段选择一个指定端口。
在SW1和SW2连接的网段上选择一个指定端口。依据参考前面说明。
首先比较的是转发BPDU的开销值,.那么SW2 F0/2接口的转发BPDU开销是19,而SW1 F0/1接口的转发BPDU开销是38,所以SW2的F0/2是指定端口。剩下的F0/1接口就是阻塞端口。
再来看一个例子:



2台交换机组成冗余拓扑:
第一步:选根桥,SW3
第二步:非根桥上选根端口
首先比较的是接受BPDU的开销,SW4上F0/1和F0/7端口值相同,都是0;
接下来是sender BID,也相同,都是SW3的BID;
最后是sender PORT,显示表明F0/7的sender port较小是f0/1,所以它是指定端
口,剩下SW4的F0/1就是阻塞了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息