[ndnSIM] A question about printing out PIT contents

Amin Karami amin at ac.upc.edu
Sun Nov 17 14:16:46 PST 2013


Hi Alex,
What is the different between implementation of these two outputs: 
'GetSRtt' (Get current estimate for smoothed RTT value) and 'GetRttVar' 
(Get current estimate for the RTT variation)? For those PIT entries 
which are reached to their timeout, what is the output? infinity?

I also faced with an error in printing "metric->GetRttVar". I changed it 
to string variable to be printable in std::cout. But gives me error in 
the type of "metric->GetRttVar" and cannot change it to string value to 
be printable. What it is the solution?


/Amin


On 11/17/2013 09:05 ب.ظ, Alex Afanasyev wrote:
> Hi Amin,
>
> Are you trying to print out PIT of FIB contents?  If PIT, then you first need to decide what kind of face information you want to print out.  There are three different things that you can access:
>
> 1. Incoming faces
> 2. Outgoing faces
> 3. Faces that are associated with the FIB entry
>
> Your code looks like you want to print out faces that are associated FIB entry.  For this, you need to do a small modification:  add GetFibEntry() call on the PIT entry:
>
>     for (FaceMetricContainer::type::index<i_nth>::type::iterator metric = entry->GetFibEntry()->m_faces.get<i_nth> ().begin();
>          metric != entry->GetFibEntry()->m_faces.get<i_nth> ().end(); metric++)
>       {
>           os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t";
>       }
>
> ---
> Alex
>
> On Nov 17, 2013, at 7:52 AM, Amin Karami <amin at ac.upc.edu> wrote:
>
>> Hi Alex,
>> I wrote a function as follows based on your guidance to print out PIT contents:
>> #include "ns3/core-module.h"
>> #include "ns3/network-module.h"
>> #include "ns3/point-to-point-module.h"
>> #include "ns3/ndnSIM-module.h"
>> #include "ns3/ndn-fib-entry.h"
>> #include "ns3/ndn-fib.h"
>>
>> using namespace ns3;
>> using namespace ndn;
>> using namespace fib;
>>
>> void PeriodicStatsPrinter (Ptr<Node> node, Time next)
>> {
>>
>> Ptr<ndn::Pit> pit = node->GetObject<ndn::Pit> ();
>> for (Ptr<ndn::pit::Entry> entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry))
>>   {
>>     std::cout << "=========" << std::endl;
>>     std::cout << entry->GetPrefix () << std::endl;
>>
>>     for (FaceMetricContainer::type::index<i_nth>::type::iterator metric = entry->m_faces.get<i_nth> ().begin();
>>          metric != entry->m_faces.get<i_nth> ().end(); metric++)
>>       {
>>           os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t";
>>       }
>>
>>     // Print Prefix name, In Interface, Out Interface, Nonces
>>     //std::cout << *entry << std::endl;
>>   }
>>   Simulator::Schedule (next, PeriodicStatsPrinter, node, next);
>> }
>>
>> When I ran the scenario, I faced with an error:
>> ../scratch/PIT/PITInfo.cc: In function ‘void PeriodicStatsPrinter(ns3::Ptr<ns3::Node>, ns3::Time)’:
>> ../scratch/PIT/PITInfo.cc:38:82: error: ‘class ns3::ndn::pit::Entry’ has no member named ‘m_faces’
>> ../scratch/PIT/PITInfo.cc:38:99: error: expected primary-expression before ‘>’ token
>> ../scratch/PIT/PITInfo.cc:38:102: error: expected primary-expression before ‘)’ token
>> ../scratch/PIT/PITInfo.cc:39:27: error: ‘class ns3::ndn::pit::Entry’ has no member named ‘m_faces’
>> ../scratch/PIT/PITInfo.cc:39:44: error: expected primary-expression before ‘>’ token
>> ../scratch/PIT/PITInfo.cc:39:47: error: expected primary-expression before ‘)’ token
>>
>>
>> But, i call "ndn-fib-entry.h" and "ndn-fib.h" to declare the variables. Where is the problem?
>>
>>
>> /Amin
>>
>>
>> On 09/28/2013 03:43 ق.ظ, Alex Afanasyev wrote:
>>> Hi Amin,
>>>
>>> Since this information belongs to each individual face (FaceMetric instance) inside FIB entry, you need to access individual items like this:
>>>
>>> Ptr<ndn::Pit> pit = node->GetObject<ndn::Pit> ();
>>> for (Ptr<ndn::pit::Entry> entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry))
>>>    {
>>>      std::cout << "=========" << std::endl;
>>>      std::cout << entry->GetPrefix () << std::endl;
>>>
>>>      for (FaceMetricContainer::type::index<i_nth>::type::iterator metric =
>>>             entry->m_faces.get<i_nth> ().begin ();
>>>           metric != entry->m_faces.get<i_nth> ().end ();
>>>           metric++)
>>>        {
>>>          os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t";
>>>        }
>>>    }
>>>
>>> ---
>>> Alex
>>>
>>> On Sep 27, 2013, at 4:48 AM, Amin Karami <amin at ac.upc.edu> wrote:
>>>
>>>> Hi Alex,
>>>> If we want to print some extra information such as, RTT (or incoming time of Interest into PIT and the response time) for each entry, what we should do?
>>>> Thanks a lot.
>>>>
>>>> I looking forward to your response.
>>>>
>>>> Best Regards,
>>>> Amin
>>>>
>>>>
>>>> On 09/26/2013 06:25 ق.ظ, Alex Afanasyev wrote:
>>>>> Hi Liu,
>>>>>
>>>>> You can do something like this:
>>>>>
>>>>> input: Ptr<Node> node;
>>>>>
>>>>> Ptr<ndn::Pit> pit = node->GetObject<ndn::Pit> ();
>>>>> for (Ptr<ndn::pit::Entry> entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry))
>>>>>    {
>>>>>      std::cout << *entry << std::endl;
>>>>>    }
>>>>>
>>>>> This will print out content of each PIT entry in the default format.  If you want some customizations, you can either directly access elements of PIT entry, or modify Print method of Pit implementation.
>>>>>
>>>>> ---
>>>>> Alex
>>>>>
>>>>> On Sep 25, 2013, at 6:41 PM, 刘总真 <liuzongzhen at cstnet.cn> wrote:
>>>>>
>>>>>> Hi Alex,
>>>>>>
>>>>>> I want to print out PIT contents, such as the incoming and outgoing interface. But I don’t know which function to use. Any suggestion?Thanks a lot!
>>>>>>
>>>>>> Looking forward to your response.
>>>>>>
>>>>>> Liu Zongzhen
>>>>> _______________________________________________
>>>>> ndnSIM mailing list
>>>>> ndnSIM at lists.cs.ucla.edu
>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>>>> _______________________________________________
>>>> ndnSIM mailing list
>>>> ndnSIM at lists.cs.ucla.edu
>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>> _______________________________________________
>> ndnSIM mailing list
>> ndnSIM at lists.cs.ucla.edu
>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20131117/e0591829/attachment.html>


More information about the ndnSIM mailing list