802.1W 感悟以及和802.1D对比
2016-03-09 23:40
281 查看
上次说了STP的感悟,这次讲讲我个人对与RSTP的感悟。(学校坑爹的开题报告,没时间写微博了) RSTP的出现的原因:就是因为传统的STP是基于被动的收敛时间,收敛时间太慢,根本无法满足真正的生产网络,网络震荡一次,就得等30S-50S,才能上网,估计谁也忍不了吧! 对于如何对RSTP下手呢?我总结如下两点,STP也可以这么考虑①如何形成一棵树②如何维护这个树(随时检测树的状态,当树根被拔了,当树干断了,如何用新的树根和新的树干来再次形成这棵逻辑的树)
802.1D: 形成树:先选举root bridge,再选取RP(形成树,不能转发数据),再选取DP和NDP(防止初期数据环路和BPDU环路),然后经过2倍的forward delay时间,端口的状态才会进入forwarding或者blocking状态。此时才可以转发数据。 维护树:当拓扑变更时候,下游交换机从根端口向上游发送TCN BPDU,上游交换机接收到TCN BPDU就回复一个TCA位置位的配置BPDU,并且转发给上游,然后一直到根桥,根桥收到后发送TC位置位的配置BPDU,来告诉整个的生成树,有拓扑发生变化了,然后所有收到TC置位的BPDU的交换机会将自己的MAC地址表的老化时间改成和forward dealy,以此来刷新mac地址表,准备学习新的拓扑,防止错误的mac地址表的转发还会形成环路.这样发生拓扑改变的端口的最终经过两个forward delay 时间,到达forwrding 状态。 其实你可以想想,一棵树的拓扑发生了变更,对于STP的做法是将这一消息要递送给根桥,然后让根桥来告知整个树,虽然这个方法很好,但是这样就会产生那两个被动的两个forward delay,这也是严重影响生成树收敛速度的原因之一。 802.1W形成树:同802.1D维护树:①当链路失效,不会造成环路,RSTP只要能找到合适的堵塞端口来替代该端口就行了(RSTP使用TC置位的BPDU来表示拓扑的变更,但是为了和802.1D保持协调,RSTP可以产生和处理TCN bpdu) ②当有新的链路的时候,可能会发生环路,此时的检查机制就是P/A机制。
深入剖析阶段:选举过程:①根桥的选举
一开始都会认为自己是根桥,从每个指定端口发送BPDU,就以C为例子。
C会认为我自己是根桥,A收到C的BPDU,比较ROOT ID 会认为A自己是根桥 B收到C的BPDU,会认为C是根桥,这时候B,C 都是rootbridge
A发送BPDU,形成的结果如上图,这时候才能真正选出来,而不是所谓的一句笼统的大家互发 BPDU选举就完事了也就是说一个交换机想要成为根桥,他的 ROOT ID字段必须比所有指定端口能接收到BPDU的ROOT ID字段都要小,这时候他才能成为根桥,一旦他接收到到了更好的,立马脱离根桥的身份.
RSTP更加明确的规定了端口角色和端口状态,更加依赖的是端口角色
STP端口角色:RP DP NDP
RSTP端口角色:RP DP AP(备份根端口) BP(备份指定端口)
收到劣质BPDU的不同反应(X为NDP)
当S1和S2之间的链路失效的时候
STP:S2认为自己根桥,开始发送劣质BPDU,S3的NDP接口将等待20S的超时时间,然后再经过learning →listening→forwarding 约50s的时间
RSTP:S2认为自己根桥,开始发送劣质BPDU,S3的Alternate接口收到后,会告诉S2,S1才是跟,然后经过learning →listening→forwarding 约30s的时间
STP收敛依靠计时器被动进行收敛
RSTP快速收敛边缘端口机制(Cisco的portfast
特性:
①连接PC不需要等待转发延迟直接进入转方状态) ②接口状态的改变不会影响生成树的拓扑变更 ③跟端口的快速切换时,不会堵塞边缘端口 ④tc置位的配置BPDU不会通过边缘端口转发 ⑤ 收到tc置位的配置BPDU,边缘端口的mac地址表项的计时器不会改变 ⑥边缘端口收到BPDU,会立即还原成普通接口)
根端口快速切换机制(上述说到的,某个根端口down了,立马找堵塞端口替代,立即进入转发状态,其实就是Cicso的uplinkfast【级联快速】,并且会向上游发送不带数据部分的伪帧来刷新mac地址表,一般用于接入层交换机)
Proposal/Agreement机制(使指定端口快速进入转发状态,接口两端必须是全双工的点到点链路,否则P/A报文无法相互交互,就只能借助STP的2倍forward delay时间了)
P/A机制
P/A机制即Proposal/Agreement机制。其目的是使一个指定端口尽快进入Forwarding状态。其过程的完成根据以下几个端口变量:A)Proposing。当一个指定端口处于Discarding或Learning状态的时候,该变量置位。并向下游交换传递Proposal位被置位的BPDU。B)Proposed。当下游交设备端口收到对端的指定端口发来的携带Proposal的BPDU的时候。该变量置位。该变量指示上游网段的指定端口希望进入Forwarding状态。C)sync。当Proposed被设置以后,收到Proposal置位信息的根端口会依次为自己的其他端口置位sync变量。如果端口是非边缘的指定端口是则会进入Discarding状态。(这个过程的堵塞状态就是完全的防环)D)synced。当其它端口完成转到Discarding后,会设置自己的synced变量(Alternate、Backup和边缘端口会马上设置该变量)。根端口监视其他端口的synced,当所有其他端口的synced全被设置,根端口会设置自己的synced,然后传回BPDU,其中Agreement位被置位。E)agreed。当指定端口接收到一个BPDU时,如果该BPDU中的Agreement位被置位且端口角色定义是“根端口”,该变量被设置。Agreed变量一旦被置位,指定端口马上转入Forwarding状态。提示:RSTP的端口角色的同步是指根端口信息的同步,因为在一台交换机上只能有一个根端口(堵塞的是非边缘指定端口)某位大神举的一个例子实线为百兆链路,虚线为后加的千兆链路,圆圈为根端口
加上千兆虚线之后的拓扑如下
此时SW6和SW2之间新加的一条千兆链路,马上进行端口角色选举,毫秒附近,SW6 2口根端口确定,如图。立即进入转发状态,此时SW2 2口也立即进入转发状态,SW6根端口和指定端口选举之间肯定会有空隙,SW6的1口还是转发状态此时,图中明显右侧出现临时环路。所以P/A机制出现了SW6根端口选举完毕,立即进入转发状态,但是SW2连接SW6的端口处于Discarding状态,并且向SW6发送一个P置位的配置BPDU,sw6会堵塞所有的非边缘指定端口,进行根端口角色的同步,100%无环路,然后依次向下游传递。
Cisco的PVST,PVST+,RPVST+ pv:per-vlan
ieee定义的STP,RSTP都是无法基于vlan的,cisco将BPDU的BID 八个字节进行了划分
开启了 PVST :在中继链路用ISL封装,ISL封装思科自己不怎么用了
PVST+ :在中继链路用dot1q封装 RPVST+: 在中继链路用dot1q封装为什么优先级设置成4096的倍数,我认为是一共16bit,前12位被占,后面的只能4bit只能以4096的倍数增加了
802.1D: 形成树:先选举root bridge,再选取RP(形成树,不能转发数据),再选取DP和NDP(防止初期数据环路和BPDU环路),然后经过2倍的forward delay时间,端口的状态才会进入forwarding或者blocking状态。此时才可以转发数据。 维护树:当拓扑变更时候,下游交换机从根端口向上游发送TCN BPDU,上游交换机接收到TCN BPDU就回复一个TCA位置位的配置BPDU,并且转发给上游,然后一直到根桥,根桥收到后发送TC位置位的配置BPDU,来告诉整个的生成树,有拓扑发生变化了,然后所有收到TC置位的BPDU的交换机会将自己的MAC地址表的老化时间改成和forward dealy,以此来刷新mac地址表,准备学习新的拓扑,防止错误的mac地址表的转发还会形成环路.这样发生拓扑改变的端口的最终经过两个forward delay 时间,到达forwrding 状态。 其实你可以想想,一棵树的拓扑发生了变更,对于STP的做法是将这一消息要递送给根桥,然后让根桥来告知整个树,虽然这个方法很好,但是这样就会产生那两个被动的两个forward delay,这也是严重影响生成树收敛速度的原因之一。 802.1W形成树:同802.1D维护树:①当链路失效,不会造成环路,RSTP只要能找到合适的堵塞端口来替代该端口就行了(RSTP使用TC置位的BPDU来表示拓扑的变更,但是为了和802.1D保持协调,RSTP可以产生和处理TCN bpdu) ②当有新的链路的时候,可能会发生环路,此时的检查机制就是P/A机制。
深入剖析阶段:选举过程:①根桥的选举
一开始都会认为自己是根桥,从每个指定端口发送BPDU,就以C为例子。
C会认为我自己是根桥,A收到C的BPDU,比较ROOT ID 会认为A自己是根桥 B收到C的BPDU,会认为C是根桥,这时候B,C 都是rootbridge
A发送BPDU,形成的结果如上图,这时候才能真正选出来,而不是所谓的一句笼统的大家互发 BPDU选举就完事了也就是说一个交换机想要成为根桥,他的 ROOT ID字段必须比所有指定端口能接收到BPDU的ROOT ID字段都要小,这时候他才能成为根桥,一旦他接收到到了更好的,立马脱离根桥的身份.
RSTP更加明确的规定了端口角色和端口状态,更加依赖的是端口角色
STP端口角色:RP DP NDP
RSTP端口角色:RP DP AP(备份根端口) BP(备份指定端口)
字节 | 字段 |
2 | Protocol ID |
1 | Version |
1 | Message Type |
1 | Flag |
8 | Root ID |
4 | Cost of path |
8 | Bridge ID |
2 | Port ID |
2 | Message Age |
2 | Maximum Time |
2 | Hello Time |
2 | Forward Delay |
1 | version 1 length |
当S1和S2之间的链路失效的时候
STP:S2认为自己根桥,开始发送劣质BPDU,S3的NDP接口将等待20S的超时时间,然后再经过learning →listening→forwarding 约50s的时间
RSTP:S2认为自己根桥,开始发送劣质BPDU,S3的Alternate接口收到后,会告诉S2,S1才是跟,然后经过learning →listening→forwarding 约30s的时间
STP收敛依靠计时器被动进行收敛
RSTP快速收敛边缘端口机制(Cisco的portfast
特性:
①连接PC不需要等待转发延迟直接进入转方状态) ②接口状态的改变不会影响生成树的拓扑变更 ③跟端口的快速切换时,不会堵塞边缘端口 ④tc置位的配置BPDU不会通过边缘端口转发 ⑤ 收到tc置位的配置BPDU,边缘端口的mac地址表项的计时器不会改变 ⑥边缘端口收到BPDU,会立即还原成普通接口)
根端口快速切换机制(上述说到的,某个根端口down了,立马找堵塞端口替代,立即进入转发状态,其实就是Cicso的uplinkfast【级联快速】,并且会向上游发送不带数据部分的伪帧来刷新mac地址表,一般用于接入层交换机)
Proposal/Agreement机制(使指定端口快速进入转发状态,接口两端必须是全双工的点到点链路,否则P/A报文无法相互交互,就只能借助STP的2倍forward delay时间了)
P/A机制
P/A机制即Proposal/Agreement机制。其目的是使一个指定端口尽快进入Forwarding状态。其过程的完成根据以下几个端口变量:A)Proposing。当一个指定端口处于Discarding或Learning状态的时候,该变量置位。并向下游交换传递Proposal位被置位的BPDU。B)Proposed。当下游交设备端口收到对端的指定端口发来的携带Proposal的BPDU的时候。该变量置位。该变量指示上游网段的指定端口希望进入Forwarding状态。C)sync。当Proposed被设置以后,收到Proposal置位信息的根端口会依次为自己的其他端口置位sync变量。如果端口是非边缘的指定端口是则会进入Discarding状态。(这个过程的堵塞状态就是完全的防环)D)synced。当其它端口完成转到Discarding后,会设置自己的synced变量(Alternate、Backup和边缘端口会马上设置该变量)。根端口监视其他端口的synced,当所有其他端口的synced全被设置,根端口会设置自己的synced,然后传回BPDU,其中Agreement位被置位。E)agreed。当指定端口接收到一个BPDU时,如果该BPDU中的Agreement位被置位且端口角色定义是“根端口”,该变量被设置。Agreed变量一旦被置位,指定端口马上转入Forwarding状态。提示:RSTP的端口角色的同步是指根端口信息的同步,因为在一台交换机上只能有一个根端口(堵塞的是非边缘指定端口)某位大神举的一个例子实线为百兆链路,虚线为后加的千兆链路,圆圈为根端口
加上千兆虚线之后的拓扑如下
此时SW6和SW2之间新加的一条千兆链路,马上进行端口角色选举,毫秒附近,SW6 2口根端口确定,如图。立即进入转发状态,此时SW2 2口也立即进入转发状态,SW6根端口和指定端口选举之间肯定会有空隙,SW6的1口还是转发状态此时,图中明显右侧出现临时环路。所以P/A机制出现了SW6根端口选举完毕,立即进入转发状态,但是SW2连接SW6的端口处于Discarding状态,并且向SW6发送一个P置位的配置BPDU,sw6会堵塞所有的非边缘指定端口,进行根端口角色的同步,100%无环路,然后依次向下游传递。
Cisco的PVST,PVST+,RPVST+ pv:per-vlan
ieee定义的STP,RSTP都是无法基于vlan的,cisco将BPDU的BID 八个字节进行了划分
priority | vlan ID | MAC |
4bit | 12bit | 48bit |
PVST+ :在中继链路用dot1q封装 RPVST+: 在中继链路用dot1q封装为什么优先级设置成4096的倍数,我认为是一共16bit,前12位被占,后面的只能4bit只能以4096的倍数增加了
相关文章推荐
- 如何在ubuntu开启ssh服务-使 SecureCRT远程登录
- 如何在ubuntu开启ssh服务-使 SecureCRT远程登录
- locale命令
- const与sizeof
- 如何在ubuntu开启ssh服务-使 SecureCRT远程登录
- DTD/XXE 攻击笔记分享
- hdu-5583 Kingdom of Black and White(数学,贪心,暴力)
- 头文件
- [Offer收割机]编程练习赛1
- MVC基本开发介绍 (1)列表展示
- PAT- Student List for Course (25)
- 个人对数据结构与算法的总结归类
- 模式和良好做法
- PBOC2.0标准
- 破解android签名验证
- 读《我是一只it小小鸟》有感
- AndroidStudio中关于assets文件夹下放置文件问题
- 置在顶上的一段话
- 【Android】[转] ANR的分析和问题处理
- 逐步观察数组变化