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