用語集

PBCH Physical broadcast channel
UE User Equipment
EPC(S) Evolved Packet Core(System)
MME Mobility Management
SAE System Architecture
E-UTRAN Evolved Universal
PCFICH Physical control format indicator channel
PDCCH Physical downlink control channel
PHICH Physical Hybrid ARQ Indicator Channe
PDSCH Physical downlink shared channel
PMCH Physical multicast channel
PUCCH Physical uplink control channel
SR Carries Scheduling Request
PUSCH Physical uplink shared channel
PRACH Physical random access channel
CQI Channel Quality Indicator
BSR Buffer Status Report
eNB eNodeB evoluted NodeB E-UTRANとも呼ばれる
RACH Random Access Channel
SAP Service Access Point LTEは階層的なチャンネル構造を持つ。LTEは3種類のチャンネル種別を持つ、たとえば、「Logical」「Transport」「PhysicalCahnnel」。それぞれがServiceAccessPoint(SAP)がそれぞれのレイヤーで属している。3チャンネルは、下位レイヤーが上位レイヤーに対してサービスを提供する。
Logical Channels Transmitとは何か。それらはMACレイヤーによって、RLCレイヤーに対してサービスを提供するために使われる。 それぞれのLogicalチャンネルは、情報の種類によって定義された物を運ぶ。LTEではそれらの2つのLgocalチャンネルカテゴリはControlChannnelとTrafficChannelに分けて利用されている。
Transport Channels どうやって転送するか。PHYはTransportChannelを使ってMACレイヤーに対してサービスを提供する。それは、どのようにデータをむせんで運ぶかを明文化されている。
Physical Channels Actual Transmission Each physical channel maps to a set of resource elements in the time frequency grid that carry information from upper layers. The basic entities that make a physical channel are REs and RBs. A resource element is one subcarrier by one OFDM symbol and typically this could carry one (or two with spatial multiplexing) modulated symbol(s). A resource block is a collection of resource elements and in the frequency domain this represents the smallest quanta of resources that can be allocated.
HARQ Hybrid Automatic Rrepeat reQuest(ARQ) HSDPAやWiMAX、LTEといった最近の通信規格で採用されている“データの誤り訂正手法”です。
LCID Logical Channel ID
FFR Fractional Frequency Reuse Wifiみたいに3チャンネルを交互に使うと周波数帯域が3分の1しかつかえなくなり非効率。中心エリアでは全周波数を使い、セルの隣接する端のエリアだけ3チャンネルに分けて使う。端では遅いけど干渉しない。中心だと速いし干渉しない技術
AMC Adaptive Modulation and channel Coding 受信レベルに応じて最適な変調方式,符号化率を選択する適応変調
PDCP Packet Data Convergence Protocol The PDCP is located in the Radio Protocol Stack in the UMTS and LTE Air interface on top of the RLC layer. https://en.wikipedia.org/wiki/PDCP IPパケットヘッダ圧縮、解凍、暗号化を行なう
RLC Radio link control layer 2 protocol used in UMTS and LTE on the Air interface. RLC is located on top of the 3GPP MAC-layer and below the PDCP-layer. The main tasks of the RLC protocol https://en.wikipedia.org/wiki/Radio_Link_Control 再送制御,重複検出,順序整列を行なう
RRC Radio Resource Control 端末(UE)と基地局(E-UTRAN)との間の接続状態は、無線ネットワークを制御するRRC(Radio Resource Control)のアイドル状態(RRC idle)とRRC接続状態(RRC Connected)の2つで示されます。システム報知情報配信、緊急地震速報配信、ページング配信、NASメッセージ配信、ハンドオーバー制御などを行なう
X2ハンドオーバー eNB同士で端末情報を引き取りハンドオーバーする方法
S1ハンドオーバー eNB同士のX2が使えない場合に、コア側のS-GW経由で指示してハンドオーバーさせる方法
bearer 運ぶ」の意味で、フォーマットは違えど、どこからどこまで運ばれるデータという意味で使われている。ただしRadioBearerと言ったときにはUEとeNB間の無線を運ばれるPDUという意味になる模様

 

ns3コード解析

SpectrumModel

vector(動的配列)でチャンネル情報の配列を渡すと、Band(構造体的なクラス)を個数分Vectorでメンバ変数に保持する。

予想

