Packet loss problem between UE and eNodeB in LTE

150 views
Skip to first unread message

Yu-Xiang Huang

unread,
Dec 7, 2017, 1:19:13 PM12/7/17
to ns-3-users
Hi,

I have a simulation that intends to measure the QoS between the UEs and the associated eNodeB in the
LTE network. However, I found the packet loss rate is much higher (nearly 50%) than I expected, even if
the simulation and the amount of background traffic are small. Please help me to identify the problem
of the high packet loss rate in the simulation. The simulation environment is as follows:

Total UEs: 240
Total eNodeBs: 20
==> 20 UEs are associated with each eNodeB

The traffic from each UE includes the following three applications (by the on-off application):
The on-time is 1, and the off-time is 0 for all apps.
App A(UDP): DataRate: 20 kb/s
                        PacketSize: 75 bytes
                      MaxBytes:0
App B(TCP): DataRate: 20 kb/s
                      PacketSize: 75 bytes
                      MaxBytes:0
App C(UDP): DataRate: 75 kb/s
                      PacketSize: 100 bytes
                      MaxBytes:0

In the above, I want to measure the packet loss rate from App A and App B, and the traffic from App C is the background traffic.
All UEs run App A and App B, but only three out of 20 UEs for each eNodeB run App C. Because the background traffic is
relatively smaller than the traffic from App A and App B and the total traffic rate is not high, the packet loss rate is not supposed
to be as high as nearly 50%. This looks weird.

Note:
1. set the EpcTft :EpsBearer is NGBR_VIDEO_TCP_DEFAULT
2. Sample distribution: fading_trace_EPA_3kmph.fad
3. EnbDeviceAttribute: DlEarfcn:100
                                     UlEarfcn:18100

Thanks.

sahar abdi

unread,
Dec 8, 2017, 1:47:15 AM12/8/17
to ns-3-users
hello Huang

i have question about on-off app

in the my code , for on-off app on tcp:

for (uint32_t b = 0; b < numBearersPerUe; ++b)
745  {
746  ++dlPort;
747  ++ulPort;
748 
751 
775  if (epcDl)
776  {
777  NS_LOG_LOGIC ("installing TCP DL app for UE " << u);
778  BulkSendHelper dlClientHelper ("ns3::TcpSocketFactory",
779  InetSocketAddress (ueIpIfaces.GetAddress (u), dlPort));
780  dlClientHelper.SetAttribute ("MaxBytes", UintegerValue (0));
781  clientApps.Add (dlClientHelper.Install (remoteHost));
782  PacketSinkHelper dlPacketSinkHelper ("ns3::TcpSocketFactory",
783  InetSocketAddress (Ipv4Address::GetAny (), dlPort));
784  serverApps.Add (dlPacketSinkHelper.Install (ue));
785  }
786  if (epcUl)
787  {
788  NS_LOG_LOGIC ("installing TCP UL app for UE " << u);
789  BulkSendHelper ulClientHelper ("ns3::TcpSocketFactory",
790  InetSocketAddress (remoteHostAddr, ulPort));
791  ulClientHelper.SetAttribute ("MaxBytes", UintegerValue (0));
792  clientApps.Add (ulClientHelper.Install (ue));
793  PacketSinkHelper ulPacketSinkHelper ("ns3::TcpSocketFactory",
794  InetSocketAddress (Ipv4Address::GetAny (), ulPort));
795  serverApps.Add (ulPacketSinkHelper.Install (remoteHost));
796  }

820  Time startTime = Seconds (startTimeSeconds->GetValue ());
821  serverApps.Start (startTime);
822  clientApps.Start (startTime);


How did you do this?






در پنجشنبه 7 دسامبر 2017، ساعت 21:49:13 (UTC+3:30)، Yu-Xiang Huang نوشته:

Yu-Xiang Huang

unread,
Dec 8, 2017, 10:02:37 AM12/8/17
to ns-3-users
Hello abdi

this is my code for on-off app(include TCP and UDP):
"""
//*
//server app and install,dlport = 80
PacketSinkHelper dlPacketSinkHelper ("ns3::TcpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
PacketSinkHelper dlPacketSinkHelper_2 ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
  
serverApps.Add(dlPacketSinkHelper.Install (remoteHost));
serverApps.Add(dlPacketSinkHelper_2.Install (otherNode));


//*
// traffic A, mechost is an fake IP, just a target to send packet
OnOffHelper UEappToSendtoMEC ("ns3::UdpSocketFactory", Address ());
UEappToSendtoMEC.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
UEappToSendtoMEC.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
AddressValue mecAddress (InetSocketAddress (Ipv4Address(mechost), dlPort));
UEappToSendtoMEC.SetAttribute ("Remote", mecAddress);
UEappToSendtoMEC.SetAttribute ("DataRate", DataRateValue (DataRate("20kb/s")));
UEappToSendtoMEC.SetAttribute ("PacketSize", UintegerValue (75));
UEappToSendtoMEC.SetAttribute ("MaxBytes", UintegerValue (0));

//*
// traffic B
OnOffHelper UEappToSendtoCentral ("ns3::TcpSocketFactory", Address ());
UEappToSendtoCentral.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
UEappToSendtoCentral.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
AddressValue remoteAddress (InetSocketAddress (remoteHostAddr, CentralPort));
UEappToSendtoCentral.SetAttribute ("Remote", remoteAddress);
UEappToSendtoCentral.SetAttribute ("DataRate", DataRateValue (DataRate("20kb/s")));
UEappToSendtoCentral.SetAttribute ("PacketSize", UintegerValue (75));
UEappToSendtoCentral.SetAttribute ("MaxBytes", UintegerValue (0));


//*
//traffic C
OnOffHelper UEappBkTraffic ("ns3::UdpSocketFactory", Address ());
UEappBkTraffic.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
UEappBkTraffic.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
AddressValue otherForBkAddress (InetSocketAddress (otherAddr, dlPort));
UEappBkTraffic.SetAttribute ("Remote", otherForBkAddress);
UEappBkTraffic.SetAttribute ("DataRate", DataRateValue (DataRate("70kb/s")));
UEappBkTraffic.SetAttribute ("PacketSize", UintegerValue (100));
UEappBkTraffic.SetAttribute ("MaxBytes", UintegerValue (0));

//*
//Traffic A and B install (All UE)
for(uint32_t i=0; i<GameUeNum; i++){
  clientApps.Add(UEappToSendtoMEC.Install (ueNodes.Get(i)));
  clientApps.Add(UEappToSendtoCentral.Install (ueNodes.Get(i)));
}


//*
//Traffic C install
for(uint32_t i =0 ; i<UeBackGroundList.size();i++){
  uint16_t UeIndex = UeBackGroundList[i];
  Ptr<Node> TempNode = ueNodes.Get(UeIndex);
  clientApps.Add (UEappBkTraffic.Install (TempNode));
 }

//*
//App time setting
serverApps.Start (Seconds (0.1));
clientApps.Start (Seconds (0.5));

clientApps.Stop (Seconds (simTime-1));
serverApps.Stop (Seconds (simTime-0.5));

"""

Maybe problem is I don't process for "BearersPerUe" or ?

Thank you!


sahar abdi於 2017年12月8日星期五 UTC+8下午2時47分15秒寫道:
Reply all
Reply to author
Forward
0 new messages