在网络中,日常为了提高可靠性,一般会配置链路聚合(Link Aggregation),同样的,在服务器上也有网卡绑定(bonding)的技术,将两个或多个物理网卡通过bonding技术绑定在一起,从而创建一个虚拟的、逻辑上的网络接口,实现网络接口的聚合。
做了网卡绑定之后,就可以提高网络冗余,实现高可用,如果其中一个网卡发生故障,服务能够无缝切换到其他正常工作的网卡上,确保网络连接不间断;结合不同的工作模式,还可以实现负载分担或增加网络带宽的效果,优化资源利用的同时,提高网络容量。
Linux服务器上一般有多个NIC网卡,Linux系统提供一种技术,可以将多个网卡bonding成一个逻辑bonded的网卡,统一提供服务。(Linux bonding- involves bonding two or more physical network interface cards into a single logical “bonded” interface,下文用“虚拟网卡”这个词来代替 logical “bonded” interface),这样做可以为高可用性提供冗余,也可以提高系统带宽性能。
在ACTIVE/BACKUP配置模式下,一般只有一个网卡处于工作状态,其他作为备份和故障转移用,工作网卡出现故障后备份的网卡会起来工作,如此可以避免出现单点故障,提高系统的可用性。而在ACTIVE/ACTIVE配置模式下,所有的网卡都处于工作状态,这样可以提高系统带宽。
image.png
$ ip addr list
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1:
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff
3: em2:
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff
4: em3:
link/ether d0:94:66:53:f0:80 brd ff:ff:ff:ff
5: em4:
link/ether d0:94:66:53:f0:82 brd ff:ff:ff:ff
6: virbr0:
link/ether 52:54:00:9b:99
brd ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
7: virbr0-nic:
link/ether 52:54:00:9b:99
brd ff:ff:ff:ff
9: team0:
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff
inet 10.19.49.188/24 brd 10.19.49.255 scope global noprefixroute team0
valid_lft forever preferred_lft forever
inet6 fe80::35b:2e77:e86c:1458/64 scope link noprefixroute
valid_lft forever preferred_lft forever
这些信息是通过 ip addr list 命令获取的,显示了服务器上各个网卡接口的配置和状态。
对每个接口信息的解读1:
lo (Loopback)
inet 127.0.0.1/8 scope host lo: 这是回环接口,用于本地通信。IP地址是 127.0.0.1,子网掩码是 /8,表示只有这个地址是回环地址。
em1
inet6 ::1/128 scope host: IPv6 的回环地址,::1,子网掩码是 /128。
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:7c。
em2
同 em1,具有相同的配置和MAC地址。
em3
link/ether d0:94:66:53:f0:80 brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:80,但是接口状态是 DOWN,即未连接。
em4
link/ether d0:94:66:53:f0:82 brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:82,也处于 DOWN 状态。
virbr0
inet 192.168.122.1/24: 虚拟网桥的配置,IP地址是 192.168.122.1,子网掩码是 /24,表示局域网内的地址范围。
link/ether 52:54:00:9b:99 brd ff:ff:ff:ff:ff:ff: MAC 地址是 52:54:00:9b:99。
virbr0-nic
同 virbr0 的MAC地址,但是接口状态是 DOWN。
team0
inet 10.19.49.188/24: 连接到团队接口的配置,IP地址是 10.19.49.188,子网掩码是 /24。
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:7c,与 em1 和 em2 相同。
inet6 fe80::35b:2e77:e86c:1458/64: IPv6 地址。
总结解读:
Loopback (lo) 是用于本地通信的接口,IP地址为 127.0.0.1。
em1 和 em2 是两个物理网卡,使用同一个MAC地址,连接状态为 UP。
em3 和 em4 是两个物理网卡,MAC地址分别是 d0:94:66:53:f0:80 和 d0:94:66:53:f0:82,但是处于 DOWN 状态。
virbr0 是虚拟网桥,用于虚拟机通信,IP地址为 192.168.122.1。
virbr0-nic 是连接到 virbr0 的虚拟网桥的物理接口,但是处于 DOWN 状态。
team0 是一个团队接口,IP地址为 10.19.49.188,连接状态为 UP,与 em1、em2 使用相同的 MAC 地址。
对每个接口信息的解读2:
lo (Loopback)
Type: LOOPBACK
Status: UP
IPv4: 127.0.0.1/8 (localhost)
IPv6: ::1/128 (localhost)
这是回环接口,用于本地通信。IPv4 地址是 127.0.0.1,IPv6 地址是 ::1。
em1
Type: Ethernet
Status: UP
MAC 地址: d0:94:66:53:f0:7c
IPv4: 没有显示具体地址
这是一个以太网接口,状态为 UP,但没有显示具体的 IPv4 地址。
em2
Type: Ethernet
Status: UP
MAC 地址: d0:94:66:53:f0:7c
IPv4: 没有显示具体地址
类似于 em1,这也是一个以太网接口,状态为 UP,但没有显示具体的 IPv4 地址。
em3
Type: Ethernet
Status: DOWN
MAC 地址: d0:94:66:53:f0:80
这是一个未连接的以太网接口,状态为 DOWN。
em4
Type: Ethernet
Status: DOWN
MAC 地址: d0:94:66:53:f0:82
类似于 em3,这也是一个未连接的以太网接口,状态为 DOWN。
virbr0
Type: Virtual Bridge
Status: DOWN
MAC 地址: 52:54:00:9b:99
IPv4: 192.168.122.1/24 (局域网地址)
这是一个虚拟网桥接口,状态为 DOWN。它有一个 IPv4 地址 192.168.122.1,属于 192.168.122.0/24 网络。
virbr0-nic
Type: Virtual Bridge Interface
Status: DOWN
MAC 地址: 52:54:00:9b:99
这是虚拟网桥 virbr0 的网络接口,状态为 DOWN。
team0
Type: Ethernet
Status: UP
MAC 地址: d0:94:66:53:f0:7c
IPv4: 10.19.49.188/24 (全局范围地址)
这是一个以太网接口,状态为 UP。它有一个 IPv4 地址 10.19.49.188,属于 10.19.49.0/24 网络。
总结:
服务器有多个网络接口,包括以太网接口(em1, em2, em3, em4, team0)和虚拟接口(virbr0, virbr0-nic)。
大部分以太网接口都处于 UP 状态,但有些并未连接(DOWN 状态)。
IPv4 地址只显示在 lo(回环接口)、virbr0(虚拟网桥)和 team0(以太网接口)上。
这些信息对于管理网络配置和故障排除非常有用。
为什么 brd 都是 ff:ff:ff ?
在Linux中,网络设备的广播地址(broadcast address)通常被表示为 ff:ff:ff:ff:ff:ff。
这是因为在以太网中,广播地址的格式是固定的,全为 1,即 ff:ff:ff:ff:ff:ff。
这个地址表示数据包将被发送到网络中的所有设备,类似于一个广播信号,所有接收设备都会接收到这个数据包。
在你提供的输出中,你可以看到几个网络设备的广播地址(brd)都是 ff:ff:ff:ff:ff:ff,这是正常的行为。具体来说:
em1 和 em2 都使用相同的 MAC 地址,因此它们的广播地址也相同。
em3 和 em4 是 DOWN 状态,因此没有分配有效的广播地址,但是它们的占位符广播地址仍显示为 ff:ff:ff:ff:ff:ff。
总结来说,ff:ff:ff:ff:ff:ff 是以太网中广播地址的标准表示方式,用于指示数据包应发送到网络中的所有设备。
根据输出信息来看,em3 和 em4 是两个物理网卡,它们具有唯一的 MAC 地址(分别为 d0:94:66:53:f0:80 和 d0:94:66:53:f0:82),但是它们目前处于 DOWN 状态。
在网络术语中,DOWN 状态意味着这些接口当前未激活或未连接到任何网络设备上。
常见的情况包括:
网线未插入接口,或者未正确连接到交换机或路由器。
网卡驱动程序问题,导致无法启动或识别接口。
网络设备(如交换机)端口未正确配置或未启用。
因此,如果 em3 和 em4 处于 DOWN 状态,并且服务器并不需要这些额外的网络接口,那么这些接口可能确实没有在被使用。
在网络术语中,描述 team0 接口与 em1、em2 接口使用相同的 MAC 地址的行为,通常称为MAC地址共享或MAC地址冗余。
具体来说,这种配置下,多个物理接口(如 em1 和 em2)被绑定成一个逻辑接口(team0),这个逻辑接口会使用一个共同的 MAC 地址来进行网络通信。
将多个物理接口(如 em1 和 em2)绑定成一个逻辑接口(team0)并共享相同的 MAC 地址,有以下几个好处:
冗余和负载均衡:通过将多个物理接口绑定成一个逻辑接口,可以提高网络连接的可靠性和冗余性。如果一个物理接口出现故障或断开连接,仍然可以通过其他接口继续通信。同时,流量可以在多个接口之间均衡分配,提高整体的网络性能和负载均衡能力。
增加带宽:通过绑定多个物理接口,可以增加可用的带宽。合并多个物理链路可以提供更高的总带宽,从而支持大量数据传输或高密度流量的网络应用。
简化管理:使用一个逻辑接口管理多个物理接口,可以简化网络配置和管理。管理员可以集中管理逻辑接口的配置,而无需单独设置每个物理接口的参数。
故障恢复:当一个物理接口发生故障时,逻辑接口仍然保持活动状态,使得系统可以快速从故障中恢复而无需中断服务。
总体来说,MAC地址共享通过将多个物理接口绑定成一个逻辑接口,能够提升网络的可用性、性能和管理效率,特别是在需要高可靠性和高带宽的网络环境下,这种配置非常有利。
参考
Configuring a network bond
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-network-bonding_configuring-and-managing-networking
CentOS网卡制作bond
https://poison77.com/2020/04/06/linux-bond