HCIP笔记13-交换(2)

一台交换机上的一个接口可以映射多个不同的MAC地址,但一台PC上一个MAC只能对应一个接口

三层架构--冗余--二层的桥接环路

导致的问题:

1.广播风暴

2.对同一数据帧的反复拷贝

3.MAC地址表翻滚

这三个问题将不断占用硬件资源,逐渐导致设备性能极限,设备过热保护;重启或关机

STP生成树 逻辑阻塞交换网络中的部分接口;实现从根到所有节点唯一尽量最短路径;

当最佳链路故障时,再打开部分阻塞端口,来恢复通讯,实现线路备份;

生成树在生成过程中,应该尽量生成一棵星型结构,且最短路径数;

存在算法: 802.1D PVST PVST+(CISCO) RSTP(802.1W) MSTP(802.1S)

一、802.1D 一个交换网络内仅存在一棵生成树实例;

交换机间使用BPDU--桥协议单元 -交换机间沟通互动收发的数据

配置BPDU--只有根网桥可以发送,在交换网络初始状态时,所有交换机均定义本地为根网桥,进行BPDU的发送;使网络中所有交换机均收到其他设备的BPDU,之后基于数据中的参数进行比对,选举出根网桥;再所有非根网桥不在发送BPDU,而是仅接受和转发根网桥的BPDU,周期2s发送,hold time 20s;

TCN--拓扑变更信息(也是BPDU):本地交换机链路故障后,STP重新收敛,为了快速刷新全网所有交换机的MAC表,将向本地所有STP接口发送TCN(标记位中的TCN位置1),邻居交换机收到TCN后,先标记为ACK位回复,用于可靠传输信息,之后将TCN逐级转发到根网桥处,由根网桥回复TC消息来逐级回复到所有交换机,使所有交换机临时将MAC表的老化时间修改为15s(默认的,转发延时)

拓扑改变导致MAC地址表变化

选举----根网桥 根端口 指定端口 非指定端口(阻塞端口)

根网桥-----台交换机,在每一棵树形结构中有且仅有一台

周期的发送BPDU,计算整颗树形结构,保活和指挥整颗树的收敛

比较BPDU中的桥ID=BID

BID=优先级 默认32768 0-65535 小优

若优先级相同,比较MAC地址数值 小优

透明交换机无MAC,自然不支持生成树

支持stp的交换机,一定也支持SVI技术;SVI技术可以让交换机配置ip地址,成为源或目标设备,自然出厂时携带MAC地址;stp可以借用该 mac地址

BID=网桥优先级+MAC地址

根端口--一个接口 在每台非根网桥上有且仅有一个接口成为根端口;该交换机本地离根网桥最近的接口,用于接受来自根的BPDU;也正常转发用户的数据;--不被阻塞;

1.比较从根网桥发出的BPDU,通过该接口进入时的最小cost值

2.入向cost值相同时,比较对端(上级)设备的BID,小的对应接口为根端口

3.若上级设备的BID相同,比较上级接口的PID,上级PID小,对应接口为根端口

4.比较本地PID

指定端口--一个接口 在每一条两端均运行STP的物理链路上,有且仅有一个接口转发来自根的BPDU,也正常转发用户数据--不被阻塞

根端口对端为指定端口,根网桥上所有接口为指定端口

1.比较从根网桥发出的BPDU,通过该接口转出的最小cost值

2.比较本地BID,小优

3.比较本地PIID,小优

4.直接阻塞

非指定端口---以上所有角色选择完成后,剩余没有角色的接口全部成为非指定端口

非指定端口为阻塞状态,---不是down;可以收数据,但不转发任何流量

主要关注BPDU数据

PID=接口优先级 0-255 默认128 小优 +接口编号 小优

cost值:

V1(802.1D):10M 100 100M 19 1000M 4 10G 2 >10G 1

V2(802.1T):1000M 20000 100M 200000

[SWA]stp pathcost-standard ? 默认华为使用802.1t标准

dot1d-1998 IEEE 802.1D-1998

dot1t IEEE 802.1T

接口角色--根端口 指定端口 非指定端口

状态:

down STP未运行

侦听 15s 所有交换机收发BPDU,选举所有角色 根端口+指定端口进入学习状态

非指定端口进入阻塞状态

学习15s 关注用户流量中的源MAC地址,生成MAC表 之后进入转发状态

转发 只有转发状态后,方可进行用户数据的转发

阻塞

802.1D算法的收敛时长:

1.初次收敛 30s=15s侦听+15s学习

