[ndnSIM] Implementing Interest Limits in ndnSIM2.0

Daniel Posch poschdaniel2 at gmail.com
Tue Feb 17 01:05:39 PST 2015


Dear Alex,

thanks for your reply. I actually use only a single strategy and I was 
trying to achieve what you suggested.
I have found a possibility to get access to the link capacity property 
of a nfd::Face, if it is actually a ns3::ndn::NetDeviceFace.

It is kind of a hack, however, it works:

uint64_t getPhysicalBitrate(shared_ptr< Face > face)
{
   if(ns3::ndn::NetDeviceFace *netf = 
dynamic_cast<ns3::ndn::NetDeviceFace*>(&(*face)))
   {
     //-256 because 0-255 is reserved by ndn local/app faces;
     ns3::Ptr<ns3::PointToPointNetDevice> nd1 = 
netf->GetNetDevice()->GetNode ()->GetDevice(netf->getId () - 
256)->GetObject<ns3::PointToPointNetDevice>();
     ns3::DataRateValue dv;
     nd1->GetAttribute("DataRate", dv);
     ns3::DataRate d = dv.Get();
     return d.GetBitRate();
   }
   else
   {
     return ULONG_MAX;
   }
}

Best regards,
Daniel

On 02/16/2015 09:09 PM, Alex Afanasyev wrote:
> Hi Daniel,
>
> Link capacity is not really a property of nfd::Face.  It can be property of ndn::NetDeviceFace, but even with it it really depends on which specific underlying NetDevice is used.
>
> In 1.0, this worked only for point-to-point links and the capacity was obtained during the construction stage in StackHelper and then it was used to initialize Limits object aggregated on the face by the strategy.  In 2.0, we still can obtain the capacity during the construction, however there is no longer an assumption that there is only one strategy for NDN node (which was true in 1.0).  The question (and the reason it is currently not implemented) where and how to store Limits object on the face.
>
> If you're ok with just one strategy per node, you can make a hack and store map of Face->Limits objects on "/" measurement entry of FIB.  May be you can come up with a better place..
>
> --
> Alex
>
>
>> On Feb 16, 2015, at 5:30 AM, Daniel Posch <poschdaniel2 at gmail.com> wrote:
>>
>> Dear all,
>>
>> I am trying to re-implement a feature called "Interest Limits", which was available in ndnSIM1.0.
>> Its basically a Token Bucket Filter that can be installed on Faces to limited the rate of outgoing Interests.
>>
>> However, I can't find a way to retrieve the link capacities of a nfd::Face. Am I correct that this information is not provided by the class nfd::Face and therefore an implementation of "Interest Limits" is not possible within ndnSIM2.0?
>>
>> Best regards,
>> Daniel
>




More information about the ndnSIM mailing list