ONL(Open Network Linux)是一个为OCP/开放网络硬件设计和测试的Linux发行版及开发平台,作为OCP网络子项目,是开放计算项目(OCP)的参考网络操作系统。ONL提供速度、自由和经济性,已被超大规模提供商、服务提供商、主流企业和SaaS/云服务提供商等数百家数据中心组织采用。
ONL基本设计目标
- 支持多架构(X86_64、PowerPC、ARM32、ARM64)
- 提供状态化和非状态化管理模型
- 支持多形态平台
- 可品牌化和可定制化
- 设计为构建其他NOS的广泛基础层
ONL NOS的解剖学
- Linux内核(当前支持3.16、4.9或4.14 LTS基础)
- Loader Initrd
- 基于Debian的用户区
- ONL平台API
ONL内核
- 内核来源或配置更改不被鼓励,仅针对ON自定义硬件或SOC进行必要补丁应用
- 平台内核驱动程序作为可加载模块开发,隔离且仅在预定平台加载
装载机
- 传统初始运行环境(initrd),支持NOS选择
- 决定启动系统的方式,包括本地文件系统、本地交换机映像或下载交换机映像
根文件系统
- 基于可选的Debian发行版
- 结合Debian预构建包仓库、定制ONL系统包和用户软件构建
部署模型
- 有状态/传统:根文件系统安装于本地持久介质,配置更改永久性
- 无状态:通过交换机映像(SWI)部署,SWI为squashfs格式,结合overlayfs提供内存中可读写根文件系统
- Switch映像优势:
- 所有开关以相同状态启动
- 轻松支持集中式车队管理
- 升级或回滚简单
- 修改错误非破坏性
- 可网络动态交付
ONL平台API
- 提供统一应用框架,支持多平台硬件操作(自定义寄存器、CPLD、I2C总线树等)
- 编写应用程序可动态移植于所有支持平台
ONL构建环境
- 以预配置Docker容器形式提供,包含构建工具链、交叉编译器和开发者包
资源链接
- ONL OCP Wiki: https://www.opencompute.org/wiki/Networking/ONL
- Big Switch Solutions: https://www.bigswitch.com/solutions/technology/open-network-linux
- Github上的ONL: https://github.com/opencomputeproject/OpenNetworkLinux
- ONL文档: http://opencomputeproject.github.io/OpenNetworkLinux/
- ONL平台HCL: http://opennetlinux.org/hcl
- ONL主页: http://opennetlinux.org/