2011/10/15

ch5 實作與測試 wireless lan 802.11

第五章、實作與測試

第一節、multihop

ad hoc的網路架構下,任兩台mobile若在彼此的通訊範圍中,則兩台mobile可直接互相通訊。目前一台使用無線網路卡的mobile的傳輸距離大約有兩百公尺,但限於地理位置以及各種地形的障礙和其他元件的干擾,真正的傳輸距離往往僅僅有幾十公尺。在這樣短距的傳輸範圍中,兩台mobile很可能因為相距太遠而無法直接通訊。此時若是能利用moltilhop的觀念在兩台相對遠距的mobile中,尋找另一個mobile當作轉傳的收發站,則可用接力的方式,來達成兩台mobile的通訊。

第二節、程式實作

在我們所使用的無線網路卡中,因為主要是使用在有基礎架構之無線區域網路(infrastructure Wireless LAN)上,所以其驅動程式僅採singlehop的方式作資料的傳輸,在這樣的情況下,mobile並不會自動轉傳所收到的封包。另外的一個問題是,驅動程式會要求硬體過濾MAC address不屬於自己的封包,所以能到達軟體控制層的封包,不是屬於本機的,就是廣播式的封包,所以那些收送不屬於自己的封包,會在硬體層就被攔截下而停止往上傳送,根本也沒有辦法加以處理。因此,若是要實測multihop的情形,我們必須針對這兩個性質加以改變。我們首先在驅動程式中,找出有關封包收送模式的function,並將期收送模式的旗標改為promise的方式。接著我們嘗試將由硬體送來的封包再轉傳一次,利用驅動程式中傳送與接收資料的函式的功能,並改變資料在buffer中的位置使得我們可以在接收封包後立刻再把封包傳送出去,利用此一方式,我們可以讓修改過的mobile當作轉傳的收發站。

第三節、實際環境測試

我們首先需要三台電腦,兩台作為遠距的傳輸,另一台則是用來作為轉傳的收發站。我們把接收的資料mobile稱為DM。把傳送的資料的mobile稱為SM,而修改過驅動程式的轉傳收發站則稱之HM。實驗步驟如下

l 確定三者可以互相直接通訊(telnet)

l DM放置在一固定點,移動SM,並持續的傳送資料給DM(利用Ping or Telnet),直到兩者距離超過通訊範圍而無法通訊為止。

l 利用同樣的方式找出HMDM的通訊範圍。

l HM放置在DM可通訊範圍的距離。

l SM放置在DM無法通訊的範圍。

l 確定在這樣的位置下HMSM可以互相通訊。

l 測試DMSM可利用HM轉傳來互相通訊嗎?

經過實際在資訊科學系系館三樓的測試,我們將DM放置在多媒體實驗室中,移動SM,發現大約到了三樓的樓梯口時,SMDM就無法互相通訊。HMDM的通訊距離相同。於是我們把HM放置在三樓的樓梯口附近,然後把SM放在系館四樓的樓梯口附近;此時SMDM已無法互相通訊,而DMHM之間,以及HMSM之間,仍可以保持資料的傳輸。接下來開始由SM傳輸資料給DM,並觀察DM所收到的封包記錄。經過幾次實驗的結果,我們發現DM經過HM的轉傳,可以成功的收到SM送來的封包,不過在傳輸速度上,以及封包重送率上,利用轉傳的方式,其效能都有明顯的下降。我們認為這是很正常的現象,因為在無線通訊中,無線傳輸的過程本來就是資料發生錯誤的危險地帶,經過multilhop之後,利用無線傳輸的次數增加了,自然也提高資料錯誤的可能性。所以在mutilhop的通訊中,整個資料傳輸的正確率降低,應該是可預期的現象。

ch3 Linux網路作業平台的架設與安裝 wireless lan 802.11

第三章、Linux網路作業平台的架設與安裝

第一節、Linux的架設。

