本节书摘来自异步社区《CCNA ICND2(200-101)认证考试指南(第4版)》一书中的第1章,第1.2节基础内容,作者 【美】Wendell Odom,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.2 基础内容
CCNA ICND2(200-101)认证考试指南(第4版)
1.2.1 LAN 交换复习
提示:
该部分将复习一下ICND1考试和CCENT认证中的以太网LAN交换的基本内容。如果对以太网LAN的基本内容记得很牢,可直接跳到下一部分1.2.2节“生成树协议”。
现代LAN是通过有线和无线网络连接将各种设备连接到一起建立起来的网络。这些连接赋予网络内任何设备相互之间发送和接收数据的基本手段。这些连接到LAN的设备,与WAN和互联网相结合,就能够与企业网络甚至世界另一端的设备进行通信交流了。
现代LAN的有线对部分采用了以太网标准和LAN交换机。以太网标准定义了电缆的物理布局细节,还有数据链路层的规则,包括成帧和地址。在物理上讲,以太网的规模可大可小,但它们都含有以下三个基本部分:
带有以太网网络接口(NIC)的设备
以太网LAN 交换机
连接设备的电缆(从NIC到交换机端口,交换机端口之间,等等)
图1-1显示了6台PC机连接到一个单独的LAN 交换机的实例。
![41e6dfab7fcd9e800fbfb3e727b8e75b3b9667e3](https://i-blog.csdnimg.cn/blog_migrate/bc3de8c3a4338ca8a199368d2e810a84.png)
1.LAN 交换机转发逻辑
STP 为了防止出现环回问题,因此会限制交换机对帧转发的路径。有时,出现这些问题的原因是,如果没有像STP这样的外部方法,核心LAN交换机逻辑可能会围绕LAN永远地转发一个帧。
所以要理解STP,就必须清楚地记得LAN交换机的核心逻辑,特别是该交换机的转发逻辑。然后您就能理解为什么没有STP帧会进入环回,接着就能理解STP是如何防止这一点的。
以下步骤详细说明了在STP不起作用的情况下LAN交换机如何转发帧。
考试要点
步骤1 决定在哪个VLAN中转发帧,具有以下两种情况。
a.如果该帧进入一个接入接口,那么就用该接口的接入VLAN。
b.如果该帧进入一个中继接口,则使用该帧的端口聚合(trunking)报头列出的VLAN。
步骤2 通过进入接口和VLAN ID将源MAC地址添加到MAC地址表中。
步骤3 在MAC地址表中查找该帧的目的MAC地址,但仅针对在步骤1确定的VLAN中的条目。根据目的MAC是否被发现,执行以下步骤之一。
a.已发现:将该帧转发给与其匹配地址表条目中列出的唯一接口。
b.未发现:将该帧转发给同一VLAN的所有接入端口以及所有将此VLAN列为完全支持的中继 (trunk)端口(在允许的列表中注明处于活动状态且不会被删除允许STP转发)。
例如,在图 1-1中,请考虑由PC机A发出的一个帧。图中暗示交换机端口F0/11在VLAN 1中,所以在处理过程的步骤1中,交换机认为该帧在VLAN1中。该交换机不会将该帧转发到VLAN2的端口(F0/13和F0/14)或VLAN3(F0/15和F0/16)。接下来,该交换机会在MAC地址表中寻找目的MAC地址,但仅查找VLAN1中的条目。
本章在后面将讨论STP如何对该逻辑进行补充,同时进行接收和转发帧的时候限制交换机使用的接口,进而防止出现环回。
2.交换机验证
LAN 交换机逻辑实际上已经缩短为一种相当短小的描述,因为交换机可能每秒要转发多达数百万帧(fps)。接收帧,确定VLAN,到MAC表中匹配目的MAC,选择输出接口,并转发该帧。但是,要想理解show命令却不那么容易,特别是您在现实世界中不会每天都用这些命令的情况下,结果更是如此。这部分复习在考虑STP时两个有用的show命令。
“我已经知道了吗?”小测试的答案:
(1)a (2)c (3)a和b (4)c和d (5)c (6)b (7)d
查看 MAC 地址表
第一个例子给出了两台交换机SW1和SW2的MAC地址表(如图1-2所示)。图中VLAN10的两台PC机和一台路由器,揭示出了这些MAC地址表背后的概念。示例1-1展示了show mac address-table dynamic命令的输出,该命令列出了交换机上的所有VLAN动态获知的所有MAC地址表条目。
![084dfe4a0484c2719fe18edaaa524034785ac9d0](https://i-blog.csdnimg.cn/blog_migrate/3488c1e75f66421b2bb97cd45b2cf190.png)
注意,每台交换机上的每个命令基本上都会重复同样的MAC表信息,如图1-2所示。两者都已知道所有三个MAC地址,因此三台设备中的任意一台肯定已经发送了帧并到达了另外两台交换机。但是,请注意每台交换机都有不同的转发(端口)信息。例如Fred的MAC地址0200.1111.1111列在SW1的端口Fa0/9上,但在SW2的MAC地址表中,则列在SW2的Gi0/2端口上。所以,该表中的转发细节告诉本地交换机从哪个本地端口转发该帧。
STP 不会在这一命令的输出中留下任何特殊的痕迹或注释。但是STP会影响交换机用以了解MAC地址的那组端口,所以STP间接地改变了show mac address-table命令的输出显示内容。本章后面将会谈到,STP会导致某个端口阻塞,换句话说,交换机对进入接口的帧置之不理。结果,将不再从这些帧中取得MAC地址,这会影响show mac address-table命令中列出的条目。
确定帧的VLAN
2层交换机的转发过程根据单个VLAN的环境来转发帧。也就是说,帧进入交换机,交换机必须确定该帧到达的是哪一个VLAN。接着,这台2层交换机将帧仅转发到同一VLAN的端口,或者支持该VLAN的中继端口。
Cisco交换机的端口只能作为接入端口或中继端口进行操作,端口的类型决定了交换机如何确定进入帧的VLAN。作为接入端口,交换机将单一的VLAN和该接口结合到一起。到达接入端口的帧都被假定是该接入VLAN的一部分,可使用switchport access vlan vlan-id接口子命令对其进行配置。对于中继(trunk)端口,帧到达时,在端口聚合(trunking )报头上会带有一个VLAN 标签;该标签便是VLAN ID。
示例1-2列出了2个show命令,它们能够列出交换机接口和相关VLAN信息。show interfaces status命令列出了所有交换机的接口和它们的当前状态。该命令还显示了接口的VLAN(如果作为接入端口操作)或指出该端口当前正处于中继端口工作状态。
![cbc385c45904a75009657627c95144d5d80c5ae8](https://i-blog.csdnimg.cn/blog_migrate/0fa5d4fdffdab014760b1c653826749e.png)
示例的最后一行是show vlan命令的输出内容,该命令列出了所有的VLAN和所有指定到每个VLAN匹配的接入端口(注意,这些命令匹配之前的图1-1)。
花费少许时间再回想一下STP的任务。STP对示例1-2中的任何一个命令都不起作用。比如show interfaces status命令,STP并不会改变现有VLAN的划分、端口聚合(trunking)状态或将接口的状态从“连接”变为其他什么。STP需要首先使用show spanning-tree命令,然后将生成的这些信息应用到所有有关接口的常规信息上(不管它们是接入链路还是中继链路)和它们支持的VLAN上。
验证中继(Trunk)
最后复习一下前面讨论过的LAN交换命令输出结果基本内容,碰巧也显示了某些STP的直接证据:show interfaces trunk命令。
如果在中继的两端都配置正确的话,Cisco交换机接口会以VLAN端口聚合的模式工作。该中继支持所有本地交换机已知的VLAN。不过,由于不同的交换机功能,中继也可以选择对某些VLAN不进行帧转发;其中一个功能就是STP。
show interfaces trunk命令确定了两个重要的思想。首先,它只列出当前可操作的中继,且不会列出未来可能需要协商的端口聚合(Trunking)。该命令也在输出的最后一行为每个端口列出了交换机当前为哪些VLAN转发帧。示例1-3 就是一个例子。
![03925fae367c9ad27e07e308e68326bfc7f5c1fd](https://i-blog.csdnimg.cn/blog_migrate/326b4c5a579fd34c6880474e1019be1b.png)
该命令的输出列出了4组信息。第1组总结了可操作的中继(trunk)和它们的设置。其后3组列出了每个中继(trunk)支持的VLAN,其中的约束都是由低到高逐渐增加的。该示例列表最后列出的VLAN(加亮显示)都是可以被该端口转发并接收的。在本例中, SW1的端口Gi0/1 将会为VLAN1、3和10转发,其他VLAN就不行了。
该命令对STP非常重要,因为它列出了某些直接受STP影响的信息。STP对每个VLAN使用称为“转发”和“阻塞”的端口状态。如果STP阻塞了某个特殊VLAN的一个端口,那么该VLAN就不会出现在 show interfaces trunk命令最下面的最终列表中(第2章会讨论STP的配置和验证,还会举出几个STP阻塞和对这个命令有何影响的示例)。
1.2.2 生成树协议 (IEEE 802.1D)
如果没有生成树协议(STP),有冗余链路的LAN会导致以太网帧在网络内无限期地循环。启用STP后,一些交换机会阻塞端口,这样这些端口就不会转发帧。STP会智能地选择要阻塞的端口,但始终会记住以下两点:
VLAN中所有设备可以发送帧给所有其他设备,换句话说,STP没有阻塞太多的端口,只是截断了LAN的某些部分与其他部分的联系。
帧的寿命很短,不会无限期地在网络中来回往复。
STP 允许帧被提交到每一个设备且不会产生帧在网络中无限环回的问题,以此实现了某种平衡。
STP 在交换机使用接口收发用户数据前,会对每个接口进行额外的检查,以此来避免环回帧的出现。该检查如下:如果该端口正处于STP在那个VLAN中的转发状态,那就正常使用;如果该端口正处于STP阻塞状态,那就阻止所有的用户数据并且在那个VLAN中该接口不收发用户数据。
注意,这些STP状态不会改变您已经掌握的交换机接口的其他信息。连接/非连接的接口状态不会发生变化。接口的操作状态(接入或中继)也不会发生改变。STP 只是增加了这一额外的STP状态,用阻塞状态完全关闭相关接口。
多数情况下,最后两句总结了STP的目的。至于STP如何工作的具体细节则可能需要花费相当多的时间进行研究和练习。本章的第二部分首先讲解STP的必要性以及STP是如何解决环回帧的,接着是STP如何选择应该阻塞哪个交换机端口来完成STP的任务。
1.生成树的必要性
如果LAN想要拥有冗余链路并且不用STP,那么就会出现三种常见的问题,而STP 可以避免以太网LAN中的这三个问题。其实,这三个问题是该情况的副作用,即没有STP,部分以太网帧会在网络中反复环回相当长的一段时间(几小时,几天,严格来说,如果LAN设备和链路不停止工作,这些帧可能无限环回下去)。
一个帧在网络中往复循环会导致所谓的广播风暴。广播帧或多播帧或目的未知的单播帧在LAN中无限环回时会出现广播风暴。广播风暴会使一些链路上塞满了许多相同帧的无用拷贝,而把真正有用的帧挤出去,而且,终端用户PC机需要处理太多的广播帧,而严重影响PC的性能。
为了方便理解,图1-3展示了广播风暴的一个简单示例,其中Bob首先发出一个广播帧。图中虚线部分标识在没有使用STP时,交换机转发帧的过程。
提示:
Bob的初始广播通过SW3复制一份原始帧给Gi0/1端口,同样也会被转发到其他方向。图中为便于观察并没有将该帧显示出来。
还记得本章开始时复习过的LAN交换机逻辑吗?此逻辑告诉交换机要将广播帧在同一VLAN的所有接口(除了该广播帧的入口端口)向外发送。在该图中,这意味着是由SW3转发Bob的帧给SW2,再由SW2将该帧转发给SW1,接着再由SW1将该帧转发给SW3,再由SW3将其再次转发给SW2等,如此反复环回下去。
当广播风暴发生时,帧就像图1-3所示那样反复环回,直到出现以下3种情形,帧环回才会停止:一是其中的一个交换机的接口被关闭;二是重新启动交换机;三是某种原因使环路断开。当然,相反的方向上也会发生上述情况,Bob发送初始帧,SW3将一个拷贝转发到SW1,SW1将其转发到SW2,依此类推。
![6d2d2ac0b17e1dff7017ea955a58c3d48e43bad4](https://i-blog.csdnimg.cn/blog_migrate/dd99590d2872612cd689666d751b353c.png)
环回帧还会导致MAC表不稳定。正由于环回帧的源MAC地址信息不停地变化,交换机的MAC地址表也会随之改变。如图1-3底部所示,SW3上最初Bob的MAC表条目为
0200.3333.3333 Fa0/13 VLAN 1
根据上述的过程,首先环回帧到达SW2,接着到达SW1,最后又返回SW3的Gi0/1接口,那么来思考一下交换机的学习过程。SW3会认为源MAC地址是0200.3333.3333,而帧进入Gi0/1接口,那么MAC表更新后,SW3的MAC表条目结果为
0200.3333.3333 Gi0/1 VLAN 1
这时,SW3无法正确地将帧交付到Bob的MAC地址。此刻,如果一个目的地为Bob的帧到达SW3(不同于引起问题的环回帧),那么SW3会错误地将该帧通过Gi0/1转发给SW1。
该环回帧还可能出现的第3类问题:同一个帧的多个拷贝到达目的地。例如,Bob给Larry发送了一个帧,但是所有交换机都不知道Larry的MAC地址。交换机各自会向目的地未知的单播MAC地址泛洪帧。当Bob发送此帧(目的地址为Larry的MAC地址)时,SW3就会分别给SW1和SW2发送帧的拷贝,而SW1和SW2也泛洪此帧,这样就导致同一个帧的多个拷贝在网络中环回。SW1也会通过接口Fa0/11给Larry发送每个帧的拷贝,结果,Larry则会接收到该帧的多份拷贝。即使没有其他的网络问题,这种情况也会导致应用程序故障。
![b4911ba47de5d37f47cd9fee223594c15e11bfdb](https://i-blog.csdnimg.cn/blog_migrate/2102ce99c89fd5086f8c8fa04bfd0c2a.png)
现在Bob发出一个广播帧,该帧就不会发生环回。具体步骤如下:
步骤1 首先Bob把帧发给SW3;
步骤2 因为SW3的Gi0/2接口正处于阻塞状态,SW3接着只会把帧转发给SW1,而不会通过Gi0/2转发给SW2;
步骤3 SW1通过Fa0/11和Gi0/1接口泛洪此帧;
步骤4 SW2通过Fa0/12和Gi0/1接口泛洪此帧;
步骤5 SW3接收帧,但它会忽略从SW2转发到SW3的Gi0/2接口的帧,因为该接口正处于阻塞状态。
在图1-4所示的STP拓扑结构中,SW2和SW3之间的链路没有用于在VLAN中通信,这是STP带来的较小负作用。尽管如此,如果其他两个链路发生故障,那么STP会立即收敛,将SW3的Gi0/2接口转变为转发状态,使其可用于转发数据。
提示:
STP收敛(STP convergence)是指多个交换机共同侦测到LAN拓扑发生了某些变化,交换机将相应端口改变为阻塞状态或者转发状态的过程。
到此为止,STP的功能已经讲完了,每个端口被置于转发或阻塞两种状态之一。更有趣的问题,并且需要花费更多心思来理解的,就是如何以及为什么STP会做出这样的选择。STP是如何控制各个接口设置为阻塞或转发状态呢?STP又是如何响应网络运转中断,利用冗余链路的优势,改变接口的阻塞或转发状态进行收敛呢?接下来的内容将对这些问题逐个解答。
3.生成树的工作原理
STP算法创建了一个可以转发帧的接口生成树。树形转发接口结构创建了一条往来于每个以太网链路的单一路径,就像在现实中沿着树的根部一直到每片树叶,都可以追踪到一条单独的路径一样。
提示:
STP的出现要早于LAN交换机出现的时间。那时,以太网网桥使用STP。今天,交换机应用STP,扮演了和网桥同样的角色。不过很多STP术语依然指的是网桥。鉴于本章和STP的目标,请将网桥和交换机视为同一含义。
STP所用的处理方法有时被称为生成树算法(Spanning Tree Algorithm,STA),它会选择适当的接口,并将其设置为转发状态。而对于没有被选择为转发状态的接口,STA则设置为阻塞状态。也就是说,STP只是把需要设置为转发状态的接口挑选出来,并将剩下的接口设为阻塞状态。
STP根据以下3种标准来选择将接口设置为转发状态。
STP会推选一个根交换机,并将根交换机上所有正在工作的接口都设置为转发状态。
每个非根交换机算出一个在自身和根交换机间具有最低管理开销的端口,该开销称为交换机的根开销(root cost)。STP把该端口设置为转发状态,这个具有最小根开销(least-root-cost)的端口称为这个交换机的根端口(Root Port,RP)。
许多交换机会连接到相同的以太网网段,而在现代的网络中,通常为两台交换机彼此相连。将这些连接到相同以太网链路的交换机相互比较,可以选出一个具有最低根开销的交换机,并把该交换机设置为转发状态。这些交换机被称为指定交换机,而连接到该网段的交换机接口被称为指定端口(Designated Port,DP)。
提示:
根交换机所有工作接口都设置为转发状态的真正原因是,这些接口都会成为指定端口(DP)。这样,更容易记住根交换机的所有工作接口都会转发帧。
所有其他的接口都被设置为阻塞状态。表1-3概括了STP设置端口为转发或阻塞状态的原因。
![7051ac40d97453f9dddd2ac175a8af02bd329c03](https://i-blog.csdnimg.cn/blog_migrate/11323473bf80537359279d5792ba3594.png)
提示:
STP只会考虑正在工作的接口(连接状态)。故障接口(如没有插入线缆的接口)或者因管理需要关闭的接口,则被设置为STP禁用状态。因此,本小节所指的的工作端口(Working Ports)是指当STP设置该接口为转发状态后,可以转发帧的接口。
STP网桥ID和Hello BPDU
生成树算法(Spanning Tree Algorithm,STA)首先要选举一台交换机作为根交换机。为了更好地理解这个选举过程,则需要理解在交换机间发送的STP消息,以及用于唯一识别各交换机的标识符的格式和概念。
STP网桥ID(Bridge ID,BID)是一个与每个交换机一一对应8 Byte的值。网桥ID由2 Byte的优先级字段和6 Byte的系统ID组成,其中系统ID来自于各交换机中烧录MAC地址。而使用烧录的MAC地址可以确保每个交换机网桥ID的唯一性。
STP定义名为网桥协议数据单元(Bridge Protocol Data Unit,BPDU)的消息,交换机则通过BPDU相互交换信息。其中最常见的BPDU称为Hello BPDU,它列出了许多细节,其中包括发送端交换机的BID。交换机可以通过这个唯一的BID,区分出不同交换机发送的不同的Hello BPDU。表1-4列出了Hello BPDU中的关键信息。
![3e73d22e88aa62c4ed9ef19cc76cbeefdbdc7060](https://i-blog.csdnimg.cn/blog_migrate/0f3f4b8325cb1f0fe794e18237f0961f.png)
现在需要暂时记住表1-4所列出的前3项,接下来会用到这3个字段,介绍STP如何通过3步来选择接口,并将其转换为转发状态。下面将讲解STP进程中的3个主要步骤。
选举根交换机
交换机根据BPDU中的网桥ID选择根交换机。根交换机就是BID数值最小的交换机。BID由两部分组成,以其中的优先级字段作为开始,基本上具有最低优先级的交换机作为根交换机。例如,一台交换机的优先级为4096,而另一台交换机的优先级为8192,则优先级为4096交换机作为根交换机,而不用考虑使用哪个MAC地址为每一台交换机创建了BID。
如果BID的优先级部分相同,则将BID中MAC地址最小的交换机作为根交换机。因为BID的第二部分是交换机的烧录MAC地址,也可以用来进行比较。例如,如果BID的优先级部分相同,而其中一台交换机的BID中MAC地址是0020.0000.0000,另一个交换机中的MAC地址是0911.1111.1111,那么第一台交换机(MAC地址0020.0000.0000)作为根交换机。
STP选举根交换机的方式是这样的:首先,所有的交换机都发出Hello BPDU并声明自身作为根,BPDU中列有自身的BID并作为根BID;这时,如果一台交换机接收到一个Hello消息,消息中所记录的BID更优(更小),则该交换机立即停止通告自身作为根,并开始转发高级Hello消息;更优交换机发送的Hello消息中列出了更优BID并作为根;这个过程类似于政治竞选,支持率较低的候选人会放弃竞选,转而支持另一候选人。最后,各交换机都会一致同意和支持选举出的具有最优(最小)BID的交换机,至此,模拟政治竞选的过程也到此结束。
提示:
一个不错的问候,也就是列出的根BID不错(数较小),被称为优秀的问候;一个差劲的问候,也就是列出的根BID不怎么样(数较大),被称为劣等问候。
图1-5显示了根交换机选举过程的开始。如图所示,SW1首先通告自身作为根,SW2和SW3也执行类似通告。然而,SW2会认为SW1为更优的根,于是SW2开始转发来自SW1的Hello消息。此时,该图显示SW1发出的Hello消息中列出了SW1作为根;SW2对此表示同意并转发SW1的Hello,其中列出SW1为根但SW3仍然认为自身是最优的,所以仍在Hello BPDU中列出SW3的BID为根BID。
![29d2ba95330982ce8ff3df6672eae6b0bab5698e](https://i-blog.csdnimg.cn/blog_migrate/b4859a84c8c464c39b8e41adfae2437f.png)
选举完成后,只有根交换机才可以继续发送原始的STP Hello BPDU消息。其他交换机仅接收Hello消息,并更新发送者的BID字段(和到根的开销字段),最后通过其他接口向外转发此Hello消息。图1-6反映的过程如下:第①步SW1发送Hello消息;第②步,SW2和SW3各自通过其他接口向外独立地转发此Hello消息。
总之,每个交换机声称自己为根交换机,具有数值上BID最低的交换机胜出。将BID分为多个部分并进行比较:
考试要点
最小的BID
如果BID优先级相同,最小的交换机MAC地址胜出
选择每个交换机的根端口
STP过程的第2部分是为每个非根交换机选择一个且唯一的根端口(Root Port)。一台交换机的根端口(RP)就是该交换机到根交换机STP开销最小的接口(最小根开销)。
某台交换机到根交换机的开销概念很容易被理解。借助根交换机的网络图,列出交换机每个端口的STP开销,以及非根交换机的开销。实际中的交换机可不是网络图,它们采用不同的处理过程,但网络图可以帮助理解这一概念。
图1-7正是这样的图,与前面的几幅图一样含有三台交换机。图中的SW1已被选为根,该图是从SW3的角度考虑开销的。
![aa9e328b5e7c6a6709253ae3931924d20be26bc2](https://i-blog.csdnimg.cn/blog_migrate/84e882e5802a853d9b4be9ed2aa8af8f.png)
SW3 将帧发送到根交换机有两条可选的物理路径:左侧为直接路径,右侧为通过SW2的间接路径。如果帧流经某一路径,那么帧经过的所有交换机端口开销的总和即为最终开销(该计算方法忽略了进入端口)。比较发现,从SW3的G0/1端口发出的帧通过直接路径的开销为5,而另一条路径的总开销为8。从而SW3将其G0/1端口作为根端口,因为将帧发送到根交换机,它是开销最优的路径。
交换机也得到同样的结论,但它使用不同的处理程序。它们会将自己本地接口的STP开销添加到每个所接收的Hello BPDU中列出的根开销上。STP端口开销是一个分配给各接口、VLAN的整数值,目的是提供一种客观的度量方法,使得STP可以根据这个值选择将哪个接口添加到STP拓扑。交换机还会通过从每台相邻交换机接收到的Hello BPDU中查看相邻交换机声称自己是根开销。
图 1-8 显示的交换机与图1-7使用了同样的拓扑图和STP开销,展示了计算最佳根开销以及随后选择根端口的示例。SW3的STP计算分别经过两条可能路径到达根的开销,计算方法是将Hello消息中所列的通告开销与图中所列的接口开销分别相加。
先将重点放在过程上。根交换机发送Hello消息,列出的根开销为0。意思就是说根到达自己的开销为0。
位于图左侧的SW3收到了SW1发送的Hello消息中的开销(0),加上接收该Hello消息的接口的接口开销(5)。SW3计算出从该端口(G0/1)发出到达根交换机的开销是5。
位于图右侧的SW2已经获知到达根的最佳开销是4。所以,当SW2转发Hello消息到SW3时,SW2列出的根开销是4。SW3在G0/2端口的STP端口开销是4,所以SW3确定从G0/2出发到达根的总开销是8。
如图1-8所示,因为从接口Gi0/l到根交换机的开销(5)小于其他接口(Gi0/2到根的开销为8),所以SW3选择Gi0/l接口作为其RP。同理,SW2选择Gi0/2作为其RP,其开销为4(SW1的通告开销为0,SW2的Gi0/2接口开销为4)。每台交换机都把根端口设置为转发状态。
在更为复杂的拓扑结构中,根端口的选择并不像这样简单。第2章中的“STP故障排除”小节将展示一个更复杂的示例,其中根端口的选择就需要花费一些心思。
考试要点
![cfa99f8747272195364b3b36c8f096de068f1c6d](https://i-blog.csdnimg.cn/blog_migrate/5bdf728244ffd867d11c38462cadc1a9.png)
选择每个LAN网段的指定端口
STP处理过程的最后一步是要决定STP拓扑,也就是为每个LAN网段选择指定端口(DP)。而每个LAN网段上的指定端口,就是向一个LAN网段通告最低开销Hello消息的交换机端口。当一台非根交换机转发一个Hello消息时,这个非根交换机会将此Hello消息的开销字段设置为该交换机到根的开销。实际上,在连接同一网段的所有交换机中,具有到根的开销最小的交换机会成为该网段上的DP。
例如,在前面的图1-6中,SW2和SW3的Hello消息中的粗体部决定了如何选择该网段的DP。注意SW2和SW3分别列出的到达根交换机的开销(SW2开销为4,SW3开销为5)。SW2列出了较低的开销,因此SW2的Gi0/1端口成为该LAN网段的指定端口。
所有的DP都被设置为转发状态,在本例中,SW2的Gi0/1端口将被设置为转发状态。
如果通告的开销相同,则会选择BID较低的交换机以打破这个僵局。在本例中,SW2会取胜,因为SW2的BID为32769:0200.0002.0002,小于SW3的BID为32769:0200.0003.0003。
提示:
在某些情况下还需要其他的评判标准,尽管目前很少用这些标准。如果使用了集线器,那么一个单独的交换机可以将两个或两个以上的接口连接到同一冲突域。在这种情况下,一个交换机会侦听它自己的BPDU。如果交换机与自己相等,则需要使用额外的两个判定方法:最低接口STP优先,如果还相等,则选择具有最低内部接口号的接口。
图1-5和图1-8所示的3台交换机中,只有SW3的Gi0/2没有处于转发状态。这样整个STP过程全部结束。表1-5列出了每个端口的状态和处于该状态的原因。
![e54bb55d14774afcd7a35a4eae41c2499e65c526](https://i-blog.csdnimg.cn/blog_migrate/b7d922c81cbb57d18badad010d481d73.png)
4.影响和改变STP拓扑
交换机并非只用一次STP就再也不用了。交换机会持续观察变动情况。这些变动可能因链路或交换机失效引起,也可能因使用新链路引起。配置可以以某种方式改变STP拓扑。这部分简要讨论改变STP拓扑的各类方式,要么通过配置,要么通过LAN设备和链路的状态修改。
通过修改配置来影响STP拓扑
网络管理员可以通过修改STP设置来改变STP在给定LAN中所做的选择。管理员可以使用两种主要工具来配置网桥ID(BID)和改变STP端口开销。
交换机可以选择默认的优先值和添加一个交换机硬件自带的、通用的MAC地址来创建默认的BID。但管理员们总是想选择某一台交换机成为根。第2章会告诉您如何配置Cisco交换机来替代其默认的BID参数,让交换机变成根。
端口的开销也有其默认值,每个端口和每个VLAN都是如此。可以配置这些端口开销,或者使用默认值。表1-6列出了IEEE定义的默认端口开销,Cisco使用同样的默认值。
考试要点
![f418b1ce071680622397ab30e4c34fd92a9a0d12](https://i-blog.csdnimg.cn/blog_migrate/85a3dea5b9629cc629a22f6e4c6cdf1e.png)
STP启用后,交换机所有正在工作的接口都会调整为STP转发或者阻塞状态,接入端口也不例外。对于连接到主机或路由器的交换机来说,即使未启用STP,交换机也会通过这些接口转发Hello消息。由于是在该LAN网段上发送Hello消息的唯一设备,该交换机在LAN网段上能发送开销最小的Hello消息,自然该交换机就成为了该LAN网段的指定端口。这样,作为STP过程中处理指定端口的结果,STP将工作中的接入接口设置为转发状态。
影响STP拓扑状态变换的反应
一旦管理员完成所有的STP配置,STP拓扑也就确定了,除非网络拓扑发生变化。本小节首先讲解了在网络拓扑稳定情况下,STP进行的实时操作,下面将分析当网络拓扑发生变化时,STP如何收敛到新的拓扑结构。
在默认情况下,根交换机每隔2秒钟就发送一个新的Hello BPDU。每个非根交换机都会向所有指定端口转发此Hello消息,但要先改变列在Hello里的项目。交换机计算出本地交换机的根开销并设置它。交换机还将“发送者的BID”字段设为自己的BID(根交换机的BID无变化)。
通过将所有已接收(且已更改)的Hello转发到所有DP,所有交换机继续每2秒接收一个Hello。下面将介绍当前STP拓扑没有发生变化时的稳定状态操作。
考试要点
步骤1 根交换机创建Hello BPDU并向其所有工作中的接口(处于转发状态)转发,此时根开销为0。
步骤2 非根交换机在其根端口接收到Hello消息,并对这个Hello消息的进行修改,将其中发送方的BID改为自身的BID,再列出该交换机到根的开销,然后该交换机向所有指定端口转发修订后的Hello消息。
步骤3 重复步骤1和2,直到网络拓扑发生变化。
每台交换机都会定期收到来自根交换机的Hello消息,而交换机则根据此Hello消息,确信到根的路径仍在工作中。出现交换机接收Hello消息中断,或者接收的Hello中列出了不同的信息,说明出现某种故障时,交换机就会作出反应,启动改变生成树拓扑的过程。
通过STP变化,交换机是如何反应的
由于各种原因,整个收敛过程需要用到3种计时器。注意,所有交换机使用的计时器是由根交换机支配的,根交换机将它们列入定期发送的Hello BPDU消息中。表1-7列出了这些计时器和相应介绍。
![1f93db782a9860ceb9fa637b90d5bb2b75945b0d](https://i-blog.csdnimg.cn/blog_migrate/9bcb35abd5f93ed8cca944b089951bcc.png)
由于SW3在Gi0/l接口没有接收到预期的Hello消息,因此SW3对网络变化作出反应。然而,SW2不需要作出反应,因为SW2仍然可以在Gi0/2接口定期地接收Hello消息。在这种情形下,SW3会对以下两种情况作出反应:一是已经超出了最大生存周期,但SW3还没有收听到Hello消息;另一种是SW3察觉到接口Gi0/l发生故障(若接口发生故障,交换机会假设Hello消息永远不会到达)。
现在描述一下SW3的反应动作。首先,SW3会重新评估选择根交换机。SW3仍然接收到来自SW2,但是由(根)SW1转发的Hello消息。SW1的BID依然比SW3更低;否则,SW1将不会被选举为根交换机。由此,SW3认为SW1仍为最优交换机,而SW3本身不是根。
接下来,SW3重新估计选择根端口。此时,SW3只能在Gi0/2接口上接收到Hello消息。因此无论根开销是多少,Gi0/2都将成为SW3新的根端口(此开销应该为8,前提是图1-7和图1-8中的STP开销没有变化)。
最后,SW3重新估计本身的其他接口作为指定端口。在本例中,实际上根本没有任何操作。因为没有其他交换机与SW3相连,SW3的接口Fa0/13已经是指定端口,并将继续担任这个角色。
变更STP接口状态
STP采用了角色和状态的概念。角色,比如根端口和指定端口,与STP分析LAN拓扑的方法有关。状态,比如转发和阻塞,告诉交换机是否要发送或接收帧。当STP收敛时,交换机会选择新的端口角色,这些端口的角色确定其状态(转发或阻塞)。
交换机可以直接从转发状态变为阻塞状态,但从阻塞状态变为转发状态则必须经过一段时间的过渡。例如,当某台交换机使用端口G0/1作为其RP(角色),这个端口便处于转发状态。在收敛以后,G0/1可能既不是RP也不是DP;该交换机可以立即将该端口变为阻塞状态。
当某个之前被阻塞的端口需要将其转变为转发状态时,交换机首先将该端口变为两个交换机的中间接口状态。这些临时状态可以帮助避免出现如下临时环回现象。
侦听:与阻塞状态相似,处于这种状态的接口不转发帧。在侦听状态期间,交换机将暂停使用旧的(未使用的)MAC表条目,在此期间,不会接收来自这些MAC地址的帧。这些MAC表条目很可能是导致暂时环回的根本原因。
学习:处于这种状态的接口仍然不转发帧,但是交换机开始从这种接口收到的帧中学习MAC地址。
STP转换接口从阻塞状态变为侦听状态,随后转换为学习状态,最后变成转发状态。STP设置接口在每种中间状态的时间长短与转发延迟计时器(默认为15秒)一致。因此,由一次收敛事件所引发的一个接口由阻塞状态转变为转发状态的时间需要30秒。此外,在决定转换接口从阻塞状态变为 转发状态之前,交换机还需要等待MaxAge的秒数。
例如,仔细观察图1-5到图1-8初始STP拓扑,图1-9所示为SW1到SW3链路失效的状况。如果SW1简单地停止发送Hello消息给SW3,但这两台交换机之间的链路并没有失效,SW3需要等待最大生存周期(Max Age)时间(默认时间20秒)之后才能做出反应。SW3实际上可以快速选择其端口的STP角色,但当接口Gi0/2处于侦听和学习状态时,SW3还需分别等待15秒,这样总计为50秒的收敛延迟。
为阅读方便,表1-8汇总了生成树的各种接口状态。
![5f44dbbbc288f45fea8c80291d4e8f4e3fbcef0d](https://i-blog.csdnimg.cn/blog_migrate/6d14d0e45e2cd9b84c9ec7fdb487798d.png)
1.2.3 STP可选特性
STP已经有了30多年的历史了,它最先投入使用的时间甚至早于IEEE根据Xerox和其他经销商提出的以太网标准所进行的开发工作。IEEE早在20世纪80年代首次将STP标准纳入IEEE802.1D。直到今天,Cisco交换机依旧使用STP。除了对默认开销值的修改外,本章中迄今为止对STP的描述与多年之前的原始STP没什么区别。
尽管拥有如此长且令人惊讶的寿命,STP也曾在这几十年中经历过几次大大小小的变动。比如说,Cisco增加了一些专有特性以改善STP性能。在某些方面,IEEE在后续的IEEE标准中吸纳或借鉴了这些改进,成为802.1D标准的修订版或是附加标准。STP 经历过一次针对收敛的重要修订,称为
“快速生成树协议(RSTP)”,它最初是在IEEE 802.1w中定义的。
本章三个主要部分的最后一部分简单讨论了超出802.1D STP 概念范畴的可选功能的基本知识,包括以太网通道、快速端口和BPDU保护。
1.以太网通道
降低STP收敛时间的一种最好的方法就是避免完全收敛。以太网通道提供的一种方法,可以防止当只是一个独立端口或线缆出现故障时,STP就发动收敛。
在相同的一对交换机间,可以把多条(最多8条)具有同等速率的平行线路组合起来,绑定为一条以太网通道。交换机把以太网通道当做一个单一的接口,用于帧转发过程,对STP也同样如此。因此,如果一条链路发生故障,但至少有一条链路状态是可用的(up),则此时STP收敛就不会发生。例如,由3台常见交换机组成的网络中,每对交换机间都有两条吉比特以太网连接,如图1-10所示。
每对以太网链路都配置为以太网通道,STP把每个以太网通道都看做是一个单一的链路。也就是说,连接到同一交换机的两条链路都必须出现故障,才会使得交换机引发STP收敛。在没有以太网通道情况下,如果两台交换机间有多条平行链路,则STP仅留下一条链路,而阻塞其余的所有链路。如果应用了以太网通道,则所有的平行链路状态都可用(up)并能够同时工作,这样既减少了STP必须收敛的次数,还提高了网络的可用性。
![c832a3e8a21b2bd72a72c43e60a016d2f6d33d75](https://i-blog.csdnimg.cn/blog_migrate/c29b6378804923a4cc0615f86a153b38.png)
当交换机决定进行转发,将一个帧从以太网通道发送出去时,交换机理论上必须采取另一个步骤:要从哪一个物理接口发送出去呢?交换机都有负载均衡的逻辑,能够让它为每一个帧选择一个接口,目的是在该通道内所有可用链接之间分散数据传送负载。结果是,使用以太网通道的LAN设计更加科学地利用了交换机之间的带宽,同时降低了STP必须收敛的次数。
2.快速端口
快速端口让交换机能够立即由阻塞状态向转发状态过渡,跳过侦听和学习状态。然而,能够安全启用快速端口方式的条件是,该端口不能与网桥、交换机或者其他的STP会话设备相连接。否则使用快速端口可能会导致环回,而这正是侦听和学习状态所要避免的。
快速端口是连接到终端用户设备的最佳选择。如果将连接到终端用户的交换机端口启用快速端口,当终端用户的PC机启动时,那么交换机端口就转变为STP转发状态并在PC机的NIC激活后开始转发流量。如果没有启用快速端口,那么每个端口都必须等待交换机确认其为指定端口,同时,在设置为转发状态前,由于这些端口会处于临时的侦听和学习状态,还需要等待一段时间。
3.BPDU 保护
STP导致LAN可能存在一些安全隐患。
攻击者可将一台交换机与其中的端口相连,而这台交换机具有较低STP优先级,就会成为根交换机。新的STP拓扑性能可能比所需的拓扑要低。
攻击者可以插入多个端口,多个交换机并成为根,然后实际转发LAN中的很多流量。如果没有网络人员发现这一点,攻击者可使用LAN分析器复制大量LAN中传送的数据帧。
用户也会无意中破坏LAN,例如一个用户可能购买并连接了一台便宜的消费级LAN交换机(不使用STP的交换机)。这种交换机没有任何STP功能,就不会选择去阻塞任何端口,因此可能导致环回。
Cisco BPDU 保护功能可解决这类问题,方法是如果在接口上接收到任何BPDU,则立即禁用端口。这种功能尤其适用于接入端口或从不与其他交换机相连的端口。
此外,BPDU保护功能避免出现快速端口的问题。快速端口应该仅在连接到用户设备而不是其他LAN交换机的接入端口上被启用。如果其他交换机连接到这样的一个端口上,那么本地交换机就会在出现环回之前禁用该端口,这就是在这些端口上使用BPDU保护的原因所在。
4.快速STP(IEEE 802.1w)
正如本章前面所述,IEEE在802.1D标准中定义了STP。IEEE在802.1w标准中,通过定义快速生成树协议(Rapid Spanning Tree Protocol,RSTP),改进了802.1D协议。
RSTP(802.1w)在以下几个方面与STP(802.1D)类似。
使用相同的参数和规则选举根交换机。
使用相同的准则选举非根交换机的根端口。
使用相同的准则选举每个LAN网段的指定端口。
每个端口设置为转发或阻塞状态,尽管RSTP把阻塞状态称为丢弃状态。
RSTP可以与传统的802.1D STP在交换机中一起配置,应用RSTP的交换机可以支持RSTP的功能特性,而应用传统的802.1D STP则只支持STP。
RSTP与STP非常相似,因而首先可能会对IEEE为何不厌其烦地制定RSTP感到奇怪。这其中最重要的原因就是收敛。STP的收敛需要消耗相对较长的时间(默认设置为50秒)。而当网络拓扑发生变化时,RSTP可以改善网络的收敛,通常收敛只需几秒,在较差的情况下约10秒。
在实际工作中,大多数企业LAN的设计需要STP,且大部分偏爱RSTP,因为后者收敛效果更好。然而,鉴于当前的考试,思科将RSTP的深入讨论推迟到CCNP 交换机考试和CCNP认证。对于您们中某些在工作中使用LAN交换的人来说,请阅读802.1w/RSTP以及在交换机中的实施方法。