项目背景:

在存储空间只有几十到几百K字节,CPU的主频几十到一两百MHz左右的资源受限的单片机系统中,开发者可选择的网络协议栈并不多。其中由瑞典计算机科学院(SICS)的Adam Dunkels开发的LwIP在国内知名度最高、应用最广泛,已成为行业内的事实标杆。像OpenHarmony等国产操作系统集成的也是这个协议栈。Onps开源网络协议栈项目旨在为全球开发者提供一个本地化且可靠的开源选择。该项目将打造一个易于使用和理解的开源网络协议栈,帮助更多开发者在单片机系统中实现网络功能的集成和应用。

项目简介:

Onps是一个开源的国产网络协议栈。设计目标与LwIP相同。Onps栈的目标系统同样是资源受限的单片机系统。提供完整的tcp/ip协议族实现,同时提供sntp、dns、ping、telnet、tftp等网络工具,支持动态及静态地址分配,也支持动态及静态路由表。

协议栈简化了传统BSD sockets编程需要的一些繁琐操作,将一些不必要的操作细节改为底层实现,比如select/poll模型、阻塞及非阻塞读写操作等。

为了适应单片机系统对内存使用的苛刻要求,协议栈在设计之初即考虑采用写时零复制(zero copy)技术。用户层数据在向下层协议传递过程中,协议栈采用buf list链表技术将它们链接到一起,直至将其发送出去,均无须任何内存复制操作。

架构设计建立在OpenHarmony、RT-Thread、FreeRTOS之类的操作系统之上,不支持传统前后台模式下的“裸机”系统。项目所属代码仓提供主流操作系统下的适配样例。

与LwIP不同的是,Onps栈将并入OpenHarmony等国产操作系统的技术发展路线中,为国产操作系统提供通用原生网络协议栈解决方案。同时紧跟国内最新通讯技术(如华为星闪)发展,确保协议栈始终保持与时俱进,为用户提供最新、最完善、最优质的网络通讯支持。

协议栈使用ANSI C语言开发。

项目特点和价值:

功能特点: 低资源占用情形下的完整tcp/ip协议族实现,针对资源受限的单片机系统进行了优化设计,尽可能减少代码尺寸、内存占用和处理器负载,使其能够在低性能的硬件平台上高效运行。

技术价值: 原创性,Onps栈并不是其它开源栈的简单模仿与重写,而是通过阅读相关RFC文档,自主设计、实现了完整tcp/ip协议族,零参考、零代码复制其它开源栈。

生态价值: 网络协议栈是核心基础软件的重要一环,该项目将成为基础软件生态健康发展的重要支撑力量。同时因为开源,可以带动相关领域的技术进步和人才培养。

业务价值: 对开发者而言,在应用层面,物联网、智能家居、工业控制等领域尤其需要网络协议栈,onps栈的出现不仅可以满足我国在这些领域的应用需求,还可以促进相关产业的发展和创新。

项目架构:

项目战略规划及目标:

  • 2024年到2025年完成对LwIP的追赶与超越;
  • 2026年中发布rust重构版本协议栈,以有效提升内存及线程安全和通讯性能;
  • 并入OpenHarmony技术路线,为LiteOS-A内核定制开发侧重性能的“富”资源平台下的网络协议栈;
  • 支持工业以太网,2025年发布面向运动控制的通讯协议栈EtherCAT;