二、 相關研究
2.2 時槽式跳頻法(SSCH)
[3]為微軟公司(Microsoft) Raramvir Bahl、Ranveer Chandra 及 John Dunagan 的研究,簡稱 SSCH(Slotted Seeded Channel Hopping),是一個 分散式的演算法,只需用單張網卡,不過需要時間的同步。
SSCH 利用跳頻的方式來達成提升空間中頻道的再使用率(Spatial Reuse),SSCH 定義一個時槽(slot)為在單一頻道上所花費的時間,他們選 擇一個時槽為 10 毫秒,並定義頻道排程(channel schedule)為一連串的頻 道作為跳頻順序,頻道排程包含目前的頻道和一個跳頻的規則,可利用規 則計算出下一個時槽該跳至那一個頻道,利用規則來跳頻可以節省使用龐 大的空間來儲存跳頻的順序,每個網格點必須儲存並維護其它鄰居區內所 有網格點的頻道排程。
SSCH 用四組(channel,seed)配對來組成頻道排程,他們實驗結果顯示 四組已經有很好的效能增進,用(xi,ai)來表示(channel,seed),xi 表示 [0,12]共 13 個可能的頻道,而 seed ai 為[1,12]個整數,每個網格點會一 直根據頻道排程的資訊來跳頻,下個時槽的跳頻頻道公式為:
xi<-(xi+ai)mod 13 ---公式(一)
13 為可能的頻道,此篇假設可用頻道為 13 個,這個可用頻道數必需為質數 個,如此一來,利用公式(一)的跳頻方法,任意兩個網格點的 ai 不同,便 能保證在跳躍過程中,每 13 次的跳躍,一定會有某個時槽,而且只有一個,
兩個網格點的頻道會跳到同一個頻道,如此即使頻道排程互不相同的兩個
網格點也能經由這種偶發性的頻道重疊而進行溝通,主要是用在廣播上。
但如果兩個網格點頻道排程的頻道不同,但種子(seed)相同時,使可能發 生兩個頻道永遠沒有重疊的情況,所以走訪完每個配對的所有頻道必須加 上一個配類時槽(parity slot) ,這個配類時槽所需跳躍到的頻道為第一 個配對的種子(seed)的數值,加了這個配類時槽就能避免兩個網格點的頻 道不一樣但種子(seed)相同帶來頻道永遠無法重疊的情況,因為至少能在 配類時槽能重疊。
下圖 4 為兩個網格點的頻道排程,此例共有 3 個頻道,2 組(channel,seed) 配對,每一個週期(cycle)必須走訪完每個配對的所有頻道加上一個配類時 槽(parity slot),接著一直重覆著這個週期。如圖可以看到網格點 A 的第 一組配對(x1,a1)和網格點 B 的第一組配對(x1,a1)均為(1,2),表示兩個網 格點的第一組配對頻道排程相同,跳頻的順序均會相同,在此配對的時槽 中,兩個網格點便可進行溝通,因為種子(seed)也相同,所以在配類時槽 (parity slot)也會重疊。在圖中時槽裡的數字表示在這個時槽要跳躍到的 頻道,網格點 A 的第一個配對(1,1)表示目前這個時槽使用頻道是頻道 1,
而更新的規則是加上種子(seed)1,所以下一次跳躍的頻道是(1+1)mod 3=2。
1 1 2 0 0 2
11
(channel,seed)1 (x1,a1) (1,1) (2,1) (0,1) (1,1) (1,1) (channel,seed)2 (x2,a2) (1,2) (0,2) (2,2)
A
Slot 1 2 1 2 1 2 parity 1
1 1 2 0 0 2
11
(channel,seed)1 (x1,a1) (1,1) (2,1) (0,1) (1,1) (1,1) (channel,seed)2 (x2,a2) (1,2) (0,2) (2,2)
A
Slot 1 2 1 2 1 2 parity 1
1 2 2 1 0 0
11
(channel,seed)1 (x1,a1) (1,1) (2,1) (0,1) (1,1) (1,1) (channel,seed)2 (x2,a2) (2,2) (1,2) (0,2)
B
Slot 1 2 1 2 1 2 parity 1
圖 4、時槽式跳頻法 (SSCH)
當某網格點想要傳輸資料給某鄰居網格點時,可以改變自己的某個 (channel,seed)配對跟鄰居相對應的配對相同,如此,這個配對所屬的時
模擬中是以四組配對作為實驗。在如此的架構下,除非(channel,seed)配 對完全相同,否則最多頻道只會重疊一次,可降低干擾,至於廣播的問題,
他們在每個時槽均廣播自己的頻道排程,因為每個週期(cycle)會至少頻道 重疊一次,所以利用這個性質,便可確保在一個週期內可把廣播訊息廣播 出去。
SSCH 的缺點在於廣播所需要的時間很長,假設每個時槽為 10 毫秒、13 個可用頻道,需 530 毫秒才能確保廣播至所有的鄰居網格點,對於繞徑 (routing)尤其不利,找尋路徑需花費很長的時間。而且每個時槽都必需廣 播自己的排程,花費高。另外,SSCH 並沒有規定那些需固定用那些頻道排 程 , 不 小 心 就 一 群 人 都 使 用 相 同 的 排 程 , 造 成 頻 道 擁 塞 (channel congestion),需要做反同步(de-synchronization)來把頻道使用再度打 散。
三、時槽式多重頻道管理協定
整理了許多多重頻道相關的研究,我們想出了一個方法適用在有限頻道 數、單張網路卡、IEEE 802.11 相容、分散式(distributed)、網狀網路(Mesh Network)的多重頻道管理協定,不過需要時間的同步,並可容易擴充至多 張網路卡的環境。
3-1、基本原理
我們發展了一套適用於無線網狀網路(Wireless Mesh Network),而可 實 作 在 鏈 結 層 (link layer) 上 使 用 多 重 頻 道 的 頻 道 管 理 協 定 (channel 收頻道(receiving channel),例如 A 使用 Channel 3,B 使用 Channel 5,
C 使用 Channel 4 等,假如 B 要傳輸資料給 A,會用 Channel 3 去傳輸資料,
同時 C 要傳資料給 D,會用 Channel 1 去傳輸,所以在同一個鄰居區內,CD 和 AB 的傳輸會用不同的頻道,而降低干擾使網路吞吐量(throughput)增 加。至於一個網格點如何選取適當的頻道,稍後會做詳細的說明,下面先
接收端為主(receiver-based)的設計會產生一個問題,如果網格點 A 要 傳送資料給網格點 B,A 會切換到 B 的接收頻道(receiving channel)上,
但假設此時 B 也正要傳送資料給 C,則 B 會切換到 C 的接收頻道(receiving
圖 6、channel model
如圖 6:在這個例子中 k 值為 7,當網格點 B 要傳送資料給 A,因為 B
B: Broadcast Slot : use common channel to do broadcast S: Sending Slot: time for sending data
R: Receiving Slot : time for receiving data
F: Fixed Receiving Slot :receiving slot that can’t change to sending slot
E
Receiving Channel : 3 Receiving Slot: 3,4,5
Repeat B: Broadcast Slot : use common channel to do broadcast S: Sending Slot: time for sending data
R: Receiving Slot : time for receiving data
F: Fixed Receiving Slot :receiving slot that can’t change to sending slot
E
Receiving Channel : 3 Receiving Slot: 3,4,5
Repeat
有收到 A 的廣播說 A 的時槽 3,4,5 是用來接收資料的時槽,因此 B 要送資 料給 A 時,B 會利用時槽 3,4,5 將頻道切換到 A 的接收頻道(receiving channel),在此例中為 Channel 3,來進行資料的傳輸。
另 外 要 解 決 的 問 題 是 廣 播 (broadcast) 的 問 題 , 在 多 重 頻 道 (multi-channel)的網路環境下,因為每個網格點可能正使用不同的頻道,
如何做有效率的廣播就是一個問題,相關研究中廣播的方法大多是複製多 個廣播封包(broadcast packet)在每個頻道都廣播出去,以便確保鄰居都 能接收到此廣播封包,我們所採取的做法是選擇第一個時槽裡當成廣播時 槽(broadcast slot),在這個廣播時槽裡,頻道會切換到一個大家共同的 頻道,其目的就是要把所有的網格點在這個時候同時切換至此共同頻道 上,如此一來,所有的網格點便能同時接收或傳送廣播封包,因為我們並 沒有改變 IEEE 802.11 的 MAC 協定,所以這時的接收和傳送是經由 IEEE 802.11 的競爭機制在傳送。這樣做的好處在於每一次的廣播只需廣播一次 便所有的網格點都接收的到,並不需要在每個頻道上做廣播的動作,也不 需要複製多個廣播封包。此外,我們必須考量一個問題:這樣是不是會造 成頻道擁塞(channel congestion)?因為這個時候所有的網格點都切換到 這個頻道上,造成封包過多超過這個頻道所能負荷的量。在我們的協定裡,
這是可以避免的,因為我們定義的一個週期的時槽數可經由廣播封包和一 般封包的比例來設定,廣播時槽可以在一個週期不一定只有一個,可以有 兩個或三個,可視這個網路的特性去調整這個參數。廣播時槽帶來的好處 還不只這些,在多重頻道上同步是有困難的,因為所有的人不在相同的頻 道上,有了這個廣播時槽,順使可以在這個時槽發送信號彈(beacon)來達 成時間同步的效果。
3-2、協定設計細節
發展這個管理協定,衍生出一些待解決的議題,第一,如何決定每個網 格點的接收頻道(receiving channel)?第二,如何分配每個網格點傳送時
傳送時槽和接收時槽的順序?第四,進入某個傳送時槽時,要選擇傳送給 那一個鄰居才不會造成不公平?
3-2-1、接收頻道分配
( Receiving Channel Assignment )
為什麼要選擇接收頻道?因為接收頻道的選擇關係到整個網路的效能,每 個連線(wireless link)使用愈不同的頻道,干擾的情況就愈小,整體網路 效能便能上升。干擾範圍半徑通常為溝通範圍半徑的二到三倍,現在我們 來敘述一個網格點如何選擇接收頻道,其方法如下:
1. 加入網路後,先聽數個週期,但不發送訊息,得知 1~3-Hop 鄰居(neighbor) 使用頻道的資訊。
2. 使用 Hop Weight 來決定干擾程度,Hop 愈長,Weight 愈小,選一個干擾 程度最小的接收頻道當自己的接收頻道(receiving channel)。
3. 在 廣 播 時 槽 廣 播 自 己 的 接 收 頻 道 (receiving channel) 並 幫 忙 轉 送 1~2-Hop 鄰居的接收頻道。
4. 收到其它網格點的資訊,更新自己的資料表,此時便知道其它 1~3-Hop 網格點的接收頻道分佈狀況。
5. 每隔一段時間檢查資料表,查詢每個頻道的干擾程度,發現自己的接收 頻道干擾程度比其它頻道大時,重覆步驟 2~4。
圖 7 、選擇接收頻道
以上圖 7 為例,A、B、C、D、E、F 節點代表的是每個網格點,旁邊的
ch1
E F
D
A
B
C ch3
ch2
ch2
??
ch1
Receiving Channel
數字代表接收頻道為幾號頻道,總頻道數為 3,以 ch1、ch2、ch3 表示。假 設 1-Hop Weight=3, 2-Hop Weight=2, 3-Hop Weight=1,點 C 是剛加入網 路的網格點,因為鄰居網格點會在廣播時槽廣播自己的接收頻道是那一個 頻道,當 C 收集一段時間後便能得知 1-Hop 鄰居 B、D、F 的接收頻道為 ch1、
ch1、ch2,2-Hop 鄰居 A,E 的接收頻道為 ch3,ch2,沒有 3-Hop 的鄰居,計 算每個頻道的干擾狀況,ch1 干擾程度=3+3=6,ch2 干擾程度=3+2=5,ch3 干擾程度=2,所以選一個干擾程度最小的的頻道 ch3 當接收頻道,接著廣 播自己的接收頻道讓其它網格點知道。因為我們的演算法是一個以接收端 的頻道(receiver-based)做為傳輸頻道的方法,要傳輸就必需切換到接收 端的接收頻道去傳輸,如果每個接收端的接收頻道均不同,則每條連線所 使用的頻道就會不同,干擾便會大幅降低,使用 Hop Weight 的原因是因為 距離愈遠,干擾的程度就愈小,變成比較不重要,比重就要低一點。如此 一來,選擇到的接收頻道便能達到比較好的效果。
3-2-2、傳送接收時槽比例分配
( The Ratio of Sending and Receiving Slot )
我們觀察到並不是每個網格點傳送量和接收量總是均衡的,每個網格點的 網路流量特性不同,某些網格點比較傾向接收資料,或傾向傳送資料,所 以 傳 送 時 間 和 接 收 時 間 的 比 例 我 們 設 計 成 可 變 的 , 因 此 傳 送 時 槽 數 (sending slot)和接收時槽數(receiving slot)變成可動態依照情況而改 變,至於如何分配每個網格點傳送時槽和接收時槽的比例,我們使用單位 時間內需傳送量和需接收量的比例來當傳送時槽和接收時槽的比例。公式 為:
α* S/R < O/I Î S+1,R-1 β* S/R > O/I Î S-1,R+1
α、β為穩定度的參數,S 為目前傳送時槽的數目,R 為目前接收時槽的數 目(包含固定接收時槽 fixed receiving slot),O 為單位時間需傳送量,I
α、β為穩定度的參數,S 為目前傳送時槽的數目,R 為目前接收時槽的數 目(包含固定接收時槽 fixed receiving slot),O 為單位時間需傳送量,I