運(yùn)行在網(wǎng)絡(luò)處理器上的嵌入式Linux系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:網(wǎng)絡(luò)處理器已經(jīng)可能的未來(lái)的多核處理器會(huì)將越來(lái)越多的應(yīng)用在從家庭,企業(yè)到核心網(wǎng)絡(luò)設(shè)備中,LinuxOS正在替代傳統(tǒng)的RTOS運(yùn)行在這些處理器的控制平面,定義和處理好數(shù)據(jù)平面和控制平面的接口,豐富的開源和商業(yè)應(yīng)用軟件和電信級(jí)別的高可能性要求是目前需要解決的重要問(wèn)題。
關(guān)鍵字:網(wǎng)絡(luò)處理器,嵌入式Linux,多核處理器
引言:
在最近的24個(gè)月中,由于供應(yīng)商組織面臨經(jīng)濟(jì)狀況不景氣,加上IntelIXP和IBMPowerNP,Raza,Cavium,Xilinx等公司的網(wǎng)絡(luò)處理器(多核處理器)的出現(xiàn),使得Linux在基于這些處理器設(shè)備的控制和管理層面上有了更多的用武之地。
控制層面包括邏輯和物理接口,它們本身并不傳輸網(wǎng)絡(luò)數(shù)據(jù),而是啟動(dòng),監(jiān)視和控制芯片的傳輸數(shù)據(jù)活動(dòng)。在現(xiàn)有的網(wǎng)絡(luò)處理器設(shè)計(jì)當(dāng)中,像Linux這樣的嵌入式操作系統(tǒng)通常運(yùn)行在控制層面的處理器上,代表包引擎進(jìn)行控制操作和事務(wù)性處理,實(shí)際的網(wǎng)際協(xié)議包(IP包)由專門的芯片進(jìn)行處理。控制層面的處理器和數(shù)據(jù)/轉(zhuǎn)發(fā)層面的包處理引擎之間的連接,可以通過(guò)連接協(xié)處理器的本地總線方式,或者直接使用標(biāo)準(zhǔn)的PCI總線,也可以采用以太網(wǎng)或者特殊應(yīng)用的網(wǎng)絡(luò)結(jié)構(gòu)那樣的連接方式。
在本地總線或者PCI總線的情況下,主控處理器將可將轉(zhuǎn)發(fā)/數(shù)據(jù)層面的處理器視為專用外設(shè),它具有簡(jiǎn)單內(nèi)存映射接口。在采用網(wǎng)絡(luò)方式來(lái)連接各層面的情況下,主控處理器必須使用分離的設(shè)備驅(qū)動(dòng)設(shè)計(jì)。首先,結(jié)構(gòu)接口需要一個(gè)通用的驅(qū)動(dòng)(以太,異步傳輸?shù)龋?,通過(guò)它發(fā)送專門的命令包來(lái)控制包處理器。嵌入式Linux具有豐富的網(wǎng)絡(luò)功能(以太網(wǎng)和ATM在開源社區(qū)都很容易獲得),與非開源操作系統(tǒng)相比具有顯著的優(yōu)點(diǎn):無(wú)須定制,有現(xiàn)成的內(nèi)核。這些對(duì)于開發(fā)專門的網(wǎng)絡(luò)系統(tǒng),即使是以太網(wǎng)驅(qū)動(dòng)都是重要的附加投資。
現(xiàn)成的網(wǎng)絡(luò)處理器一直努力地將高性能網(wǎng)絡(luò)緊密地與主控處理器捆綁,并與本地連接集成到一起。第一代設(shè)計(jì)在控制節(jié)點(diǎn)和數(shù)據(jù)層仍然遇到了帶寬限制的難題-數(shù)據(jù)包在進(jìn)出控制層時(shí)遇到瓶頸,在網(wǎng)絡(luò)處理器內(nèi)部的并行包引擎也有同樣的問(wèn)題。此外,實(shí)踐證明在功能強(qiáng)大的網(wǎng)絡(luò)處理器和復(fù)雜的包引擎集上編程非常困難。網(wǎng)絡(luò)處理器開發(fā)商在他們的芯片開發(fā)計(jì)劃上標(biāo)明了解決這些問(wèn)題和推出新一代的庫(kù)和工具箱的時(shí)間表。
運(yùn)行Linux的網(wǎng)絡(luò)處理器應(yīng)用
主要的設(shè)備制造商將Linux和網(wǎng)絡(luò)處理器一起發(fā)布,同時(shí)不斷增加應(yīng)用的數(shù)量,特別是網(wǎng)絡(luò)基礎(chǔ)件和客戶端設(shè)備。
Linux在網(wǎng)絡(luò)處理器平臺(tái)上的一個(gè)重要應(yīng)用領(lǐng)域是小型辦公,家庭辦公(SOHO)設(shè)計(jì),比如接入點(diǎn),家庭網(wǎng)關(guān)和數(shù)字媒體服務(wù)。這些消費(fèi)電子領(lǐng)域的設(shè)備通常要求高性能和低成本。
許多這樣的設(shè)計(jì)包括先前遺留下來(lái)的實(shí)時(shí)操作系統(tǒng)平臺(tái)。人們對(duì)嵌入式Linux能否滿足這些實(shí)時(shí)性能有些疑問(wèn)。很多控制層面的應(yīng)用,更多地關(guān)注吞吐量,而并沒(méi)有硬實(shí)時(shí)的需求(拋開先前的實(shí)時(shí)操作選擇)。較新的,基于網(wǎng)絡(luò)處理器的設(shè)計(jì)很少對(duì)控制處理器有及時(shí)響應(yīng)的需求,網(wǎng)絡(luò)處理器包含專門的芯片來(lái)完成要求及時(shí)響應(yīng)的操作。當(dāng)控制層面必須滿足嚴(yán)格臨界時(shí)間要求時(shí),比如在消費(fèi)電子應(yīng)用中所使用的路由和橋接到特定的同步接口的技術(shù),在Linux中有多種途徑來(lái)達(dá)到實(shí)時(shí)響應(yīng)的要求,其中包括現(xiàn)在Linux2。6內(nèi)核里所使用的MontaVista軟件公司的可搶占技術(shù)。
在較大型系統(tǒng),比如更復(fù)雜的基于IP的系統(tǒng),包括辦公中心和涉及IP技術(shù)的基礎(chǔ)設(shè)備應(yīng)用系統(tǒng),高速接入和交換,網(wǎng)絡(luò)處理器都采用了有兩層或者更多層控制來(lái)進(jìn)行刀片式設(shè)計(jì),并在其上來(lái)進(jìn)行硬件和軟件的管理。大約60%的這種系統(tǒng)要求在數(shù)據(jù)和控制層面有高級(jí)別的冗余。在這種系統(tǒng)中,基于網(wǎng)絡(luò)處理器的刀片和基于Linux的控制器被當(dāng)成低層的,幾乎是‘原子’性的接口,這些接口從屬于故障恢復(fù)(fail-over),它們堆疊在一起來(lái)獲得高可用性和容錯(cuò)管理。
這些較高層次的管理層面處理器越來(lái)越多地在運(yùn)行Linux,比如開放源碼開發(fā)實(shí)驗(yàn)室公司(OSDL,Beaverton,Ore。)、MontaVista軟件公司、英特公司(SantaClara,Calif。)等定義和實(shí)現(xiàn)的電信級(jí)Linux。這些管理層面的CPU管理可用的資源(比如啟動(dòng)刀片和給他們分配負(fù)載)、響應(yīng)硬件和軟件異常,提供應(yīng)用橋接到專門的系統(tǒng)(常常運(yùn)行Linux)-比如帳單系統(tǒng)和客戶數(shù)據(jù)庫(kù)。
網(wǎng)絡(luò)處理器開發(fā)的技術(shù)挑戰(zhàn)和對(duì)策
對(duì)于多核微處理器來(lái)說(shuō),網(wǎng)絡(luò)處理器面臨著多種開發(fā)和調(diào)試的挑戰(zhàn)。這些挑戰(zhàn)包括以下三個(gè)層次:
·開發(fā)和部署運(yùn)行在網(wǎng)絡(luò)處理器上的代碼和包處理算法;
·定義網(wǎng)絡(luò)處理器和控制處理器之間的接口;
·開發(fā)控制層面的應(yīng)用
對(duì)于運(yùn)行嵌入式Linux的控制層面處理器來(lái)說(shuō),網(wǎng)絡(luò)處理器初看起來(lái)就像一個(gè)巨大、復(fù)雜且未被支持的外設(shè)。在最簡(jiǎn)單的情況下,內(nèi)核啟動(dòng)代碼或者驅(qū)動(dòng)程序初始化代碼中會(huì)對(duì)共享內(nèi)存和寄存器的組合進(jìn)行映射,這些寄存器代表了網(wǎng)絡(luò)處理器在內(nèi)核或用戶內(nèi)存的接口。這樣驅(qū)動(dòng)程序和應(yīng)用程序就可以同網(wǎng)絡(luò)處理器進(jìn)行交互操作。這種映射關(guān)系能夠通過(guò)調(diào)用用戶層的API、或者直接調(diào)用驅(qū)動(dòng)有關(guān)的API來(lái)終止它,或者也可以終止包含一個(gè)分離協(xié)議棧的底部,或者中止建立套接字或者基于流的抽象。。
主要設(shè)備制造商指望Linux平臺(tái)提供商和構(gòu)建不斷增長(zhǎng)的生態(tài)鏈的獨(dú)立軟件提供商,能夠付出努力來(lái)建立網(wǎng)絡(luò)處理器為基礎(chǔ)的網(wǎng)絡(luò)應(yīng)用。這些由獨(dú)立軟件提供商提供的應(yīng)用模塊有以下幾類:
·包處理算法,橋接口和特定的網(wǎng)絡(luò)處理器針對(duì)運(yùn)行在數(shù)據(jù)層面的網(wǎng)絡(luò)引擎開發(fā)工具(包引擎代碼匯編器,仿真器和性能分析器);
·控制和管理層應(yīng)用單元-簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)代理和管理信息(MIBs),Web控制接口等,協(xié)議棧,路由守護(hù)進(jìn)程,控制和數(shù)據(jù)層接口庫(kù);
·用于類似于家庭網(wǎng)關(guān)和安全應(yīng)用這樣特定應(yīng)用的大協(xié)議棧;
·用于Linux的其他系統(tǒng)和應(yīng)用開發(fā)工具。
使用網(wǎng)絡(luò)處理器接口和為嵌入式Linux提供IP的公司包括:AshleyLaurent,Hughes,IPInfusion,LVL7Systems,NextHopTechnologies和Motorola的NetplaneSystems,他們提供棧和庫(kù)。像Intel和IBM這樣的芯片提供商,還有Teja技術(shù)公司這樣的獨(dú)立軟件提供商,他們所提供開發(fā)工具填補(bǔ)了用于特殊網(wǎng)絡(luò)處理器芯片、特定體系結(jié)構(gòu)的開發(fā)工具的空白。
這些大棧支持和實(shí)現(xiàn)了多達(dá)90%的網(wǎng)絡(luò)處理器應(yīng)用,它們可能是平臺(tái)供應(yīng)商的附加產(chǎn)品,也可能是小型軟件供應(yīng)商集成產(chǎn)品。這些棧引起了第二級(jí)和第三級(jí)設(shè)備制造商(OEM)和設(shè)計(jì)制造商(ODM)的興趣,ODM和OEM的唯一差異是他們的商標(biāo)或者是價(jià)格的不同;這就使網(wǎng)絡(luò)設(shè)備制造商在可以預(yù)計(jì)未來(lái)的情況下,繼續(xù)進(jìn)行投資并使得它們自己網(wǎng)絡(luò)處理器上的應(yīng)用不斷升級(jí)。
因?yàn)樵S多網(wǎng)絡(luò)處理器也將JTAG接口集成到控制處理器和包引擎當(dāng)中,在某些情況下,開發(fā)者可以使用像AbatronAG,EmbeddedPerformace、WindRiver以及其它公司提供的通用硬件調(diào)試器來(lái)調(diào)試控制層面的有關(guān)操作,也可以把程序下載到網(wǎng)絡(luò)處理器的包引擎,并和它直接進(jìn)行交互。
網(wǎng)絡(luò)處理器和嵌入式Linux聯(lián)姻后,碩果最多的要數(shù)Intel的IXP425家族與基于Linux的接入和網(wǎng)絡(luò)存儲(chǔ)應(yīng)用棧。比較好的例子是D-Link媒體存儲(chǔ)中心家用設(shè)備。D-Link和其他主要設(shè)備制造商(OEM)充分發(fā)揮了Xscale控制/應(yīng)用處理器和高性能網(wǎng)絡(luò)處理器集成的功能。在D-Link的產(chǎn)品中,臺(tái)灣的OEM制造商以這種硬件為基礎(chǔ)進(jìn)行了開發(fā),使用集成的包處理器能很容易地提供快速和安全的以太和無(wú)線連接。D-Link將這種硬件平臺(tái),與Linux自帶的路由,多種協(xié)議、多種存儲(chǔ)格式能力結(jié)合起來(lái),給消費(fèi)者提供了即插即用的網(wǎng)絡(luò)存儲(chǔ)解決方案。其他最近發(fā)布的基于Linux的網(wǎng)絡(luò)處理器應(yīng)用還包括ThingMagic的RFID系統(tǒng)。
結(jié)束語(yǔ):
將來(lái)由于互連網(wǎng)絡(luò)的發(fā)展將會(huì)有很多針對(duì)家庭,SOHO,企業(yè)和基礎(chǔ)設(shè)施的應(yīng)用和網(wǎng)絡(luò)處理器+LINUXOS密切相關(guān),它們包括接入點(diǎn),有線/無(wú)線存儲(chǔ)解決方案,虛擬網(wǎng)絡(luò),安全應(yīng)用,數(shù)字用戶線路接入多路復(fù)用器和xDSL線卡,網(wǎng)絡(luò)打印機(jī),駐留網(wǎng)關(guān),IP/PBXs,SOHO路由器,還有其他一些支持從OC-3到OC-192高速網(wǎng)絡(luò)的核心/邊緣應(yīng)用。
本文參考了BillWeinberg的文章,他現(xiàn)是OSDL的開源架構(gòu)專家,在OSDL之前是MontaVista市場(chǎng)策略總監(jiān),曾經(jīng)在MicrotecReseach,Lynuxworks等嵌入式軟件公司任職,有近20年的嵌入式軟件的經(jīng)驗(yàn)。