Presentation on OpenWRT at COSCUP2009

Rex's presentation on OpenWRT case studies 這是連續第三年上台在 COSCUP 分享 OpenWRT 相關的經驗,前兩年談得是基本的使用、或是稍微進階一點修改韌體給一兩百人的研討會使用,稍微還帶到一點技術。

今年的分享,試著想要切合研討會的「Open source friendly hardware platform」的連續議程的主題,切成兩部份,一部分是 OpenWRT 偏商業應用與分析,分析過去一年來在網通市場的生態系統中,不同層面的廠商各用了甚麽樣的策略與方法去應用 OpenWRT 這套開源的系統,並且對業務與市場可以有甚麽樣的幫助。第二部份,則請在網通代工廠工作的 macpaul ,分享從網通廠工程師的角度,以 OpenWRT 做開發的實務整合經驗與效能結果。

我的簡報可於下載,macpaul 的部份可於觀看。全程演講之錄影也已經上線。有任何問題,歡迎與我聯絡,或留言於此。更歡迎在網通產業的前輩給予指教,特別是國內網通廠或 SoC 晶片廠對 OpenWRT 的態度與看法。

This is my third time to share my experience on OpenWRT project at COSCUP. The last two year I have shared the basic usage and software framework of OpenWRT, and also my experience to customize the OpenWRT firmware for open source conferences for allowing more then 100 people get connected with wifi in single room.

This year, I like to line up with the track ‘Open source friendly hardware’. So with another speaker Macpaul, we split the talk into two parts. The first part is presented by me, talked about how the industry use OpenWRT in their products, and how OpenWRT can do in the ecosystem. I tried to analysis how the strategies work on the business and marketing. The second part is presented by mapcual, as a OEM vendor engineer, macpaul shared his experience on day-on-day router firmware development, and the performance of the OpenWRT software stack.

At the beginning of this conference,  we were thinking about invite the core developers of OpenWRT project. But due to the limit of the event funding, the team can not afforded the ticket and hotel for trip of speaker. Hope, next year we will have opportunity to invite the core developers from the other country.

Photo is taken by Jim Grisanzio, The best photo of my talk I can find on Internet. Thanks! Jim.

August 18th, 2009 at 10:06 | Comments & Trackbacks (0) | Permalink


OSDC 2009 無線網路佈署備忘錄

本週末即是一年一度的開源人年會,記得去年陸續辦過 OSDC, Blog BoF, COSCUP2008 文化與科技國際博覽會 (Culture Mondo Network) 等。有時成功、偶爾失敗,但是大多失敗的問題都是頻寬不足,像是 Blog BoF 第一次只用 8M/640K Hinet ADSL 寬頻,碰到大流量的 Y!Live 視訊就被衝爆了,雖然 Y!Live 已經收掉了,但是現在 High-definition video 的視訊串流網站也已經變得相當普及,萬一演講太無趣,大家都上線看 Youtube *誤* 那也很有機會爆掉。

記得 2008 文化與科技國際博覽會,在展場與主會議廳各拉一條中華 10M 光纖,使用上倒是沒有甚麽大問題,倒是因為 WiFi 的流量限制較嚴格,某些聽眾想即時上傳視訊影片到外部網站,造成了一些問題。剩下的一般網路瀏覽、Skype、讓 im.tv 做即時視訊轉播,又再現場同時開兩台播出都沒有大問題。(當然也可能是因為這個博覽會的聽眾比較不需要即時網路)

今年四月的時候,又當了一次 OSDC 的義工。今年 OSDC 的是使用台灣微軟的會議室七樓會議室 (對,參加開放原始碼軟體研討會,卻在小便斗上看到微軟的催眠文宣貼紙,的確有點奇特的趣味),這次雖提早去了一次場勘,但是礙於政策或麻煩等種種問題,微軟只能提供分別於內部網路外的一條 2M/256K 的中華電信 ADSL 線路,對於我們所提供會有大量的使用者上網的需求,相關人員露出了納悶與不解的神情,直說其實大部分微軟的聽眾都自備 3G 搞定啊,為何需要額外架設無線網路。且若要使用現成無線網路,尚需要額外申請大量帳號。於是,就在半脫半就的狀況下用了 2M/256K 的線路提供大約兩百餘聽眾的會場網路。

