[ndnSIM] structure of fib in ndnsim

yao hu huyao0107 at gmail.com
Sat Mar 16 19:33:51 PDT 2013


Hi Alex,

Thanks for your immediate reply. If I use the second way, I can use the
method fib->Add() to add a ndn route. However, the trouble is the first
parameter--Name
<http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_name.html> &prefix.
The following the the only way to change from prefix string to Name? Can it
be used directly in ForwardingStrategy?

NameValue prefixValue;
prefixValue.DeserializeFromString (prefix, MakeNameChecker ());
fib->Add<http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_fib.html#af8b2e273d5ff3983c2e22d1c23c66c8a>(prefixValue.Get
(), face, metric);

Regards,
huyao


2013/3/17 Alex Afanasyev <alexander.afanasyev at ucla.edu>

> Hi huyao,
>
> I'm assuming you're modifying FIB on the same node
>
> Ptr<Node> node = this->GetObject<Node> ();
>
> or better, you can do the following:
>
> Ptr<Fib> fib = this->GetObject<Fib> ();   and then directly use FIB
> methods to update FIB without use of StackHelper.
>
> ---
> Alex
>
> On Mar 16, 2013, at 7:04 PM, yao hu <huyao0107 at gmail.com> wrote:
>
> Hi Alex,
>
> I see. Thanks a lot.
>
> Now I am in the method ForwardingStrategy::DidReceiveSolicitedData(), I
> want to call the method AddRoute(), but I do not know how to pass the first
> parameter--Ptr<Node> node. Could you please give an example?
>
> Regards,
> huyao
>
> 2013/3/17 Alex Afanasyev <alexander.afanasyev at ucla.edu>
>
>> Hi huyao,
>>
>> Sure, go ahead and add the counter.  I will let you know when I
>> generalize forwarding-strategy-specific storage in FIBs.
>>
>> To get a unique face ID of the face, you can use GetId () method of Face
>> class (
>> http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_face.html#af65b04aa5f75e24c9e73e0d60bf397a2).
>>  Just in case, this ID is just a unique numerical ID of the face on the
>> specific node and doesn't imply anything else (e.g., face with ID 2 doesn't
>> mean there are 3 faces on the node).
>>
>> ---
>> Alex
>>
>> On Mar 16, 2013, at 4:42 AM, yao hu <huyao0107 at gmail.com> wrote:
>>
>> Hi Alex,
>>
>> Thanks for your advice. I think I would like to store the counter into fib:Entry,
>> is that ok? Another question is how to get numerical face information (0,
>> 1, 2... which is convenient for storage) from Ptr<Face> type?
>>
>> Regards,
>> huyao
>>
>>
>> 2013/3/16 Alex Afanasyev <alexander.afanasyev at ucla.edu>
>>
>>> Hi huyao,
>>>
>>> You should not need to have multiple face entries, if you just want to
>>> record number of times you want to forward interest on a specific face.
>>>  Ideally, this information should be stored somewhere in FaceMetric
>>> (model/fib/ndn-fib-entry.h/cc).  Unfortunately, there is no "extensible"
>>> way to add new parameter to FaceMetric, but it is on my list of future
>>> modifications (the implementation plan is to have some sort of "tags" with
>>> any custom info that you can attach to a FIB entry or specific Face in FIB
>>> entry).
>>>
>>> For now, you can directly add the counter to FaceMetric class and add
>>> appropriate accessor methods.  And then use this methods to track either
>>> number of times a face was "added" to FIB.
>>>
>>> ---
>>> Alex
>>>
>>> On Mar 15, 2013, at 12:20 PM, yao hu <huyao0107 at gmail.com> wrote:
>>>
>>> Hi Alex,
>>>
>>> Yes, that is the usual thing for fib entry. What I think is If I use Add
>>> or AddRoute call once to add one ndn route, the face will be recorded once.
>>> If I use the same call twice, the face will be recorded twice... Then I
>>> would like I could modify or adjust the the current forwarding strategy to
>>> forward the related interests from the specific face according to the
>>> `times` this face appears in the fib entry. Is there any possibility to do
>>> such a thing in the current ndnsim?
>>>
>>> Thanks very much!
>>>
>>> Regards,
>>> huyao
>>>
>>>
>>> 2013/3/16 Alex Afanasyev <alexander.afanasyev at ucla.edu>
>>>
>>>> Hi huyao,
>>>>
>>>> PIT also has a limited API to lookup (only using Interests and
>>>> ContentObjects).  So, probably this part is also should be extended, but
>>>> just pure prefix-based lookup should be used cautiously.
>>>>
>>>> For your second question.  What is your intended need for the same face
>>>> associated with the FIB entry more than once?  Can you give a specific
>>>> example?  For me it is fundamental that FIB entry has only one reference to
>>>> a specific face (AddRoute call "adding" the same face will "rerrange" this
>>>> face based on the specified metric).  The forwarding strategy can "re-use"
>>>> the same face many times, if it feels that is appropriate.
>>>>
>>>> ---
>>>> Alex
>>>>
>>>> On Mar 15, 2013, at 10:48 AM, yao hu <huyao0107 at gmail.com> wrote:
>>>>
>>>> Hi Alex,
>>>>
>>>> Thanks for your clarification. I have understood what you said. It was
>>>> my misunderstanding.
>>>>
>>>> Yes. I looked into the ndnsim API and felt a little curious that why
>>>> FIB does not have a lookup functionality like PIT. I really appreciate if
>>>> you can provide this functionality. Thanks very much!
>>>>
>>>> Besides, regarding the fib structure, I have one more question. In the
>>>> default fib structure, one specific face (like face 1) in one fib entry
>>>> appears just once. If I use Add() or AddRoute() to add a same ndn route
>>>> twice or more, face 1 in this fib entry is still only one. My question is,
>>>> is there a possibility or a way to record the `twice` or more? A very
>>>> direct thought is could I store one specific face twice or more in one fib
>>>> entry? Or are there any other ways to do such a behavior?
>>>>
>>>> Thanks for your answer in advance!
>>>>
>>>> Regards,
>>>> huyao
>>>>
>>>>
>>>> 2013/3/16 Alex Afanasyev <alexander.afanasyev at ucla.edu>
>>>>
>>>>> Hi huyao,
>>>>>
>>>>> fib::Entry object associated with exactly one prefix, so RemoveFace
>>>>> method on fib::Entry will not have impact on any other entries.
>>>>>
>>>>> Let me show an example:
>>>>>
>>>>> # step one: find a FIB entry for the prefix associated with Interest
>>>>> Ptr<fib::Entry> entry = fib->LongestPrefixMatch (interest);
>>>>>
>>>>> # remove a specific face
>>>>> entry->RemoveFace (face_to_remove);
>>>>>
>>>>> ---
>>>>>
>>>>> This will not impact any other FIB entries.
>>>>>
>>>>> I just realized that the current FIB interface doesn't provide direct
>>>>> way to do lookup just using Name (=NameComponents).  But it would be
>>>>> trivial to add this functionality, as underlying data structures fully
>>>>> support that.  Let me know if you need it. (Alternatively, you can also
>>>>> enumerate all FIB entries using Begin/End/Next methods and find the one you
>>>>> need, but it can be too inefficient.)
>>>>>
>>>>> ---
>>>>> Alex
>>>>>
>>>>> On Mar 15, 2013, at 1:33 AM, yao hu <huyao0107 at gmail.com> wrote:
>>>>>
>>>>> Hi Alex,
>>>>>
>>>>> Thanks for your explanation!
>>>>>
>>>>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace
>>>>> call just has one parameter (const Ptr< Face<http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_face.html> >
>>>>> &face) without relation to some specific prefix, so I guess if I want to
>>>>> delete one specific face from one specific prefix, it will have the same
>>>>> impact to other prefixes which also have the face.
>>>>>
>>>>> My intention is to delete one specific face from a specific prefix,
>>>>> while any other prefix still retains the face if  it has. Is it feasible in
>>>>> the current ndnsim? If not, how do I do to implement such a functionality?
>>>>> Or my understanding for this issue has some error?
>>>>>
>>>>> Regards,
>>>>> huyao
>>>>>
>>>>>
>>>>> 2013/3/15 Alex Afanasyev <alexander.afanasyev at ucla.edu>
>>>>>
>>>>>> My small correction :). I meant that it is forwarding strategy job to
>>>>>> pick a particular face from FIB entry.
>>>>>>
>>>>>> ---
>>>>>> Alex
>>>>>>
>>>>>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev <
>>>>>> alexander.afanasyev at ucla.edu> wrote:
>>>>>>
>>>>>> Hi huyao,
>>>>>>
>>>>>> You are right, for the single prefix there will be only one FIB entry
>>>>>> created and it is forwarding strategy job to pick a particular one to
>>>>>> forward an Interest in this prefix.
>>>>>>
>>>>>> There is an interface in fib::Entry to remove a specific face from s
>>>>>> specific FIB entry.  You can also check recent conversation
>>>>>> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.htmlwith more details about that.
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> Alex
>>>>>>
>>>>>> On Mar 14, 2013, at 7:28 PM, yao hu <huyao0107 at gmail.com> wrote:
>>>>>>
>>>>>> a supplement.. If so, is there a way to delete just some face like
>>>>>> face 0 from the fib entry with the prefix /data without deleting face 1?
>>>>>>
>>>>>> Thanks for your reply!
>>>>>>
>>>>>>
>>>>>> 2013/3/15 yao hu <huyao0107 at gmail.com>
>>>>>>
>>>>>>> Dear ndnsimers,
>>>>>>>
>>>>>>> Assume that there is an existing fib entry with the prefix /data,
>>>>>>> face 0 in some specific node. Now by using the function Add() or
>>>>>>> AddRoute(), a new fib entry will be added with the same prefix /data, but
>>>>>>> with the different face 1. So I wonder in ndnsim, they are counted as two
>>>>>>> fib entries in FIB or just seemed as one. For my understanding, the answer
>>>>>>> is the latter. Here, in Fib class, GetSize<http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_fib.html#a93a184d9fdc1ace4ea82647c5834ff9c> ()
>>>>>>> still equals to 1. Am I right?
>>>>>>>
>>>>>>> Regards,
>>>>>>> huyao
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> ndnSIM mailing list
>>>>>> ndnSIM at lists.cs.ucla.edu
>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>>>>>>  <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>
>>>>>>
>>>>>>  <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
>>>>
>>>>
>>>>
>>> _______________________________________________
>>> 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/20130317/e33596d5/attachment.html>


More information about the ndnSIM mailing list