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

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

一、聚合链路(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 ~]#

相关推荐
脚踏实地的大梦想家7 小时前
【Docker】P2 Docker环境构建准备:MacOS 与 Linux
linux·macos·docker
allnlei7 小时前
Keepalived 负载均衡
运维·负载均衡·lvs·keepalived
会飞的土拨鼠呀7 小时前
Debian 操作系统全面介绍
运维·debian
山城码农笑松哥7 小时前
国产凝思debian系Linux离线安装rabbitmq教程步骤
linux·debian·rabbitmq
抓饼先生7 小时前
C++ 20 视图view笔记
linux·开发语言·c++·笔记·c++20
狂浪天涯7 小时前
Android Security | SEAndroid 综述
linux
wanhengidc7 小时前
服务器内存不足会造成哪些影响?
运维·服务器·网络·游戏·智能手机
R_.L8 小时前
【项目】 :C++ - 仿mudou库one thread one loop式并发服务器实现(代码实现)
服务器·开发语言·c++
广州腾科助你拿下华为认证8 小时前
华为HICE云计算的含金量高吗?
运维·服务器·hcie证书
R_.L8 小时前
【项目】 :C++ - 仿mudou库one thread one loop式并发服务器实现(模块划分)
服务器·c++