下場當然不會太好看。頭一天是 Tutorial, 因為人數不多,因此網路頻寬的流量使用率還好。但是驚爆一個問題,原來接進會議室的上游是一台 D-Link 的 DI-704P 寬頻路由器 (直接接到神秘的內部網路孔去,只好透過 nmap/telnet/mac address 辨識),這台機器只要超過 1K connection sessions 就自爆,剩下的連線都死光,很有可能是因為還接了其他網路或設備,造成可容納數下降,無法察知。

於是當日結束後,請微軟的網管協助,希望直接將 DI-704P 的 WAN 網路線直接插到該孔,如此我們就可以用自己的設備自行撥 ADSL 的 PPPoE 出去。很妙的是,沒有人知道這台神秘的 D-Link DI-704P 接到哪裡去,找不到機器、也找不到線。於是第一天下午結束後,在 gslin, XDite, slzzp 及其他大神的建議下,趕快生了一台有雙網路卡的小電腦出來,裝上 Debian、OpenVPN、shorewall,從微軟的中華電信 ADSL 開 tunnel 到台灣大學,繞過該死的 D-Link DI-704P。這也是為甚麽大家從微軟上網,出去的 IP 卻是台灣大學。這樣算是解決了 DI-704P 自爆的問題。感謝 gslin, XDite, slzzp 及其他朋友當日空著肚子陪我測試最後效果。

不過 2M 的水管根本不夠大家用阿,上線的人數大約是 40-60 人,完完全全不夠分。於是只好開始

  • (在微軟會議室)擋掉頻寬吃最兇的 Windows Updates Services
  • 擋掉 Debian/Ubuntu mirror site. (造成一些人在外面想測試、安裝新軟體,卻完全連不上)
  • 最後一天下午,已經沒法子了。只好把 transparent proxy 設起來,除了講者之外,其他人輪流斷 Web Access,會看到小水管不夠用的畫面)

很苦。另外也碰到一個問題,就是現場其實有一台 SMC SMCWBR14S-N2,是微軟拿來開放給聽眾使用,因為我已帶了自己的設備,於是打算將他拿來給講者專用。由於原始的設定都是出廠預設值,於是改了密碼、訊號名稱,以及加密方式從 WPA 改為 WEP (為了擔心有講者拿了太舊得電腦連不上),但是在第三天早上劉燈與 David Heinemeier Hansson 做 Video conference 時,將所有的自有 AP 都拔掉,剩下 SMC 這台。但是網路卻很巧妙的每次等劉燈問完一個問題、回答到一半的時候,就斷線了,連續試了幾次,每次都要再補充說明一次,大家都有點失去耐心了。這個問題因演講進行中一直沒有機會辨識跟解決,無法察知是 SMC 的問題、抑或又是 D-Link DI-704P 的異常。(SMCWBR14S-N2 乃直接接到 DI-704P 上)

一些下次可以注意的細節

  • 應該要監視流量與使用頻率,這牽涉到網路佈署的 topology 。不過若能收集這些資訊,對未來改善研討會的網路環境會很有幫助。
  • 要有心跳 (heartbeat) 監視系統,更好是超過時間未收到心跳,則發簡訊通知。
  • 若使用現場網路設備,更改掉預設設定還是必要得。預設密碼、UPnP 等都要更改、關掉為佳。開源研討會,特別有高手會動手動腳、玩刀弄槍的 ;) 。當然、無必要的話,就不要用沒測過的設備來玩。
  • 講者若需要使用視訊、網路電話,無論如何再怎麼機車都要麻煩講者與大會提早測試一遍。

