网络聚合链路与软件网桥配置指南

网络聚合链路与软件网桥配置指南

一、聚合链路(Team)

网络组队(聚合链路)是一种将多个网络接口控制器(NIC,Network Interface Controller)以逻辑方式组合在一起的技术,通过这种方式可以实现故障转移或提升网络吞吐量。相比传统方式,组队具有更好的性能和可扩展性,其模块化设计也使其更易于扩展。

二、teamd支持的聚合模式

teamd是实现聚合链路的工具,支持以下几种常见模式:

  • roundrobin(轮询模式):以轮询方式在所有端口传输数据包,均衡利用各接口带宽。
  • activebackup(主备模式):属于故障迁移模式,会监控链路状态变化,仅选择活动端口进行数据传输,当主端口故障时自动切换到备用端口。
  • loadbalance(负载均衡模式):通过监控网络流量,使用哈希函数选择传输端口,以实现流量的均衡分配。
  • broadcast(广播模式):具备容错能力,设备会通过所有端口广播传输数据包。

三、聚合链路配置(以activebackup主备模式为例)

Server1配置步骤:

#添加网卡后需要网络连接的配置文件

bash 复制代码
[root@zhangyiwei3 ~]# nmcli connection show
NAME        UUID                                  TYPE      DEVICE 
ens33       c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
virbr0      4ab2a230-02bf-4d02-9ede-a083c3085a3e  bridge    virbr0 
有线连接 1  3fd45fe7-dfb5-328a-a8d9-edc356ee0574  ethernet  ens36  
有线连接 2  44d47fa4-02f8-300c-9c96-870f2bd0fdc5  ethernet  ens37  
[root@zhangyiwei3 ~]# nmcli connection delete  "有线连接 1"
成功删除连接 '有线连接 1'(3fd45fe7-dfb5-328a-a8d9-edc356ee0574)。
[root@zhangyiwei3 ~]# nmcli connection delete  "有线连接 2"
成功删除连接 '有线连接 2'(44d47fa4-02f8-300c-9c96-870f2bd0fdc5)。
  1. 创建组接口

    bash 复制代码
    [root@zhangyiwei3 ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner": {"name": "activebackup"}}'
    连接"team0"(e01bbbf9-1ac1-40be-93dc-8781f18e2923) 已成功添加。
    • con-name team0:指定连接名称为team0
    • ifname team0:指定接口名称为team0
  • type team:设置连接类型为team
    • config:指定聚合模式为activebackup
  1. 为组接口配置静态IP

    bash 复制代码
    [root@zhangyiwei3 ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.30/24 ipv4.method manual connection.autoconnect yes
    • ipv4.addresses:设置IP地址为192.168.0.1/24
    • ipv4.method manual:启用手动配置IP
  • connection.autoconnect yes:设置开机自动连接
  1. 添加端口接口到组接口

    将ens36、ens37网络接口加入team0组:

    bash 复制代码
    [root@zhangyiwei3 ~]# nmcli connection add con-name team0-ens36 ifname ens36 type team-slave master team0
    连接"team0-ens36"(fc0093bb-763b-4bd4-8234-ef2cedf9c278) 已成功添加。
    [root@zhangyiwei3 ~]# nmcli connection add con-name team0-ens37 ifname ens37 type team-slave master team0
    连接"team0-ens37"(034e9e55-6137-4401-ad08-fcee00d5eb13) 已成功添加。
    复制代码
    - `type team-slave`:指定为组接口的从设备  
    - `master team0`:指定所属的主组接口为team0  
    1. 激活组接口
      bash 复制代码
      [root@zhangyiwei3 ~]# nmcli connection up team0
      Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/47)
  2. 重启网络服务(建议)

    bash 复制代码
    [root@zhangyiwei3 ~]# systemctl restart network
  3. 查看组队状态

    bash 复制代码
    [root@zhangyiwei3 ~]# teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      ens36
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      ens37
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: ens36

    该命令可显示team0的当前状态,包括活动端口、备用端口等信息。

Server2配置步骤:

配置步骤与Server1相同,仅需将team0的IP地址修改为192.168.0.2/24:

bash 复制代码
[root@zhangyiwei-2 ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.20/24 ipv4.method manual connection.autoconnect yes

测试连通性

在Server1上ping Server2的team0接口IP,验证是否连通:

bash 复制代码
[root@zhangyiwei3 ~]# ping 192.168.200.20
PING 192.168.200.20 (192.168.200.20) 56(84) bytes of data.
64 bytes from 192.168.200.20: icmp_seq=1 ttl=64 time=0.521 ms
64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.326 ms
64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.453 ms
64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=0.362 ms
^C
--- 192.168.200.20 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.326/0.415/0.521/0.079 ms
[root@zhangyiwei3 ~]# xxxxxxxxxx [root@zhangyiwei3 ~]# ping 192.168.200.20PING 192.168.200.20 (192.168.200.20) 56(84) bytes of data.64 bytes from 192.168.200.20: icmp_seq=1 ttl=64 time=0.521 ms64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.326 ms64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.453 ms64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=0.362 ms^C--- 192.168.200.20 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 2999msrtt min/avg/max/mdev = 0.326/0.415/0.521/0.079 ms[root@zhangyiwei3 ~]# ping 192.168.0.2bash

四、软件网桥

网桥是工作在链路层的设备,通过MAC地址在网络中转发流量。它会学习主机的MAC地址并构建MAC地址表(转发表),然后根据表中信息决定数据包的转发端口。在Linux环境中,可通过软件网桥仿真硬件网桥,其最常见的应用是在虚拟化场景中,用于让多个虚拟NIC共享一个物理NIC。

软件网桥功能:

  • MAC学习:通过监听接收和发送的数据包,记录每个MAC地址对应的接入端口,逐步构建地址-端口对照表(转发表)。
  • 报文转发:当收到数据包时,提取目的MAC地址,查询转发表以确定转发端口,然后将数据包从对应端口发送出去。

软件网桥配置步骤:

  1. 创建软件网桥

    bash 复制代码
    [root@zhangyiwei-2 ~]# nmcli connection add con-name bridge0 ifname bridge0 type bridge
    连接"bridge0"(f3badf92-da37-4069-9a0e-74a8e4494a88) 已成功添加。
    • con-name bridge0:连接名称为bridge0
  • ifname bridge0:接口名称为bridge0
    • type bridge:连接类型为网桥
  1. 配置网桥静态IP(可选)

    bash 复制代码
    nmcli connection modify bridge0 ipv4.addresses 192.168.200.1/24 ipv4.method manual connection.autoconnect yes
  2. 添加网络接口到网桥

    将ens38、ens39 接口连接至bridge0:

    bash 复制代码
    [root@zhangyiwei3 ~]# nmcli connection add con-name bridge0-ens38 ifname ens38 type bridge-slave master bridge0
    连接"bridge0-ens38"(747a1837-21e8-4e68-bf32-8a0ce9db49ee) 已成功添加。
    [root@zhangyiwei3 ~]# nmcli connection add con-name bridge0-ens39 ifname ens39 type bridge-slave master bridge0 
    连接"bridge0-ens39"(f6a36769-995f-4e13-a131-f8e22b160f73) 已成功添加。
    复制代码
    - `type bridge-slave`:指定为网桥的从设备  
    - `master bridge0`:指定所属网桥为bridge0  
    1. 激活网桥
      bash 复制代码
      [root@zhangyiwei3 ~]# nmcli connection up bridge0
      Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)
  3. 重启网络服务(建议)

    bash 复制代码
    [root@zhangyiwei3 ~]# systemctl restart network
  4. 启用IP转发(如需实现路由功能)

    编辑/etc/sysctl.conf文件,添加IP转发配置:

    vim /etc/sysctl.conf

    加入以下内容:

    bash 复制代码

root@zhangyiwei3 \~\]# vim /etc/sysctl.conf 加入以下内容: net.ipv4.ip_forward = 1 使配置生效: ```bash [root@zhangyiwei3 ~]# sysctl -p #### 测试 可通过`brctl show`命令查看网桥状态,或通过ping命令测试网桥连接的设备之间的连通性。 在server2 ping 软件网桥的IP地址: [root@zhangyiwei-2 ~]# ping 192.168.200.1 PING 192.168.200.1 (192.168.200.1) 56(84) bytes of data. 64 bytes from 192.168.200.1: icmp_seq=1 ttl=64 time=0.043 ms 64 bytes from 192.168.200.1: icmp_seq=2 ttl=64 time=0.049 ms 64 bytes from 192.168.200.1: icmp_seq=3 ttl=64 time=0.055 ms 64 bytes from 192.168.200.1: icmp_seq=4 ttl=64 time=0.044 ms ^C --- 192.168.200.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.043/0.047/0.055/0.009 ms [root@zhangyiwei-2 ~]#

相关推荐
苹果醋31 小时前
Java并发编程-Java内存模型(JMM)
java·运维·spring boot·mysql·nginx
dingcb1681 小时前
4090服务器无法sudo apt update 问题解决
运维·服务器
头发那是一根不剩了1 小时前
服务器硬盘进行分区和挂载
linux·运维·服务器
Johny_Zhao1 小时前
Linux防止rm误操作防护方案
linux·网络·人工智能·网络安全·信息安全·云计算·yum源·系统运维
心一信息2 小时前
如何通过华为无线控制器添加一个名为yunwei的无线网络
运维·网络·华为
stark张宇2 小时前
Linux 零基础入门,看这一篇就够了
linux·服务器
TDengine (老段)2 小时前
TDengine IDMP 运维指南(4. 使用 Docker 部署)
运维·数据库·物联网·docker·时序数据库·tdengine·涛思数据
三婶儿2 小时前
在没有客户端的客户环境下,如何用 Python 一键执行 MySQL 与达梦数据库 SQL
运维·后端·python
xcs194052 小时前
AI 自动化编程 trae 体验2 帮我分析一个项目
运维·自动化
三劫散仙3 小时前
mac m1上使用Kerberos访问远程linux hadoop集群的正确姿势
linux·hadoop·macos