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

Muhammad Hosain Abdollahi Sabet mhasabet at gmail.com
Sat Mar 18 05:08:47 PDT 2017


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/20170318/6fb04e7b/attachment-0001.html>


More information about the ndnSIM mailing list