前面聊的拓扑结构都比较简单,所以能用,但是未必可靠。为了可靠,我们需要做冗余,同时需要做一些其他的配置。
生成树协议STP
假设交换机按照上面的方案连,虽然可以提高网络可靠性,但是因为形成了环路,所以有可能形成广播风暴(成因大家自己思考)。
为了消除局域网中的环路,Radia Perlman研发出了生成树算法。简单理解就该改算法能够将环形网络进行修剪,成为逻辑上没有环路的树形结构。
STP的工作流程主要有四步,我们又不考试,大家大体了解一下就可以了。我们只需要知道,STP工作完,局域网中就没有环路了。
链路聚合
为啥要搞链路聚合呢?交换机SWA和SWB之间如果只有一条链路,链路速率是100Mbps。但是因为机器特别多,100Mbps不够了,又没钱,不想升级。那就可以用链路聚合。
概念:
链路聚合是以太网交换中非常重要的提高可靠性、增加带宽的技术。通过链路聚合可以将物理上的多个以太网链路聚合成一个逻辑上的链路组,对于上层实体聚合组内的链路相当于一条链路。
链路聚合的特点:
1、 增加网络带宽:可以把数据流分散到聚合组中各个成员端口实现负载分担,增加交换机间的链路带宽。
2、 提供了链路可靠性:链路聚合组中可以实时监控组内各个端口的状态,如果某个端口故障,聚合组会及时把数据流从其他端口传输。
我个人觉得链路聚合和STP不冲突,即使开了STP,聚合的链路还是当做一条链路使用的。
链路聚合(Link Aggregation)和生成树协议(STP, Spanning Tree Protocol)在交换机中可以同时配置,通常并不会冲突。
当配置了链路聚合后,整个以太通道会在逻辑上被看成是一条线路,虽然在物理上产生了环路,但生成树协议STP不会把它看成是环路,因此在正常情况下,两者是没有冲突的。
但是,在某些特殊场景下可能会出现问题,例如:环网中根桥设备掉电,导致STP生成树重新计算根桥,可能会导致和链路聚合存在冲突,这时需要进行适当的故障处理。
在配置和使用过程中,还需要注意生成树协议(STP)和链路聚合协议(LACP)的优先级和选举规则,以避免不必要的网络问题。为了确保网络的稳定性和可用性,配置时务必认真对待,不然小心出现环路或者链路不通等问题。通过合理的网络设计和配置,可以让链路聚合和生成树协议相互配合,实现更加强大的网络功能。
方式
做链路聚合有两种方式:
- 静态聚合:需要手动配置聚合组,双方系统间不使用聚合协议来协商链路信息。当双方设备有一端不支持动态聚合,或者双方支持的聚合协议不兼容,那么就必须采用静态链路聚合。
- 动态聚合:双方系统间使用聚合协议来协商链路信息。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/
往期文章回顾: