日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LoRaWAN1.0.x规范详解之空口帧结构

發(fā)布時(shí)間:2023/12/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LoRaWAN1.0.x规范详解之空口帧结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1 前言
  • 2 LoRaWAN空口幀結(jié)構(gòu)
    • 2.1 入網(wǎng)(JOIN)
      • 2.1.1 入網(wǎng)請(qǐng)求(Join Request)
      • 2.1.2 入網(wǎng)接受(Join Accept)
      • 2.1.3 Join小結(jié)
    • 2.2 數(shù)據(jù)通信(Data Message)
      • 2.2.1 數(shù)據(jù)消息類型
      • 2.2.2 MAC命令
  • 3 Wireshark分析LoRaWAN空口包
    • 3.1 Join Request
    • 3.2 Join Accept
    • 3.3 Confirmed Data Up
    • 3.4 Unconfirmed Data Down(ACK)
    • 3.5 Unconfirmed Data Down(Application Data)

1 前言

幀結(jié)構(gòu)是通信協(xié)議的核心設(shè)計(jì)內(nèi)容。設(shè)計(jì)MAC層的主要工作之一就是幀(數(shù)據(jù))結(jié)構(gòu)的設(shè)計(jì)。
LoRaWAN規(guī)范(LoRaWAN Speicification)雖然只定義到了數(shù)據(jù)鏈路層(無(wú)上層LLC層,只有下層MAC層),但是LoRaWAN空口幀結(jié)構(gòu)作為L(zhǎng)oRaWAN規(guī)范的核心知識(shí)要點(diǎn),設(shè)計(jì)精簡(jiǎn),是學(xué)習(xí)無(wú)線通信協(xié)議的很好參考。

2 LoRaWAN空口幀結(jié)構(gòu)

LoRaWAN規(guī)范自下而上設(shè)計(jì),充分發(fā)揮了LoRa的硬件優(yōu)勢(shì),LoRaWAN空口幀結(jié)構(gòu)非常精簡(jiǎn),如圖2.1所示。這樣最大化優(yōu)化了物聯(lián)網(wǎng)終端的功耗,降低整體系統(tǒng)的復(fù)雜度、系統(tǒng)成本等。
下圖2.1基本涵蓋了LoRaWAN1.0.x空口傳輸?shù)乃行畔ⅰ?br />

圖2.1 LoRaWAN 空口幀結(jié)構(gòu)
LoRaWAN物理層主要是LoRa物理層(部分Region有采用FSK,作為高速應(yīng)用的補(bǔ)充),LoRa物理層采用LoRa有頭模式(Explicit Header Mode)(PS:除了Class B Beacon,其采用了Implicit Header),上行帶硬件CRC,下行不帶硬件CRC。同時(shí)采用的同步字是0x34(有別于現(xiàn)有市場(chǎng)的私有LoRa應(yīng)用的同步字0x12)。
LoRaWAN空口幀的MAC層按照消息類型(MTypes)來(lái)看,有6個(gè)消息類型:

  • 入網(wǎng) 2個(gè)
  • 數(shù)據(jù)通信 4個(gè)
    • MAC命令

2.1 入網(wǎng)(JOIN)

入網(wǎng)是LoRaWAN通信的開始,只有正確加入LoRaWAN網(wǎng)絡(luò)的設(shè)備,才能進(jìn)行數(shù)據(jù)通信。入網(wǎng)包含了兩個(gè)消息:

  • Join Request
  • Join Accept

2.1.1 入網(wǎng)請(qǐng)求(Join Request)

設(shè)備通過(guò)發(fā)送加入請(qǐng)求(Join Request)來(lái)申請(qǐng)加入目標(biāo)LoRaWAN網(wǎng)絡(luò)。
入網(wǎng)請(qǐng)求(Join Request)包含了兩個(gè)EUI號(hào),數(shù)據(jù)長(zhǎng)度都是8 Byte,分別是DevEUIAppEUI。DevEUI遵循EUI-64命名規(guī)范,是設(shè)備的全球唯一標(biāo)識(shí)。AppEUI命名規(guī)則根據(jù)實(shí)際運(yùn)營(yíng)網(wǎng)絡(luò)而定。

DevNonce為2 Byte的隨機(jī)數(shù),用來(lái)防止JOIN的重播攻擊,NS服務(wù)器會(huì)跟蹤記錄每次JOIN Request中的DevNonce,只有在接收到第一條上行后,在刪除該DevNonce,因此NS服務(wù)器能夠通過(guò)DevNonce值來(lái)識(shí)別出重播攻擊,拒絕響應(yīng)Join Accept。
MIC(4 Byte)是對(duì)Join Request的完整性檢查,只有擁有根秘鑰AppKey,才能計(jì)算得到有效mic值,否則將被NS服務(wù)器拒絕,因此可以防止偽造節(jié)點(diǎn)。

圖2.2 Join Request的MIC生成方法

2.1.2 入網(wǎng)接受(Join Accept)

入網(wǎng)接受包(Join Accept)是NS服務(wù)器對(duì)設(shè)備的入網(wǎng)許可回復(fù)。
入網(wǎng)接受包通過(guò)Appkey來(lái)加密。

圖2.3 Join Accept解密方式
AppNonce若為3 Byte的隨機(jī)數(shù),可(與DevNonce)每次派生出不同兩個(gè)會(huì)話秘鑰AppSKey、NwkSKey



圖2.4 會(huì)話秘鑰AppSKey、NwkSKey派生方式
NetID(3 Btye)標(biāo)識(shí)網(wǎng)絡(luò)ID,用于區(qū)別同一地理區(qū)域內(nèi)可能存在的多個(gè)不同運(yùn)營(yíng)商的LoRaWAN網(wǎng)絡(luò),全球性的NetID,LoRa Alliance已執(zhí)行了新的管理辦法。
DevAddr(4 Byte)標(biāo)識(shí)設(shè)備在網(wǎng)絡(luò)內(nèi)的短地址。
DLSettings(1 Byte)用于NS服務(wù)器側(cè)調(diào)整RX1,RX2的速率。可以根據(jù)不同地區(qū),網(wǎng)關(guān)可支持的最大功率來(lái)調(diào)整,以實(shí)現(xiàn)上行與下行無(wú)線鏈路預(yù)算的平衡。
RxDelay(1 Byte)用于NS服務(wù)器側(cè)調(diào)整RX1窗口開啟延時(shí)
CFList(16 Byte)是可選的頻率表字段,NS服務(wù)器可根據(jù)Reginal Parameters與實(shí)際部署需要,決定是否攜帶頻率表信息。
MIC是對(duì)Join Accept的完整性檢查。

圖2.5 Join Accept的MIC生成方式

2.1.3 Join小結(jié)

  • 入網(wǎng)請(qǐng)求包(Join Request)是明文發(fā)送,但是受MIC(消息完整性檢查)保護(hù)。(LoRaWAN的所有消息類型都受MIC保護(hù))。
  • 入網(wǎng)接受包(Join Accept)是密文發(fā)送。需要通過(guò)根秘鑰AppKey解密得到。
  • 入網(wǎng)可以實(shí)現(xiàn)會(huì)話秘鑰(AppSKey、NwkSKey)的動(dòng)態(tài)更新。
  • 具備一定的防重播攻擊、防偽節(jié)點(diǎn)的能力。
  • 2.2 數(shù)據(jù)通信(Data Message)

    數(shù)據(jù)通信用來(lái)傳輸MAC命令與應(yīng)用數(shù)據(jù)。
    MAC層網(wǎng)絡(luò)開銷是13字節(jié),如圖2.1藍(lán)色區(qū)塊(在沒有FRMPayload的情況下,實(shí)際網(wǎng)絡(luò)開銷是12字節(jié),缺省情況下,未發(fā)送Fport.)
    DevAddr是入網(wǎng)后,獲取的網(wǎng)內(nèi)短地址標(biāo)識(shí)。
    Fctl(1 Byte)是網(wǎng)絡(luò)控制字節(jié),按位來(lái)標(biāo)識(shí)ADR、ACK、Fpending、Class B、Foptslen等網(wǎng)絡(luò)控制信息
    Fcnt(2 Byte)是幀計(jì)數(shù)器,由發(fā)送端維護(hù),即終端側(cè)FCntUp與服務(wù)器側(cè)FCntDown,LoRaWAN支持2 Byte與4 Byte的Fcnt。4 Byte的Fcnt具有更大線性計(jì)數(shù)空間,相應(yīng)的也具備更好安全性,但是需要發(fā)送端進(jìn)行相應(yīng)的計(jì)數(shù)器向上溢出、掉電\上電保護(hù)等。2 Byte的Fcnt則可以直接拿來(lái)就用,無(wú)需特殊保護(hù)。
    Fport(1 Byte)是應(yīng)用端口號(hào),用于指示FRMPayload的數(shù)據(jù)屬性。Fport=0,FRMPayload用于傳輸MAC命令。Fport=224,FRMPayload用于傳輸LoRaWAN聯(lián)盟定義認(rèn)證測(cè)試應(yīng)用。1~233 可根據(jù)實(shí)際情況,自定義使用。
    FRMPayload為應(yīng)用數(shù)據(jù)。最大數(shù)據(jù)包長(zhǎng)度受限于通信速率。

    2.2.1 數(shù)據(jù)消息類型

    根據(jù)數(shù)據(jù)消息是否有顯性應(yīng)答,分為確認(rèn)幀(Confirmed-data message)與非確認(rèn)幀(Unconfirmed-data message

    • 確認(rèn)幀 :接收端必須應(yīng)答
    • 非確認(rèn)幀 :接收端不要求應(yīng)答

    2.2.2 MAC命令

    MAC命令屬于LoRaWAN協(xié)議層數(shù)據(jù),主要用于實(shí)現(xiàn)網(wǎng)絡(luò)的運(yùn)維與管理、網(wǎng)絡(luò)動(dòng)態(tài)優(yōu)化等。
    橙色由設(shè)備端發(fā)起,藍(lán)色由NS服務(wù)器發(fā)起。

    CIDMAC命令描述
    0x02LinkCheck可用于設(shè)備端進(jìn)行LoRaWAN鏈路的可達(dá)性測(cè)試
    0x03LinkADR用于NS服務(wù)器進(jìn)行ADR提速與調(diào)整功率
    0x04DutyCycle用于NS服務(wù)器進(jìn)行占空比配置
    0x05RxParamSetup用于NS服務(wù)器進(jìn)行Rx速率參數(shù)(RX1\RX2)調(diào)整
    0x06DevStatus用于NS服務(wù)器獲取設(shè)備電池信息與無(wú)線鏈路余量Margin
    0x07NewChannel用于NS服務(wù)器新增\刪除\修改信道
    0x08RxTimingSetup用于NS服務(wù)器進(jìn)行RX1窗口時(shí)間(RX1Delay)的調(diào)整
    0x09TxParamSetup用于NS服務(wù)器進(jìn)行TX功率、駐留時(shí)間的調(diào)整
    0x0ADIChannel用于NS服務(wù)器對(duì)RX1窗口頻率的特殊設(shè)定
    0x0DDeviceTime可用于設(shè)備端獲取全網(wǎng)時(shí)間,輔助Class B Beacon 同步等

    3 Wireshark分析LoRaWAN空口包

    接下來(lái)透過(guò)最流行的開源協(xié)議分析工具Wireshark(PS:Wireshark2.6.0版本開始增加了LoRaWAN協(xié)議的解析器),來(lái)實(shí)際看看LoRaWAN空口數(shù)據(jù)包。

    3.1 Join Request


    圖3.1 Join Request

    • “Join Request”為明文傳輸,但受MIC保護(hù)

    3.2 Join Accept



    圖3.2 Join Accept

    • “Join Accept”為密文傳輸,沒有根秘鑰Appkey,則無(wú)法獲取原始信息內(nèi)容

    3.3 Confirmed Data Up


    圖3.3 確認(rèn)幀上行

    • 上行用戶數(shù)據(jù)“Frame Payload”采用AES128加密,沒有會(huì)話秘鑰AppSkey,則無(wú)法獲取原始信息內(nèi)容

    3.4 Unconfirmed Data Down(ACK)



    圖3.4 上行確認(rèn)幀的回復(fù)(下行非確認(rèn)幀)

    • 在沒有用戶數(shù)據(jù)的情況,實(shí)際下行空口是12個(gè)字節(jié)(純MAC層開銷)

    3.5 Unconfirmed Data Down(Application Data)



    圖3.5 上行確認(rèn)幀的回復(fù)(下行非確認(rèn)幀,并攜帶用戶數(shù)據(jù))

    • 下行用戶數(shù)據(jù)“Frame Payload”采用AES128加密,沒有會(huì)話秘鑰AppSkey,則無(wú)法獲取原始信息內(nèi)容

    總結(jié)

    以上是生活随笔為你收集整理的LoRaWAN1.0.x规范详解之空口帧结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。