企业网三层架构(生成树)

企业三层架构(内网结构):
接入层—常使用二层交换机,就近提供接口密度,用于用户的接入;
汇聚层(分布层)----集合所有接入层流量(星型),对流量实施管理和策略;
核心层—路由转发,高速转发,nat,QOS;

企业网三层架构:冗余 线路 设备 网关 电源 (UPS)
1、广播风暴
2、MAC地址表翻滚(不停的更新CAM表)
3、重复拷贝所有的数据帧

BCMSN–交换技术主要应用于汇聚和接入层;-----
VLAN/TRUNK/VTP/DTP/STP/CHANNEL/HSRP…/VPC等

三层架构中最重要的思想为冗余(备份)–线路冗余—设备冗余—网关冗余—USP(电源冗余)
STP–生成树–通过沟通计算,将网络中部分的接口堵塞,导致从根到所有节点仅拥有唯一的路径;(同时尽量选择最短的路径,生成星型拓扑结构)

【1】IEEE802.1D
交换机间沟通时使用的数据帧—BPDU 桥协议数据单元–跨层封装到二层(BPDU:网桥的包)
BPDU数据帧默认不属于任何一个vlan,故在存在vlan的设备上,该数据帧基于native vlan发送;
3类BPDU:(B:网桥 PDU:协议数据单元 BPDU----桥协议数据单元----网桥的包)
(生成树只有BPDU这一种包,所以什么都干:认识,建邻,保活…)
1)配置BPDU — 拓扑收敛完成后,仅根网桥周期(2s一个周期)发送;在没有跟网桥的时候,所有设备仅发送BPDU;—选举根网桥、发布拓扑信息、周期保活链路(20s的hold time)
即:每隔2s发一个,20s收不到BPDU就认为你挂了。
2)TCN–拓扑变更消息—包中不包含任何具体信息,也不会导致网络重新收敛;
当一台交换机的阻塞端口链路被断开,那么将标记为中七位置1,标识拓扑已经改变,该BPDU将发送到根网桥处,根网桥使用标记为第0位,来表示确认;若没有收到ack,那么2s周期发送TCN;根网桥在确认后,将使用BPDU告诉所有的非根网桥,刷新cam表;
默认cam的保存周期为300s;
3)次优BPDU–非根网桥上的根端口断开–接收不到的根网桥的BPDU了,同时本地断开的也不是阻塞端口;那么本地将自己定义为根网桥,发出BPDU,由于该BPDU次于根网桥的,故称为次优BPDU;(逻辑阻塞<阻塞端口>:过来的包全扔掉,除了BPDU会打开看看)
总结:根网桥发配置BPDU,包含拓扑信息
非根网桥的阻塞端口被断开,同时依然可以与根网桥沟通,那么发送TCN,不包含拓扑信息,不会使网络重新收敛,只是让大家刷新cam表;
非根网桥上断开了根端口后,若不能再与根网桥沟通,将本地定义为根网桥发送次优BPDU,包含本地的拓扑信息—也是配置BPDU,但不是根网桥的;
在这里插入图片描述

一、802.1D (最早的,有点老,应该见不到了,最重要)
一共在计算过程中,将选出四种角色:
根网桥(树根、核心) 根端口 指定端口 非指定端口
(老大)
【1】根网桥:树根、核心 在一棵生成树实例中有且仅有一台;在没有根网桥时,所有交换机均认为本地是根网桥,发出BPDU;进行选举;
比较BPDU中的BID–桥ID ==== 网桥优先级 + MAC地址(数值最小的)

1.先比较所有设备的优先级,0-65535 默认所有设备为32768;小优;
2.优先级相同的情况下比较MAC地址,数值小优;
即:先pk优先级,如果一样就再pk MAC(都是小的优先)

【2】根端口:在每台非根网桥上有且仅有一个,本地离根网桥最近的接口;该接口用于接收来自根的BPDU,同时该接口也用于收发用户流量;
PID=端口ID ===接口优先级 0-255 默认为128 + 接口编号
BID的参数是 网桥优先级 + mac
Cost值就是带宽(就是距离)

