satellite-ut-helper-dvb.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2013 Magister Solutions Ltd
4  * Copyright (c) 2018 CNES
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Author: Bastien Tauran <bastien.tauran@viveris.fr>
20  */
21 
23 
24 #include <ns3/callback.h>
25 #include <ns3/log.h>
26 #include <ns3/pointer.h>
27 #include <ns3/satellite-base-encapsulator.h>
28 #include <ns3/satellite-channel-estimation-error-container.h>
29 #include <ns3/satellite-channel.h>
30 #include <ns3/satellite-const-variables.h>
31 #include <ns3/satellite-enums.h>
32 #include <ns3/satellite-generic-stream-encapsulator-arq.h>
33 #include <ns3/satellite-generic-stream-encapsulator.h>
34 #include <ns3/satellite-gw-llc.h>
35 #include <ns3/satellite-handover-module.h>
36 #include <ns3/satellite-id-mapper.h>
37 #include <ns3/satellite-mobility-observer.h>
38 #include <ns3/satellite-net-device.h>
39 #include <ns3/satellite-node-info.h>
40 #include <ns3/satellite-packet-classifier.h>
41 #include <ns3/satellite-phy-rx-carrier-conf.h>
42 #include <ns3/satellite-phy-rx.h>
43 #include <ns3/satellite-phy-tx.h>
44 #include <ns3/satellite-queue.h>
45 #include <ns3/satellite-request-manager.h>
46 #include <ns3/satellite-return-link-encapsulator-arq.h>
47 #include <ns3/satellite-return-link-encapsulator.h>
48 #include <ns3/satellite-topology.h>
49 #include <ns3/satellite-typedefs.h>
50 #include <ns3/satellite-ut-llc.h>
51 #include <ns3/satellite-ut-mac.h>
52 #include <ns3/satellite-ut-phy.h>
53 #include <ns3/satellite-ut-scheduler.h>
54 #include <ns3/satellite-utils.h>
55 #include <ns3/singleton.h>
56 
57 NS_LOG_COMPONENT_DEFINE("SatUtHelperDvb");
58 
59 namespace ns3
60 {
61 
62 NS_OBJECT_ENSURE_REGISTERED(SatUtHelperDvb);
63 
64 TypeId
66 {
67  static TypeId tid =
68  TypeId("ns3::SatUtHelperDvb").SetParent<SatUtHelper>().AddConstructor<SatUtHelperDvb>();
69  return tid;
70 }
71 
72 TypeId
74 {
75  NS_LOG_FUNCTION(this);
76 
77  return GetTypeId();
78 }
79 
81 {
82  NS_LOG_FUNCTION(this);
83 
84  // this default constructor should be never called
85  NS_FATAL_ERROR("SatUtHelperDvb::SatUtHelperDvb - Constructor not in use");
86 }
87 
89  uint32_t fwdLinkCarrierCount,
90  Ptr<SatSuperframeSeq> seq,
94  RandomAccessSettings_s randomAccessSettings)
95  : SatUtHelper(carrierBandwidthConverter,
96  fwdLinkCarrierCount,
97  seq,
98  readCb,
99  reserveCb,
100  sendCb,
101  randomAccessSettings)
102 {
103  NS_LOG_FUNCTION(this << fwdLinkCarrierCount << seq);
104 }
105 
106 Ptr<NetDevice>
108  uint32_t satId,
109  uint32_t beamId,
110  Ptr<SatChannel> fCh,
111  Ptr<SatChannel> rCh,
112  Ptr<SatNetDevice> gwNd,
113  Ptr<SatNcc> ncc,
114  Address satUserAddress,
117 {
118  NS_LOG_FUNCTION(this << n << satId << beamId << fCh << rCh << gwNd << ncc << satUserAddress);
119 
120  NetDeviceContainer container;
121 
122  // Create SatNetDevice
123  m_deviceFactory.SetTypeId("ns3::SatNetDevice");
124  Ptr<SatNetDevice> dev = m_deviceFactory.Create<SatNetDevice>();
125 
126  // Attach the SatNetDevice to node
127  n->AddDevice(dev);
128 
129  SatPhy::CreateParam_t params;
130  params.m_satId = satId;
131  params.m_beamId = beamId;
132  params.m_device = dev;
133  params.m_txCh = rCh;
134  params.m_rxCh = fCh;
135  params.m_standard = SatEnums::DVB_UT;
136 
137  // Create a packet classifier
138  Ptr<SatPacketClassifier> classifier = Create<SatPacketClassifier>();
139 
143  Ptr<SatChannelEstimationErrorContainer> cec;
144  // Not enabled, create only base class
146  {
147  cec = Create<SatSimpleChannelEstimationErrorContainer>();
148  }
149  // Create SatFwdLinkChannelEstimationErrorContainer
150  else
151  {
152  cec = Create<SatFwdLinkChannelEstimationErrorContainer>();
153  }
154 
155  SatPhyRxCarrierConf::RxCarrierCreateParams_s parameters =
156  SatPhyRxCarrierConf::RxCarrierCreateParams_s();
157  parameters.m_errorModel = m_errorModel;
158  parameters.m_daConstantErrorRate = m_daConstantErrorRate;
159  parameters.m_daIfModel = m_daInterferenceModel;
160  parameters.m_raIfModel = m_raSettings.m_raInterferenceModel;
161  parameters.m_raIfEliminateModel = m_raSettings.m_raInterferenceEliminationModel;
162  parameters.m_linkRegenerationMode =
163  Singleton<SatTopology>::Get()->GetForwardLinkRegenerationMode();
164  parameters.m_bwConverter = m_carrierBandwidthConverter;
165  parameters.m_carrierCount = m_fwdLinkCarrierCount;
166  parameters.m_cec = cec;
167  parameters.m_raCollisionModel = m_raSettings.m_raCollisionModel;
168  parameters.m_randomAccessModel = m_raSettings.m_randomAccessModel;
169 
170  Ptr<SatUtPhy> phy = CreateObject<SatUtPhy>(
171  params,
173  parameters,
175  phy->SetChannelPairGetterCallback(cbChannel);
176 
177  // Set fading
178  phy->SetTxFadingContainer(n->GetObject<SatBaseFading>());
179  phy->SetRxFadingContainer(n->GetObject<SatBaseFading>());
180 
181  Ptr<SatUtMac> mac =
182  CreateObject<SatUtMac>(n, satId, beamId, m_superframeSeq, m_crdsaOnlyForControl);
183 
184  // Set the control message container callbacks
185  mac->SetReadCtrlCallback(m_readCtrlCb);
186  mac->SetReserveCtrlCallback(m_reserveCtrlCb);
187  mac->SetSendCtrlCallback(m_sendCtrlCb);
188 
189  // Set timing advance callback to mac (if not asynchronous access)
191  {
192  Ptr<SatMobilityObserver> observer = n->GetObject<SatMobilityObserver>();
193  NS_ASSERT(observer != nullptr);
194 
196  MakeCallback(&SatMobilityObserver::GetTimingAdvance, observer);
197  mac->SetTimingAdvanceCallback(timingCb);
198  }
199 
200  // Attach the Mac layer receiver to Phy
201  SatPhy::ReceiveCallback recCb = MakeCallback(&SatUtMac::Receive, mac);
202 
203  phy->SetAttribute("ReceiveCb", CallbackValue(recCb));
204  mac->SetTxCheckCallback(MakeCallback(&SatUtPhy::IsTxPossible, phy));
205 
206  // Create callback to inform phy layer slices subscription
207  mac->SetSliceSubscriptionCallback(MakeCallback(&SatUtPhy::UpdateSliceSubscription, phy));
208 
209  // Create Logical Link Control (LLC) layer
210  Ptr<SatUtLlc> llc = CreateObject<SatUtLlc>();
211 
212  // Set the control msg read callback to LLC due to ARQ ACKs
213  llc->SetReadCtrlCallback(m_readCtrlCb);
214 
215  // Create a request manager and attach it to LLC, and set control message callback to RM
216  Ptr<SatRequestManager> rm = CreateObject<SatRequestManager>();
217  llc->SetRequestManager(rm);
218  rm->SetCtrlMsgCallback(MakeCallback(&SatNetDevice::SendControlMsg, dev));
219 
220  if (Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode() != SatEnums::TRANSPARENT &&
221  Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode() !=
223  {
224  llc->SetAdditionalHeaderSize(SatAddressE2ETag::SIZE);
225  rm->SetHeaderOffsetVbdc(38.0 / (38 - 2 - SatAddressE2ETag::SIZE));
226  }
227 
228  // Set the callback to check whether control msg transmissions are possible
229  rm->SetCtrlMsgTxPossibleCallback(MakeCallback(&SatUtMac::ControlMsgTransmissionPossible, mac));
230 
231  // Set the callback to check whether logon msg transmissions are possible
232  rm->SetLogonMsgTxPossibleCallback(MakeCallback(&SatUtMac::LogonMsgTransmissionPossible, mac));
233 
234  // Set TBTP callback to UT MAC
235  mac->SetAssignedDaResourcesCallback(MakeCallback(&SatRequestManager::AssignedDaResources, rm));
236 
237  // Set Send Logon callback to UT MAC
238  mac->SetSendLogonCallback(MakeCallback(&SatRequestManager::SendLogonMessage, rm));
239 
240  // Attach the PHY layer to SatNetDevice
241  dev->SetPhy(phy);
242 
243  // Attach the Mac layer to SatNetDevice
244  dev->SetMac(mac);
245 
246  // Attach the LLC layer to SatNetDevice
247  dev->SetLlc(llc);
248 
249  // Attach the packet classifier
250  dev->SetPacketClassifier(classifier);
251 
252  // Attach the Mac layer C/N0 updates receiver to Phy
253  SatPhy::CnoCallback cnoCb = MakeCallback(&SatRequestManager::CnoUpdated, rm);
254  phy->SetAttribute("CnoCb", CallbackValue(cnoCb));
255 
256  // Set the device address and pass it to MAC as well
257  Mac48Address addr = Mac48Address::Allocate();
258  dev->SetAddress(addr);
259 
260  Singleton<SatIdMapper>::Get()->AttachMacToTraceId(dev->GetAddress());
261  Singleton<SatIdMapper>::Get()->AttachMacToUtId(dev->GetAddress());
262  Singleton<SatIdMapper>::Get()->AttachMacToBeamId(dev->GetAddress(), beamId);
263  Singleton<SatIdMapper>::Get()->AttachMacToSatId(dev->GetAddress(), satId + 1);
264 
265  // Create encapsulator and add it to UT's LLC
266  Mac48Address gwAddr = Mac48Address::ConvertFrom(gwNd->GetAddress());
267 
268  // Create an encapsulator for control messages.
269  // Source = UT MAC address
270  // Destination = GW MAC address (or SAT user MAC address if regenerative)
271  // Flow id = by default 0
272  Ptr<SatBaseEncapsulator> utEncap;
273  if (Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode() ==
275  {
276  utEncap = CreateObject<SatBaseEncapsulator>(addr,
277  Mac48Address::ConvertFrom(satUserAddress),
278  addr,
279  gwAddr,
281  }
282  else
283  {
284  utEncap =
285  CreateObject<SatBaseEncapsulator>(addr, gwAddr, addr, gwAddr, SatEnums::CONTROL_FID);
286  }
287 
288  // Create queue event callbacks to MAC (for random access) and RM (for on-demand DAMA)
291  {
292  macCb = MakeCallback(&SatUtMac::ReceiveQueueEventEssa, mac);
293  }
294  else
295  {
296  macCb = MakeCallback(&SatUtMac::ReceiveQueueEvent, mac);
297  }
298  SatQueue::LogonCallback logonCb = MakeCallback(&SatUtMac::SendLogon, mac);
300 
301  // Create a queue
302  Ptr<SatQueue> queue = CreateObject<SatQueue>(SatEnums::CONTROL_FID);
303  queue->AddLogonCallback(logonCb);
304  queue->AddQueueEventCallback(macCb);
305  queue->AddQueueEventCallback(rmCb);
306  utEncap->SetQueue(queue);
307  if (Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode() ==
309  {
310  llc->AddEncap(addr,
311  Mac48Address::ConvertFrom(satUserAddress),
313  utEncap);
314  }
315  else
316  {
317  llc->AddEncap(addr, gwAddr, SatEnums::CONTROL_FID, utEncap);
318  }
319  rm->AddQueueCallback(SatEnums::CONTROL_FID, MakeCallback(&SatQueue::GetQueueStatistics, queue));
320 
321  // Add callbacks to LLC for future need. LLC creates encapsulators and
322  // decapsulators dynamically 'on-a-need-basis'.
323  llc->SetCtrlMsgCallback(MakeCallback(&SatNetDevice::SendControlMsg, dev));
324  llc->SetMacQueueEventCallback(macCb);
325 
326  // set serving GW MAC address to RM
327  mac->SetRoutingUpdateCallback(cbRouting);
328  mac->SetGatewayUpdateCallback(MakeCallback(&SatUtLlc::SetGwAddress, llc));
329  mac->SetGwAddress(gwAddr);
330 
331  // Attach the transmit callback to PHY
332  mac->SetTransmitCallback(MakeCallback(&SatPhy::SendPdu, phy));
333 
334  // Attach the PHY handover callback to SatMac
335  mac->SetHandoverCallback(MakeCallback(&SatUtPhy::PerformHandover, phy));
336 
337  // Attach the LLC receive callback to SatMac
338  mac->SetReceiveCallback(MakeCallback(&SatLlc::Receive, llc));
339 
340  llc->SetReceiveCallback(MakeCallback(&SatNetDevice::Receive, dev));
341 
342  Ptr<SatSuperframeConf> superFrameConf =
344  bool enableLogon = superFrameConf->IsLogonEnabled();
345  uint32_t logonChannelId = superFrameConf->GetLogonChannelIndex();
346 
347  // Add UT to NCC
348  if (enableLogon)
349  {
350  ncc->ReserveLogonChannel(logonChannelId);
351  }
352  else
353  {
354  ncc->AddUt(m_llsConf,
355  dev->GetAddress(),
356  satId,
357  beamId,
358  MakeCallback(&SatUtMac::SetRaChannel, mac));
359  }
360 
361  phy->Initialize();
362 
363  // Create UT scheduler for MAC and connect callbacks to LLC
364  Ptr<SatUtScheduler> utScheduler = CreateObject<SatUtScheduler>(m_llsConf);
365  utScheduler->SetTxOpportunityCallback(MakeCallback(&SatUtLlc::NotifyTxOpportunity, llc));
366  utScheduler->SetSchedContextCallback(MakeCallback(&SatLlc::GetSchedulingContexts, llc));
367  mac->SetAttribute("Scheduler", PointerValue(utScheduler));
368 
369  // Create a node info to all the protocol layers
370  Ptr<SatNodeInfo> nodeInfo = Create<SatNodeInfo>(SatEnums::NT_UT, n->GetId(), addr);
371  dev->SetNodeInfo(nodeInfo);
372  llc->SetNodeInfo(nodeInfo);
373  mac->SetNodeInfo(nodeInfo);
374  phy->SetNodeInfo(nodeInfo);
375 
376  rm->Initialize(m_llsConf, m_superframeSeq->GetDuration(0));
377 
379  {
380  Ptr<SatRandomAccessConf> randomAccessConf =
381  CreateObject<SatRandomAccessConf>(m_llsConf, m_superframeSeq);
382 
384  Ptr<SatRandomAccess> randomAccess =
385  CreateObject<SatRandomAccess>(randomAccessConf, m_raSettings.m_randomAccessModel);
386 
389  {
390  randomAccess->SetAreBuffersEmptyCallback(
391  MakeCallback(&SatLlc::ControlBuffersEmpty, llc));
392  }
393  else
394  {
395  randomAccess->SetAreBuffersEmptyCallback(MakeCallback(&SatLlc::BuffersEmpty, llc));
396  }
397 
399  mac->SetRandomAccess(randomAccess);
400  if (enableLogon)
401  {
402  mac->SetLogonChannel(logonChannelId);
403  mac->LogOff();
404  }
405  }
406  else if (enableLogon)
407  {
408  NS_FATAL_ERROR("Cannot simulate logon without a RA frame");
409  }
410 
411  Ptr<SatHandoverModule> handoverModule = n->GetObject<SatHandoverModule>();
412  if (handoverModule != nullptr)
413  {
414  handoverModule->SetHandoverRequestCallback(
416  mac->SetHandoverModule(handoverModule);
417  mac->SetBeamSchedulerCallback(MakeCallback(&SatNcc::GetBeamScheduler, ncc));
418  mac->SetUpdateGwAddressCallback(MakeCallback(&SatRequestManager::SetGwAddress, rm));
419  }
420 
421  Singleton<SatTopology>::Get()->AddUtLayersDvb(n, satId, beamId, 0, dev, llc, mac, phy);
422 
423  return dev;
424 }
425 
426 } // namespace ns3
static const uint32_t SIZE
Base class for fading models such as Markov-based fading or fading trace.
void SetHandoverRequestCallback(SatHandoverModule::HandoverRequestCallback cb)
Set the handover recommendation message sending callback.
virtual bool BuffersEmpty() const
Are buffers empty?
virtual void GetSchedulingContexts(std::vector< Ptr< SatSchedulingObject >> &output) const =0
Create and fill the scheduling objects based on LLC layer information.
virtual bool ControlBuffersEmpty() const
Are buffers empty?
virtual void Receive(Ptr< Packet > packet, Mac48Address source, Mac48Address dest)
Receive user data packet from lower layer.
Callback< uint32_t, Ptr< SatControlMessage > > ReserveCtrlMsgCallback
Callback to reserve an id and initially store the control message.
Callback< void, Address, Address > RoutingUpdateCallback
Callback to update routing and ARP tables after handover.
Callback< uint32_t, uint32_t > SendCtrlMsgCallback
Callback to send a control message and allocate a recv ID for it.
Callback< Ptr< SatControlMessage >, uint32_t > ReadCtrlMsgCallback
Callback to read control messages from container storing control messages.
Observes given mobilities and keeps track of certain wanted properties.
Time GetTimingAdvance(void)
Get timing advance.
Ptr< SatBeamScheduler > GetBeamScheduler(uint32_t satId, uint32_t beamId) const
SatNetDevice to be utilized in the UT and GW nodes.
virtual void Receive(Ptr< const Packet > packet)
bool SendControlMsg(Ptr< SatControlMessage > msg, const Address &dest)
Callback< void, uint32_t, uint32_t, Address, Address, double, bool > CnoCallback
Definition: satellite-phy.h:94
virtual void SendPdu(PacketContainer_t, uint32_t carrierId, Time duration, SatSignalParameters::txInfo_s txInfo)
Send Pdu to the PHY tx module (for initial transmissions from either UT or GW)
Callback< void, PacketContainer_t, Ptr< SatSignalParameters > > ReceiveCallback
Definition: satellite-phy.h:85
Callback< SatChannelPair::ChannelPair_t, uint32_t, uint32_t > ChannelPairGetterCallback
Callback for retrieving a pair of SatChannel associated to a beam.
Callback< void, SatQueue::QueueEvent_t, uint8_t > QueueEventCallback
Callback to indicate queue related event.
Callback< void, Ptr< Packet > > LogonCallback
logon msg sending callback
QueueStats_t GetQueueStatistics(bool reset)
GetQueueStatistics returns a struct of KPIs.
void AssignedDaResources(uint8_t rcIndex, uint32_t bytes)
Sat UT MAC informs that certain amount of resources have been received in TBTP.
void SendLogonMessage()
Send a logon message to the gateway.
void ReceiveQueueEvent(SatQueue::QueueEvent_t event, uint8_t rcIndex)
Receive a queue event.
void SetGwAddress(Mac48Address address)
Set the GW address needed for CR transmission.
void CnoUpdated(uint32_t satId, uint32_t beamId, Address sourceMac, Address gwId, double cno, bool isSatelliteMac)
Update C/N0 information from lower layer.
void SendHandoverRecommendation(uint32_t satId, uint32_t beamId)
Send a handover recommendation message to the gateway.
Callback< double, SatEnums::ChannelType_t, uint32_t, SatEnums::CarrierBandwidthType_t > CarrierBandwidthConverter_t
Callback for carrier bandwidths.
virtual Ptr< NetDevice > Install(Ptr< Node > n, uint32_t satId, uint32_t beamId, Ptr< SatChannel > fCh, Ptr< SatChannel > rCh, Ptr< SatNetDevice > gwNd, Ptr< SatNcc > ncc, Address satUserAddress, SatPhy::ChannelPairGetterCallback cbChannel, SatMac::RoutingUpdateCallback cbRouting)
static TypeId GetTypeId(void)
Derived from Object.
TypeId GetInstanceTypeId(void) const
Derived from Object.
SatUtHelperDvb()
Default constructor.
Creates needed objects for UT nodes like SatOrbiterNetDevice objects.
SatPhy::ErrorModel m_errorModel
SatPhy::InterferenceModel m_daInterferenceModel
RandomAccessSettings_s m_raSettings
The used random access model settings.
bool m_enableChannelEstimationError
Enable channel estimation error modeling at forward link receiver (= UT).
SatMac::ReadCtrlMsgCallback m_readCtrlCb
Ptr< SatLinkResults > m_linkResults
Ptr< SatLowerLayerServiceConf > m_llsConf
Configured lower layer service configuration.
SatTypedefs::CarrierBandwidthConverter_t m_carrierBandwidthConverter
ObjectFactory m_deviceFactory
bool m_crdsaOnlyForControl
Planned CRDSA usage:
SatMac::SendCtrlMsgCallback m_sendCtrlCb
Ptr< SatSuperframeSeq > m_superframeSeq
SatMac::ReserveCtrlMsgCallback m_reserveCtrlCb
void SetGwAddress(Mac48Address address)
Set the GW address.
virtual Ptr< Packet > NotifyTxOpportunity(uint32_t bytes, Mac48Address utAddr, uint8_t rcIndex, uint32_t &bytesLeft, uint32_t &nextMinTxO)
Called from lower layer (MAC) to inform a Tx opportunity of certain amount of bytes.
virtual void ReceiveQueueEventEssa(SatQueue::QueueEvent_t event, uint8_t rcIndex)
Receive a queue event:
virtual void Receive(SatPhy::PacketContainer_t packets, Ptr< SatSignalParameters >)
Receive packet from lower layer.
void SendLogon(Ptr< Packet > packet)
Receive a logon message to transmit /param packet The logon packet to send.
virtual void ReceiveQueueEvent(SatQueue::QueueEvent_t event, uint8_t rcIndex)
Receive a queue event:
Callback< Time > TimingAdvanceCallback
void SetRaChannel(uint32_t raChannel)
Set RA channel assigned for this UT.
bool ControlMsgTransmissionPossible() const
Method to check whether a transmission of a control msg is somewhat possible.
bool LogonMsgTransmissionPossible() const
Method to check whether a transmission of a logon msg is somewhat possible.
bool IsTxPossible(void) const
Inform whether or not the underlying Tx channel is properly configured for transmission.
void UpdateSliceSubscription(uint8_t slice)
Updates the slices subscription list.
void PerformHandover(uint32_t satId, uint32_t beamId)
Change underlying SatChannel to send and receive data from a new satellite and beam.
constexpr uint8_t SUPERFRAME_SEQUENCE
Used superframe sequence in the RTN link.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.
Creation parameters for base PHY object.
Ptr< SatChannel > m_rxCh
Ptr< NetDevice > m_device
Ptr< SatChannel > m_txCh
SatEnums::SatLoraNodeType_t m_standard
Define RandomAccessSettings as a struct.
SatEnums::RandomAccessModel_t m_randomAccessModel
SatPhyRxCarrierConf::RandomAccessCollisionModel m_raCollisionModel
SatPhyRxCarrierConf::InterferenceEliminationModel m_raInterferenceEliminationModel
SatPhyRxCarrierConf::InterferenceModel m_raInterferenceModel