今年 2009 開源人年會將再次租用台灣大學應力所與台大電機博理館,今年籌備團隊特別注意台大的網路是否又會拿週末的時間來進行維護,除了上網看電算中心公告,也請教了內線消息,所幸到目前為止都還沒有這樣的網路、電力的維護安排。今年 COSCUP 人數光聽眾就高達 550 人,希望今年乖乖大神保佑,不要出事阿。

(這篇文章因為事隔數月,可能人名或事項過程有所差異,若有誤記請指教並請見諒)

D-Link DI-707P
August 12th, 2009 at 08:00 | Comments & Trackbacks (0) | Permalink


Mobile AP based on OpenWrt

上週末的 COSCUP 2008,由於第一天現場網路斷線,臨時跟幾位長輩借用了 3G SIM Card/Modem/AP 來擋一下。感謝 Custom Wu, ik, in2, Kinght Feng, Lloyd Hung (sort by letters) 的大德大力相挺。

為了能夠讓 3G 轉成無線網路 (802.11b/g) 訊號,連忙將有 USB Ports 的 ASUS WL-HDD2.5 與 FON2202 改裝含撥接工具新的 OpenWrt 版本。特意將先前未安裝的 kmod-usb-serial、kmod-ppp、comgt 等套件再補裝進新編譯的軔體。

華為 (Huawei) 的 E220 先前曾經試用過,這張卡的行為頗為詭異,它會提供 Virtual CD 與 USB serial 介面,Virtual CD 裡面擺的是驅動程式、手冊、設定檔 (for Windows) 等。

麻煩的是,大約是 Hotplug 或某種 race condition 的問題,有時 Linux 不會偵測到 serial interface,有時可抓到介面,可是在卸載 Virtual CD 前是無法使用的,很多時候就算卸載或不載入 Virtual CD 也無法使用! 所幸 bobovsky 做了一個初始化程式,執行後可以確保 USB Modem 被正確啟用。(顯然是用 USB sniffer 之類的工具做出來的)

因此我唯一需要做的是將程式編譯成 MIPS (LSB) 給 WL-HDD2.5, MIPS (MSB) 給 FON2202,丟到機器上並稍加設定。

必須先為系統添加一組 hotplug script /etc/hotplug.d/usb/20-usg-3g,目的在於判斷 E220 被插入時,自動執行初始化指令,讓 Modem 變成可撥接的狀態。

#!/bin/sh

# Copyright (C) 2006 OpenWrt.org

case "$ACTION" in
	remove)
		[ ${PRODUCT} == "12d1/1003/0" ] && {
			ifdown wan
			echo 1 > /proc/diagled/usb
		}
		;;
	add)
		[ ${PRODUCT} == "12d1/1003/0" ] && {
			/bin/huaweiAktBbo
			echo 0 > /proc/diag/led/usb
		}
		;;
esac

另外,由於 usbserial 還不認得 E220,因此必須將 vendor/product id 先餵給它,如此插入設備時就可以自動產生 device file 等。作法是更改 /etc/modules.d/60-usb-serial

usbserial vendor=0x12d1 product=0x1003 maxSize=4096

上述是將硬體驅動的方法,此外就是要加入撥接工具。這件事情 comgt 可以代勞,OpenWrt 已經整合好相關的 Script,只要利用 UCI (Unified Configuration Interface) 對 /etc/config/network 進行更改如下即可

#### 3G
config interface	wan
    option device       "/dev/usb/tts/0"
    option proto        "3g"
    option apn          "internet"
    option service      "hsdpa" # or cdma, evdo, umts_only, or gprs_only
    # option pincode      "0000"
    option mtu          "1492"

由於大家的 SIM Card 都關掉了 PIN Code 檢驗機制,為了避免系統對 Modem 輸出錯誤 PIN Code 而鎖死 SIM Card,我也稍加更改了 /lib/network/3g.sh,避免系統在初始化時試圖對 Modem 設定 PIN Code.

