STP技术基础

STP出现的背景:

物理环路是必要的,为什么这样说呢?因为为了保证一个冗余,当最优的链路断开后,还可以通过另外的链路到达对方,但是物理环路会导致二层的环路,这样就会发生如下的情况:
STP技术基础_第1张图片
广播风暴
假设交换设备上没有启用STP协议。如果PC1发出广播请求,那么广播报文将分别被两台交换设备的端口port1接收,并各自再从端口port2广播出去,然后两台交换机的端口port2又收到从另一台交换设备发过来的广播报文,再分别从两台交换设备的端口port1转发出去,如此反复,最终导致整个网络资源被耗尽,网络瘫痪不可用。

多帧复制
当PC1发出请求广播,请求可以直接到达对方的设备,但是交换机也会进行接收和泛洪,泛洪的数据从链路中又传到的对方的设备,这有反复传递以后,对方设备就会获得多个相同的数据帧。

MAC地址表震荡
交换机S1可以在Port2上学习到PCB的MAC地址,但是由于S2会将PC2发出的广播数据帧向自己其它的端口转发,所以S1也可以在port1上学习到PC2的MAC地址。如此广播帧在两台交换设备之间不停转发,S1就会不停的修改自己的MAC地址表。引起MAC地址表的抖动(Flapping)。

为了既保证链路的冗余,又保证一个不会出现以上的问题,我们设计了STP协议解决,最核心的思想是,保留一条最佳的路线,当链路出现问题后重新计算最优路线,既保证了一个冗余,也保证了不会出现二层环路。

STP报文格式:

在这里插入图片描述

帧格式是802.3格式:目的组播地址为01:80:c2:00:00:00
STP技术基础_第2张图片
LLC层:表示为STP的BPDU报文
在这里插入图片描述
BPDU的具体信息:
STP技术基础_第3张图片STP技术基础_第4张图片
每个字段占用的字节数:
STP技术基础_第5张图片

STP中基本元素:

一个根桥: 树型的网络结构必须有一个树根,于是STP引入了根桥的概念,根桥在全网中只有一个,那就是网络中具有最小桥ID的桥。网络中除了根桥以外的其他桥被称为非根桥。

两种度量: STP中的ID和路径开销,ID包括了BID(桥ID)和PID(端口ID),BID一共64位。高16位为桥优先级(0-61440,、自行配置),低48位为MAC地址,16位中,前4位可以变化,后12位一直保持为0,但是必须为4096的倍数。PID一共16位,高4位为端口优先级,低12位是端口号,优先级范围为0-240,每增加1表示增加16,例如128.5,表示前4位为128,端口号为5。路径开销是一个端口参数,由链路带宽决定。根桥上所有端口的根路径开销,以及相同交换的不同端口间的路径开销值均为零。在一个运行STP协议的交换网络中,某端口到根桥累积的路径开销就是所经过的各个桥上的各端口的路径开销累加值,这个值叫做根路径开销(也就是BDPU中带有的)。

有三种计算开销的标准为:802.1d,802.1t和华为私有计算方式

链路速率 802.1d 802.1t 华为实现
10Mbit/s 100 2,000,000 200,00
100Mbit/s 19 200,000 200
1000Mbit/s 4 20,000 20
10Gbit/s 2 200 2
40Gbit/s 1 500 1

注意:上表列出的是半双工情况下的端口成本,如果是全双工的话,则需要在当前基础上减1。

三个选举要素: 也就是根桥,根端口和指定端口。根桥是有最小BID的设备,根端口是负责接收根桥转发数据的端口,每个设备上只有1个。指定端口是转发配置消息的端口,每条链路选举出一个。一旦选举完成,其他端口阻塞。

四个比较原则: 根桥ID,累积根路径开销,发送者BID,发送者PID,依次进行比较。
根桥ID:Root Identifier由根桥优先级和根桥MAC地址组成,缺省值优先级为32768。

根路径开销:从发送该BPDU的网桥到根桥的最小路径开销,即到根桥的最短路径上所有链路开销的和。

发送BPDU的桥ID:对于LAN来说,就是指定桥ID(DesignatedBridgeID)。

