如果在有冗余链路且有多个VLAN的交换网络中只使用 STP实例,那么在稳定状态中,仍会有一些端口处于阻塞状态不被使用,冗余链路实际上变成了备份链路。
PVST+特性能为每个VLAN创建一个STP实例。通过调整配置可使每个STP实例使用不同的根交换机,阻塞不同的端口。因此,可以用到所有可用链路实现流量的负载分担。
非cisco交换机只支持CST(通用生成树)。网络中只运行一个STP实例,对所有vlan使用一个stp拓扑,因此称为“通用”。虽然只使用一个stp实例能减少stp消息的开销,但无法使用多个stp实例实现负载均衡。
当混用 Cisco 和非 Cisco 交换机构建网络,并使用 802.1Q Trunk 时,仍可以在网络中的 Cisco 交换机部分充分利用多个STP实例的优势.
运行在 Trunk 上的 Cisco PVST+ 使用 VLAN 1 STP 实例与非 Cisco 交换机及其STP进行通信。PVST+ 区域中的VLAN 1 STP实例能够与 CST 区域中的 STP 实现互操作及融合。因此,整个交换网络能够计算出一个无环拓扑。在CST区域中,活跃的无环拓扑与所有VLAN相绑定;在PVST+区域中,活跃的无环拓扑只应用于VLAN 1。PVST+区域中的其他VLAN有各自的PVST+实例。
pvst+除vlan 1外的其他vlan, 会将cst区域作为一个无环共享网段对待。以pvst+ bpdu的不同封装实现:
目的mac:0100. 0CCC. CCCD(普通STP BPDU发往0180.C200.0000)
相应的vlan标记(普通stp不标记)
SNAP封装(普通为无SNAP的LLC封装)
此外每个每个pvst+ bpdu尾部都有一个特殊的TLV记录值用来携带vlan号,称该tlv为端口vlan id tlv(PVID TLV)。
pvst+交换机会分析这个tlv,并与收到这个bpdu的vlan进行对比,以检测本征vlan是否匹配。如此,pvst+ bpdu在隧道中通过cst区域,cst交换机照常泛洪,不做处理。对于非vlan 1的pvst+实例来说,整个交换网交换机络就像是一个由共享网段互连的pvst+区域。通过将pvst+ bpdu放入隧道以便穿越cst区域,cst区域只是连接pvst+区域的无环共享网段。
pvst+上的vlan 1实际上会被特殊对待:vlan 1既发送stp bpdu,也发送pvst+ bpdu。stp bpdu用于 cst 和vlan 1的pvst+交换机计算生成树。pvst+ bpdu能用来检测本征vlan是否匹配,否则会在到达时被忽略。
关于端口处理这些BPDU的过程, access端口只发送与access vlan相关的stp bpdu,access端口必须只收到IEEE BPDU,否则它会通告类型不一致状态。端口所属access vlan所对应的stp实例会处理这些IEEE BPDU。如果是trunk端口上,处理如下:
vlan 1 stp实例会立即处理IEEE格式的BPDU
pvst+ bpdu根据以下步骤进行处理:
1.通过查看PVST+BPDU的802.1Q标记,将BPDU分配给适当的VLAN。若有标记,则将BPDU分配给标记所示的VLAN。若无标记,则将BPDU分配给本征VLAN。
2.检查BPDU中的PVID TLV。若PVID TLV中携带的VLAN与BPDU被分配的VLAN不符,则丢弃此BPDU,并针对有问题的VLAN声明PVID不一致状态。这就是本征VLAN是否匹配的检查规则。
3.凡是PVID TLV中的VLAN与分配的VLAN相同的BPDU,将由对应VLAN的STP进行处理,但VLAN1的BPDU是个例外。因为IEEE BPDU和PVST+ BPDU关于VLAN 1的信息是重复的,且STP总是要处理IEEE BPDU的,而VLAN1的PVST+ BPDU只用来防止VLAN1的本征VLAN不匹配,此后便可丢弃。
 
 
 
如上,cst区域在pvst+看来就相当于一条链路,因为PVST+ BPDU有效地通过隧道穿越了CST区域,所以对于非VLAN 1 PVST+ STP实例来说,CST区域只是一个共享网段。这些共享网段的内部是无环的,它们或是连接着多个PVST+区域,此时PVST+负责消除PVST+区域间有可能残留的环路;或是不为PVST+区域提供传输连通性。PVST+ BPDU会通过CST区域泛洪,但却不被处理。当被转发的PVST+ BPDU到达其他PVST+区域中的第一台Cisco PVST+交换机时,监听0100.0CCC.CCCD组播的交换机会读取并解释这个BPDU。

