<div dir="ltr">Hi,<div><br></div><div> I performed some tests with UDP face, printing logs from the classes Packet, ndn.UdpFace and ndn.Face. What I found is that the tag <span style="white-space:pre-wrap">SocketAddressTag is not removed when the packet is received, and thus, when the tag is added again, the assertion fails.</span></div>


<div><span style="white-space:pre-wrap"> Any idea of what could be the problem? Who should be supposed to remove and add this tag again?</span></div><div><span style="white-space:pre-wrap"><br></span></div><div><span style="white-space:pre-wrap">Regards,</span></div>


<div><span style="white-space:pre-wrap"> Moreno</span></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-02-11 21:56 GMT+01:00 Moreno Ambrosin <span dir="ltr"><<a href="mailto:morambro@gmail.com" target="_blank">morambro@gmail.com</a>></span>:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Alex, <div><br></div><div> thank you for your reply. Here is a code example for a simple configuration. The idea is tho have nodes 0,1 and 2 connected to node 3 by a point-to-point link, node 4 connected to node 3 and node 5 linked to node 4. On this IP network, I would like to build an NDN overlay network, placing three consumers on nodes 0,1 and 2, a router on node 3, and a producer on node 5. </div>




<div><br></div><div><br></div><div>#### Example </div><div>           </div><div><br></div><div><div>#include "ns3/core-module.h"</div><div>#include "ns3/network-module.h"</div><div>#include "ns3/point-to-point-module.h"</div>




<div>#include "ns3/internet-module.h"</div><div>#include "ns3/ndnSIM-module.h"</div><div>#include <boost/lexical_cast.hpp></div><div><br></div><div>#include "ns3/ndn-l3-rate-tracer.h"</div>




<div><br></div><div>NS_LOG_COMPONENT_DEFINE ("ndn-ip-overlay");</div><div><br></div><div>using namespace ns3;</div><div><br></div><div>int main (int argc, char *argv[])</div><div>{</div><div>    Packet::EnablePrinting ();</div>




<div>    </div><div>    </div><div>     // setting default parameters for PointToPoint links and channels</div><div>    Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));</div>




<div>    Config::SetDefault ("ns3::PointToPointChannel::Delay", StringValue ("10ms"));</div><div>    Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));</div>




<div><br></div><div>    CommandLine cmd;</div><div>    cmd.Parse (argc, argv);</div><div>    </div><div>    NodeContainer routerNodes;</div><div>    routerNodes.Create(6);</div><div>    </div><div>    // Create Ipv4 classes in order to assign IPs in the topology</div>




<div><span style="white-space:pre-wrap">    </span>Ipv4AddressHelper ipv4_helper;<span style="white-space:pre-wrap">                       </span></div><div>    InternetStackHelper ipStack;</div><div>    ipStack.SetIpv6StackInstall (false);</div>




<div>    ipStack.InstallAll ();</div><div><span style="white-space:pre-wrap">       </span></div><div><span style="white-space:pre-wrap"> </span>Ipv4Address base_addr("10.1.1.0");</div><div><span style="white-space:pre-wrap">             </span></div>




<div><span style="white-space:pre-wrap">  </span>PointToPointHelper p2p;</div><div><span style="white-space:pre-wrap">  </span></div><div><span style="white-space:pre-wrap"> </span>ipv4_helper.SetBase(base_addr, Ipv4Mask ("/24"));</div>




<div><span style="white-space:pre-wrap">  </span>ipv4_helper.Assign(p2p.Install(routerNodes.Get(0), routerNodes.Get(3)));</div><div><span style="white-space:pre-wrap"> </span>base_addr = Ipv4Address (base_addr.Get () + 256);</div>




<div><span style="white-space:pre-wrap">  </span></div><div><span style="white-space:pre-wrap"> </span>ipv4_helper.SetBase(base_addr, Ipv4Mask ("/24"));</div><div><span style="white-space:pre-wrap">      </span>ipv4_helper.Assign(p2p.Install(routerNodes.Get(1), routerNodes.Get(3)));</div>




<div><span style="white-space:pre-wrap">  </span>base_addr = Ipv4Address (base_addr.Get () + 256);</div><div><span style="white-space:pre-wrap">        </span></div><div><span style="white-space:pre-wrap"> </span>ipv4_helper.SetBase(base_addr, Ipv4Mask ("/24"));</div>




<div><span style="white-space:pre-wrap">  </span>ipv4_helper.Assign(p2p.Install(routerNodes.Get(2), routerNodes.Get(3)));</div><div><span style="white-space:pre-wrap"> </span>base_addr = Ipv4Address (base_addr.Get () + 256);</div>




<div><span style="white-space:pre-wrap">  </span></div><div><span style="white-space:pre-wrap"> </span>ipv4_helper.SetBase(base_addr, Ipv4Mask ("/24"));</div><div><span style="white-space:pre-wrap">      </span>ipv4_helper.Assign(p2p.Install(routerNodes.Get(3), routerNodes.Get(4)));</div>




<div><span style="white-space:pre-wrap">  </span>base_addr = Ipv4Address (base_addr.Get () + 256);</div><div><span style="white-space:pre-wrap">        </span></div><div><span style="white-space:pre-wrap"> </span>ipv4_helper.SetBase(base_addr, Ipv4Mask ("/24"));</div>




<div><span style="white-space:pre-wrap">  </span>ipv4_helper.Assign(p2p.Install(routerNodes.Get(4), routerNodes.Get(5)));</div><div><span style="white-space:pre-wrap"> </span>base_addr = Ipv4Address (base_addr.Get () + 256);</div>




<div><br></div><div>    Ipv4GlobalRoutingHelper::PopulateRoutingTables ();</div><div><br></div><div>    // Install NDN stack on all nodes</div><div>    ndn::StackHelper ndnHelper;</div><div>    ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");</div>




<div>    ndnHelper.SetDefaultRoutes (false);</div><div>    </div><div>    ndnHelper.Install(routerNodes.Get(0));</div><div>    ndnHelper.Install(routerNodes.Get(1));</div><div>    ndnHelper.Install(routerNodes.Get(2));    </div>




<div>    ndnHelper.Install(routerNodes.Get(3));</div><div>    ndnHelper.Install(routerNodes.Get(5));    </div><div>        </div><div>    ndn::IpFacesHelper::Install(routerNodes.Get(0));</div><div>    ndn::IpFacesHelper::Install(routerNodes.Get(1));</div>




<div>    ndn::IpFacesHelper::Install(routerNodes.Get(2));</div><div>    ndn::IpFacesHelper::Install(routerNodes.Get(3));</div><div>    ndn::IpFacesHelper::Install(routerNodes.Get(5));</div><div><div>    </div><div>
    </div><div>

    ndn::IpFacesHelper::CreateUdpFace (</div><div>        Seconds (0.5), </div></div><div>        routerNodes.Get(3),</div><div>        routerNodes.Get(5)->GetObject<Ipv4>()->GetAddress(1,0).GetLocal(), </div>


<div>
        "/upd-route"</div><div>
<div>    );</div><div>    </div><div>    ndn::IpFacesHelper::CreateUdpFace (</div><div>        Seconds (0.5), </div><div>        routerNodes.Get(0),</div></div><div>        routerNodes.Get(3)->GetObject<Ipv4>()->GetAddress(1,0).GetLocal(), </div>




<div>        "/"</div><div><div>    );</div><div>    ndn::IpFacesHelper::CreateUdpFace (</div><div>        Seconds (0.5), </div></div><div>        routerNodes.Get(1),</div><div>        routerNodes.Get(3)->GetObject<Ipv4>()->GetAddress(1,0).GetLocal(), </div>




<div>        "/"</div><div><div>    );</div><div>    ndn::IpFacesHelper::CreateUdpFace (</div><div>        Seconds (0.5), </div></div><div>        routerNodes.Get(1),</div><div>        routerNodes.Get(3)->GetObject<Ipv4>()->GetAddress(1,0).GetLocal(), </div>




<div>        "/"</div><div>    );</div><div>    </div><div>    </div><div>    // Consumer</div><div>    ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");</div><div>    // Consumer will request /udp-route1/0, /udp-route1/1, ...</div>




<div>    consumerHelper.SetPrefix ("/upd-route");</div><div>    consumerHelper.SetAttribute ("Frequency", StringValue ("1")); // 1 interests a second</div><div>    consumerHelper.Install (routerNodes.Get (0)).Start (Seconds (3));</div>




<div>    consumerHelper.Install (routerNodes.Get (1)).Start (Seconds (3));</div><div>    consumerHelper.Install (routerNodes.Get (2)).Start (Seconds (3));</div><div><br></div><div>    </div><div>    // Producer</div><div>




    ndn::AppHelper producerHelper ("ns3::ndn::Producer");</div><div>    // Producer will reply to all requests starting with /prefix</div><div>    producerHelper.SetPrefix ("/upd-route");</div><div>    producerHelper.SetAttribute ("PayloadSize", StringValue("1024"));</div>




<div>    producerHelper.Install (routerNodes.Get(5)); // last node</div><div><br></div><div>    Simulator::Stop (Seconds (10));</div><div>        </div><div>    ndn::L3RateTracer::Install(routerNodes.Get(3),"node.log", Seconds (0.1));</div>