根端口选举规则:
1、入方向最小cost值,最小最优
2、比较该接口对端(上级)设备的BID;小优(BID:网桥优先级+mac地址)
(这是考虑未来的做法,如果根坏了,谁更有可能会是根)
3、比较该接口对端(上级)设备的PID;小优(自己接口优先级)
4、比较本地PID;(pid=端口id=发的接口优先级+发的接口编号 0-250 默认128)
(比较本地的pid,因为当有hub的时候,即交换机连接hub再连接交换机,1,2,3可能会一样)
(考虑未来因为如果根出问题了,对端设备就有可能成为根,所以是“接口对端”)

或Eg:在这里插入图片描述

【3】指定端口:在每根网线上有且仅有一个;转发来自根的BPDU;同时转发用户流量;
根端口的对端肯定是指定端口;根网桥上所有接口均为指定端口;
1、比较从该接口(根网桥)发出BPDU的cost值(出方向cost值)
2、比较本地的BID,小优(BID相同:网桥优先级和mac相同,即:自己连自己)
3、比较本地PID,小优(PID=port ID=发的接口优先级+发的接口编号)

4、直接阻塞端口

【4】非指定端口 —阻塞端口 以上所有角色全部完成,那么剩余所有的为存在角色端口为非指定端口 —逻辑阻塞,流量可以进入,不能转出;
Cost值:
10 M=100
100M=19
1000M=4
10000M=2

10000M=1
注:根网桥作为交换网络的流量核心;汇聚层设备也是相同的功能;故根网桥必须在汇聚层;

【5】802.1d接口状态:
Down:接口指示灯未亮起,没有电流信号,网线刚刚连接,不能收发BPDU(即就是模拟器的红灯)
侦听(15s):接口指示灯为橙色,进行BPDU收发,选举各种角色 (强制规定时长为15s,哪怕2s就选完了也得等到15s)
指定端口和根端口进入到下一个状态;非指定端口进入阻塞状态,指示灯一致保持为橙色
学习(15s):接口指示灯为橙色,根端口和指定端口学习各个接口流量中的MAC地址;
生成MAC表----CAM表;15s时长结束后进入下一状态
转发:根端口和指定端口在学习状态完成后进入;接口指示灯为绿色,收敛完成;可以正常转发用户的流量;在30s内接口是转发用户数据;
阻塞:非指定端口在侦听完成后,进入的状态;指示灯一致保持为橙色
(非指定端口专用,逻辑阻塞,不转发只接收)

【6】802.1D的收敛时间
1、初次收敛–30s
2、结构突变
1)存在直连检测—本地只有一个阻塞端口可以收到BPDU
该接口直接进入侦听和学习状态,需要30s收敛(15s侦听+15s检测)转换为根端口;
Eg:在这里插入图片描述

2)没有直连检测—阻塞端口需要50s=20s hold time + 30s的收敛
eg:在这里插入图片描述
所以收敛速度很慢
802.1D算法的缺点:
1、收敛速度慢
2、链路利用率低 备份路径在最佳路径存在时一直闲置;
(因为阻塞的线路一直都没用,理由有点牵强)

二、PVST 基于vlan的生成树协议 Cisco私有 解决链路利用率的协议
在这里插入图片描述(分流的思想)

一台交换机上若希望存在某个vlan的树,需要创建该vlan,同时本地存在该vlan的接口或者活动trunk干道。

在每个vlan中存在一棵生成树,通过将不同生成树的根放置于不同汇聚层位置,来实现链路利用率的提高;
每个vlan发出一个BPDU;各个vlan进行各自的802.1D计算;
为了区分不同vlan发出的BPDU,网桥优先级(4096的倍数)+VLANid
(因为vlan最多创建4096个)
注:若需要一台交换机加入到一个vlan的生成树中;前提是该交换机创建该vlan,连接了该vlan的用户----本地有接口划分到vlan2,且双up;或者本地存在双up的trunk干道

