• 沒有找到結果。

第三章 : 跨網路預先認證的階層式移動網路之設計、架構與方法

3.4 動態之跨網路預先認證機制的設計方法

3.4.3 Location Management步驟

跨網路預先認證機制中,最重要的步驟就是 Location Management 步驟,

不論是 Pre-Authentication 步驟中尋找下個可能會到達的存取點,又或者是 Re-association 步驟中更新位置伺服器內的位置資訊,都需要藉由 Location Management 步驟來協助處理。Location Management 步驟簡單來說就是執行位 置伺服器的運作機制,我們所設計的位置伺服器除了會記錄固定存取點之外,

Pre-Authentication 步驟中 AAA 伺服器需要負責傳送預先認證成功的訊息 給所有候選的存取點,因此位置表內必須記錄存取點的 IP 位址,才能讓 AAA

子存取點的資料,所以我們使用第二種記錄的方式,也就是讓每個存取點只記 錄父存取點資訊,由於每個存取點都會記錄目前幫忙服務的父存取點,因此階 層性的關係就自然而然地能夠被記錄在位置伺服器中。

所以位置表資料結構需要含有五個資料欄位,分別為:存取點 ID、存取 點 IP 位址、存取點絕對位置、存取點更新時間、以及父存取點 ID。

A. 存取點 ID(ARID):存取點的 MAC 位址。

B. 存取點 IP 位址(ARIP):當 AAA 伺服器要傳送預先認證的訊息給候 選存取點時,需要由這個存取點 IP 位址,才能將預先認證的訊息傳給 候選存取點。

C. 存取點絕對位置(Position):存取點實際環境中的絕對位置。

D. 存取點更新時間(Update time):這個欄位將記錄存取點更新的時間,

藉由這個欄位的儲存值,可以讓位置伺服器算出 MR 的移動速率以便 使用在尋找存取點的策略中(見 3.4.3.2 節)。

E. 父存取點 ID(PARID):父存取點的 MAC 位址,藉由這個欄位的儲存 值,可以讓位置伺服器記錄整個階層式移動網路的階層式關係。

以圖 3.11 的階層式移動網路拓撲而言,位置表的資料結構如表 3.1 所示。

圖 3.11 階層式移動網路的網路拓撲

Location Table

ARID MRIP Position Update Time PARID FR1 MAC FR1 IP FR1 position FR1 time N/A 而在 Pre-Authentication 步驟中,MR 如果偵測到目前使用的存取點訊號強度變 弱時,MR 會發出 Pre-Authentication request 訊息,並且將 MR 目前的所在位置 告知位置伺服器,因此位置伺服器就會有 MR 的兩個參考點位置,分別為:位 置表內所記錄的參考點位置,以及 Pre-Authentication request 訊息內的參考點 位置。經由這兩個參考點位置,位置伺服器就能夠取得 MR 的移動方向與移動 距離,另外,位置伺服器會根據 Pre-Authentication 訊息送來的時間,與位置表 內 MR 進入存取點時的時間資訊,計算出兩個參考點之間的時間差距,因此位

⎩ ⎨

點的 MR 負責在 Re-association 步驟中發出 Update Location 訊息,位置伺服器 就會為 MR 之下的所有 AR 更新位置,其詳細更新方式如下:

在更新位置表程序中會先宣告一個佇列,這個佇列是用來記錄尚未經過處 理的父存取點,然而發出 Update Location 訊息的 MR 正是整個移動網路的第 一層父存取點,因此 MR 為第一個放入佇列中等待處理的節點。由 3.4.3.1 一 節中,我們可以知道位置表內的 ARID 欄位代表這個項目的父存取點,因此當

這個項目的 ARID 欄位等於佇列中第一個節點時,則代表這個項目的父存取點 為佇列中的第一個節點,也就是,這兩個節點所管理的移動網路為同向移動的 兩個移動網路,所以兩個節點都需要更新位置資料,除此之外,以這個項目作 為父存取點的節點也需要更新位置資料,因此這個項目也必須要放在佇列中等 待處理。當佇列中所有節點都處理過後,就代表整個階層式移動網路的位置表 都已經經過位置更新的程序。

更新位置表程序的流程圖,如圖 3.13 所示:

圖 3.13 更新位置表程序的流程圖

1. 位置伺服器收到由 MR 於 Re-association 步驟中發出的 Update Location 訊 息,以取得 MR 的新位置。

2. 位置伺服器算出 MR 新位置與位置表內 MR 舊位置的位移值,將此位移 值存於變數 offset,然後,更新位置表內 MR 項目的位置資料和時間資料

(也就是 Position 欄位與 Time 欄位),並且,將 MRID 放入待處理的佇列 WQueue。

3. 判斷 WQueue 佇列內是否還有未處理的節點,如果還有未處理的節點,

則繼續進行步驟 4,如果所有節點都已經處理完,則結束更新位置表程序。

4. 取出 WQueue 佇列內的第一個待處理的節點存於變數 CMR 中。

5. 判斷位置表內是否還有未處理完的項目,如果還有未處理的項目,則繼

Offset = new MR position – old MR position ResetLTEntry(newMREntry)

Put MRID to WQueue.

CMR = MRID;

While ( CMR != EOF) {

EAR = FirstLTEntry(LTable);

While (EAR != NULL) {

if (CMR == EAR)

{

ResetLTEntry(EAREntry) Put EAR to WQueue

}

EAR = getNextLTEntry(LTable);

}

CMR = getNextWQElement(WQueue);

}