<html><head><meta http-equiv="Content-Type" content="text/html charset=koi8-r"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi again,</div><div><br></div><div>The client? Do you mean one of the ndn::Consumer* applications?  These classed don't themselves generate NACKs, they can trigger NACK generation if Interests cannot be forwarded anywhere.  Not sure what is the problem you are observing...</div><div><br></div><div>---</div><div>Alex</div><br><div><div>On Mar 9, 2013, at 5:47 PM, Natalya Rozhnova <<a href="mailto:natalya.rozhnova@lip6.fr">natalya.rozhnova@lip6.fr</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi Alex,</div><div> </div><div>Thanks! A little update: it seems like OK with faces (and so it was OK from the beginning), I found the error... it's really stupid, the Client generates NACKs himself when transmission queue is full...</div><div>Is it possible to fix it somehow?</div><div> </div><div>Thanks!</div><div>Natalya</div><div> </div><div>10.03.2013, 08:01, "Alex Afanasyev" <<a href="mailto:alexander.afanasyev@ucla.edu">alexander.afanasyev@ucla.edu</a>>:</div><blockquote type="cite"><div>Hi Natalya,</div><div> </div><div>Correct me if I'm wrong, but I think you should try another face when the base code cannot forward the Interest.  The base version or CanSendOutInterests returns false when the node is trying to send out on the face the node has received interest from (in this case you definitely want to try another, if available), or (if retransmission detection is enabled) the node already send out interest to this phase during the current "retransmission cycle".  In the latter case, it is also desirable to try another face to explore alternatives.</div><div> </div><div>Can you try to disable m_drop_cause logic and always try to send to the next face, if CanSendOutInterest returns false, and see what happens?</div><div> </div><div>---</div><div>Alex</div><br><div><div>On Mar 9, 2013, at 4:05 PM, Natalya Rozhnova <<a href="mailto:natalya.rozhnova@lip6.fr">natalya.rozhnova@lip6.fr</a>> wrote:</div><br><blockquote type="cite"><div>Hi Alex,</div><div> </div><div>In my code, I added a condition at the end of CanSendOutInterest. The m_drop_cause parameter is set to 1 if CanSendOutInterest passes through this condition and returns false (i.g. node can not send Interest to the given face because the transmission queue is full and in this case I want to change the face). m_drop_cause is set to 2 if CanSendOutInterest returns false because of any existing in base code condition (like, retransmissions etc), in this case I don't want to change the face and node should just behaves normally.</div><div>But I check this m_drop_cause parameter and it is equal to 1 but node doesn't try to find the next face (he enters to the condition if(m_drop_cause == 1) continue;   but then just exits, it seems like there are no more available faces).</div><div> </div><div>Oh, yes, I use i_metric.  The i_nth was just the last attempt to see if it can change anything.</div><div> </div><div>Thanks,</div><div>Natalya</div><div> </div><div> </div><div>10.03.2013, 06:16, "Alex Afanasyev" <<a href="mailto:alexander.afanasyev@ucla.edu">alexander.afanasyev@ucla.edu</a>>:</div><blockquote type="cite"><div>Hi Natalya,</div><div> </div><div>NACKs would be generated if DoPropagateInterest return false.  TrySendOutInterest method makes an attempt to send out interest over the face and in your code I see that attempt to try next face would be aborted if m_drop_cause is not equal to 1 (e.g., if it is 1, only one face should be tried in most of the cases).   Is this m_drop_cause a configuration parameter or something that is set for each attempt? </div><div> </div><div>Another side question.  Are you intentionally not using metric to rank faces (<span style="margin:0px;padding:0px;border:0px;color:#333333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:11.8182px;line-height:14.5455px;background-color:#ffffff;">fib</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold;color:#333333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:11.8182px;line-height:14.5455px;background-color:#ffffff;">::</span><span style="margin:0px;padding:0px;border:0px;color:#333333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:11.8182px;line-height:14.5455px;background-color:#ffffff;">i_nth</span> instead of <span style="margin:0px;padding:0px;border:0px;color:#333333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:11.8182px;line-height:14.5455px;background-color:#ffffff;">fib</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold;color:#333333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:11.8182px;line-height:14.5455px;background-color:#ffffff;">::</span><span style="margin:0px;padding:0px;border:0px;color:#333333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:11.8182px;line-height:14.5455px;background-color:#ffffff;">i_metric</span>)?</div><div> </div><div>---</div><div>Alex</div><br><div><div>On Mar 9, 2013, at 1:47 PM, Natalya Rozhnova <<a href="mailto:natalya.rozhnova@lip6.fr">natalya.rozhnova@lip6.fr</a>> wrote:</div><br><blockquote type="cite"><div>Hi Alex,</div><div> </div><div>I want to re-send an Interest to next available face if the current one is unavailable because of any special reason. I trace the second face and see that it receives rerouted Interests but sometimes I see that the node generates a NACK rather than resend the Interest to the next face (it even doesn't try to choose the next face and just exits from DoPropagateInterest function ). So, there is something wrong in my implementation or in manually generated FIB... Could you tell me please, do I use a correct way for changing faces?</div><div>I rewrite DoPropagateInterest function and choose the interface as follows:</div><div> </div><div>BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get<fib::i_nth> ())<br>      {<br>          if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry))<br>          {<br>              if(m_drop_cause == 1)<br>                 continue;             </div><div>              else break;<br>          }<br>      propagatedCount++;<br>      break;<br>   }<br>      return propagatedCount > 0;</div><div> </div><div>Is it correct and the problem should not come from this piece?</div><div> </div><div>Thanks,</div><div>Natalya</div>_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu">ndnSIM@lists.cs.ucla.edu</a><br><a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim</a></blockquote></div></blockquote>_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu">ndnSIM@lists.cs.ucla.edu</a><br><a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim</a></blockquote></div></blockquote>_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu">ndnSIM@lists.cs.ucla.edu</a><br>http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim<br></blockquote></div><br></body></html>