缺点:1.收敛慢
2.cisco私有
3.树多(有几个vlan就有几棵树),带宽和设备硬件资源均占用(cisco设备存在一个专用芯片来进行多生成树运行)
4.私有,仅支持接口封装为ISL的trunk干道

三、PVST+ 在PVST的基础上进行了升级;目标大多数cisco设备默认使用的stp协议;
升级点:1、支持802.1q封装
2、可以做部分的加速收敛
1.初次收敛还是30s
2.部分加速—结构突变
端口加速 上行链路加速 骨感加速 默认不执行,需要手工开启
接入层连接pc的接口 接入层设备 所有交换机
不参选 直连检测设备 非直连检测
本地接口cost和本地网桥优先级均变大

干涉选举的命令:
1、修改优先级,但必须为4096的倍数(因为vlan最多创建4096个)
sw1(config)#spanning-tree vlan 2 priority ?
<0-61440> bridge priority in increments of 4096
1、直接设置备份和主根
sw1(config)#spanning-tree vlan 2 root primary 本地为vlan2主根
sw1(config)#spanning-tree vlan 1 root secondary 本地为vlan1 的备份根
该命令不一定完全生效;主根命令是本地优先级下降2个4096
备份根命令是本地优先级下降1个4096

2、修改接口优先级或者cost值
CORE(config)#interface f0/1
CORE(config-if)#spanning-tree vlan 2 port-priority ?
<0-240> port priority in increments of 16 必须以16的倍数来修改

CORE(config-if)#spanning-tree vlan 2 cost ? 修改cost值
<1-200000000> Change an interface’s per VLAN spanning tree path cost
如何加速:
1、端口加速 连接PC的接口,开启端口加速后;一旦连线,直接为转发状态;
Switch(config)#interface fastEthernet 0/16
Switch(config-if)#spanning-tree portfast 不能用于连接其他交换机的接口

CORE(config)#interface f0/1
CORE(config-if)#switchport host 主机接口
该接口同时写入两条命令
switchport mode access
spanning-tree portfast

CORE(config)#spanning-tree portfast default 全局下开启端口加速,对trunk干道不生效;

2、上行链路加速
在设备上配置上行链路加速后,一旦该交换机满足直连检测条目,该阻塞端口直接成为根端口,进入转发状态;
CORE(config)#spanning-tree uplinkfast 只能在接入层设备上配置
注:该命令一旦配置,那么该交换机的网桥优先级和接口cost值将会加大;
其意义在于存在阻塞端口的设备才会存在直连检测,而阻塞端口最好在接入层设备上;故加大优先级和cost值,在于放弃成为根网桥,尽量成为阻塞端口;

3、骨干加速
当阻塞接收到次优BPDU,那么该接口取消20s hold time,进入30s收敛;
该命令所有设备均可配置
CORE(config)#spanning-tree backbonefast

缺点:1.树多
2.私有协议
3.加速不够彻底

四、802.1W(非cisco的叫法) RSTP(cisco的叫法)----快速生成树;RSTP可以兼容802.1W
802.1w也是目前非cisco产品大多的默认协议

802.1W — 快速的生成树协议 ---- 对802.1D的提速 — 一棵树
RSTP cisco的快速生成树---- 对PVST+的提速 — 每个vlan 一棵树
两种协议,均为快速收敛1-2s完成收敛,提速的原理一致;区别在于cisco有基于vlan的运算芯片,故RSTP依然一个vlan一棵树;802.1w整个交换网络一棵树;

即:
RSTP----PVST+升级所得;故依然每个vlan一个树
802.1w----802.1d升级所得,整个网络一棵树----链路利用率低

缺点:私有的树多;
公有一棵树

快速的原理:
1、取消了计时器,而是在一个状态工作完成后,直接进入下一状态;
2、分段式同步,两台设备间逐级收敛;使用请求和同意标记;依赖标记位的第1和第6位
3、BPDU的保活为6s;hello time 2s;
4、将端口加速(边缘接口)、上行链路加速、骨干加速集成了
5、兼容802.1d和PVST,但802.1d和PVST没有使用标记位中的第1-6位,故不能快速收敛;因此如果网络中有一台设备不支持快速收敛,那么其他开启快速收敛的设备也不能快速;
6、当tcn消息出现时,不需要等待根网桥的BPDU,就可以刷新本地的cam表;

