为了防止环路,网络工程师做的努力可太多了

你肯定知道这个经典网络组网模型:接入-汇聚-核心-出口。

接入多数是二层交换机为主,节约成本有的地方用傻瓜交换机,主要配置access隔离广播域。

为了防止环路,接入层,大多数人都会配置生成树协议。

STP(生成树协议)是一种第2层协议,在网桥之间运行,旨在帮助建立无环路(loop-free)的网络拓扑结构。

运行STP(生成树协议)的以太网设备部署在很多网络里,很多在职的网络工程师对STP都很眼熟,但是设置时的错误也多,甚至可以说是比比皆是。

如果你能纠正这些生成树问题,可以改善应用程序性能、缩短会聚时间、提高弹性以及减少网络停运时间。

今天我们来复盘一下网络工程师在部署时常见的关于STP的问题,顺便讲讲解决思路。

01

没有配置根网桥

许多企业组织对生成树习以为常,仅仅接受默认的配置设置了事。这使得网络环境中的所有交换机都使用32678这一默认的根网桥优先级值。

如果所有交换机都用同一个根网桥优先级,那么MAC地址最低的那只交换机将被建立为根网桥。

许多网络并没有配置成单只交换机有一个较低的根网桥优先级,这会迫使那只核心交换机被建立为任何或所有虚拟局域网(VLAN)的STP根。

在这种情况下,MAC地址偏低的小型接入层交换机就有可能是STP根。这种情况势必会增加一些性能开销,导致会聚时间较长(由于根网桥重新建立)。

图 | 通常状况下错误配置的生成树环境

如图所示,作为STP根的交换机实际上是核心交换机2,因为它拥有的MAC地址恰好低于核心交换机1。

一条最佳实践就是为“主”(核心)交换机配置较低的STP优先级,那样一只交换机将是根网桥,其他任何核心交换机会有高一点的优先级值;万一主核心网桥失效,它们就会自动接过重任。

万一出现网桥故障,在交换机上配置“不同层次”的STP优先级将查明哪只交换机应该是根网桥。这样一来,STP网络运行起来就更具有确定性了。

在核心思科交换机上,你应该用这个命令配置主根交换机:

Core-Sw1(config)# spanning-tree vlan 1-4096 root primary

在核心思科交换机上,你应该用这个命令配置次根交换机:

Core-Sw2(config)# spanning-tree vlan 1-4096 root secondary

这两个命令的最终效果会将主交换机端口的网桥优先级设为8192,将次交换机的根网桥优先级设为16384。

02

使用IEEE 802.1D

而未使用Rapid-STP

典型的IEEE 802.1D协议有下列默认计时器:15秒用于侦听,15秒用于学习,20秒用于最长生存时间超时。

生成树中的所有交换机都应该认同这些计时器,不鼓励你修改这些计时器。

这些较旧的计时器对一二十年前的网络来说也许够用了,而如今,这些30秒至50秒的会聚时间实在太慢了。

如今,许多交换机能够支持快速生成树协议(IEEE 802.1w),可是很少有网络管理员启用该功能。

快速生成树协议(RSTP)大大缩短了会聚时间,其秘诀在于使用端口角色,使用通过指定端口在网桥之间发送消息这种方法,计算备用路径,以及使用更快速的计时器。

因而,如果可以使用RSTP,企业组织应该尽量使用。如果企业仍拥有无法使用RSTP的交换机,也别担心:

针对通向老式STP交换机的那些接口,RSTP交换机会切回到传统的802.1D操作方式。

03

阻塞的上行链路

生成树的任务就是防止环路形成。为此,它学习了解通向根的次最优路径,让这些不太理想的链路处于阻塞模式。

如果交换机之间有多条并行路径,那么其中一条路径将被选择进入阻塞模式,防止两只交换机之间出现环路。

这样一来,拥有多条上行链路只适用于主链路故障切换,而不是为这条路径提供更高的带宽。

在上图中,你可以看到交换机D的这种情况。通向交换机2的链路是通向根网桥的最优路径,而通向交换机1的次最优路径处于STP阻塞状态。

因此,只有一条链路的带宽可供上行通信使用。

我们希望能够利用这两条上行链路来转发流量、增加带宽,那样我们可以使用某种链路聚合技术,比如端口信道/以太网信道(LACP (IEEE 802.3ad),PAgP),或者某种多机箱端口信道(MC-LAG IEEE 802.3AX/AY),或者使用拥有虚拟端口信道(vPC)的思科Nexus交换机。

另一种选择就是使用可堆叠交换机,并配置每个上行链路端口,连接至堆叠交换机中的不同交换机。由于堆叠交换机可以配置成它就是一只交换机,那样可以使用端口信道。

从生成树的角度来看可以将两条链路当成一条链路,这两条链路都可以用来转发流量。其他选择能够取得同样这个效果,比如思科的6500虚拟交换系统(VSS)。

04

超过STP的最大规模

我们都生活在这样的城市:缺少统一协调的城市规划,道路总是拥挤不堪、无法顺畅通行。同样,网络常常像白杨树那样生长。

网络当中出现新增的设备,但是网络很少重新设计架构,除非购置了一套全新的网络。随着新的交换机添加到局域网环境中,生成树不断随之变化。

一些大型网络环境支持的应用程序依赖整个网络上的第2层连接,这类网络环境应该意识到这种生长。要是网络拓扑超过STP的最大规格,企业就会遇到问题。

802.1D规范建议,生成树的网桥跳数(bridge hop)不超过7段。如果有许多“雏菊链式”交换机,很可能出现这种情况。

参阅上图,就会发现连一种简单的网络拓扑也会超过生成树的这一最大规模。

像医院和大学校园这些组织的网络拥有庞大的局域网环境,跨整个网络延伸单一的VLAN。

它们应该认识到其生成树的规模。这些组织应该将局域网交换环境的情况记入文档,并且寻找过于频繁的拓扑变更通知(TCN),从而定期检查生成树的规模。

05

VTP域

企业组织面临的困难常常牵涉VLAN隧道协议(VTP)以及它与STP有怎样的关系。

VTP这种机制可以帮助在单一局域网交换环境中建立和维护VLAN。

VTP服务器可以建立新的VLAN,然后自动为VTP客户机配置那些新的VLAN。随后,那些VTP客户端交换机上的端口被分配到这个新的VLAN。

VTP有助于让VLAN编号在局域网交换环境中保持一致性。很早以来就存在与VTP有关的问题,许多人建议将VTP配置成透明模式。

一些企业组织抽时间来配置VTP域,并配置VTP服务器和客户机。一些企业组织还在所有交换机上使用同一个VTP域名,即便在所有地方都是如此。如果使用第2层城域以太网服务,并将其配置成802.1Q干线,这就会开始引起问题。

使用VTP的企业应该慎重使用,知道哪些交换机是VTP服务器或客户机,使用VTP密码,删除不再提供服务的交换机上的配置和VTP信息,并且在不需要VTP的场合下考虑禁用VTP。

06

STP与HSRP不一致

许多企业组织拥有冗余核心交换机,它们还为所连接局域网上的计算机充当第3层默认网关。

像HSRP、VRRP、GLBP及其他这些首跳冗余协议为只配置一个单一默认网关IP地址的主机提供了默认网关冗余机制。

如果HSRP活动默认网关不是为该VLAN充当STP根的同一只第2层/第3层交换机,问题就会随之而来。

上图表示,交换机1是HSRP活动路由器,但它不是任何VLAN的STP根。

交换机2是STP根,但它配置成HSRP备用路由器。这就形成了非最佳流量路径,可能会导致核心交换机间的干线上出现更严重的拥塞状况。

使用首跳冗余协议的企业应该确保,活动默认网关与STP根相一致。

07

没有控制STP

由于那么多的企业组织只是接受交换机厂商在生成树方面的默认设置,它们并没有最优化控制STP。企业可能没有配置生成树,以防止无意中添加的未授权交换机形成环路。

许多企业使用思科的PortFast接口设置,帮助为连接到我们知道不运行STP的计算机的端口迅速调出交换机端口。

激活端口之前,让端口连接至等待侦听和学习状态的计算机毫无意义。

结合使用PortFast和BPDU-Guard是最佳实践,那样如果通过该接口收到BPDU,它可以防御性地关闭端口。

激活这项功能的思科IOS全局命令如下:

Core-Sw1(config)# spanning-tree portfast edge bpduguard

激活这项功能的思科IOS接口配置命令如下:

Core-Sw1(config-if)# spanning-tree bpduguard enable

如果交换机已配置好了任何端口信道,那么配置以太网信道保护机制(EtherChannel guard)是个好主意。

激活这项功能的思科IOS全局命令如下:

Core-Sw1(config)# spanning-tree etherchannel guard misconfig

企业还应该在连接至服务器的所有接入交换机端口上使用根保护机制(Root Guard)。

激活这项功能的思科IOS接口配置命令如下:

Core-Sw1(config-if)# spanning-tree guard root

有时候,刀片服务器嵌入了以太网交换机,这类服务器也应该考虑到STP设计和配置当中。

应该将这些交换机的配置与其他任何STP设备一视同仁,其配置应该补充网络环境中的其他交换机。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