4.3. 了解 teamd 服务、运行程序和 link-watchers
团队服务 teamd
控制团队驱动程序的一个实例。这个驱动的实例添加硬件设备驱动程序实例组成一个网络接口组。团队驱动程序向内核提供一个网络接口,如 team0
。
teamd
服务对所有团队方法实现通用逻辑。这些功能对不同的负载共享和备份方法(如循环)是唯一的,并由称为 runners
的单独的代码单元来实现。管理员以 JavaScript 对象表示法(JSON)格式指定runners ,在创建实例时,JSON 代码被编译到 teamd
实例中。另外,在使用 NetworkManager
时,您可以在 team.runner
参数中设置 runner ,NetworkManager
会自动创建对应的 JSON 代码。
可用的 runner 如下:
-
broadcast
:转换所有端口上的数据。 -
roundrobin
:依次转换所有端口上的数据。 -
activebackup
:转换一个端口上的数据,而其他端口上的数据则作为备份保留。 -
loadbalance
:转换所有具有活跃的 Tx 负载均衡和基于 Berkeley 数据包过滤器(BPF)的 Tx 端口选择器的端口上的数据。 -
random
:转换随机选择的端口上的数据。 -
lacp
:实现 802.3ad 链路聚合控制协议(LACP)。
teamd
服务使用链路监视器来监控从属设备的状态。可用的 link-watchers 如下:
-
ethtool
:libteam
库使用ethtool
工具来监视链接状态的变化。这是默认的 link-watcher。 -
arp_ping
:libteam
库使用arp_ping
工具来监控使用地址解析协议(ARP)的远端硬件地址是否存在。 -
nsna_ping
: 在 IPv6 连接上,libteam
库使用来自 IPv6 邻居发现协议的邻居广告和邻居请求功能来监控邻居接口的存在。
每个 runner 都可以使用任何链接监视器,但 lacp
除外。此 runner 只能使用 ethtool
链接监视器。