0%

名词

  • HCA: 在Infiniband/RoCE规范中,将RDMA网卡称为HCA,全称为Host Channel Adapter。HCA有它的GUID(Global Unique Identifier);
  • Port:物理端口;一个HCA可以有多个Port;每个Port也有它各自的GUID (单Port的HCA,HCA和Port的GUID可能相同);GUID是烧录在硬件上的;
  • GUID:GUID 是一个 64 位的全球唯一标识符,用于标识一个 Node(节点,即HCA) 或一个 Port(端口)。由设备制造商在生产时烧录到硬件中。
  • LID: 由子网管理器(Subnet Manager, SM),通常是网络交换机上的一个软件(如 NVIDIA 的 opensm)自动分配的, 16 位的短整数,用于在一个子网内唯一地标识一个端口。RoCEv2 运行在 IP/UDP 网络之上。在纯粹的 RoCEv2 部署中,通信主要使用 IP 地址和 MAC 地址,LID 的角色被大大削弱了。然而,管理层面仍然严重依赖 LID。例如,你用来查询网卡状态的工具(如 ibstat, perfquery)仍然使用 LID 来识别设备,因为底层的 InfiniBand 管理架构被保留了。
  • GID: GID 在 RoCEv2 的环境中至关重要;GID 是 RoCEv2 的寻址基石。因为 RoCEv2 将 RDMA 数据包封装在 UDP/IPv6 数据包中(尽管底层网络可以是 IPv4),所以它需要一个兼容 IP 的地址来路由流量,这就是 GID。一个 GID 通常看起来就像一个 IPv6 地址。事实上,它正是由两部分组成:1. 64位子网前缀,通常来自于连接 RoCE 交换机的路由器所宣告的IPv6子网前缀;2. 64位接口标识符,通常由端口的GUID派生而来。根据IEEE EUI-64标准,会将Port GUID的中间插入0xfffe来生成。一个RDMA端口可以有多个GID,每个GID对应一个不同的IP地址或网络路径。这些GID被分配在一个索引从0开始的表中。例如:
    gid0:通常是链路本地地址(fe80::/10 开头),用于子网内的通信;gid1:通常是全局单播地址(2001:db8::/64 等开头),用于路由通信。(看起来就和一个Ethernet端口可以配置多个IP地址一样)。可以使用ibv_devinfo -v查看:
    1
    2
    3
    4
    GID[  0]:   fe80:0000:0000:0000:526b:4bff:fe0f:aeec, RoCE v1
    GID[ 1]: fe80::526b:4bff:fe0f:aeec, RoCE v2
    GID[ 2]: 0000:0000:0000:0000:0000:ffff:700d:6b9a, RoCE v1
    GID[ 3]: ::ffff:112.13.107.154, RoCE v2

工具

rdma-core.x86_64
/usr/bin/ibdev2netdev
/usr/sbin/rdma-ndd

iproute.x86_64
/usr/sbin/rdma

libibverbs-utils.x86_64
/usr/bin/ibv_asyncwatch
/usr/bin/ibv_devices
/usr/bin/ibv_devinfo
/usr/bin/ibv_rc_pingpong
/usr/bin/ibv_srq_pingpong
/usr/bin/ibv_uc_pingpong
/usr/bin/ibv_ud_pingpong
/usr/bin/ibv_xsrq_pingpong
/usr/bin/rxe_cfg

infiniband-diags.x86_64
/usr/sbin/check_lft_balance.pl
/usr/sbin/dump_fts
/usr/sbin/dump_lfts.sh
/usr/sbin/dump_mfts.sh
/usr/sbin/ibaddr
/usr/sbin/ibcacheedit
/usr/sbin/ibccconfig
/usr/sbin/ibccquery
/usr/sbin/ibfindnodesusing.pl
/usr/sbin/ibhosts
/usr/sbin/ibidsverify.pl
/usr/sbin/iblinkinfo
/usr/sbin/ibnetdiscover
/usr/sbin/ibnodes
/usr/sbin/ibping
/usr/sbin/ibportstate
/usr/sbin/ibqueryerrors
/usr/sbin/ibroute
/usr/sbin/ibrouters
/usr/sbin/ibstat
/usr/sbin/ibstatus
/usr/sbin/ibswitches
/usr/sbin/ibsysstat
/usr/sbin/ibtracert
/usr/sbin/perfquery
/usr/sbin/saquery
/usr/sbin/sminfo
/usr/sbin/smpdump
/usr/sbin/smpquery
/usr/sbin/vendstat

counters

ll /sys/class/infiniband/mlx5_bond_0/ports/1/counters/
excessive_buffer_overrun_errors
link_downed
link_error_recovery
local_link_integrity_errors
multicast_rcv_packets
multicast_xmit_packets
port_rcv_constraint_errors
port_rcv_data
port_rcv_errors
port_rcv_packets
port_rcv_remote_physical_errors
port_rcv_switch_relay_errors
port_xmit_constraint_errors
port_xmit_data
port_xmit_discards
port_xmit_packets
port_xmit_wait
symbol_error
unicast_rcv_packets
unicast_xmit_packets
VL15_dropped

写的不错,有赏!