我在 OSDC 的佈建一文中提到做場勘時,需要使用 Spectrum Analyzer。這是為了要挑選一個比較少訊號、雜訊干擾的頻帶。

很多人都知道,在設定無線網路 (WiFi) 時必須小心選擇將使用的頻道 (Channel),避免與其他的基地台使用相同的頻道,以免互相干擾。

比較少人注意的是,由於 IEEE 802.11 b/g 使用的頻是 22MHz 寬,因為法規技術規格上的限制,其實真正不重疊的頻道只有三、四個 (端視你在甚麼國家)。在某些國家如台灣雖然允許 11 個頻道,但是其實只有 1, 6, 11 這三個頻道是沒有與其他頻道重疊的。

Source: How Wifi channels overlap

於是,你最好只使用 1, 6, 11這三個頻道。根據 Cisco 的一篇舊文章 「Channel Deployment Issues for 2.4-GHz 802.11 WLANs」,即便你選用 1, 4, 9, 11 等看似只稍微重複的頻道,也會因為高密度的接取使用,使 802.11 所應用的 CSMA/CA (停看聽才過馬路協定) 協定會因為避免碰撞而造成網路使用停頓 。(Co-channel interference)

更甚者,因為重疊的干擾訊號不夠強,而其他的設備無法辨識為 802.11 訊號,誤認頻段是乾淨的而持續的送出訊號,如此一來偶爾可辨識、偶爾視為雜訊的狀態下,反而加重碰撞現象,使網路效率更加惡化。(Adjacent-channel interference) 更糟的是且 802.11g 所使用的 OFDM 技術所使用的頻譜訊號強度比 802.11b 所應用的 CCK 更強 (應該說相較之下,OFDM 的訊號衰減較小),干擾影響更為嚴重。

除了頻道必須小心選用較少無線網路基地台佔用的頻道外,還要注意其他的干擾源。由於無線網路使用的是 2.4Ghz 免授權頻譜 ISM Band,而這段頻譜是有可能被其他的射頻源所干擾的。在家庭中,最常見的干擾源是微波爐藍芽無線電話以及某些無線監視系統等。

不像是選用頻道,你可以用無線網路卡掃描現有的無線網路基地台狀態,有許多干擾訊號是你的網路卡無法辨識、也無法告知有許多雜訊的。特別是舉辦研討會時,不少人都會攜帶會干擾無線網路訊號的藍芽手機。這個時候,你就需要使用頻譜分析器來辨識真正乾淨無干擾的頻道了。

然而,好的一套頻譜分析儀加上軟體,市場價格常常會超過一兩萬美金。而且這些設備都十分龐大,只適合擺在實驗室,不方便帶著到處跑。

所幸有些公司開發了給筆記型電腦使用的便利頻譜分析儀,像是 Fluke NetworksAnalyzeAirAirMagnetSpectrum Analyzer、Cognio (被 Cisco 收購) 的 Spectrum Expert

這些工具都十分強大,如 Cognio Spectrum Expert 辨識解析度為 10 kHz,應用軟體甚至可以幫你辨識出發出特定訊號的裝置類型,可以輕鬆的找出無線網路問題。不過價格也高達 4000 上下美金,不算是很經濟的解決方案。

退而求其次,就是比較單純的 USB 介面簡易頻譜分析儀。如 Nuts About Nets、或 MetaGeekWiSpy 2.4x。這些產品只要上述的十分之一,約 USD 400 上下即可入手。雖然無法達到自動辨識設備類型,但是已經足以排除頻譜干擾的問題。若你經驗夠的話,也可以從訊號的模式猜測出可能的干擾類型

身為偏好使用自由軟體的偏執狂,我自然選用了 WiSpy 2.4x。除了因為 WiSpy 2.4x 有免費的 Chanalyzer (Windows) 與 EaKiu (Mac OS X) 可用外,還有強者 dragorn 做的開放原碼 Spectools

根據 Tim Higgins 在 SmallNetBuilder 所寫的 MetaGeek Wi-Spy 2.4x Review: Better, but Bigger Bucks 一文,你可以知道 WiSpy 2.4x 的主要元件是 Chipcon CC2500 (現為 TI) 2.4 GHz tranceiver 與 Silicon Labs 的 C8051F326 (8051 MCU with 25 MHz System Clock). 成本其實相當便宜。雖說成本便宜,不過由於這是 Niche Market,售價還是要達 400 美金,總而言之這個價格跟其他類似的產品比起來已經是相當實惠了。

使用 WiSpy 2.4x 搭配 ASUS EEEPC,再裝上 Debiankismet, Wireshark, Spectools 後根本是輕巧的神兵利器!由於 ASUS EEEPC 上得無線網路卡是 Atheros AR5007EG,只要裝上部份開放原碼的 madwifi 驅動程式,就可以把無線網路卡設定為 Monitor 模式。

於是你可以使用 kismet 一邊監測無線訊號中的 Beacons,一邊以 spectools 監測訊號強度與雜訊。

只要再配上一顆 USB Wirless NIC,就可以同時監測與連入各機器中作設定。若是 EEEPC 的螢幕換成 OLED,那就更完美了 (不過相對價格也會高很多)。由於我的 X60 也是用 Atheros AR5418 802.11bgn,因此大部分時候,我還是在 X60 上享受「大」螢幕的快感。

剛剛提到 WiSpy 2.4x 的軟體無法作設備自動辨識,與其他工具比起來稍遜。但 MetaGeek 在六月的時候,釋出了一版新的 Chanalyzer (beta, 現在已是 3.1 版),整合了 InSSIDer (或類似 NetStumbler) 利用無線網路卡掃描的結果,更友善的顯示出每個訊號的強度。也整合了頻譜訊號特徵比對功能,透過拖拉,就可以對照出可能的干擾類型。這些新的功能是目前開放原碼工具中尚欠缺的。

關於這些新功能,請參考以下展示畫面