src/lte/test/lte-test-frequency-reuse.ccがベースになる。この中でクラスとして利用されているLteSpectrumPhyというのがあり、lte-spectrum-phy.ccがある。
lte-spectrum-phy.cc中にStartRXがあり、ここで計算処理を入れられそう。なので、lte-spectrum-phyとlte-ste-frequency-reuseをベースとして、書く。

また、RATCHはそのままで同期まではするが、UEからの送信Scheduringをしないので、MACを確率するために何処かの何かを継承したクラス中でOverrideして無効化してやる必要がある。

StartRxの中をよく見ると、受信のチャンネル等セットアップしかなかった。StartRxData中にm_pakcetBurstというのがある。これの個数で判別して落としたらいいんじゃ無いか?

lte-simple-spectrum-phy.ccを拡張する案

以下のコメント部分のように拡張できそう。

lte-simple-spectrum-phy.ccPtr<LteSpectrumSignalParametersDataFrame> lteDataRxParams = DynamicCast<LteSpectrumSignalParametersDataFrame> (spectrumRxParams);
  if (lteDataRxParams != 0)
    {

      //call StartRxData                                                                                                                                                     // m_interferenceData->AddSignal (rxPsd, duration);
      // StartRxData (lteDataRxParams);
      // //
      //if(lteDataRxParams->packetBurst){ //network/utils/packet-burst.h packet is stored in std::list                                                                       //  if(lteDataRxParams->packetBurst->GetNPackets > 10){
      //  discard overflow data
      //  }                                                                                                                                                                  //}

lteDataRxParamsには電波から来る複数個のpacketがpacketBurstに詰まっているので、これを個数調べてdeleteしたらいいんじゃないだろうか?listなので、適当に消せそう。

ENB受信時

lte-enb-phy.cc 430 LteEnbPhy::PhyPduReceived (Ptr p)

  • m_enbPhySapUser->ReceivePhyPdu (p);
    と呼ばれているので実体を探す。
lte-enb-phy-sap.hclass LteEnbPhySapUser

{
public:
  virtual ~LteEnbPhySapUser ();

  /**
   * Called by the Phy to notify the MAC of the reception of a new PHY-PDU
   * \param p
   */
  virtual void ReceivePhyPdu (Ptr<Packet> p) = 0;

Virtualなので、どこかでOverrideされている。

lte-enb-mac.ccclass EnbMacMemberLteEnbPhySapUser : public LteEnbPhySapUser

{
public:
  EnbMacMemberLteEnbPhySapUser (LteEnbMac* mac);

  // inherited from LteEnbPhySapUser
  virtual void ReceivePhyPdu (Ptr<Packet> p);
  :
    で
  :
void EnbMacMemberLteEnbPhySapUser::ReceivePhyPdu (Ptr<Packet> p){
  m_mac->DoReceivePhyPdu (p);
}
  :
  で
  :
void LteEnbMac::DoReceivePhyPdu (Ptr<Packet> p)
{
  :

  いろいろBerereTagを取り出してLCIDやRantiからLteMacSapUser*をmapで取り出すようになっている。
      (*lcidIt).second->ReceivePdu (p); //LCID :Logical Channel ID
}

という感じで、

ENBが送信するとき

そもそもlte-enbと書いてあるのでeNB側のコードかと思ったが、実はUEのコードもある??
lte-enb-mac.cc 449 LteEnbMac::DoSubframeIndication (uint32_t frameNo, uint32_t subframeNo)
ここで、ダウンリンクとアップリンクのCQI送信と、BSR送信をやっている
1.ダウンリンク
1.1. 受信したCQIがあったら、DL-CQIをスケジューラーに送る
1.2. 受信したRachPreableがあったら受信してスケジューラに通知する
1.3. これらの処理が終わっていたら、ダウンリンク転送の機会を得たことになる
1.4. 最後のTTIから集まったDL HARQフィードバックを転送する
1.5. m_schedSapProvider->SchedDlTriggerReq (dlparams);
2.アップリンク
2.1. UL-CQIをスケジューラーに送る
2.2. BSRレポートをスケジューラーに送る
2.3. これらの処理が終わっていたら、アップリンク転送の機会を得たことになる
2.4. 最後のTTIから集まったDL HARQフィードバックを転送する
2.5. m_schedSapProvider->SchedUlTriggerReq (ulparams);

UEが送信するとき

lte-ue-mac.cc 775
LteUeMac::SendReportBufferStatus (void) 314