IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> STP -> 正文阅读

[网络协议]STP

生成树

STP(Spanning Tree Protocol 生成树协议):所有生成树协议都在通过发送信息比较信息进行选举,找到环路中应该被关闭的接口(接口阻塞);发送的比较信息称为BPDU,网桥协议数据单元。

泛洪:当交换机收到某一个数据帧时,交换机会从该VLAN本交换机除进入接口外所有的接口转发该数据帧的过程。

为了保证交换网络高可用性,在交换机之间使用冗余链路,由于网络中的泛洪机制可能造成二层的桥接环路,会导致:

? 1、广播风暴;

? 2、Mac地址表的不稳定;

? 3、数据帧的重复拷贝;

二层广播风暴:主机A给主机C发送了一个ARP广播帧,1交换机广播给2交换机,2交换机又会广播发送给交换机1,如此循环;重复循环发送同一个数据帧会在不同的接口处刷新同一条Mac地址映射,会导致Mac地址表不稳定;每当1发出的数据帧被循环一次,主机C都需要回复一个数据,数据帧重复拷贝;

  • 解决思路:让某个接口暂时不转发数据,打破交换网络中的环路;(针对交换网络的所有环路中,关闭某个接口)

1、生成树协议的类型
  • STP(标准生成树协议,又称802.1D);
  • RSTP(快速生成树协议,又称802.1W);
  • MSTP(多生成树协议,又称802.1S);

思科:802.1D:PVST(per-VLAN spanning tree:基于VLAN的生成树协议);802.1W:PVRST+(基于VLAN的快速生成树协议)。基于VLAN是一个VLAN生成一棵树;

cisco:
image-20211010153659263
?

如图:

? PVSTP,PC0传输数据时,走Switch0–Switch1之间链路;PC1传输数据时,走Switch2–Switch1之间的链路;每一个VLAN建立一棵树;缺点:当一个交换网络中存在的VLAN较多时,就会有过多的树,占用过多资源;


2、802.1D ;标准生成树
BPDU :网桥协议数据单元,分为配置BPDU–config-BPDU和拓扑变更BPDU–TC-BPDU;
  • ? 配置BPDU —— config-BPDU:用于生成树的选举以及重收敛

  • ? 拓扑变更BPDU —— TC-BPDU:通知交换机网络结构发生变化,交换网络出现了拓扑变更

网络初步搭建的时候,交换机之间使用config-BPDU来生成树;构建完成后如果网络结构发生变换,则使用TC-BPDU来重新修改生成树。

BPDU(Bridge Protocol Data Unit)的数据结构:

华为:
思科:

  • Protocol ID:2字节,标识数据帧是一个BPDU的数据帧;

  • Version:1字节,BPDU版本;STP为0,RSTP为2,MSTP为3;

  • Message type: 2字节,信息类型,代表着BPDU 的类型 (0X00 配置 0X80 拓扑TC);

    • 0x00:STP的Configuration BPDU
    • 0x80:STP的TCN BPDU(Topology Change Notification BPDU)
    • 0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)
  • Flags :1字节,标记位,在802.1D 中,用于标识BPDU 是拓扑变更BPDU还是拓扑变更确认BPDU

    • 0 bit(左边、高位bit)表示 “ TCN(拓扑变更BPDU) ”;
    • 最后一位 7 bit(右边、低位bit)表示 “ TCA(拓扑变更确认BPDU) ”;
  • Root ID :8字节,根标识符,用于标记一颗树的树根。与根网桥的BID 一致。

  • Cost of path : 4字节,路径开销。在华为设备中,称作 RPC (root path cost 根路径开销)

  • Bridge ID :8字节,网桥标识符, BID , 用于标识本设备在本生成树的唯一性。

  • Port ID :2字节,端口标识符, PID ,用于标识设备上某接口的唯一性。

  • Message age :2字节,在思科中默认为30s,就是对应的MAC地址条目的老化时间,(但实际上该时间为此BPDU 经过的跳数);华为中,代表着该BPDU传递的跳数,最大20跳(默认值为0,每经过一台交换机 值+1)

    • Max-hop :默认为20 ,收到BPDU之后 将message age中的时间与max-hop进行比较,若小 于,则正常使用该BPDU ,若大于,则忽略BPDU;
  • Max-age : 2字节,最大时间,可以理解为hello包的超时时间。默认时间为20s ;------ 第一个状态的切换时间;

  • hello time: 2字节,默认为2s ,BPDU 发送的间隔;

  • Forward delay : 2字节,转发延时,端口状态切换等待的时间,默认为15s;


