河南商务学校网站建设,山东建设厅官方网站二建报名,如何进入网页编辑,软件开发公司在哪里网络环路 现在我们的生活已经离不开网络#xff0c;如果我家断网#xff0c;我会抱怨这什么破网络#xff0c;影响到我刷抖音、打游戏#xff1b;如果公司断网#xff0c;那老板估计会骂娘#xff0c;因为会影响到公司正常运转#xff0c;直接造成经济损失。网络通信中如果我家断网我会抱怨这什么破网络影响到我刷抖音、打游戏如果公司断网那老板估计会骂娘因为会影响到公司正常运转直接造成经济损失。网络通信中通常是以一条链路能够正常工作为前提如果链路断开或节点故障那么互联的设备就无法正常通信了这类网络问题叫做单点故障。没有备份的链路或节点出现故障会直接断网。 如果要提供 7×24 小时不间断的服务那就需要在网络中提前部署冗余。避免出现单点故障合理的做法是在网络中的关键设备和关键链路添加冗余。在冗余的网络环境中任意一条链路发生故障断开都不会影响网络直接使用其它链路继续转发数据解决单点故障的隐患。 但同时也带来了另外的网络问题。这种组网会构成二层环路会引发广播风暴、重复帧、MAC 地址漂移等问题严重时会占满链路带宽或打爆设备 CPU 导致设备无法正常工作最终造成网络瘫痪。当然在实际的网络中不少二层环路是由于人为的错误操作导致的比如接错了网线。 举个例子
大刘的主机想要与小美的主机进行通信现在只知道小美主机的 IP 地址不知道 MAC 地址。有 IP 地址就可以通过 ARP 协议来获取小美主机的 MAC 地址。我们来看看有冗余的网络中数据交换的过程 大刘主机向交换机 A 发送 ARP 广播帧来解析小美主机的 MAC 地址 交换机 A 收到广播帧后查看自己的 MAC 地址表没找到相应的表项就向所有端口除接收端口之外泛洪这个广播帧。也就是向 G0/1 和 G0/2 两个端口泛洪广播帧 交换机 B 和交换机 C 收到广播帧后没有对应 MAC 地址表项也将广播帧所有端口除接收端口之外泛洪出去 小美主机终于收到了大刘发送的 ARP 广播帧发现是查询自己的 MAC 地址后小美主机将会通过单播帧返回自己的 MAC 地址 这个过程看似正常大刘主机发送的 ARP 广播帧顺利到达小美主机小美主机也进行了响应但是网络中广播帧的传输还没有结束。在第 3 步中交换机 C 也把 ARP 广播帧泛洪到交换机 B 。这时交换机 B 就收到了两个相同的 ARP 广播帧分别来自交换机 A 和交换机 C 收到的广播帧都会泛洪出去。那么小美主机也会收到两个相同的 ARP 广播帧也就是重复帧。出现这种现象说明网络中存在不合理的冗余链路 接下来我们看下交换机 C 交换机 C 收到从交换机 A 发过来的广播帧同时交换机 C 的 MAC 地址表添加一条表项记录大刘主机 MAC 地址和端口 G0/0 的映射关系。交换机 C 又从交换机 B 收到相同的广播帧大刘主机 MAC 地址的映射端口从 G0/0 变成 G0/1 。从不同的端口收到相同的数据帧导致 MAC 地址表项发生变化的现象就叫做 MAC 地址漂移这种现象说明网络中可能存在环路。这样一来交换机 C 就无法确定大刘主机到底位于自己的哪个端口 主机收到广播帧会进行解封装查看上层的 IP 地址是否是发送给自己的再进行下一步处理。交换机只指二层交换机收到广播帧会直接进行泛洪。大刘主机发出的广播帧经过交换机 A 后从交换机 A 的 G0/1 口泛洪的广播帧交换机 B 收到后再从 G0/2 口进行泛洪交换机 C 收到广播帧后又从 G0/0 口泛洪出去结果广播帧回到了交换机 A 交换机 A 再从 G0/1 进行泛洪最终这个广播帧会一直逆时针、永无止境的进行泛洪同理交换机 A 从 G0/2 口进行泛洪的广播帧也会按顺时针、无休止的在三台交换机上进行泛洪。这种广播帧不停泛洪的现象叫做广播风暴。广播风暴不仅会大量消耗网络设备的带宽和 CPU 使用率也会影响到主机。主机收到一个广播帧后会解封装上送网络层去处理大量的广播帧泛洪很可能导致主机瘫痪。 通过这个简单的演示我们看到了冗余链路带来的风险。重复帧、MAC 地址漂移和广播风暴都是由一个广播帧引起的可是网络中不可避免出现广播帧也不能因为二层环路问题而忽略冗余链路增加网络可靠性的好处。
那么如何在保证网络冗余的情况下消除二层环路呢实际上交换机的二层环路是一个典型问题解决方案也有不少。其中的一个解决方案就是 STP生成树协议能够阻断冗余链路来消除可能存在的环路并且在网络故障时激活被阻断的冗余备份链路恢复网络的连通性保障业务的不间断服务。 当网络中部署了 STP 后交换机之间会交互相关协议报文并计算出一个无环路的网络拓扑。当网络存在环路时STP 会将网络中的一个或多个接口进行阻塞将环路网络结构修剪成无环路的树状网络结构。被阻塞的接口不再转发数据这样二层环路问题便迎刃而解。STP 会持续监控网络拓扑状况当网络拓扑发生变化时STP 能够及时感知并动态调整被阻塞接口而无需人工干预。 STP 基本概念 STP 是用在局域网中消除数据链路层物理环路的协议标准名称是 802.1D 。STP 带来的好处有
消除环路STP 可以通过阻塞冗余端口确保网络无环且连通
链路备份当使用的链路因故障断开时可以检测到这种情况并自动开启阻塞状态的冗余端口网络迅速恢复正常。
在了解 STP 的原理之前我们先来看看几个专业术语
1、桥 ID Bridge ID BID 在公司内我们使用资产编号标记不同的设备在 STP 里我们使用不同的桥 ID 标识不同的交换机。每一台运行 STP 的交换机都有一个唯一的桥 ID 。桥 ID 一共 8 字节包含 2 字节的桥优先级和 6 字节的桥 MAC 地址。桥优先级的值可以人为设定默认值是 32768 。桥 MAC 地址通常是交换机默认 VLAN1 的 MAC 地址。 2、根桥 Root Bridge RB STP 要在整个二层网络中计算出一棵无环的 “ 树 ” 树形成了网络中的无环拓扑也就形成了。其中最重要的就是树根树根明确了“ 树枝 ” 才能沿着网络拓扑进行延伸。STP 的根桥就是这棵树的树根。当 STP 启动后第一件事就是在网络中选举出根桥。在一个二层网络中根桥只有一个其余设备都是非根桥。当网络的拓扑发生变化时根桥也可能会发生变化。 网络中桥 ID 最小的交换机将成为根桥。在比较桥 ID 大小时首先比较的是桥优先级桥优先级的值最小的交换机选为根桥如果桥优先级相同那么会比较 MAC 地址MAC 地址最小的交换机选为根桥。 3、根路径开销 Root Path Cost RPC STP 交换机每一个端口都对应一个开销值这个值表示数据通过端口发送时的开销这个值与端口带宽有关带宽越高开销值越小。对于端口开销值的定义有不同的标准通常设备默认使用 IEEE 802.1t 中定义的开销值同时还支持其它标准以便兼容不同厂家的设备。 非根桥到达根桥可能有多条路径每条路径都有一个总开销值也就是根路径开销 RPC 这个值是通过这条路径所有出端口的开销值累加而来的。STP 不会计算入端口的开销只在数据通过端口发出时才计算这个端口的开销。对于根桥来说根路径开销是 0 。 4、端口 ID Port ID PID 运行 STP 的交换机使用端口 ID 标识每个端口端口 ID 主要用于选举指定端口。端口 ID 长度为 16 比特其中前 4 比特是端口优先级后 12 比特是端口编号。在进行比较时先比较端口优先级优先级小的端口优先在优先级相同时再比较端口编号编号小的端口优先。通常情况下端口编号无法改变可通过设置端口优先级来影响生成树的选路。 5、BPDU STP 协议使用 BPDU 报文进行交互BPDU 包含与 STP 协议相关的所有信息并且使用这些信息来完成生成树的计算。BPDU 是组播帧地址为 0180-c200-0000 并由 STP 交换机产生、发送、接收、处理终端主机不参与。BPDU 分为两种类型
配置 BPDU Configuration BPDU 在 STP 的初始化过程中每台交换机都会产生并发送配置 BPDU 。在 STP 树形成后的稳定期只有根桥才会周期性地发送配置 BPDU 相应的非根桥会从自己的根端口收到配置 BPDU 并更新自己的配置 BPDU 再从指定端口发送出去。这个过程看起来像根桥发出的配置 BPDU 逐跳的经过了其它交换机。 配置 BPDU 的参数详情如下 拓扑变化通知 BPDU Topology Change Notification BPDU 简称 TCN BPDU 是非根桥通过根端口向根桥发送的。当非根桥检测到拓扑变化后就会生成一个描述拓扑变化的 TCN BPDU 并从自己的根端口发送出去。 STP 树的生成 STP 的基本原理是在一个有二层环路的网络中交换机通过运行 STP 自动生成一个没有环路的网络拓扑。这个无环网络拓扑也叫做 STP 树 STP Tree 树节点为某些交换机树枝为某些链路。当网络拓扑发生变化时STP 树也会自动地发生相应的改变。 STP 树的生成过程是首先选举根桥然后确定根端口和指定端口最后阻塞备用端口。既然是选举我们就看下参选者和选举范围。 STP 是通过比较 BPDU 中的信息进行选举的最终的结果是
在整个 STP 网络中唯一的一个根桥被选举出来
对于所有的非根桥选举出根端口和指定端口负责转发数据落选的端口就是备用端口处于阻塞状态不能转发数据。 1、选举根桥 根桥是 STP 树的根节点。要生成一棵 STP 树首先要确定一个根桥。根桥是整个二层网络的逻辑中心但不一定是物理中心。
在 STP 交换机刚连接到网络时每台交换机都以自己为根桥从所有启动的端口发送 BPDU 宣告自己是根桥。收到 BPDU 的交换机会比较 BPDU 中的根桥 ID 与自己的根桥 ID 选择根桥 ID 值小的配置成自己 BPDU 中的根桥 ID 。交换机不停地交互 BPDU 同时对根桥 ID 进行比较直至选出一台根桥 ID 最小的交换机作为根桥。根桥会在固定的时间间隔发送 BPDU 其它设备对 BPDU 进行转发从而保证网络拓扑的稳定。 根桥交换机往往会承担这个网络中最大流量的转发工作我们希望性能最高的交换机当选根桥交换机。但是 STP 在选举时并不会把交换机的性能列入考量。为了让网络流量更合理的转发可以通过配置桥优先级的值来影响根桥的选举。 同时根桥是可以抢占的在 STP 完成网络收敛后如果网络中接入一台新的交换机且新增交换机的优先级比根桥交换机更优那么新增交换机会成为网络中新的根桥。同时STP 将会重新收敛、重新计算网络拓扑这个过程会引发网络震荡对流量的正常转发造成影响。
2、选举根端口 Root Port RP 根桥选举出来后其它没有成为根桥的交换机称为非根桥。STP 会为每个非根桥选举一个根接口也就是在交换机的所有端口中选择距离根桥最近的一个端口这就是根端口。
在 STP 树形成后的稳定期根桥依然会周期性的向网络中发送 BPDU 而非根桥的根端口会收到 BPDU 并向指定端口发送出去。
那是如何选择根端口的呢根桥周期性的发送 BPDU 非根桥的所有端口都能收到 BPDU 对比端口收到的 BPDU 中的参数值。 选择根路径开销 RPC 最小的端口 如果 RPC 相同那就选对端桥 ID BID 最小的端口 如果对端桥 ID 相同那就选对端端口 ID PID 最小的端口。 准确的说选举根端口的目的是选举出 STP 网络中每台交换机上与根交换机通信效率最高的端口。
3、选举指定端口 Designated Port DP 根端口确保了交换机到根桥的路径是唯一的也是最优的。网络中的每条链路与根桥之间的路径也要是唯一且最优的。当一条链路中有两条或两条以上的路径到达根桥就必须确定出一个唯一的指定端口防止出现二层环路。指定端口不但是这条链路内所有端口中到达根桥的最优接口还会向链路内发送 BPDU 。
虽然选举指定端口的范围和根端口不同但是选举的原则是一致的。指定端口的选举同样会按照以下过程进行 选择根路径开销 RPC 最小的端口
如果 RPC 相同那就选对端桥 ID 最小的端口
如果对端桥 ID 相同那就选对端端口 ID 最小的端口。 如果有人不小心将同一台交换机上的两个端口用网线连接起来网络中就会产生环路。选举指定端口就是为了预防这种错误连接导致环路的情况。当出现这种连接时STP 会以端口 ID 较小的端口作为指定端口从而打破环路。
为什么根桥交换机的所有端口都是指定端口呢
因为根桥交换机端口的根路径开销都是 0 根据选择选举原则成为这条链路的指定端口。
4、阻塞备用端口 Alternate Port AP 在确定了根端口和指定端口后交换机上剩下的非根端口和非指定端口都叫做备用端口。备用端口是打破环路的关键STP 会对这些备用端口进行逻辑阻塞。逻辑阻塞是指端口不会接收或发送任何数据但是会监听 BPDU 。当网络的一些端口出现故障时STP 会让备用端口开始转发数据用来恢复网络的正常通信。 三种端口的异同如下 一旦备用端口被逻辑阻塞后STP 树的生成过程就完成了。
STP 端口状态机 STP 不但定义了 3 种端口角色根端口、指定端口、备用端口还讲定义了 5 种端口状态禁用状态、阻塞状态、侦听状态、学习状态、转发状态。 STP 交换机的端口启动时首先会从禁用状态自动进入到阻塞状态。在阻塞状态端口只能接收和分析 BPDU 不能发送 BPDU 。如果端口选为根端口或指定端口则会进入侦听状态这时端口可以接收并发送 BPDU 这种状态会持续一个 Forward Delay 的时间默认是 15 秒。15 秒后端口会进入到学习状态并持续一个 Forward Delay 的时间。学习状态的端口可以接收和发送 BPDU 同时开始进行 MAC 地址学习为数据转发做好准备。最后端口由学习状态进入到转发状态就开始进行数据转发。在整个状态的迁移过程中端口一旦关闭或发生链路故障就会进入到禁用状态如果端口不再是根端口或指定端口那么端口状态会立刻退回到阻塞状态。 在 STP 的生成过程中为什么要有两个 Forward Delay 时间
在侦听状态有一个 Forward Delay 的时间是因为 BPDU 泛洪到全网需要一定的时间STP 完成全网拓扑的计算同样需要时间所以停留 15 秒让 STP 有充分的时间计算全网拓扑避免网络中出现临时的环路。在学习状态又有一个 Forward Delay 的时间是由于交换机的接口上未学习到任何 MAC 地址需要时间学习 MAC 地址避免网络中出现不必要的数据帧泛洪现象。停留 15 秒为进入转发状态做好准备。
STP 时间参数 STP 定义了 3 个重要的时间参数。
Hello Time Hello 时间 STP 交换机发送配置 BPDU 的时间间隔默认是 2 秒。如果要修改时间参数那么必须在根桥上修改才有效。
Forward Delay转发延迟接口从侦听状态进入学习状态或从学习状态进入转发状态的延迟时间默认值是 15 秒。避免在 STP 树的生成过程中可能出现的临时环路或短暂的数据帧泛洪现象分别在侦听和学习的端口状态各停留一个转发延迟时间。对于 STP 而言一个阻塞端口选举为根接口或指定接口后进入转发状态至少需要经历 30 秒的时间。
Max Age最大生存时间BPDU 的最大生存时间也称为 BPDU 的老化时间Max Age 的值由根桥指定默认值是 20 秒。如果端口在 20 秒内收到 BPDU 最大生存时间会重新计时如果端口一直没收到 BPDU 那么 BPDU 将会老化设备会重新在端口上选择最优 BPDU 也就是重新进行根接口的选举。
由于时间参数的设计一个 STP 接口从阻塞状态进入到转发状态可能需要 30 ~ 50 秒的时间这段时间内网络无法正常使用。
举例说明 图片
交换机 A 、B 、C 一起启动各交换机的每个互联端口立即从禁用状态进入到阻塞状态。在阻塞状态的端口只能接收而不能发送 BPDU 所以任何端口都收不到 BPDU 。在等待 Max Age 后每台交换机都会认为自己是根桥所有端口的角色都成为指定端口并且端口的状态迁移为侦听状态。
交换机的端口进入到侦听状态后开始发送自己产生的配置 BPDU 同时也收到其它交换机发送的配置 BPDU 。
因为各个交换机发送 BPDU 的时间有一定的随机性所以有可能交换机 B 和交换机 C 先选举根桥为交换机 B 再收到交换机 A 的配置 BPDU 最后选举出根桥为交换机 A 。因此无论交换机开始的状态如何也不管中间过程有多大差异最终的结果总是确定且唯一的桥 ID 最小的交换机会成为根桥。
端口在侦听状态持续 Forward Delay 的时间后开始进入学习状态。由于交换机 C 的 G0/2 端口已经成为备用端口所以状态也会变成阻塞状态。
各个端口交换机 C 的 G0/2 端口除外陆续进入学习状态后会持续 Forward Delay 的时间。在这段时间里交换机开始学习 MAC 地址和端口的映射关系同时希望 STP 树在这个时间内能够完全收敛。
之后各个端口交换机 C 的 G0/2 端口除外相继进入转发状态开始进行数据帧的转发。
STP 的改进和代替技术 在实际应用中STP 有很多不足之处RSTP/MSTP 对 STP 进行了哪些改良有哪些其它技术用来代替生成树技术在这里插入图片描述