SONiC 设备配置文件

背景

通过设备配置文件在 Apstra 环境中识别设备。它们会捕获特定于设备的语义,而 Apstra 软件需要这些语义来发现这些语义,并在进入蓝图后运行适用于数据路径的网络配置。

设备配置文件是 REST 实体,可用于在设计阶段创建、编辑、删除和列出。设备配置文件用于创建接口映射,在部署蓝图时,这些映射将直接在 Apstra 配置渲染引擎内部使用。

本文档介绍了创建(和编辑)语义上正确的 Sonic DP 所需的知识,这样它不仅能通过 Apstra 中的验证,确保在数据库中创建正确的 DP,而且还符合适用于设备的供应商语义要求,这样当生成的配置被推送到网络设备时,就不会导致部署失败。

问题陈述

设备配置文件是供应商语义感知的数据结构。若要创建设备配置文件,需要供应商提供的设备规格。要创建有效且易于配置的 JSON,您需要将这些规范转换为 Apstra 设备配置文件数据模型。

溶液

所有 DP 的高级数据模型都是相同的。每个设备配置文件都使用相同的密钥。我们获取值的方式可能不同,或者可能加载了供应商约束。该文档列出了以下内容:

  • DP 的架构和 DP 中的嵌套元素。
  • 架构中每个键值对的含义。
  • 将填充特定于供应商的配方,这些值将被填充。
  • 列出要考虑的所有约束和极端情况,特别是对于某些(组)型号的端口配置。
  • 在创建那些已经在生产中的 DP 的过程中学到的任何经验教训都有助于创建未来的 DP。

用户界面

从 Apstra GUI 创建设备配置文件时,您的某些条目会经过语义验证。但是,它并不完全能够确保针对特定供应商的深度约束和要求。有了确切的供应商规范,GUI 即可帮助您创建语义上有效的 DP,该 DP 将成为 Apstra 数据库数据模型的一部分。

或者,您可以编写包含供应商规范的自己的 Python 代码,根据 Apstra DP 数据模型对其进行规范化,然后生成 json,然后使用 GUI 导入。

选择器信息

在所有四个选择器字段中输入正确的信息对于设备与设备配置文件匹配至关重要。

选择器字段 值 命令以获取设备上的信息
型 0x21 显示平台 Syseeprom
制造者 如果0x2D在syseeprom中,则0x2D其他0x2B 显示平台 Syseeprom
操作系统系列 声音的 显示版本
版本 .* 显示版本

能力

如果具有设备规范,则可以获取其硬件和软件功能,以便进入设备配置文件。

下表包含 SONiC 设备中常见的值(基于合格设备)。

选择器字段 值 命令以获取设备上的信息
用户空间 64 (整) 不影响配置
form_factor '1RU'(字符串) 不影响配置
ecmp_limit 64 (整) 不影响配置
ASIC “T2”(字符串) 不影响配置
中央处理器 “x86”(字符串) 不影响配置
公羊 16 (int) (注意,单位单位:GB) 不影响配置
奥尼 True (bool) (默认) 不影响配置
LXC True (bool) (默认) 不影响配置

接口命名约定

Sonic 遵循在 github master 上找到的 Azure SONIC 上每个 sonic 端口名称文件的命名约定。 https://github.com/Azure/SONiC/blob/master/doc/sonic-port-name.md

要创建 SONIC 设备配置文件,您必须通读特定于设备的port_config.ini(例如,sonic-buildimage/device/mellanox/x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini)文件,并按照上述链接中的说明提供正确的接口名称。

port_congi.ini指定 SONiC 使用的接口名称。设备配置文件必须与接口名称匹配,这些接口名称将在配置文件 (config_db.json) 中生成 PORT 配置。在本文档中,port_config.ini 和 config_db.json 应具有相同的接口命名标准。在 DP 中使用这些接口名称以及 port_cfg.ini 文件中提供的通道编号。根据上述步骤生成设备配置文件后,Apstra 会将其与 LD 一起使用来生成接口映射 (IM)。作为验证的一部分,Apstra 将确保 IM(描述端口及其速度)在 “/usr/share/sonic/device/ x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini” 下确实可用且受支持。执行此验证是为了确保 SONiC NOS 堆栈不会因为 Apstra 中错误的 DP 而在 Apstra 中错误地生成不受支持的端口配置(config_db.json)而失败。因此,最终用户必须确保为 SONiC 平台生成的 DP 具有该特定平台的文件中反映port_config.ini正确的接口名称和通道图。一个平台可能有几个不同的port_config.ini文件,这些文件属于该平台的不同 HWSKU。Apstra 将尝试使用该平台的任何可用选项验证生成的端口配置。Apstra 目前未使用 SONiC 项目中正在进行的动态端口分线功能。

故障 排除

设备不匹配通常发生在设备生命周期的开始。如果设备未选择设备配置文件,请检查设备配置文件中的四个选择器字段。

如果端口配置的速度不正确,或者设备配置文件或接口映射中没有处理特定于操作系统的端口限制,则可能会引发部署错误。

根本原因的可能流程如下:

  • 检查 DP 是否有明显的端口功能错误。端口是否真的能够达到 DP 配置的速度?特定于设备port_config.ini Sonic 开源项目是解析错误消息的好资源。
  • 检查 DP 是否正确配置了自动或禁用接口。Autoneg 和 disabled 都可以在接口设置字段中表示。
  • 在调试接口名称和通道映射时,请查看相应的port_config.ini。以 AS5712-54X edgecore/accton 盒子为例,我们可以获得port_config.ini文件,其中包含 https://github.com/Azure/sonic-buildimage/tree/master/device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X 的车道/名称/别名等详细信息
  • 您可以在官方 SONiC 文档中找到命名限制。例如,如果要为运行 SONIC 的 Accton 5712 54X 生成接口名称,则port_config.ini是权限。 https://github.com/Azure/sonic-buildimage/blob/master/device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X/port_config.ini 有时,设备可能存在端口间限制。对于 SONiC,它通常布置在 port_config.ini 文件中。一个特定的平台可以有多个port_config.ini文件,并且一个特定的制造商,每个port_config.ini文件都驻留在 SOP 映像的 HWSKU 文件夹中(如上面提到的那个)。要想在port_config.ini中列出的端口速度之外试用不同的端口速度,就需要了解芯片组以及物理交换机制造商,才能看到可以实现的目标。除非供应商要求,否则任何白皮书中都不提供此信息。

示例:DP 和 port_config.ini

下面是 sonic-buildimage 的 Port_config.ini Dell_Z9100 (x86_64-dell_z9100_c2538-R0/Force10-Z9100-C32)

使用 parse.py 脚本将port_config转换为端口到lane_map的数据结构:

上面的输出将成为声波device_profile生成器 python 文件中sonic_device_info字典条目。

在 Apstra 中生成的对应设备配置文件: