Discontinuous Reception(DRX) Introduction
什麼是 Discontinuous Reception(DRX)?字面上的意思是不連續接收,意思即是UE的接收器,不會連續性的一直接收,會關閉接收器一段時間,等過一陣子再開啟,以達到UE省電的效果。在UE沒有DRX的狀況下,只能一直開著接收器去監聽基地台是否有作paging的動作,若有paging,UE則會開始與基地台從RRC idle進入到RRC connected的狀態。但若是如此,UE無時無刻開著接收器,會顯得相當的耗電,這時候就要藉由DRX的功能去降低UE開啟接收器的時間去達成省電的目的。
Short DRX Cycle and Long DRX Cycle
Long DRX Cycle
- 關閉接收器的時間較長
- 較為省電
- 使用者感受到的delay時間較長
Short DRX Cycle
- 關閉接收器的時間較短
- 較沒這麼省電
- 使用者感受到的delay時間較短
DRX Cycle有分 Short跟Long UE可能會直接進Long Cycle或是先進一段Short Cycle再進Long Cycle,這表示Short cycle算是option。
為什麼要這樣設計呢,因為Long Cycle雖然比較省電,但是使用者在使用UE時,總是會有時間密集性,所以短時間突發的使用就讓Short Cycle來處理,而長時間的省電就由Long Cycle來處理。
Discontinuous Reception(DRX) Parameter
你一定馬上會有一個疑問,那EnodeB要怎麼知道UE什麼時候關接收器,什麼時候開接收器,要怎麼同步。如果沒有良好的同步,必定會造成很嚴重的問題。所以在基地台的RRC message 裡面就會明確指出什麼時間點要關接收器,什麼時間點要開接收器,當UE收到這些參數之後,就會跟EnodeB有默契,知道什麼時候該開,什麼時候該關。
以下則是相關的參數。
DRX Parameter | Description |
DRX Cycle | 定義為一次DRX的時間長度,也就是指一次打開接收器加上一次關閉接收器的時間長(這是使用Subframe time及longdrx-CycleStartOffset所計算出來的)。 |
onDurationTimer | 這是指在DRX cycle中打開接收器的時間。 |
drx-Inactivity timer | 表示UE在收到PDCCH的資料,還需要接收器還要開啟多久,也就是說當沒有收到PDCCH來的資料時,這個Timer就會啟動,若Timer超過設定值之後,就會接收器就會關起來,但若在這個Timer仍在計數的時候,又收到PDCCH,則這個Timer就會歸零。 |
drx-Retransmission timer | 表示UE等候HARQ重傳時,必須監聽的最大PDCCH子訊框個數(什麼HARQ,是一個LTE錯誤重傳的機制,以後再寫。(HARQ細節的部份我們先不考量進來,不過下面有解釋DRX與HARQ的關係) |
shortDRX-Cycle | DRX Cycle有分Long DRX cycle或DRX Short,這個參數表示short DRX cycle代表short DRX cycle要用多久,才會轉變成Long DRX cycle ,若是沒有設定,則直接使用Long DRX。 |
drxShortCycleTimer | 因為有分Short DRX跟Long DRX,當超過一定的時間之後,會由Short DRX轉變成Long DRX。因為Long DRX雖然較省電,但是喚醒的時間也較久,所以LTE設計了一個機制,若是一段時間沒有資料要傳,則由Short DRX轉變成Long DRX。 |
Discontinuous Reception(DRX) mode in different RRC status
在不同的RRC狀態時,會有不同的DRX的表現
先從以下的圖說起,這個圖是引用IEEE的資料
在RRC Connected時候,可以看的到,跟ACTIVE真的要傳資料並無太大的不同,最大的不同是LTE-U_u是DRX Enabled介面,所以會進行Connected節電。而在最右邊的RRC idle時,可以看的到所有的核心網路都只有把Context 保留住,但是並沒有實體做連結,而eNodeB更是把UE context移除了,所以這時候如果有要Downlink資料要傳送,核心網路會重建,並且會讓eNodeB去對UE做Paging。EnodeB做Paging的時間會選擇UE在DRX cycle的On Duration去做傳送。所以代表UE要接收到資料的時間會較長。
結論:
- Active mode DRX 用在RRC Connected狀態,使用Short DRX Cycle與Long DRX Cycle,RRC Connected表示UE與EnodeB之間是有空中資源,可以隨時進行資料傳輸,On Duration時,在聆聽的是PDCCH。
- Idle mode DRX 用在RRC Idle狀態,使用Long DRX Cycle ,RRC Idle表示UE與EnodeB之間沒有空中資源,必須透過Paging(下行)或是Random Access(上行)來取得空中資源,On Duration時是聆聽aging channel。
Discontinuous Reception(DRX) Operation
要了解DRX,必須要先從上面這張圖開始
DRX的時間為兩個,一個是On Duration,另一個則是Opportunity for DRX,On duration 是指要打開接收器的時間,Opportunity for DRX則是可以關閉接收器的部分,為什麼是Opportunity ,而不是Off Duration呢,因為要考慮到HARQ重傳的狀況。所以才會使用這個字眼。
有兩種可能會讓UE進入DRXCycle
- 在On duration接收的時候會收到從網路來的資料,當沒有從PDCCH來的資料時,就會開始Inactivity timer。這個計時器就是在算網路跟UE間多久沒有進行活動,當Inactivity timer到期的時候,就會進入DRX Cycle
- 另一種則是收到EnodeB所傳送的DRX Command MAC control element指令,則UE也會進入DRX Cycle
進入DRX Cycle之後會先有做以下的事情
- 會將onDurationTime與drx-InactivityTimer,因為這都是On Duration 所需的計時器。
- 判斷是否有Short DRX cycle ,若是有的話,則使用Short DRX,若是沒有的話,則是使用Long DRX Cycle,還記得前面提到Long DRX與Short DRX的差別嗎,是這是使用Subframe time及longdrx-CycleStartOffset所計算出來的。會有這樣的設計,UE通常剛進入DRX會有很高的機會再收到資料,當處於Short DRX cycle一段時間沒傳資料之後,才會進入Long DRX Cycle。
進入Long DRX Cycle時,符合以下的條件會打開接收器監聽訊號
( [(SFN * 10) + subframe number] mod (longDRX_Cycle) == (drxStartOffset) )
- [(SFN * 10) + subframe number] 這個東西代表每個subframe的系統絕對位置,Frame的架構以後再寫吧,這邊寫就扯遠了。
- mod代表除某個東西的餘數
- LongDRX_Cycle是網路給的Long DRX Cycle數值
- drxStartOffset代表是在哪個訊框開始的,我可以在某個訊框開始週期
整段的意思就是如果我在某些訊框剛好是Long DRX Cycle時才會開起來,因為Long DRX 數值通常比較大,所以開起來的次數當然明顯比較少,一到一萬除於100能整除的數字一定比除於10的數字少。
進入Short DRX Cycle,符合以下的條件會打開接收器監聽訊號
( [(SFN * 10) + subframe number] mod (shortDRX_Cycle) == (drxStartOffset) mod (shortDRX_Cycle))
- [(SFN * 10) + subframe number] 這個東西代表每個subframe的系統絕對位置,Frame的架構以後再寫吧,這邊寫就扯遠了。
- mod代表除某個東西的餘數
- ShortDRX_Cycle是網路給的Short DRX Cycle數值
- drxStartOffset代表是在哪個訊框開始的,我可以在某個訊框開始週期
- 為什麼右邊是還會除餘shortDRX_Cycle,老實說我不清楚,也找不到原因,只知道如果除餘一個數字會讓 Long DRX跟 Short DRX的offset會不同。
因為Long DRX 數值通常比較大,所以開起來的次數當然明顯比較少,一到一萬除於100能整除的數字一定比除於10的數字少。
Discontinuous Reception(DRX) and HARQ Relation
但要注意一件事情,也就是我們中間有提到的HARQ重傳機制會如何影響到DRX的機制
鑒於很多資料都不清楚,我用以下一張圖來說明HARQ與DRX的關係(僅為概念圖)
可以看到上圖有一個HARQ RTT Timer也有一個DRX Retransmission timer,HARQ RTT timer表示 HARQ的重傳最快什麼時候會回來,在發生HARQ解碼錯誤,通常是傳送過程被影響,於是會啟動HARQ RTT Timer,而且必定是HARQ RTT timer結束之後HARQ重傳才會到,代表這中間都還可以不理會繼續做DRX。而DRX-Retransmission timer為 HARQ RTT timer結束之後會開啟,當開啟之後,就會暫停DRX的機制,等待重傳,等到Retransmission time結束後就會回歸DRX機制。這是為了重傳而設計的機制
重點:只有在drx-InactivityTimer和drx-RetransmissionTimer都不啟動時,UE才會關閉接收器。也就是說InactivityTimer時間到了,但RetransmissionTimer還在跑,還是要乖乖的把接收器打開來等待HARQ機制重傳
HARQ後記
看了這麼多,可以發現協會開放了這麼多的參數,就是要給每個營運商自己去控制UE的省電程度與開啟DRX之後的延遲程度,所以到最後還是把這個調整的課題留給營運商!