<div>        </div><div>    Simulator::Run ();</div><div>    Simulator::Destroy ();</div><div><br></div><div>    return 0;</div><div>}</div></div><div><br></div><div>############################</div><div><br></div><div>



<br>
</div><div>I tried this code and I still obtain the error:</div><div><div><br></div><div><div>assert failed. cond="cur->tid != tag.GetInstanceTypeId ()", file=../src/network/model/packet-tag-list.cc, line=250</div>




<div>terminate called without an active exception</div></div><div><br></div><div><br></div></div><div>Thank you in advance for your help!</div><div><br></div><div>Regards</div><div> Moreno</div><div class="gmail_extra"><br>



<br><div class="gmail_quote">2014-02-11 20:42 GMT+01:00 Alex Afanasyev <span dir="ltr"><<a href="mailto:alexander.afanasyev@ucla.edu" target="_blank">alexander.afanasyev@ucla.edu</a>></span>:<div><div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word">Hi Moreno,<div><br></div><div>Would you mind sharing a full working scenario that can reproduce the error?  Tcp and Udp faces are not comprehensively tested and there could be some bug in them, or there could be something wrong with the scenario too.</div>




<div><br></div><div>---</div><div>Alex</div><div><br><div><div><div><div>On Feb 11, 2014, at 9:55 AM, Moreno Ambrosin <<a href="mailto:morambro@gmail.com" target="_blank">morambro@gmail.com</a>> wrote:</div>
<br></div></div><blockquote type="cite"><div><div><div dir="ltr">Hi,<div><br></div><div> I'm new with ndnSIM; I'm trying to build a configuration with NDN as an overlay network. For this reason, I installed the Internet stack, all point-to-point links, and assigned an IPv4 address to all nodes. </div>






<div>Finally, following this example <a href="https://github.com/NDN-Routing/ndnSIM/blob/master/examples/ndn-simple-udp.cc" target="_blank">https://github.com/NDN-Routing/ndnSIM/blob/master/examples/ndn-simple-udp.cc</a>, I tried to configure the FIBs. What I want to achieve, is the following overlay configuration:</div>






<div><br></div><div><br></div><div>                              /some                          /some/content</div><div>       consumer 1 ------------------->  IP:X.X.X.X</div><div>       consumer 2 ------------------->    router 1    ---------------------------->  producer</div>






<div><div>       ...</div><div>       consumer n -------------------></div><div><br></div><div>I tried to setup the NDN forwarding in the following way:</div><div><br></div><div><br></div><div>    ndn::IpFacesHelper::Install(routerNodes.Get(0));</div>






<div>    ndn::IpFacesHelper::Install(routerNodes.Get(27));</div><div>    // Install IpFacesHelper on all consumers (saved inside a vector devices)</div><div>    for (int i=0;i<30;i++) </div><div>    {</div><div>         ndn::IpFacesHelper::Install(devices[0].Get(i));</div>






<div>    }</div><div>    </div><div>    ndn::IpFacesHelper::CreateUdpFace (</div><div>        Seconds (0.5), </div><div>        routerNodes.Get(0),</div><div>        routerNodes.Get(27)->GetObject<Ipv4>()->GetAddress(1,0).GetLocal(), </div>






<div>        "/some/upd-route"</div><div>    );</div><div>    </div><div>    for (int i=0;i<30;i++) {</div><div>        ndn::IpFacesHelper::CreateTcpFace (</div><div>            Seconds (0.5),</div><div>            devices[0].Get(i),</div>






<div>            routerNodes.Get(0)->GetObject<Ipv4>()->GetAddress(1,0).GetLocal(),</div><div>            "/some"</div><div>        );</div><div>    }</div><div><br></div><div>When I run my script making all devices to request a content (with ConsumerCbr application), I obtain the following run-time error:</div>






<div><br></div><div><div>assert failed. cond="cur->tid != tag.GetInstanceTypeId ()", file=../src/network/model/<a href="http://packet-tag-list.cc" target="_blank">packet-tag-list.cc</a>, line=250</div><div>terminate called without an active exception</div>




</div><div>

<br></div><div>What could be the problem?</div><div>Is there another way to setup the FIB based on IP correctly?</div><div><br></div><div>Regards</div><span><font color="#888888"> Moreno</font></span></div></div></div></div>






_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu" target="_blank">ndnSIM@lists.cs.ucla.edu</a><br><a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim" target="_blank">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim</a><br>




</blockquote></div><br></div></div></blockquote></div></div></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Moreno Ambrosin
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Moreno Ambrosin
</div></div>