LTE Module User Documentation(翻译12)——X2切换(X2-based handover)
生活随笔
收集整理的這篇文章主要介紹了
LTE Module User Documentation(翻译12)——X2切换(X2-based handover)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?LTE用戶文檔
(如有不當的地方,歡迎指正!)
?
18 X2-based handover
? 正如 3GPP 定義的,切換是改變用戶服務小區的連接方式的過程。這一過程中涉及的兩個基站通常稱為源基站和目標基站。 ? 為了使能仿真中 X2 切換的執行,有三個條件必須要滿足。首先,仿真中必須使能 EPC(見 Evolved Packet Core (EPC)?)。 ? 其次,兩個基站之間必須配置 X2 接口,這一點必須在仿真程序中明確交待: ? lteHelper->AddX2Interface (enbNodes); 其中,enbNodes 是一個包含兩個基站(基站之間配置有 X2 接口)的 NodeContainer (節點容器)。如果容器包含的基站超過兩個,函數會在容器的每一對基站之間創建 X2 接口 。 ? 最后,目標基站必須將?X2?切換請求(HANDOVER REQUES)配置為“open”。每個基站默認為開啟的,因此大多數情況下不需要額外的命令。 然而,用戶可以通過將布爾屬性?LteEnbRrc::AdmitHandoverRequest 設為 false? 來設置基站“closed” 。例如,你可以運行 lena-x2-handover?程序并按照下列方式設置屬性: ? NS_LOG=EpcX2:LteEnbRrc ./waf --run lena-x2-handover --command="%s --ns3::LteEnbRrc::AdmitHandoverRequest=false" 在滿足上述三個要求后,切換過程就可以自動或手動觸發了。下面的小節將一一闡述。 ?18.1 Manual handover trigger(手動切換觸發)
? 通過調度明確的切換事件來“手動”觸發仿真程序中的切換事件。LteHelper?對象為切換事件的調度提供了一個方便的方法。例如,讓我們假定 ueLteDevs 為一個 NetDeviceContainer ,包含即將被切換的用戶;enbLteDevs?為另一個 NetDeviceContainer?,包含源基站和目標基站。然后,在 0.1 s ,調度切換如下: ? lteHelper->HandoverRequest (Seconds (0.100),ueLteDevs.Get (0),enbLteDevs.Get (0),enbLteDevs.Get (1)); 注意,用戶需要已經連接到源基站,否則仿真會出錯終止。 ? 本小節完整的代碼參見 src/lte/examples/ lena-x2-handover.cc 。 ?18.2 Automatic handover trigger(自動切換觸發)
? 切換過程也可以通過用戶的服務基站“自動”觸發。觸發背后的邏輯依賴于當前活躍在基站 RRC 實體中的切換算法。用戶可以選擇和配置仿真中將使用的切換算法,本節下面將闡述這一點。用戶也可以選擇自己編寫切換算法,詳情見設計文檔的 Handover algorithm?這一章節。 ? 切換算法的選擇是通過 LteHelper 對象和它的 SetHandoverAlgorithmType 方法實現的: ? Ptr<LteHelper> lteHelper = CreateObject<LteHelper> (); lteHelper->SetHandoverAlgorithmType ("ns3::A2A4RsrqHandoverAlgorithm"); 選定的切換算法也可以提供幾種配置屬性,如下: lteHelper->SetHandoverAlgorithmAttribute ("ServingCellThreshold",UintegerValue (30)); lteHelper->SetHandoverAlgorithmAttribute ("NeighbourCellOffset",UintegerValue (1)); LTE 模塊中有三種切換算法可供選擇。第一種是?A2-A4-RSRQ?切換算法(命名為?ns3::A2A4RsrqHandoverAlgorithm),它是默認算法,使用方法如上。 ? 第二種是最強小區切換算法?strongest cell?handover algorithm (命名為 ns3::A3RsrpHandoverAlgorithm),配置方式如下: ? lteHelper->SetHandoverAlgorithmType ("ns3::A3RsrpHandoverAlgorithm"); lteHelper->SetHandoverAlgorithmAttribute ("Hysteresis",DoubleValue (3.0)); lteHelper->SetHandoverAlgorithmAttribute ("TimeToTrigger",TimeValue (MilliSeconds (256))); 第三種是最特別的一個,稱為?no-op? 切換算法,基本上禁用自動切換。當手動切換觸發需要專門地控制所有的切換決策時,該算法就會特別有用。它并沒有任何配置屬性,使用方式如下: ? lteHelper->SetHandoverAlgorithmType ("ns3::NoOpHandoverAlgorithm"); 每種切換算法的決策策略和屬性,請參考設計文檔的?Handover algorithm?這一章節。 ? 最后,LteHelper 的 InstallEnbDevice 函數會實例化每個基站設備所選的切換算法。換句話說,在最終確定下列代碼前要確保選擇正確的切換算法:? ? NetDeviceContainer enbLteDevs = lteHelper->InstallEnbDevice (enbNodes); 本小節完整的代碼參見 src/lte/examples/lena-x2-handover-measures.cc。 ?18.3 Tuning simulation with handover
? 正如設計文檔中提及的,當切換失敗時,當前切換模型的實現可能產生不可預期的后果。本小節將描述用戶在仿真中使用切換時應考慮的幾點步驟。 ? 造成切換失敗的主要原因是在執行切換過程中傳輸切換相關的信令發生錯誤。從設計文檔的這個圖?Sequence diagram of the X2-based handover?可以明顯看出,存在很多信令,并且它們使用不同的接口和協議。為了簡單起見,我們可以假定X2接口(源基站和目標基站之間)與 S1 接口(目標基站與 SGW/PGW之間)十分穩定。因此我們重點關注 RRC 協議(在用戶和基站之間)和隨機接入過程——一般通過空中傳輸,信道條件容易下降。 ? 減小傳輸誤差的一般建議是確保每個用戶有足夠高的 SINR。這可以通過合適地計劃網絡拓撲來最小化網絡覆蓋空洞。如果拓撲已經有了覆蓋空洞,那么應該避免把用戶配置在該區域。 ? 另一種方法是避免??too-late handovers 。?換句話說,切換應該發生在用戶的? SINR 變得太低之前,否則用戶可能不能從源基站那接收到切換命令。切換算法有辦法控制什么時候執行切換決策。例如,A2-A4-RSRQ 切換算法可以配置成一個更高的閾值來更早決定切換。相似的,更小的滯后現象或者最強小區切換算法中更短時間的觸發通常會導致過早地切換。為了找到這些參數的合適值,應該考慮用戶移動速度這一參數。一般而言,一個移動越快的用戶需要執行的切換會越早。一些研究作品已經提出了一些推薦值,例如?[Lee2010]?。 ? 上述要點已經足夠正常的仿真使用,但是當一些特殊的情況出現時,還要考慮一些極端的措施。例如,用戶可能考慮禁用信道誤差模型(?disabling the channel error models),確保所有切換相關的信令消息成功傳輸,而不管距離和信道條件。然而,這也會影響所有其他的與切換無關的數據或控制數據包,這可能是不必要的副作用。另外,用戶可以使用下列方式實現: Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false)); Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));?
通過使用上述代碼,我們同時在控制和數據信道以及上行和下行方向上禁用誤差模型。這是必要的,因為切換相關的信令消息通過使用這些信道來傳輸。例外是當仿真使用理想的 RRC 協議時,這種情況下,只需考慮隨機接入過程。該過程包含控制消息,因此,我們只需要禁用控制信道的誤差模型。
?18.4 Handover traces
? RRC 模型,特別是 LteEnbRrc?和 LteUeRrc?對象,會提供一些有用的 traces 用于連接一些自定義的函數,以便在用戶側和基站側、在整個切換執行過程的開始和結束,這些函數都能被調用。例如,在你的仿真程序中,你可以聲明下列方法: ? void NotifyHandoverStartUe (std::string context,uint64_t imsi,uint16_t cellId,uint16_t rnti,uint16_t targetCellId) {std::cout << Simulator::Now ().GetSeconds () << " " << context<< " UE IMSI " << imsi<< ": previously connected to CellId " << cellId<< " with RNTI " << rnti<< ", doing handover to CellId " << targetCellId<< std::endl; }void NotifyHandoverEndOkUe (std::string context,uint64_t imsi,uint16_t cellId,uint16_t rnti) {std::cout << Simulator::Now ().GetSeconds () << " " << context<< " UE IMSI " << imsi<< ": successful handover to CellId " << cellId<< " with RNTI " << rnti<< std::endl; }void NotifyHandoverStartEnb (std::string context,uint64_t imsi,uint16_t cellId,uint16_t rnti,uint16_t targetCellId) {std::cout << Simulator::Now ().GetSeconds () << " " << context<< " eNB CellId " << cellId<< ": start handover of UE with IMSI " << imsi<< " RNTI " << rnti<< " to CellId " << targetCellId<< std::endl; }void NotifyHandoverEndOkEnb (std::string context,uint64_t imsi,uint16_t cellId,uint16_t rnti) {std::cout << Simulator::Now ().GetSeconds () << " " << context<< " eNB CellId " << cellId<< ": completed handover of UE with IMSI " << imsi<< " RNTI " << rnti<< std::endl; } 然后,你可以把這些方法連接到(hook up)相應的 trace sources ,類似于: ? Config::Connect ("/NodeList/*/DeviceList/*/LteEnbRrc/HandoverStart",MakeCallback (&NotifyHandoverStartEnb)); Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/HandoverStart",MakeCallback (&NotifyHandoverStartUe)); Config::Connect ("/NodeList/*/DeviceList/*/LteEnbRrc/HandoverEndOk",MakeCallback (&NotifyHandoverEndOkEnb)); Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/HandoverEndOk",MakeCallback (&NotifyHandoverEndOkUe)); 示例程序 src/lte/examples/lena-x2-handover.cc 表明上述所有指令如何整合到一個仿真程序中。你可以像這樣運行程序: ? ./waf --run lena-x2-handover 并且它將輸出由自定義切換 trace hooks print 的消息。為了額外可視化一些有用的日志信息,你可以像這樣運行程序: ? NS_LOG=LteEnbRrc:LteUeRrc:EpcX2 ./waf --run lena-x2-handover?
?
?
參考文獻
https://www.nsnam.org/docs/models/html/lte-user.html轉載于:https://www.cnblogs.com/alice123/p/5505733.html
總結
以上是生活随笔為你收集整理的LTE Module User Documentation(翻译12)——X2切换(X2-based handover)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏音频工具推荐:Wwise音频引擎入门
- 下一篇: 【建模日记】建模二三事笔记