就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,

  • A+
所属分类:安全文章

先来首歌,边听边看。


贯穿全文的核心:选举都是比小


一、基础名词了解
1、Bridge ID:优先级+MAC组成(优先级可以修改)
就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,

Bridge ID是交换机的唯一标识,用于STP生成树(无环路树型拓扑)计算中的比较,在STP比较中,永远是数值小者获胜。
如果想指定某一台交换机为根桥。通过把它的Bridge Priority配置成同一网段中最小,足以保证它拥有最小的BID,进而赢得Root War。

备注:
一般来说设备加入,最好修改优先级,因为MAC可能会作假,而我们一般需要保证性能最佳的交换机选为根桥,需要修改。


华为:
修改设备的优先级为4096
[HUAWEI] stp priority 4096


修改端口GE1/0/1的优先级为16
[HUAWEI] interface gigabitethernet 1/0/1
[HUAWEI-GigabitEthernet1/0/1] stp port priority 16


2.Path Cost:路径开销,比小。
表示距其它交换机的“远近”。这里“远近”不是物理上的链路长短,而是链路带宽的大小。带宽大的链路,Cost值小;带宽小,Cost值大。
就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,

计算公式:
用1000Mbps作分母,除以Mbps作单位的链路带宽值,得到的商就是这条链路的Cost。Cost与带宽之间是简单的反比例关系。
比如:传统的10BaseT链路的带宽是10Mbps,它的Cost就是:1000Mbps / 10Mbps = 100;
快速以太网(Fast Ethernet)和FDDI,带宽是100Mbps,因此Cost=1000 / 100 =10。


备注:
有时候公式计算出来的结果很模糊,所以有了上面的参照图。


3.四项技术指标
(1) Root ID (根桥ID)
(2) Root Path Cost (根路径开销)
(3). Sender BID (发送桥ID)
(4) Sender Port ID (发送端口ID)



讲个故事来说下到底干什么的。
众所周知,stp里面有两个报文需要我们关注,也就是老板下发命令和发生事故,手底下的人逐步通知给老板怎么回事。


老板总不可能发布什么命令都一个一个的通知职员,这会累死的,所以干脆想了个办法,职员里面选几个拔尖的,叫做根端口,每次通知根端口,反正下面发生了事故的话,根端口通知老板。


老板就是下发配置BPDU,发生事故就是TCN bpdu,这是stp里面的两种协议帧,帧里面携带参数。(参数就是上面说到的四种)
就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,
**备注:**配置BPDU:根桥(老板)下发,根端口接收。

TCN bpdu:拓扑发生改变,非根桥(经理)往根桥通知。


二、那么STP怎么收敛?
概括一下:如果面试时候完全可以根据这个进行描述。


1. 选举根桥(一个vlan内只有一个老大,根桥。其余人叫做非根桥)
2. 选举根端口(一个子网段内只有一个小弟中的拔尖人,暂时叫做经理,转发相关的命令,老大发命令-配置BPDU,经理传递下去,底下人出事了-TCN BPDU,经理赶紧通知老大)
3. 选举指定端口(就是业务流量)


备注:
“网段”内两台交换机之间的连接叫做一个“子网段(Segment)”。

有人要问了怎么收敛的?我还是不明白。


别急,我继续说个例子
就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,


(1)、选根桥
首先要选举出一个根桥。选举的依据是:桥ID,低者获胜。假设Switch A,B,C的设备优先级采用默认值32768,那么Bridge ID的大小就取决于它们的MAC,很明显,Switch A具有最低的MAC=AAAA-AAAA-AAAA,成为根桥(Root)。选举根桥的过程被形象地称为“Root War”,胜者为王(Root)。


(2)、选根端口
在激烈的Root War结束后,老大(Root)产生了,接下来是为每个non-Root交换机选举一个根端口(Root Port),根端口是离Root最近的端口(看起来还算公平)。


这好比是一个公司的每个部门(non-Root)都要选出一个经理(Root Port),作为“接口人”与公司老总(Root)联系。老总(Root Port)有且仅有一个,没有副职,如果Root Port因为某种原因(比如链路Down掉)不再继续承担接口人这一角色,那么non-Root启动新一轮的选举程序重新选举一个Root Port。


