搜尋此網誌

2010/08/09

TomatoUSB:用Tomato解開ASUS RT-N16的封印

TomatoUSB:解開ASUS RT-N16的封印

註:目前使用的是TomatoUSB的Shibby版本

網路上有二個較多人用的,非官方的無線路由器韌體,一個是DD-WRT,一個是Tomato,其它還有FreeWRT、HyperWRT、Thibor、OpenWRT、Tarifa和X-WrtDD-WRT等等相當多的非官版韌體,其中DD-WRT用的人最多,支援的晶片組和品牌也最多,功能也是最多,更版速度也非常的快,而Tomato則只支援Broadcomm的晶片組,以Linksys,Buffalo的產品為主ASUS的話只支援到802.11g系列的產品,不過在最近幾次的版本中,已經加入對ASUS RT-N16的支援。
Tomato (TomatoUSB)對QoS的支援也相當完善,在此也介紹一下。



ASUS的RT-N16,是目前其產品線下最頂級的產品,128MB的RAM,32MB的Flash,可以處理很多的連線數,在硬體規格上相當的具有優勢,非官方的韌體則提供了更多的設定,除了ASUS官版韌體原有的基本的功能外,還有NTFS/Ext2/Ext3/FAT32等外接USB檔案系統格式支援,另可執行VPN,DLNA支援,圖形化的頻寬使用量檢視,很好的QoS管理,可切多個VLAN等等。

Tomato本身只對RT-N16提供少量的支援,但是以Tomato的韌體再進行加強的TomatoUSB,除了可啟用USB功能外,也明白的表示了對RT-N16的支援,不過使用者的反應不一,有的也是會出現一些怪狀況。所幸的是,如果刷非官版的韌體出了問題,可用原廠的光碟片將韌體還原成官版的,故可以較放心的測試。

另外,也有針對Tomato進行中文化的twtomato,不過1這個版本目前和官版tomoto的版本並不一致,並不是最新的版本,不過中文化應該只是介面的訊息中文化,


RT-N16的韌體更新為TomatoUSB


查到的文章,大約有九成都說要先刷成DD-WRT,再刷成Tomato,但是在TomatoUSB上,這一篇文章的作法,並不用先刷成DD-WRT:
前置準備:
只能用有線連RT-N16
關掉防火牆
關掉防毒

動作:


  • 下載RT-N16工具
  • 下載TomatoUSB K26版MIPSR2 CPU版本,直接可下載VPN版的。
  • 按住Reset時,接上RT-N16的電源:這動作會使得Router在還原模式,主要是讓ASUS的還原工具可以使用,如果沒在還原模式,程式會顯示類似找不到在還原模式中的設備之類的訊息。
  • 執行ASUS的韌體還原程式。
  • 使用在TomotoUSB下載下來的韌體,上傳到RT-N16;在這可能畫面會停住,因為我們上傳的不是原廠的韌體,在檢查的過程中會出現錯誤,但是一樣可上傳。
  • 上傳完畢後,使用瀏覽器到192.168.1.1,帳號密碼為:admin/admin,執行這個功能:Administration > Configuration > Restore Default Configuration,選擇"Erase all data in NVRAM memory (thorough)",用以清除NVRAM,這個動作要數分鐘的時間。作完後即可使用RT-N16。
需注意的是:記得改密碼(Administration > Admin Access > Password)。進入Basic > Network > Wireless中,更改無線網路的安全性,內定是無安全性。

上述步驟做完後,第一個就是把RT-N10改為Repeater模式:

RT-N10上到新版的Firmware,切到Repeater模式後,它在網路上就隱形了,雖然有點可惜,不過它不能身負家中網路的Core Router的重任,也只能這樣子了。
ASUS的介面都長得很類似,原廠的RT-N16大約也是這樣子。不過查過別人的心得,原廠的QoS不能用,軟體本身穩定度是個問號;新版的雖然好一點,當掉後會自己重開,但是還是不夠穩定。
Tomoto裝好後,第一件事是重置設定(Administration-->Configuration-->Restore Default Configuration,選擇Erase All Data in NVRAM memory),等一段時間後,參數就會重置,因為ASUS的某些設定和Tomato不一樣(比如DHCP租約時間,ASUS是以秒計,Tomato是以分設),再來要設定無線網路的安全性(Basic-->Network),另外一定要更改Admin的密碼(Administration-->Admin Access)。網路基本設定弄好之後,我試著把Notebook,PS3和Wii全打開:

可以看到PS3依設計,經RT-N10連上來,Wii直接經無線。每一個網路連接,有一個[oui]的連結可點擊,比如點Wii的連結,會出現:


Here are the results of your search through the public section of the IEEE Standards OUI database report for 00-19-1D:

00-19-1D (hex) Nintendo Co.,Ltd.
00191D (base 16) Nintendo Co.,Ltd.
11-1 HOKOTATE-CHO
KAMITOBA, MINAMI-KU
KYOTO 601-8501

JAPAN


上方可看出是Nintendo的網卡卡號區段,可以由此來看是否有非法的連線上來。另外,Tomato的無線還可以設定不干擾到藍芽,以前無線在傳輸時,有時藍芽的耳機聲音會斷斷續續的,開啟這設定後,不知會不會改善,沒有試。


基本資訊比原廠的清楚很多:

另外,可以看頻寬的使用狀況:



這個在原廠的韌體,並沒辦法看。

