Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SONiC 设备配置文件

背景

使用设备配置文件在 Apstra 环境中识别设备。它们捕获特定于设备的语义,这是 Apstra 软件发现这些语义所需的,也是在蓝图中运行对数据路径十分良好的网络配置。

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

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

问题陈述

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

解决 方案

所有DPS 的高级数据模型都是相同的。每个设备配置文件使用相同的密钥。我们获取值的方式可能不同,也可能受供应商限制。该文档将征召以下人士:

  • DP 的模式和 DP 内部的嵌套元素。
  • 模式中每个键值对的含义。
  • 值填充了供应商特定的配方。
  • 列出所有约束和要考虑的拐点情况,特别是某些(组)模型的端口配置。
  • 在创建已投入生产中的 DP 过程中所吸取的任何经验教训都对创建未来的接入点非常有用。

用户界面

从 Apstra GUI 创建设备配置文件时,您的部分条目会经过语义验证。然而,它并不能完全确保供应商特定的深层约束和要求。借助确切的供应商规格,GUI 可以帮助您创建一个语义上有效的 DP,该 DP 成为 Apstra 数据库数据模型的一部分。

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

选择器信息

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

选择器字段 命令,以获取设备上的信息
模型 0x21 show Platform syseeprom
制造商 如果0x2D,其他0x2D 0x2B show Platform syseeprom
操作系统系列 声波 显示版本
版本 .* 显示版本

能力

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

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

选择器字段 命令,以获取设备上的信息
用户陆地 64 (int) 不会影响配置
form_factor “1RU”(字符串) 不会影响配置
ecmp_limit 64 (int) 不会影响配置
Asic “T2”(字符串) 不会影响配置
Cpu 'x86'(字符串) 不会影响配置
Ram 16 (int)(注意,单位:GB) 不会影响配置
onie 真(bool)(默认) 不会影响配置
lxc 真(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_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 堆栈不会因为不支持的端口配置(config_db.json 中)而失败,而错误地在 Apstra 中生成 DP。因此,最终用户务必确保为 SONiC 平台生成的 DP 具有该特定平台的 port_config.ini 文件中反映的正确接口名称和通道映射。一个平台可能有几个不同的 port_config.ini 文件,属于该平台的不同 HWS 库。Apstra 将尝试使用该平台的任何可用选项验证生成的端口配置。Apstra 目前不使用 SONiC 项目中正在进行的动态端口分支功能。

故障 排除

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

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

根本原因的流可能是:

  • 检查 DP 是否有明显的端口功能错误。端口是否真正能够支持 DP 配置的速度。特定于设备的 port_config.ini Sonic 开源项目是解析错误消息的好资源。
  • 检查 DP 是否正确配置了自动关闭接口或禁用了接口。自动设置和禁用均可在接口设置字段中表示。
  • 调试接口名称和通道映射时,请查看相应的port_config.ini。以 AS5712-54X 边缘核心/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 文件都驻留在声波图像中的 HWSKU 文件夹中(如上述引用)。要尝试不同端口速度(port_config.ini 中列出的功能之外),还需要了解芯片组和物理交换机制造商,看看可以实现什么。除非向供应商提出要求,否则此信息在任何白皮书中都可能无法提供。

示例:DP 和 port_config.ini

Port_config.ini(来自 sonic-buildimage)的下方为 Dell_Z9100 (x86_64-dell_z9100_c2538-r0/Force10-Z9100-C32

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

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

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