生成树协议

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

与众多协议的发展过程一样,生成树协议也是随着网络的发展而不断更新的,从最初的IEEE 802.1D中定义的STP到IEEE 802.1W中定义的快速生成树协议RSTP(Rapid Spanning Tree Protocol),再到最新的IEEE 802.1S中定义的多生成树协议MSTP(Multiple Spanning Tree Protocol)。

在以太网交换网中部署生成树协议后,如果网络中出现环路,生成树协议通过拓扑计算,可实现:

  • 消除环路:通过阻塞冗余链路消除网络中可能存在的网络通信环路。
  • 链路备份:当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性。

生成树技术背景

  • 交换机单线路上联,存在单点故障,上行线路及设备都不具备冗余性,一旦链路或上行设备发生故障,业务将会中断。

  • 冗余拓扑能够解决单点故障问题,但是同时也带来了二层环路;

  • 实际网络环境中,由于人为的疏忽也可能引发二层环路。

  • 二层环路对网络的危害极大。如若存在二层环路,一旦出现广播数据帧,这些数据帧帧将被交换机不断进行泛洪,从而在网络中造成广播风暴,严重消耗设备资源及网络带宽,最终导致网络瘫痪。

  • 通过在交换网络中部署生成树(Spanning-tree)技术,能够防止网络中出现二层环路。STP运行后,如果网络中存在环路,那么STP通过阻塞(Block)特定的接口从而打破环路,并且在网络出现拓扑变更时及时收敛,以保证网络的冗余性。

  • 当网络拓扑发生变更时,STP能够自动收敛,并调整接口状态,从而保证网络的冗余性。

STP的选举过程

  1. 每个交换网络选举一个根桥(Root Bridge);
  2. 每个非根桥上选举一个根端口(Root Port);
  3. 每个段选举一个指定端口(Designated Port);
  4. 阻塞非指定端口(NonDesignated Port)。

报文字段

字节 字段 描述
2 协议 代表上层协议(BPDU),该值总为0
1 版本 (802.1D的总为0)
1 TYPE “配置BPDU”为0、“TCN BPDU”为80
1 标志 LSB最低有效位表示TC标志;MSB最高有效位表示TCA标志
8 根ID 根网桥的桥ID
4 路径开销 到达根桥的STP cost
8 桥ID BPDU发送桥的ID
2 端口ID BPDU发送网桥的端口ID(优先级+端口号)
2 消息寿命Message age 从根网桥发出BPDU之后的秒数,每经过一个网桥都减1,所以它本质上是到达根桥的跳数。
2 最大寿命 Max age 当一段时间未收到任何BPDU,生存期到达MAX age时,网桥认为该端口连接的链路发生故障。默认20S
2 HELLO时间 根网桥连续发送的BPDU之间的时间间隔。默认2S
2 转发延迟 在监听和学习状态所停留的时间间隔。默认15S

配置BPDU中的重要参数

字段 描述
Root Identifier 根ID 发送此配置BPDU的交换机所认为的根交换机的交换机标识
Root Path Cost 到根的路径开销 从发送此配置BPDU的交换机到达根交换机的最短路径总开销,含交换机根端口的开销,不含发送此配置BPDU的端口的开销
Bridge Identifier 桥ID 发送此配置BPDU的交换机的STP交换机标识
Port Identifier 端口ID 发送此配置BPDU的交换机端口的STP端口标识

**比较次序:**Root Identifier > Root Path Cost> Bridge Identifier>Port Identifier

值越小越优先

Bridge ID

桥ID(Bridge ID)是交换机的STP标示符,一共8个字节,由2个字节的优先级和6个字节的MAC地址构成:

  • 桥优先级缺省为32768,可以手工修改。
  • MAC地址为交换机的背板MAC。
  • 网络中Bridge ID最小的交换机将成为根桥。

Path Cost

  • 路径开销是一个端口量,是STP/RSTP协议用于选择链路的参考值。

  • 端口路径开销的默认值及取值范围由选定的路径开销算法决定,路径开销与端口的带宽成反比。即,带宽越大,开销越小

  • 华为网络设备支持的路径开销计算标准:802.1d-1998、802.1t、legacy,其中legacy为华为私有标准。华为交换机默认选择802.1t的标准。

带宽 802.1t 802.1d
10Mbps 2,000,000 100
100Mbps 200,000 19
1000Mbps 20,000 4
10,000Mbps 2,000 2

从以上表格也可以看出带宽越大,开销越小。开销可理解为 “比例”。

IEEE802.1D标准最初将开销定义为1000Mbit/s除以链路的带宽(单位为Mbit/s)。例如,10BaseT链路的开销是100(1000/10),快速以太网以及FDDI的开销都是10。

