第二章 架構的設計
2.2 無縫式轉換演算法
因為我們的方法是利用WLAN 訊號強度與資料傳輸的關係,所 以我們的演算法,以訊號強度的大小為主要考量,但因為訊號強度並 不能百分之百代表WLAN 的狀態,因此我們還加入封包遺失與確認 的考慮。因為偵測訊號強度的行為,主要是在client 端,所以我們將 演算法分為client 端與 server 端來分別討論:
Client 端
綜合上述的兩項變因,我們設計如圖2-1 的狀態轉換圖,
圖 2-1 Client 端狀態轉換圖
首先說明一下各個名稱代表的意義,SHigh、SMedium、SLow表示 偵測到的訊號強度的值,是大於 HT、介於 HT、LT 之間、或 是小於LT,GPRS_on 跟 GPRS_off 則是經由五次在 GPRS 上 的封包遺失得知,橫向表示WLAN 的狀態,縱向表示 GPRS 的狀態,狀態右下角表示當時的傳輸方式,接下來對狀態轉
14
封包遺失,卻是1 秒、2 秒、4 秒(Exponential back-off),會 將時間拉的很長,所以我們只判斷一次的封包遺失。15
Server 端
因為要讓server 的行為盡量與 client 一致,所以 server 端的設 計跟client 端一樣,差別只在 server 端的狀態轉變,必須透過 client 來通知,其狀態轉變圖如圖 2-2,狀態轉換方式跟 client 一樣,都是採用保守的方式。
圖 2-2 Server 端狀態轉換圖
WGood、WWeak、WBad、GPRS_on、GPRS_off,都是由 client 送來的封包夾帶的資訊所取得,server 根據這些值來與 client 作狀態同步的動作,但因為client 夾帶的狀態對 server 來說是 client 上一刻的狀態,所以我們仍然需要傳送短封包來作連線 狀態的測試。
16
以下用一個例子來說明client 與 server 狀態轉變的流程。
圖2-3 狀態轉變流程 INIT
如圖2-3,client 在做初使連線的時候,會告訴 server 他所使用的 IP 與 priority。
圖2-4 狀態轉變流程 WActive,GActive
如圖2-4,初使狀態為 WActive,GActive,此時資料傳輸都透過WLAN。
17
圖2-5 狀態轉變流程 WActive,GActive → WWeak,GActive
如圖2-5,當 client 移動到訊號強度衰落的位置,就會偵測到訊號 強度介於HT 與 LT 之間,所以狀態轉移到 WWeak,GActive,接著他會發 送HB 封包來通知 server,因為此時的傳輸方式是並傳,所以 HB 封 包會由兩條路徑傳送,當server 收到這個封包後,就會轉移到
WWeak,GActive。
圖 2-6 狀態轉變流程 WWeak,GActive → WInactive,GActive
18
如圖2-6,當 client 移出 WLAN 涵蓋的範圍,就會偵測到訊號強 度小於LT,則 client 會嘗試透過 WLAN 發送一個 HB 封包,確定封 包遺失發生後,就會轉換到WInactive,GActive這個 state,然後透過 GPRS 送一個HB 通知 server,server 收到後,也會送一個 HB 來測試 WLAN 這條路徑,當封包遺失發生後,server 也會轉換到 WInactive,GActive。
圖 2-7 狀態轉變流程 WInactive,GActive → WWeak,GActive
如圖2-7,當 client 回到訊號強度衰落的位置時,就會偵測到訊號 強度介於HT 與 LT 之間,所以狀態轉移到 WWeak,GActive,接著他會發 送HB 封包來通知 server,因為此時的傳輸方式是並傳,所以 HB 封 包會由兩條路徑傳送,當server 收到這個封包後,就會轉移到
WWeak,GActive。
19
圖2-8 狀態轉變流程 WWeak,GActive→ WActive,GActive
如圖2-8,當 client 回到訊號強度很好的地方,就會偵測到訊號強 度大於HT,然後就會連續傳送 3 個 HB 封包(等一個 ack 回來再送下 一個) ,如果 3 個都順利 ack,則會轉換到 WActive,GActive,接著透過 WLAN 傳送一個 HB 通知 server,server 收到後,也會連續送 3 個 HB 封包來測試WLAN 是否很穩定,如果 3 個都順利 ack,則 server 也會 轉換到WActive,GActive。
GPRS 不能使用的情況,因為只剩 WLAN 可用,所以不管 WLAN 狀況如何,還是只有一種選擇,因此不特別做討論。