← 回電波專區

Chapter 3 · 極限與網路

🕸️ 多跳網路:氾濫、抑制與空中時間

沒有基地台、沒有路由表,只有一群小裝置互相接力。當一個封包要佔用頻道整整三分之一秒,「要不要幫忙轉送」就變成一個很貴的決定。

已收到訊息 正在佔用頻道 還沒收到 發生過碰撞 黃圈 = 排隊等著轉送
🔀 轉送策略
📊 這一次的結果
送達率
轉送次數
碰撞次數
總空中時間
最遠跳數
傳播耗時
🎛️ 網路
節點數30
通訊半徑26
跳數上限(可被轉送幾次)3
單封包空中時間354 ms
退避視窗 CW700 ms
播放速度1.0×

⚖️ 四種策略同場競技

四種策略跑在完全相同的 40 組佈點上再平均 —— 單一次結果幾乎只反映運氣,不能拿來比較。

📖 為什麼這裡的瓶頸不是路由

傳統的無線隨意網路(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 年那套廣播抑制術,但把整個路由層丟掉了。 風暴被關在一個半徑三跳的籠子裡,但籠子裡面,它就是風暴。 這段的完整脈絡在這篇文章

🧪 模擬器在算什麼

節點隨機散佈,通訊半徑固定(半徑從哪來?鏈路預算那一頁)。左上角那個白圈節點發出一則訊息,然後:

  1. 發送時,半徑內所有節點都聽得到,而且頻道被佔用整整一個空中時間
  2. 半雙工:一個節點在發送時收不到任何東西
  3. 碰撞:接收期間只要有第二個聽得到的發送重疊,這次接收就毀了
  4. 成功收到之後,依照選定的策略決定要不要轉送、以及等多久

🎮 動手試試

  1. 先按「四種策略各跑 40 次比較」。這是整頁的重點:天真氾濫用了最多轉送、製造最多碰撞,送達率卻是最低的。做更多事,得到更差的結果。
  2. 比較「天真氾濫」與「+重複抑制」。只加了重複抑制,差別意外地小 —— 因為大家還是搶著同時轉送。光有去重,不夠。
  3. 再看「+轉送前先聽」。轉送次數與碰撞都直接腰斬 —— 隨機退避加上取消機制,才是真正壓下風暴的那一招。
  4. 最後看 Meshtastic 那一根。轉送次數跟 counter-based 差不多,送達率卻明顯更高。因為先轉送的是最遠的節點,每一次轉送推進的新領土最大。這就是 SNR 排序買到的東西。
  5. 切到「天真氾濫」模式看動畫。你會看到大量黃色圓盤同時亮起、互相重疊,紅點(碰撞)到處都是。再切到 Meshtastic,轉送變成一波一波向外推。
  6. 把跳數上限從 3 拉到 7。送達率上升,但總空中時間也跟著漲。Meshtastic 預設 3 不是保守,是在拿覆蓋範圍換頻道容量
  7. 把退避視窗 CW 從 100 ms 拉到 2000 ms(空中時間不動)。碰撞從約 6 次掉到 3 次,但傳播完成時間從 1.4 秒變成 2.7 秒。抑制術買到的可靠度,是用延遲付的 —— Meshtastic 的競爭視窗就卡在這個取捨上。
  8. 把空中時間與 CW 同時縮小 10 倍(35 ms / 70 ms)。四項數字幾乎完全不變 —— 這個模型只在乎比例,不在乎絕對時間。所以「LoRa 很慢」本身不是問題,問題是它慢到一個封包就佔滿頻道三分之一秒,而法規還在限制你的責任週期(duty cycle)。
  9. 把節點數拉到 70。節點越多覆蓋越好,但天真氾濫會惡化得更快 —— 這正是廣播風暴問題的本體。

🕳️ 這個模型沒有處理的事

  • 捕獲效應(capture effect) — 真實的 LoRa 在兩個訊號重疊時,往往仍能解出比較強的那一個。這裡一律判定為碰撞, 所以碰撞數字是悲觀的,天真氾濫在真機上不會這麼慘。
  • 隱藏終端只被間接模擬到。兩個互相聽不見的節點同時發送、 在中間的節點造成碰撞 —— 這在模型裡會發生,但沒有 RTS/CTS 這類機制可以比較。
  • 暴露終端完全沒有模擬。本模型的節點不會因為聽到別人講話就抑制自己的發送 (沒有 CSMA 的 defer 行為),所以「該講卻不敢講」的浪費看不到。
  • 真實的 SNR。這裡直接拿距離當 SNR 的代理, 但多路徑那一頁剛講過, 真實 SNR 會劇烈起伏 —— 一個很近的節點也可能剛好落在深衰落裡。
  • 節點不會動,也沒有封包遺失重傳、沒有 ACK、沒有訊息佇列。

📚 走到這裡

六頁走完了:從一條鏈路的每一個 dB、天線怎麼把能量指向某處、地形與反射怎麼破壞它、 通道理論上能塞多少,到最後一群節點怎麼共用這條又慢又擠的通道。

回頭看,這裡用到的數學全部來自站上既有的頁面 —— 陣列因子是傅立葉、衰落統計是中央極限、容量的單位是熵那一頁的 bit。 電波沒有自己發明一套數學,它只是把那些工具指向了空氣。

📚 補充閱讀

留言 0

留言載入中…