---
title: HUCX RC多网口容错
description: "Hyper MPI中HUCX实现了RC（Reliably Connected）多网口容错（rc_failover）功能。该功能使用多个网口，通过自动检测网口异常状态并将业务流量切换至可用网口上实现容错，减少业务因网络组件故障而异常终止的概率。"
url: https://www.hikunpeng.com/document/detail/zh/hpchistory/hpckit/develop2400/userg_huaweimpi_0060.html
sourcePath: /source/zh/hpchistory/hpckit/develop2400/userg_huaweimpi_0060.html
indexId: 3582cbb0d2d8281b114114403f033939c9804c419315eaf6abc654da5abb4c0e66
---
# HUCX RC多网口容错

Hyper MPI中HUCX实现了RC（Reliably Connected）多网口容错（rc_failover）功能。该功能使用多个网口，通过自动检测网口异常状态并将业务流量切换至可用网口上实现容错，减少业务因网络组件故障而异常终止的概率。

当前该功能只支持RC连接方式。通过在mpirun命令行中添加如表1所示参数来配置该功能。


**表1 配置参数**

| 参数 | 是否必选 | 说明 |
| --- | --- | --- |
| \-x UCX\_TLS=rc\_f | 是 | 指定传输模式为“rc\_f”。 |
| \-x UCX\_ MAX\_EAGER\_RAILS=2 | 是 | 使用EAGER多轨。EAGER通道通常用于处理小包场景，为双边通信。 取值范围为1~4且为整数，默认为1。 若要支持该功能，需配置成大于1。 取值可根据节点网卡故障率决定，取值越高，可靠性越高。推荐值为2。 |
| \-x UCX\_LOCAL\_CONN\_SAME\_DEV=y | 是 | 本节点内是否使用同名网卡建链，可选值为y或n，默认为n。 y：本节点内使用同名网卡建链，可缩小故障域。 n：本节点内不同进程使用Numa亲和的网卡建链。 |
| \-x UCX\_ MAX\_RNDV\_RAILS=2 | 否 | 使用RNDV多轨。RNDV通道通常用于处理大包场景，为单边通信。 取值范围为2~4且为整数，默认为2。 取值可根据节点网卡故障率决定，取值越高，可靠性越高。推荐值为2。 |
| \-x UCX\_MAX\_AUX\_RAILS=2 | 否 | 使用AUX多轨建链。HUCX在使用RC连接方式初始化时，会使用AUX链互相交换地址并进行RC的建链，AUX链通常使用UD（Unreliable Datagram）连接；大规模业务初始化建链时间较长，建议使用AUX多轨建链，并增加AUX多轨数量，以降低在初始化建链过程中网口故障对业务的影响。 取值范围为1~4且为整数，默认为1。 取值可根据节点网卡故障率决定，取值越高，可靠性越高。推荐值为2。 |
| \-x UCX\_AUX\_TIMEOUT=3s | 否 | 设置AUX多轨建链超时时间。默认为20s。格式为： \-x UCX\_AUX\_TIMEOUT=<number>[s\|us\|ms\|ns] <number>为大于0的整数。 当集群规模与业务规模较大时，建链时间较长属于正常现象，可根据集群规模与业务规模适当调整该值，以便及时触发容错处理。 |
| \-x UCX\_NET\_DEVICES=mlx5\_0:1,mlx5\_1:1 | 否 | 设置网口的选择范围。默认从全部网口中选择。 |


- 在同一业务进程中，HUCX多网口容错只会在选择的网口范围内进行，不会在未指定的网口中进行切换；当选择的网口数高于设置的多轨数量时，会按照多轨数量进行选择网口（部分网口可能未被选中）。
- 在同一业务进程中，某网口出现故障后，业务流量会被自动切换到其他可用网口；故障网口恢复后，当前业务不会再次选择曾故障网口；新业务进程不受此影响。
- 当业务进行中某网口出现故障，无其他可用网口可供切换时，业务仍然报错退出。


命令示例如下：

mpirun -np 64 -N 32 --hostfile hf -x UCX_TLS=rc_f -x UCX_MAX_EAGER_RAILS=2 -x UCX_LOCAL_CONN_SAME_DEV=y -x UCX_MAX_AUX_RAILS=2 -x UCX_AUX_TIMEOUT=3s osu_bcast
