• 网络初级篇之STP(概念原理)


    一、什么是STP

      生成树协议Spanning Tree ProtocolSTP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。

    二、STP初始化阶段

      网络中所有的桥设备在使能STP协议后,每一个桥设备都认为自己是根桥。这时候每台设备仅仅收发配置BPDU,而不转发用户流量,所有的端口都处于Listening状态。所有桥设备通过交换配置BPDU后才进行根桥、根端口和指定端口的选举工作。

    三、STP中的概念

      BPDU:是运行STP的交换机之间交换的消息帧。BPDU内包含了STP所需的路径和优先级信息,STP便利用这些信息来确定根桥以及到根桥的路径。

      BIDBID报文长度为8,包含2字节的桥优先级与6字节的桥背板mac地址。桥优先级的取值为0--65535,缺省值为32768。

      PID:端口优先级+端口ID(端口优先级默认为128,端口ID为端口的编号)

      累计根路开销:对从设备端口到达根桥路经的各端口(除根桥上的指定端口外)的各段链路的路径开销值(也称链路开销值)进行累加。同一交换机上不同端口的路径开销值为0。

      根桥:是STP生成树的“树根”

      根端口:就是在所有非根桥上的不同端口之间选举出一个到根桥最优路径的端口,根端口在每个非根设备上有且只有一个。(最优路径:端口到根桥的累计根路径开销最小)

      指定端口:是在每一个物理网段的不同端口之间选举出一个指定端口。

      阻塞端口:关闭数据转发,以打破环路。使其成为一种“预备端口”的形式存在。

      对端接收数据时发送方,也就是链路对端的桥

    四、根桥的选举

      在交换网络中所有运行STP协议的交换机上选举出一个唯一的根桥,根桥的选举是根据桥BID中优先级与mac地址来确定的(先对比桥优先级,优先级最小的为根桥;当桥优先级都相等时,对比mac地址,mac地址小的为根桥)。

      在选举时发送的是BPDU中。选举主要包含两步:桥设备确定自己的BPDU、互相发送BPDU报文进行对比以确定网络中的根桥。

       一开始每个桥都认为自己是根桥,向外发送的BID都是自己的。每个桥都向外发送自己的配置BPDU的同时也会收到其它桥发送的配置BPDU。但桥端口并不会对收到的所有配置BPDU都用来更新自己的配置BPDU,而是先会进行配置BPDU优先级比较。当端口收到的配置BPDU比本端口的配置BPDU的优先级低时,将丢弃所收到的这个配置BPDU,仍保留自己原来的配置BPDU;否则会提取其中的BID来代替自己BPDU中原本的BID,在进行不断的数据交互中,所有交换设备中的所有端口都认为根桥是相同时,说明根桥已经选择完毕。
    当链路或者拓扑发生改变时,又会重新选取新的根桥。

    五、根端口的选举

      非根交换机在选举根端口时,依据(按顺序)累计根路开销(小)、对端BID(小)、对端PID(小)、本端PID(小)。(在后面的实验文章中有实验对其进行分别验证)

    六、指定端口的选举

      指定端口的选举时,依据(顺序)累计根路开销(小)、BID(小)、PID(小)(在后面的实验文章中有实验对其进行分别验证

    七、阻塞端口

      未被选举为根端口与指定端口的端口,成为阻塞端口。

  • 相关阅读:
    [Java] 编写第一个java程序
    [Java] 环境变量设置
    [ActionScript 3.0] 常用的正则表达式
    [ActionScript 3.0] 正则表达式
    Python学习之==>URL编码解码&if __name__ == '__main__'
    Python学习之==>面向对象编程(一)
    Linux下安装redis-4.0.10
    Linux下编译安装Python-3.6.5
    Python学习之==>发送邮件
    Python学习之==>网络编程
  • 原文地址:https://www.cnblogs.com/641055499-mozai/p/11594692.html
Copyright © 2020-2023  润新知