HelloX路由器功能驗證總結

HelloXV1.82發佈已三個月了,這個版本提供了完善的網絡功能,主要有IP路由,地址轉換(NAT),DHCPServerPPPoE撥號等等面向接入路由器的網絡功能。爲了對其功能進行充分的測試,我搭建了一個家庭網絡環境,家中的所有聯網設備,包括數臺手機,筆記本電腦,智能檯燈,兒童護衛手錶等,都通過這套環境接入運營商的互聯網。經過近三個月的連續測試,總體表現穩定。現簡單總結如下。

HelloX路由器網絡環境介紹

搭建的網絡環境,其邏輯結構如下:


大概來說,就是用一臺筆記本電腦,運行HelloX。這檯筆記本電腦提供兩個USB接口,分別連接兩個USB轉以太網的網絡接口。其中一個接口連接運營商(應該是長城寬帶)部署到家中的網絡接口,另外一頭連接一臺WiFi網關(圖中的無線AP)。之所以額外增加一臺WiFi網關,是因爲當前沒有找到合適的WiFi發射模塊。不過這個WiFi網關工作在二層模式,只負責WiFi無線信號的收發,所有的網絡處理,都是在HelloX GW上完成的。

下圖示意了真實的情況:

HelloX GW通過PPPoE撥號,接入到運營商的網絡中,並獲得一個運營商分配的IP地址(後續稱爲公網地址)。PPPoE撥號方式便於運營商計費,因此是大多數寬帶接入採用的方式。同時,HelloX GW運行一個DHCP服務器的核心線程,爲通過WiFi接入的終端設備,分配私有的IP地址。HelloX GW上同時啓用NAT功能,把分配給終端的私有IP地址,轉換爲公網IP地址,這樣才能被運營商的大網所尋址到,從而能夠訪問Internet。這也是大多數寬帶接入路由器的工作方式。

接入到這個網絡後,HelloX GW會爲終端分配IP地址,以及DNS服務器地址,缺省網關等信息。下圖是我的筆記本電腦(運行WIN10系統)接入之後,自動獲取到的配置信息:


最多的時候,接入這個網絡環境的終端數量,超過了10臺。家人的手機,家裏的電腦,Pad,以及一臺小米的智能檯燈,一個兒童護衛手錶等,都通過這個環境接入Internet,並能夠正常訪問網絡。

驗證情況介紹

幾個月以來,在家中一直用這套網絡環境上網。雖然中間曾出現過一些問題(詳細在下一節介紹),但沒有太大的意外,一直應用下來,上網體驗與原來的專業路由器一樣:

1. 尚未碰到無法打開的網頁,這裏的無法打開,指的是在原來的路由器上能夠打開,而在HelloX GW上無法打開;

2. 常見的手機應用,比如微信,QQ,微博,視頻軟件,網購軟件(京東/淘寶...),銀行客戶端,等等都表現良好。因我個人不喜歡玩手機遊戲,因此沒有對手機遊戲進行測試;

3. 在筆記本電腦上下載文件,各類雲盤,或者通過公共郵箱(比如QQ,outlook等)發送郵件和附件,都沒有問題;

4. 進入WiFi覆蓋範圍,手機可自動接入,並獲得與上一次接入相同的IP地址。這一點對物聯網的應用很重要,很多路由器都無法做到;

5. 長連接穩定不中斷。所謂長連接,是建立後一直維持的連接,比如智能檯燈,會註冊到後臺服務器上,手機通過服務器查看和管理智能燈。不在家裏時,曾多次通過手機查看家中的智能檯燈的狀態,都處於在線狀態。

對於上網速度來說,HelloX GW不是瓶頸,瓶頸是向運營商購買的接入帶寬。比如,我購買的是10M帶寬接入服務,下面是在筆記本電腦上的網速測試結果:


下載速度已超過13M(感謝運營商,可能把接入帶寬給我稍稍調大了一點:-)),一般寬帶接入都是不對稱的,下行遠大於上行,因此上載速度在2M左右。總體來說,超過98%的用戶。