Port ID

  • 端口ID (2字节)= 端口优先级(1字节)+ 端口编号(1字节)

  • 缺省优先级128,范围0-255,越小越优。

具体选举过程

1.每个交换网络选举一个根桥(Root Bridge);

网络中Bridge ID最小的交换机被选举为根桥。

优先级相等,比较mac地址小的,所以SW1为Root Bridge。

2.每个非根桥上选举一个根端口(Root Port);

除了根交换机(SW1),其余交换机选出根端口,比较Path cost(根交换机到非根交换机的端口开销)。

以SW3为例,

Port1的开销 = SW1 到 SW3的Port1端口的开销(10BASE-T)

Port2的开销 = SW1 到 SW2的Port1端口的开销 + SW2 到 SW3的Port2端口的开销(100BASE-T + 10BASE-T)

这里开销值的叠加都是指入端口的开销的叠加。

很明显Port1的开销小,所以优先级高,Port1为根端口。

同样,SW2的port1开销 = (100BASE-T),port2开销 = (10BASE-T + 10BASE-T),由于带宽越大,开销越小,所以port1为根端口。

3.每个段选举一个指定端口(Designated Port);

根桥上的端口都是指定端口,所以只需在SW2与SW3之间进行选举

Router ID 相同,比较Path cost,

SW3port2的开销 = (10BASE-T +10BASE-T)

SW2port2 的开销 = (100BASE-T +10BASE-T) ,开销小,选举为指定端口

4.1.选出非指定端口(NonDesignated Port),非指定端口将被阻塞。

未被选定的端口就会变成阻塞端口

STP的端口状态

Disable 端口不仅不转发BPDU报文,也不转发用户流量。端口为DOWN
Blocking 端口仅仅接收并处理BPDU,不转发用户流量。不学习MAC地址。 如果max age(默认20s)计时器到期时该接口任没有收到BPDU则切换到Listening状态。
Listening 不接收也不转发用户流量,接收并且发送BPDU,不学习MAC地址 确定端口角色,将进行选举动作。
Learning 不接收也不转发用户流量,接收并且发送BPDU,学习MAC地址
Forwarding 接收并转发帧,接收并且发送BPDU,学习MAC地址

STP拓扑变更机制

网络中发生拓扑变化时,例如链路中断或接口异常Down等情况,由于MAC地址老化时间的存在(缺省为5分钟),如果不及时通知上游设备,则可能会导致上游设备的报文在这段时间内一直向一个不可达的链路发送。

参考:STP拓扑变更机制

  • 感知到链路故障,下游设备会不间断地向上游设备发送TCN BPDU报文,

  • 上游设备会把配置BPDU报文中的Flags的TC位和TCA位同时置1,然后发送给下游设备,告知下游设备停止发送TCN BPDU报文

  • 上游设备,将TCN BPDU 复制一份继续向根桥发去,直到根桥收到TCN BPDU报文。

  • 根桥把配置BPDU报文中Flags的TC位和TCA位同时置1后发送,TC位置1是为了通知下游设备直接删除桥MAC地址表项,TCA位置1是为了通知下游设备停止发送TCN BPDU报文。

所谓“cam表”就是指二bai层交换机上运行的Cisco IOS在内存中维护的一张表,CAM表是交换机在二层转发数据要查找的表,表中有MAC地址,对应的端口号,端口所属的VLAN。交换机的每一个二层端口都有MAC地址自动学习的功能,当交换机收到PC发来的一个帧,就会查看帧中的源MAC地址,并查找CAM表,如果有就什么也不做,开始转发数据。如果没有就存入CAM表,以便当其他人向这个MAC地址上发送数据时,可以决定向哪个端口转发数据。

参考:什么是CAM表

STP配置

指定生成树协议类型(STP/RSTP/MSTP):
[SW] stp mode { stp | rstp | mstp }     缺省是MSTP
配置交换机优先级:
[SW] stp priority pri           缺省是32768
指定交换机成为根桥:
[SW] stp root primary
指定交换机成为次根桥:
[SW] stp root secondary
启用生成树:
[SW] stp enable
配置接口STP优先级:
[SW] interface GigabitEthernet0/0/24
[SW-GigabitEthernet0/0/24] stp priority priority
配置接口路径开销:
[SW] interface GigabitEthernet0/0/24
[SW-GigabitEthernet0/0/24] stp cost cost

•在三台交换机上开启生成树,协议类型均为STP(默认开启mstp);

•通过配置使得SW1成为主根,SW2成为次根;

•最终SW3的GE0/0/22接口将被STP阻塞。

