[ndnSIM] ndn::tlv::Error after 600 seconds - too many faces?
Christian Kreuzberger
christian.kreuzberger at itec.aau.at
Mon Nov 9 13:22:58 PST 2015
Hi all,
I have a rather large simulation where there are roughly 10000 nodes
(clients) connected to one intermediate router, which is then connected
to one server (it is not the most realistic scenario, I know).
Using ndnSIM 2.1 (commit ef77416d5227d6e9123f7c3aaab719793379c2d7), I am
getting an exception (ndn::tlv::Error) after roughly 600 seconds
(something between 599.9 and 600.0 seconds, so suspiciously close to 600
seconds). I've tried with different client start times, it always
crashes at 600 seconds (my application is set to run much much longer
than 600 seconds).
From debugging with gdb I saw that the Interest (or data packet) in
question has the following name: /localhost/nfd/faces/list
The backtrace (using gdb) looks like this (I've removed non-relevant
lines like event handling and exception throw handling):
#5 0x00007fffe8e06922 in __cxa_throw () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff23a7814 in
boost::throw_exception<boost::exception_detail::error_info_injector<ndn::tlv::Error>
> (e=...) at /usr/include/boost/throw_exception.hpp:67
#7 0x00007ffff23a6e21 in
boost::exception_detail::throw_exception_<ndn::tlv::Error> (x=...,
current_function=0x7ffff26e33f0 <ndn::Block::parse()
const::__PRETTY_FUNCTION__> "void ndn::Block::parse() const",
file=0x7ffff26e2990 "../src/ndnSIM/ndn-cxx/src/encoding/block.cpp",
line=340) at /usr/include/boost/throw_exception.hpp:84
#8 0x00007ffff23a9db1 in ndn::Block::parse (this=0x7fffffffc1e0) at
../src/ndnSIM/ndn-cxx/src/encoding/block.cpp:340
#9 0x00007ffff23f995c in ndn::nfd::FaceStatus::wireDecode
(this=0x7fffffffc170, block=...) at
../src/ndnSIM/ndn-cxx/src/management/nfd-face-status.cpp:121
#10 0x00007ffff23f9738 in ndn::nfd::FaceStatus::FaceStatus
(this=0x7fffffffc170, block=...) at
../src/ndnSIM/ndn-cxx/src/management/nfd-face-status.cpp:49
#11 0x00007ffff26059a8 in nfd::rib::RibManager::removeInvalidFaces
(this=0x5ad20018, buffer=...) at
../src/ndnSIM/NFD/rib/rib-manager.cpp:704
#12 0x00007ffff260557b in nfd::rib::RibManager::fetchSegments
(this=0x5ad20018, data=..., buffer=...) at
../src/ndnSIM/NFD/rib/rib-manager.cpp:679
#13 0x00007ffff2617f41 in boost::_mfi::mf2<void, nfd::rib::RibManager,
ndn::Data const&, std::shared_ptr<ndn::OBufferStream> >::operator()
(this=0xa021be20, p=0x5ad20018, a1=..., a2=...)
at /usr/include/boost/bind/mem_fn_template.hpp:280
#14 0x00007ffff2616040 in
boost::_bi::list3<boost::_bi::value<nfd::rib::RibManager*>,
boost::arg<2>, boost::_bi::value<std::shared_ptr<ndn::OBufferStream> >
>::operator()<boost::_mfi::mf2<void, nfd::rib::RibManager, ndn::Data const&, std::shared_ptr<ndn::OBufferStream> >, boost::_bi::list2<ndn::Interest const&, ndn::Data&> > (this=0xa021be30, f=..., a=...) at /usr/include/boost/bind/bind.hpp:392
#15 0x00007ffff2612c44 in boost::_bi::bind_t<void,
boost::_mfi::mf2<void, nfd::rib::RibManager, ndn::Data const&,
std::shared_ptr<ndn::OBufferStream> >,
boost::_bi::list3<boost::_bi::value<nfd::rib::RibManager*>,
boost::arg<2>, boost::_bi::value<std::shared_ptr<ndn::OBufferStream> > >
>::operator()<ndn::Interest, ndn::Data> (this=0xa021be20, a1=..., a2=...) at /usr/include/boost/bind/bind_template.hpp:76
#16 0x00007ffff260eeb2 in std::_Function_handler<void (ndn::Interest
const&, ndn::Data&), boost::_bi::bind_t<void, boost::_mfi::mf2<void,
nfd::rib::RibManager, ndn::Data const&,
std::shared_ptr<ndn::OBufferStream> >,
boost::_bi::list3<boost::_bi::value<nfd::rib::RibManager*>,
boost::arg<2>, boost::_bi::value<std::shared_ptr<ndn::OBufferStream> > >
> >::_M_invoke(std::_Any_data const&, ndn::Interest const&, ndn::Data&) (__functor=..., __args#0=..., __args#1=...)
at /usr/include/c++/4.8/functional:2071
#17 0x00007ffff23c0d63 in std::function<void (ndn::Interest const&,
ndn::Data&)>::operator()(ndn::Interest const&, ndn::Data&) const
(this=0x98f2a648, __args#0=..., __args#1=...) at
/usr/include/c++/4.8/functional:2471
#18 0x00007ffff23be299 in ndn::PendingInterest::invokeDataCallback
(this=0x98f2a638, data=...) at
../src/ndnSIM/ndn-cxx/src/detail/pending-interest.hpp:81
#19 0x00007ffff23bf41d in ndn::Face::Impl::satisfyPendingInterests
(this=0x5ad1ce20, data=...) at
../src/ndnSIM/ndn-cxx/src/detail/face-impl.hpp:140
#20 0x00007ffff23be88e in ndn::Face::Impl::NfdFace::sendData(ndn::Data
const&)::{lambda()#1}::operator()() const (__closure=0x81b20ed0) at
../src/ndnSIM/ndn-cxx/src/detail/face-impl.hpp:91
#21 0x00007ffff23c3ddc in std::_Function_handler<void (),
ndn::Face::Impl::NfdFace::sendData(ndn::Data
const&)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (__functor=...)
at /usr/include/c++/4.8/functional:2071
#22 0x00007ffff23c0e4a in std::function<void ()>::operator()() const
(this=0x9ada39c0) at /usr/include/c++/4.8/functional:2471
#23 0x00007ffff2514135 in ns3::EventImpl* ns3::MakeEvent<void
(std::function<void ()>::*)() const, std::function<void ()> >(void
(std::function<void ()>::*)() const, std::function<void
()>)::EventMemberImpl0::Notify() (this=0x9ada39b0)
at ./ns3/make-event.h:323
I haven't had much time to debug, but I am suspecting my unusually large
number of client nodes (10k) is too much for the RIB Manager (?) to
process. I'm also not sure what this RIB Manager is doing, because I
haven't explicitly activated it (at least I don't know about it). I did
find the source that seems to be causing the event after 600 seconds
though: NFD/rib/remote-registrator.cpp
I will try to provide scenario code to reproduce the problem tomorrow,
for now I'm just looking for some more pointers for debugging so I can
produce a better (more helpful) bug report (which I will then, as
always, submit to redmine).
Thanks
Christian
More information about the ndnSIM
mailing list