關(guān)容量估算:SX1302真實(shí)帶機(jī)量解析)
最近做 LoRaWAN 項(xiàng)目選型的時(shí)候幾乎每個(gè)客戶都會(huì)問同一個(gè)問題你們那個(gè)基于 SX1302 芯片的網(wǎng)關(guān)到底能帶多少終端設(shè)備說實(shí)話這個(gè)問題看著簡(jiǎn)單但我每次都得解釋半天。同一個(gè) SX1302 網(wǎng)關(guān)有人穩(wěn)定帶過 2000 個(gè)節(jié)點(diǎn)也有人只帶了 300 個(gè)就頻繁掉線差距在哪就在容量估算的方法上。這篇就圍繞 LoRaWAN 網(wǎng)關(guān)的容量估算從 SX1302 的硬件結(jié)構(gòu)、空中時(shí)間計(jì)算、ALOHA 協(xié)議極限到實(shí)際部署中的工程修正把整個(gè)推算過程完整過一遍最后給出能直接套用的估算模板和擴(kuò)容思路。1. 先把容量問題拆開SX1302 網(wǎng)關(guān)的極限由什么決定1.1 SX1302 是什么它在網(wǎng)關(guān)里負(fù)責(zé)干什么LoRaWAN 網(wǎng)關(guān)一般由射頻前端、基帶芯片和主控處理器組成。SX1302 是 Semtech 公司的 LoRa 基帶數(shù)字芯片專門負(fù)責(zé)多路 LoRa 信號(hào)的解調(diào)處理。它本身不直接收發(fā)射頻信號(hào)而是配合 SX1250 或 SX1255/57 這樣的射頻收發(fā)器工作射頻芯片把空中的模擬信號(hào)采集成數(shù)字中頻數(shù)據(jù)SX1302 再對(duì)數(shù)字信號(hào)做解調(diào)、解碼、時(shí)間戳標(biāo)記等處理。SX1302 是 SX1301 的后繼產(chǎn)品。相比老一代它的功耗大幅下降SX1301 整機(jī)接收電流要 2A 左右SX1302 方案一般能控制在 0.5A 上下這對(duì)太陽能供電或者長(zhǎng)電保持的網(wǎng)關(guān)來說非常關(guān)鍵。同時(shí) SX1302 的外圍電路更簡(jiǎn)單一顆 6x6mm 的封裝就把 8 路 LoRa 解調(diào)、1 路 FSK 解調(diào)、GPS 時(shí)間同步接口、以及和主控的 SPI 通信全部集成進(jìn)去了。它的體積不大卻承擔(dān)著整個(gè)網(wǎng)絡(luò)同時(shí)聽多個(gè)設(shè)備說話的核心任務(wù)。不過話說回來很多朋友對(duì)8 通道網(wǎng)關(guān)這個(gè)概念有誤解以為 SX1302 能同時(shí)解調(diào) 8 個(gè)數(shù)據(jù)包于是就把容量估計(jì)得過于樂觀。實(shí)際情況要復(fù)雜得多這直接關(guān)系到后面的容量計(jì)算。1.2 8 通道不等于同時(shí)收 8 個(gè)包SX1302 內(nèi)部的 LoRa 解調(diào)資源確實(shí)有 8 路但這里的通道指的其實(shí)是 8 個(gè)頻點(diǎn)。在標(biāo)準(zhǔn)的 LoRaWAN 頻段規(guī)劃里上行鏈路通常分配 8 個(gè) 125kHz 的頻點(diǎn)比如國(guó)內(nèi)常見的 470-510MHz 頻段里選了 8 個(gè)頻點(diǎn)歐洲 868MHz 也是一樣網(wǎng)關(guān)把每個(gè)頻點(diǎn)映射到一路解調(diào)器上。每一路解調(diào)器負(fù)責(zé)監(jiān)聽自己對(duì)應(yīng)的那個(gè)頻點(diǎn)接收落在該頻點(diǎn)上任何擴(kuò)頻因子SF7 到 SF12的 LoRa 信號(hào)。因?yàn)?LoRa 的不同擴(kuò)頻因子在碼域正交所以理論上不同 SF 的信號(hào)在同一個(gè)頻點(diǎn)上可以同時(shí)存在、互不干擾。但問題是同一路解調(diào)器在同一時(shí)刻只能真正解調(diào)出一個(gè)數(shù)據(jù)包。如果這個(gè)頻點(diǎn)同時(shí)來了一個(gè) SF7 的包和一個(gè) SF12 的包解調(diào)器到底能挖出幾個(gè)取決于捕獲效應(yīng)和時(shí)序工程上不能指望它穩(wěn)定同時(shí)解出多個(gè)。所以嚴(yán)謹(jǐn)一點(diǎn)的描述是一個(gè) SX1302 網(wǎng)關(guān)在同一時(shí)刻最多處理 8 個(gè)物理數(shù)據(jù)包每個(gè)頻點(diǎn)一個(gè)。如果兩個(gè)終端在同一個(gè)頻點(diǎn)上用同一個(gè) SF 同時(shí)發(fā)包那就是硬沖突兩個(gè)都廢掉如果在同一個(gè)頻點(diǎn)上用不同 SF 同時(shí)發(fā)包有一定概率靠正交性都解出來但這不是一種能穩(wěn)定設(shè)計(jì)的容量來源。在做容量規(guī)劃時(shí)比較保守的做法就是按一個(gè)頻點(diǎn)同時(shí)最多一個(gè)包來算。1.3 決定容量的其他硬約束除了上述解調(diào)通道數(shù)量之外LoRaWAN 網(wǎng)絡(luò)的容量還受下面幾個(gè)因素約束這些約束在實(shí)際估算時(shí)往往比芯片參數(shù)更致命。第一個(gè)是頻譜資源的占用方式。LoRaWAN 使用非授權(quán)頻段國(guó)內(nèi) 470-510MHz、歐洲 868MHz、北美 915MHz 等由于 LoRa 采用 ALOHA 隨機(jī)接入機(jī)制設(shè)備想發(fā)就發(fā)沒有預(yù)約機(jī)制所以沖突概率是數(shù)學(xué)上天然存在的。這一點(diǎn)在下文會(huì)詳細(xì)展開。第二個(gè)是單包空中時(shí)間。不同擴(kuò)頻因子下的 LoRa 包在空中停留時(shí)間差別非常大。SF7 的 20 字節(jié)包可能只要約 100 毫秒同樣的包在 SF12 下要 1.4 秒以上??湛跁r(shí)間越長(zhǎng)每一個(gè)包占用信道的時(shí)間就越長(zhǎng)網(wǎng)絡(luò)容量自然越低。這是估算容量最核心的一個(gè)參數(shù)。第三個(gè)是區(qū)域法規(guī)的占空比限制。在 ETSI 定義的歐洲 868MHz 頻段終端和網(wǎng)關(guān)心每個(gè)小時(shí)在某個(gè)頻率上的發(fā)射時(shí)長(zhǎng)不能超過 1%約 36 秒這主要限制下行的 ACK 和指令發(fā)送能力。在國(guó)內(nèi) 470-510MHz 頻段也有對(duì)應(yīng)的短距離微功率設(shè)備管理規(guī)定對(duì)發(fā)射時(shí)長(zhǎng)有要求。上行接收雖然不受占空比限制但下行受限會(huì)直接影響 ACK 拉低的效率也會(huì)間接減少可用容量。第四個(gè)是網(wǎng)關(guān)本身是半雙工。SX1302 的收發(fā)通路是分時(shí)復(fù)用的網(wǎng)關(guān)在發(fā)送下行數(shù)據(jù)的時(shí)候沒法同時(shí)監(jiān)聽上行。如果網(wǎng)絡(luò)服務(wù)器頻繁下發(fā) ACK 或者遠(yuǎn)程配置指令這部分時(shí)間就直接從上行接收時(shí)間里扣掉了。2. 三步完成容量估算從空中時(shí)間到設(shè)備數(shù)量2.1 第一步算清楚單個(gè)數(shù)據(jù)包的空中時(shí)間容量估算的起點(diǎn)是單個(gè)上行數(shù)據(jù)包在空中的持續(xù)時(shí)間業(yè)內(nèi)叫 Time on Air簡(jiǎn)稱 ToA。LoRaWAN 包的空中時(shí)間主要由擴(kuò)頻因子 SF、帶寬 BW、編碼率 CR、以及有效負(fù)載長(zhǎng)度共同決定。LoRa 的符號(hào)速率和 SF、BW 關(guān)系是固定的符號(hào)時(shí)間 Ts 2 的 SF 次方 / BW舉個(gè)例子BW125kHz 時(shí)SF7 的單個(gè)符號(hào)時(shí)間約為 128 / 125000 ≈ 1.024 毫秒SF12 的單個(gè)符號(hào)時(shí)間約為 4096 / 125000 ≈ 32.768 毫秒一個(gè) LoRa 包由前導(dǎo)碼通常是 8 個(gè)符號(hào)、負(fù)載部分和可選的 CRC 組成。要精確計(jì)算某個(gè)具體負(fù)載長(zhǎng)度的 ToA最靠譜的辦法是用 Semtech 官方的 LoRa Calculator 工具或者用網(wǎng)上現(xiàn)成的 Python 庫lorawan、lora-phy來計(jì)算。我這里直接給幾組實(shí)測(cè)常用值都是 125kHz 帶寬、CR4/5、帶 CRC、負(fù)載 20 字節(jié)的情況擴(kuò)頻因子空中時(shí)間 ToA約相對(duì)倍數(shù)SF7113 毫秒1xSF8185 毫秒1.6xSF9330 毫秒2.9xSF10616 毫秒5.5xSF111.1 秒9.7xSF121.4 秒12.4x注意如果負(fù)載增大ToA 會(huì)進(jìn)一步增加。40 字節(jié)的 SF12 包可能要超過 2 秒。所以進(jìn)行容量估算前第一步就是把自己的報(bào)文長(zhǎng)度固定下來然后算出典型 ToA。如果網(wǎng)絡(luò)里既有 SF7 也有 SF12那就要按比例做加權(quán)不能只取一個(gè)值。2.2 第二步套入 ALOHA 協(xié)議的極限公式LoRaWAN 的上行接入是典型的純 ALOHA 機(jī)制設(shè)備隨機(jī)、自發(fā)地發(fā)送數(shù)據(jù)發(fā)送前不偵聽信道也不跟網(wǎng)關(guān)預(yù)約時(shí)隙。這種機(jī)制的數(shù)學(xué)極限早已有定論在純 ALOHA 協(xié)議下信道的最佳利用率只有大約 18.4%。這是什么概念通俗解釋就是一個(gè)信道一個(gè)頻點(diǎn)理論上每秒能容納約 1/ToA 個(gè)數(shù)據(jù)包即信道被包填滿的極限但由于沖突的存在實(shí)際能成功解出的包最多只能占這個(gè)極限容量的 18.4% 左右。超過這個(gè)比例網(wǎng)絡(luò)就開始進(jìn)入擁塞崩潰區(qū)沖突大量上升成功率反而會(huì)斷崖式下滑。所以單個(gè)頻點(diǎn)的有效容量公式就是單頻點(diǎn)有效容量 1 / ToA × 18.4%以 SF7、ToA113ms 為例單頻點(diǎn)最大容量 1 / 0.113 × 0.184 ≈ 1.63 包/秒SX1302 有 8 個(gè)頻點(diǎn)總?cè)萘考s 13 包/秒也就是理論上一個(gè) SX1302 網(wǎng)關(guān)每秒能穩(wěn)定處理約 13 個(gè) SF7 的上行包。如果所有設(shè)備都用 SF12ToA1.4s單頻點(diǎn)最大容量 1 / 1.4 × 0.184 ≈ 0.13 包/秒8 個(gè)頻點(diǎn)總?cè)萘考s 1.05 包/秒兩者差了 10 倍以上。所以能帶多少設(shè)備首先取決于你工作在哪個(gè)擴(kuò)頻因子上而不是網(wǎng)關(guān)本身。2.3 第三步把每秒容量換算成設(shè)備數(shù)量算出每秒包容量后再結(jié)合每個(gè)終端的上報(bào)頻率就能反推出設(shè)備數(shù)量。假設(shè)每臺(tái)設(shè)備每隔 N 秒上報(bào)一條消息那么單臺(tái)設(shè)備對(duì)網(wǎng)絡(luò)容量的占用率就是 1/N每秒需要占用 1/N 的包容量。用總包容量除以單臺(tái)設(shè)備的占用率就是理論設(shè)備數(shù)量。公式可以寫成理論設(shè)備數(shù) 網(wǎng)關(guān)每秒可處理包數(shù) × 上報(bào)周期秒還是用上面的 SF7 例子假設(shè)設(shè)備每 10 分鐘上報(bào)一次即每 600 秒一條網(wǎng)關(guān)可處理 13 包/秒那么理論可容納設(shè)備數(shù) 13 × 600 7800 臺(tái)聽上去是不是很夸張一個(gè)網(wǎng)關(guān)帶七千多臺(tái)設(shè)備這還是一臺(tái) SX1302 網(wǎng)關(guān)。但如果換到 SF12、每 10 分鐘上報(bào)一次網(wǎng)關(guān)可處理 1.05 包/秒理論設(shè)備數(shù) 1.05 × 600 630 臺(tái)差了 10 倍以上。這還沒算上下行、重傳和其他開銷。所以單純問一個(gè) SX1302 能帶多少設(shè)備我只能回答理論上幾百臺(tái)到幾千臺(tái)但實(shí)際會(huì)大打折扣。下面這部分就是關(guān)鍵。3. 工程修正為什么理論值在實(shí)際部署中通常要打三折3.1 SF 分布的現(xiàn)實(shí)不是所有設(shè)備都給你用 SF7前面計(jì)算里隱含了一個(gè)美好假設(shè)網(wǎng)絡(luò)里所有設(shè)備都工作在 SF7這是 LoRa 最快、空中時(shí)間最短的擴(kuò)頻因子。但實(shí)際部署根本不是這樣。SF 的選擇實(shí)際上是鏈路預(yù)算的產(chǎn)物。SF 越高接收靈敏度越好覆蓋距離越遠(yuǎn)但同時(shí)數(shù)據(jù)速率越低、空中時(shí)間越長(zhǎng)。一個(gè)覆蓋半徑 3-5 公里的網(wǎng)關(guān)邊緣設(shè)備往往需要用 SF10 甚至 SF12 才能讓網(wǎng)關(guān)解調(diào)出來。即使在城市里穿過兩三堵墻的室內(nèi)水表電表也大概率落在 SF9-SF11。指望所有終端都在 SF7 上是完全不現(xiàn)實(shí)的。我在實(shí)際項(xiàng)目里觀察過一個(gè)部署在城市郊區(qū)的網(wǎng)關(guān)800 多臺(tái)設(shè)備最終 SF 分布大概是SF7 約 15%SF8 約 20%SF9 約 30%SF10 約 20%SF11 約 12%SF12 約 3%。這么算下來加權(quán)平均后的 ToA 大約是 113×0.15 185×0.2 330×0.3 616×0.2 1100×0.12 1400×0.03約等于 500 多毫秒。相比 SF7 理想值實(shí)際容量直接砍了一半多。所以在做容量估算時(shí)絕對(duì)不能拍腦袋全按 SF7 算。比較好的做法是先根據(jù)現(xiàn)場(chǎng)實(shí)測(cè)或鏈路預(yù)算軟件估算出網(wǎng)絡(luò)邊緣的 SF 分布再用這個(gè)分布去加權(quán)計(jì)算平均 ToA。如果拿不到實(shí)測(cè)數(shù)據(jù)我就按半數(shù)以上設(shè)備在 SF9-SF10做保守假設(shè)這樣算出來的容量即便有偏差也不會(huì)讓網(wǎng)絡(luò)上線就崩。3.2 下行、重傳和 Join 請(qǐng)求是隱形的容量殺手理論計(jì)算里假定所有容量都拿來傳業(yè)務(wù)數(shù)據(jù)包但現(xiàn)實(shí)里總有一堆雜七雜八的消息在搶占空口資源。第一個(gè)是下行消息。LoRaWAN 有 Class A/B/C 三類的下行機(jī)制最常見的是 Class A設(shè)備上報(bào)后會(huì)在兩個(gè)接收窗口等待網(wǎng)關(guān)的 ACK 或下行指令。每個(gè)下行包都會(huì)占用網(wǎng)關(guān)的發(fā)送時(shí)間而網(wǎng)關(guān)發(fā)送期間是沒法接收上行數(shù)據(jù)的。在雙向確認(rèn)場(chǎng)景下如果業(yè)務(wù)要求每條上行都必須有 ACK那么網(wǎng)關(guān)有一半的有效容量被下行消耗掉整個(gè)系統(tǒng)的吞吐量會(huì)顯著下降。好在 LoRaWAN 默認(rèn)并不要求每條上行都 ACK只有需要確認(rèn)的消息才會(huì)觸發(fā)。但如果應(yīng)用層設(shè)計(jì)成強(qiáng)制 ACK容量就得按腰斬來算。第二個(gè)是重傳。LoRaWAN 終端在發(fā)送完一條消息后如果沒有收到 ACK或者使用 Confirmed 消息時(shí)會(huì)根據(jù)參數(shù)進(jìn)行重傳。沖突率高的時(shí)候重傳會(huì)進(jìn)一步加劇信道負(fù)載導(dǎo)致更多沖突形成惡性循環(huán)。在容量規(guī)劃時(shí)我一般會(huì)預(yù)留 20%-30% 的冗余給重傳也就是說新規(guī)劃的負(fù)載不能超過信道理論利用率的三分之二。第三個(gè)是Join 請(qǐng)求。新設(shè)備入網(wǎng)時(shí)會(huì)通過 Join Request 消息申請(qǐng)入網(wǎng)這類消息多個(gè)終端通常會(huì)在同一時(shí)刻發(fā)送例如一批設(shè)備同時(shí)上電而且 Join Request 通常會(huì)用較長(zhǎng)的 SF占用的空中時(shí)間不短。如果一個(gè)網(wǎng)絡(luò)經(jīng)常有批量設(shè)備加入要特別注意這個(gè)瞬時(shí)的容量尖峰。我經(jīng)歷過一個(gè)場(chǎng)景一批 500 臺(tái)設(shè)備分批上電入網(wǎng)結(jié)果 Join 請(qǐng)求在短時(shí)間內(nèi)把網(wǎng)關(guān)的信道全部占滿導(dǎo)致一批原本在線的設(shè)備輪詢消息大量超時(shí)。后來加了隨機(jī)延時(shí)問題才緩解。3.3 我的實(shí)測(cè)案例2000 臺(tái)理論值到 500 臺(tái)的現(xiàn)實(shí)兩年前我給一個(gè)智慧農(nóng)業(yè)項(xiàng)目做 LoRaWAN 網(wǎng)絡(luò)規(guī)劃傳感器覆蓋一個(gè)約 20 平方公里的種植基地主要采集土壤墑情、氣象和蟲情數(shù)據(jù)上報(bào)周期 15 分鐘報(bào)文長(zhǎng)度 22 字節(jié)左右。按照理論公式樂觀估算假設(shè) SF8-SF10 混合平均 ToA 約 250ms理論容量算出來能支撐 2000 臺(tái)以上設(shè)備。但實(shí)際部署到 500 多臺(tái)時(shí)網(wǎng)絡(luò)已經(jīng)出現(xiàn)了偶發(fā)掉線。排查下來發(fā)現(xiàn)幾個(gè)原因一是網(wǎng)關(guān)的安裝位置不夠理想邊緣設(shè)備全部落在 SF11 甚至 SF12ToA 飆升到一秒多二是有相當(dāng)一部分設(shè)備部署在溫室大棚里穿棚損耗導(dǎo)致 SF 進(jìn)一步降級(jí)三是應(yīng)用平臺(tái)做了一次遠(yuǎn)程參數(shù)批量更新連續(xù)一個(gè)小時(shí)產(chǎn)生大量下行消息把網(wǎng)關(guān)的上行接收窗口占掉不少。最終我們通過加了一臺(tái)網(wǎng)關(guān)、把邊緣設(shè)備就近分流、并對(duì)部分設(shè)備手工鎖定 SF才把網(wǎng)絡(luò)穩(wěn)定下來。600 多臺(tái)設(shè)備的實(shí)際穩(wěn)定容量和最初 2000 臺(tái)的理論估算差了三分之二以上。這個(gè)案例讓我之后做容量規(guī)劃時(shí)再也不敢不摻任何冗余就報(bào)樂觀數(shù)字了。4. 常見場(chǎng)景容量速查拿這張表直接套用4.1 典型場(chǎng)景的容量對(duì)比表為了方便大家快速做預(yù)判我把幾個(gè)常見場(chǎng)景的容量估算結(jié)果整理成一張速查表。以下表格按 ToA 和上報(bào)周期計(jì)算理論值再按工程折扣打三折給出建議規(guī)劃值場(chǎng)景典型 SF典型報(bào)文長(zhǎng)度單包 ToA上報(bào)周期網(wǎng)關(guān)理論帶機(jī)量工程建議帶機(jī)量農(nóng)田墑情監(jiān)測(cè)SF8-SF1020 字節(jié)0.2-0.6s15 分鐘2400-7000 臺(tái)800-2000 臺(tái)城市智能抄表SF9-SF1130 字節(jié)0.4-1.1s1 天 1 次8000 臺(tái)以上3000-5000 臺(tái)資產(chǎn)追蹤定位SF7-SF940 字節(jié)0.2-0.5s5 分鐘900-2000 臺(tái)300-700 臺(tái)工業(yè)設(shè)備監(jiān)控SF7-SF850 字節(jié)0.15-0.3s10 秒130-260 臺(tái)40-90 臺(tái)注意抄表類場(chǎng)景雖然上報(bào)周期長(zhǎng)理論帶機(jī)量很大但集中在一天內(nèi)某個(gè)時(shí)段上報(bào)比如凌晨 2 點(diǎn)瞬時(shí)并發(fā)依然可能打滿信道。這類場(chǎng)景要重點(diǎn)考慮時(shí)間均勻化把設(shè)備的上報(bào)時(shí)間在一天內(nèi)攤開。4.2 高并發(fā)場(chǎng)景千萬別只看日均上面表格里最坑的是工業(yè)設(shè)備監(jiān)控這類場(chǎng)景。設(shè)備每 10 秒上報(bào)一次負(fù)載 50 字節(jié)SF7 的 ToA 約 0.15s。用理論公式算下來一個(gè)網(wǎng)關(guān)最多能支持大約 1 / 0.15 × 0.184 × 8 × 10 ≈ 98 臺(tái)設(shè)備每 10 秒周期產(chǎn)生 1 個(gè)包。但工程上要留 30% 冗余再算上下行輪詢實(shí)際建議規(guī)劃不要超過 40-90 臺(tái)。如果是高并發(fā)場(chǎng)景比如一批設(shè)備在某個(gè)時(shí)間點(diǎn)同時(shí)上報(bào)或者設(shè)備檢測(cè)到告警時(shí)集體突發(fā)上報(bào)瞬時(shí)流量可能達(dá)到常規(guī)均值的數(shù)倍甚至幾十倍。這種情況下除了按平均上報(bào)周期算容量還要單獨(dú)算一遍突發(fā)峰值容量突發(fā)峰值包數(shù) 突發(fā)設(shè)備數(shù) × 每設(shè)備突發(fā)包數(shù)要求突發(fā)峰值包數(shù) / 突發(fā)時(shí)間窗口秒 ≤ 網(wǎng)關(guān)每秒可處理包數(shù) × 0.3如果不能通過調(diào)整上報(bào)策略避開瞬時(shí)并發(fā)就只剩加網(wǎng)關(guān)或者換頻段規(guī)劃兩條路了。4.3 LoRaWAN 不是唯一選擇什么時(shí)候考慮換方案如果你的場(chǎng)景算下來一個(gè)網(wǎng)關(guān)只能帶幾十臺(tái)設(shè)備而設(shè)備數(shù)量又在幾百臺(tái)以上那就要重新思考方案選型了。LoRaWAN 的優(yōu)勢(shì)在于長(zhǎng)距離、低功耗、單網(wǎng)關(guān)大覆蓋但在高密度、高并發(fā)、短時(shí)延的業(yè)務(wù)里它并不是最優(yōu)解。可以考慮 NB-IoT蜂窩物聯(lián)、用戶自組網(wǎng) Wi-SUN或者直接用網(wǎng)關(guān)邊緣計(jì)算做本地?cái)?shù)據(jù)匯聚減少上行頻次。很多項(xiàng)目單網(wǎng)關(guān)帶機(jī)量不足的問題本質(zhì)上是選型時(shí)沒有評(píng)估業(yè)務(wù)并發(fā)特征。5. 容量不夠時(shí)的擴(kuò)容思路不是無腦多加網(wǎng)關(guān)5.1 先做信道規(guī)劃把 8 個(gè)頻點(diǎn)用得更聰明LoRaWAN 標(biāo)準(zhǔn)規(guī)定了 8 個(gè)默認(rèn)上行頻點(diǎn)但不少網(wǎng)關(guān)和網(wǎng)絡(luò)服務(wù)器支持靈活配置頻點(diǎn)和調(diào)制參數(shù)。如果容量緊張第一步不是加設(shè)備而是檢查自己的信道規(guī)劃是否正確。比如有些網(wǎng)關(guān)默認(rèn)只用 8 個(gè)頻點(diǎn)但 LoRaWAN 在 470-510MHz 頻段可用的頻點(diǎn)遠(yuǎn)不止 8 個(gè)可以按區(qū)域占用情況擴(kuò)展到 16 個(gè)甚至更多頻點(diǎn)前提是網(wǎng)絡(luò)服務(wù)器和終端固件都支持。多占頻點(diǎn)等于給網(wǎng)關(guān)增加了并行接收通道。如果你的 SX1302 網(wǎng)關(guān)把解調(diào)資源映射到 16 個(gè)頻點(diǎn)那在 SX1302 硬件 8 路解調(diào)器不變的前提下每個(gè)解調(diào)器需要時(shí)分復(fù)用處理兩個(gè)頻點(diǎn)實(shí)際并行能力并不會(huì)翻倍。這里要提醒一下不是所有16 信道網(wǎng)關(guān)都真的能并行收 16 個(gè)包重點(diǎn)看解調(diào)器資源和射頻帶寬是否足夠。SX1302 的 8 路解調(diào)器上限是硬約束多頻點(diǎn)配置更適合分散同頻干擾而不是增加絕對(duì)容量。5.2 用好 ADR 和數(shù)據(jù)壓縮從終端側(cè)摳容量自適應(yīng)數(shù)據(jù)速率 ADR 是 LoRaWAN 自帶的一項(xiàng)優(yōu)化機(jī)制對(duì)固定安裝、鏈路相對(duì)穩(wěn)定的終端網(wǎng)絡(luò)服務(wù)器會(huì)根據(jù)歷史信噪比自動(dòng)把終端調(diào)整到盡可能高的 SF也就是盡量短的 ToA。開啟 ADR 對(duì)容量提升非常有效我見過一個(gè)項(xiàng)目開啟 ADR 后網(wǎng)絡(luò)平均 ToA 從 700ms 降到了 300ms 左右等于容量翻了一倍多。但 ADR 不是萬能的。對(duì)移動(dòng)設(shè)備比如資產(chǎn)追蹤器信道變化快開 ADR 容易導(dǎo)致丟包必須在網(wǎng)絡(luò)服務(wù)器里關(guān)閉 ADR 或設(shè)置保守的速率下限。終端側(cè)的數(shù)據(jù)壓縮和合并上報(bào)同樣值得做一次上報(bào)盡量合并多條采集數(shù)據(jù)或者只在變化超過閾值時(shí)才上報(bào)都能明顯減少空口占用。5.3 多網(wǎng)關(guān)部署與網(wǎng)絡(luò)服務(wù)器負(fù)載均衡當(dāng)單網(wǎng)關(guān)容量確實(shí)不夠時(shí)加網(wǎng)關(guān)是最直接的擴(kuò)容方式。但多網(wǎng)關(guān)部署不是簡(jiǎn)單地把網(wǎng)關(guān)擺遠(yuǎn)一點(diǎn)就完事。兩個(gè)網(wǎng)關(guān)如果覆蓋重疊區(qū)域過大同一設(shè)備的上行消息會(huì)被兩個(gè)網(wǎng)關(guān)同時(shí)收到并轉(zhuǎn)發(fā)到網(wǎng)絡(luò)服務(wù)器這會(huì)消耗雙倍的網(wǎng)絡(luò)服務(wù)器處理資源也可能導(dǎo)致重復(fù)消息判別邏輯變復(fù)雜。比較好的做法是讓網(wǎng)絡(luò)服務(wù)器開啟去重deduplication并按 RSSI 或信噪比選擇最優(yōu)上行副本。多網(wǎng)關(guān)之間還可以在頻道層面做隔離網(wǎng)關(guān) A 負(fù)責(zé)前 4 個(gè)信道網(wǎng)關(guān) B 負(fù)責(zé)后 4 個(gè)信道終端通過入網(wǎng)參數(shù)分配避免沖突。不過這種方式在國(guó)內(nèi)多頻點(diǎn)可用頻段充足的時(shí)候不太必要如果頻段緊張反而會(huì)犧牲頻率分集帶來的抗干擾能力。我的建議是先加網(wǎng)關(guān)做覆蓋補(bǔ)盲再在服務(wù)器側(cè)做負(fù)載統(tǒng)計(jì)最后才考慮信道硬隔離。6. 寫在最后容量規(guī)劃的三個(gè)心態(tài)做了這么多 LoRaWAN 項(xiàng)目我個(gè)人對(duì)容量規(guī)劃最深的體會(huì)有三點(diǎn)寧可低估不要高估先看鏈路再談數(shù)量留足冗余動(dòng)態(tài)調(diào)優(yōu)。具體的估算流程可以按確定報(bào)文長(zhǎng)度和 ToA → 估算 SF 分布 → 套 ALOHA 公式 → 打三折工程冗余 → 根據(jù)現(xiàn)場(chǎng)實(shí)測(cè)調(diào)整這個(gè)順序來走。在實(shí)際運(yùn)維中還要定期查看網(wǎng)絡(luò)服務(wù)器的丟包統(tǒng)計(jì)和 SF 分布圖一旦發(fā)現(xiàn)邊緣設(shè)備 SF 整體降級(jí)就要盡早補(bǔ)網(wǎng)關(guān)或者優(yōu)化天線位置。容量規(guī)劃不是一次性的計(jì)算題而是伴隨著現(xiàn)場(chǎng)環(huán)境變化不斷修正的持續(xù)過程。希望這篇文章能幫你少走一些我踩過的坑讓你的 SX1302 網(wǎng)關(guān)切切實(shí)實(shí)地帶滿該帶的設(shè)備。