首页 > 代码库 > MSTP多实例的配置

MSTP多实例的配置

MSTP多实例的配置

这次实验主要是为了加强对stp生成树协议中,RP(根端口),DP(指定端口),AP(阻塞端口)的判断方法;虽然很多时候不需要我们人工判断,因为当我们吧所有的配置好之后,然后开启生成树协议,电脑会自动进行判断:而我们现在需要对其原理进行详细的了解:

一、我们先对各种端口进行简介

根端口(RP):非根交换机去往根桥路径最优的端口,根端口不可能存在在跟桥上;非根桥上只能存在一个根端口;

 

根端口选举:按照下面的条件进行比较:

 

设置的优先级(默认优先级都是32768)越小越好——>根路径开销RPC:——>路径上所有出端口开销的总和 ;越小越好;——>对端BID对端PID(选择小的) ;——>本端PID;

 

根端口都是接收最优BPDU

 

指定端口(DP):交换机向所连网段转发BPDU的端口 每个网络有且只有一个指定端口;但每个交换机上可以有几个指定端口;

 

指定端口选举:设置的优先级——>根路径开销RPC——> 本端的BID ——>本端的PID;

 

指定端口是发送最优BPDU;

 

预备端口(AP):预备端口将被阻塞,虽然不能转发用户数据帧,但是可以接收并处理STP协议帧;

 

 

根桥选举:ID=桥优先级+MAC地址(BID)越小越优

    PID=端口优先级+端口号  端口开销  

 

BPDU:网桥协议数据单元:

  BPDU类型:

  a.配置BPDU包含了桥ID 路径开销 端口ID等参数

  b.TCN BPDU 是指下游交换机感知到拓扑发生变化时向上游发送的拓扑的变化通知

 

  配置BPDU信息:

  a.根桥ID:由根桥的优先级和MAC地址组成

  b.根路径开销:到根桥的最短路径开销

  c.指定桥ID:指定桥的优先级和MAC地址组成

  d.指定端口ID:由指定端口的优先级和端口号组成

 

STP定时器:

  message age:配置BPDU在网络中传播的生存期

  max age:配置BPDU在设备中能够保存的最大生存期(20s)

  hello time:配置BPDU发送的周期

  forward delay 端口状态迁移的延时   

 

 

 

 

实验过程:其实这一章并没有那么多问题来探究;所以我也没有发现有什么坑可以去跳。所以就简单的对一些常用的命令进行验证;但是又太无聊了。所以想到哪儿写到哪儿吧;

 技术分享

 

第一步:先按照图中的配置将所有的ip配置好;(所有的主机IP都是10.0.0.x)、因为都是在二层网络中,所以他们都存在于同一个网段;因为在模拟器中,将整个系统启动之后,都会自动启动stp(默认的mstp);

 技术分享

接下来我做的实验是一个比较陌生的实验:mstp应用;

 

什么是mstp呢?

多生成树(MST)使用修正的快速生成树RSTP)协议,叫做多生成树协议(MSTP)

 

通过MSTP把一个交换网络划分成多个域,每个域内形成多颗生成树,生成树之间彼此独立。每个域叫做一个MST域,每个生成树叫做一个多生成树实例:MSTI;

mstp由一个或多个mst域组成,每个mst域中可以包含一个或者多个msti。(mst实例)mst域中含有一个vlan映射表。描述了vlan和msti之间的映射关系,默认

情况下所有的vlan都映射到msti0中,msti之间彼此独。每个Vlan只能对应一个msti,即同一个vlan的数据只能在一个msti中传输;而一个msti可能对应多个vlan;

 

Mstp又有什么优势呢?

rstp和stp有一个共同的缺陷:局域网所有的VLAN共享一颗生成树,链路被阻塞后将不能承载任何流量,造成宽带浪费,因此无法再vlan间实现数据流量的均衡负载,

 技术分享

这个是通过我个人理解画出来的神作,里面的细节在我脑海中。估计也只有我自己能看懂;

 

 

实验正式开始:

先献上我的图:

技术分享

 

第一步:将所有的主机进行配置;先不对vlan进行划分,路由器不做任何的配置;看看交换机的状态:

使用命令:

[LSW1]display stp brief

[LSW1]display stp

 

 

这张图是通过命令查询:发现的所有的有关信息并且把重要的信息记录在图上了;在这里我们可以看到LSW3是根桥(因为LSW3mac地址最小);然后将所有的端口的类型已经标示在图上;

 

然后我们选择测试连通性:使用PC1pingPC4,因为目前没有对进行vlan设置,所以根据生成树协议,按照一条固定的路径传输;(图上黄色路径表示);并且除了pc1pingPC2,无论是哪个源主机ping哪个目标主机,都会按照同一个路径传输,不会产生环路;

 

这个就像是线性拓扑结构一样,一根线上串上很多个主机,但是不同的是,这个是一捆电缆,并不会导致端口信号冲突(全双工模式),所以也不需要“带有冲突检测的载波侦听多路访问方式”;CSMA/CD;

顺便补充下什么是CSMA/CD;

 技术分享

 

 

但是我们现在可以很明显的发现这个网络的问题所在:

局域网中共享一颗生成树;一旦链路被阻塞后将不能承担任何的流量;在本图中LSW1LSW2之间的链路,除了能够转发配置BPDU,但是不承担任何流量,所有造成了资源的浪费;

 

