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