除了一些其它基本應有的功能(Port Forwarding,Port Triggering,Firewall外,安裝這個韌體,為的是它的QoS功能,Tomato可以將封包分成不同的優先順序,這樣子的設定,可以讓我們即使是在背景作大量的傳輸下,依然可以正常的瀏覽網頁。很多外宿的人,最怕房客開P2P開一整天,連網頁都連不上,它的QoS目前測起來,似乎是可以解決這個問題。
其實我本身有買一套叫cFosSpeed的封包QoS軟體,但是它只能裝在Windows上,對於PS3/Wii/NAS等非WinTel的作業系統,就沒有辦法處理:



Tomato的QoS (QoS有更新設定,請參照文章末端的連結)


Tomato上跑QoS,等於全部的流量都經過處理,只要它不要出問題,就能全程使用它的QoS功能。在QoS的設定上,於Basic Setting項目中,我的設定如下:

Enable QoS當然是打開了;Prioritize small packets 用內建的,ACK封包優先送出,這個會影響到網頁的回應,和玩線上遊戲的Ping值,但是由於P2P封包數量多,打開ACK的話,CPU會吃重,如果有大量的連線的話,建議看一下CPU用量。

Outbound Rate / Limit設定方面,如上圖所示,我更改了系統內定的設定值,Max Bandwidth要依ADSL上傳的速度作調整,我的上傳是3M,理論上可設成3000,但是我從來沒看過可到2500以上的,故設成2500,這邊最好實際上測一下速度,這裡只是抓個大約值。
下方有從Highest到Class E的不同等級設定,分別設定其上下頻寬,比如Highest設為80%~100%,代表如果有封包是落在Highest這個優先序的話,目前的頻寬最少分80%給它,這樣子設看上去很不合理,但是最高優先的封包通常不大,但是又重要(比如DNS查詢)所以設為80%只是讓它㑔先通行。由於上傳的頻寬,通常是用來傳回應封包,故其它優先權的頻寬,都不會設得比Highest大,理論上是愈向下愈低。

至於Inbound Limit部份,由於是下載,它內定是全設為none,就是不控制,這邊意思意思,從不控制,再依序設由98%設到90%。下載的頻寬當然是能100%使用最好。




TCP Vegas我沒有打開,不知道這東西會吃多少CPU? 它是利用RTT來偵測並調整congestion window的大小。

QoS中的Classification設定,就是告訴系統,如何把封包分優先權,比如系統內定的DNS,就是落在Highest上,前面五個是系統內建的,它已經作好了基本的QoS了,後面是我自行加的,比如開網頁時回應快,但是網頁大量傳輸時慢,大量的資料傳輸,會被丟到Lowest中,我自行增加了P2P方面的優先權,把它設為比Lowest更低,為Class A,這部份一開始還沒有設得很好,明明設了P2P,結果還是落在Lowest,後來才發現條件的順序要調整,愈上面愈優先,不然看計算出的資料,大部份都落在Lowest上了。下圖為順序未調整前的樣子:

我個人的結論是,設定QoS的優先權,一次包括較大範圍的,最好放在最後面。
Tomato的QoS,最強的地方是,可以設定Layer 7的優先權,比如MSN,XBoxLive,WorldOfWarcraft等等。而且有分析資料,可以知道目前的QoS分佈狀況:




另外,就是它的連線數,在設定上可以設到300K,並且可以回報目前的連線數:以下圖為例,最大連線數設100K,目前連線數4K:




這是我一台機器的Session數,如果多台,又都跑P2P也沒關係,反正頻寬是在這控管,在Access Restriction中,還可設定什麼時間不能用哪種服務,比如每週的1~5,一點後不能看網頁/用P2P,或是把無線網路關掉等等。

最後,telnet進RT-N16看一下Linux的狀況,下圖分別執行了uname,wl (看無線設定)及free(看記載體狀況):



記憶體還100M可用,只用了六分之一不到。
Top:在QoS不管理ACK的狀態下,吃約10% CPU,如果打開ACK,在4K的連線下,約吃掉15~20%,但是由於我開管理介面,要系統定時更新統計資料,故平時可能會再低一點。




其它的部份:VPN、USB和NAS的部份,就暫時不研究;NAS有另一台可處理,VPN暫時沒必要,而它旳USB聽說效能普普,這一台就讓它能穩定的當無線頻寬路由器吧!

補充:把QNAP TS-409 NAS的Download Station功能打開後,測試結果目前OK,由於NAS耗電量比PC少(約18w),故大量的FTP/HTTP/BT下載,可以直接使用NAS來進行;缺點是目前無法設定下載完後關掉NAS。



P.S. 有關家中網路規劃,需查詢前一篇:家中網路架構重架設

2010/08/10補充::依某查到文件的說法,QoS下載方最好別設定,因為它的處理方法是:如果超過設定,是直接將封包丟掉,如此造成的結果是對方一樣要重送,故我最後下載方改為完全不設限。

RT-N16如果大量P2P下載時,網頁很回應很慢之可能解法:如果你是用TomatoUSB來配給DHCP的話,請把DNS功能關掉,直接讓Client到外部查詢DNS。一般P2P開始時,會有大量的DNS查詢,目前試的結果是內建的DNS效能並不好,一次執行數百個查詢會吃不消。

QoS的部份,請參考 ASUS RT-N16 / TomatoUSB QoS設定再調整