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

Mahsa Aghajani mahsa.aghajani at gmail.com
Mon Mar 20 10:41:51 PDT 2017


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-
> hackathon/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%11ksk-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%11ksk-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%11ksk-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%11ksk-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/nlsr/prefix-update/withdraw");
>>>>   withdrawCommand.append(parameters.wireEncode());
>>>>
>>>>   shared_ptr<Interest> withdrawInterest = make_shared<Interest>(withdraw
>>>> Command);
>>>>   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/20170320/e78412ad/attachment-0001.html>


More information about the ndnSIM mailing list