技术背景:二层交换机网络的冗余性与环路
二层环路带来的问题(三层环路,ttl跳数达到一定次数会丢弃)
典型问题
1:广播风暴不停的在接口内复制转发广播
2:MAC地址漂移
sw1接口1与2,对sw3的接收mac会根据环路状态不断调整,是从接口1来的mac或者是从接口2来的mac
解决环路问题
初识生成树协议
在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路
交换机上运行的生成树协议会持续监控网络的拓扑接口,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整。
因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。
三层环路(Layer 3 Loop)
常见原因:路由环路;
动态路由协议有一定的防环能力;
IP报文头部中的TTL字段可用于防止报文被无止尽地转发。
二层环路(Layer 2 Loop)
常见原因:网络中部署了二层冗余环境,或人为的误接线缆导致;
需借助特定的协议或机制实现二层防环;
二层帧头中并没有任何信息可用于防止数据帧被无止尽地转发。
生成树协议在园区网络中的应用位置
STP的基本概念:桥ID
桥ID(Bridge ID,BID)
IEEE 802.1D标准中规定BID由16位桥优先级(Bridge Priority)与桥MAC地址构成
每一台运行STP的交换机都有一个唯一的BID。
BID桥优先级占据高16bit,其余的低48bit是桥的MAC地址。
在STP网络中,BID最小的设备会被选举为根桥。
Bridge (网桥),最早网桥是起着交换机功能,现在网桥功能被交换机整合,Bridge延申下来,代指交换机。
步骤:
1、选出根桥,每个交换机运行了STP,有一个桥ID,最小的ID为根桥
2、选出根端口,每个非根桥上选取一个根端口,收到bpdu最优的端口
3、选出指定端口,一个接口,发的bpdu,比收到的bpdu,更优,是指定端口(DP)
4、阻塞其它端口,非指定端口就会被阻塞
esnp实验
进入lsw1
[Huawei]display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge :32768.4c1f-ccbf-60d7
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC :32768.4c1f-cc2c-33c5 / 20000
CIST RegRoot/IRPC :32768.4c1f-ccbf-60d7 / 0
CIST RootPortId :128.2
BPDU-Protection :Disabled
简单的看一下前几行信息
CIST Bridge :桥ID 32768.4c1f-ccbf-60d7
可以通过display interface vlan 1命令验证MAC信息对不对
[Huawei]dis inter vlan 1
Vlanif1 current state : UP
Line protocol current state : DOWN
Description:
Route Port,The Maximum Transmit Unit is 1500
Internet protocol processing : disabled
IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 4c1f-ccbf-60d7
Current system time: 2023-01-08 16:44:38-08:00
Input bandwidth utilization : --
Output bandwidth utilization : --
CIST Root/ERPC :根桥信息 32768.4c1f-cc2c-33c5 / 20000
32768这个数字是选取要求:4096的倍数,桥优先级
后面是根桥的mac地址,桥id(BID)最小的选举为根桥
可以通过设置前面的桥优先级数字项小来设置根桥
设置桥优先级命令:(待补充)
华为交换机默认是开启STP功能的
开销(Cost)
(这里的cost与其他表的cost单独,计算方式与路由下一条cost无关,与vlan的cost也不一样,STP独立的cost)
- 每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。
- 接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
- 接口带宽越大,则Cost值越小。
- 用户也可以根据需要通过命令调整接口的Cost。
对应关系表:
接口Cost是已经激活了STP的接口所维护的一个开销值,与接口的速率有关联,并且设备使用不同的算法时,相同的接口速率对应不同的Cost值
思科老设备用IEEE 802.1d-1998标准
锐捷用IEEE 802.1t标准
可以通过设备设置项设置同一个标准,同步不同厂家的设备,使其通信正常。
根路径开销(Root Path Cost)(有点绕口)
- 在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。
- 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。
接口ID(Port ID,PID)
- 运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。
- 接口ID由两部分构成的,高4bit是接口优先级,低12bit是接口编号。
- 激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128.用户可以根据实际需要,通过命令修改该优先级。(16的倍数)
BPDU(Bridge Protocol Data Unit,网桥协议数据单元)
- BPDU是STP能够正常工作的根本。BPDU是STP的协议报文
- STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。
- BPDU分为两种类型:
- 配置BPDU(Configuration BPDU),桥主动发送
- TCN BPDU(Topology Change Notification BPDU),非根桥有故障触发
- 配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在 网络拓扑发生变更时才会被触发。
配置BPDU的报文格式
PID | PVI | BPDU Type | Flags | Root ID | RPC | Bridge ID | Port ID | Message Age | Max Age | Hello Time | Forward Delay |
---|---|---|---|---|---|---|---|---|---|---|---|
2 | 1 | 1 | 1 | 8 | 4 | 8 | 2 | 2 | 2 | 2 | 2 |
PID:协议ID,对于STP而言,该字段的值总为0
PVI:协议版本ID,对于STP而言,该字段的值总为0
BPDU Type:指示BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若值为0x80,则为TCN BPDU
Flags:标志,STP只使用了该字段的最高及最低两个比特位,最低位是TC(Topology Change,拓扑变更)标志最高位是TCA(Topology Change Acknowledgment,拓扑变更确认)标志
Root ID:根网桥的桥ID
RPC:根路径开销,到达根桥的STP Cost
Bridege ID:BPDU发送桥的ID
Port ID:BPDU发送网桥的接口ID(优先级+接口号)
Message Age:消息寿命,从根网桥发出BPDU之后的秒数,每经过一个网桥都减1,所以它本质是到达根桥的跳数
Max Age:最大寿命,每一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为为该接口连接的链路发生故障。默认20s
Hello Time:根网桥连续发送的BPDU之间的时间间隔,默认2s
Forward Delay:抓发延迟,在侦听和学习状态所停留的时间间隔,默认15s,阻塞到转发需要30s转发延迟
配置BPDU的比较原则
STP按照如下顺序选择最优的配置BPDU:
- 最小的根桥ID
- 最小的RPC(根路径费用)
- 最小的网桥ID(会发送路径网桥id到根桥)
- 最小的接口ID
查看交换机STP摘要信息
display stp brief
[Huawei]dis stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ALTE DISCARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
STP的接口状态
状态名称 | 状态描述 |
---|---|
禁用(Disable) | 该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down |
阻塞(Blocking) | 该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习 |
侦听(Listening) | 当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习,15s |
学习(Learning) | 当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习,15s |
转发(Forwarding) | 处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。接口的角色需要是根接口或指定接口才能进入转发状态 |
MAC地址表的老化时间是300s
STP的基础配置命令
1、配置生成树工作模式
stp mode{stp|rstp|mstp}
交换机支持STP、RSTP、MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。
2、(可选)配置根桥
stp root primary
配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
3、(可选)备份根桥
stp root secondary
配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备的优先级。
4、配置交换机的STP优先级
stp priority priority
缺省情况下,交换机的优先级取值是32768
5、配置接口路径开销
stp pathcost-standard{dot1d-1998|dot1t|legacy}
配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。
6、stp cost cost
设置当前接口的路径开销值。
7、配置接口优先级
stp priority priority
配置接口的优先级。缺省情况下,交换机接口的优先级取值是128.
8、启用STP/RSTP/MSTP
stp enable
是能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。
RSTP对STP的改进
RSTP的接口角色共有4种:根接口、指定接口、预备接口和备份接口
端口状态不同
- RSTP的状态规范把原来的5种状态缩减为3中。
- 如果不转发用户流量也不学习MAC地址,那么接口状态就是Discarding状态。
- 如果不转发用户流量但是学习MAC地址,那么接口状态就是Learning状态。
- 如果既能转发用户流量又学习MAC地址,那么接口状态就是Forwarding状态。
STP接口状态 | RSTP接口状态 | 接口在拓扑中的角色 |
---|---|---|
Forwarding | Forwarding | 包括根接口、指定接口 |
Learning | Learning | 包括根接口、指定接口 |
Listening | Discarding | 包括根接口、指定接口 |
Blocking | Discarding | 包括根接口、指定接口 |
Disabled | Discarding | 包括根接口、指定接口 |
进阶课程以后会学前情预告
STP/RSTP的缺陷:所有的VLAN共享一颗生成树
- RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。
- 但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一颗生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发
解决方式
VBST:基于VLAN的生成树
华为提出VBST(VLAN-Based Spanning Tree)生成树解决方案。该解决方案中,生成树的形成是基于VLAN的,不同VLAN间可形成相互独立的生成树,不同VLAN内的流量沿着各自的生成树转发,进而可实现流量的负载分担。
MSTP:多生成树
为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。
MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中,实现VLAN数据的负载均衡。批量配置VLAN 效率高
堆叠与园区网络树形结构组网形态
Smart Link
感叹,刚看了一个高中生的学习成果,竟然开始分析其中的问题点,感觉好卷好卷,摸摸头发,没掉完继续把,无语泪两行啊