STP-4-每VLAN生成树和Trunk上的STP的更多相关文章

  1. VLAN配置及Trunk接口配置

    实验拓扑 1.检验连通性,PC2 ping PC3,PC2 ping PC4 ,都能ping 通 2.创建vlan 3.配置access接口 在S1上配置E0/0/2为vlan10和E0/0/3为vl ...

  2. VLAN-3-VLAN Trunk:ISL和802.1Q

      (1)ISL和802.1Q概念       通过使用VLAN Trunk链路,设备可以通过一条链路发送去往多个vlan的流量.为了知道数据帧属于哪个vlan,发送方会添加原始以太网数据帧的头部,这 ...

  3. 配置trunk

    SW1 Switch>en Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(c ...

  4. H3C交换机配置常用命令(转)

    1.配置文件相关命令 [Quidway]display current-configuration //显示当前生效的配置 [Quidway]display saved-configuration / ...

  5. Cisco基础(六):配置目前网络环境、项目阶段练习

    一.配置目前网络环境 目标: 一家新创建的IT公司,公司位于北京有80多台服务器 目前网络环境使用技术,通过端口映射技术将web服务器发布给Internet: 三层交换:汇聚接入层交换机 默认路由:实 ...

  6. 【转】不同VLAN之间相互通信及VTP、STP、EtherChannel概念

    厘清最后一个概念. 转了网上两个相关帖子: http://www.net130.com/CMS/Pub/Tech/tech_zh/2009_03_12_97386_3.htm http://blog. ...

  7. 局域网安全-生成树攻击-ARP攻击-MAC攻击-VTP攻击-动态VLAN的攻击

    一.MAC layer attacks 1.CAM表的OVERLOAD 第三方设备不断发送变化的MAC地址,填满CAM表,对于后来合法的MAC地址不能学习到从而泛洪,这时攻击者将学习到合法者的数据包. ...

  8. 2.1-VLAN/TRUNK/VTP

    2.1-VLAN/TRUNK/VTP     注意:配置VLAN时要退出VLAN配置模式才会执行 如果VLAN被删除或者shutdown,那么属于这个vlan的接口将被阻塞(灯一直是橙色,变不了绿色) ...

  9. 网络基础知识系列:阐述VLAN和Trunk

    网络性能是影响的效率的重要因素. 大的广播域分割方法,旨在提高网络性能.一个接口上,可是,路由器的LAN接口数量有限,它的主要功能是在网络间数据传输,而不是对终端设备提供网络接入. 訪问LAN的功能还 ...

随机推荐

  1. Android Weekly Notes Issue #241

    Android Weekly Issue #241 January 22nd, 2017 Android Weekly Issue #241 本期内容包括: 经典导航模式Master/Detail的设 ...

  2. 3种方式实现python多线程并发处理

    标签: python奇淫技巧 最优线程数 Ncpu=CPU的数量 Ucpu=目标CPU使用率 W/C=等待时间与计算时间的比率 为保持处理器达到期望的使用率,最优的线程池的大小等于$$Nthreads ...

  3. Nginx安装教程(Centos6.8)

    1.安装gcc gcc-c++(如新环境,未安装请先安装 yum install -y gcc gcc-c++ 2.安装wget yum -y install wget 3.安装PCRE库 cd /h ...

  4. Chrome 插件 Vimium——让你脱离鼠标

    下面是帮助,按?就能出现.什么时候忘了可以随时查看.^_^

  5. OpenCV——PS滤镜 水波效果

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  6. vue-cli脚手架搭建Vue.js项目

    前提条件: 一.node.js 下载 https://nodejs.org/zh-cn/download/ 二.webpack 安装 npm install webpack -g   PS:-g 就是 ...

  7. 如何理解Web应用程序的MVC模型?

    View,也就是视图/视野,是你真正看到的,而非想象中的 Model.Controller,也就是控制器,是你用来改变 Model 方式.简单的说 Controller 和 View 分别是 Mode ...

  8. PHP mysql_fetch_array与mysql_fetch_row的区别

    如果你的表里面有字段a,b,c那么你用mysql_fetch_row() 就返回array(1=>a的值,2=>b的值,3=>c的值)这个时候你读数组的话,只能这样写$array[1 ...

  9. Spring 注释标签@Resource @Autowired 和@Inject的区别

    一些spring的开发人员在使用这三个标签进行注入的时候感到困惑.我来尝试解释一下这三个注解的主要区别.事实上,这三者非常相似,只存在一些微小的差别.在稍后的文章中会进行解释. @Resource-在 ...

  10. CPU、内存、硬盘分区的检测.py

    cpu_mem_directories.py   CPU.内存.硬盘分区的检测 #!/usr/bin/env python #coding:utf-8 import psutil import tim ...