就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,
如图所示,A,B间的网段称为Segment1,B,C间的网段称为Segment2,A,C间的网段称为Segment3。假设A,B,C之间采用相同类型的连接,路经开销(Path Cost,图中简称为Cost)都是19。


Path Cost是端口量,反映了端口连接网络的Cost。
理论上,同一Segment上的端口应该有相同的Path Cost。



例如,Segment1的Cost是19,那么Segment1上的两个端口Switch A的端口1/1,Switch B的端口1/1应该有相同的Path Cost=19。

但正因为Path Cost是端口量,可以在交换机上手动配置。


所以在实际的网络中可能出现同一Segment上的端口的Path Cost值不同的情况。

端口的Path Cost可以根据组网的需要灵活配置,以达到阻断某一端口,使流量走另一端口的目的。


如:在Switch A上配置Port 1/1的Path Cost=19,但在Switch B上的Port 1/1,配置Path Cost=1000,是可以的。


端口发送BPDU中的Root Path Cost是指:从这个端口到达根桥的累计路经开销。Root Path Cost是如何计算的呢?


首先从根桥说起,Switch A被选举为根桥,它的两个端口Port1/1和Port1/2发送BPDU的Root Path Cost=0,这很容易理解,因为根桥上的端口就在根桥上,从它们出发不用什么开销就到达根桥,累计路径开销(Root Path Cost)自然就等于0。


STP的处理中,只有链路被认为有路径开销,交换机被认为没有路径开销,即Path Cost=0。


先看Switch A Port 1/1发出的BPDU,Root Path Cost=0,经过Segment1到达Switch B Port 1/1,Switch B Port1/1收到此BPDU后,将报文中的Root Path Cost=0加上自己的Path Cost=19,作为自己的Root Path Cost=19。


接着B在自己的其它端口发送BPDU,图中是Port 1/2,发送的BPDU的Root Path Cost的值是Switch B上各端口中最小的Root Path Cost加上自己的Path Cost。B的端口上只有Port 1/1上保存的BPDU的Root Path Cost=19,Port 1/2就以这值为Switch B的最小Root Path Cost,加上自己的Path Cost=19,得出Root Path Cost=19+19=38,所以Port 1/2发送BPDU的Root Path Cost=38。


Switch C Port 1/2接收到B发来的Root Path Cost=38的BPDU。
再看Switch C:
首先Switch C Port 1/1接收到A Port 1/2发送来的Root Path Cost=0的BPDU,加上自己的Path Cost=19,得出自己的Root Path Cost=19;
Switch C Port 1/2发送Root Path Cost=19+19=38的BPDU,这一过程和Switch B Port 1/2相同。

到现在为止,Switch A,B,C的每个端口上都保存了自己认为最优的BPDU:


Switch A:
Port 1/1 Root Path Cost=0
Port 1/2 Root Path Cost=0
Switch B:
Port 1/1 Root Path Cost=19
Port 1/2 Root Path Cost=38
Switch C:
Port 1/1 Root Path Cost=19
Port 1/2 Root Path Cost=38


Switch B,C作为non-Root需要在自己的端口中选举一个Root Port,选举的原则是:最小根路径开销(Root Path Cost)。此时Root已经选举出,所以所有端口保存的最优BPDU中的Root Bridge ID相同,选举根端口的第一个决定因素是“Root Path Cost”。Switch B的Port 1/1 Root Path Cost=19,优于Port 1/2的Root Path Cost=38,所以Port 1/1被选举为Switch B的Root Port。
同样,Switch C选举Port 1/1作为自己的Root Port。


(3)选指定端口
为每台non-Root交换机选出Root Port后,接下来要为每个子网段(Segment)选举“指定端口”(Designated Port)。


