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

Ashlesh Gawande (agawande) agawande at memphis.edu
Mon Mar 20 11:01:30 PDT 2017


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/named-data/NLSR/blob/feae5574b8b62ca2dff9991d8bacab48e4737b6a/src/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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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>(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<mailto:ndnSIM at lists.cs.ucla.edu>
http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim


_______________________________________________
ndnSIM mailing list
ndnSIM at lists.cs.ucla.edu<mailto: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/a0ab45f1/attachment-0001.html>


More information about the ndnSIM mailing list