2026年8月23日

回憶之無線MANET與P2P、UPnP

前言:

延續上一篇。

P2P:

相信很多人都用過BT和eMule,不論哪一種,用的都是P2P,正如上一篇簡單提到的,P2P的核心邏輯是,我把我的檔案清單分享給別人,或者分享給檔案清單伺服器,別人就能知道我的檔案清單,那麼當需要的檔案我有的時候,就能夠從我這裡下載。
如果這個檔案同時很多人有,那麼就能同時跟很多人下載同一個檔案的分段,就能快速
下載。
而BT和eMule的差異主要是,eMule把自己的檔案清單分享到檔案清單伺服器,必須要連接著這台檔案清單伺服器;BT則是有DHT,DHT每個人維護一個BT用戶(節點)清單,透過torrent的資訊檔案,提供分享檔案的來源在哪,然後透過DHT詢問其他BT用戶(節點)誰有檔案,同時下載,不需要連接檔案清單伺服器。

MANET 與 P2P:

MANET和P2P因為都有自適應與自我組織的去中心化特性,因此P2P overlay MANET是個常見的組合。
很多Paper都會提到在MANET上面疊加P2P網路以提供檔案服務之類的。

所以其實有沒有發現,不論是MANET還是P2P,兩個的分享機制是相同的,差異只是分享的資訊是什麼,以及分享後的用途不同而已,在MANET中,分享的是路由表,處理的是跳點路由的路徑,而在P2P分享的是檔案資源清單,處理的是誰需要什麼檔案,檔案在哪裡。
所以通常MANET在底層,P2P在上層,兩者相同邏輯,層級不同,處理的Resource不同。
有沒有可能兩者合併?
嗯...這也是當時構想的方向,但兩者的資料屬性和用途差異太大,我後來覺得不太行,的確有Paper提過,但Paper的內容實際上還是2層,上面一樣是P2P,下面一樣是MANET。

UPnP:

UPnP相信很多人都聽過,但好像好一陣子沒聽到UPnP這東西了,UPnP也差不多是那個時代的技術之一。
UPnP的核心設計跟智慧家庭有關,因此它主要出現在MediaCenter和智能家電那個年代。
UPnP的作用是這樣的,它把裝置分為2種角色,控制器和被控制器,最典型的例子,印表機是被控制器,遙控器是控制器
所有裝置都要用制式的XML內容,先描述自己是控制器還是被控制器,再描述自己具備什麼服務(功能)。
例如:
我是印表機,我是被控制器,我提供的服務有彩色文件列印、黑白文件列印,我的IP,我的Port。
我是DVD播放機,我是被控制器,我提供的服務有DVD影片播放、影片快轉、影片倒轉、彈出托盤,我的IP,我的Port。
我是遙控器,我是控制端,我提供的服務有我能控制DVD播放機、控制電視機。

UPnP還提供了Discovery之類的探索功能,裝置會廣播自己的上述XML描述,然後別人就能根據UPnP廣播知道網路上有哪些UPnP裝置提供哪些服務。

P2P 與 UPnP:

既然P2P提供分享檔案清單,UPnP提供裝置服務資訊,那是否能把P2P和UPnP結合? 用P2P的方式分享UPnP的服務資訊?
對的,這就是進階的P2P服務探索功能,以P2P方式分享各個UPnP裝置資訊,就能做到動態的知道網路上有哪些服務裝置。

MANET + P2P 與 UPnP:

正如上面提到的,MANET 與 P2P 同質性很高,都具有自適應性、自組織性、去中心化能力,而UPnP有服務探索能力,能夠提供出裝置資訊,那麼MANET + P2P + UPnP會如何?
對的,當時有Paper提出這樣的美好願景,手拿著PocketPC進入辦公室,不用連線WiFi,直接透過MANET + P2P + UPnP,PocketPC就能知道有印表機、有鍵盤、有滑鼠、有螢幕,以及這些裝置的功能和作用。

想像:

有沒有一種可能,我們將 MANET + P2P 搭配像是 UPnP 這樣的Service Discovery功能,提供無人載具具備的「能力」,那麼,就能做到自適應、自組織多台無人載具自行組合與協調?
當然,我相信實際使用應該更單純,直接把功能硬編碼,在開機前就先設置好全部的組成功能,甚至制式化的根據特定配置預先定義好,說不定更簡單還方便。


回憶之無線網路MESH - MANET

前言:

這篇開始,會有幾篇以回憶的方式,把之前研究所時候的一個方向,無線網路電力路由的構想進行介紹。

緣起:

還記得研究所時,當時我問教授題目方向時,教授跟我說,讓我天馬行空想,那時F-22剛出現,號稱能夠共享數據鍊,於是異想天開跟教授提了無線網路的P2P,就這樣看了一年,後來沒做這方向,只有survey,這個方向最後的構想,就是無線網路電力路由,我想可以用回憶方式介紹技術。

MANET 與 MESH:

