[ndnSIM] How to select multiple faces to send Interest/Data?

Anil Jangam anilj.mailing at gmail.com
Tue Mar 24 22:29:19 PDT 2015

Hi Spyridon.

Thank you for your comments. They are elaborate! I have added few further

I am writing a simulation for a protocol where multiple nodes are involved.
In my topology, a given node may be connected to multiple other nodes. I
have written an application (derives from "ns3::ndn::App" class), which is
installed on node. Right now, I am more thinking from this application
perspective, hence my earlier email.

I will read the technical report.


On Tue, Mar 24, 2015 at 8:29 PM, Spyridon (Spyros) Mastorakis <
spiros.mastorakis at gmail.com> wrote:

> Hello Anil,
> I will try to answer your questions:
> First of all, the application face is different than the NetDevice Face,
> which is used for the connection among the simulated nodes. Both of them
> are realizations of the NFD Face class. The NFD Face class is the base
> class, which is used during the Interest/Data processing from NFD. For
> further details, you can take a look at our Technical Report:
> http://named-data.net/publications/techreports/ndn-0028-1-ndnsim-v2/
> > In this custom-app.cc code (line: 88), I think it is sending the
> Interest on face created by the application (ndn-app). However, how the
> scenario is handled where there are more than one faces on given node? How
> a particular face is selected to send the Interest on? In my simulation
> setup, I have multiple faces on given node.
> Each application, that you will define in a simulation scenario using the
> AppHelper, will have a face associated with it. In this way, an Interest
> packet will be sent out of this application face to NFD for further
> processing and then to other nodes using the netDeviceFace. I do not think
> that there are any reasons to have multiple faces for the same application
> instance on a single node. However, you can install multiple application
> instances on the same node.

[anil] Ok. "more than one faces on given node" - I was talking about when a
node is connected to more than one remote nodes. So if I understood you
correctly, there will be multiple netDeviceFace(s) depending on how node is
connected to other nodes.
I agree that there is no need to have more than one application faces
between application and NFD. However, if I have to send an Interest to
specific node, can't I use a specific netDeviceFace instead of depending on
NFD and FIB entries? Is that possible?

> > When Interest/Data is received, a respective handler is called (line: 93
> or 116). I believe this handler is called for all Interests/Data messages
> received from all interface, correct? It is the application, based on the
> Interest name, carries out different processing as per the application
> context. Am I correct?
> What do you mean by “all interfaces”? Application faces, NFD faces,
> NetDeviceFaces?

[anil] I meant the Interest/Data messages received from remote devices. So
it is netDeviceFace. But now, I see that these handlers (OnInterest, and
OnData) are application level handlers (point of entry), and the lower
layer (e.g. NFD) is going to post Interest/Data messages to the application
over application face. Application then handle/process these Interest/Data
depending on the "name"space, correct?

> > I saw in one of the application code, an ExpressInterest() API, where
> one can specify the exact call back to handle Data. However in the above
> code, this looks like abstracted out. Is it still possible to use the
> ExpressInterest API? To put it other words, I did not understand how
> Interest is actually being sent out to the face. How does this works in the
> above sample code?
> An Interest starting from the application face will be send to NFD for
> further processing. If there is a FIB entry for the expressed name prefix,
> the interest will be sent to another node.

[anill] I was more concerned about the Ingress Interest/Data message. So to
extend my above comment, when application receives Interest/Data message,
the OnInterest/OnData is called by the simulator framework respectively,
and/or we can specify the function to be called back - on receiving
Interest/Data - by using ExpressInterest() API. Is this correct?

> Hope that this helps.
> --
> Spyridon (Spyros) Mastorakis
> Personal Website: http://cs.ucla.edu/~mastorakis/
> Internet Research Laboratory
> PhD Computer Science
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20150324/26217ce4/attachment.html>

More information about the ndnSIM mailing list