Openswitch移植指南

OPX移植指南

1.     初步内容

OPX Base代码被开发为可以移植到各种各样的硬件平台(的形态)。除了SAI和SDI构件之外(含),只有少量的代码是平台特定的(只能支持特定的硬件平台)。大多数的平台特定的功能被定义在配置文件中,这些配置文件在系统初始化时被定位。

交换机抽象接口(SAI)和系统设备接口(SDI)组件包含网络处理单元(NPU)和系统设备专用组件。SAI和SDI实现是设备和/或平台特定的。

网络适应服务(NAS)和平台适配服务(PAS)组件的代码是硬件独立的。将NAS和PAS组件移植到新的平台涉及到为该特定平台创建新的配置和初始化脚本文件。

温度控制(TC)组件的配置(架构上)位于PAS之上的软件层之上——它还需要适应新平台的热特性。有些平台可能不需要温度控制元件——在外部微控制器执行冷却算法的情况下。

所有平台配置文件都存储在opx -platform- config中。对于每个新平台,您必须在opx-platform- config存储库中创建两个目录:

1.1  硬件的依赖设备的配置文件的目录(主要是SAI、SDI、系统启动和关机),如dell /s6000- hw。目录名称遵循约定:VENDOR_NAME /platform_name - hw(dell /s6000- hw)。

1.2  硬件的设备独立的配置文件的目录(NAS、PAS、温度控制),如dell/s6000/etc/ opx。目录名遵循惯例:VENDOR_NAME /PLATFORM_NAME/etc/opx。

2.     平台脚本

这些脚本在平台初始化时间和关机时被调用。脚本可以根据新的平台进行调整,根据开发人员如何决定初始化或关闭给定的硬件平台,这些脚本是可选的。

2.1  平台初始化脚本

平台初始化脚本在启动时执行一次——它必须包含在systemd启动配置中。它可以执行各种任务,如CPLD初始化或SMBus控制器初始化(根据平台)。在opx_platform_init.sh中有平台初始化脚本示例。将平台初始化脚本添加到systemd平台初始化服务中(如opx-platform-init.service)。

2.2  平台关闭脚本

在opx_platform_shutdown.sh中有平台关闭脚本的示例

3.     SDI组件可移植性信息

将SDI构件一直到一个新的硬件平台需要做以下两件事情:

3.1.1        Implementing low-level devicedrivers for the new platform - these drivers must implement the SDI API.

3.1.2        根据SDI的实现,如有需要,就为新平台创建SDI配置文件

SDI API定义了以下内容

3.2.1        实体:表示可以被替换或表示为单个单位的物理实体,例如电源单元(PSU),风扇盘,系统板等

3.2.2        资源:表示实体聚合注释(Note)的硬件设备。实体和资源在文件sdi_entity.h,例如 SDI API

SDI实现的示例如下:

3.3.1        Mellanox SDI(https://github.com/open-switch/opx-mlnx-sdi-sys)

3.3.2        用于OPX模拟的SDI-VM(https://github.com/open-switch/opx-sdi-sys-vm)

3.3.3        DELL的SDI实现:由三个合作的子构件做成:

SDI-Sys(https://github.com/open-switch/opx-sdi-sys)

SDI-Framework(https://github.com/open-switch/opx-sdi-framework)

SDI-Drivers(https://github.com/open-switch/opx-sdi-device-drivers)

4.     NPU移植信息

OPX Base目前使用SAI API 0.9.4

4.1 SAI的可移植性——使用兼容的Broadcom NPU

一个broadcom兼容的SAI二进制文件(SAI API 0.9.4兼容)以二进制形式提供。它目前的版本支持Trident-II、Maverick和Tomahawk Broadcom芯片组
您需要创建一个SAI初始化文件(init . xml),这是OPX SAI BCM实现所要求的。该文件包含的参数定义包括:

端口LED信息

逻辑端口描述

每个端口的通道(lanes)数(在分组模式(breakout mode)中对应于逻辑端口)

NPU流(traffic)调度配置

NPU的物理和逻辑端口数量(逻辑端口对应于分组模式)

      在init.xml中有SAI初始化文件示例(https://github.com/open-switch/opx-platform-config/blob/master/vendor/dell/s6000-hw/etc/opx/sai/init.xml)

5.     使用一个新的NPU

移植到新的NPU时您有如下选择:

5.1  获取或实现一个与当前API版本(0.9.4)兼容的SAI实现,用于特定的NPU(也可以选择兼容SAI API 0.9.6和SAI API 1.0,这两个版本将来会得到支持)。

5.2  开发一个独立的NDI API实现(NAS的一部分),以适应与当前SAI API版本不兼容的SAI实现。

5.3  NAS移植信息

dell/s6000/etc/opx中有NAS配置示例

5.4  NAS配置文件

配置文件

描述

base_port_physical_mapping_table.xml

将NPU端口映射到设备前

面板端口,以及每个前端面板端口的各种特性,包括突破模式、速度、默认Linux接口名称、HW NPU端口等。从前面板端口到HW端口的映射基于硬件布局和前端面板端口连接到NPU的端口。

base_qos_init.xml

平台的服务质量(QoS)参数,包括流量类到队列映射、QoS / TC调度程序配置、WRR配置文件等

mac_address_alloc.xml

管理接口和前面板端口的MAC地址分配方案(假设有一个唯一的系统MAC地址作为基础值)

phy_media_default_npu_setting.xml

包括光媒体在内的收发器。

switch.xml

路由器(NPU)配置。这个文件根据NPU的能力定义初始的交换机配置,例如L2,L3和ARP表的大小

5.5  平台支持的统计/计数器配置

Nas_ndi_plat_stat.c文件里面定义了针对特定平台的NPU支持的计数器。这个文件里面定义的每一个平台方法返回支持的计数器列表,包括VLAN接口和物理端口/接口

6.     PAS移植信息

给每一个PAS配置文件创建一个每一个平台的config.xml。这个PAS配置文件定义:

        在CPS框架中注册的PAS对象

        LED组

        轮询间隔

        特定平台支持的收发器类型

这里有一个PAS配置文件的config.xml的例子(https://github.com/open-switch/opx-platform-config/tree/master/vendor/dell/s6000/etc/opx/pas/config.xml)

7.     温度控制

温度控制配置文件在config.json文件中。这个文件的内容是特定于平台的:(需要)创建一个新的文件并且针对目标平台修改它的内容

7.1  为风扇盘单元的风扇定义速度值(在rpm中),定义在正常和反向气流的不同系统级别的psu(如果有的话)的风扇(值)。

正常(气流)指的是从外向内推动空气流动,反向气流指的是将热空气从系统内部吹向外部。一个系统级别为不同的系统风扇定义了风向和风扇速度。

7.2  定义系统中各种传感器的温度阈值,以触发激活给定系统级别。

这里有一个温度控制配置文件的示例(https://github.com/open-switch/opx-platform-config/tree/master/vendor/dell/s6000/etc/opx/env-tmpctl)


你可能感兴趣的:(Openswitch)