2.结构变化

【1】30s存在直连检测=本地仅存在一个阻塞端口可以接受来自根网桥的BPDU

【2】50s 非直连检测=20s hold time+30s收敛

802.1D缺点:

1.收敛慢

2.链路利用率低

二、PVST--基于VLAN的生成树 cisco私有主要是在802.1D的基础上,提高了链路的利用率

一个VLAN一棵树;一棵树的内部正常进行所有802.1D计算

将不同VLAN的根网桥放置于不同汇聚层设备处,可以实现所有链路均存在部分VLAN可通讯,且互为备份;

在每个 vlan内,存在一棵树,每个树的工作原理同802.1d一致;不同vlan的BPDU区别在于优先级;优先级=4096倍数+ vlan id人为仅可修改4096倍数备份,且只能修改为4096的整倍

仅支持trunk干道封装为ISL ( cisco 私有封装)

三、PVST + 在PVST 的基础, 兼容802.1q的trunk封装; 且设计了部分的加速;

端口加速(接入层连接用户的接口)--连接终端的接口,不需要30s

上行链路加速-针对直连检测

骨干加速一针对次优BPDU

上行链路加速仅在接入层设备上配置.因为配置后.该交换机将自动加大本地的网桥优先级:在直连检测条件下阻塞接口将跳过30s,直接进入转发状态--上行链路加速

骨干加速所有交换机均可配置,针对接收到次优BPDU的阻塞端口可以跳过20s的hold time;缺点: 1、收敛慢 (加速不彻底) 2、树多 (仅cisco存在单独的芯片, 友商无法负荷)

3.私有协议

四、快速生成树

cisco的RSTP --- 基于 vlan的快速生成树 一 一个vun−棵树 pvst+的升级

公有RSTP (802.1w) --- 整个交换网络一棵树 802.1d的升级

快速的原理:

1、取消了计时器,而是在一个状态工作完成后,直接进入下一状态;

2、分段式同步,两台设备间逐级收敛;使用请求和同意标记;依赖标记位的第1和第6位3、BPDU的保活为6s; hello time 2s;

4、将端口加速(边缘接口)、上行链路加速、骨干加速集成了

5、兼容802.1d和PVST, 但802.1d和PVST 没有使用标记位中的第1-6位, 故不能快速收敛; 因此如果网络中有一台设备不支持快速收敛,那么其他开启快速收敛的设备也不能快速;

当tcn消息出现时,不需要等待根网桥的BPDU,就可以刷新本地的cam表;

五、MSTP/MST/802.1S 华为设备默认使用该协议

继承了快速生成树的基础; 将多个VLAN放置与一个组内,基于每个组一棵生成树;

不同组间的BPDU中优先级=4096倍数+组号

[sw1]stp mode mstp

默认存在分组0,且所有vlan默认处于改组;优先级=32168+0

分组

[sw1]stp enable

[sw1]stp region-configuration

[sw1-mst-region]region-name a 所有设备应在一个组内

[sw1-mst-region]instance 1 vlan 1 to 5

[sw1-mst-region]instance 2 vlan 6 to 10

[sw1-mst-region]active region-configuration 激活当前配置(必须配置该命令)

切记:若将创建某个组,但该组内的VLAN,在本交换机上没有创建,同时没有为该VLAN服务的接口;改组将没有任何信息;整个交换网络中所有设备的分组信息必须完全一致;

定义本地组为1的主根,组2的备份根

stp instance 1 root primary 优先级修改为0

stp instance 2 root secondary 优先级修改为4096

[sw1]stp instance 1 priordity ?

INTERGER<0-61440> Bridge prority. in steps of 4096

[sw1]interface g0/0/1

[sw1-GigabitEthernet0/0/1]stp instance 1 cost ?

INTERGER<1-200000000> Port path cost

[sw1-GigabitEthernet0/0/1]stp instance 1 port priority ?

INTERGER<0-240> Port priority. in steps of 16

[sw1]display stp region-configuretion 查看stp配置

相关推荐
Amo Xiang7 分钟前
2024 Python3.10 系统入门+进阶(十五):文件及目录操作
开发语言·python
liangbm317 分钟前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
friklogff20 分钟前
【C#生态园】提升C#开发效率:深入了解自然语言处理库与工具
开发语言·c#·区块链
GoppViper28 分钟前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
Charles Ray1 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
重生之我在20年代敲代码1 小时前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
爱上语文1 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
我要吐泡泡了哦2 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1232 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
编程零零七4 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql