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. 设计概述
完整的设计,请参考设计规格文档。
1.2.1. 初次系统引导
当一台新设备第一次启动时,ONIE定位到并执行厂商提供的NOS,如下图所示: 执行流程—First Time Boot Up1.2.2. 后续系统引导
后续系统的每次启动都不使用ONIE。初次引导之后,后面系统启动直接进入NOS,绕过ONIE。如下图所示: 后续开机—NOS安装之后当然,系统提供了一个重新进入安装阶段的机制。定义了一个API,这样网络操作系统可以提示系统重新进入安装阶段。
1.2.3. 找到安装镜像
ONIE使用多种方法来定位到NOS安装程序的位置,包括但不限于:
- 通过bootloader进行静态配置
- 本地连接的存储器,例如USB存储设备
- DHCPv4/DHCPv6
- IPv4/IPv6链路本地邻居
- mDNS/DNS-SD
- 类似PXE的TFTP和HTTP流程
镜像下载的首选方法是HTTP ,因为它具有较好的性能。TFTP方式也支持,但是不能和HTTP共存。
一旦找到镜像,ONIE就会继续执行NOS的安装流程。
在上图中,"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 opencompute-onie@lists.opencompute.org.
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 获取更多的信息。
网友评论