LoRa Basics Station 是 LoRa? 數據包轉發器的實現。LoRa 數據包轉發器是在基于 LoRa 的網關(帶或不帶 GPS)主機上運行的程序。
它可以通過安全的 IP 鏈路將集中器(上行鏈路)接收的射頻數據包轉發到 LoRaWAN? 網絡服務器 (LNS),也可以通過相同的安全 IP 將 LNS(下行鏈路)發送的射頻數據包傳輸到一個或多個設備。另外,它可以發送用于網絡內時間協調器件的信標信號。這些信標可以在整個網絡上與 GPS 同步傳輸。
#為什么選擇 LoRa Basics Station?
在 LoRaWAN 網絡中,網關是 LoRaWAN 網絡服務器 (LNS) 的物理層 (PHY) 接口。它偵聽無線電頻譜的某些部分,使用 LoRa 調制從傳感器發出的信號中解碼出有效的 LoRaWAN 數據包,并將其轉發給 LNS。同時也將 LoRaWAN 數據包從 LNS 向下傳輸到傳感器,作為 LoRa 調制信號。
LoRa Basics Station 是 LoRaWAN 網關軟件的實現,在處理數據包流、管理頻譜接入和 LNS 回程連接等方面提供了核心功能。為了在大量網關上安全、可靠和高效地完成這些任務,Station 定義了兩個后端協議:
- LNS 協議是主要數據層,通過安全的 WebSocket 提供低延遲的雙向通信通道。此協議涵蓋了負載平衡和集中式配置管理的各個方面。
- Station 通過配置和更新服務 (CUPS) 協議提供憑據管理和固件更新接口,該協議是經身份驗證的簡單 HTTPS 事務,用于傳遞 LNS 接口憑據和已簽署的固件二進制文件。
說明:
- 文檔和協議定義可參見鏈接。
- 網關軟件實現可參見鏈接。
#LoRa Basics Station 可以做什么?
LoRa Basics Station 可完成與 LoRaWAN A、B 和 C 級的基本數據包轉發功能有關的所有任務。此外,Station 還具有多種功能,使其特別適用于重視集中配置管理和遠程檢查功能的大規模網關部署。Station 的架構使得它可以輕松接入不同平臺,甚至嵌入式系統。CUPS 和 LNS 協議的基本功能是可擴展的,并助力編排更復雜的使用場景,包括配置管理、時間保持、遠程檢查和干預等。
- 支持常見的無線電硬件參考設計
- 全面支持 Linux 主機
- 守護進程模式
- 靈活記錄、日志文件輪替和裁切
- 主機/從機設置,用于多無線電操作
- 安全的防火墻友好型 TCP/IP 通信
- 無需 ingress 連接
- 通過 TLS 證書或 HTTP 令牌標頭進行身份驗證
- LNS 協議
- 集中式無線電參數管理
- 遠程系統命令和可選的交互式 shell
- 靈活的健康和狀態報告機制
- GPS 時間推斷
- 時間傳遞(方便室內 B 級用例)
- CUPS 協議
- 具有回滾功能的連接憑據事務性更新
- 具有 ECDSA 簽名的安全固件更新交付
#LoRa Basics Station 是如何構建的?
Figure 1: LoRa Basics Station 系統概述編譯的 Station 二進制文件是在網關主機平臺操作系統的用戶空間中執行的應用。上圖說明了 Station 如何與其他系統組件進行交互。
在左側,是網關無線電硬件及其與網關主機平臺的接口,平臺通常通過諸如 SPI 之類的串行接口進行連接。Station 建立在硬件抽象層 (HAL) 庫的基礎上,該庫由 Semtech 提供,適用于不同網關無線電硬件參考設計,以與無線電硬件進行交互。
在右側,是 Station 期望的后端服務及其相應的協議 LNS 和 CUPS。與這些服務的連接通常是通過基于 IP 的網絡建立的。這使得可以在廣泛用于萬維網且已經驗證的協議棧上構建 CUPS 和 LNS 協議,即用于傳輸的 HTTP 和 WebSockets 以及用于安全的 TLS。
中心框是在操作系統 (OS) 內運行 Station 進程的網關主機平臺。該框分為 Station 的高級模塊化組件,為不同系統組件提供不同接口:
- RAL:適用于不同 HAL 的無線電抽象層
- SYS:適用于不同操作系統(Linux、FreeRTOS 等)的系統抽象層
- NET:建立在 mbedTLS 之上的網絡抽象層
以下是LoRa Basics Station 軟件架構更詳細的視圖。
Figure 2: LoRa Basics Station 軟件架構在上圖中:RAL、SYS 和 mbedTLS 模塊組成硬件指定適配層,為系統組件提供適用于可移植核心實現的統一接口。在編譯時,可以選擇 RAL 和 SYS 層,并將結果對象與 mbedTLS 庫靜態鏈接。
可移植核心是圍繞異步協作多任務運行時 (AIO) 構建的無依賴 C 模塊,包含 Station 的所有核心功能:LoRa 數據包處理、數據包緩沖、下行鏈路隊列管理、頻譜接入管理、協議解析 (JSON)、協議狀態邏輯 (CUPS/LNS)、時間同步等。
此架構可實現:
易于移植:將 Station 移植到新的 HAL 的工作僅限于對 RAL 模塊的更改。將 Station 移植到新的主機平臺上的工作僅限于對 SYS 模塊的更改。
易于測試:可以通過使用組件替換 HAL 塊來完成與硬件無關的測試,該組件可通過遠程過程調用 (RPC) 將對 RAL 的 HAL API 調用轉換為測試工具。LoRa Basics Station 回歸測試使用了這種方法。
Station 構建環境使我們能夠設置編譯時選項,從而生成適用于目標環境的理想 Station 可執行文件。這些選項在 setup.gmk 中被歸為高級標識符平臺和變體。在構建過程中,會自動提取、編譯和鏈接依賴項。
#LoRa Basics Station 如何工作?
#LNS 協議
假設通過 tc.uri 對 LNS 連接進行了正確的配置,Station 將與其連接,并在一開始便將自己通告給服務端點。服務端點以最終的 WebSocket 連接端點響應,且 Station 使用相同的憑據立即進行連接。在向最終連接端點通告自己之后,Station 會收到一個來自 LNS 的配置對象,至少包含頻率計劃和有網關在其中運行的區域環境。
在應用了頻率計劃并啟動了無線電之后,網關處于穩定狀態,在此期間它可以交換許多消息。每當無線電對有效的 LoRaWAN 幀進行解調時,該幀將直接轉發到 LNS。另外,LNS 可以通過網關將下行鏈路數據傳輸到終端設備。如果成功發送了下行鏈路數據,LNS 將收到確認。如果 LNS 連接意外終止,則所有接收到的上行鏈路數據將緩沖,直到重新建立連接。
#CUPS 協議
CUPS 協議是 Station 內的一個獨立引擎。它使用帶有 JSON 編碼主體的 HTTP POST 向 CUPS 端點聲明其當前的配置狀態。CUPS 服務器使用此信息來決定是否需要更新,并通過包含新憑據集的八位字節流做出響應(適用于 CUPS 端點或 LNS 端點,或者二者皆適用)。空響應表示無需更新。
在該響應中,CUPS 可以選擇附加已簽署的可執行文件 blob。該可執行文件的格式與協議本身無關,但應與網關主機平臺能夠應用的格式匹配。對于嵌入式主機平臺或可執行文件腳本,它可以是完整的固件映像;對于基于 Linux 的主機系統,它可以是自動提取的存檔文件。為了檢查可執行文件的簽名,可以通過將多個公共 ECDSA 簽名密鑰放入 sig-{0,1,2,…}.key 文件中進行配置。
CUPS 并非專為全面的網關管理器設計打造。相反,其底層基元為最基本的管理任務提供了一種簡單統一的方法:憑據管理和安全的遠程固件更新。
#LoRa Basics Station 的安全性如何?
為了確保基于 IP 的后端連接的安全性,LoRa Basics Station 依賴于萬維網中日常使用的知名概念。針對給定連接的身份驗證模式取決于是否存在連接定義文件 {tc,cups}.{uri,trust,key,crt} 及其內容。
#無身份驗證
當服務端點 URL 專門聲明純文本連接時,不使用身份驗證:
*.uri:ws://...(適用于 tc.uri)或 http://...(適用于 cups.uri)
如果安全性已經由操作系統通過 IPsec 在網絡層上實現,或者如果安全性通過防火墻和網絡隔離建立(所有主機都可信),則這很有用。如果通過因特網建立的網關連接沒有 IPsec,應始終使用以下身份驗證方法之一。
#服務器和客戶端身份驗證
如果服務端點 URL 被聲明為安全連接,則啟用雙向認證:
*.uri:wss://...(適用于 tc.uri)或 https://...(適用于 cups.uri)
通過證書頒發機構 (CA) 檢查服務器的真實性。CA 證書必須在 *.trust 文件中提供。
*.trust:服務器 CA 的可信證書(PEM 或 DER 編碼的 X509 證書)
Stations 根據是否存在 *.key 和 *.crt 文件提供兩種用于建立客戶端身份驗證的選項:
客戶端令牌身份認證 [*.key]
*.key:包含服務器客戶端身份驗證信息的有效 HTTP 標頭(例如,身份驗證:...\r\n)
客戶端證書身份驗證 [*.crt, *.key]
*.crt:客戶端證書(PEM 或 DER 編碼的 X509 證書)
*.key:私鑰(PEM 或 DER 編碼的 x509 密鑰)
提示:調試網關 TLS 設置的一個好方法是通過將環境變量 STATION_TLSDBG 設置在詳細級別 1(最低)和 4(最高)之間執行 Station。
#如何以Basics Station模式將網關連接至TTNv3?
#登錄TTN v3
1、登錄TTN網站。
Figure 4: 登錄TTN網站2、輸入用戶名以及登錄密碼,單擊“Submit”。若未注冊賬號,單擊“Register”,根據提示注冊TTN賬號。
#注冊網關
1、單擊“Register a gateway”。
Figure 5: 注冊新網關2、填寫參數,單擊“Create gateway”。
Figure 6: 配置參數#生成Token
TTNv3支持TLS服務器身份驗證和客戶端令牌,這需要信任文件和密鑰文件來配置網關以將其成功連接到網絡。
1、在“Gateways”頁簽中,單擊已注冊的網關,進入網關頁面。
Figure 7: 進入已注冊網關2、在左側導航樹中,單擊“API keys”。
Figure 8: 進入API keys3、單擊“Add API key”。
- Name:輸入密鑰名稱
- Rights:選擇“Grant individual rights”。在多選選項中,選中“ Link as Gateway to a Gateway Server for traffic exchange, i.e. write uplink and read downlink”。
4、單擊“Create API key”。將會彈出以下對話框。
Figure 10: 保存API keys注意:切記將密鑰復制保存至.txt文件中,對話框關閉后將無法查看或復制密鑰信息。
5、密鑰復制保存后,單擊“I have copied the key”。
#配置網關
1、登錄網關Web管理平臺。具體操作可參考對應網關的《快速入門指南》手冊。
2、在“LoRa Network > Network Settings ”的“LoRa Network Settings ”頁面中,配置“Mode”選項為“Basics Station”。
Figure 11: 切換模式3、單擊“Switch mode”,模式切換成功后,“Basics Station Configuration”參數配置頁面將會顯示。連接網關至TTNv3,必須配置以下參數:
- Server:選擇LNS Server。
- URI:The Things Stack服務器地址。該示例中,將網關連接至“European”集群,所以鏈接為wss://eu1.cloud.thethings.network。
- Port:LNS Server使用端口為8887,填入8887。
- Authentication Mode:選擇“TLS Server Authentication And Client Token”。
- trust:使用“Let's Encrypt ISRG ROOT X1”信任證書。查看和下載證書。
- token:此處為生成的Token。輸入時,以“Authorization: ”開始。如:Authorization: YOUR_API_KEY
注意:請注意”Authorization:“ 與“YOUR_API_KEY”之間存在一個空格。
Figure 12: 配置網關參數4、單擊“Save & Apply”,保存設置。在TTN界面可以看到網關以“Basics Station”模式連接至TTNv3。
Figure 13: 在TTNv3中網關已在線-
LoRa
+關注
關注
349文章
1689瀏覽量
231917 -
RAK
+關注
關注
0文章
48瀏覽量
2081
發布評論請先 登錄
相關推薦
評論