<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Thanks Junxiao, this could be the option that I'm looking for. I've
given it a try and it seems to work.<br>
There a couple of fixes that I report here for sake of completeness,
just in case someone else would like to replicate this set-up. <br>
<br>
1) According to the diagram you drew, ndnpoke should connect to
nfd2.sock and ndnpeek to nfd1.sock and not vice versa as you wrote.<br>
2) I changed the syntax of the URI in client.conf according to what
I read on the nfd log, so I used strings like
"transport=unix:///run/nfda.sock" into my client.conf files. I guess
you may get the right syntax looking at the nfd log when it starts
up and registers all the faces. Otherwise ndnpoke either did not
register itself to the right daemon or crashed throwing malformed
URI exceptions. Anyway, we should keep in mind that I'm not using
the latest version of the daemon and the tools, so the syntax could
have slightly changed.<br>
<br>
I did a quick trial and the ndn-apps communicated with the right
daemons and the software behind the veth2 received first Interest
and then Data packets. Now I'm looking at the daemons' logs to be
sure that the packets went through the right path.<br>
<br>
Best,<br>
Salvatore<br>
<br>
<div class="moz-cite-prefix">On 01/06/2016 05:32 PM, Junxiao Shi
wrote:<br>
</div>
<blockquote cite="mid:568d4183.c72a620a.95ae0.16db@mx.google.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:DengXian;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"\@DengXian";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
color:windowtext;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";
color:black;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Courier New";
color:black;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
<div class="WordSection1">
<p class="MsoNormal">Hi Salvatore</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">How about running two NFD instances?</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier
New"">ndnpeek ndnpoke<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New""> | |<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New""> NFD1 NFD2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New""> | |<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New""> veth1 veth2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New""> | |<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New""> your program<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">You can have two NFD instances running on
the same host by specifying different nfd.conf files on
“--config” parameter. Each nfd.conf should have distinct Unix
socket path and port numbers. If you need to edit nfd.conf in
a script, check out <a moz-do-not-send="true"
href="https://github.com/NDN-Routing/infoedit">infoedit</a>.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Then, have ndnpeek and ndnpoke connect to
different NFD instances by specifying different client.conf,
like:</p>
<p class="MsoNormal"><span style="font-family:"Courier
New"">mkdir -p /tmp/ndnpoke-home/.ndn<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New"">echo transport=unix:/var/run/nfd1.sock >
/tmp/ndnpoke-home/.ndn/client.conf<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New"">HOME=/tmp/ndnpoke-home ndnpoke /A<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New"">mkdir -p /tmp/ndnpeek-home/.ndn<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New"">echo transport=unix:/var/run/nfd2.sock >
/tmp/ndnpeek-home/.ndn/client.conf<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New"">HOME=/tmp/ndnpeek-home ndnpeek /A<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif">Yours, Junxiao<o:p></o:p></span></p>
<div
style="mso-element:para-border-div;border:none;border-top:solid
#E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;border:none;padding:0in"><br>
<b>From: </b><a moz-do-not-send="true"
href="mailto:salvatore.signorello@uni.lu">Salvatore
Signorello</a><br>
<b>Sent: </b>Wednesday, January 6, 2016 05:52<br>
<b>To: </b><a moz-do-not-send="true"
href="mailto:shijunxiao@email.arizona.edu">Junxiao Shi</a><br>
<b>Cc: </b><a moz-do-not-send="true"
href="mailto:nfd-dev@lists.cs.ucla.edu"><nfd-dev@lists.cs.ucla.edu></a><br>
<b>Subject: </b>Re: [Nfd-dev] generatation of NDN-like
packets with Scapy</p>
</div>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif">Hi Junxiao,<br>
<br>
thanks again, but I forgot to tell that changing that piece
of software is not worth doing (long and complex process), I
must use it as it is. This brings us back to my original
dilemma of writing an application that sends ndn packets to
specific network interfaces or simply writing a module for a
packet generator? How difficult would be to do the former?<br>
<br>
<br>
Best,<br>
Salvatore</span><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif"><o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif">On Jan 6, 2016 01:40, "Salvatore
Signorello" <<a moz-do-not-send="true"
href="mailto:salvatore.signorello@uni.lu">salvatore.signorello@uni.lu</a>>
wrote:<o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #CCCCCC
1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif">Hi Junxiao,<br>
<br>
thanks for your prompt feedback, below follows a
short description of my quick&dirty "set-up" and
then few more comments in-line:<br>
<br>
Scenario in mind (caveat: I don't know if it makes
sense, but that's what I need; so if you think of an
alternative, as I guess you already did according to
your previous suggestion, please feel free of
throwing away what follows and propose sth else)<br>
-----------------------<br>
On the same machine where nfd is running, I use the
ndnpeedk to generate an Interest with prefixA. My
nfd has a rule that forwards Interests with prefixA
out to a specific veth1. On that veth1 I have some
software running that processes the Interest and
then forwards the same Interest back to the nfd
through a different interface, veth2. In the
meantime I've started a local producer (ndnpoke -w)
for that content that correctly receives the
Interest(the 2nd one received on veth and not the
1st one issued by ndnpeek) and answers back with the
Data. The nfd forwards the data back to veth2, the
software processes it and then forwards it to nfd
through veth1. Nfd forwards the data back to
ndnpeek.<br>
<br>
Why am I doing this? I need two applications, one
consumer and one producer, like ndnpeek and ndnpoke
that generate ndn packets. <br>
<br>
The problems that I would like to avoid are the
following:<br>
- the pit record for the Interest issued by ndnpeek
risks to drop the Interest received on veth2
[SOLVED] I change the nonce when I process the
Interest for the 2nd time.<br>
- ndnpeek and ndnpoke cannot be started
simultaneously, otherwise ndnpoke will provide the
Data to ndnpeek in one step<br>
- if the 1st Interest creates a PIT record, how to
avoid that nfd will use it when receiving Data from
ndnpoke? The daemon will have a PIT record like the
following<br>
"prefixA/content ---- facex(local to
ndnpeek), facey(to veth2)"<br>
and it should choose only facey<br>
<br>
Quick and dirty workaround<br>
-----------------------------------------<br>
By now I simulate the scenario above in the
following way:<br>
1. Starting nfd and registering prefixA to veth1
with the nfdc cmd<br>
2. Issuing an Interest for prefixA/content with
ndnpeek<br>
3. The Interest is correctly forwarded to my
software through veth1 where I hold it for a while<br>
4. After ndnpeek timeout, I unregister prefixA from
nfd<br>
5. Starting ndnpoke for prefixA/content with a long
waiting time <br>
6. Unpausing my software that forwards the original
Interest to nfd through veth2<br>
7. nfd forwards it to ndnpoke and I get the data
back from veth2<br>
8. holding again the Data<br>
9. register prefixA again like done in 2<br>
10. issuing a new Interest with ndnpeek<br>
11. unpausing the Data to forwarded it back first to
nfd and then to ndnpeek<br>
<br>
Crazy, isn't it?<o:p></o:p></span></p>
</div>
</blockquote>
</div>
</blockquote>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Salvatore Signorello
PhD student @ SecanLab
Interdisciplinary Centre for Security, Reliability and Trust
SnT, University of Luxembourg
<a class="moz-txt-link-freetext" href="http://wwwen.uni.lu/snt/people/salvatore_signorello">http://wwwen.uni.lu/snt/people/salvatore_signorello</a></pre>
</body>
</html>