[ndnSIM] Question about updating name prefix list of the routers

Muhammad Hosain Abdollahi Sabet mhasabet at gmail.com
Mon Mar 20 14:39:57 PDT 2017


Ok. So for now that we have turned off the security, other sites should be
able to use advertise/withdraw commands, right?

Suppose the simplest topology like:
NodeA<------>Router
Whether or not NodeA is a router(has nlsr up and running), if NodeA sends
advertise/withdraw command interests Router will take appropriate action.
But the question is under what prefix NodeA should send its interests?
ndn:/nlsr? Or ndn:RouterName/nlsr? If latter, RouterName is name of an
application running on Router node, right?

Thanks,
Sabet


خندان باشید
با تشکر

On Tue, Mar 21, 2017 at 12:35 AM, Ashlesh Gawande (agawande) <
agawande at memphis.edu> wrote:

> Oh okay, you mean why only /localhost?
>
> Thats because this interest has to be signed by the operator and operators
> of other sites should not be able to advertise/withdraw prefixes on other
> routers which they don't have (ssh/machine) access to.
>
>
> I don't know how ndnSIM works but advertise/withdraw would have to be done
> on a per node level.
>
>
> Ashlesh
> ------------------------------
> *From:* Muhammad Hosain Abdollahi Sabet <mhasabet at gmail.com>
> *Sent:* Monday, March 20, 2017 3:54:20 PM
> *To:* Ashlesh Gawande (agawande)
> *Cc:* Alex Afanasyev; ndnsim; Mahsa Aghajani
>
> *Subject:* Re: [ndnSIM] Question about updating name prefix list of the
> routers
>
> Ashlesh,
>
>
> External application is supposed to send an interest like nlsrc.
>
>
> If advertise/withdraw commands are only accepted in local scope, then
> ​​​​​how external applications are allowed to express
> to-be-accepted command interests?
> https://redmine.named-data.net/projects/nlsr/wiki/NLSR_Management
>
>>
>> Why do you want to use NlsrExec (which is basically NLSR) to send an
>> advertise/withdraw interest to itself?
>
> Mahsa may answer that better since it is her code. But I think it has
> something to do with complying with local scope, and maybe​ avoiding c++
> complexities.
>
> Thanks,
> Sabet
>
>
>
>
> On 20 Mar 2017 10:51 pm, "Ashlesh Gawande (agawande)" <
> agawande at memphis.edu> wrote:
>
> nlsrc is separate application than NLSR - has its own face:
>
> https://github.com/named-data/NLSR/blob/master/tools/nlsrc.cpp#L368
>
>
> ​​
> External application is supposed to send an interest like nlsrc.
>
> ​​
> Why do you want to use NlsrExec (which is basically NLSR) to send an
> advertise/withdraw interest to itself?
>
>
> Ashlesh
> ------------------------------
> *From:* Muhammad Hosain Abdollahi Sabet <mhasabet at gmail.com>
> *Sent:* Monday, March 20, 2017 1:53:26 PM
>
> *To:* Ashlesh Gawande (agawande)
> *Cc:* ndnsim; Alex Afanasyev; Mahsa Aghajani
> *Subject:* Re: [ndnSIM] Question about updating name prefix list of the
> routers
>
> Ashlesh,
>
> If the face is the problem, so how nlsrc is working?
> Nlsrc::sendNamePrefixUpdate uses another face for expressing interest?
>
> Secondly, if these commands only work in local scope, then no external
> application may use them for advertising and withdrawing prefixes, right?
>
> Thanks,
> Sabet
>
> On 20 Mar 2017 9:31 pm, "Ashlesh Gawande (agawande)" <agawande at memphis.edu>
> wrote:
>
>> So NLSR is listening for advertise and withdraw interests (on its face to
>> NFD, ex: face 260).
>>
>> An application sends an interest to NFD (on its face to NFD, ex:
>> face 265).
>>
>> NFD forwards the interest from the application to NLSR.
>>
>>
>> There should not be any specific face.
>>
>>
>> You can also try to call https://github.com/nam
>> ed-data/NLSR/blob/feae5574b8b62ca2dff9991d8bacab48e4737b6a/s
>> rc/update/prefix-update-processor.cpp#L68
>>
>> directly instead of trying to send an interest - if you want to do it
>> from within NLSR instead (i.e. from NlsrExec). Might have to expose the
>> function.
>>
>>
>> Ashlesh
>> ------------------------------
>> *From:* Mahsa Aghajani <mahsa.aghajani at gmail.com>
>> *Sent:* Monday, March 20, 2017 12:41:51 PM
>> *To:* Ashlesh Gawande (agawande)
>> *Cc:* Alex Afanasyev; ndnsim; Muhammad Hosain Abdollahi Sabet
>> *Subject:* Re: [ndnSIM] Question about updating name prefix list of the
>> routers
>>
>> Yes m_face is the face which is passed to NLSR, if the interest for
>> advertise and withdraw commands should be sent from another face, how
>> should it be related to NLSR? I mean is there a specific face for these
>> kind of interest packets?
>>
>> On Mar 20, 2017 18:02, "Ashlesh Gawande (agawande)" <agawande at memphis.edu>
>> wrote:
>>
>>> Security is off by default in nlsrSIM (https://github.com/3rd-ndn-ha
>>> ckathon/ndnSIM-NLSR/blob/master/examples/ndn-nlsr-confgen.cpp#L405), so
>>> that should not be a problem.
>>>
>>> So this m_face, is it the same face that is passed to NLSR?
>>>
>>> That may be a problem. Since you are sending the interest out of that
>>> face and NLSR is listening for request on the same face, NFD would not
>>> forward the interest back to the same face. Hence interest reject message
>>> from NFD.
>>>
>>>
>>> Ashlesh
>>> ------------------------------
>>> *From:* Muhammad Hosain Abdollahi Sabet <mhasabet at gmail.com>
>>> *Sent:* Saturday, March 18, 2017 7:08:47 AM
>>> *To:* Ashlesh Gawande (agawande)
>>> *Cc:* ndnsim; Alex Afanasyev; Mahsa Aghajani
>>> *Subject:* Re: [ndnSIM] Question about updating name prefix list of the
>>> routers
>>>
>>>
>>> I executed the following code but still after simulation the desired prefix is not in FIB,
>>>
>>> according to log, the interest gets rejected.
>>>
>>>
>>>
>>> void
>>>> NlsrExec::advertise()
>>>> {
>>>> //siteIdentity = ndn::Name(site).appendVersion();
>>>> //opIdentity = ndn::Name(siteIdentity).append
>>>> (ndn::Name(operator)).appendVersion();
>>>> std::cout<< "I was called"<<std::endl;
>>>> m_nlsr.getPrefixUpdateProcessor().enable();
>>>> ndn::nfd::ControlParameters parameters;
>>>> parameters.setName("/prefix/to/advertise/");
>>>> ndn::Name advertiseCommand("/localhost/nlsr/prefix-update/advertise");
>>>> advertiseCommand.append(parameters.wireEncode());
>>>> ndn::Interest advertiseInterest(advertiseCommand);
>>>> advertiseInterest.setMustBeFresh(true);
>>>> m_keyChain.sign(advertiseInterest);
>>>> m_face.expressInterest(advertiseInterest,
>>>> std::bind([] { }),
>>>> std::bind([] { }));
>>>> }
>>>
>>>
>>>
>>> The log corresponding to node 5 :
>>>
>>> 31s 5 nfd.Forwarder:onIncomingInterest(): [DEBUG] onIncomingInterest
>>>> face=260 interest=/localhost/nlsr/prefix-update/advertise/h%19%07%17%
>>>> 08%06prefix%08%02to%08%09advertise/y%18/%AB%DD%9E%8EO%EAQ%27
>>>> /%164%1B%01%01%1C%2F%07-%08%05dummy%08%03key%08%03KEY%08%11k
>>>> sk-1418600391050%08%07ID-CERT/%17%FD%01%00%93%15%09Iy%9E%B7%
>>>> 9C%D3%C1%BFa%89%D5%D9%CA%F2%B0%14%AEr%7C%1F%8F%F5%B1p%D6%9B%
>>>> 8F%F8%D7-%BC%92o%7Dw%96F%EA%D4%7D%90%BCz%EB%E2%03%93%B1%D2b%
>>>> EC%9D%FF%9C%9C%2A%14%7D%23%CA%29%3D%15%1A%40B%2CY3%8A%F7%
>>>> C0k%C4%9C%F3%C4%99%A4%1A%60%F5%28%7DL%EFC%7D%BD%7D%00Q%EEA
>>>> %F5%25%80%CE%E6dOuT%F3%B2%99%9A%0F%93%9A%28%1D%FE%12%8A%E0%
>>>> C1%02%EB%A45R%88%ACD%1AD%82%97O_%A8%D8%9Fg8%A8d%B6b%99%BD%
>>>> 96%3C%F5%86%09%5C%97k%8F%AE%E0%60%E7%23%98j%EE%C1%B0%14%
>>>> BEF%2C%FB%A7%27s%E4%F3%263%BA%99%D4%018%A8%F2%9E%87%E0q%0B%
>>>> 25D%075%88%ABg%27V%0E%B5%B5%E8%27%B4I%DC%B8H1%FF%99H%AB%
>>>> 11%B4%A0%DF%8Am%FFCi2%A7%BCc%9D%0F%E0%9546%25K%3E6%BD%81%
>>>> 91%0B%91%9F%3A%04%A2D%28%19%A18%21O%25Y%8AH%C2
>>>> 31s 5 nfd.Forwarder:onContentStoreMiss(): [DEBUG] onContentStoreMiss
>>>> interest=/localhost/nlsr/prefix-update/advertise/h%19%07%17%
>>>> 08%06prefix%08%02to%08%09advertise/y%18/%AB%DD%9E%8EO%EAQ%27
>>>> /%164%1B%01%01%1C%2F%07-%08%05dummy%08%03key%08%03KEY%08%11k
>>>> sk-1418600391050%08%07ID-CERT/%17%FD%01%00%93%15%09Iy%9E%B7%
>>>> 9C%D3%C1%BFa%89%D5%D9%CA%F2%B0%14%AEr%7C%1F%8F%F5%B1p%D6%9B%
>>>> 8F%F8%D7-%BC%92o%7Dw%96F%EA%D4%7D%90%BCz%EB%E2%03%93%B1%D2b%
>>>> EC%9D%FF%9C%9C%2A%14%7D%23%CA%29%3D%15%1A%40B%2CY3%8A%F7%
>>>> C0k%C4%9C%F3%C4%99%A4%1A%60%F5%28%7DL%EFC%7D%BD%7D%00Q%EEA
>>>> %F5%25%80%CE%E6dOuT%F3%B2%99%9A%0F%93%9A%28%1D%FE%12%8A%E0%
>>>> C1%02%EB%A45R%88%ACD%1AD%82%97O_%A8%D8%9Fg8%A8d%B6b%99%BD%
>>>> 96%3C%F5%86%09%5C%97k%8F%AE%E0%60%E7%23%98j%EE%C1%B0%14%
>>>> BEF%2C%FB%A7%27s%E4%F3%263%BA%99%D4%018%A8%F2%9E%87%E0q%0B%
>>>> 25D%075%88%ABg%27V%0E%B5%B5%E8%27%B4I%DC%B8H1%FF%99H%AB%
>>>> 11%B4%A0%DF%8Am%FFCi2%A7%BCc%9D%0F%E0%9546%25K%3E6%BD%81%
>>>> 91%0B%91%9F%3A%04%A2D%28%19%A18%21O%25Y%8AH%C2
>>>> 31s 5 nfd.Forwarder:onContentStoreMiss(): [LOGIC] onContentStoreMiss
>>>> noLinkObject
>>>> 31s 5 nfd.Forwarder:onInterestReject(): [DEBUG] onInterestReject
>>>> interest=/localhost/nlsr/prefix-update/advertise/h%19%07%17%
>>>> 08%06prefix%08%02to%08%09advertise/y%18/%AB%DD%9E%8EO%EAQ%27
>>>> /%164%1B%01%01%1C%2F%07-%08%05dummy%08%03key%08%03KEY%08%11k
>>>> sk-1418600391050%08%07ID-CERT/%17%FD%01%00%93%15%09Iy%9E%B7%
>>>> 9C%D3%C1%BFa%89%D5%D9%CA%F2%B0%14%AEr%7C%1F%8F%F5%B1p%D6%9B%
>>>> 8F%F8%D7-%BC%92o%7Dw%96F%EA%D4%7D%90%BCz%EB%E2%03%93%B1%D2b%
>>>> EC%9D%FF%9C%9C%2A%14%7D%23%CA%29%3D%15%1A%40B%2CY3%8A%F7%
>>>> C0k%C4%9C%F3%C4%99%A4%1A%60%F5%28%7DL%EFC%7D%BD%7D%00Q%EEA
>>>> %F5%25%80%CE%E6dOuT%F3%B2%99%9A%0F%93%9A%28%1D%FE%12%8A%E0%
>>>> C1%02%EB%A45R%88%ACD%1AD%82%97O_%A8%D8%9Fg8%A8d%B6b%99%BD%
>>>> 96%3C%F5%86%09%5C%97k%8F%AE%E0%60%E7%23%98j%EE%C1%B0%14%
>>>> BEF%2C%FB%A7%27s%E4%F3%263%BA%99%D4%018%A8%F2%9E%87%E0q%0B%
>>>> 25D%075%88%ABg%27V%0E%B5%B5%E8%27%B4I%DC%B8H1%FF%99H%AB%
>>>> 11%B4%A0%DF%8Am%FFCi2%A7%BCc%9D%0F%E0%9546%25K%3E6%BD%81%
>>>> 91%0B%91%9F%3A%04%A2D%28%19%A18%21O%25Y%8AH%C2
>>>> 31.1s 5 nfd.Forwarder:onInterestFinalize(): [DEBUG] onInterestFinalize
>>>> interest=/localhost/nlsr/prefix-update/advertise/h%19%07%17%
>>>> 08%06prefix%08%02to%08%09advertise/y%18/%AB%DD%9E%8EO%EAQ%27
>>>> /%164%1B%01%01%1C%2F%07-%08%05dummy%08%03key%08%03KEY%08%11k
>>>> sk-1418600391050%08%07ID-CERT/%17%FD%01%00%93%15%09Iy%9E%B7%
>>>> 9C%D3%C1%BFa%89%D5%D9%CA%F2%B0%14%AEr%7C%1F%8F%F5%B1p%D6%9B%
>>>> 8F%F8%D7-%BC%92o%7Dw%96F%EA%D4%7D%90%BCz%EB%E2%03%93%B1%D2b%
>>>> EC%9D%FF%9C%9C%2A%14%7D%23%CA%29%3D%15%1A%40B%2CY3%8A%F7%
>>>> C0k%C4%9C%F3%C4%99%A4%1A%60%F5%28%7DL%EFC%7D%BD%7D%00Q%EEA
>>>> %F5%25%80%CE%E6dOuT%F3%B2%99%9A%0F%93%9A%28%1D%FE%12%8A%E0%
>>>> C1%02%EB%A45R%88%ACD%1AD%82%97O_%A8%D8%9Fg8%A8d%B6b%99%BD%
>>>> 96%3C%F5%86%09%5C%97k%8F%AE%E0%60%E7%23%98j%EE%C1%B0%14%
>>>> BEF%2C%FB%A7%27s%E4%F3%263%BA%99%D4%018%A8%F2%9E%87%E0q%0B%
>>>> 25D%075%88%ABg%27V%0E%B5%B5%E8%27%B4I%DC%B8H1%FF%99H%AB%
>>>> 11%B4%A0%DF%8Am%FFCi2%A7%BCc%9D%0F%E0%9546%25K%3E6%BD%81%
>>>> 91%0B%91%9F%3A%04%A2D%28%19%A18%21O%25Y%8AH%C2 unsatisfied
>>>
>>>
>>> Why is that so? Is it because of the signiture or something?
>>>
>>> ​Thanks,
>>> Sabet​
>>>
>>>
>>> On Tue, Mar 7, 2017 at 10:40 PM, Ashlesh Gawande (agawande) <
>>> agawande at memphis.edu> wrote:
>>>
>>>> Yes, receive is just a dummy written for unit testing (
>>>> https://github.com/named-data/ndn-cxx/blob/master/src/util/
>>>> dummy-client-face.hpp).
>>>>
>>>>
>>>> You would use expressInterest to send an advertise/withdraw request.
>>>>
>>>> (https://github.com/named-data/NLSR/blob/master/tools/nlsrc.cpp#L158)
>>>>
>>>>
>>>> The advertise/withdraw commands are only accepted on localhost (
>>>> https://redmine.named-data.net/projects/nlsr/wiki/NLSR_Management).
>>>>
>>>> For example, nlsrc issues an advertise interest to NFD, which gives it
>>>> to NLSR (since NLSR is listening for it).
>>>> Then NLSR can respond appropriately.
>>>>
>>>> Ashlesh
>>>> ------------------------------
>>>> *From:* Muhammad Hosain Abdollahi Sabet <mhasabet at gmail.com>
>>>> *Sent:* Tuesday, March 7, 2017 1:04:04 PM
>>>> *To:* Ashlesh Gawande (agawande)
>>>> *Cc:* ndnsim; Alex Afanasyev; Mahsa Aghajani
>>>>
>>>> *Subject:* Re: [ndnSIM] Question about updating name prefix list of
>>>> the routers
>>>>
>>>>
>>>> Ashlesh,
>>>>
>>>> How about using expressInterest? Does nlsr respond to interest of local
>>>> scope like nfd? If so, there is no need to have a receive, right?
>>>>
>>>> Thanks,
>>>> Sabet
>>>> On Mar 6, 2017 10:48 PM, "Ashlesh Gawande (agawande)" <
>>>> agawande at memphis.edu> wrote:
>>>>
>>>>> face->receive is for the unit tests (written for testing purpose).
>>>>> Remove it.
>>>>>
>>>>> After that call whatever the equivalent of face->processEvents is in
>>>>> ndnSIM (I am not familiar with ndnSIM).
>>>>>
>>>>>
>>>>> Also look at nlsrc tools - which is a real application to send
>>>>> advertise/withdraw command and would be closer to what you want than the
>>>>> test (however, one thing missing in nlsrc is that it will sign the interest
>>>>> with default identity - so you have to make sure that default identity is
>>>>> set to operator to do the advertise/withdraw request This should not matter
>>>>> if security is turned off in nlsr.conf file - iirc ndnSIM-NLSR has it
>>>>> turned off).
>>>>>
>>>>> (https://github.com/named-data/NLSR/tree/master/tools)
>>>>>
>>>>> But yes, to advertise/withdraw prefix this is the functionality you
>>>>> would use.
>>>>>
>>>>>
>>>>> Ashlesh
>>>>> ------------------------------
>>>>> *From:* Mahsa Aghajani <mahsa.aghajani at gmail.com>
>>>>> *Sent:* Monday, March 6, 2017 12:47:00 PM
>>>>> *To:* Alex Afanasyev
>>>>> *Cc:* Ashlesh Gawande (agawande); ndnsim; Anil Jangam
>>>>> *Subject:* Re: [ndnSIM] Question about updating name prefix list of
>>>>> the routers
>>>>>
>>>>> The error I got is that face class does not have a member receive().
>>>>> I do not know exactly how to send the cammand advertise/withdraw.
>>>>> Thank you a lot dear Alex for your attention.
>>>>>
>>>>> On Mar 6, 2017 22:11, "Alex Afanasyev" <aa at cs.ucla.edu> wrote:
>>>>>
>>>>>> Dear Mahsa,
>>>>>>
>>>>>> Can you give a bit more details on what errors you're getting?  What
>>>>>> exactly is not working when you trying to send the command?
>>>>>>
>>>>>> --
>>>>>> Alex
>>>>>>
>>>>>> On Mar 5, 2017, at 5:53 AM, Mahsa Aghajani <mahsa.aghajani at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> Dear ndnSIM users
>>>>>>
>>>>>> I want to update name prefix lists of routers during a simulation
>>>>>> including adding/removing some name  prefixes to/from a router. Should I
>>>>>> use advertise or withdraw functions of NLSR for doing this?
>>>>>> If so, how can I use these functions in ndnSIM-NLSR? I have written
>>>>>> this code in
>>>>>> ndn-nlsr-exec.cpp file, but I got some errors relating to sending
>>>>>> interest from face :
>>>>>>
>>>>>> void
>>>>>> Nlsr::withdraw()
>>>>>> {
>>>>>>   m_nlsr.getPrefixUpdateProcessor().updateProcessor.enable();
>>>>>>
>>>>>>   ndn::nfd::ControlParameters parameters;
>>>>>>   parameters.setName("/prefix/to/advertise/");
>>>>>>
>>>>>>   ndn::Name withdrawCommand("/localhost/nl
>>>>>> sr/prefix-update/withdraw");
>>>>>>   withdrawCommand.append(parameters.wireEncode());
>>>>>>
>>>>>>   shared_ptr<Interest> withdrawInterest =
>>>>>> make_shared<Interest>(withdrawCommand);
>>>>>>   keyChain.signByIdentity(*withdrawInterest, opIdentity);
>>>>>>
>>>>>>   face->receive(*withdrawInterest);
>>>>>>   face->processEvents(ndn::time::milliseconds(1));
>>>>>> }
>>>>>>
>>>>>> Thanks and regards.
>>>>>>
>>>>>> Mahsa Aghajani
>>>>>> M.Sc. Student
>>>>>> Department of Computer Engineering
>>>>>> Sharif University of Technology
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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/20170321/5a0964a7/attachment-0001.html>


More information about the ndnSIM mailing list