SW1的配置如下:
[SW1] stp mode stp
[SW1] stp enable
[SW1] stp root primary
SW2的配置如下:
[SW2] stp mode stp
[SW2] stp enable
[SW2] stp root secondary
SW3的配置如下:
[SW2] stp mode stp
[SW2] stp enable

用SW1查看stp选举结果

查看SW3的端口

STP的短板

如果在交换机上运行基于VLAN的生成树就可以解决上述问题,由于生成树是perVLAN的,那么我们就可以灵活的设定每个VLAN对应的生成树所阻塞的接口,从而实现数据的分流。

但是如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源。

MSTP

  • MSTP兼容STP和RSTP,通过多实例能实现对业务流量和用户流量的隔离,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。

  • 在MSTP中,你可以将若干个VLAN映射到一个实例(instance),MSTP将为每个instance运行一棵生成树,可以基于instance设置优先级、端口路径开销等参数。

对于Instance1,GE0/0/22为阻塞端口,vlan10和vlan20的数据流量从GE0/0/21出去;

对于Instance2,GE0/0/21为阻塞端口,vlan30和vlan40的数据流量从GE0/0/22出去。

配置实现

SW1的配置

[SW1]vlan batch 10 20 30 40
[SW1]stp mode mstp                 #将生成树模式设置为MSTP
[SW1]stp region-configuration      #进入MSTP配置视图
[SW1-mst-region]region-name RG1     #MSTP域名为RG1
[SW1-mst-region]instance 1 vlan 10 20    #配置VLAN到实例的映射
[SW1-mst-region]instance 2 vlan 30 40
[SW1-mst-region]active region-configuration  #激活MST域的配置
[SW1-mst-region]quit

注意:同一域名下的交换机域名要一致

SW2和SW3配置同上

[SW2]vlan batch 10 20 30 40
[SW2]stp mode mstp
[SW2]stp region-configuration
[SW2-mst-region] region-name RG1
[SW2-mst-region] instance 1 vlan 10 20
[SW2-mst-region] instance 2 vlan 30 40
[SW2-mst-region] active region-configuration
[SW2-mst-region]quit
[SW3]vlan batch 10 20 30 40
[SW3]stp mode mstp
[SW3]stp region-configuration
[SW3-mst-region] region-name RG1
[SW3-mst-region] instance 1 vlan 10 20
[SW3-mst-region] instance 2 vlan 30 40
[SW3-mst-region] active region-configuration
[SW3-mst-region]quit

#配置各实例的优先级,SW1配置为实例1CIST的主根、实例2的次根:

[SW1]stp instance 1 root primary       #或者stp instance 1 priority 0
[SW1]stp instance 2 root secondary    #或者stp instance 2 priority 4096
[SW1]stp enable            #运行STP

SW1配置为实例2CIST的主根、实例1的次根

[SW2]stp instance 1 root secondary
[SW2]stp instance 2 root primary
[SW2]stp enable

配置交换机的接口允许通过不同vlan的数据

[SW1]interface GigabitEthernet 0/0/24
[SW1-GigabitEthernet0/0/24]port link-type trunk
[SW1-GigabitEthernet0/0/24]port trunk allow-pass vlan 10 20 30 40
[SW1]interface GigabitEthernet 0/0/21
[SW1-GigabitEthernet0/0/21]port link-type trunk
[SW1-GigabitEthernet0/0/21]port trunk allow-pass vlan 10 20 30 40
[SW2]interface GigabitEthernet 0/0/24
[SW2-GigabitEthernet0/0/24]port link-type tr
[SW2-GigabitEthernet0/0/24]port link-type trunk
[SW2-GigabitEthernet0/0/24]port trunk allow-pass vlan 10 20 30 40
[SW2]interface GigabitEthernet 0/0/22
[SW2-GigabitEthernet0/0/22]port link-type trunk
[SW2-GigabitEthernet0/0/22]port trunk allow-pass vlan 10 20 30 40
[SW3]interface GigabitEthernet 0/0/21
[SW3-GigabitEthernet0/0/21]port link-type trunk
[SW3-GigabitEthernet0/0/21]port trunk allow-pass vlan 10 20 30 40
[SW3]interface GigabitEthernet 0/0/22
[SW3-GigabitEthernet0/0/22]port link-type trunk
[SW3-GigabitEthernet0/0/22]port trunk allow-pass vlan 10 20 30 40

最终实现效果

从这里可以看出instance1中GigabitEthernet 0/0/22阻塞,instance2中GigabitEthernet 0/0/21阻塞,从而实现负载分担。

instance0是默认存在的,未映射的vlan都在这。

