【版权声明:原创翻译文章,翻译水平有限,错误在所难免,翻译作者对文章中存在的错误或遗漏所造成后果不承担任何责任,请谨慎转载。转载请保留本声明及出处:blog.csdn.net/shallnet
,下载该书英文版】
基于之前的讨论,你应当赞成确定地去设置你的根网桥是必须的。事实上,你应当始终设置不止一个根网桥。一个为主要的,另外是在主要的故障是作为备份用的。如果你的网桥网络真的很大,你可能需要设置第三个根网桥,以防万一第一个和第二个都出现故障。
这一节来考虑一下如何确定根网桥在网络中的位置,关于放置设备位置这方面的注意事项和建议请阅读第七章。
在设置根网桥时有两个有用的技巧:
- set spantree priority 命令
- set spantree root 命令
手动布置根网桥:set spantree priority
为了强制一个网桥在根网桥选举中获胜,你需要确定的是其BID比其他所有网桥的都要小。一个方法可以是修改器MAC地址,但这个太丑陋了(相信我!),一个更加简单的方法是修改桥优先级。由于BID高16位是网桥优先级,将优先级降低即使一个数(从32768到32767)将使得网桥在选举当中击败其他所有使用默认值的网桥。
桥优先级是通过命令set spantree proority控制的。该命令语法是:
set spantree priority priority [vlan]
|
虽然vlan参数是可选的,我还是建议你有始终输入它的好习惯(为了防止你某天本打算修改某个vlan时意外的修改了vlan 1)。在后面我们再来详细讨论valn参数,现在假设所有都是使用vlan
1。
提示:
几乎所有的生成树set和show命令支持一个可选的vlan参数。如果你省略该参数,则默认为vlan
1。即便你只使用vlan 1,也要有输入该参数的好习惯,这样可以避免你意外地修改或查看到错误的vlan。
假设你想让Cat-4成为根网桥,你应当telnet连接到交换机并且输入:
set spantree priority 100 1
|
在vlan 1中更低的priority 100,是的Cat-4始终击败其他使用默认值32769的交换机(包括用于更低MAC地址的MGS)。
但是如果Cat-4故障了会怎么样呢?难道你想MGS继续成为根网桥?很明显不是,在Cat-2上输入以下内容让其成为备份的第二个根网桥:
set spantree priority 200 1
|
一旦Cat-4故障解除了,Cat-2就不会再跟选举中获胜。但一旦Cat-4死掉了,Cat-2接管根网桥的工作。
提示:
注意到我给主根网桥优先级值为100,副根网桥为200。我在实际应用中发现这些数字编号约定很实用,并且也建议你采纳这个用法。这样设定很容易理解,更重要的是容易记住。例如,当你使用show命令发现你当前根网桥的优先级为200的时候,你就会立马知道主根网桥出现了故障。这个方案在后面讨论负载均衡主题也很实用。
使用宏:set spantree root
从Catalyst 5000 NMP version 3.x开始,思科引进了一个十分强大的宏,该宏可以自动计算网桥优先级和其他的值。该宏的全部语法如下:
set spantree root [secondary] [vlan_list] [dia network_diameter] [hello hello_time]
|
想让某个Catalyst交换机在vlan 1中成为根网桥,telnet连接上该设备在输入如下内容:
这使得Catalyst去检查目前的根网桥的网桥优先级,如果该值大于8192,宏set
spantree root将设置本地网桥优先级为8192,如果目前根网桥该值小于8192,该宏将设置本地网桥的优先级值比目前根网桥优先级小1。例如,如果目前根网桥使用网桥优先级100,set spantree root 将设置本地网桥优先级为99。
注:
该文档认为如果8192不足够小到成为根网桥,那么set
spantree root 设置优先级为比当前优先级小100的值。但是我常常设置仅仅减小1的值。
为了让另外一个网桥作为备份根网桥,telnet到该设备并且输入如下:
set spantree root 1 secondary
|
这使得当前Catalyst网桥优先级设置为16384。因为该值大于主根网桥的优先级,并且小于默认值32768。这既简单又高效地提供了一个根网桥故障备份的方法。
dia和hello参数可以通过802.1D列出的建议自动调整STP timer值。协调STP timer值的详细讨论在第七章“Fast STP Convergence”一节。
这点看上去貌似不太重要,事实上set spantree root不是一个正常的命令——它是一个影响其他命令的宏。换句话说,set
spantree root不会显示在show config 的命令结果中。例如,你运行过宏set spantree root 1,假设目前根网桥的优先级大于8192,该宏自动执行set
spantree priority 1 8191命令。在命令set spantree priority 写入NVRAM之后,没有任何使用过宏的迹象。
尽管set
spantree root只是一个宏,但不要因此而让你愚蠢地认为那是“多余的没价值的东西”。相反,使用set spantree root宏比使用命令有更多的好处:
- 用起来更简单
- 使你不需要去记住太多语法
- 如果需要经常协调timer,set spantree root比手动设置timer更加安全,因为其会根据802.1D的建议自动计算该值。更多关于timer协调的详细信息见第七章“Fast
Convergence”一节。