您的位置:首页 > 编程语言 > PHP开发

STP_1 【STP _STP】小白

2017-03-08 09:41 211 查看
作者:arvin_MK

STP 我和你

这是上学期学的内容了,当时也记不的怎么原因了学的是烂七八糟的,晕了上学期一学期,老师讲课的时候有的很多知识点都是通过实验来讲出来的,上课的时候自己就跟不上,最进通过查资料及了解搞了一周了感觉终于从头到尾是懂点了。。。

STP首先他是一个解决冗余网络所产生环路的一个机制,可以解决因单点及单链路故障所引起的网络故障问题。

对于一个冗余网络环境当中,如果不在我们的二层设备上开启STP的话就会产生广播风暴,轻则影响我们的网络性能,重则整个网络瘫痪。对于我们上层也有环路的产生RIP就是一个例子,通过防环机制来解决环路的产生。而我们的二层环路应该怎样解决呢?(STP)

STP原理:

首先STP防环的最终目的就是最终选择出来一个阻塞端口,第一步就是选择一个根桥然后以根桥为参考生成树算法计算出根端口,指定端口及最终的阻塞端口。

第一步选举根桥:

       我们的STP生成树协议呢是工作在我们的STP生成树域内的,STP生成树域就是一组运行了STP协议的交换机他们之间通过Trunk连接互通。在开始所有的交换机都认为自己是根桥,都认为在这个域中我最大,它么门之间都会相互发送BPDU帧,在域中的交换机都会获得到所有设备发来的BPDU帧,它们通过比较帧里的BID字段里的优先级值(提到优先级范围是1-65535,有一个默认的优先级-32768,优先级是可以配置更改的,但是更改的值必须在在这个范围内且能被4096整除)所有的交换机都有一个缺省优先级,一般是比较不出谁是根桥的,但是在我们指定一个特定根桥的时候,可以配置优先级值,这个值越小越有可能成为根桥。如果在开始通过优先级比较不出根桥交换机,还可以通过MAC地址来比较(这个MAC地址并不是交换机某个物理接口的MAC,这个mac是设备背板的mac从中选择最次小mac进行比较,这个可以唯一的选出一个根桥。我们在指定特定根桥的时候不建议通过更改mac来确定根桥的,因为我们的mac地址是比较他的十六进制大小的所以我们不好控制他的大小。)这时我们以下面这个图为例子:比如通过选举SW1是根桥


 

总结:

1)根据BID的优先级

2)根据BID的mac

STP是怎样实现我们冗余网络环路的,首先STP是工作在STP生成数域内的交换机互联运行了STP生成树协议后,他们就是一个STP生成树域,在这个域里开始都会认为自己是根桥,所有的交换机都会发送各自的BPDU帧,所有的交换机都会收到,收到后就会比较接收到的BPDU帧,通过比较帧里的BID字段

打字打的好累,因为我打字太慢了,但是还是想通过这种方式来再复习一下,好了我们继续来谈二层环路的解决过程

选举根端口:

我们选择了根桥只是第一歩并不能解决环路,下面还要选择一个根端口,每一台非根桥交换机上有且只有一个根端口。第一就是通过路径的开销值(路径的开销由端口开销来决定的端口开销又是由端口速率决定的)来决定一个根端口,路径的开销值就是到达根桥的最优路径,根桥确定后只有根桥才能组播我我们的BPDU帧,现在我们以下面这个图为例来说:比如说sw1是根桥,组播了BPDU帧,SW2收到后就会改写我们BPDU里cop的开销值(这个值是我们本交换机接受帧端口的开销值并不是线路的开销,也不是发送者的开销。)下面这个拓扑中比如sw2收到了bpdu后如果交换机上边这两个端口是百兆端口那么开销就是19,那么下面两个接口的开销是sw3+sw4+(本身)接收端口的开销和。如果都是百兆口那么就是12。从开销值来判断对于sw2来说根端口是上边的,但是一个非根桥交换机只能有一个根端口,所以这时使用cop开销不能确定下来。

第二就是使用我们的发送者的BID大小确定根端口


 

比如说现在这个拓扑中sw2的bid小于我们sw3的bid,这时候sw4收到后就会比较收到
b255
bid的大小,发现sw4左边接口接受的bid值小宇右边的bid所以sw4就会认为左边的两个接口更适合做为根桥,但是左边还是有两个根桥所以现在还是确定不下来根端口。这时就会使用下面的方案,比较portid值(说起来port他也有优先级和唯一的端口编号,优先级字段默认是128,这个优先级也可以通过相应的命令进行更改,范围是1-255,修改的值必须能被16整除,另一个字段就是端口编号唯一的确定我们的根端口,比如f0/24和f1/24他们的优先级就是f0/24更为优先成为根桥。)比如我们在上边的拓扑中,所以的交换机我们定义为左边的接口id比右边的优先所以。现在就可以唯一的定义一个交换机的根端口。

指定端口:

现在我们还要进行第三步的选举,我们知道了根端口(rp)

指定端口的选择是有规律的,根端口对端一定是我们的指定端口DP,根桥的所有端口都是指定端口这个必须的,那么如果一个网段中没有根端口,也没法判断出谁是指定端口时怎么解决呢?这时就需要比较我们的发送者的cop路径开销值,上边那个拓扑为例,对于SW1来说发送接口的cop都是 0所以这个连个接口都是指定端口,对于在sw2和sw3网段中sw2的发送接口的开销是4对于sw3是8所左边的第二个是指定端口*(左边已经定位是根端口。)其他的也是这样。如过通过开销不能比较出指定端口那么就通过比较发送者bid的大小来确定。我们看下图已经比较出每个端口的角色。


 
[align=right]   (arvin_MK) 本人是一网界小白,烦请各位大神不吝赐教。
[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: