LENA RLC Acknowledged Mode (AM)

669 views
Skip to first unread message

Allen

unread,
May 28, 2012, 4:57:54 PM5/28/12
to ns-3-...@googlegroups.com
Hi there,

I'm experimenting with different RLC modes, and while UM (or unacknowledged mode) works fine, switching to AM mode causes an assert to get thrown. I choose the RLC mode by using attributes:

Ptr<LteHelper> lteHelper = CreateObjectWithAttributes<LteHelper> ("EpsBearerToRlcMapping", EnumValue(rlcmode));

When rlcmode == 1 or 2, then UM mode is used, and everything works fine. If rlcmode == 3, then AM mode is used, and an assert is thrown. Has anyone used AM mode successfully in the LENA module? Some relevant documentation:
Thanks for your time!

Allen

Shoban

unread,
May 28, 2012, 5:12:28 PM5/28/12
to ns-3-users
Hi Allen,

I have used the RLC-AM in the past without any issue.
Could you please let me know what type of assert or if there any
assert message you get when you try AM mode?

Regards,
Shoban.

On May 28, 9:57 pm, Allen <dcsom...@gmail.com> wrote:
> Hi there,
>
> I'm experimenting with different RLC modes, and while UM (or unacknowledged
> mode) works fine, switching to AM mode causes an assert to get thrown. I
> choose the RLC mode by using attributes:
>
> Ptr<LteHelper> lteHelper = CreateObjectWithAttributes<LteHelper>
> ("EpsBearerToRlcMapping", EnumValue(rlcmode));
>
> When rlcmode == 1 or 2, then UM mode is used, and everything works fine. If
> rlcmode == 3, then AM mode is used, and an assert is thrown. Has anyone
> used AM mode successfully in the LENA module? Some relevant documentation:
>
>    -
>    http://www.nsnam.org/doxygen/classns3_1_1_lte_helper.html#ac146ee7a17...
>    -http://lena.cttc.es/manual/lte-design.html#overview

Allen

unread,
May 28, 2012, 5:26:39 PM5/28/12
to ns-3-...@googlegroups.com
Thanks for the quick reply! Here is the output I get:

rlc type: ns3::LteRlcAm
uE is 1000 meters from origin
assert failed. cond="m_buffer.GetSize () >= start + length", file=../src/network/model/packet.cc, line=230
terminate called without an active exception
Command ['(omitted)/ns-3-dev/build/scratch/simulate-epc-h264-socket', '--dist=1000', '--rlcmode=3'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run <program> --command-template="gdb --args %s <args>").

And a back trace:

#0  0xb7fdd424 in __kernel_vsyscall ()
#1  0xb5ed11ef in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2  0xb5ed4835 in __GI_abort () at abort.c:91
#3  0xb615b13d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#4  0xb6158ed3 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#5  0xb6158f0f in std::terminate() () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#6  0xb65e65af in ns3::Packet::CreateFragment (this=0x81169a8, start=0, length=1541) at ../src/network/model/packet.cc:230
#7  0xb7deb94f in ns3::LteRlcAm::ReassembleAndDeliver (this=0x80c2be0, packet=...) at ../src/lte/model/lte-rlc-am.cc:1042
#8  0xb7de848c in ns3::LteRlcAm::DoReceivePdu (this=0x80c2be0, p=...) at ../src/lte/model/lte-rlc-am.cc:731
#9  0xb7dc35c2 in ns3::LteRlcSpecificLteMacSapUser::ReceivePdu (this=0x80c2d18, p=...) at ../src/lte/model/lte-rlc.cc:78
#10 0xb7e73f3e in ns3::LteUeMac::DoReceivePhyPdu (this=0x80be4f0, p=...) at ../src/lte/model/lte-ue-mac.cc:355
#11 0xb7e71ea2 in ns3::UeMemberLteUePhySapUser::ReceivePhyPdu (this=0x80be590, p=...) at ../src/lte/model/lte-ue-mac.cc:153
#12 0xb7da2320 in ns3::LteUePhy::PhyPduReceived (this=0x80be0a0, p=...) at ../src/lte/model/lte-ue-phy.cc:283
#13 0xb7e1f2f9 in ns3::MemPtrCallbackImpl<ns3::Ptr<ns3::LteUePhy>, void (ns3::LteUePhy::*)(ns3::Ptr<ns3::Packet>), void, ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::operator() (this=0x80bba68, a1=...) at ./ns3/callback.h:223
#14 0xb7d84194 in ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::operator() (this=0x80bdc64, a1=...) at ./ns3/callback.h:410
#15 0xb7d7ff26 in ns3::LteSpectrumPhy::EndRx (this=0x80bdbe8) at ../src/lte/model/lte-spectrum-phy.cc:529
#16 0xb7d80a05 in ns3::EventMemberImpl0::Notify (this=0x80f55b0) at ./ns3/make-event.h:94
#17 0xb64985ee in ns3::EventImpl::Invoke (this=0x80f55b0) at ../src/core/model/event-impl.cc:39
#18 0xb64eb370 in ns3::RealtimeSimulatorImpl::ProcessOneEvent (this=0x80b4ec8) at ../src/core/model/realtime-simulator-impl.cc:380
#19 0xb64ebb1a in ns3::RealtimeSimulatorImpl::Run (this=0x80b4ec8) at ../src/core/model/realtime-simulator-impl.cc:456
#20 0xb6498fdb in ns3::Simulator::Run () at ../src/core/model/simulator.cc:156
#21 0x0805777d in main (argc=3, argv=0xbfffe8e4) at ../scratch/simulate-epc-h264-socket.cc:210