BID:

? BID 组成:BID优先级字段(4bit)+ 扩展系统ID(12bit)+ Mac地址(6字节,48bit)

? BID用来选举根网桥;MAC地址使用来保证BID的唯一性;

? BID 作用: 1、比较BID优先级 ;2、比较MAC地址;

? BID 优先级: 4 bit,默认值为32768(1000) ,范围0-65535(实际范围0-61440[1-14,默认为8]),越小越优。BID 优先级单位4096.调整BID优先级时值必须为4096的倍数;

? 扩展系统ID: 8 bit,在802.1D和802.1W 无意义,在802.1S中有用的;

? Mac地址: 为交换机背板地址池中所有MAC地址中最小的,MAC地址越小越优;


PID:

? PID:端口标识符;2个字节组成,

? PID 组成:PID优先级(4bit构成)+端口标识符(12bit构成)

? PID 作用:1、比较PID优先级;2、Port number;

? PID 优先级 :默认值为128,范围0255(实际使用范围0240),单位16;

? 端口标识符(Port number):标识交换机接口唯一性;

RID:根ID;最优质的BID


RPC:

? 华为:

? 802.1T 标准,cost范围0-2000000

? COST = RPC + PC

? COST: 开销值

? PC:path cost 路径开销;

? RPC:root path cost 根路径开销

不同交换机计算链路对应的RPC值也不相同

? 思科:

? 802.1D-1998

? 10G----- 2

? 1G ------ 4

? 100M—19

? 10M-----100

? 不同带宽的链路使用不同的cost (该cost值是内部编码的),非线性过程。

修改Cost值的计算方法:

[sw 1]stp pathcost-standard ?
  dot1d-1998  IEEE 802.1D-1998
  dot1t       IEEE 802.1T
  legacy      Legacy

修改交换机的Cost值计算方法需要非常谨慎,如果需要修改必须保证交换网络中所有设备的STP设备使用的计算方法一致;


端口状态:

1、disable —关闭状态1、关闭生成树协议;2、接口物理关闭;

2、blocking —阻塞状态;不能发送BPDU,可以接受BPDU,不能发送和接送和数据;

3、listening —监听状态;可以发送、接收BPDU,不能发送和接收数据;(进行生成树选举)

4、learning —学习状态,可以发送BPDU,不能发送和接收数据;(学习Mac地址表) —目的:限制未知单播帧的泛洪;

5、forwarding —转发状态;可以发送并接收BPDU和数据帧;

最终状态:blocking、forwarding

?


端口角色:

1.根端口 (RP:Root Port),存在于非根网桥之上,一个非根网桥仅有一个根端口,用于接收来自于根的 BPDU;

2.指定端口(DP:Designated Port),在一条链路中有且仅有一个,用于转发BPDU;

3.阻塞端口(NDP:Not Designated Port)被逻辑上关闭的接口;


生成树选举:

1.选举 根网桥 (标识一颗树,在一个生成树中有且仅有一个)

? 选举规则: 最小的BID(先比较BID优先级,再比较MAC地址)

2.选举端口角色

? 选举根端口:1.接口最小的开销值(RPC+PC)2.最小的BID(发送方的) 3.最小的PID(发送方的)

? 选举指定端口:1.本设备根端口到根网桥的开销值最小的交换机上的接口 2.最小的BID(本交换机)3.最小的PID(本设备)

image-20211010203558716

? 园区网分层结构

? 出口层(OR):广域网接入;出口策略;带宽控制;

? 核心层(CO):高度转发;服务器接入;路由选择;

? 汇聚层(GS):流量汇聚;链路冗余;设备冗余;路由选择;(策略控制)

? 接入层(AS):用户接入;接入安全;访问控制;


配置:

华为交换机默认的配置模式不是标准的802.1D生成树协议;

选择生成树的类型:

[Huawei]stp mode ?
  mstp  Multiple Spanning Tree Protocol (MSTP) mode
  rstp  Rapid Spanning Tree Protocol (RSTP) mode
  stp   Spanning Tree Protocol (STP) mode 
[sw1]stp mode stp			#使用标准生成树协议;	
Info: This operation may take a few seconds. Please wait for a moment...done.

查看STP协议中的信息(BPDU):

