600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > CATIA转的STP打开什么都没有_第五篇:STP

CATIA转的STP打开什么都没有_第五篇:STP

时间:2018-12-10 15:12:48

相关推荐

CATIA转的STP打开什么都没有_第五篇:STP

STP

生成树协议

STP:Spanning-Tree Protocol,生成树协议,其主要作用是防止网络拓扑中因冗余链路形成的环路。在下图中,三个交换机两两相连,可以看到,SW1的F0/1端口是连线状态为橙色,通过查询,看到如下信息,其中F0/1端口状态是BLK,blocking(阻塞),为什么会这样呢?

为了解释这个现象,先引入一个术语BPDU:Bridge Protocol Data Unit,桥协议数据单元

BPDU

BPDU,生成树协议定义的一个数据包,该数据包包括网络中所有交换机都需要相互交换的、用于根交换机选举的信息,即Bridge ID,也叫桥ID。Bridge ID包含2个内容:

1. 优先级。优先级默认是32768,范围是0-65535,越小越优先

2. MAC地址。如果优先级一致,对比交换机主板MAC地址,MAC地址越小越优先

通过BPDU,能得到什么呢?网络中的设备在对比优先级后,选举出一台最优先的设备,该设备就是root,即根桥。确定根桥有什么意义呢?根桥一旦确认完成,所有的非根桥都不再发BUDP,只有根桥每2s进行发送,这样也可以优化网络。

需要注意的是,此时的BPDU,相比之前已经有了变化。此时发送的BPDU,不仅包含Bridge ID,还包含Root ID,Root ID的内容仍然是优先级和MAC地址,只是这个优先级和MAC地址是根桥的优先级和MAC地址。

因此以上选举根桥的过程可以表述为:初始状态下,每一台交换机都会发BPDU,因为开始时,都认为自己是根桥,将自己的bridge id作为root id发出去,通过对比优先级和MAC地址,决定出谁才是真正的根桥,之后不是根桥设备的不再发送BPDU

此时的BPDU包含Root ID和Bridge ID,其它设备如何转发处理BUDP呢?根桥将BPDU发送出去时,非根桥设备会保留Root ID,然后将自身的Bridge ID替换根桥的Bridge ID转发出去。记住这一点将非常重要

接下来,再来熟悉另一个术语:根端口,Root Port(RP)。

Root port

根端口是到达根桥最优的端口,根端口的选举会涉及3个方面的内容:

1. 到达根桥的最低路径成本。开销(Port cost )越小,越优先

默认情况下,开销的计算如下:

当然,端口的开销也可以人为进行配置:spanning-tree cost value

2. 最低的发送者网桥ID

当端口开销一样时,如sw3端口f0/1和f0/2开销都是38,此时对比两个端口接收到的bridge ID:f0/1接收到sw1的bridge ID,f0/2接收到sw2的bridge ID,接收到的bridge ID优先级和MAC地址小的端口为根端口(所以,记住BPDU的内容非常重要)

3. 最低的发送者端口ID

如上图,假设sw1是根,那么对于sw0来说,f0/1和f0/2有以下特点:

a.到根的开销都是一样的(19)

b.都接收到sw1的同样的root ID和bridge ID,bridgeid一样,到此为止,不能确定出sw0的f0/1和f0/2哪一个是根端口

c.根桥发送BPDU时,不仅发送了root ID和bridge ID,还会发送Port ID【包括优先级(默认128,最大255,越小越优先)和端口号】

定义是sw1的f0/1发送的port ID是:128.1(优先级128,是SW1的第1个端口)默认情况下,交换机的Port ID是端口号越小,越优先

所以,sw0上要选一个根端口,不是以sw0本身的port ID来选的,而要根据对端的port ID来确定。所以很显然,上图中的sw0端口f0/2是根端口

已经写了很多内容了,但是很显然,STP的内容还没有结束,因为到目前为止,我们还不知道为什么会有一个端口被阻塞了。

再来介绍下一个术语:指定端口,Designated port(DP)。

指定端口

指定端口就是每一段之间(即生成树中的一条链路),如果其中一端是根端口,那么另一端必然是指定端口(如下图);对于环路中的另一条链路,如SW1和SW2之间的链路,对比BPDU(实际上是对比Bridge ID),决策出来指定端口,而另一个端口没有身份,该端口叫非指定端口(Nondesignatedport)。在这里,指定端口的选举规则与根端口的选举规则一致。

在下图中,跟显然,SW0是根桥(为什么?),到达根桥最优先的端口SW1的F0/1以及SW2的F0/2为根端口Root Port,则该链路的另一端则必为DP;而对于环路中的另一条链路,SW1与SW2之间的链路,对比优先级和MAC地址,选举指定端口为SW2的F0/1,则SW1的F0/2为非指定端口

至此,终于知道阻塞端口了,阻塞端口就是STP环路中的非指定端口,阻塞该端口的目的正是为了实现STP的防环功能。

虽然已经了解了STP的防环机制,但是STP的内容还是没有结束。但是接下来的内容明显要好理解多了

STP中端口的角色

根端口(Root port):只能接收BPDU,不能发送BPDU

指定端口(Designated port):发送BPDU。根桥所有的端口都是指定端口

非指定端口(Nondesignated port):对于BPDU,只能听(listen),不能转发

