物聯網操作系統HelloX V1.82發佈公告

物聯網操作系統HelloX V1.82發佈公告

經過HelloX開發團隊近半年的努力,在HelloX V1.81版本基礎上,增加許多功能特性,並對V1.81版本的一些特性進行了進一步優化之後,正式形成HelloX V1.82測試版本。經相對充分的測試和驗證之後,現正式發佈。相關代碼,已全部上載到github上(github.com/hellox-project/HelloX_OS),歡迎對HelloX感興趣的朋友下載測試和試用,並進一步反饋問題。

HelloX V1.82主要功能簡介

除繼續保持V1.81所有特性之外,V1.82版本主要對下列特性進行了支持或優化:

1.        實現了完整且豐富的網絡功能,包括以太網交換,IP路由,網絡地址轉換(NAT),PPPoE寬帶撥號,DHCP Server,安全訪問策略和防火牆等功能。可以基於HelloX實現完整的寬帶接入路由器;

2.        V1.82版本還支持多種以太網驅動,包括對PCNet,Realtek 8111,Realtek 8152等網卡的驅動支持。其中Realtek 8152是一款USB轉Ethernet接口芯片。只要你的計算機有USB接口,就可以通過購買基於該款芯片的USB/以太網轉接模塊,輕鬆連接網絡;

3.        進一步加強和優化了Samsung的JavaScript引擎-JerryScript。這使得HelloX可以支持JavaScript編程,而JavaScript被認爲是物聯網時代的主要應用編程語言;

4.        增加了更加豐富和完整的調試與診斷手段,包括日誌輸出功能,異常情況下的調試信息輸出功能,以及內存申請跟蹤等功能。當前的內核,已經很少出現異常情況。萬一出現異常,通過分析上述手段輸出的信息,可以快速定位問題。

HelloX V1.82編譯後的可執行文件大小,包括內核,網絡功能,用戶命令行界面,文件系統,各類驅動程序等,在500K左右,可滿足大多數嵌入式硬件的要求。而JerryScript等程序,則以外部可執行文件的方式存在,可以存放在外部存儲介質如USB stick或者SD card上,按需加載和卸載。

HelloX V1.82網絡功能介紹

HelloX V1.82的網絡功能具有安全,高效等特點,主要表現在下列幾個點上:

1.   爲了確保安全,HelloX的IP協議棧關閉了所有的服務端口。絕大多數網絡安全問題,是由於操作系統默認開放的服務端口導致。比如,大多數路由器上運行的操作系統,都會開放80號端口,作爲路由器配置的服務端。這樣該端口一旦被掃描到,攻擊者就可以發送大量的TCP連接和HTTP請求,對目標進行攻擊。由於這些攻擊報文都是合法的請求,路由器不得不正常進行處理,最終會導致CPU忙於應付攻擊而無法轉發正常的用戶報文,從而停止響應。而HelloX V1.82版本不開放任何端口,採用命令行或者遠程服務器方式(HelloX作爲客戶端,使用隨機端口連接遠端配置服務器)進行配置,從而避免了這種威脅;

2.   與此同時,HelloX V1.82的NAT功能,只允許從內部網絡訪問外部網絡,也就是說,只有通過HelloX的DHCP Server獲取到IP地址的設備,才允許訪問到Internet。任何試圖從Internet訪問內部網絡,都會被HelloX所攔截掉;

3.   網絡地址轉換(NAT)功能的最大挑戰,就是如何組織NAT表項,以確保IP報文的修改和轉發效率。一臺訪問Internet的個人計算機可以產生數千條NAT表項,如果採用鏈表或者數組方式來組織,採用線性查找算法,則查找時間會非常長,導致整體轉發效率大大降低。HelloX採用Radix Tree加Hash表的方式來組織NAT轉換表項,在大多數情況下,不管NAT表項的數量有多少,只需要查找8次,就可以找到匹配的NAT表項。同時,HelloX根據不同網絡協議的交互過程,來最大可能的降低NAT表項數量。比如,HelloX會跟蹤TCP會話的狀態,在TCP數據傳輸結束(TCP會話的兩端都發送FIN比特)時,立即刪除對應的NAT表項,而不用等到超時。這些措施綜合起來,可以保證NAT功能的整體效率;