[sw1]display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-cc79-32e5
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc5c-02af / 400000
CIST RegRoot/IRPC   :32768.4c1f-cc79-32e5 / 0
CIST RootPortId     :128.5
BPDU-Protection     :Disabled
TC or TCN received  :41
TC count per hello  :0
STP Converge Mode   :Normal 
Time since last TC  :0 days 0h:12m:22s
Number of TC        :9
Last TC occurred    :Ethernet0/0/5

查看已启动接口状态:

[sw1]display stp brief 
 MSTID  Port                        Role  STP State     Protection
   0    Ethernet0/0/1               DESI  FORWARDING      NONE
   0    Ethernet0/0/2               DESI  FORWARDING      NONE
   0    Ethernet0/0/3               DESI  FORWARDING      NONE
   0    Ethernet0/0/4               DESI  FORWARDING      NONE
   0    Ethernet0/0/5               DESI  FORWARDING      NONE
   0    Ethernet0/0/6               DESI  FORWARDING      NONE
   
[sw2]display stp brief 
 MSTID  Port                        Role  STP State     Protection
   0    Ethernet0/0/1               ROOT  FORWARDING      NONE
   0    Ethernet0/0/2               ALTE  DISCARDING      NONE
   0    Ethernet0/0/3               ALTE  DISCARDING      NONE
   0    Ethernet0/0/4               ALTE  DISCARDING      NONE
   0    Ethernet0/0/5               ALTE  DISCARDING      NONE
   0    Ethernet0/0/6               ALTE  DISCARDING      NONE

#在华为802.1W中将阻塞端口分为两种,一类叫做备份,另一类叫做替代;

修改BID优先级:

[Huawei]stp priority ?
  INTEGER<0-61440>  Bridge priority, in steps of 4096
[sw1]stp priority 28672		#将sw1的BID优先级修改为28672;

同样也可以指定root和备用root(将接口优先级设定为0和4096):

[sw1]stp root ?
  primary    Primary root switch
  secondary  Secondary root switch
[sw1]stp root primary
[sw1]stp root secondary 

修改接口cost值:

[sw1]interface GigabitEthernet 0/0/1
[sw1-GigabitEthernet0/0/1]stp cost ?
  INTEGER<1-200000000>  Port path cost

修改接口PID的优先级:

[sw1-GigabitEthernet0/0/1]stp port priority ?
  INTEGER<0-240>  Port priority, in steps of 16

关闭监听对话:

[sw1]user-interface console 0
[sw1-ui-console0]idle-timeout 0 0

802.1D工作过程简述:

? 当交换机接口启动STP协议后,有disable状态切换至blocking状态;等待20s之后,由blocking状态切换至listening状态,进行生成树的选举;选举产生根端口、指定端口和阻塞端口;阻塞端口有listening状态切换至blocking状态;根端口和指定端口则等待15s(Forward delay)后,由listening状态切换至learning状态;进行Mac地址的学习,建立Mac地址表;之后等待15秒之后由learning状态切换至forwarding状态;收敛完成。

? 在交换机初次进入learning状态时,所有交换机都会发送config-BPDU,进行根网桥、根端口、指定端口、阻塞端口的选举;当收敛完成时,只有根网桥会继续发送config-BPDU,对树中非根网桥进行信息的传达;指定端口负责将根端口收到的BPDU进行转发,转发的BPDU会将其中的BID替换为自己的BID,RTC值会修改为转发交换机的RTC值(标准是802.1T);

802.1D 重新收敛:

? 重新收敛是指网络已经收敛完成,当网络结构发生变换时,由链路状态出现故障的直连交换机;在链路根端口所在交换机一直向根网桥发送TCN-BPDU(网络拓扑变更BPDU),直到收到根网桥回复的TCA(网络拓扑变更确认BPDU)才会停止,之后会由根网桥统一下发配置BPDU进行收敛;

*STP协议工作全过程:

STP通过4个步骤来保证网络中不存在二层环路。

  • 在交换网络中选举一个根桥(Root Bridge,RB )
    • STP的计算需要一个参考点,而根网桥(root交换机)就是这个参考点,它是STP经计算得到的这棵无环的树的树根。
    • 桥ID最小的交换机将成为根桥。
    • 对于一个交换网络而言,正常情况下只会存在一个根桥。
    • 如下图所示,SW1、SW2及SW3的桥优先级都是32768,因此MAC地址最小的SW1成为网络中的根桥。
    • STP的正常工作依赖于该协议所使用的报文的正常交互,这种报文就是BPDU (Bridge Protocol Data Unit,网桥协议数据单元),BPDU中
      包含着几个重要的数据(根ID、RPC、网桥ID、桥ID),这些数据是STP进行无环拓扑计算的关键。
