傳統的無線隨意網路(MANET)研究,核心命題是怎麼挑下一跳 ——
AODV 先發 RREQ 找出一條路徑再走、GPSR 用座標每跳現場貪婪選鄰居。
Meshtastic 的答案是:都不是,它基本上不挑。
要理解為什麼這樣可行,得先看一個數字。
⏱️ 空中時間才是稀缺資源
Meshtastic 預設的 LongFast 模式,實際資料速率大約 1.07 kbps。
對照 802.11g 的 54 Mbps,差了大約五萬倍。
同一個 16 bytes 的小封包:
- 在 Wi-Fi 上佔用頻道 0.0024 毫秒
- 在 LoRa LongFast 上佔用 約 354 毫秒 —— 整整三分之一秒
在這個尺度下,維護路由表的控制封包本身就是奢侈品。
AODV 的一次 route discovery 要 flood 一輪 RREQ、等 RREP 回來,那已經是好幾秒的空中時間 ——
在一個「一小時可能只有幾則訊息」的網路裡,建路徑的成本很可能高過直接把資料送出去。
還有第二個理由:MANET/VANET 最難的部分是移動性,
路徑建好三秒後就斷了,得花更多控制封包去修補。而 Meshtastic 的節點絕大多數是不動的 ——
架在屋頂、架在山頂、放在窗邊,一放好幾個月。那個最難的題目在這裡根本不存在。
🌪️ 但它也不是天真的氾濫
「每個節點收到就再廣播一次」——這在 1999 年之後基本上就是
廣播風暴的定義。那篇經典論文
(Ni、Tseng、Chen、Sheu, MobiCom '99)提出了幾類抑制手段:probabilistic、
counter-based、distance-based、location-based、cluster-based。
Meshtastic 其實把那套抑制術學走了一大半,它丟掉的是路由層,不是抑制術:
- 重複封包抑制 — 每個封包有 ID,收過就丟掉
- 轉送前先聽 — 等一下再轉,聽到別人已經轉了就取消。這是 counter-based scheme
- 跳數上限 — 預設 3、最多 7,硬性限制擴散半徑
- SNR 決定的競爭視窗 — 最精巧的一條。
隨機等待時間的長短跟收到的 SNR 有關:SNR 越差(代表離發送者越遠)的節點,等待越短、越優先轉送;
近距離的節點聽到之後就縮手。
最後那條本質上就是 1999 年那篇論文裡的 distance-based scheme:
離得遠的節點轉送才有價值,因為它能把訊息推到新的區域;離得近的節點轉送幾乎是純浪費。
差別只在 Meshtastic 沒有量測距離,而是拿 SNR 當距離的代理變數 ——
在一個節點未必有 GPS、也未必信任彼此座標的網路裡,這比實際距離更務實。
所以精確的說法不是「Meshtastic 放任廣播風暴」,而是:
它保留了 1999 年那套廣播抑制術,但把整個路由層丟掉了。
風暴被關在一個半徑三跳的籠子裡,但籠子裡面,它就是風暴。
這段的完整脈絡在這篇文章。
🧪 模擬器在算什麼
節點隨機散佈,通訊半徑固定(半徑從哪來?鏈路預算那一頁)。左上角那個白圈節點發出一則訊息,然後:
- 發送時,半徑內所有節點都聽得到,而且頻道被佔用整整一個空中時間
- 半雙工:一個節點在發送時收不到任何東西
- 碰撞:接收期間只要有第二個聽得到的發送重疊,這次接收就毀了
- 成功收到之後,依照選定的策略決定要不要轉送、以及等多久
🎮 動手試試
- 先按「四種策略各跑 40 次比較」。這是整頁的重點:天真氾濫用了最多轉送、製造最多碰撞,送達率卻是最低的。做更多事,得到更差的結果。
- 比較「天真氾濫」與「+重複抑制」。只加了重複抑制,差別意外地小 —— 因為大家還是搶著同時轉送。光有去重,不夠。
- 再看「+轉送前先聽」。轉送次數與碰撞都直接腰斬 —— 隨機退避加上取消機制,才是真正壓下風暴的那一招。
- 最後看 Meshtastic 那一根。轉送次數跟 counter-based 差不多,送達率卻明顯更高。因為先轉送的是最遠的節點,每一次轉送推進的新領土最大。這就是 SNR 排序買到的東西。
- 切到「天真氾濫」模式看動畫。你會看到大量黃色圓盤同時亮起、互相重疊,紅點(碰撞)到處都是。再切到 Meshtastic,轉送變成一波一波向外推。
- 把跳數上限從 3 拉到 7。送達率上升,但總空中時間也跟著漲。Meshtastic 預設 3 不是保守,是在拿覆蓋範圍換頻道容量。
- 把退避視窗 CW 從 100 ms 拉到 2000 ms(空中時間不動)。碰撞從約 6 次掉到 3 次,但傳播完成時間從 1.4 秒變成 2.7 秒。抑制術買到的可靠度,是用延遲付的 —— Meshtastic 的競爭視窗就卡在這個取捨上。
- 把空中時間與 CW 同時縮小 10 倍(35 ms / 70 ms)。四項數字幾乎完全不變 —— 這個模型只在乎比例,不在乎絕對時間。所以「LoRa 很慢」本身不是問題,問題是它慢到一個封包就佔滿頻道三分之一秒,而法規還在限制你的責任週期(duty cycle)。
- 把節點數拉到 70。節點越多覆蓋越好,但天真氾濫會惡化得更快 —— 這正是廣播風暴問題的本體。
🕳️ 這個模型沒有處理的事
- 捕獲效應(capture effect) —
真實的 LoRa 在兩個訊號重疊時,往往仍能解出比較強的那一個。這裡一律判定為碰撞,
所以碰撞數字是悲觀的,天真氾濫在真機上不會這麼慘。
- 隱藏終端只被間接模擬到。兩個互相聽不見的節點同時發送、
在中間的節點造成碰撞 —— 這在模型裡會發生,但沒有 RTS/CTS 這類機制可以比較。
- 暴露終端完全沒有模擬。本模型的節點不會因為聽到別人講話就抑制自己的發送
(沒有 CSMA 的 defer 行為),所以「該講卻不敢講」的浪費看不到。
- 真實的 SNR。這裡直接拿距離當 SNR 的代理,
但多路徑那一頁剛講過,
真實 SNR 會劇烈起伏 —— 一個很近的節點也可能剛好落在深衰落裡。
- 節點不會動,也沒有封包遺失重傳、沒有 ACK、沒有訊息佇列。
📚 走到這裡
六頁走完了:從一條鏈路的每一個 dB、天線怎麼把能量指向某處、地形與反射怎麼破壞它、
通道理論上能塞多少,到最後一群節點怎麼共用這條又慢又擠的通道。
回頭看,這裡用到的數學全部來自站上既有的頁面 ——
陣列因子是傅立葉、衰落統計是中央極限、容量的單位是熵那一頁的 bit。
電波沒有自己發明一套數學,它只是把那些工具指向了空氣。
留言 0
留言載入中…