1,交换机的好处,和交换机所带来的问题,就是产生环路。
交换机能够扩大网络直径,能让更多的网络直径参与到网络通信中来,但是交换机同时也带来了一个问题,就是会产生环路。
2,环路是如何产生的?
交换机基本工作原理是,通过学习维护一个mac和端口对应的表格,交换机只对报文进行透传,不会像路由器那样,对报文添加标记,根据局域网的工作原理,这样就必然会导致环路的产生。如下图例子:
如上图,我们假定终端A是第一次发消息,发出一个消息1发给B,根据局域网的工作原理,该消息会被交换机S1 S2 S3收到,S1透传出消息1,发给终端B,同时也会给该消息发给S2 S3,依次类推,在网络中形成的环路的信息会急剧的增加,迅速将网络堵死。
3,生成树协议概念的产生,生成树是如何避免环路的?
802标准委员会,为了解决这个问题,提出了STP协议生成树的概念。
生成树就是通过将一个物理上有环存在的网络中,通过逻辑上阻塞某些端口,将网络中存在的环拆解开,使整个网络在逻辑上是一种树状结构,并保证其数据传输的效率。
对上图的说明:图中的每个矩形代表一个网桥,深颜色矩形为跟桥,也就是一棵树的根。深
色端口为阻塞端口,也就是被生成树协议,根据一定的算法,所阻塞掉的端口。这样我们可以从这科树的根出发,走实线的路径,那么我们可以清晰的看到是一棵树的形状,这棵树没有环路。
4,介绍STP。bpdu包结构。其中各个字段的含义。
生成树的基本原理,
1,选择跟桥,在参与本局域网通信的所有网桥中,选择一个网桥作为根网桥,也就是树的根。
2,选择根端口,根端口就是某一网桥通过该端口到达根网桥,路径开销最小。
3,选择指定端口,端口优先级向量劣于根优先级向量的端口。
生成树实现这一机制是通过相互发送BPDU消息来实现的,BPDU中携带一些生成树计算所需要的必要信息。如下BPDU格式:
其中所包含的Root Identifier , Root Path Cost, Bridge Identifier, Port Identifier, 为生成树参与计算的重要元素。
Root Identifier 由桥的优先级加mac组成
Root Path Cost 根路径开销
Bridge Identifier 桥标识
Port Identifier 端口标识
5,优先级向量,共有几个优先级向量?优先级向量是如何比较的?
STP桥的优先级向量:
优先级向量的组成成分如下,
有如下几个优先级向量:
优先级向量的比较:
先比较RootBridgeID
如果RootBridgeID相等,比较RootPathCost,
如果RootPathCost相等,比较DesignatedBridgeID,
如果DesignatedBridgeID相等,比较DesignatedPortID,
如果DesignatedPortID相等,比较BridgePortID。
如果其中有一步不等,就选择较小的那个向量,小的为优。
阻塞指定桥ID较大的端口。把指定端口较大的端口阻塞。
把本地端口较大的端口,阻塞掉。
6,一个网桥是如何进行优先级向量选择的?
在网络刚刚启动的时候,每个网桥将自己作为根网桥,所以网桥ID92,从各个端口上发送优先级向量92 0 92。
同时网桥也会收到其它网桥发过来的优先级向量,对所收到的优先级向量进行优先级比较。
优先级最小的被选择作为根端口,消息优先级向量代替该端口的优先级向量,成为新的端口优先级向量,新获得的端口的优先级向量中,最小的那个做为根端口。从优先级向量中,根标识是41 而不是92 可以判断出本桥不是根桥,
根端口的优先级向量为:41 12 111
将根端口的优先级向量的路径开销12 加上本端口的路径开销1 为13,所以:
根路径优先级向量为:41 13 111
本网桥的根路径优先级向量桥ID为41,本网桥ID为92,很显然,本网桥不是根网桥,所以:
根优先级向量为:41 13 111
将根优先级向量的指定桥ID 111,用本网桥的ID 92来代替,这样得到:
指定优先级向量为:41 13 92
将指定优先级向量和根端口以外的其它端口进行比较,如果指定优先级向量优于该端口向量那么该端口为指定端口,如果指定优先级向量差与该端口优先级向量,那么该端口为替换端口,blocking掉。
7,故障处理。
链路故障怎么办
●
Hello Time
→
网桥从指定端口以Hello Time 为周期定时发送配置消息。
●
Message Age 和Max Age
→
端口保存的配置消息有一个生存期Message Age 字段,并按时间递增。每当收到一个生存期更小的配置消息,则更新自己的配置消息。当一段时间未收到任何配置消息,生存期达到Max Age 时,网桥则认为该端口连接的链路发生故障,进行故障的处理。
如果活动的链路发生故障怎么办呢?生成树算法提供了一种定时器策略,配置消息中携带了一个生存期的域值,根网桥从它的所有端口周期性的发送生存期为0的配置消息,收到配置消息的网桥也同样从自己的指定端口发送自己的生存期为0的配置消息。如果生成树的枝条出现故障,则这条链路下游的端口将不会收到新鲜的配置消息,自己的配置消息的生存期值不断增长,直至到达一个极限。该网桥将抛弃这个过时的配置消息,重新开始生成树计算。 其中,定时发送的周期为hello time ;配置消息的生存期为message age ;最大生存期为max age 。
一个接受并处理配置消息的例子
●
根据收到配置消息的优先级,选择Port4为根端口,选择Port1和Port2为指定端口,同时阻塞端口Port3和Port5。
●
从Port1和Port2发送新的配置消息:(23,15,81),其中,
→RootId = 23
→RootPathCost = 14+1 = 15→
RootPort = Port4
Port 1
Port 2Port 3Port 4
Port 5
blocking
blocking
32,0,32
23,18,12323,14,321
23,14,100
23,15,80
root
23,15,81B81
23,15,81
上图为选择根端口的过程,