自从1991年Linux第一次面世以来,任何人也不会想到这个不起眼的操作系统现在会应用得如此广泛。无论是从嵌入式领域的智能手机到大型计算服务器都可以找到它的身影,而且无论什么工作它都完成得非常出色,因为Linux的开放性决定了其自身可以根据使用领域而高度定制。作为一个开源软件,当前业界的工业标准可以最快地支持任何刚发布的硬件产品。同时,被世界各地的商业公司和志愿者一起参与开发和测试,它也变成了十分稳定的操作系统之一。
Linux的设计原则决定了它的无所不能,但是对于特定领域它并不是最优的解决方案。同样对于嵌入式电信领域来说,为了追求满足电信领域的高实时性和高吞吐量要求,大家一般都采用传统的RTOS+Linux+运行环境。
在传统架构中(参见图1),数据面处理采用RTOS+CPU/DSP方式,主要处理底层协议数据业务,通过RTOS的高实时性及多核CPU/DSP来达到性能需求。Linux自身的实时性较差,但是比较适合于高负载的复杂协议处理,因此一般用于完成用户控制平面协议的处理和IP转发等功能。这个方案在性能上可以保证电信产品的使用需求,但系统中存在多个处理器和多个不同操作系统平台,对于用户的维护和后续升级管理带来很大负担,同时也无法满足当前的低成本和低功耗要求。
图1:典型的电信基站系统结构图
随着近年来处理器硬件技术的飞速发展,处理器的能力越来越强,多核平台已经广泛地应用在电信领域,尤其是在ARM公司将 Cortex A15引入电信基站领域后,整合单芯片解决方案将成为业界主流。但是软件领域的发展相对滞后,尤其是如何在SoC单芯片硬件环境下保证用户已有成熟业务软件的继承使用,是每一个电信设备制造商关心的问题。
最简单的解决方案是如图2将Linux和RTOS按照AMP方式独立运行在多核CPU的不同核上。这种方案可以保证高实时能力,同时可以避免用户应用软件的修改。但是该方案最大的问题是两个操作系统要求在硬件资源使用上独占,需要在使用前静态分配好,系统运行后则无法动态分配,没有办法做到资源共享。同一个硬件环境下同时运行两个独立的系统也带来了运行安全方面的隐患。综上所述,AMP方案前期设计简单,方便于先前成熟软件集成,但是后期维护成本较高,同时造成了硬件资源的浪费。
图2:AMP解决方案架构图
Linux KVM是基于Linux内核的虚拟机制,通过KVM可以在其上虚拟出原有RTOS所需要的运行环境(参见图3)。例如我们可以将原有业务软件以及原有的RTOS一同移植到KVM的虚拟环境中,这种方式对业务应用软件不需要任何修改。同时,整个系统硬件资源也由Linux统一分配,相对AMP方案避免了硬件资源的浪费。KVM机制可以做到系统的安全隔离,保证了电信系统的运行安全。但是该方案存在实时性较差(尤其是运行在Linux内核上RTOS的实时性),很难应用于电信协议等时隙要求较高的场合。
图3:Linux KVM解决方案
如何在Linux基础上提供更加高效的实时处理能力,同时又简化多操作系统并存带来的软件复杂性?为此,Enea(宜能)公司在用户空间实现了LWRT(Light-weight Run-time Threading,轻量级运行环境)。LWRT是针对多核使用场景设计的,它基于Linux用户空间的标准Pthread作为运行载体,并在此基础上实现了可确定的调度方式、信号机制和内存管理。通过这种方式,LWRT内部的线程切换和信号处理不再依靠Linux内核调度机制,而是完全在用户态的LWRT内部实现。这在减少系统开销的同时,也实现了严格意义上的实时切换。图4描述了基于LWRT电信基站软件架构。
图4:LWRT多核解决方案
为了保证整个LWRT的实时性,我们需要将其承载的容器Linux Pthread绑定到一个物理内核上,通过这种方式使LWRT像单独运行在这个物理内核的传统RTOS一样。同时,我们在LWRT上设计了用户态中断处理模型,将整个中断处理过程放在用户态进行。在Linux内核只需要在上半部中向LWRT发出中断信号,而所有的下半部处理完全实现在用户态的LWRT中。整个中断处理不再有内核互斥锁的影响,从而保证了高实时处理能力。
先进的设计保证了高效的性能,在一个实际测试环境中对于一个简单的"信号触发-线程切换-信号接收"的线程切换模型,LWRT可以在不超过200个周期内完成,且该数据不会随着CPU占用率增高而受到影响,而在同一硬件条件下,采用Linux标准线程完成同样的切换动作需要大约3500个时钟周期,测试解决见图5.整个切换过程达到了高实时性要求。Linux上将不再只是运行控制面代码,用户完全可以将数据面处理迁移到Linux上。基于这种方案我们将不再需要RTOS,而是将RTOS的功能基于LWRT来提供。
图5:LWRT线程切换和Pthread线程切换对比
目前整个电信领域向IP化发展,针对于IP数据处理,Enea实现了PAX(数据包加速基础)解决方案。PAX同样运行在Linux的用户态。
它实现了基于图形方式现实的IP报文分析处理流程,在PAX中可以完成IP转发、IPSec、流量控制和ARP/WLAN网桥,以及数据包检查DPI等IP通讯中最消耗资源的处理。针对于数据面的这些处理过程不再依赖于原有Linux内核IP协议栈实现,而是由PAX及其相关的硬件加速器一起完成。这样便将原有Linux IP转发能力提高数倍,而非常适合于可扩展、高吞吐量和低时延的IP协议处理,尤其适用于基于IP的无线基站、控制器、智能防火墙、入侵检测系统和防病毒扫描网关等产品中。同时,PAX提供的图像化追踪(tracing)和分析(profiling)功能可以方面用户找出系统瓶颈所在,进行针对性优化。
图6:PAX数据处理流程图
电信级应用对产品的可靠性和稳定性的要求极高,为此Enea将多年成熟的软件开发流程引入了Linux的开发和维护中。这样保证了所有用户的可选软件包都是在不同硬件平台下严格验证过的。作为开源社区成员,我们也密切监视开源社区的安全漏洞和Bugfix修复情况,并在全面验证后将其纳入Enea Linux产品中。为了更好地保护用户在软件领域的投资,在Enea Linux的升级版本中可以保证Enea IPR的向后兼容。这将确保对每一个硬件平台的Linux内核进行长期支持。另外,所有目标平台均采用Linux 3.0.x系列内核,并且每18个月更新一次内核版本。根据与客户达成的协议,Enea也可更加频繁地更新内核版本。
在Enea Linux提供的开发工具中,用户依然可以找到熟悉的Opitma调试分析工具。这缩短了用户学习新开发工具的时间,同时也集成了LTTng、oProfile、Gcov&gprof、valgrind等常用开源分析工具和Qemu主机仿真环境。
Enea作为一家全球领先的3G和4G基础架构操作系统解决方案供应商,拥有40年通信驱动产品解决方案研发经验,同时,Enea也是高可靠性和性能要求极高的软件平台开发的全球引领者。Enea在实时操作系统和高可靠性中间件方面,必将会将其具有的丰富经验分享给客户,解决客户面临的问题。并且在成就客户的同时,实现自己的价值也是Enea公司一直追求的不变承诺。