4.   HelloX的DHCP Server功能,會記錄分配給每臺計算機的IP地址。即使計算機從網絡上斷開,在下一次接入網絡時,HelloX也會查找內部數據庫,爲該計算機分配原來的IP地址(只要該IP地址沒有被重新分配出去)。這樣可以確保計算機永遠使用相同的IP地址,這在物聯網的應用中尤其重要。另外,HelloX的DHCP Server功能還可以對終端的身份進行驗證,只有記錄在案的終端,才能獲得IP地址,這樣可有效防止非法接入,從而確保整個網絡的安全。在物聯網時代,非法接入是常見的安全威脅,這種驗證機制可以降低非法接入造成的不良後果;

5.   HelloX的IP協議棧代碼,移植了業界常熟的lwIP協議棧。但是lwIP協議棧只保證了IP協議的功能正確,其性能是很差的。比如,lwIP協議棧採用消息隊列來傳遞IP報文,一個IP報文對應消息隊列中的一個元素。一次線程調度,只處理一個消息(也就是一個IP報文),在大量IP報文同時到達時,就出現丟包或處理不及時問題。HelloX對這個機制進行了修改,採用消息隊列加報文隊列結合的方式對IP報文進行處理。對於批量到達的IP報文,HelloX會把這些報文全部放到報文隊列中,然後只發送一個消息,通知TCP/IP線程去處理。一旦TCP/IP線程得到調度,就會連續處理報文隊列中的所有報文,而不是隻處理一個報文。這種機制大大的提升了整體吞吐量。比如,採用消息隊列方式,在下載大文件或者看網絡視頻時,丟包率達到50%以上,視頻卡頓得無法觀看。採用上述機制優化之後,丟包率爲0,視頻流程。還有其它大量的優化,限於篇幅,不做詳細說明。總之,HelloX把面向低端低性能應用的lwIP協議,優化成了高性能高可靠,可以適應任何應用場景(從G比特吞吐量的路由器,到低端嵌入式設備)的IP協議棧。

需要說明的是,HelloXV1.82的網絡功能,只有基礎IP協議棧是基於lwIP協議進行移植和優化的,NAT,DHCP Server,IP路由功能,以太網交換功能等主要的網絡功能,都是完全自主開發的代碼,lwIP協議棧目前尚不具備這些功能。

除此之外,HelloX的網絡功能還具備可擴展可伸縮的特點,可以很容易的增加新的網絡協議和網絡功能。比如,可以通過增加一個協議對象的方式,很容易的增加IPv6支持。而這種新增加的功能,不會對原有功能帶來任何影響。

在HelloX V1.82版本的開發過程中,我們始終堅持“穩定可靠,不留問題死角,可直接應用”爲原則,所有代碼都經過了詳細深入的內部測試。爲了測試HelloX的網絡功能,我專門用一臺筆記本電腦加一個無線AP,搭建了一個家庭寬帶路由器(物理圖和邏輯圖如下),並連續使用了將近一個星期(期間因爲斷電,有過幾次重啓),體驗與普通路由器沒有任何差別。



注:HelloX運行在一臺筆記本電腦上,通過兩個RealtekR8152 USB網卡,分別連接運營商網絡和無線AP。其中無線AP只是做WLAN和有線之間的轉換,沒有任何網絡功能。HelloX通過PPPoE撥號方式,接入運營商網絡。在連接無線AP的接口上,啓用DHCP Server功能,同時HelloX啓用NAT功能。手機和電腦等終端設備,通過AP提供的WLAN信號,接入到HelloX GW,HelloX爲這些終端分配IP地址(192.168開頭的保留IP地址)及DNS服務器。通過HelloX的NAT功能,終端設備可訪問Internet。

HelloX後續會針對新的網絡發展,比如IPv6,5G等,對網絡功能做進一步的增強。同時也會進一步引入業界先進的網絡架構和新技術,比如SDN(軟件定義網絡),新的網絡安全技術,打造一個兼容現有的路由器功能,同時面向物聯網應用的軟件平臺。這個軟件平臺完全開源,並始終保持安全,高效,靈活等特點,立足中國,面向全球,爲人類的信息化建設增磚添瓦。

