ONIE开源项目

1. 概述

1.1. 项目概述

Open Network Install Environment (ONIE)是一个开源计划,为现代网络硬件定义了一个开放的安装环境。ONIE造就了一个开放的网络硬件生态系统,使得最终用户可以在不同的网络操作系统中进行选择。
在ONIE出现之前,以太网交换机使用预装的专有操作系统,这中网络设备将最终用户锁定到设备的垂直供应链上。
最初,ONIE通过向多个操作系统供应商开放硬件开启了“白盒”和“裸机”网络交换机生态系统。随着时间的推移, ONIE的知名度不断提高,现在ONIE已经成为网络硬件行业的主流安装环境。
现代网络交换机都具有一个管理子系统,该系统基于各种CPU架构,通常包括串行控制台,带外以太网和大容量的存储器。该子系统可以独立于“前面板”以太网接口关联的交换ASIC独立工作。
ONIE定义了一个开源的安装环境,该安装环境运行在这个管理子系统的Linux内核和BusyBox环境上。这个环境允许最终用户和渠道合作伙伴安装目标NOS。
ONIE使得交换机硬件供应商,分销商和经销商能够基于少量的硬件库存管理其操作。反过来又在制造、分销、库存和RMA方面创造了规模经济,从而使得网络硬件和操作系统的替代品得以蓬勃发展。
亮点

  • 将引导加载程序与现代Linux内核和BusyBox结合在一起
  • 提供了一个安装任何NOS的环境
  • 革命性地将用户从预先安装的操作系统中解放出来
  • 帮助实现大规模数据中心交换机的配置自动化
  • 可以像管理Linux服务器一样管理交换机

1.2. 设计概述

完整的设计,请参考设计规格文档。

ONIE是bootloader和一个小型操作系统的组合,该操作系统为网络交换机自动配置提供环境。ONIE使用交换机的控制面CPU,但是不使用转发面,如下图所示:
ONIE开源项目_第1张图片
典型网络交换机CPU组合—ONIE使用其中高亮的部分

1.2.1. 初次系统引导

当一台新设备第一次启动时,ONIE定位到并执行厂商提供的NOS,如下图所示:
ONIE开源项目_第2张图片
执行流程—First Time Boot Up

1.2.2. 后续系统引导

后续系统的每次启动都不使用ONIE。初次引导之后,后面系统启动直接进入NOS,绕过ONIE。如下图所示:
ONIE开源项目_第3张图片
后续开机—NOS安装之后

当然,系统提供了一个重新进入安装阶段的机制。定义了一个API,这样网络操作系统可以提示系统重新进入安装阶段。

1.2.3. 找到安装镜像

ONIE使用多种方法来定位到NOS安装程序的位置,包括但不限于:

  • 通过bootloader进行静态配置
  • 本地连接的存储器,例如USB存储设备
  • DHCPv4/DHCPv6
  • IPv4/IPv6链路本地邻居
  • mDNS/DNS-SD
  • 类似PXE的TFTP和HTTP流程

镜像下载的首选方法是HTTP ,因为它具有较好的性能。TFTP方式也支持,但是不能和HTTP共存。
一旦找到镜像,ONIE就会继续执行NOS的安装流程。

下图举例说明了NOS定位和安装执行过程:
ONIE开源项目_第4张图片
镜像位置确认

在上图中,"Less Exact Methods" 方框指的是使用探测技术来发现NOS的机制,如:

  • IPv4 / IPv6 本地链路邻居
  • 类似于PXE的TFTP和HTTP过程

1.2.4. 安装执行环境

在执行安装程序时,ONIE会导出一些环境变量供安装程序使用。这些变量包括系统标识信息及在镜像发现过程中学习到的信息。
导出给安装程序的信息包括但不限于:

  • 安装程序URL
  • 硬件供应商标识
  • 硬件平台标识
  • 硬件系列号
  • 以太网管理口MAC地址
  • IP地址(DHCP获取)
  • Hostname (DHCP获取)
    这些变量允许安装程序与其他自动化流程进行集成,立即将产品系列号,MAC地址和NOS版本捆绑在一起。
    1.2.5. 安装程序概述
    安装程序负责将操作系统永久地安装到硬件中。为了实现这个功能,兼容ONIE的NOS安装程序具有很大的灵活性。
    安装程序可以实现的一些功能如下:
  • 通过HTTP获取额外的二进制文件和配置文件
  • 通过HTTP与库存控制系统进行交流
  • 下载一个新的kernel+initramfs and kexec(8)

1.2.6. 网络操作系统接口

ONIE为NOS提供了执行系统配置和维护操作的环境,包括:

  • 重新安装不同的NOS
  • 卸载/清除系统
  • 应急和恢复
  • 更新ONIE
  • 更新设备的CPLD/FPGAs及BIOS固件
    这个环境构成了ONIE和NOS的接口。

1.2.7. 更新ONIE

ONIE提供了一个自我升级的机制。这种机制很像网络操作系统的定位和执行阶段,但是这种情况下镜像是ONIE镜像。一旦找到,ONIE镜像就被下载并执行。

1.2.8. 固件升级

ONIE提供了固件升级机制。在这种情况下,固件指的是类似于CPLD/FPGA软件代码及BIOS固件。这种机制就像更新ONIE本身一样,指示镜像换成了固件镜像。一旦找到,镜像就被下载并执行。

2. 下载源码

2.1. 发布版本

已发布的版本可以直接下载使用: opencomputeproject/onie。

2.2. 最新开发版本

可以使用Git从ONIE工程中下载最新的源码:

git clone https://github.com/opencomputeproject/onie.gitss

3. 社区

可以参与ONIE社区开发并保持连续。

3.1. 代码库

浏览源码,问题文件和贡献: opencomputeproject/onie。

3.2. Mailing List

This is a low volume list for questions, comments and general announcements.
Send questions, bugs, comments and ideas to [email protected].
Join the mailing list: http://lists.opencompute.org/mailman/listinfo/opencompute-onie
Browse the archives: http://lists.opencompute.org/pipermail/opencompute-onie

3.3. 贡献

浏览源码,发布并贡献给Github上托管的 ONIE Project。
克隆最新的开发版本:

git clone https://github.com/opencomputeproject/onie.git

3.4. OCP Wiki

参考 OCP ONIE wiki 获取更多的信息。

你可能感兴趣的:(ONIE开源项目)