現在MESH WiFi已經很長見了,因此應該很容易解釋了。
簡單的說,所謂的MESH或MANET,指的是多個無線網路節點在一個區域內,當我們要從A地點傳資料給B地點,可是A和B地點太遠,無法直接透過一個WiFi AP通訊時,中間可以有多個WiFi AP,以接力轉傳的方式。例如,從A地點經過WiFi 1 -> WiFi 2 -> B地點,反過來也一樣,從B地點經過WiFi 2 -> WiFi 1 -> A地點進行資料傳輸,這種中間透過多個無線網路節點轉傳資料的方式,就是MESH或MANET。

MANET的Paper起源可以追溯到美國DARPA研究機構的兩種東西。
一種是越戰時,戰車或人員感測器以空投方式灑在戰場上,這些感測器因為隨機散佈而且範圍大,因此透過MANET這種跳點轉傳的形式傳遞感測器資料。
另一種是子母彈,但炸彈投出在高空打開灑出的一堆子彈頭,每個都是一個感測器,這些感測器之間同樣透過MANET方式轉傳感測器資料。
這兩種研究結果,一個延伸出颱風/颶風的投落送,一個延伸出動物棲息地的環境偵測。

我念研究所當時,SensorNetwork(WSN)(感測網路)很熱門,很多實驗室在做感測網路和802.15.4,號稱這是未來的重要發展,「感測網路」,又是Wireless,很自然就有人研究把MANET做在WSN上面。

MANET原理 - 網路路由:

MANET之所以稱為跳點路由,很直觀的看,它就是資料傳輸時的節點轉送機制,而在TCP/IP與網際網路中,路由轉送發展已久,有設定網路的都會聽過設定Gateway,IT通常都會學到靜態路由和動態路由。
網路概論都會提到常見的路由協定有RIP和OSPF,然後提到RIP是固定路由,OSPF則能根據路由器狀態,例如路由器的流量、CPU使用率之類的資訊,動態決定路徑。

我們把無線拿掉,單看資料轉發這件事,就會發現,其實MESH、MANET就是把OSPF、RIP這樣的路由協定做在Wireless上。
我們可以由此知道MANET第一個組成關鍵路由表

MANET原理 - P2P與MANET:

一個有趣的問題,為何看P2P會看到MANET?
這就跟MANET第二個組成關鍵有關了。
P2P常見的BT和eMule,曾經是非常獨特的設計,就算到現在也是自成一個特別的體系。
在P2P中一個核心邏輯是,每個人(節點)都有自己的檔案清單,這個清單內列出了我共享的檔案有哪些。
接著,每個人都會把自己的檔案清單分享給別人,或者分享給清單伺服器,每個人透過詢問能夠知道哪些檔案在哪裡
MANET把路由表以檔案清單的形式分享給其他節點,這讓每個無線節點,都會有一份自己維護的路由清單,裡面列出的是,要到哪個目的地,可以透過誰到達
可以想像,MANET等於是用P2P的方式分享路由表,然後透過維護路由表了解要傳資料給誰,要透過誰。

MANET原理 - 主流協定AODV、OLSR(、DSDV):

上面提到每個人都有自己的路由表,並透過詢問方式得知別人的路由資訊,如何詢問得知?

一般透過廣播,也就是大家自己用喊的。
A: 我是A,誰聽得到,回答我。
B: 我聽到了,A你可以連我。
C: 我聽到了,A你可以連我。
於是A的路由表就有
Target 經由
C         直連
B         直連

這種透過廣播方式,維護自己路由表的作法,就是DSDV,也是最簡易的版本。
AODV和OLSR是當時的2種主流路線:

  • AODV方向是,每個人不維護路由表,只在要傳輸時詢問。
  • OLSR方向是,每個人透過廣播方式告訴別人自己的路由表,大家各自維護一份路由表,但因為廣播會造成網路風暴或者Wireless訊號佔線,因此OLSR用了演算法降低網路風暴/Wireless佔線的影響。

白話的說,兩種方向,一種是平時不維護路由表,要傳資料時才問,一種是平時維護路由表,但會增加網路廣播影響。(細節不確定,這沒有仔細看)

沒有好壞,各有優缺點,平時維護路由表,要傳資料時直接就能傳,但可能遇到路由資料過時之類的問題,平時不維護,能省下維護路由表的負載,包括定時收發路由資料,但當要傳資料時,要先詢問路由狀態,會拖慢反應時間。
而目前常見的MESH WiFi多半是AODV,原因是,MESH WiFi幾乎都是固定放置不會移動的,因此只在第一次傳送時要詢問出路由,之後不用再問,能節省路由維護的負載。

目前與AI說的發展:

OLSRv2最後一次Release是在2018年,AODV也差不多2018年前後,顯然已經不是新技術了。
我詢問AI後,AI說近期學術Paper開始結合GPS之類的資訊,變成所謂的地理路由,根據GPS資訊或者相對位置,預測或選擇路由方式。
我自己的認知是,套用OSPF的概念,也就是把多個路由資訊進行加權評分,例如典型的WiFi信號強度,現在改成相對物理距離進行判斷,決定出路由路線。

研究所時的構想:

當時的構想跟上面一樣,假設感測節點有插電的,有太陽能的,有純粹電池的。
那麼,可以根據電池電量、是否插電為依據,加上WiFi信號強度當作路由的選擇標準,做動態路由。