Meshtastic: 為什麼你不應該使用 ROUTER 模式

在使用 Meshtastic 建構無線通訊網路時,許多人直覺地認為,將位於制高點或訊號良好的節點設定為 ROUTER (路由器) 模式,是擴展網路覆蓋範圍的最佳方法。
然而,這個看似合理的設定,在未經協調的情況下,反而會因為 Meshtastic 精心設計的核心傳輸機制,導致訊息傳播效率低下,甚至形成訊號障礙。

結論:最理想的狀態下,在同一個地理區域內,只應該有一台經社群協調的 ROUTER。其他所有用於擴展覆蓋範圍的輔助高處節點,都應設定為 ROUTER_LATE 模式,才能在確保覆蓋率的同時,避免網路衝突。image 123

演算法核心:Meshtastic 的「智慧廣播 (Managed Flooding)」

要理解為何多個 ROUTER 會產生問題,我們必須先了解 Meshtastic 的廣播演算法。它並非簡單的「收到就轉發」,而是一種更聰明的機制,旨在效率最大化並避免「廣播風暴」。

其運作方式如下:

  1. 智慧排序轉發: 當 CLIENT 節點收到需要轉發的廣播訊息時,它會根據訊號雜訊比 (SNR) 來決定轉發的優先級。SNR 越低,代表該節點距離發送端越遠。演算法會優先讓距離最遠的節點進行轉發,這樣能最有效地將訊息推向網路的邊緣。
  2. 聆聽與取消機制: 在準備轉發前,節點會先短暫聆聽。如果在聆聽期間,它偵測到已有其他節點轉發了同一個訊息,那麼它就會取消自己的轉發任務,以避免不必要的重複傳輸。

這個設計的初衷是讓整個網路像一個有智慧的團隊,自動選擇最佳路徑來傳遞訊息。

ROUTER 模式如何破壞這個機制?

ROUTERREPEATER 模式被設計為基礎設施節點,它們的行為很直接:無視 SNR 規則,以最高優先級立即轉發收到的所有封包。

當一個區域內只有一個 ROUTER 時,它能有效地作為網路的核心。但當兩個或更多未經協調的 ROUTER 同時存在時,它們的高優先級轉發就會互相「打架」,並干擾 CLIENT 節點的正常判斷,從而破壞了原有的智慧廣播機制。

實際案例:一則從新竹發往萬華的訊息

讓我們用一個具體的例子來說明這個災難性的後果。

  • 目標: 位於新竹的 A 點,想發送一則訊息給位於萬華的 D 點。
  • 網路設置:
    • 在中間的桃園地區,有兩個訊號良好的高處節點,都被錯誤地設定為 ROUTER 模式(ROUTER-1ROUTER-2)。
    • 土城有一個 CLIENT 模式的節點 C,它是將訊息傳遞到萬華 D 點的關鍵中繼站。

問題發生流程:

  1. 新竹 A 點的訊息成功傳送到了桃園的 ROUTER-1ROUTER-2
  2. 由於這兩者都是 ROUTER 模式,它們會無視 SNR 規則,立即以高優先級轉發訊息。
  3. 土城的 C 節點,可能先收到了來自 ROUTER-1 的轉發。作為一個 CLIENT,它根據演算法,啟動了等待計時器,準備稍後轉發。
  4. 但在它的計時器結束前,它又收到了來自 ROUTER-2 轉發的同一個訊息
  5. 此時,C 節點的「聆聽與取消」機制被觸發。它認為「已經有別人幫我轉發了」,於是取消了自己的轉發任務
  6. 結果: 訊息傳播到土城 C 點後就戛然而止,再也無法抵達最終目的地萬華 D 點。桃園的兩個 ROUTER 無意中形成了一道「訊號牆」,阻礙了訊息的進一步傳播。

正確的解決方案:成為聰明的「補漏者」ROUTER_LATE

為了解決這個問題,Meshtastic 提供了 ROUTER_LATE (延遲路由器) 模式。

根據官方文件,ROUTER_LATE 的特性是:

它會轉發封包,但只有在所有其他模式的節點都廣播完畢之後才會進行。

這代表 ROUTER_LATE 的轉發優先級非常低。它會耐心等待,直到它確定沒有其他節點要轉發這個封包時,它才會出手「補漏」,覆蓋那些可能沒被主鏈路訊號觸及的死角,但絕不會干擾主要的傳播路徑。

面對現實:當「人人都覺得自己節點很重要」時

理論很清楚,但社群的運作往往更複雜。一個很現實的挑戰是:「永遠都會有人覺得自己的節點位置絕佳、很重要,因此堅持將其設定為 ROUTER 模式。」

當一個區域內出現多個未經協調的 ROUTER 時,就會傷害整個區域網路的穩定性。面對這種情況,我們可以嘗試以下方法:

  • 溝通與協調: 這是最好的方法。透過地方性的 Meshtastic 社群(例如 LINE、Telegram 或 Facebook 群組)進行溝通。在架設高處節點前,先主動詢問或查看地圖,了解區域內是否已有公認的主要 ROUTER
  • 教育勝於指責: 與其指責他人設定錯誤,不如友善地分享這篇文章或相關知識。讓更多人理解 ROUTERROUTER_LATE 的運作差異,以及為何合作對大家都有好處。
  • 心態的轉變: 我們需要建立一個共識:在 Meshtastic 網路中,貢獻最大的節點不一定是 ROUTER。一個位置絕佳的 ROUTER_LATE 節點,能在不干擾主鏈路的情況下,完美地補上訊號死角,其重要性完全不亞於 ROUTER。它是一個更聰明、更具團隊精神的選擇。

結論與建議 📡

為了建立一個高效且可靠的 Meshtastic 網路,請遵循以下原則:

  • 一個區域,一個 ROUTER 在你的主要覆蓋區域內,透過社群協調,選擇位置最好、最核心的那個節點設定為 ROUTER。但通常那個 ROUTER 早就已經存在了。
  • 輔助節點用 ROUTER_LATE 其他所有用於延伸或增強訊號的高處節點,都應設定為 ROUTER_LATE。這才是真正能擴大覆蓋範圍且不造成衝突的設定。
  • CLIENT 是網路的主力軍: 請記住,在「智慧廣播」機制下,每一個 CLIENT 節點都是網路的中堅力量,它們共同構成了訊息傳遞的鏈條。

透過正確的角色設定與友善的社群溝通,我們可以避免無謂的網路衝突,讓 Meshtastic 的「智慧廣播」機制發揮最大效益,共同打造一個更穩定、更廣闊的通訊網路。

參考資料

  • Meshtastic 演算法官方文件
  • Meshtastic 裝置設定官方文件
  • 國外案例分享

也許你也會想看看