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