第二步:在交换机上进行配置;设置accesstrunk端口;(在这里只做一个示范;)

技术分享

[LSW1-Ethernet0/0/1]port link-type access

[LSW1-Ethernet0/0/1]port default vlan 10

 [LSW1-Ethernet0/0/3]port link-type trunk

[LSW1-Ethernet0/0/3]port trunk allow-pass vlan all

技术分享

LSW1上配置成功之后:

 技术分享

LSW2上配置成功之后:

 技术分享

LSW3上配置成功之后:

 技术分享

 

当所有配置ok后,这下所有不同区域的主机是不能互相访问的;当然,这个不是我们今天讨论的重点:因为今天的主要问题是mstp

如果不对交换机做其他的设置的话:所有的数据都只会按照上图的生成树(黄线标注)的方向进行转发;

 

第三步:对交换机进行配置,实现mstp多实例;

Pc1pc3相互访问按照图中红色的路径传输;

Pc2pc6相互访问按照图中蓝色的路径传输;

Pc4pc5相互访问按照图中黄色的路径传输;

这样就不会出现链路资源浪费的情况,并且能实现负载均衡;

 技术分享

 

技术分享

[LSW1]stp region--mst-region]region--mst-region]revision-level -mst-region]instance  vlan    将vlan10映射到msti1

[LSW1-mst-region]active region-configuration   使用这个命令激活mst域配置;

技术分享

 

 技术分享

当我们三个交换机都做同样的配置:开启mstp 的多实例;

vlan10映射到msti1

Vlan20映射到msti2

Vlan30映射到msti3

 技术分享

技术分享

 技术分享

 

但是我们可以通过上述三个图片中,可以了解到:每个msti实例中,根交换机根本就没有变化。三个根交换机的根桥都是LSW3

通过抓包:LSW1LSW3之间的链路:然后选择用pc1pingpc3

 技术分享

 

发现,本来不应该出现在这条链路上的数据也出现在这条链路上了。

所以说到底还是没有实现负载均衡;

因为我还没有做完实验啊,哈哈哈哈

 

第四步:设置每个msti实例的根桥;

[LSW1]stp instance 1 priority 0[LSW2]stp instance 2 priority 0[LSW3]stp instance 3 priority 0

 

这才是最关键的:将不同的msti实例下设置不同的根桥;这样也不会产生环路同样也能实现负载均衡;

 

结果我发现:我吧LSW1设置为了根桥。结果它的role竟然没有变化?!Excuse?!

 技术分享

 

然后通过我的分析,原来是我自己只是在LSW1上设置了vlan10msti1的映射,并没有设置从vlan20msti2的映射和从vlan30msti3 的映射;所以对于msti1来说,只有LSW1一个交换机;这就很尴尬了。所以我们要解决问题:

 

第五步:在每个交换机中设置好所有的实例:

我在每个交换机上都设置了三种映射关系;结果为什么LSW2并没有MSTID3

 技术分享

[LSW2]vlan 30 当我添加上这个命令就成功出线了。

原因:应该是我之前没有在LSW2上创建需要的vlan30;所以在设置映射的时候,由于msti3并不能映射到没有设置的vlan30上。所以没有建立映射;

 

 

因为画布问题。所以我就截取关键地方:

 技术分享

  技术分享

 技术分享

 

 

如上图所示,三个不同的交换机上面的不同的mtsi实例上面都有着不同的根桥;

 

相当于:vlan10的数据帧会在msti1的生成树上传递

        Vlan20的数据帧会在msti2的生成树上传递

        Vlan30的数据帧会在msti3的生成树上传递

 

现在再次使用PC1pingPC3;抓包LSW1LSW2之间的链路:

 技术分享

发现从PC1pc3的数据从之前是阻塞的链路上传递过来的;因此成功的实现;

 

最后一步:对网络进行优化设置

在这里我想配置端口的root的保护功能:

作用:在制定端口使能根保护功能后,收到的优先级更高的BPDU时(RP根端口)该端口状态将进入Discarding状态,不在转发报文;在经过一段时间(通常为两倍delay),如果一直没有收到优先级高的BPDU,该制定端口将会自动回复到正常的Forwarding状态;但是配置了根保护的端口将不能再配置环路保护功能;

默认情况是关闭的。

 

 

在这里提一下什么是环路保护功能:

     配置交换机设备的根端口或者阻塞端口的环路保护功能:不能配置在制定端口;

     再启动了环路保护功能后,如果根端口或者阻塞端口长时间收不到来自上游设备的BPDU报文时,则会向网管发出通知信息;此时RP会进入discarding状态,而阻塞端口保持阻塞状态,不转发报文,从而不会形成环路;直到收到了bpdu,才能恢复正常;

   默认情况下也是关闭的;

 技术分享

于是乎,我对LSW3上的指定端口进行了根保护:于是不好的事情发生了:

 技术分享

这个图是LSW3配置了端口保护功能的图:突然发现:本来端口的root保护功能只能配置在指定端口下,但是对于mstid=2的实例来说:e0/0/3是根端口结果也被配置了root保护功能;

     这个是为什么呢?

 

待我问清楚了在写:


MSTP多实例的配置