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