生成树协议(STP)

STP

在网络部署中,为了保障网络通信的稳定,通常会设计冗余链路,但是相应的就产生了环路控制的问题。STP协议是IEEE802.1D中定义的数据链路层协议,用于解决在网络的核心层构建冗余链路里产生的网络环路问题,通过在交换机之间传递网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),通过采用STA生成树算法选举根桥、根端口和指定端口的方式,最终将网络形成一个树形结构的网络,其中,根端口、指定端口都处于转发状态,其他端口处于禁用状态。如果网络拓扑发生改变,将重新计算生成树拓扑,因此这是一个动态收敛的结构。STP的存在,既解决了核心层网络需要冗余链路的网络健壮性要求,又解决了因为冗余链路形成的物理环路导致“广播风暴”问题。

生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能

由于生成树协议本身比较小,所以并不像路由协议那样广为人知。但是它却掌管着端口的转发大权—“小树枝抖一抖,上层协议就得另谋生路”。真实情况也确实如此,特别是在和别的协议一起运行的时候,生成树就有可能断了其他协议的报文通路,造成种种奇怪的现象。

生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。本文标题中的“生成树协议”是一个广义的概念,并不是特指IEEE 802.1D中定义的STP协议,而是包括STP以及各种在STP基础上经过改进了的生成树协议。

产生的问题

 

广播风暴

MAC地址表翻滚

同一数据帧重复拷贝 

最终导致交换机重启

生成树:

在一个二层交换网络中,生成一棵树型结构,逻辑的阻塞部分接口,使得从根到所有的节点仅存在唯一的路径;当最佳路径故障时,自动打开部分阻塞端口,来实现线路备份的作用;

生成树在生成过程中,应该尽量的生成一棵星型结构,且最短路径树;

存在算法:  802.1D      PVST  PVST+(CISCO)      RSTP(802.1w)      MSTP(802.1S)

 

在网络发展初期,透明网桥是一个不得不提的重要角色。它比只会放大和广播信号的集线器聪明得多。它会悄悄把发向它的数据帧的源MAC地址和端口号记录下来,下次碰到这个目的MAC地址的报文就只从记录中的端口号发送出去,除非目的MAC地址没有记录在案或者目的MAC地址本身就是多播地址才会向所有端口发送。通过透明网桥,不同的局域网之间可以实现互通,网络可操作的范围得以扩大,而且由于透明网桥具备MAC地址学习功能而不会像Hub那样造成网络报文冲撞泛滥。于是产生了STP(Spanning TreeProtocol)协议,其中IEEE的802.1D版本最为流行。

 

生成树协议(STP)_第1张图片

根网桥原则:

一个网络中只有一个根网桥。选择根网桥的依据是网桥ID【ID= 网桥优先级(0-65535公有) 默认32768 + 】,网桥ID由网桥优先级和网桥MAC地址组成。网桥ID值小的为根网桥,当优先级相同时,MAC地址小的为根网桥。

根端口:

在每台非根网桥上,有且仅有一个接口;本地离根网桥最近的接口(最短、星型),接收来自根网桥的BPDU,转发用户的流量(该接口不阻塞)

    1、比较从根网桥发出后,通过该接口进入时最小的cost值;

    2、入向cost值相同,比较该接口对端设备的BID,越小越优;

    3、对端BID也相同,比较该接口对端设备的接口的PID;先优先级小,若优先级一致,编号小;

    4、连对端PID也相同,比较本地PID,越小越优;

指定端口:

在每一段存在STP的物理链路上,有且仅有一个;转发来自根网桥的BPDU,同时可以转发用户流量(不阻塞);默认根网桥上所有接口为指定端口;

    1、比较从根网桥发出后,通过该接口进入这段链路时的cost值最小(出向);

    2、若出向cost值相同,必须本地的BID,越小越优;

    3、本地BID相同,比较本地的PID;

    4、本地PID,相同,直接阻塞该端口;

非指定端口(阻塞端口)当以上所有角色全部选举完成后,剩余没有任何角色的接口为非指定; 该接口逻辑阻塞,实际可以接收到信息,但不转发;

生成树协议(STP)_第2张图片

运行生成树协议的交换机上的端口,总是处于下面四个状态中的一个:

(1)阻塞:所有端口以阻塞状态启动以防止回路,由生成树确定哪个端口切换为转发状态,处于阻塞状态的端口不转发数据帧但可接受BPDU。

(2)监听:不转发数据帧,但检测BPDU(临时状态)。

(3)学习:不转发数据帧,但学习MAC地址表(临时状态)。

(4)转发:可以传送和接受数据数据帧。

