基于單Linux的電信基站軟件設(shè)計
自從1991年Linux第一次面世以來,任何人也不會想到這個不起眼的操作系統(tǒng)現(xiàn)在會應(yīng)用得如此廣泛。無論是從嵌入式領(lǐng)域的智能手機到大型計算服務(wù)器都可以找到它的身影,而且無論什么工作它都完成得非常出色,因為Linux的開放性決定了其自身可以根據(jù)使用領(lǐng)域而高度定制。作為一個開源軟件,當(dāng)前業(yè)界的工業(yè)標(biāo)準(zhǔn)可以最快地支持任何剛發(fā)布的硬件產(chǎn)品。同時,被世界各地的商業(yè)公司和志愿者一起參與開發(fā)和測試,它也變成了十分穩(wěn)定的操作系統(tǒng)之一。
Linux的設(shè)計原則決定了它的無所不能,但是對于特定領(lǐng)域它并不是最優(yōu)的解決方案。同樣對于嵌入式電信領(lǐng)域來說,為了追求滿足電信領(lǐng)域的高實時性和高吞吐量要求,大家一般都采用傳統(tǒng)的RTOS+Linux+運行環(huán)境。
在傳統(tǒng)架構(gòu)中(參見圖1),數(shù)據(jù)面處理采用RTOS+CPU/DSP方式,主要處理底層協(xié)議數(shù)據(jù)業(yè)務(wù),通過RTOS的高實時性及多核CPU/DSP來達到性能需求。Linux自身的實時性較差,但是比較適合于高負載的復(fù)雜協(xié)議處理,因此一般用于完成用戶控制平面協(xié)議的處理和IP轉(zhuǎn)發(fā)等功能。這個方案在性能上可以保證電信產(chǎn)品的使用需求,但系統(tǒng)中存在多個處理器和多個不同操作系統(tǒng)平臺,對于用戶的維護和后續(xù)升級管理帶來很大負擔(dān),同時也無法滿足當(dāng)前的低成本和低功耗要求。
圖1:典型的電信基站系統(tǒng)結(jié)構(gòu)圖
隨著近年來處理器硬件技術(shù)的飛速發(fā)展,處理器的能力越來越強,多核平臺已經(jīng)廣泛地應(yīng)用在電信領(lǐng)域,尤其是在ARM公司將 Cortex A15引入電信基站領(lǐng)域后,整合單芯片解決方案將成為業(yè)界主流。但是軟件領(lǐng)域的發(fā)展相對滯后,尤其是如何在SoC單芯片硬件環(huán)境下保證用戶已有成熟業(yè)務(wù)軟件的繼承使用,是每一個電信設(shè)備制造商關(guān)心的問題。
最簡單的解決方案是如圖2將Linux和RTOS按照AMP方式獨立運行在多核CPU的不同核上。這種方案可以保證高實時能力,同時可以避免用戶應(yīng)用軟件的修改。但是該方案最大的問題是兩個操作系統(tǒng)要求在硬件資源使用上獨占,需要在使用前靜態(tài)分配好,系統(tǒng)運行后則無法動態(tài)分配,沒有辦法做到資源共享。同一個硬件環(huán)境下同時運行兩個獨立的系統(tǒng)也帶來了運行安全方面的隱患。綜上所述,AMP方案前期設(shè)計簡單,方便于先前成熟軟件集成,但是后期維護成本較高,同時造成了硬件資源的浪費。
圖2:AMP解決方案架構(gòu)圖
Linux KVM是基于Linux內(nèi)核的虛擬機制,通過KVM可以在其上虛擬出原有RTOS所需要的運行環(huán)境(參見圖3)。例如我們可以將原有業(yè)務(wù)軟件以及原有的RTOS一同移植到KVM的虛擬環(huán)境中,這種方式對業(yè)務(wù)應(yīng)用軟件不需要任何修改。同時,整個系統(tǒng)硬件資源也由Linux統(tǒng)一分配,相對AMP方案避免了硬件資源的浪費。KVM機制可以做到系統(tǒng)的安全隔離,保證了電信系統(tǒng)的運行安全。但是該方案存在實時性較差(尤其是運行在Linux內(nèi)核上RTOS的實時性),很難應(yīng)用于電信協(xié)議等時隙要求較高的場合。
圖3:Linux KVM解決方案
如何在Linux基礎(chǔ)上提供更加高效的實時處理能力,同時又簡化多操作系統(tǒng)并存帶來的軟件復(fù)雜性?為此,Enea(宜能)公司在用戶空間實現(xiàn)了LWRT(Light-weight Run-time Threading,輕量級運行環(huán)境)。LWRT是針對多核使用場景設(shè)計的,它基于Linux用戶空間的標(biāo)準(zhǔn)Pthread作為運行載體,并在此基礎(chǔ)上實現(xiàn)了可確定的調(diào)度方式、信號機制和內(nèi)存管理。通過這種方式,LWRT內(nèi)部的線程切換和信號處理不再依靠Linux內(nèi)核調(diào)度機制,而是完全在用戶態(tài)的LWRT內(nèi)部實現(xiàn)。這在減少系統(tǒng)開銷的同時,也實現(xiàn)了嚴格意義上的實時切換。圖4描述了基于LWRT電信基站軟件架構(gòu)。
圖4:LWRT多核解決方案
為了保證整個LWRT的實時性,我們需要將其承載的容器Linux Pthread綁定到一個物理內(nèi)核上,通過這種方式使LWRT像單獨運行在這個物理內(nèi)核的傳統(tǒng)RTOS一樣。同時,我們在LWRT上設(shè)計了用戶態(tài)中斷處理模型,將整個中斷處理過程放在用戶態(tài)進行。在Linux內(nèi)核只需要在上半部中向LWRT發(fā)出中斷信號,而所有的下半部處理完全實現(xiàn)在用戶態(tài)的LWRT中。整個中斷處理不再有內(nèi)核互斥鎖的影響,從而保證了高實時處理能力。
先進的設(shè)計保證了高效的性能,在一個實際測試環(huán)境中對于一個簡單的信號觸發(fā)-線程切換-信號接收的線程切換模型,LWRT可以在不超過200個周期內(nèi)完成,且該數(shù)據(jù)不會隨著CPU占用率增高而受到影響,而在同一硬件條件下,采用Linux標(biāo)準(zhǔn)線程完成同樣的切換動作需要大約3500個時鐘周期,測試解決見圖5.整個切換過程達到了高實時性要求。Linux上將不再只是運行控制面代碼,用戶完全可以將數(shù)據(jù)面處理遷移到Linux上?;谶@種方案我們將不再需要RTOS,而是將RTOS的功能基于LWRT來提供。
圖5:LWRT線程切換和Pthread線程切換對比
目前整個電信領(lǐng)域向IP化發(fā)展,針對于IP數(shù)據(jù)處理,Enea實現(xiàn)了PAX(數(shù)據(jù)包加速基礎(chǔ))解決方案。PAX同樣運行在Linux的用戶態(tài)。
它實現(xiàn)了基于圖形方式現(xiàn)實的IP報文分析處理流程,在PAX中可以完成IP轉(zhuǎn)發(fā)、IPSec、流量控制和ARP/WLAN網(wǎng)橋,以及數(shù)據(jù)包檢查DPI等IP通訊中最消耗資源的處理。針對于數(shù)據(jù)面的這些處理過程不再依賴于原有Linux內(nèi)核IP協(xié)議棧實現(xiàn),而是由PAX及其相關(guān)的硬件加速器一起完成。這樣便將原有Linux IP轉(zhuǎn)發(fā)能力提高數(shù)倍,而非常適合于可擴展、高吞吐量和低時延的IP協(xié)議處理,尤其適用于基于IP的無線基站、控制器、智能防火墻、入侵檢測系統(tǒng)和防病毒掃描網(wǎng)關(guān)等產(chǎn)品中。同時,PAX提供的圖像化追蹤(tracing)和分析(profiling)功能可以方面用戶找出系統(tǒng)瓶頸所在,進行針對性優(yōu)化。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論