這個測試,說明HelloX GW本身不是瓶頸,如實的反映了運營商做的帶寬限制。在測試網速的時候,查看HelloX GW的CPU佔用率,大概在1%左右。如果是普通的路由器,這時候的CPU佔用率估計要到50%了。雖然這主要是硬件原因造成,但充分說明,如果用Intel CPU做路由器,會有大量的富餘計算能力,用於其它用途。這在將來的物聯網場景,邊緣計算場景,是很重要的。

綜合來說,採用HelloX GW上網,與成熟的寬帶接入路由器體驗一致,甚至更好。對我個人來說,還可以做一些惡作劇。比如,可以取消WLAN的密碼,這樣任何人就可以接入。HelloX GW會記錄下每個接入終端的信息(MAC地址,IP地址,等等),這時候就可以通過查看這些信息,判斷蹭網的數量。如果你願意,可以把選定的蹭網終端的通信報文,都抓取和保存下來。但是這樣做不道德,甚至違法,因此我從未做過。

測試過程中出現的問題

當然,在這個測試過程中,也出現過一些問題,主要是代碼的BUG引起,都已經過修改代碼解決:

1. 最開始的時候,某些SSL網站(加密網站)訪問很慢。比如12306網上購票等,響應很慢,有時候甚至打不開。經過抓包排查,發現是TCP連接的建立過程有丟包,少於46字節的IP包,在傳輸過程中會被丟棄。經過深入分析,發現是HelloX OS在做NAT的時候,對TCP的校驗和計算法上,存在BUG,導致小包的校驗和計算錯誤,從而導致接收端丟包。修改代碼後,該問題解決;

2. 偶發性死機現象,該問題偶爾出現,概率很低,不是必現。一旦出現,電腦的CPU佔用率會達到100%,並無法響應輸入。在代碼中實現了一個定位方法,具體就是打印出各個核心線程的CPU佔用率,以及當時所執行的指令位置。通過這個定位手段,發現是處理TCP選項(TCP option)的一個函數導致。這個函數在處理TCP選項的時候,有一種選項沒做考慮,一旦出現就會進入死循環。修改代碼後解決;

3. 提供服務的運營商,每隔24個小時,會把建立的PPPoE連接中斷一次。中斷之後,HelloX沒有重建,因此導致網絡中斷。需要重新手工撥號解決(通過命令行操作)。後續會增加PPPoE會話中斷後的重新自動建立機制;

4. DHCP Server的decline消息沒有處理,導致有時候無法分配IP地址。這在HelloX GW重啓的情況下,尤其明顯。因爲這時候已經爲某些終端分配了IP地址,重新啓動之後,HelloX GW上記錄的信息丟失,於是重新開始分配。結果會把已經分配出去的地址,重新分配給不同的終端。這樣終端就會發送decline消息,而最開始的時候,HelloX沒有處理這個消息,導致無法獲取地址。

當然,還有一些其它的小問題,都已經解決。

經過這一長時間的測試,對HelloX的穩定性的提升,也有重要意義。

驗證結論及後續計劃

經過此番長時間的實際應用驗證,我們認爲,採用HelloX OS做軟件的路由器,已經達到可以實際應用的程度。而且作爲一個通用的物聯網操作系統平臺,HelloX OS還提供其它路由器所不具備的功能,比如可編程,能力開放等。

當然,由於硬件限制,並沒有直接在HelloX GW上實現WLAN發射功能,這也是後續要重點實現的功能。

後續我們會開發專用的硬件平臺,依託HelloX OS,做出專門的面向物聯網的路由器。這種路由器不但具備傳統寬帶接入路由器的所有功能,而且還具備更強的計算能力,更高的安全性,更加靈活的定製能力,同時集成物聯網開發框架,適應將來物聯網的需求。下圖示意了這個設計思想:


最新的HelloX OS代碼,已上傳到github上,歡迎朋友們參考:github.com/hellox-project/HelloX_OS

同時歡迎對物聯網和HelloX操作系統感興趣的朋友加入我們,QQ羣:38467832,微信/QQ:89007638

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