Linux1991年四月, 由芬蘭人Linus Benedict Torvalds(torvalds@kruuna.helsinki.fi) 所獨立草創,之後, 歷經無數版本演進, 才漸漸變成一個完整的作業系統,這發展過程吸引了全球的玩家以及部份商業組織的參予。就一個簡便的角度來看,我們可以把Linux視為架在80x86相容PC上執行的UNIX系統。而關於Linux作業系統架設的方法,因為很多地方都有詳細的說明,所以請直接參考各大BBSLinux版的精華區。

第二節、Wavelan Wireless LAN Card的安裝:

無線網路的網路卡,目前還不能算是普及,故一般Linux附的Kernel Image (/vmlinuz)並沒有support這種裝置。因此,若要使用Wavelan Wireless LAN Card就要重新Compile Kernel,且要是較新版本的Kernel才行。就Slackware 3.1.0 Kernel Source來說,其算是 2.0.0舊版的。

 到果茶小站 ftp henry.dorm10.nctu.edu.tw,抓新的linux-2.1.36 kernel source

get /linux/slackware/Kernel/v2.1/linux.2.1.36

mv linux2.1.36.tar.gz /usr/src

cd /usr/scr

將舊版的2.0.0 Kernel Source 備份: mv linux linux.2.0.0

ƒ 解開新的kernle source

gzip -d linux2.1.36.tar.gz

tar xvf linux2.1.36.tar tar zxvf linux2.1.36.tar.gz

