10 标准生成树STP(根设备调整)

  1. STP的应用场景
    生成树永远跟接口MAC无关;生成树的弱点是太依赖时间
    交换机之间通过多条链路互连时,虽然能够提升网络可靠性,但同时也会带来2层环路问题且以太帧不具备防环机制,导致广播风暴、MAC地址表震荡、重复帧拷贝,而STP就是在有冗余的交换网络下避免环路。
  • 广播风暴:根据交换机的转发原则,如果交换机从一个端口接收到的是一个广播帧,或者是一个目的mac地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发,如果交换网络中有环路,则这个帧会被无限转发,导致广播风暴,网络中充斥着重复的数据帧。
  • Mac地址表震荡:一个Mac地址在某一时刻只能从一个端口学习到,那么环路会导致mac地址表震荡,即一个Mac地址在短时间内在不同的接口间切换。
  1. 主要作用
    消除环路:在逻辑上而非物理上,通过**阻断(华为Discarding;思科Block)**冗余链路来消除网络中可能存在的环路。
    链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络的连通性。
  2. 工作原理
    3.1 三大原则:交换网络有且只有一个根交换机;每个非根设备上有且只有一个根端口;每个链路上有且只有一个指定端口
    3.2 解释:
    交换网络选举一个根桥(皇帝RB);
    每个非根交换机选举一个根端口(太守RP,接收皇帝的命令,角色为ROOT,状态为转发Forwarding);
    每个链路上选举一个指定端口(钦差DP,转达皇帝的命令,角色为DESI,状态为转发Forwarding);
    阻塞非根、非指定端口(AP庶民,物理上工作逻辑上阻塞,角色为ALTE,状态为转发Discarding);
    BPDU桥接信息单元(圣旨,发送2s/次)。
    3.3 **理解:**有根端口的一定不是根桥(即没有根端口的一定是根桥),其根端口的对端设备可能为根桥
  3. STP选举
    STP在常规设备上默认开启。
    **配置BPDU包含以下重要信息:**根桥ID(RootID);根路径开销(RootPathCost);指定桥ID(DesignatedBridgeID);指定端口ID(DesignatedPortID)。
    每台设备的各个端口在初始时生成以自己为根桥(RB)的配置消息,向外发送自己的配置信息(起初都认为自己是皇帝)。网桥收敛后,根桥向外发送配置BPDU,其他的设备对该配置BPDU进行转发。
    4.1 根设备(RB)选举
  • BridgeID(桥ID,BID,查看思科:show spanning-tree vlan 8;华为:dis stp)由两部分组成:优先级(默认32768)和交换机的MAC(不是接口Mac,而是背板Mac思科:show spanning-tree bridge id;华为:dis stp的第一行CIST Bridge的值
  • **选举规则:**优先级值最小的---->Mac最小的
  • 从管理角度一定是修改优先级去左右根的选举,根设备一般在核心交换机上,必须修改优先级去控制。最常见的实施是互为主备,即sw1为vlan8\10\11的RB和vlan1\9\12\99的BackupRB,sw2为vlan8\10\11的RB和vlan1\9\12\99的BackupRB。修改优先级思科:spanning-tree vlan 8,10,11 priority 4096;华为:stp priority 4096(华为只能针对所有vlan设置,不能针对某一部分vlan),优先级的值只能为4096的倍数,0为最高优先级(一般只有RB设为0,BackupRB设置为4096)。
    4.2 根端口(RP)选举
  • PortID(端口ID,PID,由端口优先级(默认128)和序号组成)
  • RPC(RootPathCost,到根桥的开销,Dot1q标准下的PortCost默认为20000)
  • **选举规则:**RPC最小的---->对端的桥ID最小的---->对端的端口ID最小的---->本端的端口序号最小的
  • 修改端口的开销(cost)值思科:spanning-tree vlan 8 cost 10;修改端口的优先级思科:int e1/3 spanning-tree vlan 10 port-priority 64 (只能是64的倍数,0\64\128\192)
  • 举例
    • 通过比较"对端的桥ID",选择交换机的"接口1"为根端口
      通过比较"对端的桥ID",选择交换机的"接口1"为根端口
    • 通过比较"对端的端口ID",选择交换机X的"接口3"为根端口
      ![通过比较"对端的端口ID",选择交换机X的"接口3"为根端口]
    • 多规则使用
      SWB的接口2:规则3,对端的端口ID
      SWC的接口1:规则1,RPC
      SWD的接口5:规则2,对端的桥ID
      SWE的接口1:规则4,本端的端口序号
      多规则使用
      4.3 指定端口选举
  • **选举规则:**RPC最小的---->本端的桥ID最小的---->本端的端口ID最小的(除非交换机的两个接口相连,否则一般不到这一步)
  1. STP的模式
    升级过程:802.1D--->802.1w--->802.1s
    思科和华为设备对接需要使用MSTP。华为默认模式为MSTP,修改为STPstp mode stp;思科设备默认为pvst,修改为pvstspanning-tree mode pvst现实工作中建议使用mstp。
    STP的模式
    补充:华为设备还有两种模式:VBST(每个vlan的stp,一般华为交换机即可见到)、V-STP(虚拟stp,数据中心的CE交换机上可见)
  2. 标准STP的5个端口状态
    6.1 标准STP的5个端口状态
  • Disabled,禁用状态,即不处理和转发BPDU,也不转发用户流量
  • Blocking(Discarding),阻塞状态,仅仅接收和处理BPDU,不转发BPDU,也不转发用户流量,此状态是预备端口的最终状态
  • Listening,侦听状态,转发BPDU报文,不转发用户流量
  • Learning,学习状态,根据收到的用户流量构建MAC地址表,不转发用户流量,此状态是为了防止临时环路
  • Forwarding,转发状态,即可转发用户流量,也可转发BPDU报文,只有根端口或者指定端口才能进入此状态
    6.2 5个端口状态的转换
    标准STP的5个端口状态的转换
  1. STP的时间
    HelloTime=2s,BPDU的发送间隔
    MaxAge=20s,最大生存时间,即BPDU失效的时间
    ForwardDelay=15s,转发时延,端口状态转换的时间间隔
  2. 边缘端口
    与终端相连的端口(access或者trunk)不需要参与生成树的计算,这些端口参与计算会影响网络拓扑收敛的速度(转发时延,即直接跳过端口状态Listening和Learning,直达Forwarding),而且这些端口的状态改变也可能引起网络的震荡,导致用户流量中断。
    思科配置边缘端口:spanning-tree portfast edge default,把所有access接口配置为边缘端口
    华为配置边缘端口:stp edged-port default,把所有接口配置为边缘端口。如果对端连接的是交换机,不建议配置边缘端口。最常用是将接口配置边缘端口stp edged-port enable(接口视图中配置)
  3. BPDU保护
    边缘端口收到BPDU报文之后会失去其边缘端口属性。为防止攻击者仿造BPDU报文导致边缘端口属性变成非边缘端口,或者保护STP的边界,可配置交换设备的BPDU保护功能。
    配置BPDU保护功能之后,如果边缘端口收到BPDU报文,边缘端口就会被error-down,边缘端口属性不变。
    思科:
    全局配置spanning-tree bpduguard enable
    和思科全局的边缘端口联动(仅仅作用于边缘端口)spanning-tree portfast edge bpduguard default
    接口配置(接口实施BPDU保护,改接口无所谓是否为边缘端口,都会shutdown失效)spanning-tree portfast edge trunk(配成边缘端口)-->spanning-tree bpduguard enable
    在思科的接口下配置BPDU保护,该接口可以不是边缘端口
    华为:
    只有全局配置(只针对边缘端口生效,只要边缘端口收到BPDU就会关闭)stp bpdu-protection
  4. STP优化
  • 调整STP的模式
  • 调整STP的根
  • 配置边缘端口(端口快速,节省30s时间,根据实际情况配置全局或者单独的接口)
  • 配置BPDU保护
# ..............................................演示环路导致的广播风暴
# sw1
int g0/0/5
port link-type trunk
port trunk allow-pass vlan all
int g0/0/1
port default vlan 8
port trunk allow-pass vlan all
undo stp  enable # 关闭生成树

# sw2
int g0/0/5
port link-type trunk
port trunk allow-pass vlan all
vlan batch 8 to 12 99
undo stp  enable

# sw3
int g0/0/1 
undo shutdown
undo stp  enable

# R1
dis arp # 查看arp表
reset arp all # 清空arp表,开始抓包
ping 10.1.10.1

# sw1,sw2,sw3
stp enable # 开启生成树,恢复生产环境
# .................................................华为交换机上STP的实施和优化
# 1.调整STP的模式;2.调整STP的根;3.配置边缘端口(端口快速);4.配置BPDU保护
# !!!!思科建议使用全局的边缘端口和全局的BPDU保护
# !!!!华为实施全局边缘端口之后,需要将trunk端口将全局边缘端口中去除,然后实施全局的BPDU保护
# sw1\2\3上STP模式的修改
stp mode stp
# 调整优先级,将sw1作为RB,sw2作为备份RB
# sw1
stp priority 0
# sw2 
stp priority 4096
# 查看接口优先级
display stp int g0/0/1 # 查看变量Port Priority的值
# sw3配置边缘端口
# stp edged-port default #全局开启边缘端口
# undo stp edged-port default
int g0/0/10
stp edged-port enable
int g0/0/11
stp edged-port enable
int g0/0/12
stp edged-port enable
 # 查看是否为边缘端口
dis stp int g0/0/10 # 查看变量Port Edged的值,如果Active=enabled则为边缘端口
# sw3配置全局的BPDU保护
stp bpdu-protection
# sw3的接口3和1配置为非边缘端口,即将trunk从全局的边缘端口去除
int g0/0/3
stp edged-port disable
shutdown
undo shutdown
int g0/0/1
stp edged-port disable
shutdown
undo shutdown

两个直连的路由器无法通信,如何排除故障?

由下至上:

**1. 检查物理层:**比如接口指示灯是否闪亮,检查光纤是否工作或者网线是否正常(目测法)。如果有故障,可以使用替换法解决;否则进行下一步。
**2. 检查数据链路层:**通过sh int xx或者dis int xx,查看2层协议是否工作,以及封装协议是否一致(比如ppp、hdlc等)。如果协议上和管理上都是工作的,进行下一步。
**3. 检查网络层:**通过IP验证是否为同一子网。假设是同一子网,要特别关心ARP(IP和Mac的对应),如果没有ARP,关心路由器之间是否有交换机进行联通,如果有交换机则需要查看交换机的STP状态、交换机Mac地址表等等。