查看完整版本: RSTP

蓝色眼泪 2007-12-14 10:52

RSTP

RSTP是在吸收了Port Fast、Uplink Fast和Backbone Fast(相关知识已在前面的笔记中记录)的基础上产生的,解决了STP收敛比较慢的问题。本文主要在端口状态、端口角色、BPDU、收敛速度和拓扑变化方面对STP和RSTP进行比较。
1、端口的比较:
Port State:

[img]http://www.one-tom.com/bbs/download/file.php?id=71[/img]



Port Roles:

[img]http://www.one-tom.com/bbs/download/file.php?id=72[/img]


如上图:端口角色由原来的RP、DP和Blocking变成现在的RP、DP、AP和BP,RP、DP在以前已经学过现在不在重复。
Alternate port:我理解AP口实际上是提供了一个到根桥的冗余接口,他主要接受从其他桥传过来的BPDU。其实可以把AP口理解成Backbone Fast的接口,一旦B的RP口down掉,AP就能快速的进入Forwarding状态。
Backup port:为桥提供了一个冗余端口,主要接受来自同一个桥的BPDU。这句话开始没有好好的理解,后来才理解。如下图一:假设桥A上有端口1、2和3,那么这三个端口选择DP和BP的时候,主要就是看发送着端口ID,也就是接受来自同一个桥的BPDU

[img]http://www.one-tom.com/bbs/download/file.php?id=73[/img]



2.BPDU的比较:
BPDU格式:RSTP的BPDU如上图二:
在RSTP中BPDU周期性的发送(周期为Hello-Time默认为2秒)即使这个桥没有从根端口收到任何的BPDU,而在传统的STP中只有桥的根端口收到BPDU后,它才会发送BPDU。RSTP有比STP有更快的老化机制,在STP中若一个Blocking的端口在Max-age内仍没有受到BPDU,那么他就会进行端口角色的转换,这主要用于共享型链路。由于现在的链路几乎都为点到点链路,所以在RSTP中若桥在三个周期(Hello-Time)内没有收到BPDU,他就认为邻居已经down掉,从而进行端口转变。


3.收敛的比较:自己认为STP和RSTP最大的区别就在如此,如下图:

[img]http://www.one-tom.com/bbs/download/file.php?id=74[/img]


初始假设A和ROOT间并没有直连,现在突然让A和ROOT直连,那么无论是传统的STP还是RSTP都能很快的判断出应该把CD间的连线给Blocking掉,这点两者并没有区别,但是最大的区别就是如果是STP,那么A上的根端口和根桥的指定端口仍不能马上进入到forwarding状态,这样就会造成网络延迟或者丢包,但是如果是RSTP,A的根端口和跟桥的指定端口能够马上进入到Forwarding状态,这就是两者最大的区别。
为什么RSTP能让端口马上forwarding而STP不能呢?自己的理解就是,连上线后,跟桥会发送一个BPDU给A,这个BPDU里面的Proposal即建议字段为1,A经过比较后接受了根桥的建议,会把自己的所有非边界端口Blocking掉(当然除了接受跟桥BPDU的那个端口),这个过程叫做同步(snyc),然后发一个Agreement为1的BPDU给根桥,根桥受到Agreement后立马把接口进入到Forwarding状态,这是因为根桥已经知道A接受了他的建议,并且Blocking掉了所有的非边界端口,不可能会产生环路。而在传统的STP中并没有同步和回执这个过程,所以跟桥“不敢”断定是否有环路,只能让接口进入到Listening状态。
当然在RSTP中端口要变成Forwarding,必须受到A发回的Agreement为1的BPDU,假设线路比较拥挤,根桥并没有受到Agreement为1的BPDU或者很晚后才受到,这时候即使运行了RSTP,他的端口还是缓慢的经过Listening-Learning最后进入Forwarding。
本人感觉这个建议同步和回执的过程就是RSTP和STP的最大区别。当然A Blocking掉他的所有非边界端口后,也会向他的下游桥发送建议字段为1的BPDU,会经历同样的过程,具体见下图。由于这个过程很快,所以RSTP就能很快的收敛。

[img]http://www.one-tom.com/bbs/download/file.php?id=75[/img]
4.拓扑变化:
首先要明白交换机为什么要发TC字段为1的BPDU即拓扑变化,主要目的是让交换机刷CAM表,如下图:
若桥B的RP端口down掉,STP或者RSTP会有一个重算的过程,很快就能让A的Blocking端口进入到Forwarding状态,但是若发拓扑变化的BPDU,根桥中仍然会有某些条目,他们的MAC地址对应PORT1,当ROOT收到数据帧后仍会把数据帧从PORT1发出去,这样就会丢包。所以我自己理解TC就是让交换机刷CAM表。

[img]http://www.one-tom.com/bbs/download/file.php?id=76[/img]


在STP中TC只会延着根端口发给ROOT,经过ROOT的运算后会重新延着根端口发给每个桥,每个收到这种BPDU(TC字段不为0)的桥就会刷新自己的CAM表。


[img]http://www.one-tom.com/bbs/download/file.php?id=77[/img]


但在RSTP中,一旦某个桥发现了TC,他就会在一段时间内把这个消息从自己所有的接口泛洪出去(当然除了TC变化的端口),这样整个网络就能很快的收敛。

[img]http://www.one-tom.com/bbs/download/file.php?id=78[/img]



RSTP与STP的兼容:

[img]http://www.one-tom.com/bbs/download/file.php?id=79[/img]



因为RSTP和STP的BPDU的版本号不同,运行STP的交换机在收到RSTP的BPDU时就会丢掉,而运行了RSTP的交换机是接受STP的BPDU的,因此上图的A和B收到C的BPDU后就把自己下面的接口改成运行STP模式的端口,见下图,假设A比B和C优先,那么A就会是这个网段的指定桥,就算C被移走,由于AB不知,所以A和B下面的端口仍然运行STP,直至手动改成RSTP。

[img]http://www.one-tom.com/bbs/download/file.php?id=80[/img]
页: [1]
查看完整版本: RSTP