--- ../../package/comgt/files/3g.sh	2008-04-17 09:29:56.000000000 +0800
+++ lib/network/3g.sh	2000-01-01 08:23:32.000000000 +0800
@@ -73,10 +73,12 @@
 		fi
 		# Don't assume Option to be default as it breaks with Huawei Cards/Sticks

-		PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
-			echo "$cfg(3g): Failed to set the PIN code."
-			set_3g_led 0 0 0
-			return 1
+		test -z "$pincode" || {
+	  		PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
+				echo "$cfg(3g): Failed to set the PIN code."
+				set_3g_led 0 0 0
+				return 1
+		    	}
 		}
 		test -z "$mode" || {
 			MODE="$mode" gcom -d "$device" -s /etc/gcom/setmode.gcom

只要將上述所需的套件都編譯、選定,在稍加修改特定幾個 Scripts 後,就可以利用方便的 ImageBuilder 產出所需的軔體了。本次也借用了 Knight 的 BandLuxe C120,基本用法是一樣的。

August 27th, 2008 at 15:53 | Comments & Trackbacks (18) | Permalink


OpenWrt Case Study at COSCUP

上週末的 COSCUP 2008 終於結束了。報名人數超過四百餘人 (且還有眾多人員向隅),報名踴躍與出席狀況都相當良好,活動算是大成功阿。特別是今年第一個晚上的 BoF ,開了五個議程,每場都有同好參加,是第一次台灣社群活動所謂 BoF 成功的例子阿∼ 成功的會議要感謝主辦團隊跟各社群協調者的大力支持、配合。

這次活動,兼任了場地的無線網路佈建跟最後一場主持人,順便分享了一場年初到目前為止的無線網路佈建經驗。簡報檔案可於COSCUP 2008 網站上下載。


感謝 cocakl 攝影

講題的部份,由於時間只有二十分鐘,有許多東西其實沒辦法深入解釋說明,光是講到頭幾頁介紹 OpenWrt 8.08 就已經花了十五分鐘。很多可以詳細說明的細節只好略過不提,像是天線的配置與選擇技巧,以及 802.11 b/g 所使用的 DSSS, OFDM特性差異,特別是投影片的最後幾張政見宣導沒有機會講。投影片中的許多細節可以於先前 Blog 過的文章中找到深入說明。去年的簡報也可於下載。

本次活動的網路實在是非常囧。早在一個月前就已經去場勘,原則上除了需要先註冊欲使用的設備 MAC Address 外,網路直接使用台灣大學應用力學研究所的區網應該可以非常順暢。沒想到活動前一天才知道,8/23 整天台灣大學因為網路設備升級會斷線!

當下重新為 ASUS WL-HDD25 與 FON2202 重新編譯了一版可以接取 Huawei E220 的 OpenWrt Trunk 版本。前一晚幾乎都在編譯加上測試。雖然當天借用到了四、五個 3G SIM/Modem,沒想到還是不敵場內 GSM/3G 訊號不良,對外頻寬比小便撥接還慢。虧我還帶了一台 EEEPC + USB Hub 要當 Multipath-routing Gateway (後來才知道原來大廳可以收到好訊號,應該要另外想辦法弄幾台 Repeater 出來打進室內才對)

週六傍晚與週日雖然對外恢復,但是台大對外路由一直頗怪,像是接到中華電信或國外某些網段都會嚴重掉封包。且台灣大學內部的名稱伺服器反應特慢,所以大家使用大約也會感受到鈍鈍。(大家倒是很給面子的沒有嫌棄阿,感恩)

連續幾次佈建都不甚順利,下次真的要買綠色乖乖來祭拜宅神 (地基主) 了啊。

August 26th, 2008 at 17:24 | Comments & Trackbacks (0) | Permalink