当前位置: 首页 > news >正文

Mellanox的LAG全称是什么?网卡的创建机制如何?(Link Aggregation Group 链路聚合组)

背景

对于双端口的网卡,有时候有将链路聚合的需求。在Mellanox网卡上通过LAG提供。对于RoCE的报文在Mellanox上也可以通过LAG来完成报文收发,叫做RoCE over LAG。但是仅仅适用于双端口卡。

关键点

  • LAG: Link Aggregation Group (LAG) 链路聚合组。一种网络技术,允许将多个物理链路组合成一个逻辑链路,以提高带宽和冗余。(注意这里是指链路,还不涉及端口port的概念,聚合的不是端口而是链路)
  • Linux内核中链路聚合是 bonding 功能
  • LAG 的创建和销毁:通过 mlx5_cmd_create_lag 和 mlx5_cmd_destroy_lag
  • LAG的激活和去激活:mlx5_activate_lag 和mlx5_deactivate_lag(清理相关资源)
  • Mellanox网卡只有在HCA_CAP.num_lag_ports > 1的时候才能用lag功能,在HCA_CAP的“寄存器”地址的偏移4Ch处
    在这里插入图片描述
  • 如果 HCA_CAP.lag_master = 1,软件(SW)必须使用特定的命令(如 CREATE/MODIFY/DESTROY LAG)来启用和管理 LAG
  • LAG相关的几条命令:创建,修改,查询,销毁,创建vport的lag和销毁
    MLX5_CMD_OP_CREATE_LAG = 0x840,
    MLX5_CMD_OP_MODIFY_LAG = 0x841,
    MLX5_CMD_OP_QUERY_LAG = 0x842,
    MLX5_CMD_OP_DESTROY_LAG = 0x843,
    MLX5_CMD_OP_CREATE_VPORT_LAG = 0x844,
    MLX5_CMD_OP_DESTROY_VPORT_LAG = 0x845,
  • 以创建LAG为例HOST和FW交互cmd格式:
    在这里插入图片描述
    在这里插入图片描述
    其中context内容:
    在这里插入图片描述
  • 代码中创建lag是:mlx5_cmd_create_lag,可见是对cmd的封装
    在这里插入图片描述
    创建执行结束后会返回状态和syndrome:
    在这里插入图片描述
  • mlx5_create_lag执行成功后会将设置到FW的flags同时赋值到ldev->flags |= flags;(如果失败不会被执行),然后__mlx5_lag_is_active会判断这个flags是否为有效ldev->flags & MLX5_LAG_MODE_FLAGS,下面任何一个flag被打标都表示有效。
#define MLX5_LAG_MODE_FLAGS (MLX5_LAG_FLAG_ROCE | MLX5_LAG_FLAG_SRIOV |\
			     MLX5_LAG_FLAG_MULTIPATH | \
			     MLX5_LAG_FLAG_HASH_BASED | MLX5_LAG_FLAG_MULTI_PORT_ESW)
  • 当ibdev2netdev查看bond口名字的时候,使用的是mlx5_0还是mlx5_bond_0,就是根据是否active决定的:
    在这里插入图片描述

参考:
https://enterprise-support.nvidia.com/s/article/How-to-Configure-RoCE-over-LAG-ConnectX-4-ConnectX-5-ConnectX-6
https://docs.nvidia.com/networking/display/mlnxofedv23070512/changes+and+new+features+history

相关文章:

  • WiFi IEEE 802.11协议精读:IEEE 802.11-2007,6,MAC service definition MAC服务定义
  • TinyEngine v2.2版本发布:支持页面嵌套路由,提升多层级路由管理能力开发分支调整
  • HBase常用的Filter过滤器操作
  • Spring Data JPA vs MyBatis:ORM框架如何选择?
  • 【IntelliJ IDEA】关于设置固定的文件格式(包括注释、版权信息等)的方法
  • 轨迹控制--odrive的位置控制---负载设置
  • lmstdio大模型——本地大模型python函数调用设计
  • Python中有哪些基本数据类型?
  • 软考~系统规划与管理师考试——真题篇——2021年5月——论文——纯享题目版
  • ClickHouse 的分区、分桶和分片详解
  • 计算机毕业设计SpringBoot+Vue.js学科竞赛管理系统(源码+文档+PPT+讲解)
  • qt5的中文乱码问题,QString、QStringLiteral 为 UTF-16 编码
  • 状态模式
  • RK3588部署YOLOv8(1):YOLOv8和YOLOv8-pose转ONNX及Python后处理代码实现
  • 人工智能定义
  • AI学习第五天-python的基础使用-趣味图形
  • DeepSeek:面向效率与垂直领域的下一代大语言模型技术解析
  • 2025年电气工程与智能系统国际学术会议(IC2EIS 2025)
  • order by布尔盲注、时间盲注
  • 【算法通关村 Day11】位运算
  • 中国人保聘任田耕为副总裁,此前为工行浙江省分行行长
  • 海尔·2025青岛马拉松两选手被终身禁赛:违规转让号码、穿戴他人号码
  • 初步结果显示,卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 美情报机构攻击中国大型商用密码产品提供商,调查报告公布
  • 暴涨96%!一季度“中国游中国购”持续升温,还有更多利好
  • 京东美团开打,苦了商家?