路由器操作系統(tǒng)盤點(diǎn):VxWorks、eCos和OpenWRT
很多朋友跟我講,如果不OpenWRT,那這路由就沒法兒用了!非常理解大家對(duì)OpenWRT的熱愛,我做為一個(gè)開源項(xiàng)目的擁護(hù)者和參與者,今天來給大家講講路由器操作系統(tǒng)的哪點(diǎn)事兒。讓大家了解下各種固件的來由。
先來說說現(xiàn)在市面上的各種路由器的固件有哪些種吧。中國(guó)地大物博、奇葩眾多,我國(guó)的無線路由器廠家802.11n的年代里,以價(jià)格這個(gè)永垂不朽的利器將八國(guó)聯(lián)軍全部打夸,造就了一代傳奇。他們使用了很多神器,這里主要有兩個(gè):
VxWorks
VxWorks是美國(guó)風(fēng)河(WindRiver)公司于1983年設(shè)計(jì)開發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),是嵌入式開發(fā)環(huán)境的關(guān)鍵組成部 分。良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域占據(jù)一席之地。VxWorks支持幾乎所有現(xiàn)代市場(chǎng)上的嵌入式 CPU,包括x86系列、MIPS、 PowerPC、Freescale ColdFire、Intel i960、SPARC、SH-4、ARM, StrongARM以及xScale CPU。
國(guó)內(nèi)某廠買下了VxWorks的許可,向某國(guó)際大廠要到了SOC的所有技術(shù)信息,用VxWorks拿下了一片天地。為什么要用VxWorks呢?原 因很簡(jiǎn)單,這東東本身體積小,F(xiàn)lash的成本降下來了,運(yùn)行的RAM成本降下來了。所以賣的價(jià)格也就降下來了。這個(gè)灰常特殊,因?yàn)橹挥幸患覈?guó)內(nèi)某廠和一 家國(guó)際某大廠使用了這個(gè)模式。專事專用,***,完全封閉。
eCos
eCos是一個(gè)由Redhat推出的小型開放源代碼即時(shí)操作系統(tǒng)(Real-Time operating system),***編譯核心可小至10K的級(jí)別,適合用于作bootloader增強(qiáng),微小型系統(tǒng)。
由于低價(jià),所以eCos也就流行了起來,除上面講的某廠外,其它廠受不了低價(jià)的壓力,向上游廠商尋求幫助,所以某些SOC的供應(yīng)商提供了eCos的 SDK。注意:這里是原廠提供了SDK喲。由于eCos的系統(tǒng)小,所以Flash和RAM的需求也就少了,國(guó)內(nèi)眾多低價(jià)產(chǎn)品除了VxWorks就是 eCos為主了。
一般情況下上述兩個(gè)操作系統(tǒng)的無線路由器有幾個(gè)特點(diǎn):
- 減配嚴(yán)重,特別是內(nèi)存和Flash
- 支持客戶端很少,主要是內(nèi)存太少了
- 客戶端少時(shí)運(yùn)行穩(wěn)定,但是客戶端多、流量大時(shí)就容易出問題
- 功能很少
由于它們的特別,我們不再更多說了,但是要告訴大家,上面兩種固件才是我們身邊最多的固件,表因?yàn)樗鼈兲蹙秃鲆暳诉@兩個(gè)操作系統(tǒng)的存在。
由于Linux的功能豐富、開源特性,在過去的某個(gè)年代里,所有的SoC都開始決定將自己的操作系統(tǒng)從落后的XX們轉(zhuǎn)換成為L(zhǎng)INUX,這樣就更高 大上而不顯得哪么土鱉了。也正是因?yàn)檫@樣,2004年才使得OpenWRT出現(xiàn)了,這主要是因?yàn)長(zhǎng)inux的開源協(xié)議。即使都是Linux,也有兩種不同 的情況原廠SDK和OpenWRT及其衍生發(fā)行版。
原廠SDK
我們所知道的BCM、MTK、AR等都是生產(chǎn)SoC(系統(tǒng)芯片,英語:System on Chip,縮寫:SoC)的,之所以在路由器里沒有我們常見到的cpu,哪是因?yàn)檫@樣的SOC里包括了HNAT、快速TCP包計(jì)算等等這樣的硬件加速算法 模塊,同時(shí)在這個(gè)SoC里除了CPU以外還有眾多的接口,比如交換機(jī)、PCI-e、USB等。所有的這些東西要運(yùn)行起來就需要驅(qū)動(dòng)。所以SoC生產(chǎn)廠就在 Linux基礎(chǔ)上進(jìn)行了很多的加工,加入各種驅(qū)動(dòng),為了硬件加速,改kernel的接口。一切的一切都是為了讓Linux能夠支持這個(gè)SoC里的功能。為 了讓最終的路由器生產(chǎn)廠生產(chǎn)及加入自己的功能,原廠都為客戶提供SDK,這個(gè)SDK里就包括了一個(gè)基礎(chǔ)的Linux和編譯軟件的環(huán)境。由于廠商為了讓系統(tǒng) 足夠的穩(wěn)定,現(xiàn)在原廠SDK中的Linux都還在2.6.x的老舊年代。而且原廠的SDK要想得到,就需要和廠商簽署保密協(xié)議和軟件使用許可。所以在互聯(lián) 網(wǎng)上我們一般無法得到原廠SDK的軟件。
OpenWRT
OpenWRT是一個(gè)開源項(xiàng)目,它的出現(xiàn)就是為了讓每個(gè)人都可以有一個(gè)開放的運(yùn)行環(huán)境,并且得到Linux里各種軟件的***時(shí)間的支持。所以 OpenWRT的Linux Kernel非常激進(jìn),但是正是因?yàn)樗みM(jìn),所以在驅(qū)動(dòng)上非常痛苦。OpenWRT的驅(qū)動(dòng)通常是開源社區(qū)的同學(xué)們寫的驅(qū)動(dòng),或是從原廠SDK中的二進(jìn)制移 植。但是由于Kernel的過新,大量加速硬件的驅(qū)動(dòng)都無法移植進(jìn)來。不過還是有眾多的愛好者喜歡OpenWRT,原因很簡(jiǎn)單,它可以高度定制。
從長(zhǎng)遠(yuǎn)來看,基于Linux的操作系統(tǒng)會(huì)越來越多,原因很簡(jiǎn)單:
- 用戶需要路由器跑起來的帶寬越來越大,CPU和SoC中集成的會(huì)越來越多算法,Linux的強(qiáng)大是基礎(chǔ)
- 智能路由器的大浪會(huì)讓越來越多的應(yīng)用跑在路由器上,Linux是好的擴(kuò)展基礎(chǔ)
- 無線設(shè)備越來越多,Linux顯然是好選擇
使用原廠SDK還是OpenWRT呢?這有幾個(gè)不同的情況:
- 如果芯片比較新,OpenWRT必然不是好的選擇,驅(qū)動(dòng)一定是爛的不行更別提其它的硬件加速功能了
- 如果是玩家,需要各種好玩的功能原廠SDK必然不是好選擇,老的libc、少的庫支持,更沒有開放的編譯環(huán)境
綜上所述,表迷信哪個(gè),要找到最適合自己的。
我們創(chuàng)業(yè)做智能路由器時(shí)就OpenWRT和原廠SDK做了很痛苦的掙扎,因?yàn)槭褂玫男酒^新,我們?cè)贠penWRT社區(qū)里折騰很久,最終 OpenWRT發(fā)布了一些支持新的SoC的版本。同時(shí)國(guó)內(nèi)也有人將原廠SDK中的Kernel及驅(qū)動(dòng)移植到了OpenWRT上來運(yùn)行。經(jīng)過大量的測(cè)試,我 們發(fā)現(xiàn)從穩(wěn)定性、高性能上都不能達(dá)到我們的要求。所以最終在果殼路由器上,我們還是使用了原廠的SDK,一方面是因?yàn)槲覀儺吘褂猩虡I(yè)化的***時(shí)間原廠支 持,另一方面我們也認(rèn)為穩(wěn)定、高效是路由器的基礎(chǔ),如果這都做不到,哪么智能也就無從談起了。