1.STP(802.1D):该协议执行STA(生成树算法),以避免成环。
术语:网桥标示符(优先级+mac地址),生成树路径开销(带宽越高开销越小),桥协议数据单元
桥协议数据单元(BPDU),默认两秒发送 <script src="http://www.net130.com/CMS/JS/newsad.js" language="javascript" type="text/javascript"></script> 一次(可配置成1到10秒间的任意一值),多播目标地址是0180C2000000,BPDU数据中包括的比较参数有:根id,开销,桥id,端口id.BPDU是由根发出的,叫做配置BPDU,其他交换机接收并作出转发!
生成树接口状态:阻塞——监听——学习——转发
阻塞是由生成树协议算法决定哪些端口是阻塞状态的,阻塞状态还是会监听BPDU,只是不再参与数据转发了;从阻塞到监听这个过程是等待BPDU 的过程,协议设计的时候只是为了等待3个BPDU经历最长路径(七段链路)传递的过程,经历的时间是20s(2x7+2x3=20),而如今经历这20s 只是为了等待链路状态稳定下来,当阻塞状态经历20s都没有收到BPDU则转向监听状态,监听状态是选根和决定各端口类型的状态;从监听到学习需要经历 15s的时间,处于学习状态的端口可以学习流入帧的MAC地址了,不过还不能转发数据帧;从学习到转发还要经历15s的时间,处于转发状态的端口才能转发 数据帧。
STP的操作过程:选:a.根(树的源端)
b.根端口(执行收动作)
c.指派端口(执行发动作)
d.非指派端口(阻塞状态)
比:a.根id
b.开销
c.发方桥id
d.端口id
STP拓扑变更:a.感知的交换机发出TC BPDU到传递根,根回应TCA(这样一个交互过程不是在根和感知交换机之间,而是之间传递的每段链路都有);
b.根做出BPDU的重新配置;
c.根发出配置BPDU通告。
2.pvst 每vlan生成树(cisco only)
概念,即为每一个vlan维持一个生成树。
优点,可以做负载平衡且又能相互备份。
缺点,由于维持的树过多,会影响交换机性能。
配置:(cisco交换机默认就是pvst)
(config)#spanning-tree vlan xx priority xx
(config)#spanning-tree vlan xx maxage xx
(config)#spanning-tree vlan xx priority xx di (调整直径,能按比例调制所有的时间)
(config)#spanning-tree vlan xx root (强制制定根)
所有的STP时间要保持与root bridge一致,所以要更改时间只需在root上更改即可!
#sh spanning-tree vlan xx (detail)
#sh spanning-tree int x (detail)
3.rstp 快速生成树协议(802.1w)
rstp相当于一种握手机制,是主动的,而stp是被动等待通告。
端口分类:p to p,可以做握手机制(全双工则是该类)
共享,不可以做握手,只能通过老的机制收发(半双工则是该类)
又分成:边界端口,不接收bpdu,不参与stp,不用感知top,也没有必要感知
非边界端口,收bpdu,参与stp,top是它需要参与感知的
对于以上的分类而言,p to p握手机制可以快速的协商收敛,而设定边界(如接pc的端口)可以免除参与stp.
端口状态:丢弃(相当于stp中的阻塞和监听)——学习——转发
以前的非指派端口成为现在的:预备端口 & 备份端口
预备端口,bpdu来自别人,用来备份根端口;
备份端口,bpdu来自自己,用来备份指派端口。
4.mst 多生成树(802.1s)
主要是设置了生成树实例,再与每个vlan做映射,将vlan映射到所属树中,比pvst减少了生成树个数,加快了收敛,降低了设备资源使用率,同时仍然可以做负载平衡和相互备份。
配置:step 1: spanning-tree mode mst
step 2: spanning-tree mst config
step 3: name 名
step 4: revision 号
step 5: instance 号 vlan vlan-range
(config-mst)#sh current 显示已有的配置
(config-mst)#sh pending 显示未提交的配置
#sh spanning-tree mst config
#sh spanning-tree mst (int)
5.802.1D的增强
(1)portfast:配置在2层接入端口,能使其立即进入转发状态,而不用经历监听和学习状态(因为抑制了TCN,不通告top变更),提高了可用性,还可以防止如端口接了pc造成dhcp超时这样一种问题。
配置:(config-if)#spanning-tree portfast
(config)#spanning-tree default
(2)uplinkfast:配置在上行接入汇聚SW的端口,能使交换机端口即刻进入转发状态,不经过监听和学习。
原理:抑制TCN,使用伪多播帧连接根,通告链路故障MAC地址,进而便于上游交换机能够将MAC地址表从发生故障的链路立即移动到新端口。
(config)#spanning-tree uplinkfast
vlan优先级配置过这不能再开启uplinkfast,这个命令影响的是所有的vlan.
(3)backbonefast:用于核心中,收敛能从50s降到30s,但用的少,因为核心都是跑的路由,靠路由收敛了。
提高生成树的弹性:BPDU防护:防止交换设备接到portfast口,引起环路,如果接上了,使其进入err状态; (config)#spanning-tree portfast bpduguard
BPDU过滤:用于过滤接终端interface发bpdu影响终端设备; (config)tfast bpdufilter default (全局启用,有在接口上的命令)
BPDU时滞:核心交换机上使用的技术,防止交换机过忙无法正常发bpdu,如果出现这种情况,通告snmp引起网管的戒备;
根保护:抵制新接入的交换机因为priority高而成为根; (config)#spanning-tree guard root
loop防护:该技术不能与根保护一起用。
如果同时配置BPDU防护和BPDU过滤,过滤生效。