每个Segment不论有多少个端口,都只选出一个作为Designated Port,用于转发用户流量。这是真正消除环路的步骤,前面的都是铺垫。产生环路的条件是到达同一目的有2条(或2条以上)的路可达,如果一个Segment只有一个端口(Designated Port)作为流量转发的“出入口”,环路必定被消除。


 “条条大路通罗马”在收敛后的STP树中不存在,即使存在物理上的多条通路,STP也会从中选出一条最优的(到Root的距离最短,即Root Path Cost最小),阻塞掉其它的。


图中对于Segment1,有两个端口 Switch A Port 1/1,B Port1/1。


Switch A Port 1/1:Root Path Cost=0
Switch B Port 1/1:Root Path Cost=19
很明显,Switch A Port 1/1距离根桥(Root)的距离更短,Segment1选择它作为Designated Port,所谓近水楼台先得月。
Switch B Port 1/1在竞选Segment1的Designated Port的过程中失利了,但也不必太伤心,因为至少已经有了一份“省长”的工作(Switch B的Root Port),STP会保证它Forwarding,不用担心自己既不是Root Port,又不是Designated Port(失业了)而惨遭Blocked的命运。


Segment3:
对于Segment3,也是同样道理,Switch A Port 1/2被选择作为Designated Port。

Segment2:
为Segment2选举Designated Port,情况变得稍微复杂些。
Segment3上有两个端口 Switch B Port 1/2和Switch C Port 1/2。Switch B Port 1/2计算自己的Root Path Cost=38,Switch C Port 1/2计算自己的Root Path Cost=38。


B Port 1/2收到的C Port 1/2发来的BPDU中,4项技术指标的前两项与自己的相同(前两节打成平局),接下来比较第3项“Sender BID”。

B Port 1/2发现自己的Sender BID=BBBB-BBBB-BBBB,Switch C Port 1/2发过来的BPDU的Sender BID=CCCC-CCCC-CCCC,比自己的高,自己的是最优的,所以把接收到的丢弃。等待2*Forward Delay时间后,如果仍没有收到更优的BPDU,自己就是Segment2的Designated Port了,进入Forwarding状态;
Switch C Port 1/2接收到Switch B Port 1/2发来的BPDU中,Sender ID=BBBB-BBBB-BBBB,比自己的Sender BID=CCCC-CCCC-CCCC优。这种情况下,Switch C Port 1/2有理由为自己的处境感到担忧,因为作为既不是Switch C的Root Port,又不是Segment2的Designated Port的它,接下来将被Block。虽然残酷,但STP也没有办法,如果放任C Port 1/2 Forwarding,环路就产生了,消除环路是STP的天职。


但C Port 1/2也不是从此就永无出头之日,一旦拓扑发生变化,C Port 1/2的机会可能就来了。像直连端口Down掉这种拓扑变化,设备能明显感知,处理起来相对容易些。如果无法明显感知,比如Switch B和C之间连了一个Hub,B Port 1/2 Down掉,C Port 1/2无法明显感知,C Port 1/2唯一能感知的是B Port 1/2不再持续发送(导致自己Block的更优的)BPDU了。


这种情况下,经过Max Age,保存在C Port 1/2的更优的BPDU将老化掉。

C Port 1/2将复出,参加新一轮的Segment2 Designated Port选举,并理所当然的胜出。


三、最后说下定时器
Hello Time,Forward Delay,Max Age
就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,
具体解释下:
1、Hello Time
是交换机发送Configuration BPDU的时间间隔。
也就是说老大(根桥)定期会发布命令给经理(根端口),当业务正常运转时候,所有的非根桥都定期接受老大的命令,然后通过根端口发送出去命令。(默认2S发一次)


2.Forward Delay:侦听和学习状态的持续时间,默认为15秒.这是一个值控制两个状态的时间。


3.Max Age:BPDU存储的时间长度,默认为20秒.如果从收到BPDU开始,20秒内仍未收到BPDU,网桥将宣布保存的BPDU无效,并开始寻找新的根端口。


就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,

最后

关注公众号:**工程师江湖**,联系小编微信 Blue469 获取资料。


就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,

就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,

有帮助?好看!转发!点击下方,这样就可以给群主吃个糖,补充能量。

本文始发于微信公众号(工程师江湖):就问你敢不敢看,STP的所有基础知识点,额,我保证真的so easy,

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: