這一章節(jié)描述當(dāng)終端設(shè)備超出他的hNS的覆蓋而在訪問的NS覆蓋之內(nèi)的情況下胧谈,激活一個新的LoRa會話的流程。NS
假設(shè)hNS意識到所訪問的NS的漫游功能室梅,并且hNS決定執(zhí)行哪種類型的漫游律杠。
切換漫游激活
下面的處理流程適用于LoRaWAN1.0和LoRaWAN1.1協(xié)議的終端設(shè)備。
切換漫游開始
Step 1:
終端設(shè)備將傳輸一個Join-request消息竞惋。
Step 2:
當(dāng)NS2接收這個Join-request消息,NS2將通過DevEUI決定是否作為hNS對于該終端灰嫉。在這個流程中拆宛,假定NS2不是hNS服務(wù)對于該終端。
NS2將通過JoinEUI來決定是否被配置成和JS一起工作讼撒。如果沒有配置浑厚,然后NS2將終止這個流程。
如果NS2沒有配置額外的機(jī)制去配置JS的Ip 地址根盒,NS2將基于接收到的報(bào)文里面的JoinEUI去尋找JS的IP地址钳幅,如果DNS查找失敗,NS2將終止處理流程炎滞。
Step 3:
如果NS2已經(jīng)知道了終端設(shè)備的hNS的標(biāo)識敢艰,Step3和4將被跳過。否則册赛,NS2將發(fā)送一個HomeNSReq消息到JS钠导,攜帶著接收到的Join-request消息中的DevEUI。
Step 4:
如果NS2沒有在JS的漫游激活的授權(quán)網(wǎng)絡(luò)列表中森瘪,JS服務(wù)將發(fā)送一個攜帶Result=NoRoamingAgreement的HomeNSAns消息到NS2牡属,并且終止流程。
Step 5:
如果NS2已經(jīng)知道終端的Device Profile扼睬,并且NS2和NS1只有漫游協(xié)議逮栅,然后Step 5和6被跳過。否則窗宇,如果NS2沒有通過額外的機(jī)制配置NS1的IP地址措伐,NS2將基于Join-request報(bào)文中的NetID使用DNS去查找NS1的IP地址。如果DNS查詢失敗军俊,NS2將終止流程废士。
NS2將發(fā)送ProfileReq消息到NS1,并攜帶DevEUI蝇完。
Step 6:
如果在NS1和NS2之間沒有商業(yè)協(xié)議官硝,NS1將發(fā)送一個ProfileAns消息矗蕊,并攜帶Result=NoRoamingAgreement。如果NS1沒有找到DevEUI對應(yīng)的終端設(shè)備氢架,NS1將發(fā)送一個ProfileAns消息傻咖,并攜帶Result=UnknownDevEUI。如果終端設(shè)備沒有被允許執(zhí)行漫游激活岖研,NS1將發(fā)送一個Result=RoamingActDisallowed消息卿操,并攜帶Result=RoamingActDisallowed。否則孙援,假定NS1決定使能切換漫游激活害淤,NS1將發(fā)送ProfileAns消息,并攜帶Result=Success拓售、RoamingActivationType=Handover窥摄、 Device Profile和 Device Profile Timestamp。(該時間戳是Device Profile最后修改的時間戳)
下面的流程是當(dāng)漫游激活方式為切換漫游時的流程础淤。
Step 7:
如果收到的ProfileAns消息指示成功崭放,或者如果Step 5和6被跳過,然后NS2將發(fā)送ProfileAns到NS1并攜帶Join-Request的PHYPayload鸽凶、MACVersion币砂、ULMetadata、DevAddr玻侥、DLSettings决摧、RxDelay以及可選項(xiàng)CFList和Device Profile Timestamp。NS2將MACVersion值設(shè)置為最高的通用版本在終端設(shè)備和NS2之間凑兰。
Step 8:
如果NS1和NS2之間沒有簽署協(xié)議或者NS1基于DevEUI沒有辨別出終端設(shè)備或者終端設(shè)備不允許執(zhí)行漫游激活蜜徽,當(dāng)Step 5和6被跳過時,NS1將執(zhí)行Step 10票摇。
如果NS1確定自接收到的設(shè)備概要時間戳所指示的時間以來設(shè)備概要發(fā)生了更改拘鞋,NS1斷定NS2的Device? Profile信息過于陳舊。在這種情況下盆色,NS1將執(zhí)行Step10.否則隔躲,NS1將發(fā)送一個JoinReq到JS宣旱,并攜帶Join-request的PHYPayload浑吟,和來自NS2的MACVersion、 DevEUI省容、DevAddr燎字、DLSettings、RxDelay候衍、和CFList蛉鹿。
Step 9:
JS將按照MACVersion去處理Join-request消息榨为,發(fā)送JoinAns到NS1并攜帶Result=Success随闺,帶有Join-accept消息的PHYPayload,網(wǎng)絡(luò)會話密鑰組回论,加密后的AppSKey或SessionKeyID或者兩者都含有散罕、Lifetime欧漱;在失敗的情況下,返回Result=UnknownDevEUI 或MICFailed。
Step 10:
如果NS1和NS2沒有商業(yè)協(xié)議,然后NS1將發(fā)送HRStartAns消息給NS2李请,并攜帶Result=NoRoamingAgreement厉熟。如果NS1不能夠通過DevEUI辨別出終端設(shè)備庆猫,NS1將返送一個HRStartAns消息到NS2,并攜帶Result=UnknownDevEUI衷恭。如果終端設(shè)備不允許執(zhí)行漫游激活NS1將發(fā)送一個HRStartAns消息到NS2此叠,并攜帶Result= RoamingActDisallowed.
如果NS1認(rèn)定NS2的Device Profile是陳舊的版本,NS將發(fā)送一個HRStartAns消息到NS2,并攜帶Result=StaleDeviceProfile、最新的Device Profile和它的Device Profile Timestamp魔慷。在這種情況下,NS2將跳過Step7去使用它剛剛接收到的新的Device Profile召边。
否則铺呵,NS1將發(fā)送HRStartAns到NS2。這個HRStartAns消息將包含在Step 9中描述的相同的對象和終端設(shè)備的Service Profile隧熙。
對于LoRaWAN1.1終端設(shè)備片挂,NS1將緩存接收到的SNwkSIntKey,以便與NS1在轉(zhuǎn)發(fā)報(bào)文到JS服務(wù)前,就可以驗(yàn)證MIC以及后續(xù)的Rejoin-Type 0 的消息的正確音念。
Step 11:
如果HRStartAns消息指示成功沪饺,NS1將轉(zhuǎn)發(fā)接收到的Join-accept的PHYPayload到終端設(shè)備,終端設(shè)備基于Join-accept消息將生成網(wǎng)絡(luò)會話密鑰組闷愤、AppSKey整葡。
如果由JS到AS生成的加密的AppSKey不可用,然后NS將使用OTA本地激活流程中的Step8中定義的方法讥脐,直接從JS服務(wù)中恢復(fù)該AppSKey遭居。