5. MAC 模組模組之開發設計與實作
5.4. MAC 模組之介面測試
5.4.1 與 Ad-Hoc 隨意網路繞徑模組之介面測試
為了驗證 Ad-Hoc 隨意網路繞徑模組與媒體存取控制模組之間的 IP 封包收發是否相 符,Ad-Hoc 隨意網路繞徑模組先發送 IP 封包給媒體存取控制模組,觀察兩模組顯示出的 封包內容。接著,由媒體存取控制模組回傳IP 封包至 Ad-Hoc 隨意網路繞徑模組,觀察顯 示出的封包內容。測試環境示意圖如圖5-21 所示。實際測試環境場景圖如圖 5-22 所示。
圖5-21 介面測試環境示意圖
圖5-22 實際測試環境場景圖
(由所至右為 Ad-Hoc 隨意網路繞徑模組、媒體存取控制模組、媒體存取控制模組之顯示終 端機)
Ad-Hoc 隨意網路繞徑模組先發送 IP 封包給媒體存取控制模組,圖 5-23 為 Ad-Hoc 隨 意網路繞徑模組顯示器所顯示其發送的 IP 封包內容,Ad-Hoc 隨意網路繞徑模組發送一個 大 小 為 128 Bytes 的 UDP Broadcast 封 包 , 其 內 容 為 ASCII 編 碼 的”abcdefghijklmnopqrstuvwxyz12345000…”。圖 5-24 為媒體存取控制模組的終端顯示,顯 示其所接收的封包內容,與Ad-Hoc 隨意網路繞徑模組發送的封包內容一致。
圖5-23 由 Ad hoc 隨意網路繞徑模組所發送之 UDP broadcast packet 內容
圖5-24 由 MAC 模組所收取之 128 bytes UDP broadcast packet 內容
接著由媒體存取控制模組回傳IP 封包至 Ad-Hoc 隨意網路繞徑模組,圖 5-25 為回傳的 UDP Broadcast 封 包 , 其 大 小 為 128Bytes , 其 內 容 為 ASCII 編 碼 的”abcdefghijklmnopqrstuvwxyz12345…”。圖 5-26 為 Ad-Hoc 隨意網路繞徑模組顯示器所顯 示其接收的IP 封包內容,與媒體存取控制模組所回傳的封包內容一致。
圖5-25 由 MAC 模組所回傳之 128 bytes UDP broadcast packet 內容
圖5-26 由 Ad hoc 模組所接收之 UDP broadcast packet 內容 5.4.2 與基頻模組之介面測試
為了驗證媒體存取控制模組與基頻模組間的訊框收發正常,先由媒體存取控制模組發 送一組512 Bytes 大小的測試訊框,基頻模組接收訊框後,將訊框輸出至邏輯分析儀,並將 所接收的訊框內容列表,與媒體存取控制模組所發送的訊框比對是否相同。接著,基頻模 組將邏輯分析儀所產生之大小為512Bytes 的測試訊框發送至媒體存取控制模組,媒體存取 控制模組將所接收的訊框內容顯示於顯示終端機上,與基頻模組所產生之測試訊框比對。
測試環境示意圖如圖5-27 所示。實際測試環境場景圖如圖 5-28 所示。
媒體存取控制模組 之顯示終端機
基頻模組 媒體存取控制模組
RS232
杜邦線
邏輯分析儀 圖5-27 介面測試環境示意圖
圖5-28 實際介面測試環境場景圖
(由左而右依次為邏輯分析儀、基頻模組、媒體存取控制模組、媒體存取控制模組之終 端顯示器)
如圖5-29 所示,媒體存取控制模組產生一筆 512 Bytes 的測試訊框,將測試訊框傳送 至基頻模組。基頻模組接收到測試訊框後,從設計好的測試腳位輸出至邏輯分析儀,由圖 5-30 可知基頻模組所接收到的測試訊框長度與媒體存取控制模組所傳送的訊框長度相同,
圖5-31 顯示媒體存取控制模組送出之 Enable 腳位信號與 Data 腳位信號有對齊,且 Data 腳 位信號也正常送出。再由邏輯分析儀將訊號列表後與 MAC 模組終端機顯示之測試訊框內 容比較,由多次實驗結果可知,MAC 模組傳送之測試訊框與基頻模組所收取之訊框內容完 全相同。
圖5-29 媒體存取控制模組的終端顯示
圖5-30 邏輯分析儀擷取基頻模組接收之媒體存取控制模組測試訊框
圖5-31 邏輯分析儀擷取基頻模組接收之媒體存取控制模組測試訊框
為了驗證基頻模組傳送之測試訊框可以被媒體存取控制模組接收,基頻模組取得由邏 輯分析儀所產生之測試訊框,將訊框內容從設計好的測試腳位輸出至數位示波器,並傳送 給媒體存取控制模組。媒體存取控制模組接收到測試訊框後,將該訊框之內容列印於媒體 存取控制模組之終端機上。邏輯分析儀產生”FF0101…”的 512 Bytes 測試訊框,如圖 5-32,
輸出至基頻模組。基頻模組再將測試訊框傳送至媒體存取控制模組並由 GPIO 輸出至邏輯 分析儀,圖 5-33 為邏輯分析儀擷取基頻模組傳送給媒體存取控制模組之信號。由圖 5-33 可知,基頻模組送出之Enable 信號與 Data 信號有對齊,且 Data 信號也正常送出。圖 5-34 為媒體存取控制模組終端機顯示媒體存取控制模組接收到的測試訊框內容,經多次實驗結 果,基頻模組傳送之測試訊框與媒體存取控制模組所收取之訊框內容完全相同。
圖5-32 邏輯分析儀產生之測試訊框內容
圖5-33 邏輯分析儀擷取到基頻模組傳送給媒體存取控制模組之信號
圖5-34 媒體存取控制模組之顯示終端機顯示接收到基頻模組傳送之測試訊框內容
6. Ad-hoc 混合式多重繞徑協定
6.1 簡介
在MANET 的群播擇路協定當中,以結構來分主要有兩大類:網狀結構與樹狀結構,
分別以ODMRP 協定和 MAODV 協定為代表。樹狀結構的組織是由一個根(Group Manager) 延伸出許多樹枝,每根樹枝再延伸小樹枝出去,這樣的結構比較單純,優點是要維持結構 存在所消耗的頻寬資源會比較小;但相對的,每一個節點之間的聯繫穩定度比較差,在移 動性較大的網路之中,為了修復連結,反而造成更多的頻寬消耗,所以樹狀結構比較適用 於數量大但較靜態的網路環境。而網狀結構沒有”根”的觀念。在每一個節點之間,可能會 有很多路徑可以連結,結構比較複雜,優點剛好跟樹狀結構相反,每一個節點之間的聯繫 比較不容易斷,比較適用於移動性大的網路。但缺點是為了維持結構的存在,需要較多的 頻寬資源,所以網狀結構比較適用於數量小但較動態的網路。
ODMRP 協定是一種有需要才傳送(On-Demand)的群播協定,透過參加要求封包(Join Request)和參加表格封包(Join Table)以及週期性廣播參加要求封包來更新群組會員以及路 徑的資訊來維持繞徑的正確性與封包到達率,因為是網狀結構所以對於同一個群播成員會 有很多條路徑可以到達,因此可以增加群播網路的穩定性。MAODV 協定也是一種 On-Demand 的群播協定,不過它是使用樹狀結構來構成群播網路,由群組的領導節點週期 性廣播群組問候訊息來更新群組會員以及路徑的資訊,由於是樹狀結構,因此到達一個群 播成員的路徑僅有一條,而且又因為維持不易,所以在封包到達率方面是比較不如網狀結 構的設計。
故最終在設計群播擇路協定時,以網狀架構為主要考量,並簡化 ODMRP 實際做出 SMRP 協定,且研究在節能考量的前提下,如何設計出降低 ODMRP 中轉送節點群組 (Forwarding Group)數量進而減少資料封包轉送次數達到節省整體網路能量消耗的目的。以 下兩節分別介紹SMRP 與節能考量之群播協定(ECMRP),並分別附上驗證與模擬結果供為 參考。
6.2 Scalable Multicast Routing Protocol (SMRP) 的控制花費(Control Overhead),而且採用網狀結構(Mesh-based Structure),網狀結構有比較 強健的穩定性,況且架構簡單,並且比樹狀結構(Tree-based Structure)容易維護,可以有比 樹狀結構更少的花費。對於同樣使用網狀結構的ODMRP 協定來說,SMRP 協定於多資料 來源點(Multi-Sources)傳輸時,RREP-J 的回傳方式採用分別回傳至來源端節點,而不是如 同ODMRP 協定般將多個 RREP-J 建立為 JREP-T(Join Reply Table)回傳,將減輕回傳 JREP-T 時可能因封包碰撞或資料傳送錯誤而造成整體網路的負擔。
6.2.4 實作方法
在硬體方面使用研華公司的 PCM-7230 來實作群播擇路協定,擇路協定則利用 Linux Kernel 中所提供的 Netfilter 和 Socket Stack 所提供的介面函數和 Linux Kernel 溝通。Netfilter 是Linux 核心的一個子系統,Netfilter 使得例如封包過濾、網絡地址轉換(NAT)以及網絡連 接跟蹤等技巧成為可能,這些功能僅需通過使用核心網絡程式碼提供的各式各樣的hook 既 可以完成。這些hook 位於核心程式碼中,可以是靜態鏈接或是以動態加載的模塊的形式存 在。可以為指定的網絡事件註冊相對應的處理函數,數據封包的接收就是這樣一個例子。
Netfilter 中定義了五個關於 IPv4 的 hook,對這些 hook 符號的定義可以在 linux/netfilter_ipv4.h
中找到,這些hook 列在下面的表中:
NF_IP_PRE_ROUTING 在完整性校驗(CRC Check)之後,擇路確定之前 NF_IP_LOCAL_IN 在擇路確定之後,且數據封包的目的是本地主機
NF_IP_FORWARD 目的地是其它主機的數據封包
NF_IP_LOCAL_OUT 來自本地主機的數據封包在其離開本地主機的過程中 NF_IP_POST_ROUTING 在數據封包離開本地主機之前,擇路之後 SMRP 註冊的處理函數所使用到的 hook 分別為 NF_IP_PRE_ROUTING 與
NF_IP_LOCAL_OUT,而註冊一個 hook 處理函數使用 nf_hook_ops 結構十分的簡單,
nf_hook_ops 結構在 linux/netfilter.h 中定義,該結構的定義如下:
struct nf_hook_ops { struct list_head list;
/*以下的值由使用者填寫*/
nf_hookfn *hook;
int pf;
int hooknum;
/*Hook 以升冪的優先層級排序*/
int priority;
};
註冊一個Netfilter hook 需要調用 nf_register_hook()函數,以及使用到一個 nf_hook_ops 結 構。nf_register_hook()函數以一個 nf_hook_ops 結構的位址作為參數並且返回一個整數型的 值。
而另外使用到的Socket Stack 也內建在 Linux Kernel 中,主要是在提供使用者網路存取的功 能,擇路協定利用它來產生控制封包並且傳送封包。
6.2.5 模組與介面測試
Ad-hoc 群播繞徑模組(SMRP)功能符合性測試 1. 測試項目表
代碼 測試項目 測試項目簡介 備註
NET-C-01 Node Join 測試新節點是否能夠加入已存在之 multicast group NET-C-02 Group Member
Monitor
驗證來源節點是否能夠監測目前群組成員組成
2. 測試程序
(1)NET-C-01:Node Join (a)測試設備與系統參數
PCM-7230 嵌入式系統 5 套 (b)測試系統架構與場景
<註> 節點 C,D 預設為群組成員;節點 A 為初始網路架構下之封包發送節點,節 點E 為中途加入之封包發送節點。
(c)測試步驟
Step 1: 原始網路組成僅有來源節點 A,中繼 Relay Node B,群組成員 C,D.
Step 1: 原始網路組成僅有來源節點 A,中繼 Relay Node B,群組成員 C,D.