在二层网络中,如果没有生成树协议,会带来哪些问题:
1、广播风暴
2、MAC地址表飘移
3、重复数据帧接收
回顾生成树有哪些术语:
1、根桥 为了破除环路,生成树网络首先要选举出一个首脑,头脑,首领。叫做根桥,也叫作根交换机
2、桥ID bridge-id:由桥优先级(默认取值为32768,必须为4096的倍数)和桥MAC地址组成
3、root ID 根桥的桥ID(经常在BPDU报文中看到)
4、非根桥 除了根桥以外的交换机都叫做非根桥或非根交换机,一个生成树网络中有且只有一个根桥
5、端口ID 也叫作PID:Port ID:由端口优先级(默认取值128,必须是16的倍数)和端口号构成
6、RPC root path cost 根路径开销,即到达根桥的开销值 交换机计算生成树开销值根据dot1t协议计算,千兆接口全双工为20000
7、根端口 又叫做RP,root port:非根桥上去往根桥最近的端口(非根交换机接收最优BPDU的端口成为根端口)
8、指定端口 又叫做DP,会在每一条链路上的两个端口之间选取出一个指定端口用于转发BPDU
9、BPDU 桥协议单元,是生成树协议唯一的报文,分为配置BPDU和TCN-BPDU,只有根桥可以发出配置BPDU,其他非根桥转发根桥的配置BPDU,非根桥可以发出TCN-BPDU
根桥ID:0741,开销值20000
指定端口帮助根桥转发BPDU,BPDU只能从指定端口发送,根端口是不发送BPDU的,只接收BPDU
总结:发送的为指定端口;接收的为根端口
一、STP:
1、选举根桥
所有交换机在初始状态下都会认为自己是根桥,发送以自己为根的BPDU(报文中的root id字段为自己的BID
所有的交换机都会使用BPDU中的root id来进行PK,比较桥ID,谁的BID更优秀谁将成为根桥。
BID的比较原则:首先比较桥优先级,数值默认为32768,越小越优。如果优先级比较不出来,则继续比较桥MAC地址,越小越优先。
2、在每一台非根交换机上选举一个根端口
选举原则:非根交换机接收到最优BPDU的接口为根端口(RP)
最优BPDU的标准:
2.1 root id小的 根桥的桥ID
2.2 RPC小的(报文中携带的RPC+该接口的RPC)
2.3 sender bid小的 由桥优先级(默认取值为32768,4096倍数)和桥MAC地址组成
2.4 sender pid小的 由端口优先级(默认取值128,16的倍数)和端口号构成
2.5 本地pid小的 即 接口id更小的
3、在每一条链路上选择一个指定端口
当非根交换机选举出根端口以后,将会默认其他端口为指定端口。那么就会将根端口接收到的BPDU进行一个加工,将自己的一些参数加工后,生成新的BPDU由这些指定端口向外发送
这个指定端口在向外发送加工后的BPDU时,同时也会受到对向发来的BPDU。这时就要进行PK:
3.1 收到对端发来的BPDU后,如果认为自己的BPD更优秀,那么DP端口不会改变,继续保持为DP角色收到
3.2 对端发来的BPDU后,如果认为对方的BPDU更优秀,那么DP端口将会被阻塞。
注意:**根桥的所有端口默认为指定端口**
STP小总结:
1、STP的端口角色:
RP:根端口
DP:指定端口
AP:预备端口(阻塞端口)(不属于STP的端口角色) 属于根端口(RP)的备份
BP:备份端口(不属于STP的端口角色) 属于指定端口(DP)的备份
所有:STP的端口角色只有两种
2、STP的端口状态:
2.1 disable 端口down或者没有开启STP协议,这时该接口不处理任何BPDU
2.2 listening 接收BPDU,发送BPDU,不学习MAC地址,不转发数据
2.3 learning 接收BPDU,发送BPDU,学习MAC地址,不转发数据
2.4 forwarding 接收、发送BPDU,学习MAC地址,转发数据
2.5 blocking 接收、不发送BPDU,不学习MAC地址,不转发数据
{
1:disable:端口禁用或者链路失效
2:blocking:端口初始化或使能、或者为阻塞状态(1->2或3->2)
3:listening:端口被选为根端口或者指定端口
4:learning:计时15s
5:forwarding:计时15s 历经30s
}
3、拓扑改变(TC和TCA置位)
在STP协议中,BPDU有两种类型,分别为配置BPDU和TCN-BPDU
当非根交换机网络拓扑发生改变时,会发送TCN-BPDU给根桥,沿路交换机会给原始交换机回复TCA,同时继续向根桥转发该TCN-BPDU
当根桥收到TCN-BPDU后,将会沿原路回复TC和TCA置位的配置BPDU,沿路收到TC置位的BPDU时将会把自己的MAC地址表老化时间强制修改为15s。
(mac地址默认的老化时间是5min)
TC和TCA都置位为1代表要快速收敛了
4、STP的几个计时器
4.1 hello time:2s一次
4.2 老化时间max age:20s
4.3 message age:每转发一次会+1,默认最大不超过20跳
4.4 forwarding delay:15s
blocking->Listening很短暂就选出好了,其他两个就很久各自要15s才能到达
由于STP一收敛就断30s,所以当网络拓扑频繁发生变化时,网络也会随之失去连通性。所以2001发布了802.1w标准定义的RSTP(STP:802.1d,MSTP:802.1s)
二、RSTP:
1、端口角色的扩充
RP:根端口
DP:指定端口
AP:预备端口(阻塞端口),给RP做备份的
BP:备份端口(backup port),给DP做备份的
2、端口状态的优化
对于disable listening blocking状态来说结果都是不转发流量,不学习MAC,RSTP将这3个状态合并为一个:discarding状态(3合1状态)
3、P/A机制
4、根端口快速切换机制
5、次优BPDU立即处理,配合P/A机制
6、EP(边缘端口)
RSTP中一旦端口变为RP,先进入到侦听,再学习,再转发
RSTP中有PA协商,从discarding直接到达Forwarding状态
在华为设备中:A一直都是1,不会变成0
3:P/A机制:
P/A机制原理:两个交换机(1、2)都发送P置位的BPDU,比较两个桥ID哪个更优,更优的就继续发送以P置位的BPDU,2则发送A置位的BPDU,端口角色也从DP更换成RP。端口状态也直接变成Forwarding,这时候1收到2的A置位的BPDU,那么1的端口角色保持DP,端口状态会变成Forwarding状态,此时,交换机1发送的BPDU不再需要P置位,因为它已经是根桥。A置位用于确认收到的BPDU信息。
解析:即代表上述中的2发送A置位的BPDU,端口角色也变成了RP,端口状态变成Forwarding
解析:代表上述中的1收到2的A置位的BPDU,端口角色仍为DP,端口状态为forwarding。因为这时候它已经是根桥ID了,所以不用把P置位了
RSTP报文解析:
RSTP协议
RSTP版本
BPDU的类型(RSTP中只有这一种)
BPDU flag:
TC和TCA为1的时候要快速收敛
Proposal和agreement(统称PA协商)P置位、A置位
如果forwarding和learning都为1就代表Forwarding(转发)状态,
如果forwarding为0和learning为1就代表learning状态
如果forwarding和learning都为0就代表discarding状态
Port Role:Designated(DP)指定端口角色 若是为Root则是RP根端口
Root ID:根桥ID
Root Path Cost:到达根桥的开销值
Bridge Identifier:发出该报文的桥ID
PID:0x8001端口ID(端口优先级(默认为128)+端口号)(8等于1000,1等于0001,合成等于128)
4:根端口快速切换机制
AP直接变成RP,并进入forwarding状态(不需要像STP等30s才能进入)
5:次优BPDU立即处理,配合P/A机制
AP会收到SWB发送的P置位的BPDU,同时也发送SWA发送给SWC的BPDU,两者进行PA协商,最后SWC的AP阻塞端口变更为DP,SWB的DP端口变更为RP。
如果在STP中,SWC就要等SWA给SWC的BDPU老化时间(20s),然后再等SWB与SWC的STP收敛,然后AP会变成DP(30s)
6:EP边缘端口
为了不让PC与交换机的收敛还要照着STP收敛速度等30s 而设计的
6.1:当配置边缘端口,那么该端口默认不会进行STP收敛工作,而是直接进入forwarding(转发)状态
6.2:当边缘端口收到BPDU后,该接口变成普通端口,进行生成树收敛工作。
6.3:边缘端口每2s会发送一个BPDU,用于判断是否自环
6.4:当检测到自己发出的BPDU从其他边缘端口收进来时,会判断为**自环**,然后2个边缘端口都会变成普通端口,进行生成树收敛工作。
交换机上的
stp mode rstp //配置rstp
stp priority 0 //配置stp优先级
interface GigabitEthernet0/0/3
stp edged-port enable //将端口配置为边缘端口
[ISW8]stp edged-port default //全局边缘端口
stp disable //关闭stp
stp enable //开启stp
display bridge mac-address //比较桥MAC地址
eg:System bridge MAc address:4c1f-cc47-332e
LSW5配置了边缘端口,每2s发送BPDU,
解析:发送一个组播地址,(只有加入这个组播,才能处理这个BPDU),但是又因为它不支持生成树,即不在这个组里,所以无法处理。所以LSW5两个接口都收不到对方接口的BPDU,所以无法进行生成树的收敛了,所以就导致环路。
如果LSW6是一个物理层设备就可以直接作为转发设备。(交换机至少是2层设备,不能直接透传组播流量)所以会把BPDU转发给LSW5的另一个接口,所以会进行生成树的收敛,LSW5的g0/0/1接口就会进入Forwarding状态,g0/0/2接口就会进入discarding状态。
组播:以 01 开头的MAC地址是组播地址
关于STP和RSTP的问题:
5.1 端口状态优化
原本STP公有协议中具有5种端口状态,但是华为在实现STP协议时,参考了RSTP的相关特性,因此华为设备中的STP协议只具有三种状态,和RSTP一致
5.2 端口角色的优化
原本STP只有2个端口角色,华为在实现STP时借用了RSTP的端口角色,因此在STP中,可以看到RP DP AP BP等4个端口角色,和RSTP一致5.3 STP对于AP接口的优化
原本STP协议中AP接口对于次优BPDU不会立即处理,需要等待20s的老化时间华为在实现STP协议时参考了RSTP的特性,AP接口可以立即处理次优BPDU了,但是时间上仅仅从50s缩短至30s。(因为没有P/A机制)
5.4 STP也可以支持EP端口角色
BPDU保护
1、针对对象:边缘端口
由于边缘端口存在一定风险,当外接支持生成树功能的交换机时会触发BPDU收敛,如果新接的交换机BID更优秀,那么可能会造成根桥易主,直接造成网络重新收敛,导致断网。
保护方法:针对边缘端口配置BPDU保护。
作用原理:当边缘端口配置了BPDU保护以后,边缘端口在收到BPDU以后,该接口会进入error-down状态。
如果直接连接会导致:断开30s
[LSW1]stp mode rstp
[LSW1]stp priority 4096
[LSW2]stp mode rstp
[LSW2]stp priority 32768
[LSW2-GigabitEthernet0/0/2]stp edged-port enable //让2接口变成边缘端口就行
[LSW2]stp bpdu-protection //全局下配置BPDU保护功能,那么只要是边缘端口就会默认将开启BPDU保护功能
[LSW3]stp mode rstp
[LSW3]stp priority 0
开启完后,就算手动把LSW2与LSW3的接口进行undo shutdown,则先变成up状态,接着又收到了对方的BPDU报文,所以又变成down状态(Administratively down)了
配置边缘端口的两种方法(全局配置和上述演示的单个接口配置)
stp edged-port default //全局配置该命令后,交换机的所有接口全部配置为边缘端口
如果需要改成普通端口stp edge-port disable
恢复措施:
手动恢复:关掉LSW3的stp,在接口下undo shutdown
自动恢复:[S8]error-down auto-recovery cause bpdu-protection interval 30//配置由于bpdu保护被shutdown的接口在30秒后自动恢复
记得先配置这个,如果目前LSW3是开启的,就先把LSW3的stp取消,再开启,再取消,就可以等到他30s自动回复了
根保护
针对对象:普通端口
作用原理:
如果一个接口没有开启边缘端口,那么这个接口就无法使用BPDU保护,
那么就只能使用根保护功能。根保护功能可以将一个端口强制为DP接口,防止周围交换机成为根桥。当一个接口开启根保护后,一旦收到了更优的BPDU时,那么接口角色不变,接口状态变为discarding
注意:根保护只能保护DP接口,不能保护RP接口:
解析:
配置完后,他的接口会被成阻塞状态,虽然能收到另一个交换机的BPDU,但是不理他
恢复:当接口不再收到更优的BPDU之后,将会进入正常的STP收敛过程。理论上这个恢复时间为2个转发时延
保护的目的都是为了不让根桥变动,从而发生网络动荡
环路保护
现象:
在已经形成环路的交换网络中,由于光纤链路出现单通故障,导致RP接口无法收到根桥发来的BPDU,那么老化时间超时后,RP接口将变成DP接口,AP接口变成RP接口并且快速进入转发状态。此时DP接口将会由discarding状态经过2个转发时延后进入到forwarding状态,此时将会导致一个方向的环路问题。
作用:为了防止出现这种环路,对根端口开启环路保护后,在无法收到上游发来的BPDU后,根端口会变为DP角色并且保持discarding状态不会在变化。
环路保护可以在RP和AP接口上开启。
命令:
stp loop-protection//在该接口开启环路保护功能,一旦链路恢复通畅,将立刻恢复正常的STP收敛结果。恢复。
TC-BPDU保护(限制):
现象:运营STP的交换机,在默认接收到TC-BPDU后会删除MAC地址表项和ARP表项作用:防止TC-BPDU泛洪。命令:
//接口下开启TC-BPDU限制功能[HUAWEI-GigabitEthernet0/0/1l stp tc-restriction enable//全局开启TC-BPDU保护单位时间[HUAWEI] stp tc-protection interval 10HUAWEI ]//全局开启Tc-BPD单位时间内的接收报文数量值stp tc-protectionthreshold 5综上:以上三条命令配合使用,实现该接口在10秒钟内最多只能接收5个TC-BPDU,超限接收则丢弃
MSTP
由于生成树会进行破环,将一条链路进行阻塞(备份)
因此会产生一些问题:
问题1:次优路径
问 题2:链路不能负载分担
问题3:部分VLAN链路不同
华为中,STP和RSTP都跑在一颗生成树上(另外一颗会被阻塞掉),所以MSTP生成树随之诞生
[LSW3]stp mode mstp //stp调整为MSTP
[SW1]stp region-configuration //进入MSTP域配置视图
[SW1-mst-region]region-name HUAWEI //配置MST的域名,如果没有配置,缺省会使用桥MAc地址代替
[LSW1-mst-region]revision-level 12 //配置修订级别 如果没有配置,缺省为0
[SW1-mst-region]instance 10 vlan 10 //将vlan10加入实例10
[SW1-mst-regionlinstance 20 vlan 20 //将v1an20加入实例20
[LSW1-mst-region]active region-configuration//激活以上配置(必须激活才会生效,每增加新配置,都要重新激活)
交换机都要加上以上配置
[SW1]stp instance 10 root primary //将交换机1配置为实例10的主根(作用就是实例10的优先级配置为0)
[SW2]stp instance 20 root primary //将交换机2配置为实例20的主根(作用就是实例20的优先级配置为0)
[SW2]stp instance 10 secondary //将交换机2配置为实例10的备份根桥,一旦sw1挂了,sw2将成为实例10的根桥
[SW1lstp instance 20 secondary //将交换机1配置为实例20的备份根桥,一旦sw2挂了,sw1将成为实例20的根桥
常用查看命令:
1、[SW1]display stp instance xx //查看当前实例详细信息
2、[SW1ldisplay stp region-configuration //查看当前MST域内的详细配置
这时候就可以解决阻塞问题,实现负载均衡
但是如果一个交换机挂了的话,就不行了(因为vlanif三层挂了,vlan10无法通信),所以需要VRRP协议(虚拟路由器冗余协议(共有协议))
VRRPv2仅适用于IPv4网络,VRRPV3适用于IPv4和IPv6两种网络.
VRRP协议报文:
只有一种报文:Advertisement报文;其目的IP地址是224.0.0.18,目的MAC地址是01-00-5e-00-01-12,协议号是112。
第一个:密码
第二个:抢占(自动开启)
第三个:优先级(默认100,1-254,越大越优)
第四个:控制报文的发送间隔(1s一次)
第五个:做联动的
第六个:版本(-3对应IPV6)
第七个:VRRP的ip号