在这里插入图片描述
  • 需要注意的是,根桥的地位是具有可抢占性的。

  • 在上图网络拓扑中,在STP完成收敛后,若网络中接入了一台新的交换机,而且这台新增的交换机的优先级为4096,比现有根桥SW1的优先级更高,那么该新增的交换机将成为网络中的新根桥,与此同时,STP将重新收敛、重新计算网络拓扑,在这个过程中有可能引发网络震荡,从而对业务流量的正常转发造成影响,所以根桥角色的稳定性是十分重要的。

  • 在每个非根桥上选举一个根接口(Root Port,RP )

    • 在一个交换网络中,除了根桥之外的其他交换机都是非根桥,
    • STP将为每个非根桥选举一个根接口,所谓根接口,实际上是非根桥上所有接口中收到最优BPDU的接口(通过根端口接受来自根的BPDU),可以简单地将其理解为交换机在STP树上“朝向”根桥的接口。
    • 非根桥可能会有一个或多个接口接入同一个交换网络,STP将在这些接口之中选举出一个(而且只会选一个)根接口。
    • 在STP收敛完成之后,根桥依然会周期性地向网络中发送BPDU,而非根桥则会周期性地在自己的根接口上收到BPDU(非根桥会存储收到的BPDU,缺省老化时间20s),并沿着STP树向下游转发(根桥、非根桥都会通过指定端口向下游发送经过自己计算的BPDU报文)。
    • 如下图所示的网络中,SW2及SW3均为非根桥,以SW3为例,在STP收敛过程中,它在自己的Port1及Port2接口上都会收到BPDU,SW3会将这两个BPDU进行比较,收到最优BPDU的接口Port1将成为根接口(RPC较小)。
在这里插入图片描述
  • 选举指定接口(Designated Port, DP )
  • STP将在每个网段中选举一个指定接口,这个接口是该网段内所有接口中到达根桥的最优接口。并且,指定接口还负责向该网段发送BPDU。
  • 对于非根桥而言:
    1. 首先,所有接口中收到最优BPDU的接口将成为该设备的根接口(根ID->RPC->网桥ID->接口ID),
    2. 然后,该非根桥使用自己接收的最优BPDU为本设备上的其他接口各计算一个BPDU,
    3. 最后,使用计算出的BPDU与接口上所维护的BPDU(接口自身也会从网络中收到BPDU,并将BPDU保存起来)进行比较,如果前者更优,那么该接口将成为指定接口,并且其所保存的BPDU也被前者替代,交换机将替代后的BPDU从该指定接口转发给下游交换机;如果后者更优,那么该接口将成为非指定接口(非指定接口指的是既不是根接口,又不是指定接口的接口)。
  • 简单来说,对于非根桥而言,根接口的选举过程是非根桥将自己所收到的所有BPDU进行比较,而指定接口的选举过程则是非根桥用自己计算出的BPDU跟别的设备发过来的BPDU进行比较。
  • 如下图所示网络中,在SW1与SW2之间的网段中,SW1的Port1被选举为指定接口;在SW1与SW3之间的网段中,SW1的Port2被选举为指定接口。
  • 一般而言,根桥的所有接口都是指定接口。
  • STP还会在SW2及SW3之间的网段中选举一个指定接口,最终SW2的Port2接口胜出(网桥ID较小),成为该网段的指定接口。
在这里插入图片描述
  • 阻塞非指定接口,打破二层环路
  • 经STP计算后,如果交换机的某个(或者某些)接口既不是根接口又不是指定接口,我们将这种接口称为非指定接口,那么该接口将会被STP阻塞,如此一来网络中的二层环路也就被打破了。
  • 如下图所示的网络中,SW3的Port2由于既不是根接口,又不是指定接口,因此被阻塞。
  • 被阻塞的接口既不会接收也不会转发业务数据(业务数据有别于BPDU,可以简单理解为用户的应用数据),
  • 另外被阻塞的接口也不会发送BPDU,但是会持续侦听BPDU,以便感知网络拓扑的变更情况。
在这里插入图片描述
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:46:20  更:2021-10-13 11:47:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/29 20:01:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码