第三章 可適應性封包延遲傳送機制
3.1 ADT 機制之系統架構
本論文提出 ADT 機制,基於網路編碼的技術,使中繼節點具有編解碼的能 力。為了使節點具備編解碼的能力,我們需要對原始的架構進行修改。以下小節 描述基於網路編碼技術,新增或修改原始架構的部分。
3.1.1 封包表頭格式
所有資料封包在 MAC header 與 IP header 之間,新增 coding header,如圖 3-1。假設一個封包 payload 100bytes,MAC header 與 IP header 的資料結構有固定 的大小,MAC header 為 28 bytes,IP header 為 20 bytes,而 coding header 為可變 動大小。在 coding header 內的資料結構可以分成兩個區塊,第一個為 XOR block,
若封包是編碼封包,紀錄由哪些被編碼的封包資訊;第二個為 report block,中繼 節點紀錄最近接收到哪些的封包資訊,鄰居節點接收到封包存取 report block,即 可得知節點暫存那些封包,可作為未來節點在判斷編碼時的重要依據。
13
圖 3-1 資料封包格式
節點將封包進行編碼處理後,在 XOR block 紀錄封包由哪些封包編碼而成,
如圖 3-2。Encoded Number 記錄封包封包編碼數量,PKT_uid 紀錄被編碼封包編 號,Next-hop 紀錄被編碼封包的 next hop。若 Encoded Number 為 n,XOR block 記錄 n 組 PKT_uid 與 Next-hop,XOR block 的 size 為( (4 + 4) × Report Number + 1) bytes。假設一個編碼封包由 3 個封包編碼,封包的 Encoded Number 為 3,分 別記錄這 3 個封包的封包編號 PKT_uid 以及 next hop,XOR block 的大小為(1 + (4 + 4) × 3) = 25bytes。
圖 3-2 XOR block 資料結構
節點在轉傳封包之前,在 report block 紀錄最近接收的封包,如圖 3-3。節點 轉傳封包,鄰居節點接收封包後,存取 report block 的資訊,得知節點暫存哪些封 包,作為判斷編碼機會的依據。Report Number 紀錄總共幾筆封包編號資訊,
SRC_IP 為來源節點 IP,PKT_uid 記錄封包編號,當 Report Number 為 n,且 n >
0,代表有 n 筆封包編號,report block 的大小為(4 × Report Number + 5) bytes。假
14
設節點 N3最近收到了 P2、P4、P5,因此 Report Number 為 3,SRC_IP 為 3,PKT_uid 分別為 2、4、5,report block 的 size 為 4 × 3 + 5 = 17 bytes。
圖 3-3 Report block 資料結構
3.1.2 Packet pool
Packet pool 為一個暫存封包的空間,當節點接收到封包時,複製一份封包至 packet pool。當節點接收到到編碼的封包時,節點存取 coding header 的 XOR block,
取得封包是由哪些封包編碼合併而成,節點從 packet pool 裡尋找封包進行解碼,
假設編碼封包是由 3 個封包編碼而成,節點從 packet pool 裡找到其中 2 個封包,
才可解開封包。Packet pool 除了暫存封包,也記錄最近接收到哪些封包,當節點 轉傳封包前,將節點最近接收封包的資訊,寫入 report block,鄰居節點接收封包 後,即可得知節點最近接收到哪些封包,做為編碼判斷的依據。
3.1.3 Reception report
Reception report 是一個 table,記錄鄰居節點接收到哪些封包。當節點接收到 封包,存取 coding header 中的 report block,取得鄰居節點接收封包的資訊,記錄
15
在 reception report 內。節點轉傳封包前,判斷轉傳的封包與 queue 中其他等待傳 送的封包之間有無編碼的機會,透過 reception report 紀錄的資訊,得知鄰居節點 擁有哪些封包,若鄰居節點擁有足夠的封包解碼,將封包進行編碼。若節點收到 封包,report block 紀錄 Report Number 為 3,SRC_IP 為 4,PKT_uid 分別為 2、
4、8,代表節點 3 最近分別接收到 P2、P4、P8,將封包的資訊寫入 reception report。
3.1.4 Promiscuous mode
在無線網路中,封包傳送具有廣播的特性,若節點轉傳封包,若鄰居節點開 啟 promiscuous mode,鄰居節點可監聽傳送的封包。網路編碼利用此特性,當節 點傳送封包時,節點的鄰居節點監聽到封包後,封包暫存 packet pool,使節點在 解碼時,有足夠數量的封包解碼。
圖 3-4 Promiscuous mode
16