<div dir="ltr">Hi Jeff<div><br></div><div><font size="4">A</font></div><div>A <i>persistent</i> TCP face is considered <i>failed</i> when TCP connection is broken. There's no built-in way to re-establish the connection and routes.<br></div><div>#<a href="http://redmine.named-data.net/issues/2491" target="_blank">2491</a> will provide the concept of <i>permanent</i> face which does exactly that: TCP connection is re-established after it's broken, and FaceId remains unchanged. This is still in early idea stage.</div><div><br></div><div>The workaround used by <a href="http://yoursunny.com/p/ndn6/" target="_blank">NDN6.TK</a> is:</div><div><ol><li>use <a href="https://github.com/yoursunny/ndn6-tools/blob/master/facemon.md" target="_blank">facemon</a> to monitor face destroy events</li><li>pipe the output of facemon to an awk script</li><li>in the awk script, if the face to the uplink router is destroyed, invoke <font face="monospace, monospace">nfdc register</font> to re-establish the face and register static routes</li></ol><div>I'm attaching the awk script for reference.</div></div><div><br></div><div><span style="font-size:large">B</span><br></div><div>A <i>persistent</i> UDP unicast face is considered <i>failed</i> when it receives an ICMP error. During the restart of remote NFD, if local NFD sends a UDP packet and gets back an ICMP error, the face will be destryoed; if local NFD doesn't send during this period, the face should be intact.</div><div>As I remember, this behavior dates back to May 2014, and hasn't been significantly changed since then.</div><div><br></div><div>You may use iptables to block incoming ICMP PortUnreachable error to avoid face getting destroy.</div><div>Otherwise, the workaround above is also effective.</div><div><br></div><div>Yours, Junxiao<br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Mar 21, 2015 at 1:44 PM, Burke, Jeff <span dir="ltr"><<a href="mailto:jburke@remap.ucla.edu" target="_blank">jburke@remap.ucla.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif">
<div>Alex / nfd folks, </div>
<div><br>
</div>
<div>We're going to make sure local connections are through unix sockets whenever available. </div>
<div><br>
</div>
<div>Two quick related questions. Feel free to send a RTFM pointer: </div>
<div><br>
</div>
<div>#A - </div>
<div>- Is there a built-in way for "persistent" routes to get re-established if the TCP connection goes down? I interpreted your original description to mean this is not the default behavior. </div>
<div><br>
</div>
<div>#B - </div>
<div>In the case of UDP faces, what happens in this situation: </div>
<div><br>
</div>
<div>1. nfdc is used to register (with a local NFD) a persistent UDP face for a remote NFD</div>
<div>2. The face is created successfully</div>
<div>3. The remote NFD is killed and then restarted</div>
<div><br>
</div>
<div>Is the intended behavior that the face created in #1 is still up after #3? (And, has this been the case in all versions of NFD? I am debugging a problem on an installation running an older version of NFD on the Raspberry PI.)</div>
<div><br>
</div>
<div>Thanks!</div>
<div>Jeff</div>
<div><br></div></div></blockquote></div></div></div></div>