6可靠的局域网组建

前面聊的拓扑结构都比较简单,所以能用,但是未必可靠。为了可靠,我们需要做冗余,同时需要做一些其他的配置。

生成树协议STP

假设交换机按照上面的方案连,虽然可以提高网络可靠性,但是因为形成了环路,所以有可能形成广播风暴(成因大家自己思考)。

为了消除局域网中的环路,Radia Perlman研发出了生成树算法。简单理解就该改算法能够将环形网络进行修剪,成为逻辑上没有环路的树形结构。

STP的工作流程主要有四步,我们又不考试,大家大体了解一下就可以了。我们只需要知道,STP工作完,局域网中就没有环路了。

链路聚合

为啥要搞链路聚合呢?交换机SWA和SWB之间如果只有一条链路,链路速率是100Mbps。但是因为机器特别多,100Mbps不够了,又没钱,不想升级。那就可以用链路聚合。

概念:

链路聚合是以太网交换中非常重要的提高可靠性、增加带宽的技术。通过链路聚合可以将物理上的多个以太网链路聚合成一个逻辑上的链路组,对于上层实体聚合组内的链路相当于一条链路。

链路聚合的特点:

1、 增加网络带宽:可以把数据流分散到聚合组中各个成员端口实现负载分担,增加交换机间的链路带宽。

2、 提供了链路可靠性:链路聚合组中可以实时监控组内各个端口的状态,如果某个端口故障,聚合组会及时把数据流从其他端口传输。

我个人觉得链路聚合和STP不冲突,即使开了STP,聚合的链路还是当做一条链路使用的。

链路聚合(Link Aggregation)和生成树协议(STP, Spanning Tree Protocol)在交换机中可以同时配置,通常并不会冲突。

当配置了链路聚合后,整个以太通道会在逻辑上被看成是一条线路,虽然在物理上产生了环路,但生成树协议STP不会把它看成是环路,因此在正常情况下,两者是没有冲突的。

但是,在某些特殊场景下可能会出现问题,例如:环网中根桥设备掉电,导致STP生成树重新计算根桥,可能会导致和链路聚合存在冲突,这时需要进行适当的故障处理。

在配置和使用过程中,还需要注意生成树协议(STP)和链路聚合协议(LACP)的优先级和选举规则,以避免不必要的网络问题。为了确保网络的稳定性和可用性,配置时务必认真对待,不然小心出现环路或者链路不通等问题。通过合理的网络设计和配置,可以让链路聚合和生成树协议相互配合,实现更加强大的网络功能。

方式

做链路聚合有两种方式:

  1. 静态聚合:需要手动配置聚合组,双方系统间不使用聚合协议来协商链路信息。当双方设备有一端不支持动态聚合,或者双方支持的聚合协议不兼容,那么就必须采用静态链路聚合。
  2. 动态聚合:双方系统间使用聚合协议来协商链路信息。LACP 是一种基于IEEE802.3ad 标准的、能够实现链路动态聚合的协议。动态聚合链路连接的双方通过交互 LACP (链路聚合控制协议)协议报文,来协商聚合对接

后面演示使用静态聚合方式做聚合。

限制条件

不管采用那种聚合方式链路两端的物理参数必须保持一致,包括

  • 进行聚合的链路的数目

  • 进行聚合的链路的速率

  • 进行聚合的链路的工作模式

链路的速率一般有:10Mbit/s、100Mbit/s、1000Mbit/s

链路的工作模式有:

  • Half:表示端口工作在半双工模式

  • Full:表示端口工作在全双工模式

  • Auto:表示端口工作在自协商模式

可通过下面的命令进行配置

scss 复制代码
端口速率配置:接口视图下使用 speed 命令加上端口速率,如果输入 auto
表示自适应接口
[SW1-Ethernet0/4/1]speed {10|100|1000|auto}
端口的双工模式:接口视图下使用 duplex 命令加上链路工作模式,输入 auto
表示自适应模式
[SW1-Ethernet0/4/1]duplex { auto|full|half }

实战

STP

STP默认是关闭的

csharp 复制代码
[SW1]stp global enable  //整体开启
[SW1]undo stp global enable  //整体关闭
[SW1]%Nov 12 17:23:26:127 2023 SW1 STP/6/STP_DISABLE: STP is now disabled on the device.

#接口维度开启和关闭
[SW1]interface GigabitEthernet1/0/1
[SW1-GigabitEthernet1/0/1]stp enable
[SW1-GigabitEthernet1/0/1]undo stp enable

#查看交换机本身信息
<SW1>display device manuinfo
 Slot 1 CPU 0:
DEVICE_ID:Slot ID:1
DEVICE_NAME:Simware

#查看stp根
[SW1]display stp root
 MST ID   Root Bridge ID        ExtPathCost IntPathCost Root Port
 0        32768.96d3-5262-0100  0           0

#查看stp摘要信息
[SW1]display stp brief
 MST ID   Port                                Role  STP State   Protection
 0        GigabitEthernet1/0/3                DESI  FORWARDING  NONE

对两个交换机开启STP后,可以看到根是S6850_5

arduino 复制代码
[SW1]display stp root
 MST ID   Root Bridge ID        ExtPathCost IntPathCost Root Port
 0        32768.20d4-a4a4-0500  20          0           GE1/0/10

大家可以在交换机上,配置优先级,控制谁成为根

csharp 复制代码
[SW1]STP priority  数值

链路聚合

我们使用静态配置方法把SW1和SW2的10和11进行聚合

先把另个交换机的端口物理参数配置一致

css 复制代码
[SW1]interface GigabitEthernet1/0/10
[SW1-GigabitEthernet1/0/10]speed 100
[SW1-GigabitEthernet1/0/10]duplex full
[SW1-GigabitEthernet1/0/10]exit
[SW1]inter
[SW1]interface Gi
[SW1]interface GigabitEthernet 1/0/11
[SW1-GigabitEthernet1/0/11]speed 100
[SW1-GigabitEthernet1/0/11]duplex full
[SW1-GigabitEthernet1/0/11]exit

[SW2]interface GigabitEthernet 1/0/10
[SW2-GigabitEthernet1/0/10]speed 100
[SW2-GigabitEthernet1/0/10]duplex full
[SW2-GigabitEthernet1/0/10]exit
[SW2]interface GigabitEthernet 1/0/11
[SW2-GigabitEthernet1/0/11]speed 100
[SW2-GigabitEthernet1/0/11]duplex full
[SW2-GigabitEthernet1/0/11]exit

创建聚合组,并将端口加入聚合组

scss 复制代码
[SW1]interface Bridge-Aggregation 1
[SW1-Bridge-Aggregation1]quit
[SW1]interface GigabitEthernet 1/0/10
[SW1-GigabitEthernet1/0/10]port link-aggregation group 1

[SW1-GigabitEthernet1/0/10]quit
[SW1]interface GigabitEthernet 1/0/11
[SW1-GigabitEthernet1/0/11]port link-aggregation group 1

#查看配置

[SW1-GigabitEthernet1/0/11]quit
[SW1]display link-aggregation verbose
  Port             Status  Priority Oper-Key
  GE1/0/10(R)      S       32768    1
  GE1/0/11         S       32768    1

SW2做相同配置后,尝试ping一下

python 复制代码
<H3C>ping 112.112.112.4
Ping 112.112.112.4 (112.112.112.4): 56 data bytes, press CTRL_C to break
56 bytes from 112.112.112.4: icmp_seq=0 ttl=255 time=14.755 ms

尝试关闭一个端口,还是可以ping通

csharp 复制代码
[SW2]interface GigabitEthernet 1/0/10
[SW2-GigabitEthernet1/0/10]shutdown

但是把SW2的11端口也关闭,就无法ping通了

总结

这一章其实不了解也无所谓,但是如果想让系统更加稳定,还是需要了解一下的。

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:shidawuhen.github.io/

往期文章回顾:

  1. 设计模式
  2. 招聘
  3. 思考
  4. 存储
  5. 算法系列
  6. 读书笔记
  7. 小工具
  8. 架构
  9. 网络
  10. Go语言
相关推荐
初晴~27 分钟前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
盖世英雄酱5813632 分钟前
InnoDB 的页分裂和页合并
数据库·后端
小_太_阳1 小时前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾1 小时前
scala借阅图书保存记录(三)
开发语言·后端·scala
星就前端叭2 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
小林coding3 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
AI理性派思考者3 小时前
【保姆教程】手把手教你在Linux系统搭建早期alpha项目cysic的验证者&证明者
后端·github·gpu
从善若水3 小时前
【2024】Merry Christmas!一起用Rust绘制一颗圣诞树吧
开发语言·后端·rust
机器之心3 小时前
终于等来能塞进手机的文生图模型!十分之一体量,SnapGen实现百分百的效果
人工智能·后端
机器之心3 小时前
首次!大模型自动搜索人工生命,做出AI科学家的Sakana AI又放大招
人工智能·后端