状态变化:将阻塞状态和侦听状态 合为丢弃状态
角色变化:将非指定端口为AP-替代接口 BP-备份接口
无论AP还是BP其实就是802.1D中的阻塞端口,AP为对端设备,BP为本端设备;

启动快速生成树,所有交换机全部需启动;
sw1(config)#spanning-tree mode rapid-pvst
注:所有干涉选举的命令和pvst+一致;

切记:
默认接口为半双工(10M)时,接口类型为共享;全双工时为点到点;
共享型接口依然运行慢速生成;只有点到点接口可以快速;
故建议将共享型接口修改为点到点型
sw1(config)#interface range ethernet 0/0 -1
sw1(config-if-range)#spanning-tree link-type point-to-point

【5】MST-802.1S --分组式的生成树
快速生成树协议;将多个vlan放置于同一个组内;一个组一棵树;
使用该协议时,整个网络所有设备必须均运行MST,同时所以设备的分组设置必须完全一致;
Cisco设备默认为PVST+ 非Cisco设备默认为802.1w

将多个vlan放置在一个组内,为每个组生成一个树,树型算法为802.1w;将不同组的根网桥放置到不同的汇聚层设备处,可以流量的分载,提供链路利用率;
不同组发出的BPDU,使用网桥优先级区分 优先级+组ID
优先级默认为32768,只能以4096的倍数来进行修改
切记:整个交换机需要所有设备均正常MST协议,才进行部署;
sw1(config)#spanning-tree mode mst 修改协议
默认存在组0,且默认所有vlan处于组0;
sw1#show spanning-tree mst 0

sw1(config)#spanning-tree mst configuration
sw1(config-mst)#instance 1 vlan 1-50 将vlan1-50划分到组1
sw1(config-mst)#instance 2 vlan 51-100 将vlan51-100划分到组2
切记:所有运行MST协议的设备,分组内容必须完全一致,否则将可能出现故障;

定义根网桥,备份根网桥的位置
sw1(config)#spanning-tree mst 1 root primary 降2个4096
sw1(config)#spanning-tree mst 2 root secondary 降1个4096

sw1(config)#interface e0/0 修改参选接口的参数
sw1(config-if)#spanning-tree mst 1 ?
cost Change the interface spanning tree path cost for an instance
port-priority Change the spanning tree port priority for an instance
二、STP的安全
[1]BPDU保护
接入层接口默认为DP(指定端口),该端口连接的是PC
若该接口的PC被更换、用户模拟,成为一台交换机,那么可能导致根网桥转移,最终迫使网络结构发生变化,因为根网桥最佳设置应该在汇聚层,而新的结构将可能改变该特性,导致网络运行不佳,流量集中于接入层设备;
可以将这些接口开启BPDU保护功能;被保护接口若收到BPDU,那么将进行错误关闭状态;
进入该状态的接口状态和协议均down,若需要重新唤活该接口:
1、手工重启—先关闭再开启
2、自动启动----需要人配置,配置后若该接口在300s内没有收到BPDU了,那么将自动开启
sw2(config)#interface e0/0
sw2(config-if)#spanning-tree bpduguard enable bpduguard 保镖
在接入层连接用户的接口上,开启BPDU保护功能
被保护接口若接收到BPDU将错误关闭
sw2#show interfaces e0/0
Ethernet0/0 is down, line protocol is down (err-disabled)
若接口出现了错误关闭,可以查看导致原因
sw2#show interfaces status err-disabled
Port Name Status Reason
Et0/0 err-disabled bpduguard

针对BPDU保护出现的错误关闭,可以通过手工重启,或设置自动重启
sw2(config)#errdisable recovery cause bpduguard 当BPDU保护出现后的自动重启
sw2#show errdisable recovery 查看各种错误的原因状态

sw2(config)#errdisable recovery interval ? 默认300s收不到BPDU将自动重启
<30-86400> timer-interval(sec) 修改计时器,最小30s