交换机刚开始连线时,为什么不能直接进行通信呢?在Packet Tracer模拟器中表现为橙色,然后是绿色。从橙色到绿色的过程中,就是STP开始之前选举至结束的过程。下面开始介绍交换机端口角色变化过程

STP中端口变化过程

端口角色在BPDU的一系列选举中对应端口状态变化

1. Blocking:初始状态,或在决定非指定端口后的端口状态。该状态可以监听BUDP

2. Listening:监听BPDU,不能学习MAC地址,不能转发数据,维持15s左右的时间,这15s一直在发送和接收BPDU,确认端口角色。根桥、根端口、指定端口、非指定端口都在该状态下完成;非指定端口在此时会直接回到block状态

3. Learning:根端口、指定端口在listen状态之后,转到learn状态。该状态下端口可以监听BPDU,学习MAC地址,但还是不能转发数据。该状态仍然维持15s

4. Forwarding:根端口、指定端口在learn状态之后,转到forward状态。根端口和指定端口都会停留在这个状态

5. Disabled:禁用。只要交换机开启生成树,默认所有的接口都会参与生成树,不管对端接的是主机,还是其他设备。如果想要某一个端口不参与生成树,没有端口选举角色,不管BPDU,不防环,那就禁用这个端口。但是不建议禁用,因为禁用不防环,很难查;而且不利于应用

以上介绍的是交换机的防环功能,但是请思考一个问题:在STP的环路中,如果某一条正在工作的链路故障了,交换机如何展现其链路备份,如何开启阻塞端口,如何解决单点失效的问题?

情况一:如果是有阻塞端口的交换机链路发生单点失效,如下图中的sw1-sw2,sw1会立刻感知到,立刻将阻塞端口开启,经过30s状态变为forward

情况二:如果是非阻塞端口所在交换机发生单点失效,如下图中的sw0-sw2,sw1不可能立刻感知到,此时阻塞端口会一直监听BPDU,但是要20s才会超时,才会感知到非直连链路有问题了,阻塞端口被开启后经过30s状态才会变为forward,整个过程历时50s

开启阻塞端口后,仍然不能发送数据,因为之前的MAC地址都是保存在其它的端口,阻塞端口的mac地址表示空的,也就是说,此时仍然没有实现冗余。要实现其冗余功能,需要再介绍一种BPDU报文,TCN BPDU

TCN BPDU

之前介绍过的BPDU,是标准的BPDU报文,也叫配置BPDU。而TCN BPDU,叫特殊的BPDU,Topology Change Notification BPDU,拓扑变更通告BPDU。当发生单点失效时,失效端口所在的交换机如果根端口还在,则会通过根端口向上发送TCN BPDU;此时,收到TCN的设备先回复一个标准的BUDP,告知故障设备已经收到TCN,然后继续向上转发TCN BPDU,最后到达根桥

根桥收到TCN BPDU后,会重新配置BPDU,并将该配置BPDU发送出去,该BPDU会包含TC:拓扑变更(TC位,拓扑变更位),该配置BPDU只会在收到TCN时发送一次,告知所有端口。端口在收到BPDU时,发现有TC位,立刻将自己的MAC地址老化时间改成15s,进入15s的转发延迟,15s之后,所有的MAC地址被清空

此时再进行数据发送,就都是未知单播,全都没有MAC地址表的映射,全都是广播泛洪,泛洪一两轮之后,已经按照泛洪轨道重新学习了一个新的链路。再有数据发送,就按照新的链路进行发送,而不再是单点失效之前的链路

以上整个过程这个时候才真正实现了生成树的冗余

以上所有内容是标准的生成树协议,叫STP,但是思科有自己的生成树体系,叫pvst

PVST:per VLAN spanning tree,每一vlan运行一颗生成树,缺点是,每一个vlan都要发送BPDU,开销过大;优点:负载均衡

在下图中,三个交换机的优先级一致,但是MAC地址sw1最小,所以,sw1为网桥,对应的端口是指定端口;sw2的MAC地址最大,所以有一个端口被阻塞了

至此STP的理论就结束了,但是此时的根桥以及其它所有角色都是STP协议自定义的,这样就会有一个问题,根桥有可能出现在接入层(如下图),而汇聚层就会有端口被阻塞,这样就会导致选出来的最优链路,忽上忽下的发送,因此一般情况下,根桥都需要认为指定,这也是STP协议中可能会用到的最大的配置(写了这个多,需要配置的其实就是一条命令而已,-_-||)

配置交换机主根的方法:

在需要配置位根桥的交换机中配置位root primary:

spanning-treevlan 1 root primary

在需要配置位根桥的交换机中配置优先级位4096的整数倍,一般配置位0:

spanning-treevlan 1 priority 0

最后扩展一下,在进行接口配置时,为什么连接终端的交换机端口要配置位access?

因为在OSI模型分层中,主机是高于交换机很多的,因此主机就可以模拟交换机发包,比如 BPDU,最后选举出来主机成为根桥,那么主机就可以窃取所有二层网络中的流量转发。所以在划分vlan之前,需要先将连接主机的端口配置成access,此时不管主机用任何方法模拟交换机发BPDU包,都是不被承认的,而只承认其发送的是数据包

-END-

点击留言不迷路,大家一起上高速

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。