当前位置: 首页 > news >正文

网工最常犯的9大错误,越早知道越吃香

下午好,我的网工朋友

我们常说,人要学会避免错误,尤其是对在职场生活的打工人来说,更是如此。

学生时代,我们通过错题本收集错误,提高刷题正确率和分数,但到了职场,因为没有量化的分数标准,很多人就已经遗忘了这个操作。

但其实,总结和复盘在工作中依然十分重要。

老杨总之前发过一篇关于网工错误的总结,是错误提示方向的,不知道你是否看过?

《网工5年,至今搞不懂这些错误提示》

今天我想给你分享的,就是关于另一方向的“错误总结”,是关于STP生成树的“错题本”,并给出了详细解法,欢迎收藏一波。

今日文章阅读福利:《 华为网络交换机设备巡检手册 (网工必备)》

作为总结和方法论依托,怎么能少得了这份能让你的工作事半功倍的资料?私信我,发送暗号“手册”,前20名私信的小友即可获得此份巡检文档

01 什么是生成树协议?

IEEE 802.1D生成树协议(STP)由Radia Pearlman在1985年发明,当时他还供职于数字设备公司(DEC)。

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

网桥协议数据单元(BPDU)是以太网交换机(实际上就是多端口网桥)之间发送的数据包,负责搭建根网桥(root bridge)、计算通向根的最佳路径以及阻止形成环路的任何端口。

因而生成的树(根在顶端)覆盖局域网中的所有网桥,生成树这个名称由此得来。

生成树在以默认的配置设置防止环路方面很有效。因而,许多人忘了调整任何参数,仅仅接受默认设置了事。

这导致好多人忽视了网络设计中的STP;多年后,许多企业组织惊讶地发现存储的网络问题居然与生成树有关。

有许多方法可以优化STP,但是如果STP没有配置好,那么网络无法得益于这些新的功能特性。

02 在生成树里,网工最常见的9种错误

这张图显示了通常错误配置的生成树环境,表明了本文探讨的许多常见错误。

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域名。

数据中心与灾难恢复站点之间的连接使用了802.1Q干线,但是只允许三个VLAN接入这条干线。

因此,灾难恢复站点的交换机了解所有的VLAN,使用生成树来确定城域以太网链路是VLAN 10、20和30通向根的路径。

然而,灾难恢复站点的交换机认为,它是该干线上未使用的其他VLAN的STP根。

这可能会引起问题,因为现在环境有两只交换机认为自己是VLAN 40、50和60的STP根。

使用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设备一视同仁,其配置应该补充网络环境中的其他交换机。

08 不一致的生成树度量指标

在过去,生成树使用16位值作为网桥使用的链路成本,以计算通向根的最短路径。若使用这些较老的16位度量指标,10Mbps链路的成本为100,1Gbps链路的成本为4。

然而,这些度量指标已跟不上链路速度的需要,现在有了32位长路径成本。若使用较新的32位度量指标,1Gbps链路的成本为20000,10Gbps链路的成本为2000,而100Gbps链路的成本为200。

想在思科交换机上启用长路径成本,只要输入这个全局配置命令:

Core-Sw1(config)# spanning-tree pathcost method long

如果网络里面既有使用16位路径成本值的交换机,又有使用32位路径成本值的交换机,就会出现问题。因此,配置方面做到一致很重要,力求让你的所有网络设备都使用32位长路径成本这一较新的度量指标。

09 禁用生成树

我们偶尔会碰到这种网络:生成树协议故意被禁用,也许是网络管理员觉得,不需要STP,因为网络没有任何的线缆环路。

也许是网络管理员觉得,禁用STP可以缩短第3层会聚时间。

然而,我本人亲眼目睹过这一幕:有人擅自添加了一条线缆后,STP被禁用的网络出现了全面瘫痪。这导致了“致命的特大数据包风暴”,原因是数据包在环路中不断转发。

不像第3层环路:IP数据包的TTL值会减小,直至为零,随后数据包被丢弃,第2层环路则允许数据包不断转发,而不减小TTL。

让STP处于启用状态是个最佳实践,即便可能不需要它。其道理在于,这是一种成本低廉的保险机制,可以防止环路。在现代交换机上运行STP并不会带来任何明显的开销。

每秒只有几个配置BPDU并不会大大增加带宽使用量。STP瘫痪的风险实在太高了。因此,禁用了STP的企业应该重新启用它。

03 其他常见问题

企业在局域网交换机方面还会常犯另外几个配置错误。

许多企业使用VLAN编号1,这给思科交换机的安全带来了一些影响。

如果VLAN 1用作思科交换机上的“原生VLAN”,问题也会出现。

思科交换机上的其他常见问题与网络管理员没有标记原生VLAN有关。还有无数的交换机间链路没有经过配置,以限制干线上允许VLAN。

我们在评估网络状况时,经常会在客户的网络中遇到这些问题。

有时候,上述九大问题会全部集中出现在一个环境中。

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

建议每位网工都应该好好阅读本篇文章,确定本企业的设备有没有存在这些错误。

审查网络、查找这几类问题,并且主动采取措施来解决这些问题,这很重要。

STP方面的这些改进有望提升网络的稳定性、性能、弹性以及会聚速度。

整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

相关文章:

网工最常犯的9大错误,越早知道越吃香

下午好,我的网工朋友 我们常说,人要学会避免错误,尤其是对在职场生活的打工人来说,更是如此。 学生时代,我们通过错题本收集错误,提高刷题正确率和分数,但到了职场,因为没有量化的…...

Windows - UWP - 网络不好的情况下安装(微软商店)MicrosoftStore的应用

Windows - UWP - 网络不好的情况下安装(微软商店)MicrosoftStore的应用 前言 UWP虽然几乎被微软抛弃了,但不得不否认UWP应用给用户带来的体验。沙箱的运行方式加上微软的审核,用户使用起来非常放心,并且完美契合Wind…...

1040:输出绝对值

【题目描述】 输入一个浮点数,输出这个浮点数的绝对值,保留到小数点后两位。 【输入】 输入一个浮点数,其绝对值不超过10000。 【输出】 输出这个浮点数的绝对值,保留到小数点后两位。 【输入样例】 -3.14 【输出样例】 …...

[Docker精进篇] Docker部署和实践 (二)

前言: Docker部署是通过使用Docker容器技术,将应用程序及其所有相关依赖项打包为一个可移植、自包含的镜像,然后在任何支持Docker的环境中快速部署和运行应用程序的过程。 文章目录 Docker部署1️⃣为什么需要?2️⃣有什么作用&am…...

day9 | 28. 实现 strStr()、459.重复的子字符串

目录: 解题及思路学习 28. 实现 strStr() https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/ 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下…...

hive on tez资源控制

sql insert overwrite table dwintdata.dw_f_da_enterprise2 select * from dwintdata.dw_f_da_enterprise; hdfs文件大小数量展示 注意这里文件数有17个 共计321M 最后是划分为了21个task 为什么会有21个task?不是128M 64M 或者说我这里小于128 每个文件一个map…...

企业有VR全景拍摄的需求吗?能带来哪些好处?

在传统图文和平面视频逐渐疲软的当下,企业商家如何做才能让远在千里之外的客户更深入、更直接的详细了解企业品牌和实力呢?千篇一律的纸质材料已经过时了,即使制作的再精美,大家也会审美疲劳;但是你让客户远隔千里&…...

【问题解决】Git命令行常见error及其解决方法

以下是我一段时间没有使用xshell,然后用git命令行遇到的一些系列错误和他们的解决方法 遇到了这个报错: fatal: Not a git repository (or any of the parent directories): .git 我查阅一些博客和资料,可以解决的方式: git in…...

【100天精通python】Day34:使用python操作数据库_ORM(SQLAlchemy)使用

目录 专栏导读 1 ORM 概述 2 SQLAlchemy 概述 3 ORM:SQLAlchemy使用 3.1 安装SQLAlchemy: 3.2 定义数据库模型类: 3.3 创建数据表: 3.4 插入数据: 3.5 查询数据: 3.6 更新数据: 3.7 删…...

CCLINK IE转MODBUS-TCP网关modbus tcp协议详解

你是否曾经遇到过需要同时处理CCLINK IE FIELD BASIC和MODBUS两种数据协议的情况?捷米的JM-CCLKIE-TCP网关可以帮助你解决这个问题。 捷米JM-CCLKIE-TCP网关可以分别从CCLINK IE FIELD BASIC一侧和MODBUS一侧读写数据,然后将数据存入各自的缓冲区。接着…...

vue2根据不同的电脑分辨率显示页面内容及不同设备适配显示

1.安装插件: npm install postcss-px2rem px2rem-loader --save npm i lib-flexible --save 2.创建flexible.js,并在main.js引用 ;(function(win, lib) {var doc = win.document;var docEl = doc.documentElement;var metaEl = doc.querySelector(meta[name="viewport&…...

概率论:多维随机变量及分布

多维随机变量及分布 X X X为随机变量, ∀ x ∈ R , P { X ≤ x } F ( x ) \forall x\in R,P\{X\le x\}F(x) ∀x∈R,P{X≤x}F(x) 设 F ( x ) F(x) F(x)为 X X X的分布函数,则 (1) 0 ≤ F ( x ) ≤ 1 0\le F(x)\le1 0≤F(x)≤1 &am…...

flutter-第三方组件

卡片折叠 stacked_card_carousel 扫一扫组件 qr_code_scanner 权限处理组件 permission_handler 生成二维码组件 pretty_qr_code 角标组件 badges 动画组件 animations app更新 app_installer 带缓存的图片组件 cached_network_image 密码输入框 collection 图片保存 image_g…...

迪瑞克斯拉算法

迪锐克斯拉算法 简单来说就是在有向图中,给定一个图中具体的出发点,从这个点出发能够到达的所有的点,每个点的最短距离是多少。到不了的点,距离则是正无穷。有向,无负权重,可以有环。 所以说,迪…...

数据结构:力扣OJ题(每日一练)

目录 题一:环形链表 思路一: 题二:复制带随机指针的链表 思路一: 本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵! 题一:环形链表 给定一个链表的头节点…...

【论文阅读】基于深度学习的时序预测——Informer

系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...

机器学习 | Python实现GBDT梯度提升树模型设计

机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型描述模型使用参考资料基本介绍 机器学习 | Python实现GBDT梯度提升树模型设计。梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,GBDT也…...

elementUi表单恢复至初始状态并不触发表单验证

elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表,右侧是显示节点的详情,点击按钮应该就是新增一个规则的意思,表单内容是没有改变的,所以就把需要把表单恢复至初始状态并不触发表单…...

大模型相关知识

一. embedding 简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)…...

无法在 macOS Ventura 上启动 Multipass

异常信息 ➜ ~ sudo multipass authenticate Please enter passphrase: authenticate failed: Passphrase is not set. Please multipass set local.passphrase with a trusted client. ➜ ~ multipass set local.passphrase Please enter passphrase: Please re-enter…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...