802.1D,STP感悟

前导:上次我们说到   不太给力的交换机的控制层面+冗余链路+STP 能做到交换网络无环的可靠转发,那么STP究竟是如何防环的呢?

STP其实是通过保存最优的路径,逻辑的堵塞次优链路,来构成一颗转发树,而树是无环的。当最优路径失效的时候,被堵塞的次优路径中的最优路径能及时还原,以实现数据的正常转发

STP是IEEE定义的一种公有协议,分为三个版本:


标准


名称


802.1D


STP


802.1W


RSTP


802.1S


MSTP 或者MiST或者MST

以下介绍的为802.1D

生成树报文的封装(基于组播MAC地址发送):


0180.C200.0000


S.MAC


length


LLC


BPDU


FCS

那么究竟如何形成无环的转发树呢?

转发树树必然有根(跟桥的选举),每个节点只有唯一的一条最好枝干到树根,(根端口的选举),当主枝干断了,备份枝干得顶替主枝干转发数据(DP和NDP的选择)

而网络设备之间交互的也只有报文了,因此生成树定义了一种报文,叫BPDU (网桥协议数据单元)

交换机之间就是通过交互这类报文通过选举的形式来形成转发树

BPDU的类型:① TCN BPDU  下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知

②配置BPDU,如下图

华为:


Field


PID


PVI


BPDU Type


Flags


Root ID


RPC


Bridge ID


Port ID


Message

Age


Max Age


Hello Time


FwdDelay


Bytes


2


1


1


1


8


4


8


2


2


2


2


2

思科:


注释:英文名简称不太一样而已

那么STP是如何通过BPDU报文的交互选举来形成转发树的呢?

第一步:选根桥

第二步:在非根桥上选取跟端口

第三步:在每个网段上选举指定端口和非指定端口

第一步:选根桥:

比较BPDU报文中Root ID

一开始设备都认为自己是根桥,所以发送的BPDU报文Root ID都是自身的BridgeID,MAC地址全球唯一,所以滴定能比出来

Bridge ID;


Field


priority


最小MAC地址(又称基mac)


Byte


2


6

选举方法:比较root ID

通过先比较优先级,再比较mac地址,最小的成为根,某台交换机一旦成为根,那么只有根能发送BPDU报文

第二步:在非根桥上选取根端口(就是在每个非根桥选取一个到根桥最近的端口)

根端口,即在非根桥上能收到BPDU,且离根桥最好的端口。这个好通过ROOT PAST COST来衡量,交换机每接收到一个BPDU报文就会在根据接收接口的带宽来给BPDU的 ROOT PAST COST 字段加上对应的值,根桥首发的COST为0


带宽


10M


100M


1G


10G


Cisco


100


19


4


1


HuaWei

(华为的没找到,知道的请告诉我一声,不胜感激)

选举方法:①Root ID

②入方向的Root Path Cost

③转发者的Bridge ID

④发送者的Port ID

⑤接受者的Port ID

Port ID


Field


端口优先级


接口编号对应值


Bytes


1


1

端口优先级0-255 ,但是必须是16 的倍数,所以可用0-240

一台交换机接口的编号肯定不可能重复,所以一定能比出来

第三步:选取指定端口和非指定端口

在每个交换机的链路两端选出指定接口和非指定接口(就是在交换机的链路两端选出一个发送BPDU更好的接口)

选举方法:   ①Root ID

②出方向的Root Path Cost

③转发者的Bridge ID

④发送者的Port ID

注:其实在第二步,生成树就已经形成,第三部选取DP和NDP其实是为了2个目的:

1.角色为NDP的端口会进入blocking状态,不会转发BPDU,相当于遏制了BPDU的无限循环

2.blocking状态也会阻止数据的转发,防环

当选举完成后,必须经过两倍的forward delay 时间(是为了等待整个生成树域的同步,以及MAC地址表的刷新,避免错误老的错误路径转发,避免形成环路),才能进行正常的数据的转发

①TCN BPDU

②配置BPDU       TCA 置1

Flag 0x80

③配置BPDU       TC位置1

Flag 0x01 当交换机收到这个BPDU之后会把MAC地址表的老化时间改成forward delay 时间

④配置BPDU   (收敛后)

Flag 0x00

拓扑变更:①直接拓扑变更:交换机down,或者交换机的接口一down。这种设备自身能察觉的严重行为。行为→重新选举,收敛

②间接拓扑变更: 细微的变更, 光钎单向链路损坏,物理层面无法察觉,但是交换机接口缓存了根桥的BPDU,行为→在老化计时器max age 20S内如果再次收到根桥的BPDU就会刷新计时器,否则就会 发送TCN报文给根桥告诉拓扑变更

③末梢拓扑变更:连结PC的接口的状态改变,也会影响生成树的拓扑变更 (华为认为 只有当接口的状态从down→up 才算拓扑变更)