发送端口ID:发送BPDU的端口ID,端口ID由端口优先级和端口号组成。对于LAN来说,就是指定端口ID。
接收BPDU的端口ID:和发送的端口ID格式相同。

五种端口状态: Disabled,Blocking,Listening,Learning,Forwarding
STP技术基础_第6张图片

端口状态描述:

  1. 当端口正常启用之后,端口首先进入Listening状态,开始生成树的计算过程。
  2. 如果经过计算,端口角色需要设置为阻塞端口,则端口状态立即进入Blocking。
  3. 如果经过计算,端口角色需要设置为根端口或指定端口,则端口状态在等待Forward Delay之后从Listening状态进入Learning状态,然后继续等待Forward Delay之后,从Learning状态进入Forwarding状态,正常转发数据帧。

端口状态转换过程:
STP技术基础_第7张图片
1.端口初始化或使能首先会进入阻塞状态。
2.端口禁用或链路失效会进入禁用状态。
3.端口被选为根端口或者指定端口后进入监听状态(其实接口在使能STP后会认为自己是根,会将端口都认为是指定端口,从阻塞进入监听状态,时间很短)。
4.端口不再是根端口或者是指定端口会进入阻塞状态。
5.Forwarding Delay Timer超时(从监听到学习状态,学习状态到转发状态分别都要经过一个15秒的转发延迟),以确保新的配置消息传遍整个网络,防止临时环路的产生。15秒的转发延迟也就是说整个交换机的直径不超过7个(14s)都可以互相交换,真实环境中很少有直径为7个以上的交换环境,如果有,需要重新规划拓扑的结构。

STP的三个定时器:

Hello Time

  1. 运行STP协议的设备发送配置消息BPDU的时间间隔,用于检测链路是否存在故障。
  2. 当网络拓扑稳定之后,该计时器只有在根桥上进行修改才有效。
  3. 当拓扑发生变化时,变更消息不受Hello time影响,可以直接发送。
  4. 缺省为2秒。

Max Age
运行STP协议的网络中非根桥设备根端口收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较:

  1. 如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文。
  2. 如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。
  3. 缺省为20s,当20s内没有接收到对应的报文,重新计算根端口,这时会将所有端口转换为指定端口,认为自己是根,发送自己的BPDU报文。
  4. 实际实现中,配置BPDU报文经过一个桥,Message Age增加1。

Forward Delay
.配置BPDU传播到全网的最大延迟,默认为15秒。为了让配置BPDU消息在全网都被接收到,避免造成环路。

两种BPDU:

配置BPDU:配置BPDU是一种心跳报文,设备使能STP后会按照Hello Time定时器规定的时间间隔从指定端口发送配置BPDU,用来进行生成树计算和维护生成树拓扑的报文,是初始阶段中个交换机发送的BPDU消息。配置BPDU都是从根端口接收,指定接口发送出。

TCN BPDU:当拓扑结构发送变化时,下游设备用来通知上游设备网络拓扑结构发生改变的报文。它是当拓扑稳定后,网络中出现了链路故障,网络拓扑发生改变时所发送的BPDU消息。都是从指定接口接收根端口发送出去。

配置BPDU在以下3种情况下会产生:

  1. 只要端口使能STP,则配置BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。(拓扑计算阶段)
  2. 当根端口收到配置BPDU时,根端口所在的设备会向自己的每一个指定端口复制一份配置BPDU。(稳定阶段)
  3. 当指定端口收到比自己差的配置BPDU时,会立刻向下游设备发送自己的BPDU。(新添加设备时)

TCN BPDU在以下2种情况下会产生:(接收别人和自己初始产生)

  1. 端口状态变为Forwarding状态,且该设备上至少有一个指定端口(个人理解:没有指定接口没有必要进行MAC地址的更新,因为报文传输给此交换机也无法继续传输给下行设备)。
  2. 指定端口收到TCN BPDU,复制TCN BPDU并发往根桥(根接口发送)。

参考资料:华为HCIE培训资料

你可能感兴趣的:(HCIE,R&S学习笔记,stp,生成树,华为,交换机)