因為driver I/O Address是寫死的,要改的話要去改 Source,詳細說明請見(/usr/src/linux/drivers/net/README.wavelan

n [ wavelan.p.h 原來程式片斷]

static unsigned shortiobase[]=

{

#if 0

/* Leave out 0x3C0 for now -- seems to clash with some video controllers. Leave out the others too -- we will always use 0x390 and leave 0x300 for the Ethernet device. Jean II : 0x3E0 is really fine as well... */

0x300 0x390 0x3E0 0x3C0

#endif /* 0 */

}

n [ wavelan.p.h 修改後的程式片斷]

static unsigned shortiobase[]=

{

#if 0

/* Leave out 0x3C0 for now -- seems to clash with some video controllers. Leave out the others too -- we will always use 0x390 and leave 0x300 for the Ethernet device. Jean II : 0x3E0 is really fine as well...*/

0x300 0x390 0x3E0 0x3C0

#endif /* 0 */

0x300 0x3E0

}

make config

make all

make bzImage

這裡必須要特別注意,一般我們只需要make all make zImage就可以了不過實際上這樣make出來的kernel太大,所以會造成失敗的,因此一定要make allmake bzImage;請參考 /usr/src/linux/README的說明

mv /vmlinuz /vmlinuz.2.0.0

ˆ cp /usr/scr/linux/arch/i386/bzImage /vmlinuz lilo

reboot後,螢幕出現

eth0WaveLAN at 0x30008:00:6A:2A:BE:47 IRQ 10

nwid 0x82-96 2.00 2422 MHz

這就表示抓到wireless網路卡。

第三節、linux Device Driver

Device Driver 是在核心中專門管理週邊設備用的,一般使用者的程式,必須經過系統呼叫才可透過核心應用週邊驅動程式來達成任務。核心中的設備表大致上可以分為兩種:

 字元設備轉換表 (Character device switch table)又簡稱cdevsw

區塊設備轉換表 (block character device table) 又簡稱bdevsw

cdevsw表示cdevsw 結構的陣列,而bdevswbdevsw結構的陣列,至於核心如何知道使用者對那一個設備有興趣,完全取決於設備檔案的類別,主要設備識別碼和次要設備識別碼。裝置檔的openclose系統呼叫需經過兩轉換表的其中一個,mountumount系統呼叫也需要用區塊裝置的裝置openclose。字元特別檔的readwriteioctl系統呼叫經過cdevsw的相對應程式。

n 關於open裝置的演算法:

Algorithm open

Input pathname

openmode

outputfile descriptor

{

convert pathname to inode,

increment inode reference count,

allocate entry in file table, user file descriptor,

as in open of regular file

get major, minor number from inode

save context ( algorithm setjmp) in case of long jump from driver

if (block device)

{

use major number as index to block device switch table

call driver open procedure for index:

pass minor number, open modes

}

else

{

use major number as index to character device switch table

call driver open procedure for index:

pass minor number, open modes

}

if( open fails in driver)

decrement file table, inode counts

}

ch2無線區域網路概念wireless lan 802.11

第二章、無線區域網路概念

1985年,美國聯邦通訊委員會(FCCFederal Communications Commission)決定開放三個ISM頻帶(Industrial Scientific Medical bands),即902~928MHz2.4~2.483GHz5.725~5.875GHz等三個頻帶。此一動作不僅滿足了當時對通訊頻帶日益增加的需求,對於無線網路發展更有著重要的影響。到了90年代初,使用ISM頻帶的通訊產品紛紛出現在市場上,為了使各種競爭的產品之間能夠互通,標準的制訂就成了重要的工作,而後便有IEEE 802.11無線區域網路(wireless LAN)的標準產生。

第一節、IEEE 802.11標準

IEEE 802.11主要的目的是要制訂一套適合在無線網路環境下作業的通訊協定,最重要的工作,就是要制訂出MAC層(Media access control sublayer

和實體層。因此IEEE 802.11的參考模式主要分成三個部份;第一部份定義適用於所有無線網路系統的MAC規格;第二部份制訂和傳輸媒介相關的PHY規格;第三部份則是說明power saving functionality的部份。

為了要達到無線網路的透明化,無線區域網路希望做到在邏輯鍵結層(LLC)就能和別的網路相通,這使得無線區域網路必須將處理移動性收發站及保持資料傳輸可靠性的能力全部做在MAC層中,這和傳統有線網路在MAC所需具有的功能是不同的。此外,針對三種不同的ISM頻帶,也都有不同的PHY規格。

IEEE 802.11無線網路的主要特性如下:

u 傳輸速率最低為1Mbps

u 傳輸媒介為無線電波。

u 通訊協定為CSMA/CA,提供優先權服務。

u 訊框為IEEE 802.11 CSMA/CA訊框。

u 提供保證傳送延遲服務。如果同時有兩個或兩個以上的工作站同時傳送訊框,則會發生衝撞並將訊框視為無效且丟棄。而使用CSMA/CA可避免大部份不必要的衝撞,因此可提供保證傳送延遲的服務。

u 頻寬使用不保證公平。每個工作站實際使用的頻寬量可能不同。

u 較不適合多媒體資訊傳輸。雖然提供保證傳送延遲服務,但1~2Mbps尚不足以應付具有及時要求的多媒體資訊。

第二節、無線區域硬體網路架構

IEEE 802.11中,制訂了兩種不同類型的無線區域網路架構:

² 有基礎架構之無線區域網路(infrastructure Wireless LAN

² 無基礎架構之無線區域網路(Ad Hoc Wireless LAN

所謂的基礎架構通常指的mobile可經過Singlehop聯繫上一個現存的有線網路。在這種網路中,mobile經過Singlehop所連結上的有線網路的特殊節點,稱作access points(簡稱AP)。AP的功能就是要將一個或多個的無線區域網路和現存的有線網路分散系統相連結,以提供某個無線區域網路中的收發站,能和遠距離另一個無線區域網路的收發站通訊。另一方也促使無線區域網路中的收發站,能擷取有線分散是系統中的網路資源。這一類的無線網路通訊範圍,通常是以同一棟建築物出現,例如:商店、醫院,或是同一層樓。

無基礎架構的無線網路主要是要提供不限量的用戶,能及時架設起無線通信網路。在這種網路架構中,通常任兩個用戶間都可以直接通訊,這一類的無線網路架構在會議室、戰場或山區經常用的上。IEEE 802.11所制訂的架構允許Infrastructure Wireless LANAd Hoc Wireless LAN使用同一套基本擷取協定。不過,應用上還是以Infrastructure Wireless LAN居多。

第三節、無線區域網路軟體架構

軟體架構主要可分為收發站軟體與分散式系統軟體二部份。IEEE 802.11的標準中並沒有規定應如何實作軟體架構,而僅是彈性的規定軟體架構應符合哪些功能才能滿足整個系統的需求。

收發站服務由收發站所提供,主要是要求收發站具備正確收送資料的能力,另外也考慮到傳送資料的安全性:

² 身份確認服務(Authentication

² 隱密性服務(Privacy

分散式系統服務則由分散式系統所提供。此類服務要求MAC封包可以在所有與分散式系統連結的無線網路間正確的傳送。這也就是說,只要是在整個擴展無線網路區域中,不論收發站如何移動,都應該要能正確的傳輸與接受其本身的資料。分散式系統服務大部份是由AP來呼叫使用,因此AP也扮演著工作站與分散式系統間的橋樑。其提供五種服務

² 連結服務 (Association)

² 取消連結服務 (Disassociation)

² 分送服務 (Distribution)

² 整合服務 (Integration)

² 重連結服務(Reassociation

ch1無線網路專題wireless lan 802.11

第一章、緒論

第一節、研究動機

電腦網路的快速發展,除了使得人類的生活更加方便之外,更為資料通訊提供一個新的里程。因為網路,一部電腦除了具有資料處理的能力,更兼具了遠距通訊的功能。各種資訊與資源透過網路的連結達到資訊流通、資源共享的目的,使我們在許多領域都能輕鬆、便捷地完成許多工作。

而在眾多的電腦網路工業中,無線網路通訊被視為近年來一個快速成長的領域。因為無線網路可以成為有線網路網路的延伸;除了在有線網路的末端提供大量的行動通訊外,在有線網路佈線不易的偏遠地區(如離島、深山),或是臨時性、機動性的通訊區域(如戰場、火車),無線網路通訊都是一個經濟實用的選擇。

目前在國外有很多知名的大學,如美國的RutgerrsColumbiaCanegie Mellon大學以及德國的Aachen大學、還有一些商業公司如IBMCISCO公司的研發部門都設置轉屬的實驗室致力於行動計算的研究,以建構未來無線通訊的藍圖。而隨著行動電話業務開放民營,行動資訊市場擴大,使用者漸漸普及,更證明了行動計算(Mobile Computing)將是未來網路通訊的潮流。有鑑於此富有商機與前瞻性的遠景,興起我們研究無線網路的興趣。

第二節、研究目的

在無線網路通訊中,有許多演算法與通訊協定被認為是相當有效且有幫助的。但礙於無線網路軟體與硬體上的限制,很多通訊協定與演算法僅能獲得電腦上的模擬,而尚不能獲得實際的測量與驗證。除此之外,許多行動計算上的應用,也都需要一個可供測量的環境來針對其效能與演算法加以評估,以達成進一步的最佳化。所以我們希望研究一個無線網路的實驗平台,提供我們去測試各種communication protocol,使我們可以加以修改與評估其效能,並提供各種應用程式一個良好的監測環境。

第三節、研究方法與內容

我們研究的內容大部份集中在無線網路的驅動程式上,最後並以一個無線網路的通訊協定來測驗整個實驗平台。因為技術上與研究領域的考量,我們不深入研究無線網路的硬體部份,而把研究的焦點集中在軟體的驅動程式上。經過實際的評估與各種測試,我們決定選用Linux作為我們實作平台的作業系統;這不僅是因為Linux上的軟體可以免費取得,程式碼完全公開,更因為它是數年來網際網路網路上成千上萬人的共同合作開發完成的,而使得其穩定性及實用性接獲得肯定,這點由目前的Linux佔網路伺服器作業系統的10%-%之比率(其餘大部份為商業軟體)更可以得到證明。為了完成整個實驗平台,我們進行了下列工作:

² 瞭解linuxkernel的架構。[1]

² 研究與notebook之無線網路卡相關的PCMCIA Architecture[2][9]

² 研究IEEE 802.11[3][4][10]

² 研究無線網路部份通訊協定[4][5]

² 研究TCP/IP通訊協定[6][7][8]

² Trace無線網路驅動程式之source code

² 修改無線網路驅動程式並加入操作界面。

在研究的過程中,各種參考的書籍與資料,都提供我們相當大的幫助。

第四節、各章摘要

第二章我們說明了無線區域網路的觀念,包括IEEE 802.11規格,並簡介無線區域的網路架構,以及一些無線網路通訊協定上的模擬。第三章我們記錄linux作業環境的建構與安裝,第四章則以驅動程式主,介紹整個驅動程式的架構,並對相關的處理作說明。第五章中,我們針對一個通訊協定加以實驗與測量。最後一章則是本文的結論與實驗平台未來的研究方向。

ch4無線網路驅動程式

第四章、無線網路驅動程式

第一節、函式的分類與簡介

整個驅動程式大致上可以分成十一類。

l 硬體configuration函式類

l configuration相關函式類

l I82593晶片控制函式類

l 發訊卡管理函式類

l 中斷處理函式類

l 接收封包函式類

l 傳送封包函式類

l 雜項函式類

l 除錯與秀訊息函式類

l 模組函式類

其主要功能如下

雜項類

包含禁止中斷、回復中斷、資料結構類型檢查等

發訊卡管理類

包含對發訊卡暫存器(HACR)的讀寫,對參數儲存區(PSA)的讀寫,對發訊卡控制器(MMC)的讀寫,對頻率延伸記憶體的讀寫(FEE)等

i83593晶片控制類

包含送命令到i82593晶片,對晶片configuration,以及對晶片buffer的處理

訊息與除錯類

顧名思義就是用來秀出各種訊息及除錯的函式。

接收封包類

包含封包的接收與檢查及相關的資料讀取等。

傳送封包類

將上層送下來的封包處理後送出去

硬體設定類

包含晶片設定,各硬體資料的初始化,硬體的啟動等等。

中斷處理函式類

包含對各中斷事件的判斷與各種處理,以及對時間的監視。

模組函式類

包含模組的初使啟動以及清除等。

第二節、無線網路卡CONFIGURATION PROCESS

(1) Card Insert PCMCIA socket

(2) cardmgr/ect/pcmcia/config檔讀取Card的名字。

(3) cardmgr動態地載入object file of the driver

(4) kernel執行ini_model()。向Card ServiceRegister這個driver

(5) cardmgr call DS_BIND_REQUEST ioctl

(6) Driver Services檢查DS_BIND_REQUEST是否和其dev_info

同。若是,呼叫drivers attach()。(在Wavelan Driver中即wavelan_attach()

------------------- Registration階段完成 ------------------

(7) event of card insertionsocket layer產生。

(8) event_hander()被呼叫。

(9) event_heaner()呼叫derivers config()。(在Wavelan Driver中即wavelan_config()

(10)drivers config()進行一連串的configuration工作。

------------------- Configuration階段完成 -----------------

第三節、對驅動程式的處理

我們曾經參考一個類似的文件,它的目的大致上也是建立一個可供研究的無線網路環境。不過與我們不同的是這個份文件所建立的驅動程式並沒有支援上層網路的應用程式,也就是說,雖然有網路可以聯通,但其程式已經沒有網路的功能,整個驅動程式並不是屬於net device driver而是傾向character device driver。對於我們來說,我們希望不但能夠建立一個可供研究的實驗平台外,也希望能儘量保持其原有的網路功能。因此,基本上我們儘可能保持原來驅動程式的完整,而主要的處理部份則是把焦點放在資料封包的傳送以及接收這兩大類的函式。因為只要在封包由下往上傳遞的過程中,我們可以將之攔截起來並加以處理,那就相當於在整個通訊網路層中插入一個我們想要處理或加工的平台介面,則所有我們想要作的實驗與測量,都可以透過此一介面對之進行測試。

處理器大廠超微( AMD)日昨向美國德拉瓦州威明頓( Wilmington)聯邦法院控告,先前宏達電耗巨資買下威盛子公司S3 Graphics,並向美國國際貿易委員會(ITC )控告蘋果涉嫌侵權所引用的4項專利權,實際上是歸屬於旗下繪圖晶片公司ATI。

處理器大廠超微( AMD日昨美國德拉瓦州威明頓( Wilmington)聯邦法院控告,先前宏達電耗巨資買下威盛子公司S3 Graphics,並向美國國際貿易委員會(ITC )控告蘋果涉嫌侵權所引用的4項專利權,實際上是歸屬於旗下繪圖晶片公司ATI。

超微希望ITC暫緩進行S3控告蘋果侵權案的調查,先讓法院來決定這4項專利權、究竟誰才是真正的擁有者?據外電報導,ITC原本預計在11月1日,就S3控告蘋果侵權一案公佈最終決定。

宏達電耗資3 億美元買下S3,並控告蘋果侵權。而根據ITC法官7月的裁決,蘋果侵犯了S3的2項繪圖晶片相關專利,另2項專利則無效,而ITC現在正就此裁定進行複審。

只是沒想到,與蘋果有合作關係的超微,卻在此時出面宣稱S3控告蘋果侵權的這4項專利,實際上歸屬於子公司ATI。

超微指出,子公司ATI在2001年3月買下了Sonicblue部份事業後,就取得了這些專利,ATI雖擁有這些專利,但拒絕以原告身分參與ITC訴訟。超微還指出,除非德拉瓦法院下令暫停審理作業,否則ITC將可作出裁定,禁止配備超微繪圖晶片的蘋果電腦進口販售。

至於蘋果方面則否認侵犯S3專利權,而且也向ITC申訴,希望ITC裁定S3並未擁有這些專利。

不過S3方面則表示,S3於2001年1月自Sonicblue 接收了這些專利,美國政府於2002年記錄了這次專利移轉,所有的公開文件也都支持S3擁有這些專利,S3確實擁有此4項專利權,AMD在接近ITC終判的時候才提出這樣的說法,只是為了干擾ITC審判進行。


宏達電、蘋果專利權大戰,正式進入第二回合。ITC昨日同意宏達電8月中旬與9月初提出蘋果共侵犯宏達電8項專利的請求,對蘋果展開侵權調查。

由於蘋果7月初在ITC控告宏達電侵權,也已獲得ITC同意調查,昨日ITC同意宏達電的要求後,代表雙方專利權之爭已進入第二回合。

蘋果7月初在美國ITC對宏達電第二度提出侵權訴訟後,宏達電先在8月中向ITC反告蘋果侵權,8月底取得Google轉移給宏達電的9項專利後,宏達電在9月8日趕緊向ITC補件。

昨日ITC終於通過宏達電請求,決定開啟蘋果是否侵害宏達電專利的調查。

綜合宏達電對蘋果第2度提告的項目,包括兩項與WiFi相關專利,宏達電自行開發的PDA系統、通訊系統、電源系統三者間相互通訊專利,以及4項由Google轉讓給宏達電的專利,包括OTA(Over-the-Air,即透過3G或WiFi等無線方式獲得最新軟體或作業系統)、序列週邊介面(SPI)、主機與外接式記憶卡或外接式硬碟(如iPod)的設定等。

就專利殺傷力來看,兩項WiFi相關專利與4項Google轉讓給宏達電的專利,乍看之下相差不多,都具有十足威力,不過,宏達電握有的WiFi專利顯然是構成WiFi通訊協定的基礎之一,宏達電必須服膺於FRAND原則之下,也就是說,一旦ITC因WiFi專利而做出對蘋果不利的決定,蘋果可以要求宏達電授權,宏達電不得拒絕、也不能提出高於市價的授權金,沒辦法透過WiFi專利達到讓蘋果產品在美國禁售、以便逼蘋果和解的目的。

而Google轉讓給宏達電的專利,相較之下不屬於無線通訊基本協定範圍,不需服膺FRAND原則,只要ITC能做出對宏達電有利的判決,宏達電就有機會藉由蘋果產品在美國禁售的機會,要求蘋果不再透過訴訟手段對宏達電苦苦相逼,或是對蘋果提出高額賠償。