STP协议给透明网桥带来了新生。但是,随着应用的深入和网络技术的发展,它的缺点在应用中也被暴露了出来。STP协议的缺陷主要表现在收敛速度上。

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

存在直连检测:本地存在阻塞端口,若其他端口断开,该阻塞端口马上进入15是侦听(选举);结果若为启用,那么将再进入15s学习---总30s

没有直连检测:本地不存在阻塞端口,若某个端口断开,将发送次优BPDU(以本地为根)给其他邻居交换机,其他交换机无视该数据,进行20s hold time计时,到时时阻塞接口进入15s侦听,15s学习=总50s

802.1D 缺点:

1、收敛慢

2、链路利用率低

为了解决STP协议的这个缺陷,在世纪之初IEEE推出了802.1w标准,作为对802.1D标准的补充。在IEEE 802.1w标准里定义了快速生成树协议RSTP(Rapid Spanning Tree Protocol)。RSTP协议在STP协议基础上做了三点重要改进,使得收敛速度快得多(最快1秒以内)。

PVST每个VLAN都生成一棵树。它能够保证每一个VLAN都不存在环路。注意这个协议是思科私有协议。为了携带更多的信息,PVST BPDU的格式和STP/RSTP BPDU格式已经不一样,发送的目的地址也改成了Cisco保留地址01-00-0C-CC-CC-CD,而且在VLAN Trunk的情况下PVST BPDU被打上了802.1Q VLAN标签。所以,PVST协议并不兼容STP/RSTP协议。

基于vlan的生成树协议(改变链路利用率低)

PVST+  升级了PVST----兼容802.1q  ;部分的加速;

MSTP【802.1s】(Multi-InstanceSpanning Tree Protocol){ 公有}多实例生成树协议,定义了“实例”(Instance)的概念。简单的说,STP/RSTP是基于端口的,PVST/PVST+是基于VLAN的,而MISTP就是基于实例的。所谓实例就是多个VLAN的一个集合,通过多个VLAN捆绑到一个实例中去的方法可以节省通信开销和资源占用率。

RSTP(rapid spanning Tree Protocol ),即快速生成树协议,最早在IEEE 802.1W-2001中提出,这种协议在网络结构发生变化时,能更快的收敛网络。它比802.1d多了一种端口类型:备份端口(backup port)类型,用来做指定端口的备份。 STP(Spanning Tree Protocol )是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。

MST(Multiple Spanning Tree,多生成树)   多生成树(MST)是把IEEE802.1w 的快速生成树(RST)算法扩展而得到的。   采用多生成树(MST),能够通过干道(trunks)建立多个生成树,关联VLANs到相关的生成树进程,每个生成树进程具备单独于其他进程的拓扑结构;MST提供了多个数据转发路径和负载均衡,提高了网络容错能力,因为一个进程(转发路径)的故障不会影响其他进程(转发路径)。

TCN—拓扑变更消息(也是BPDU): 本地交换机链路故障后,STP重新收敛,为了快速刷新全网所有交换机的MAC表,将向本地所有STP接口发送TCN(标记位中的TCN位置1),邻居交换机收到TCN后,先标记为ACK位为回复,用于可靠传输消息;之后将TCN逐级转发到根网桥处,由根网桥回复TC消息来逐级回复到所有交换机;使所有交换机临时将MAC表的老化时间修改为15s(默认的,转发延时)

生成树协议(STP)_第3张图片

 

[SWA]stp pathcost-standard ?    默认华为使用802.1t标准

  dot1d-1998  IEEE 802.1D-1998

  dot1t       IEEE 802.1T

  legacy      Legacy

 

802.1配置命令:

[sw1]stp mode stp   修改为802.1d算法,当下华为默认为MSTP;

[sw1]stp priority 4096    修改网桥优先级

 

[sw1-GigabitEthernet0/0/1]stp cost ?   修改接口cost值

  INTEGER<1-200000000>  Port path cost

 

[sw1-GigabitEthernet0/0/1]stp port priority ?  修改接口优先级

  INTEGER<0-240>  Port priority, in steps of 16

 

[sw1]stp priority ?  修改网桥优先级

  INTEGER<0-61440>  Bridge priority, in steps of 4096

 

[sw1]stp root ?  快速定义根网桥角色

  primary    Primary root switch

  secondary  Secondary root switch

 

[sw1-GigabitEthernet0/0/1]stp port  priority ?   修改接口优先级

  INTEGER<0-240>  Port priority, in steps of 16

 

[sw1-GigabitEthernet0/0/1]stp cost ? 修改接口cost

  INTEGER<1-200000000>  Port path cost

你可能感兴趣的:(笔记,网络)