HelloX V1.82 JavaScript執行引擎介紹

在HelloX V1.81版本中,已經引入面向嵌入式JavaScript的執行引擎-JerryScript。JerryScript是SANSUNG公司主導開發的一個面向物聯網和嵌入式應用的JS執行引擎,具備代碼開源,執行高效,佔用資源少等特點。

在HelloX操作系統中,JerryScript解釋引擎被編譯成一個外部可執行模塊,並保存在外部存儲介質中。需要時,通過loadapp命令,加載到內存中執行。我們編寫了一個簡單的JavaScript執行shell,執行”loadappjerryvm.exe”之後,即可加載JerryScript並啓動這個shell。程序員可以編寫JavaScript腳本,完成之後,按下“Ctrl + Z”組合鍵,即可執行剛剛編寫的代碼。要退出這個shell,只需按下”Ctrl + C”組合鍵即可。

爲了便於體驗和測試HelloX的JavaScript功能,我們專門製作了一個虛擬硬盤文件(/bin目錄下,vdisk.vhd壓縮文件)。感興趣的朋友可以直接把這個虛擬硬盤掛接到虛擬機上(比如VirtualBox),引導運行即可。下圖示意了一個簡單的JavaScript開發截屏:

 

需要說明的是,對JavaScript的支持,只是HelloX支持物聯網應用開發的手段之一。並不是所有的物聯網應用都適合用JavaScript開發,畢竟這是一種解釋型語言,執行效率和實時性是其軟肋。作爲一個全棧的操作系統,HelloX可以提供多層次的API或者機制,來滿足幾乎所有物聯網應用的開發。比如,爲了適應實時性開發的要求,HelloX可以直接提供C語言開發接口。而僅僅提供JavaScript語言開發的環境,顯然無法具備這種能力。

HelloX進一步的開發方向

作爲物聯網操作系統,HelloX將始終聚焦物聯網領域的應用,爲物聯網量身定製一套最優的系統軟件解決方案。我們認爲,只有一個內核的支撐,是遠遠不夠的。物聯網和智能硬件的有效發展和壯大,需要更多技術的支持,比如人工智能,分佈式計算,機器學習,等等。但一個穩定可靠和可擴展的物聯網操作系統,是這些技術的最好生存土壤。

同時我們認爲,物聯網中的一個關鍵組件將會是物聯網接入網關。不論是哪種應用場景,物聯網網關將是物聯網世界連接用戶或者真實世界的最核心角色。因此,後續HelloX會首先瞄準這一個物聯網應用場景,進行深入耕耘。物聯網網關首先是一個更安全和高效的寬帶接入網關,同時具備支撐物聯網應用的能力。下圖示意了我們對物聯網網關的理解:


物聯網網關並不是孤立存在的,而是需要AI平臺,大數據平臺,物聯網設備管理平臺等一系列後端平臺的支撐,共同組成一個面向物與物互聯和協同的數字神經。我們的目標,就是構築這樣一套數字神經。

俗語有云:“難事必做於易,大事必做於細”。HelloX操作系統當前的主要應用目標,定位於物聯網網關,但是要真正做出特色,做出價值,還是要從一些具體的功能入手,來打開缺口。經過與行業內一些人士交流之後,我們決定,HelloX的下一個版本將在下列功能領域進行進一步增強和開發:

操作系統內核

我們認爲,物聯網網關與現有的寬帶接入網關不同。現有的寬帶接入網關,強調的是網絡處理和轉發能力,只是作爲一個路由器存在,其計算能力非常有限。但是到了物聯網時代,網關的功能將在需求驅動下,功能和處理能力將呈指數級增強。首先,邊緣計算能力(Edge Computing)會被加入到物聯網網關中,負責網關所轄區域內的計算任務,比如AI建模和訓練,複雜的邏輯推斷,龐大的樹或者圖遍歷(大於1萬個節點),等等。同時,邊緣網關還將面對各種各樣不同廠商,不同功能的物聯網終端設備,每個設備都可能會有自己獨立的處理任務。

