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

Ashlesh Gawande (agawande) agawande at memphis.edu
Mon Mar 20 15:04:36 PDT 2017


Security turned off means you don't have to setup the signing hierarchy and use the operator's identity to sign the command interest.


"NodeA" can send an interest to "Router" to advertise/withdraw but it will be rejected by NFD as the scope is /localhost


If you want to advertise/withdraw something from "Router" you would have to do it from the "Router"


There is a way to do it:

https://redmine.named-data.net/issues/3818

The feature is almost complete. You would have to get the latest NFD in ndnSIM and use this patch for NLSR:

https://gerrit.named-data.net/#/c/3617/

But you cannot do it directly from advertise/withdraw - they are to be used by the router's operator and hence are limited to the router by using the /localhost prefix.


Ashlesh

________________________________
From: Muhammad Hosain Abdollahi Sabet <mhasabet at gmail.com>
Sent: Monday, March 20, 2017 4:39:57 PM
To: Ashlesh Gawande (agawande)
Cc: Alex Afanasyev; ndnsim; Mahsa Aghajani
Subject: Re: [ndnSIM] Question about updating name prefix list of the routers

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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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/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<mailto: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/d622574b/attachment-0001.html>


More information about the ndnSIM mailing list