数通基础-STP原理相关推荐

  1. 数通基础-二层交换原理

    MAC地址 MAC地址有48bit,通常被表示为十六进制格式. MAC地址分为单播.组播及广播MAC地址三类. 单播MAC地址全球唯一,由 IEEE对这些地址进行管理和分配. 每个单播MAC地址由两部 ...

  2. 千峰笔记【数通基础】③ DHCP、DNS、FTP、WEB服务器搭建(Windows2003)

    千峰笔记[数通基础] 1000phone**WEB311**课程笔记(Day8-Day9) 一.DHCP服务器:(自动为客户机分配IP地址)[端口号67/68] 好处:减少工作量.避免IP冲突.提高地 ...

  3. 数通基础 -- 二层交换技术

    一些比较基础的交换知识,STP.RSTP.MSTP挖个坑,后续可能会加上. 目录 堆叠 厂商 iStack IRF(Intelligent Resilient Framework)智能弹性架构 VLA ...

  4. 数通--交互技术--STP+RSTP详解

    交互技术–STP+RSTP详解 STP: 一.作用: 1.解决环路(广播风暴.Mac地址表震荡) 2.实现链路备份的目的 二.stp流程(原理): 1.选举一个根桥 (优先级=BID<0-655 ...

  5. 数通基础-TCPIP参考模型

    TCP/IP TCP/IP参考模型 TCP/IP协议簇 TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式. TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议 ...

  6. 华为ICT网院课程数通基础配置笔记

    Eth-Trunk(链路聚合)     用途:增加骨干链路带宽.可靠性.     [S1]int Eth-Trunk number  创建     [S1-Eth-Trunk12]mode lacp- ...

  7. 一个网页浏览请求的数据通信过程(数通基础学习笔记)

    数据通信网络的基本功能:实现不同节点之间的数据互通 如上图,我们在计算机上发送一个http的网页浏览请求到目标服务器,会有以下过程: 1.计算器携带http应用数据通过应用层进入到传输层,通过tcp协 ...

  8. 数通基础-网络基础知识

    OSI参考模型 OSI 概念 Open System Interconnect开放系统互连参考模型,是由ISO(国际标准化组织)定义的.它是个灵活的.稳健的和可互操作的模型,并不是协议,而是一个伟大的 ...

  9. 数通基础之IP网络结构初识(学习笔记)

    总结脑图如下: 拓扑结构图示例如下: 其中,只有环型及网型具有冗余链路(两个节点之间某条路断了,可以通过另一条路完成建链) IP网络结构示例图如下: 骨干网和城域网都具有分层结构,如上图,核心层.汇聚 ...

最新文章

  1. mapreduce工作流程
  2. java B2B2C Springcloud多租户电子商城系统-(七)高可用的分布式配置中心(Spring Cloud Config)...
  3. UVA 315 :Network (无向图求割顶)
  4. solr4.10和solr5.x ik分词器配置,(Deprecated--2017-04-23)
  5. 使用 ortp 发送原始 H.264 码流
  6. saml java实现_java-saml
  7. centOS7安装nodejs(8.4.0)(详细步骤)
  8. typora的安装和配置
  9. React-如何在jsx中自动补全标签(vscode)
  10. soft215@163.com,销售工程造价,建筑,工控,模拟分析,财务等商业版软件︻◣
  11. linux【文件操作】命令详解
  12. D. Dirty Deeds Done Dirt Cheap
  13. 星期零参展FHC,推出新品“Pastrami”和“微笑乐摇杯”,引爆植物肉潮流
  14. 公积金贷款逾期预测Baseline分享
  15. Hive实战之视频网站数据分析
  16. 金蝶设置盘盈盘亏单据权限
  17. mac下编译hadoop3.0.*版本的native lib
  18. 从此开始,改头换面,重新做人
  19. 将SoundCloud API与Jav​​aScript SDK结合使用
  20. JavaSE进阶 | final关键字、抽象类和接口

热门文章

  1. Windows PowerShell简介
  2. L9110 L9110S SOP8 马达驱动 IC 芯片 H桥全桥 贴片
  3. Python命名方式转换——帕斯卡、驼峰法、下划线
  4. ftp服务器备份手机文件,ftp服务器文件自动备份
  5. 大明:讲解硬盘ESP分区和MSR分区有什么用?值得收藏
  6. 《阿凡达2》上映在即,3D渲染如何突破想象?
  7. Ubuntu安装Matlab其Simulink没有菜单栏的解决方案(转载可用)
  8. 最优化算法学习笔记+个人总结(一)
  9. 国泰煤炭运销管理系统
  10. SSL/TLS一键配置工具-IISCrypto