朱明
(天翼物聯(lián)科技有限公司 江蘇省南京市 210006)
NB-IoT 業(yè)務(wù)規(guī)模發(fā)展與所承載業(yè)務(wù)模型密切相關(guān),如表1所示的技術(shù)特點,其能適用場景是“小流量、上報為主、長期休眠、功耗敏感性、低移動性”應(yīng)用。為了實現(xiàn)NB-IoT 網(wǎng)絡(luò)承載海量的低功耗終端,可管可控。其最為重要的4 個技術(shù)要素為:eDRX、PSM、空口會話保持和下行指令緩存。
這四個技術(shù)要素中,3GPP Release 12 規(guī)范里就定義了PSM,Release 13 規(guī)范里也引入了eDRX 技術(shù)。如果采用PSM 和eDRX 技術(shù),要對NB-IOT 終端的低功耗產(chǎn)生有益的影響,除了取決于終端本身的軟硬件能力及配置外,還取決于與之相配套的網(wǎng)絡(luò)側(cè)的實現(xiàn)。這些在3GPP 規(guī)范已經(jīng)定義的網(wǎng)絡(luò)側(cè)能力及配置的參考實現(xiàn)中,基本都有章可循。差別僅僅在于終端支持的低功耗能力,在網(wǎng)絡(luò)不同情況下,配置亦可以不同(主流終端不支持的能力,一般網(wǎng)絡(luò)都不會配置);不同終端用于不同的低功耗業(yè)務(wù)場景,需要網(wǎng)絡(luò)側(cè)給予配合的協(xié)同參數(shù)也有所不同。
但是對于終端低功耗所需要依賴的另外兩個重要技術(shù)特性:空口會話保持和下行指令緩。在3GPP 規(guī)范中,并沒有明確的描述和參考定義。本文將分別從網(wǎng)絡(luò)和平臺兩個方面的架構(gòu)優(yōu)化和相應(yīng)的參考實現(xiàn),論述這兩個技術(shù)要素對終端低功耗,同時也是對PSM的重要作用。
eDRX(擴展不連續(xù)接收)和PSM(省電模式)模式,雖然可以給NB-IOT 終端提供省電的可能,但是這種省電的是以犧牲終端和物聯(lián)專網(wǎng)的NB-IOT 網(wǎng)關(guān)的連接次數(shù)作為代價,通過長時間的“罷工”來換取的。事實上,在所有物聯(lián)網(wǎng)的應(yīng)用場景中,終端UE 可以通過IP 地址、域名等方式找到NB-IOT 網(wǎng)關(guān)的服務(wù)器。但是由于現(xiàn)網(wǎng)IPv4 地址的局限性,物聯(lián)網(wǎng)終端自己是沒有域名,也沒有獨立不變的IP 地址,物聯(lián)網(wǎng)專網(wǎng)為客戶NB-IOT 終端分配的是10網(wǎng)段的私網(wǎng)地址,通過NAT 的轉(zhuǎn)換,將私有IP 地址轉(zhuǎn)化為公用IP地址,服務(wù)器才能找到終端。由于在物聯(lián)網(wǎng)專網(wǎng)中存在多個防火墻,涉及到私網(wǎng)IP 與公網(wǎng)IP 的轉(zhuǎn)換。NB-IOT 終端采用的輕量化CoAP協(xié)議的傳輸層采用的是無連接的UDP 協(xié)議,大概120 秒左右終端的會話就會釋放(即使采用TCP 協(xié)議,1200 秒會話也會被NAT 釋放),所以NB-IOT 網(wǎng)關(guān)的服務(wù)器將無法尋找到終端,因此下行的指令也無法通過IOT 平臺的服務(wù)器下發(fā)到終端。對于電子鎖具,消防控制終端,路燈、白電這類有實時控制需求的終端,終端如果不接對采用和NB-IOT 網(wǎng)關(guān)保持頻繁心跳的方式維持空口建立以后的會話,以保證下行可達,頻繁的心跳不僅會帶來無線資源的浪費同時也會增加終端的功耗和連接次數(shù)。而這種增加和NB-IOT 網(wǎng)關(guān)間的心跳包連接次數(shù)的方式和eDRX、PSM 模式以犧牲連接次數(shù)換取低功耗的方式是截然相反和矛盾的。
針對這樣存在的問題和矛盾,本文給出了以下NB-IOT 網(wǎng)關(guān)的解決方案的參考實現(xiàn),并在現(xiàn)網(wǎng)測試中取得了很好的效果。
圖1:NB-IOT 網(wǎng)關(guān)空口會話保持模型
圖1 為保持長連接空口會話的網(wǎng)絡(luò)架模型,網(wǎng)關(guān)采用了負(fù)載均衡LVS(Linux 虛擬服務(wù)器),構(gòu)建負(fù)載均衡集群。通過LVS 維護一個映射表,映射算法是源地址和目的地址均映射,LVS 在處理請求時,會保存終端、真實服務(wù)器的信息,存儲在跟蹤表中。跟蹤表信息在一定程度上呈現(xiàn)了與會話一樣的狀態(tài)。
基本原理是:LVS 接收NB-IOT 終端請求,并轉(zhuǎn)發(fā)到真實服務(wù)器時,在跟蹤表會刷新一條跟蹤信息,包含源地址/目的地址五元組轉(zhuǎn)換,在收到服務(wù)器的響應(yīng)消息時,會根據(jù)跟蹤表信息找到此消息對應(yīng)的終端IP 和端口,然后對報文進行處理,然后返回給終端。如果跟蹤信息過期,LVS 就不會處理響應(yīng)報文,可能導(dǎo)致終端無法收到消息。
轉(zhuǎn)換流程如下:
(1)NB-IOT 終端上傳報文。
(2)LVS 轉(zhuǎn)發(fā)給后端真實服務(wù)器,刷新跟蹤表。
(3)指令下發(fā)到LVS,跟蹤表若存在,則下發(fā)給終端,若不存在,則下發(fā)失敗。
目前采用該模型的NB-IOT 網(wǎng)關(guān)在現(xiàn)網(wǎng)中已經(jīng)實現(xiàn)24 小時的空口會話?;?支持超過4500 萬終端),只要NB-IOT 終端在24內(nèi)存在一次業(yè)務(wù)數(shù)據(jù)包的上下行傳輸,即可確保下行時可達的,終端無需發(fā)送心跳包,從而可以降低終端的功耗,減少上報次數(shù),滿足PSM 模式和節(jié)約終端耗電量的需求,降低用戶的使用和更換終端電池的成本。未來隨著IPv6 的部署,該模型將被進一步簡化。
除了采用空口會話保持技術(shù)降低終端功耗外外,下行指令緩存機制對于保障PSM 和eDRX 模式下終端的控制也是至關(guān)重要的。3GPP 的規(guī)范和協(xié)議中有對下行指令緩存的要求,但并不設(shè)計具體實現(xiàn)的研究,本文接下來將對下行指令緩存(網(wǎng)關(guān)連接型,即NBIOT 終端通過NB 業(yè)務(wù)接入網(wǎng)關(guān)與北向的客戶應(yīng)用相連)的具體實現(xiàn)邏輯和技術(shù)要點進行分析和闡述。
圖2:eDRX 模式下指令數(shù)據(jù)不可達處理流程
圖3:PSM 模式下指令數(shù)據(jù)不可達處理流程
下行指令緩存的基本場景和過程是:當(dāng)NB-IOT 終端處于PSM模式時,終端與基站之間的空口已經(jīng)釋放,無法接收下行數(shù)據(jù)。NB 業(yè)務(wù)接入網(wǎng)關(guān)為客戶應(yīng)用提供了下行指令緩存的功能,NB-IOT網(wǎng)關(guān)能夠感知終端的狀態(tài),當(dāng)終端處于PSM 模式時,NB 網(wǎng)關(guān)將會對下行數(shù)據(jù)進行緩存。當(dāng)終端退出了PSM 模式能夠接收下行數(shù)據(jù)時,網(wǎng)關(guān)將會立即將緩存數(shù)據(jù)下發(fā),確??蛻魳I(yè)務(wù)數(shù)據(jù)下發(fā)的可靠性。由于PSM 和eDRX 模式涉及終端、網(wǎng)關(guān)、網(wǎng)絡(luò)配置的協(xié)同配合,因此要實現(xiàn)下行指令緩存機制,本質(zhì)上還要考慮四個方面的重要機制,分別是離線緩存機制,在線緩存機制,以及指令發(fā)送超時處理機制,指令超期處理機制。
當(dāng)應(yīng)用向NB-IOT 網(wǎng)關(guān)下發(fā)指令后,網(wǎng)關(guān)根據(jù)指令攜帶的TTL(Time To Live 生存時間值,是IPv4 報頭的一個8 bit 字段)參數(shù)判斷是立即下發(fā)指令還是緩存下發(fā)指令。TTL=0:立即下發(fā)指令。TTL>0:緩存下發(fā)指令。緩存時間依據(jù)指令下發(fā)API 接口攜帶的TTL 參數(shù)時間實現(xiàn)。TTL = 0 時,指令不做任何緩存。若終端在線,則指令直接下發(fā);若終端不在線,則指令直接判斷為超期。TTL >0 時,指令根據(jù)時間順序存放入隊列。當(dāng)TTL 超期時,緩存隊列中的對應(yīng)指令將被清除,并向應(yīng)用側(cè)推送指令超期。
NB-IOT 網(wǎng)關(guān)對于NB 指令采用隊列模式串行下發(fā),即當(dāng)上一條指令確認(rèn)送達(收到終端ack)或指令發(fā)送超時之后,再觸發(fā)下一條指令的處理。NB-IOT 網(wǎng)關(guān)對NB 指令緩存機制包含離線緩存及在線緩存兩種機制。同一終端緩存隊列最多支持N 條,即當(dāng)隊列滿時應(yīng)用再次下發(fā)指令會收到失敗返回。
離線緩存機制,是指當(dāng)指令下發(fā)時,終端處于離線狀態(tài)下的緩存機制。離線緩存依賴于Redis 實現(xiàn)。指令到達終端接入模塊后,終端接入判斷終端為離線狀態(tài),則將指令根據(jù)時間順序存入redis。終端由離線變?yōu)樯暇€時,平臺按照redis 中的緩存隊列順序串行下發(fā)指令。
在線緩存機制,是指當(dāng)指令下發(fā)時,終端處于在線狀態(tài)下的緩存機制。指令到達終端接入模塊后,終端接入將指令存入終端會話的指令在線緩存隊列尾部。指令下發(fā)采用隊列模式串行下發(fā)方式,即當(dāng)上一條指令確認(rèn)送達(收到終端ack)或指令發(fā)送超時之后,再觸發(fā)下一條指令的處理。
3.3.1 eDRX 模式下隊列處理
對于eDRX 模式在線終端,NB-IOT 網(wǎng)關(guān)收到指令將指令存入終端會話的指令在線緩存隊列尾部,并觸發(fā)隊列立即下發(fā),指令下發(fā)采用串行方式下發(fā)。
3.3.2 PSM 模式下隊列處理
網(wǎng)關(guān)根據(jù)PSM 模式的特點,在收到終端的任何上行報文時,設(shè)置N 秒(>20 秒)的空窗期。
(1)若收到指令時,終端不處于空窗期范圍內(nèi),則指令將存放于在線緩存隊列尾部,等待下一次收到任何上行報文后,觸發(fā)隊首的指令下發(fā)。
(2)若收到指令時,終端處于N 秒(>20 秒)空窗期范圍內(nèi):
(3)若在線緩存隊列中無指令,則會直接下發(fā)該條指令;
(4)若在線緩存隊列中有其他指令,則將該條指令放在隊列尾部緩存,同時下發(fā)隊首的指令。
對于eDRX/PSM 模式,NB-IOT 網(wǎng)關(guān)超時判斷規(guī)則:若網(wǎng)關(guān)下發(fā)指令后一直未收到終端回復(fù)的ack 報文,指令會在下發(fā)后,間隔5s、10s、20s、40s 各重傳一次,若最后一次下發(fā)后N 秒(N>45 秒)仍未收到ack 信息,則會判斷指令發(fā)送超時;對于eDRX 模式,網(wǎng)關(guān)會根據(jù)終端注冊時填寫的eDRX 超時時間來判斷超時,且在整個周期內(nèi)僅會發(fā)送一次。若指令發(fā)送超時,則根據(jù)省電模式的不同,處理邏輯不同:
(1)對于PSM 模式終端,上一條指令超時,隊列發(fā)送即停止,等待下一次收到終端的上行報文,繼續(xù)觸發(fā)隊列的下發(fā);
(2)對于eDRX 模式終端,上一條指令超時后,隊列中的后續(xù)指令依然繼續(xù)下發(fā),直到隊列為空即止。
TTL > 0 時,指令根據(jù)時間順序存放入隊列。當(dāng)TTL 超期時,緩存隊列中的對應(yīng)指令將被清除,并向應(yīng)用側(cè)推送指令超期。
指令超期依賴redis-expire 服務(wù)判斷,當(dāng)終端收到指令后,將指令存入緩存隊列尾部,同時通知redis-expire 服務(wù)將指令及指令超期時間戳存入本地隊列,redis-expire 服務(wù)定時器循環(huán)掃描隊列,將超期的指令移出隊列并通知終端接入指令超期。
終端收到指令超期通知后,清除本地會話在線緩存隊列中的指令或者redis 中緩存的指令。同時生成指令超期通知推送給北向應(yīng)用。
上述我們分析了下行指令通過NB 網(wǎng)關(guān)進行離線緩存和在線緩存的機制。當(dāng)緩存的指令下發(fā)到網(wǎng)元側(cè)時,針對eDRX 狀態(tài)和PSM 狀態(tài),如果下行指令數(shù)據(jù)仍不可到達終端,則相應(yīng)的處理分析如下:
3.6.1 eDRX模式下行指令數(shù)據(jù)不可達的處理
當(dāng)前收到DDN(DDN:Downlink Data Notification)消息時刻。
如果在尋呼時間窗口內(nèi):
(1)MME向SGW發(fā)送DDN Ack并攜帶DL Buffering Duration信元,通知SGW下行數(shù)據(jù)的緩存時長。
(2)MME下發(fā)Paging尋呼UE。
(3)若緩存時間超時仍沒有建立用戶面通道,則SGW丟棄緩存下行數(shù)據(jù)。
如果在尋呼時間窗口外:
(1)MME向SGW發(fā)送DDN Ack并攜帶DL Buffering Duration信元,通知SGW下行數(shù)據(jù)的緩存時長。
(2)MME啟動eDRX延遲尋呼定時器。
(3)eDRX延遲尋呼定時器超時后,向UE下發(fā)Paging。
(4)若緩存時間超時仍沒有建立用戶面通道,則SGW丟棄下行數(shù)據(jù)。
eDRX模式下指令數(shù)據(jù)不可達處理流程如圖2所示。3.6.2 PSM 模式下行指令數(shù)據(jù)不可達的處理
如圖3所示,當(dāng)有下行數(shù)據(jù),SGW發(fā)送Downlink Data Notification消息給MME觸發(fā)對處于PSM狀態(tài)的終端的尋呼時,MME可直接通過Data Notification Acknowledge消息攜帶DL Buffering Duration信元指示SGW緩存數(shù)據(jù),也可以在Data Notification Acknowledge消息發(fā)送完成后再向SGW發(fā)送Downlink Data Notification Failure Indication消息指示SGW丟棄數(shù)據(jù),可通過MME本地設(shè)置。
若緩存時間超時仍沒有建立用戶面通道,則SGW丟棄下行數(shù)據(jù)。
本文通過對影響NB-IOT 低功耗的4 種因素的分析和研究,我們可以得出以下結(jié)論:
(1)空口會話保持技術(shù)對于有效保障終端在PSM 模式或eDRX 模式下低功耗的運行,減少和網(wǎng)絡(luò)的交互,具有重要作用。
(2)下行指令緩存(包括指令發(fā)送超時和指令超期處理,以及網(wǎng)元側(cè)指令數(shù)據(jù)不可達的處理)機制,可以確保終端在PSM 模式或eDRX 模式下,不遺漏,不重復(fù)的精準(zhǔn)接收有效指令,通過對終端和網(wǎng)絡(luò)相應(yīng)參數(shù)(各類型定時器、空窗期參數(shù)等)的匹配,可以滿足不同NB-IOT 業(yè)務(wù)場景的需求。