爲了適應這種情況,我們需要對HelloX的內核做進一步優化,甚至是重構。比如,當前HelloX內核只支持單核CPU,將來需要支持多核CPU,核的數量會有很大幅度的變動,可以從4個一直變化到數百個。對內存管理算法和機制,也有非常大的優化空間。現在是基於空閒鏈表算法來管理內存,在內存塊數量急劇上升(達到十萬級別)的時候,分配和釋放效率都會出現下降。還有其它諸多的優化或者重構的方面,在此不做贅述。

總之,我們的目標是,下一個版本的HelloX的內核,其內核併發效率,實時性,簡潔性和安全性等,將超越Linux和大多數操作系統。

構築面向未來的網絡協議棧

未來將對HelloX的網絡協議棧做進一步增強和重構,開發一個業界獨創,面向未來的網絡協議棧。主要包括下列方面:

1.   同時支持IPv6和IPv4協議,能夠按照用戶的需求,同時高效處理這兩種IP協議。我們要設計一種全新的協議架構,設計一套通用的數據結構,同時爲IPv4和IPv6兩種協議所用,而不是像現在的大多數實現一樣,IPv4和IPv6相互隔離,沒有交互;

2.   進一步增強網絡的安全,充分吸收新的網絡架構和技術,比如SDN等,來做到最大限度的安全。我們認爲,未來的網絡安全,怎麼強調都不過分。而一個自主和全新的網絡架構,可以甩掉長期積累的包袱,輕裝上陣,滿足未來網絡和信息系統的需要;

3.   在支撐網絡的基礎算法和數據結構有創新,滿足未來網絡的性能需要。比如融合IPv4和IPv6的路由查找算法,網絡報文DPI深度解析算法等等,以期達到業界頂尖水平。

總之,我們的定位是,下一個版本的HelloX,其網絡協議棧的安全,效率,架構等方面,將達到業界頂第一的水平。

基於JavaScript,構築一套全新的物聯網開發框架

現在有很多物聯網開發框架,比如IoTivity,三星主導的IoT.js等。這些框架都是基於企業開發框架來衍生或者設計的,我們認爲並不能很好的適應物聯網的本質特徵,無法對物聯網的發展啓動助推作用。

我們計劃,基於JavaScript語言,構築一套全新的,分三個層級的物聯網開發框架。通過充分的抽象和模型建立,形成一套基礎的物聯網模型庫。基於這一套基礎模型庫,進一步派生出二級面向具體行業的模型庫,可以成爲Tier 2模型庫。進一步地,基於Tier 2模型庫,進一步派生出某個行業內的物聯網模型。這樣某個行業內的具體應用,就可以快速和直接地引用這些行業特定模型,或者對這些模型進行派生和擴展,快速高效的開發出獨立於運行硬件和運行軟件環境的物聯網應用。

總之,我們的定位很高,但不是盲目定位,而是基於已有HelloX的代碼和成果,以及前期探索的基礎上,做出的可以預期達到的定位。這些功能和特性開發完畢之後,將會極大增強HelloX的競爭力,相信能夠達到物聯網操作系統領域業界第一的位置。

歡迎有志於物聯網和系統軟件開發的人士加入加入我們,進一步開發和優化HelloX操作系統。相信在我們的共同努力下,必然能夠做出面向未來的基礎軟件平臺和核心軟件部件,有效促進物聯網和信息化的發展水平,進一步提升人們的生活水準,爲人類的發展做出貢獻。

對於參與其中的朋友們來說,您的開發成果和代碼輸出,可以共同積累在一個相同的平臺上,永遠沉澱下來。如果我們做成了,您將“青史留名“。即使做不成,通過這個過程,您也可以對自身的專業技能和行業理解有一個系統的梳理和提升,必然有助於您職業的發展。打一個更加通俗的比方,相比每天拿着手機刷半天花邊新聞,看半天視頻,然後自責的關上手機,感嘆一天又快過去了,您是不是更願意做一些與自身專業相關且有持續積累和持續產出的事情呢?相信這樣會更充實和有意義。:-)

更具體的細節,歡迎加入QQ羣討論:38467832

對HelloX和物聯網操作系統的進一步信息,請關注blog:blog.csdn.net/hellochina15


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章