全局配置:
在接入层接口上,开启所有接口的端口加速和所有接口的BPDU保护
sw2(config)#spanning-tree portfast bpduguard
全局开启后,还需要到上行链路上进行BPDU保护的关闭
sw2(config)#interface e0/0
sw2(config-if)#spanning-tree bpduguard disable 关闭单个接口的BPDU保护

sw2#show spanning-tree summary totals 查看各种全局协议的配置

[2]BPDU过滤
开启BPDU过滤后,若接入层接口收到BPDU信息,将仅丢弃BPDU数据帧,正常转发用户流量
sw2(config)#interface e0/0 接口开启或关闭
sw2(config-if)#spanning-tree bpdufilter ?
disable Disable BPDU filtering for this interface
enable Enable BPDU filtering for this interface

sw2(config)#spanning-tree portfast bpdufilter default 全局开启
注:全局开启后,需要在上行链路接口手工关闭

总结:保护和过滤出了对接口的处理方式不同,还存在一个区别保护是拒绝接收BPDU,但可以发送;过滤是收发均拒绝

[3]根网桥保护
若网络中增添了新的交换机,其BID最优;那么将抢占网络的根网桥,导致拓扑结构变化;
在接口开启根桥保活后,若交换机的接口接收到了更优BPDU时,将该接口阻塞;直到该接口不再收到更优BPDU才恢复;
sw2(config)#interface e0/0
sw2(config-if)#spanning-tree guard root 接口开启根网保护

开启根桥保护的接口,在接收到更优BPDU时,将阻塞;进入broken状态,显示与根不一致;
sw2#show spanning-tree interface ethernet 0/0 detail
Port 1 (Ethernet0/0) of VLAN0001 is broken (Root Inconsistent)

sw2#show spanning-tree
Et0/0 Desg BKN*100 128.1 Shr *ROOT_Inc
不一致接口在生成树列表中的显示

sw2#show spanning-tree inconsistentports 查看出现不一致的接口
Name Interface Inconsistency


VLAN0001 Ethernet0/0 Root Inconsistent

Number of inconsistent ports (segments) in the system : 1

总结:BPDU保护和过滤配置在所有的接入层连接PC接口;
Root 保护建议配置在新连接交换机的接口,来避免网络的重新收敛;

三、环路保护
单向链路故障—尤其在光纤网络,很可能出现可以接收但不能发送;一旦出现单向链路故障,网络及时存在STP,也依然可能出现环路
解决方法:
【1】UDLD --当一根网线出现单向链路故障时,直接关闭该接口

【2】LOOP GUARD ----开启后,仅针对BPDU包,识别为单向链路故障,先对该接口进行阻塞,然后自动恢复;
sw2(config)#interface e0/0
sw2(config-if)#spanning-tree guard loop 开启命令

总结:UDLD和loop gurad区别
1、UDLD被触发后,接口被err-disable;然后需要手工重启 或设置自动重启
Loop guard被触发后,自动阻塞然后恢复接口的
2、UDLD用于处理硬件的单向问题,loop guard被用于处理软件问题(接口拥塞,CPU过载)
建议两种技术均配置

集线器HUB----交换机:
1、无限延长传输距离(电压和电流随着距离会变小、失真,交换机可以把电流先变成二进制存起来,在变成二进制,这样电压和波形就会彻底还原,这样就实现了无限延长传输距离)
2、解决冲突(CSMA/CD带侦听检测的载波多路访问技术,交换机把电流变成二进制存储,这样就不会出现碰撞问题)
3、二层单播

原始的网关冗余:
PC安装win98以下操作系统:
PC在访问其他广播域用户时,发送ARP请求,之后路由器进行代理arp行为;
寻找到网关,当网关上行链路故障时,进行ICMP重定向,出现最佳的路径切换
若断开下行链路,PC在2小时后刷新ARP表,重新切换
不建议使用以上机制;win98以上操作系统,网关地址,填写本网段的直接广播地址


版权声明:本文为weixin_43761835原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。