STP RSTP解析


STP交换机接口PPV规则:

STP 状态改变流程规则:

STP下TCN发送条件,满足以下任何一个即可(RSTP中以TC BPDU取代了STP的BPDU中的TCN位):

It has already been briefly explained when a bridge considers it detected a topology change. The exact definition is:

When a port that was forwarding is going down (blocking for instance). DISABLE线路必然发送TCN

When a port transitions to forwarding and the bridge has a designated port. (This means that the bridge is not standalone.)ENABLE线路,若此交换机上没有HOST或开启后计算出接口全部BLOCK,则不发送TCN。

特例是:当一个交换机的接口,本身被选举为Block,这时SHUT,肯定不会发送TCN,因为是从DISCARDING 到DISABLE,没有本质变化。当再次ENABLE该接口时,次接口依然会被选为BLOCK,依然没有本质变化,所以这种情况下是不会发TCN的。

但是,这个接口对端的接口,原状态是Des/FWD,当对端DISABLE的线ENABLE后,它会先将自己的这个端口删除,然后重新设置为Des,然后执行LSR-LRN-FWD这个流程。这时就会发送TCN。

STP接口状态角色改变规则:

一个非根桥,只要它有Alternate接口存在,就证明它的邻居具有比它到达根桥的距离更优的RPC,所以一旦这个非根桥的原ROOT接口变为非ROOT,该桥将直接从ALT接口中随机找出一个作为根接口对外宣告,进行LIS-LNR-FWD的状态变化,此过程中若从其他ALT口接收到更优RPC而转而将那个接口变为ROOT PORT,它可随时将接口直接变回ALT状态。

一个非根桥,若只有ROOT和Designated PORT,说明它是STP中所有成员去往根桥的枢纽,所以一旦它与根桥的链接断开,则它会直接对外宣告自己是根桥,而不需要改变任何接口状态,因为此时它的所有接口已经是desginated的了,已经满足根桥的定义。当一个已经认为自己是根桥,并将所有接口改为Designated/Forwarding 的交换机意识到自己并不是根桥时,他会直接找出自己的根端口改为Root/Forwarding,而不经过Root/Lst – Lnr – FWD的30秒状态变化。

其他任何情况下,不论ROOT还是DESIGNATED PORT,都要经历LIS-LNR-FWD的30秒。

RSTP接口状态角色变化规则:

任何桥上,新选出的Designated port,初始STATE都是Discarding,在被选为DES PORT的同时,它会向对端发送Proposal BPDU与对方协商,看对方接口是不是会将自己认为是可以到达ROOT的必经之路,如果对方认为应该将自己的接口变为ROOT PORT(说明认可了),则会发送回一个ACK BPDU,这时这个新选出的DES PORT将直接从Discarding state变为 forwarding state,而不需经历通常的Discarding-Learning-Forwarding的30秒。

如果一个桥中,原ROOT PORT因为某种原因变为非ROOT PORT(不会动荡,不会变回ROOT),这时新选出的新ROOT将直接进入FWD状态。这点和Uplinkfast功能一样,只是Uplinkfast是将自己的BID设为最高以成为LEAF NODE,才能允许这种新选举出的ROOT PORT的直接状态变化。

因为对端新选出的DES接口发送PROPOSAL认可,而将自己对应接口改为ROOT PORT的交换机(原来就是ROOT PORT,认可PROPOSAL而保持ROOT PORT的也算),同时还会将其他所有接口都变为Discarding状态,并从它的Designated PORT向外发送PROPOSAL(因为此时这些des PORT都处于discarding状态,可视为是新选出的DES接口,满足上面所说发送PROPOSAL的条件)

总之就是一旦新出现D.D端口,就会发Proposal给对家;一旦认可来到Proposal,就直接改相应端口为ROOT口并重启全部DES口为D.D并发Proposal。

因为RSTP中各桥都发送自己的BPDU(每2秒),而不像STP中由根桥发送BPDU再由各桥转发,所以对于Inferior BPDU可以及时回复,而不需要等待因考虑转发BPDU可能延迟所设定的20秒刷新时间。

IGMP Snooping 交换机地址转换过程:

交换机会将多播IP地址如255.135.2.3与它MAC表中虚拟的MAC地址进行对接,这样在本地MAC表中就会有某个接口与此MAC对应的记录,如果有信息要发往该MAC,只需从这个接口发出即可,而不用考虑有多少台机子会收到。这个虚拟的MAC地址换算方法是: 0100.5exx,xxxx,前面01005e是固定组合,不能变动,后面4位XXXX对应255.135.2.3中的后两位,即2和3,然后5e后面的两位XX,是135对应的地址位,但是注意这里保留此8位二进制的第一位为0,即如果为135(对应16进制是10000111),则要去掉头一位1,这样就变成了00000111=7(HEX),所以最终的转换地址是0100.5e07.0203.

交换机只会把第一次收到的IGMP发送给它的默认路由器,以使得路由器知道这个虚拟MAC地址是属于自己管辖范围的,以后再有相同的IGMP MAC,交换机是不会再发给路由器的,因为没有意义。

其他信息总结

在拓扑发生改变的时候STP的收敛时间要用30s到50s,对于一些敏感的网络应用,这种情况难以让人接受。为了使网络拓扑发生改变能够更快的收敛从而转发数据,必须使用一种新的技术。针对此情况RSTP技术而生,其IEEE标准为802.1w。RSTP技术并非一种新的技术,而是对原有的STP技术进行了修改与补充.RSTP可以与STP相兼容,但是会失去RSTP快速收敛的特性。STP端口状态的切换必须被动的等待计时器的超时。而RSTP端口状态的切换却是一种主动的协商。 STP中的非根网桥只能被动的中继BPDU。而RSTP中的非根网桥对BPDU的中继具有一定的主动性。

RSTP端口角色

根端口[root port]

继承了STP中的根端口这一角色与选举规则。

指定端口[Designated Port]

继承了STP中的指定端口这一角色与选举规则。

替代端口[Alternate Port]

非根网桥上的具有到达根网桥次佳路径成本的端口或者是被对端交换机发出的更优的BPDU抑制的端口。该端口提供了到根网桥的替代路径。

备份端口[Backup Port]

如果一个网段的指定网桥有多个端口连到这一网段,其中Port ID最小的端口成为指定端口,次小的端口成为备份端口。该端口提供了指定端口的备份,一旦指定端口失效,备份端口立即转变为Forwarding状态。[现在交换网络中基本没有了备份端口,备份端口产生条件是一条线路在交换机上打环或是两个端口同时连接到集线器]

边缘端口[Edge Port]

此类端口连接到终端设备,该端口不会造成二层环路,配置为此类型端口接口up后直接过渡到转发状态,端口收敛时间是毫秒级的。而在STP中连接终端的端口也要经过30S才可以转发数据,这是一个RSTP重要特性。但收到BPDU则会放弃快速收敛的特性进行STP的正常选举和收敛。

链路类型

在RSTP中还有链路类型这一概念,其工作于半双工端口被分类为共享端口,而工作于全双工的端口被分类为点到点端口。点对点链路具有快速过渡特性,由于现在交换机都为全双工,故不做重点在细说。

 

RSTP端口状态

丢弃状态[Discarding]

接受发送BPDU,不转发用户流量也不学习MAC地址

学习状态[Learning]

接受发送BPDU,不转发用户流量但是学习MAC地址

转发状态[Forwarding]

接受发送BPDU,既转发用户流量又学习地址

 

RSTP报文结构

RSTP报文继承了STP报文结构,但是修改了部分字段。RSTP协议号字段为2,版本字段为2. 另一个变化是在Flag字段,把原来保留的中间6位使用起来。

端口角色

00 未知

01 Alternate / Backup

10 根端口

11 指定端口

 

RSTP的P/A协商快速收敛机制

首先,通过对交换机之间交互的配置BPDU进行比较选出根网桥、根端口和指定端口以及阻塞端口等角色,从而达到在物理冗余网络中避免数据转发循环的目的。 在STP中,当一个端口被选举成为了指定端口之后,该端口还要等待至少一个Forward Delay(Learning)时间才会迁移到forwarding状态。 在RSTP中,被选举为指定端口的端口会先进入Discarding状态,然后马上通过Proposal/Agreement协商机制快速的进入Forwarding状态。这种机制必须在点到点链路上(全双工)使用。 RSTP正是通过BPDU中的建议位与回应位来进行主动协商,从而保证RSTP协议的快速收敛。RSTP到底是如何主动协商的呢,我们接下来看一下RSTP的P/A协商,RSTP采用了分段收敛机制。

RSTP的P/A协商过程

1. 当一个网桥的指定端口进入Discarding或Learniing状态时,由这个端口发送出去的BPDU报文的Proposal位被置位。

2. 收到Proposal位置位的BPDU的网桥,首先检查收到这个BPDU的端口是否为根端口,如果是,则要执行SYNC操作。对于备份端口,端口状态不变,对于边缘端口,端口状态不变,对于指定端口,端口状态变为Discarding。

3. SYNC操作完成,从根端口发送Agreement 位置位的BPDU出去,通知对端的指定端口可以立即转为Forwarding状态。

4. 进入到Discarding状态的端口继续与下游网桥进行P/A协商。

 

RSTP拓扑变更

在RSTP中,只有当非边缘端口进入转发状态的时候才能导致拓扑变更 。拓扑一但变更,RSTP采用TC置位的配置BPDU来加快网络中各个交换机MAC收敛:

1. 本交换机的所有非边缘指定端口及根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。这个时间也是通知到全网交换机网络拓扑变更所需的时间。

2. 在这个时间内,交换机清空这些端口上学来的MAC地址;同时,由这些端口向外发送TC置位的BPDU。一旦TC While Timer超时,则停止发送TC BPDU。

3. 收到TC BPDU的交换机会清空所有端口(收到TC BPDU的端口除外)学来的MAC地址。然后也为所有自己的非边缘指定端口和自己的根端口启动TC While Timer,重复上述的过程。

注意:TC是在发现拓扑结构改变以后再发出的,也就是说STP的网络实际上已经稳定了。TC的作用只是刷新MAC地址表而已。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s