Devlink 线路卡¶
背景¶
devlink-linecard
机制旨在用于操作用作模块化交换系统可拆卸 PHY 模块的线路卡。 提供以下操作:
获取支持的线路卡类型列表。
为插槽配置特定线路卡类型。
获取和监视线路卡状态及其变化。
线路卡根据类型可能包含一个或多个齿轮箱,以将特定速度的通道复用到多个具有不同速度通道的端口。 线路卡确保交换 ASIC 模块和物理前面板端口之间的 N:M 映射。
概述¶
每个线路卡 devlink 对象都由设备驱动程序根据设备上可用的物理线路卡插槽创建。
与分路器电缆类似,设备可能无法检测到分路器电缆的几何形状,设备可能也无法检测到线路卡类型。 对于这些设备,引入了配置的概念。 它允许用户:
为线路卡插槽配置某种线路卡类型
设备驱动程序将指示 ASIC 相应地准备所有资源。 设备驱动程序将根据线路卡类型创建所有实例,即位于线路卡上的 devlink 端口和网络设备
即使没有物理连接或通电,也可以操作线路卡实体
在线路卡端口上设置分路器电缆
与普通端口一样,用户可以配置某种类型的分路器电缆,而无需物理连接到端口
配置 devlink 端口和网络设备
网络设备载波按以下方式确定:
线路卡未插入或断电
载波始终关闭
线路卡已插入并通电
载波的决定与普通端口网络设备相同
线路卡状态¶
devlink-linecard
机制支持以下线路卡状态:
unprovisioned
: 未在插槽上配置线路卡。
unprovisioning
: 线路卡插槽当前正在取消配置。
provisioning
: 线路卡插槽当前正在使用线路卡类型进行配置。
provisioning_failed
: 配置未成功。
provisioned
: 线路卡插槽已配置为某种类型。
active
: 线路卡已通电并处于活动状态。
下图提供了 devlink-linecard
状态转换的总体概述
+-------------------------+
| |
+----------------------------------> unprovisioned |
| | |
| +--------|-------^--------+
| | |
| | |
| +--------v-------|--------+
| | |
| | provisioning |
| | |
| +------------|------------+
| |
| +-----------------------------+
| | |
| +------------v------------+ +------------v------------+ +-------------------------+
| | | | ----> |
+----- provisioning_failed | | provisioned | | active |
| | | | <---- |
| +------------^------------+ +------------|------------+ +-------------------------+
| | |
| | |
| | +------------v------------+
| | | |
| | | unprovisioning |
| | | |
| | +------------|------------+
| | |
| +-----------------------------+
| |
+-----------------------------------------------+
使用示例¶
$ devlink lc show [ DEV [ lc LC_INDEX ] ]
$ devlink lc set DEV lc LC_INDEX [ { type LC_TYPE | notype } ]
# Show current line card configuration and status for all slots:
$ devlink lc
# Set slot 8 to be provisioned with type "16x100G":
$ devlink lc set pci/0000:01:00.0 lc 8 type 16x100G
# Set slot 8 to be unprovisioned:
$ devlink lc set pci/0000:01:00.0 lc 8 notype