运行STP协议的设备上端口状态有5种:

Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。

  • Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
  • Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
  • Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
  • Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

    STP的缺陷:   当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为ForwardDelay(转发延时),协议默认值是15秒。在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为了解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址,但不参与转发的中间状态,两次状态切换的时间长度都是ForwardDelay,这样就可以保证在拓扑变化的时候不会产生临时环路。但是,这个看似良好的解决方案实际上带来的却是至少两倍Forward Delay的收敛时间!

    补充:BPDU中的

    message age(类似TTL)根桥始发为0, 这个每当交换机泛洪一次他就+1

    max age  默认20S     必须要message age<=max age, 否则直接丢弃BPDU, 也就是说802.1D交换网络最多支持20 台交换机

    hello time  BPDU每两秒发送一次,根桥可以持续性的检测拓扑是否发生了变化,20S未从根桥收到BPDU,那就说明拓扑出现问题了

    根桥发送的BPDU的Bridge ID每经过一个交换机,就变成该交换机的bridge ID

    时间: 2024-12-20 06:07:47

    802.1D,STP感悟的相关文章

    802.1W 感悟以及和802.1D对比

    上次说了STP的感悟,这次讲讲我个人对与RSTP的感悟.(学校坑爹的开题报告,没时间写微博了) RSTP的出现的原因:就是因为传统的STP是基于被动的收敛时间,收敛时间太慢,根本无法满足真正的生产网络,网络震荡一次,就得等30S-50S,才能上网,估计谁也忍不了吧! 对于如何对RSTP下手呢?我总结如下两点,STP也可以这么考虑 ①如何形成一棵树 ②如何维护这个树(随时检测树的状态,当树根被拔了,当树干断了,如何用新的树根和新的树干来再次形成这棵逻辑的树) 802.1D: 形成树:先选举root

    CCNP学习笔记14-交换部分---STP

    STP分类 IEEE CISCO 802.1D STP 收敛30-50s PVST(ISL only):PVST+(ISL & 802.1Q) 802.1W Rapid-STP 收敛 1s以内 rapid-PVST 802.1s mst MIST/MST 802.1D STP===========PVST+(ISL & 802.1Q) 收敛缓慢                 收敛缓慢 基于交换机                 基于 vlan (冗余链路被切断,防环同时造成两份链路)  

    日常笔记-stp

    STP -定义 -作用 -类型 1.802.1d - STP :生成树协议 PVST/PVST+(思科) 2.802.1w - RSTP :快速生成树协议 PV-RSTP(思科) 3.802.1s - MSTP :多生成树协议 -报文 PVST:per-vlan STP,即在每个 VLAN 内部都运行一个 STP (802.1d): STP的工作过程: 1.确定交换机的角色 根交换机:整个交换网络中,有且只有一个: 非根交换机:剩余的其他交换机,都称之为非根交换机 注意: 每一个非根交换机都会计

    笔记 STP

    STP -定义-作用-类型1.802.1d - STP :生成树协议 PVST/PVST+(思科)2.802.1w - RSTP :快速生成树协议 PV-RSTP(思科)3.802.1s - MSTP :多生成树协议-报文 PVST:per-vlan STP,即在每个 VLAN 内部都运行一个 STP (802.1d): STP的工作过程:1.确定交换机的角色根交换机:整个交换网络中,有且只有一个:非根交换机:剩余的其他交换机,都称之为非根交换机 注意: 每一个非根交换机都会计算出一条去往根交换

    STP/RSTP/PVST/MSTP/MSTI/CIST的概念以及Cost of path的计算

    | STP/RSTP/PVST/MSTP的概念 | STP该协议可应用于在网络中建立树形拓扑,消除网络的二层环路,并且可以通过一定的方法实现路径冗余,但不是一定可以实现路径冗余.STP的基本原理是,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构.Spanning Tree Protocol在IEEE802.1D文档中定义.该协议的原理是按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存

    生成树基本内容

    链路冗余.802.1D stp解决环路透明网桥:不会对转发报文做任何标记.针对数据帧.查看.学习.转发不对其修改 生成树协议基本原理 包含BPDU 桥接协议数据单元 所有交换机中.互相通告BPDU选出一个根网桥.对每个LAN选出离根网桥最近的为指定网桥(主要负责LAN数据转发).计算出最短路径 BPDU的格式 DMAC  SMAC  L/T(数据帧长度)  LLC Header(配置消息固定的链路头)   Payload(BPDU数据) BPDU包含的信息 主要内容:根网桥的ID.从指定网桥到根

    2.4-EN_STP

    增强型生成树协议(EN_STP): Spannig Tree port states: blocking 20s+listening 15s+learning 15s最后才forwarding 这就是为什么交换机冗余切换会丢几个包的原因--但这些时间都是不一定的,可能blocking会经过很短时间就直接进入listening. 方法一:PortFast: PortFast只适用于交换机与主机(电脑)直连的端口: 不应该在交换机与交换机.路由器.Hub等互连的网络设备的端口使用→会导致短暂的STP

    VXLAN, 一种叠加在L3网络上的L2网络

    这几天看了下RFC7348,顺便翻译了一下,根据自己理解做了注解 虚拟化及租户隔离 服务器虚拟化增加了对物理网络基础设施的需求,服务器有多个虚机,要求交换机支持更大的MAC地址表. 在数据中心场景下,虚机按照VLAN分组,可能需要成千上万的VLAN,以便用来给为按照VLAN标签分组的虚机分隔流量.但是当前VLAN机制限制最多只能有4096个VLAN. 数据中心需要支持多个租户,每个租户需要分隔的网络域,单独实现分离的网络域不经济.管理员一般基于共享网络进行隔离.各租户独立进行VM的MAC和VLA

    中小型网络企业网络构建

    什么是 VLAN?VLAN,指的是虚拟局域网,是一种 2 层技术.可以在交换机上实现广播域的隔离.从而可以减小数据广播风暴对交换网络的影响,降低了网络管理难度,同时可以实现网络规模的灵活扩展. Trunk 链路与 Access 链路的区别是什么?Trunk 链路同一时刻可以支持多个 VLAN 的数据转发,数据携带 VLAN 标签(native vlan 除外):Access 链路同一时刻只能传输一个 VLAN 的数据,发送和接收的数据,都没有标签: 什么是华为交换机中的 hybrid 端口?hy