Thanks again!

Shoban

unread,
May 28, 2012, 8:10:58 PM5/28/12
to ns-3-...@googlegroups.com
Are you using EpcHelper?


--
You received this message because you are subscribed to the Google Groups "ns-3-users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/ns-3-users/-/XrxJWjXdI2UJ.
To post to this group, send email to ns-3-...@googlegroups.com.
To unsubscribe from this group, send email to ns-3-users+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/ns-3-users?hl=en.

Allen

unread,
May 29, 2012, 12:09:26 AM5/29/12
to ns-3-...@googlegroups.com
Yes I am. I use it just as in the lena examples. Here are all the places I reference the epc helper:

Ptr<EpcHelper> epcHelper = CreateObject<EpcHelper> ();
lteHelper->SetEpcHelper (epcHelper);
//...
Ptr<Node> pgw = epcHelper->GetPgwNode ();
//...
ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueLteDevC));
//...
ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
To unsubscribe from this group, send email to ns-3-users+unsubscribe@googlegroups.com.

For more options, visit this group at http://groups.google.com/group/ns-3-users?hl=en.
To unsubscribe from this group, send email to ns-3-users+unsubscribe@googlegroups.com.

For more options, visit this group at http://groups.google.com/group/ns-3-users?hl=en.
To unsubscribe from this group, send email to ns-3-users+unsubscribe@googlegroups.com.

Shoban Raj

unread,
May 29, 2012, 6:10:22 AM5/29/12
to ns-3-...@googlegroups.com
Hi Allen,

Try this,

Create the LteHelper object without attribute
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();

And after the line,
lteHelper->SetEpcHelper (epcHelper);

use the following command to change the RLC mode,
lteHelper->SetAttribute("EpsBearerToRlcMapping", EnumValue (LteHelper::RLC_UM_ALWAYS));

make sure the order of the code as above.
And please let me know if it works for you?

Regards,
Shoban.

To view this discussion on the web visit https://groups.google.com/d/msg/ns-3-users/-/V3g-b_jhszkJ.

To post to this group, send email to ns-3-...@googlegroups.com.
To unsubscribe from this group, send email to ns-3-users+...@googlegroups.com.

Shoban

unread,
May 29, 2012, 6:13:43 AM5/29/12
to ns-3-users
Sorry the third line should be as follow,
lteHelper->SetAttribute("EpsBearerToRlcMapping", EnumValue
(LteHelper::RLC_AM_ALWAYS));

RLC_AM_ALWAYS not RLC_UM_ALWAYS
> >> On 28 May 2012, at 10:26 PM, Allen <dcsom...@gmail.com> wrote:
>
> >> Thanks for the quick reply! Here is the output I get:
>
> >> rlc type: ns3::LteRlcAm
> >> uE is 1000 meters from origin
> >> assert failed. cond="m_buffer.GetSize () >= start + length",
> >> file=../src/network/model/**packet.cc, line=230
> >> terminate called without an active exception
> >> Command ['(omitted)/ns-3-dev/build/**scratch/simulate-epc-h264-**socket',
> >> '--dist=1000', '--rlcmode=3'] terminated with signal SIGIOT. Run it under a
> >> debugger to get more information (./waf --run <program>
> >> --command-template="gdb --args %s <args>").
>
> >> And a back trace:
>
> >> #0  0xb7fdd424 in __kernel_vsyscall ()
> >> #1  0xb5ed11ef in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/**
> >> linux/raise.c:64
> >> #2  0xb5ed4835 in __GI_abort () at abort.c:91
> >> #3  0xb615b13d in __gnu_cxx::__verbose_**terminate_handler() () from
> >> /usr/lib/i386-linux-gnu/**libstdc++.so.6
> >> #4  0xb6158ed3 in ?? () from /usr/lib/i386-linux-gnu/**libstdc++.so.6
> >> #5  0xb6158f0f in std::terminate() () from /usr/lib/i386-linux-gnu/**
> >> libstdc++.so.6
> >> #6  0xb65e65af in ns3::Packet::CreateFragment (this=0x81169a8, start=0,
> >> length=1541) at ../src/network/model/packet.**cc:230
> >> #7  0xb7deb94f in ns3::LteRlcAm::**ReassembleAndDeliver (this=0x80c2be0,
> >> packet=...) at ../src/lte/model/lte-rlc-am.**cc:1042
> >> #8  0xb7de848c in ns3::LteRlcAm::DoReceivePdu (this=0x80c2be0, p=...) at
> >> ../src/lte/model/lte-rlc-am.**cc:731
> >> #9  0xb7dc35c2 in ns3::**LteRlcSpecificLteMacSapUser::**ReceivePdu
> >> (this=0x80c2d18, p=...) at ../src/lte/model/lte-rlc.cc:78
> >> #10 0xb7e73f3e in ns3::LteUeMac::DoReceivePhyPdu (this=0x80be4f0, p=...)
> >> at ../src/lte/model/lte-ue-mac.**cc:355
> >> #11 0xb7e71ea2 in ns3::UeMemberLteUePhySapUser::**ReceivePhyPdu
> >> (this=0x80be590, p=...) at ../src/lte/model/lte-ue-mac.**cc:153
> >> #12 0xb7da2320 in ns3::LteUePhy::PhyPduReceived (this=0x80be0a0, p=...)
> >> at ../src/lte/model/lte-ue-phy.**cc:283
> >> #13 0xb7e1f2f9 in ns3::MemPtrCallbackImpl<ns3::**Ptr<ns3::LteUePhy>,
> >> void (ns3::LteUePhy::*)(ns3::Ptr<**ns3::Packet>), void,
> >> ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty,
> >> ns3::empty, ns3::empty, ns3::empty, ns3::empty>::operator()
> >> (this=0x80bba68, a1=...) at ./ns3/callback.h:223
> >> #14 0xb7d84194 in ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::empty,
> >> ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty,
> >> ns3::empty>::operator() (this=0x80bdc64, a1=...) at ./ns3/callback.h:410
> >> #15 0xb7d7ff26 in ns3::LteSpectrumPhy::EndRx (this=0x80bdbe8) at
> >> ../src/lte/model/lte-spectrum-**phy.cc:529
> >> #16 0xb7d80a05 in ns3::EventMemberImpl0::Notify (this=0x80f55b0) at
> >> ./ns3/make-event.h:94
> >> #17 0xb64985ee in ns3::EventImpl::Invoke (this=0x80f55b0) at
> >> ../src/core/model/event-impl.**cc:39
> >> #18 0xb64eb370 in ns3::RealtimeSimulatorImpl::**ProcessOneEvent
> >> (this=0x80b4ec8) at ../src/core/model/realtime-**simulator-impl.cc:380
> >> #19 0xb64ebb1a in ns3::RealtimeSimulatorImpl::**Run (this=0x80b4ec8) at
> >> ../src/core/model/realtime-**simulator-impl.cc:456
> >> #20 0xb6498fdb in ns3::Simulator::Run () at ../src/core/model/simulator.*
> >> *cc:156
> >> #21 0x0805777d in main (argc=3, argv=0xbfffe8e4) at
> >> ../scratch/simulate-epc-h264-**socket.cc:210
>
> >> Thanks again!
>
> >> On Monday, May 28, 2012 2:12:28 PM UTC-7, Shoban wrote:
>
> >>> Hi Allen,
>
> >>> I have used the RLC-AM in the past without any issue.
> >>> Could you please let me know what type of assert or if there any
> >>> assert message you get when you try AM mode?
>
> >>> Regards,
> >>> Shoban.
>
> >>> On May 28, 9:57 pm, Allen <dcsom...@gmail.com> wrote:
> >>> > Hi there,
>
> >>> > I'm experimenting with different RLC modes, and while UM (or
> >>> unacknowledged
> >>> > mode) works fine, switching to AM mode causes an assert to get thrown.
> >>> I
> >>> > choose the RLC mode by using attributes:
>
> >>> > Ptr<LteHelper> lteHelper = CreateObjectWithAttributes<**LteHelper>
> >>> > ("EpsBearerToRlcMapping", EnumValue(rlcmode));
>
> >>> > When rlcmode == 1 or 2, then UM mode is used, and everything works
> >>> fine. If
> >>> > rlcmode == 3, then AM mode is used, and an assert is thrown. Has
> >>> anyone
> >>> > used AM mode successfully in the LENA module? Some relevant
> >>> documentation:
>
> >>> >    -
> >>> >    http://www.nsnam.org/doxygen/**classns3_1_1_lte_helper.html#**
> >>> ac146ee7a17.<http://www.nsnam.org/doxygen/classns3_1_1_lte_helper.html#ac146ee7a17.>..
>
> >>> >    -http://lena.cttc.es/manual/**lte-design.html#overview<http://lena.cttc.es/manual/lte-design.html#overview>
>
> >>> > Thanks for your time!
>
> >>> > Allen
>
> >>  --
> >> You received this message because you are subscribed to the Google Groups
> >> "ns-3-users" group.
> >> To view this discussion on the web visithttps://groups.google.com/d/**
> >> msg/ns-3-users/-/XrxJWjXdI2UJ<https://groups.google.com/d/msg/ns-3-users/-/XrxJWjXdI2UJ>
> >> .
> >> To post to this group, send email to ns-3-...@googlegroups.com.
> >> To unsubscribe from this group, send email to ns-3-users+unsubscribe@**
> >> googlegroups.com <ns-3-users+...@googlegroups.com>.
> >> For more options, visit this group athttp://groups.google.com/**
> >> group/ns-3-users?hl=en <http://groups.google.com/group/ns-3-users?hl=en>.
>
> > On Monday, May 28, 2012 5:10:58 PM UTC-7, Shoban wrote:
>
> >> Are you using EpcHelper?
>
> >> On 28 May 2012, at 10:26 PM, Allen <dcsom...@gmail.com> wrote:
>
> >> Thanks for the quick reply! Here is the output I get:
>
> >> rlc type: ns3::LteRlcAm
> >> uE is 1000 meters from origin
> >> assert failed. cond="m_buffer.GetSize () >= start + length",
> >> file=../src/network/model/**packet.cc, line=230
> >> terminate called without an active exception
> >> Command ['(omitted)/ns-3-dev/build/**scratch/simulate-epc-h264-**socket',
> >> '--dist=1000', '--rlcmode=3'] terminated with signal SIGIOT. Run it under a
> >> debugger to get more information (./waf --run <program>
> >> --command-template="gdb --args %s <args>").
>
> >> And a back trace:
>
> >> #0  0xb7fdd424 in __kernel_vsyscall ()
> >> #1  0xb5ed11ef in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/**
> >> linux/raise.c:64
> >> #2  0xb5ed4835 in __GI_abort () at abort.c:91
> >> #3  0xb615b13d in __gnu_cxx::__verbose_**terminate_handler() () from
> >> /usr/lib/i386-linux-gnu/**libstdc++.so.6
> >> #4  0xb6158ed3 in ?? () from /usr/lib/i386-linux-gnu/**libstdc++.so.6
> >> #5  0xb6158f0f in std::terminate() () from /usr/lib/i386-linux-gnu/**
> >> libstdc++.so.6
> >> #6  0xb65e65af in ns3::Packet::CreateFragment (this=0x81169a8, start=0,
> >> length=1541) at ../src/network/model/packet.**cc:230
> >> #7  0xb7deb94f in ns3::LteRlcAm::**ReassembleAndDeliver (this=0x80c2be0,
> >> packet=...) at ../src/lte/model/lte-rlc-am.**cc:1042
> >> #8  0xb7de848c in ns3::LteRlcAm::DoReceivePdu (this=0x80c2be0, p=...) at
> >> ../src/lte/model/lte-rlc-am.**cc:731
> >> #9  0xb7dc35c2 in ns3::**LteRlcSpecificLteMacSapUser::**ReceivePdu
> >> (this=0x80c2d18, p=...) at ../src/lte/model/lte-rlc.cc:78
> >> #10 0xb7e73f3e in ns3::LteUeMac::DoReceivePhyPdu (this=0x80be4f0, p=...)
> >> at ../src/lte/model/lte-ue-mac.**cc:355
> >> #11 0xb7e71ea2 in ns3::UeMemberLteUePhySapUser::**ReceivePhyPdu
> >> (this=0x80be590, p=...) at ../src/lte/model/lte-ue-mac.**cc:153
> >> #12 0xb7da2320 in ns3::LteUePhy::PhyPduReceived (this=0x80be0a0, p=...)
> >> at ../src/lte/model/lte-ue-phy.**cc:283
> >> #13 0xb7e1f2f9 in ns3::MemPtrCallbackImpl<ns3::**Ptr<ns3::LteUePhy>,
> >> void (ns3::LteUePhy::*)(ns3::Ptr<**ns3::Packet>), void,
> >> ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty,
> >> ns3::empty, ns3::empty, ns3::empty, ns3::empty>::operator()
> >> (this=0x80bba68, a1=...) at ./ns3/callback.h:223
> >> #14 0xb7d84194 in ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::empty,
> >> ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty,
> >> ns3::empty>::operator() (this=0x80bdc64, a1=...) at ./ns3/callback.h:410
> >> #15 0xb7d7ff26 in ns3::LteSpectrumPhy::EndRx (this=0x80bdbe8) at
> >> ../src/lte/model/lte-spectrum-**phy.cc:529
> >> #16 0xb7d80a05 in ns3::EventMemberImpl0::Notify (this=0x80f55b0) at
> >> ./ns3/make-event.h:94
> >> #17 0xb64985ee in ns3::EventImpl::Invoke (this=0x80f55b0) at
> >> ../src/core/model/event-impl.**cc:39
> >> #18 0xb64eb370 in ns3::RealtimeSimulatorImpl::**ProcessOneEvent
> >> (this=0x80b4ec8) at ../src/core/model/realtime-**simulator-impl.cc:380
> >> #19 0xb64ebb1a in ns3::RealtimeSimulatorImpl::**Run (this=0x80b4ec8) at
> >> ../src/core/model/realtime-**simulator-impl.cc:456
> >> #20 0xb6498fdb in ns3::Simulator::Run () at ../src/core/model/simulator.*
> >> *cc:156
> >> #21 0x0805777d in main (argc=3, argv=0xbfffe8e4) at
> >> ../scratch/simulate-epc-h264-**socket.cc:210
>
> >> Thanks again!
>
> >> On
>
> ...
>
> read more »

Allen

unread,
May 30, 2012, 3:47:57 AM5/30/12
to ns-3-...@googlegroups.com
Hey Shoban, thanks again for your help. Unfortunately this change fails in the exact same way. My code is as follows:


  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
  Ptr<EpcHelper> epcHelper = CreateObject<EpcHelper> ();
  lteHelper->SetEpcHelper (epcHelper);
  lteHelper->SetAttribute("EpsBearerToRlcMapping", EnumValue (LteHelper::RLC_AM_ALWAYS));
  lteHelper->SetSchedulerType("ns3::RrFfMacScheduler");
> >> googlegroups.com <ns-3-users+unsubscribe@googlegroups.com>.

Allen

unread,
May 30, 2012, 7:48:00 PM5/30/12
to ns-3-...@googlegroups.com
Shoban, could you attach a code sample of when you got this to work, or point me to example code that does this? I can try to work backwards from that if all else fails.

Shoban Raj

unread,
May 31, 2012, 7:36:31 AM5/31/12
to ns-3-...@googlegroups.com
Hi Allen,

Here I have attached a code with a simple test scenario, you can find it when you go through the code. But, it is very simple case, it may not fail due to the simplicity.
If you want you can send me your code, so I can check with my simulator whether it works or not. And if fails I may try to find the cause and let you know.

Regards,
Shoban.


To view this discussion on the web visit https://groups.google.com/d/msg/ns-3-users/-/cWyJQDd0jMoJ.

To post to this group, send email to ns-3-...@googlegroups.com.
To unsubscribe from this group, send email to ns-3-users+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/ns-3-users?hl=en.

TestSim.cc

Allen

unread,
May 31, 2012, 5:29:34 PM5/31/12
to ns-3-...@googlegroups.com
Just so this thread's discussion is tied up: this issue was fixed with recent changes to the LENA module. Running hg pull then hg update fixed it.

Thanks for the help Shoban!
To unsubscribe from this group, send email to ns-3-users+unsubscribe@googlegroups.com.
To unsubscribe from this group, send email to ns-3-users+unsubscribe@googlegroups.com.
To unsubscribe from this group, send email to ns-3-users+unsubscribe@googlegroups.com.

Ravi Shanker

unread,
May 27, 2014, 12:51:57 PM5/27/14
to ns-3-...@googlegroups.com
Hi Sobhan, 

There are two ways to do this

   Ptr<LteEnbRrc> rrc = CreateObject<LteEnbRrc> ();
   rrc->SetAttribute ("EpsBearerToRlcMapping", EnumValue (LteEnbRrc::RLC_UM_ALWAYS));


Config::SetDefault ("ns3::LteEnbRrc::EpsBearerToRlcMapping",EnumValue(LteHelper::RLC_UM_ALWAYS));

Hope this helps
Reply all
Reply to author
Forward
0 new messages