From chengyu at cs.colostate.edu Fri Mar 1 13:05:12 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Fri, 1 Mar 2013 14:05:12 -0700 Subject: [ndnSIM] How to get the Interest information from each face? In-Reply-To: <98E311F2-0DBF-4AEF-914F-7F6554E7EC3C@ucla.edu> References: <98E311F2-0DBF-4AEF-914F-7F6554E7EC3C@ucla.edu> Message-ID: I read the page, but the tracer class only provides installAll medthod. It installs the tracer on every node, which is very slow. (It has more than 3k nodes) Can I just install the tracer on producers? Thanks, Chengyu On Thu, Feb 28, 2013 at 12:50 PM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > I think you overcomplicate things. Do you need this information in > runtime or just for later analysis? > > If for later analysis, ndnSIM has a couple of metric tracing helpers that > already collect this sort of information ( > http://ndnsim.net/metric.html#packet-level-trace-helpers). > Both ndn::L3AggregateTracer and ndn::L3RateTracer will give the > information you're interested in. > > Is it what you need or you need something more than just numbers? > > --- > Alex > > On Feb 27, 2013, at 4:56 PM, Chengyu Fan wrote: > > Hi~ > > Please forgive me if I missed something apparent. > > I want to collect the information of how many Interests and what Interests > arrive on a node from different faces. > Unfortunately, I did not find an example that shows how to collect those > data. > > I find a class ns3::ndn::NetDeviceFace that seems suit my requirements. > And I need to override RegisterProtocolHandler function. > Is it correct? > > Or is there a Tracer class can collect the data for me? > > Thanks, > Chengyu > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 1 13:16:35 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 1 Mar 2013 13:16:35 -0800 Subject: [ndnSIM] How to get the Interest information from each face? In-Reply-To: References: <98E311F2-0DBF-4AEF-914F-7F6554E7EC3C@ucla.edu> Message-ID: Hi Chengyu, A slow tracer installation speed is an artifact of the current way I have implemented the tracer. There is definitely a need to add a couple of other Install methods that would allow more granular installing. If you have time, you can convert the existing InstallAll method to Install(node,...) and the make a new variant of InstallAll to be wrapped on top of Install. I have a little bit overloaded at the moment to make it myself, but would be happy to integrate your patch/commit. There is another improvement that could be made inside Connect method. As it stands right now, there is absolutely no reason to use Config::Connect, which becomes a bottleneck in cases similar to yours. When I get time, I'll push a correction to optimize the process. --- Alex On Mar 1, 2013, at 1:05 PM, Chengyu Fan wrote: > I read the page, but the tracer class only provides installAll medthod. > It installs the tracer on every node, which is very slow. (It has more than 3k nodes) > Can I just install the tracer on producers? > > Thanks, > Chengyu > > On Thu, Feb 28, 2013 at 12:50 PM, Alex Afanasyev wrote: >> I think you overcomplicate things. Do you need this information in runtime or just for later analysis? >> >> If for later analysis, ndnSIM has a couple of metric tracing helpers that already collect this sort of information (http://ndnsim.net/metric.html#packet-level-trace-helpers). Both ndn::L3AggregateTracer and ndn::L3RateTracer will give the information you're interested in. >> >> Is it what you need or you need something more than just numbers? >> >> --- >> Alex >> >> On Feb 27, 2013, at 4:56 PM, Chengyu Fan wrote: >> >>> Hi~ >>> >>> Please forgive me if I missed something apparent. >>> >>> I want to collect the information of how many Interests and what Interests arrive on a node from different faces. >>> Unfortunately, I did not find an example that shows how to collect those data. >>> >>> I find a class ns3::ndn::NetDeviceFace that seems suit my requirements. And I need to override RegisterProtocolHandler function. >>> Is it correct? >>> >>> Or is there a Tracer class can collect the data for me? >>> >>> Thanks, >>> Chengyu >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Fri Mar 1 13:54:39 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Fri, 1 Mar 2013 14:54:39 -0700 Subject: [ndnSIM] How to get the Interest information from each face? In-Reply-To: References: <98E311F2-0DBF-4AEF-914F-7F6554E7EC3C@ucla.edu> Message-ID: Thanks, Alex. I'd like to have a try. On Fri, Mar 1, 2013 at 2:16 PM, Alex Afanasyev wrote: > Hi Chengyu, > > A slow tracer installation speed is an artifact of the current way I have > implemented the tracer. There is definitely a need to add a couple of > other Install methods that would allow more granular installing. > > If you have time, you can convert the existing InstallAll method to > Install(node,...) and the make a new variant of InstallAll to be wrapped on > top of Install. I have a little bit overloaded at the moment to make it > myself, but would be happy to integrate your patch/commit. > > There is another improvement that could be made inside Connect method. As > it stands right now, there is absolutely no reason to use Config::Connect, > which becomes a bottleneck in cases similar to yours. When I get time, > I'll push a correction to optimize the process. > > --- > Alex > > On Mar 1, 2013, at 1:05 PM, Chengyu Fan wrote: > > I read the page, but the tracer class only provides installAll medthod. > It installs the tracer on every node, which is very slow. (It has more > than 3k nodes) > Can I just install the tracer on producers? > > Thanks, > Chengyu > > On Thu, Feb 28, 2013 at 12:50 PM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > >> I think you overcomplicate things. Do you need this information in >> runtime or just for later analysis? >> >> If for later analysis, ndnSIM has a couple of metric tracing helpers that >> already collect this sort of information ( >> http://ndnsim.net/metric.html#packet-level-trace-helpers). >> Both ndn::L3AggregateTracer and ndn::L3RateTracer will give the >> information you're interested in. >> >> Is it what you need or you need something more than just numbers? >> >> --- >> Alex >> >> On Feb 27, 2013, at 4:56 PM, Chengyu Fan >> wrote: >> >> Hi~ >> >> Please forgive me if I missed something apparent. >> >> I want to collect the information of how many Interests and what >> Interests arrive on a node from different faces. >> Unfortunately, I did not find an example that shows how to collect those >> data. >> >> I find a class ns3::ndn::NetDeviceFace that seems suit my requirements. >> And I need to override RegisterProtocolHandler function. >> Is it correct? >> >> Or is there a Tracer class can collect the data for me? >> >> Thanks, >> Chengyu >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Mon Mar 4 00:49:07 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Mon, 4 Mar 2013 16:49:07 +0800 Subject: [ndnSIM] Callback unknown error In-Reply-To: References: <0E4D0559-AD64-4E81-A39E-24646516C074@gmail.com> <9FB46141-F9E4-465F-9B86-8000F28561A9@ucla.edu> <50E1948E-ABE1-4A7E-81C2-05A017223058@gmail.com> <7A201A13-A630-4959-8904-72173BF8E0CA@ucla.edu> <9E06855D-08FF-45D3-8A2E-E58951155536@gmail.com> <9E93107E-E3F9-46F9-8DCC-BFD8A7C7AA7A@ucla.edu> <99EF949A-5ECE-4A44-91CA-DC28B374B767@gmail.com> <2840EFEF-E993-4284-BB63-4CC5682460F7@ucla.edu> Message-ID: Hi Alex, Do you plan to merge feature-trace-value-for-fib-entry into master branch ? thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Feb 22, 2013, at 11:52 AM, Xiaoke Jiang wrote: > Hi Alex, > After my test, I think it works quit well! Thank you very much! > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Feb 22, 2013, at 11:15 AM, Alex Afanasyev wrote: > >> You should checkout a test that I wrote (tests/ndnSIM-fib-entry.cc), it has an example of how to connect to FIBs and how to "attach" extra information to the tracer. >> >> --- >> Alex >> >> On Feb 21, 2013, at 6:48 PM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> I have run a simple traced function for Status, >>> static void TraceStatus(fib::FaceMetric::Status old, fib::FaceMetric::Status now) { >>> NS_LOG_INFO("- Change Status from "<>> } >>> >>> but how can I connect to the fibs, I have variable called nodes and ccnxHelper. >>> ccnxHelper.InstallAll () to install ndn stack. >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Feb 22, 2013, at 10:22 AM, Alex Afanasyev wrote: >>> >>>> I have removed this variable. Should compile now without problem. >>>> >>>> --- >>>> Alex >>>> >>>> On Feb 21, 2013, at 6:19 PM, Xiaoke Jiang wrote: >>>> >>>>> Hi Alex, >>>>> I am trying to compile it on MacOS and Ubuntu. >>>>> >>>>> On Ubuntu, it compiles successfully, but on MacOS: I run ./waf clean then ./waf, it gives me error: >>>>> [1119/1916] cxx: src/ndnSIM/model/fw/green-yellow-red.cc -> build/src/ndnSIM/model/fw/green-yellow-red.cc.1.o >>>>> cc1plus: warnings being treated as errors >>>>> In file included from ../src/ndnSIM/examples/ndn-simple-with-cs-lfu.cc:27: >>>>> ./ns3/ndnSIM/utils/mem-usage.h: In static member function ?static int64_t MemUsage::Get()?: >>>>> ./ns3/ndnSIM/utils/mem-usage.h:69: warning: unused variable ?task? >>>>> Waf: Leaving directory `/Users/shock/ndnSIM/ns-3/build' >>>>> >>>>> >>>>> then I will trying to run my script and give you more feedback. >>>>> >>>>> thanks >>>>> >>>>> My Regards, >>>>> Xiaoke Jiang ????? >>>>> >>>>> Ph.D Candidate, >>>>> Dept. of Computer Science and Technology, >>>>> Tsinghua University, P. R. China >>>>> >>>>> On Feb 22, 2013, at 6:04 AM, Alex Afanasyev wrote: >>>>> >>>>>> Hi Xiaoke, >>>>>> >>>>>> I've done an implementation of this feature and pushed it to the experimental branch (feature-trace-value-for-fib-entry). >>>>>> >>>>>> Can you check it out? I also would appreciate if you can check that this change didn't break anything else (at least with your simulations). >>>>>> >>>>>> Thanks, >>>>>> Alex >>>>>> >>>>>> >>>>>> On Feb 21, 2013, at 1:11 AM, Xiaoke Jiang wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> Is it possible to make the Status of FibEntry (Line 105, ndn-fib-entry.h) a TracedCallback type. I think the status is quit important for research on Cache, routing, etc. >>>>>>> >>>>>>> I can get what I want by add NS_LOG, but the problem is after fetch and merge your code, my modification will lose. So is it possible for you to make that change since it 's also very important for future research. >>>>>>> >>>>>>> >>>>>>> thanks >>>>>>> >>>>>>> My Regards, >>>>>>> Xiaoke Jiang ????? >>>>>>> >>>>>>> Ph.D Candidate, >>>>>>> Dept. of Computer Science and Technology, >>>>>>> Tsinghua University, P. R. China >>>>>>> >>>>>>> On Feb 21, 2013, at 4:35 PM, Alex Afanasyev wrote: >>>>>>> >>>>>>>> In NS-3, Installing applications on a node is not the same as aggregating objects on a node (e.g., installing protocol stacks). As a result, your GetObject call will always return 0 and you get segfault. >>>>>>>> >>>>>>>> Instead, you should either call node->GetApplication(...) (not really good choice) or save installed apps in ApplicationContainer (Install returns it). There should be examples of that. >>>>>>>> >>>>>>>> --- >>>>>>>> Alex >>>>>>>> >>>>>>>> On Feb 21, 2013, at 12:27 AM, Xiaoke Jiang wrote: >>>>>>>> >>>>>>>>> Hi All, >>>>>>>>> I write my script to trace Producer processing Interest, >>>>>>>>> >>>>>>>>> xiaoke.cc: >>>>>>>>> >>>>>>>>> static void SinkIst(Ptr, Ptr, Ptr) >>>>>>>>> { >>>>>>>>> NS_LOG_INFO("< Respodning with ContentObject"); >>>>>>>>> } >>>>>>>>> >>>>>>>>> ? >>>>>>>>> >>>>>>>>> producerHelper.Install(node); >>>>>>>>> node->GetObject()->TraceConnectWithoutContext("ReceivedInterests", MakeCallback(&SinkIst)); >>>>>>>>> >>>>>>>>> It compiles successfully, but run failed and give me >>>>>>>>> "Command ['/Users/shock/ndnSIM/ns-3/build/shock/xiaoke'] terminated with signal SIGSEGV. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s ")." >>>>>>>>> >>>>>>>>> >>>>>>>>> Anyone can help? >>>>>>>>> >>>>>>>>> thanks >>>>>>>>> >>>>>>>>> My Regards, >>>>>>>>> Xiaoke Jiang ????? >>>>>>>>> >>>>>>>>> Ph.D Candidate, >>>>>>>>> Dept. of Computer Science and Technology, >>>>>>>>> Tsinghua University, P. R. China >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> ndnSIM mailing list >>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Mon Mar 4 02:06:18 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Mon, 04 Mar 2013 17:06:18 +0700 Subject: [ndnSIM] FIB entry Message-ID: <884251362391578@web13e.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 4 09:38:12 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 4 Mar 2013 09:38:12 -0800 Subject: [ndnSIM] FIB entry In-Reply-To: <884251362391578@web13e.yandex.ru> References: <884251362391578@web13e.yandex.ru> Message-ID: <2A2C2F4A-53C1-4B91-958C-C77182C7DD38@ucla.edu> Hi Natalya, When you're using AddRoute, you can use just a numeric face number, instead of a face object. This face number is based on device id on the Node, so you can just assume that first NetDevice on this Node will correspond to Face 0, next one to face number 1, etc. Would this work for you? -- Alex On Mar 4, 2013, at 2:06 AM, Natalya Rozhnova wrote: > Hi Alex, > > Could you tell me please how could I configure two or more faces per prefix in FIB entry? Should I use a manual route configuration? > I'm actually using the function AddRoute to manually configure FIB entries like ndn::StackHelper.AddRoute(node, prefix, face, metric). But I'm confused how to access to the face from ns3 script? > > Thanks, > Natalya From natalya.rozhnova at lip6.fr Mon Mar 4 09:58:35 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Tue, 05 Mar 2013 00:58:35 +0700 Subject: [ndnSIM] FIB entry In-Reply-To: <2A2C2F4A-53C1-4B91-958C-C77182C7DD38@ucla.edu> References: <884251362391578@web13e.yandex.ru> <2A2C2F4A-53C1-4B91-958C-C77182C7DD38@ucla.edu> Message-ID: <1316121362419915@web27e.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 4 10:08:34 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 4 Mar 2013 10:08:34 -0800 Subject: [ndnSIM] FIB entry In-Reply-To: <1316121362419915@web27e.yandex.ru> References: <884251362391578@web13e.yandex.ru> <2A2C2F4A-53C1-4B91-958C-C77182C7DD38@ucla.edu> <1316121362419915@web27e.yandex.ru> Message-ID: If you're using AnnotatedTopologyReader from the example (http://ndnsim.net/examples.html#node-2-bottleneck-topology-with-custom-forwarding-strategy), then there you can use yet another version of AddRoute: ndn::StackHelper::AddRoute ("src-node-name", "/prefix", "next-hop-node-name", metric); You can simply modify weights in the example scenario. --- Regarding GlobalRouting controller. The currently available method CalculateRoutes calculates only one route per destination. I have an extended (and highly experimental) version of it that implements a simple heuristic to calculate alternative routes, but you should be very cautious using this method (it can be very time consuming). --- Alex On Mar 4, 2013, at 9:58 AM, Natalya Rozhnova wrote: > Hi Alex, > > It was the first thing I tried to do... I'm a little bit confused with the face numeration. I'm trying the differents settings but the routes are not computed correctly. Probably it's my fault. I'd like to use something similar to the topology from your example here http://ndnsim.net/_images/aafig-64086469224a310d06aeda159c9fd70f5aebbe08.svg and use different metrics for shortest and longest paths at router 1. Does GlobalRouting allow compute this routes and their costs automatically? > > Thanks, > Natalya > > 05.03.2013, 00:38, "Alex Afanasyev" : > Hi Natalya, > > When you're using AddRoute, you can use just a numeric face number, instead of a face object. This face number is based on device id on the Node, so you can just assume that first NetDevice on this Node will correspond to Face 0, next one to face number 1, etc. > > Would this work for you? > > -- > Alex > > On Mar 4, 2013, at 2:06 AM, Natalya Rozhnova wrote: > > Hi Alex, > > Could you tell me please how could I configure two or more faces per prefix in FIB entry? Should I use a manual route configuration? > I'm actually using the function AddRoute to manually configure FIB entries like ndn::StackHelper.AddRoute(node, prefix, face, metric). But I'm confused how to access to the face from ns3 script? > > Thanks, > Natalya > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Mon Mar 4 10:33:27 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Tue, 05 Mar 2013 01:33:27 +0700 Subject: [ndnSIM] FIB entry In-Reply-To: References: <884251362391578@web13e.yandex.ru> <2A2C2F4A-53C1-4B91-958C-C77182C7DD38@ucla.edu> <1316121362419915@web27e.yandex.ru> Message-ID: <1337911362422007@web27e.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 4 10:40:55 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 4 Mar 2013 10:40:55 -0800 Subject: [ndnSIM] Callback unknown error In-Reply-To: References: <0E4D0559-AD64-4E81-A39E-24646516C074@gmail.com> <9FB46141-F9E4-465F-9B86-8000F28561A9@ucla.edu> <50E1948E-ABE1-4A7E-81C2-05A017223058@gmail.com> <7A201A13-A630-4959-8904-72173BF8E0CA@ucla.edu> <9E06855D-08FF-45D3-8A2E-E58951155536@gmail.com> <9E93107E-E3F9-46F9-8DCC-BFD8A7C7AA7A@ucla.edu> <99EF949A-5ECE-4A44-91CA-DC28B374B767@gmail.com> <2840EFEF-E993-4284-BB63-4CC5682460F7@ucla.edu> Message-ID: Hi Xiaoke, I just merged the branch. Let me know if you encounter any compilation or run-time errors. --- Alex ps I haven't included your latest commit, as the same issue was fixed recently in the master branch (https://github.com/NDN-Routing/ndnSIM/commit/82ad4d7218a36f3ec1d2dc40ec4a930d776d1fa4) On Mar 4, 2013, at 12:49 AM, Xiaoke Jiang wrote: > Hi Alex, > Do you plan to merge feature-trace-value-for-fib-entry into master branch ? > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Feb 22, 2013, at 11:52 AM, Xiaoke Jiang wrote: > >> Hi Alex, >> After my test, I think it works quit well! Thank you very much! >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Feb 22, 2013, at 11:15 AM, Alex Afanasyev wrote: >> >>> You should checkout a test that I wrote (tests/ndnSIM-fib-entry.cc), it has an example of how to connect to FIBs and how to "attach" extra information to the tracer. >>> >>> --- >>> Alex >>> >>> On Feb 21, 2013, at 6:48 PM, Xiaoke Jiang wrote: >>> >>>> Hi Alex, >>>> I have run a simple traced function for Status, >>>> static void TraceStatus(fib::FaceMetric::Status old, fib::FaceMetric::Status now) { >>>> NS_LOG_INFO("- Change Status from "<>>> } >>>> >>>> but how can I connect to the fibs, I have variable called nodes and ccnxHelper. >>>> ccnxHelper.InstallAll () to install ndn stack. >>>> >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Feb 22, 2013, at 10:22 AM, Alex Afanasyev wrote: >>>> >>>>> I have removed this variable. Should compile now without problem. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Feb 21, 2013, at 6:19 PM, Xiaoke Jiang wrote: >>>>> >>>>>> Hi Alex, >>>>>> I am trying to compile it on MacOS and Ubuntu. >>>>>> >>>>>> On Ubuntu, it compiles successfully, but on MacOS: I run ./waf clean then ./waf, it gives me error: >>>>>> [1119/1916] cxx: src/ndnSIM/model/fw/green-yellow-red.cc -> build/src/ndnSIM/model/fw/green-yellow-red.cc.1.o >>>>>> cc1plus: warnings being treated as errors >>>>>> In file included from ../src/ndnSIM/examples/ndn-simple-with-cs-lfu.cc:27: >>>>>> ./ns3/ndnSIM/utils/mem-usage.h: In static member function ?static int64_t MemUsage::Get()?: >>>>>> ./ns3/ndnSIM/utils/mem-usage.h:69: warning: unused variable ?task? >>>>>> Waf: Leaving directory `/Users/shock/ndnSIM/ns-3/build' >>>>>> >>>>>> >>>>>> then I will trying to run my script and give you more feedback. >>>>>> >>>>>> thanks >>>>>> >>>>>> My Regards, >>>>>> Xiaoke Jiang ????? >>>>>> >>>>>> Ph.D Candidate, >>>>>> Dept. of Computer Science and Technology, >>>>>> Tsinghua University, P. R. China >>>>>> >>>>>> On Feb 22, 2013, at 6:04 AM, Alex Afanasyev wrote: >>>>>> >>>>>>> Hi Xiaoke, >>>>>>> >>>>>>> I've done an implementation of this feature and pushed it to the experimental branch (feature-trace-value-for-fib-entry). >>>>>>> >>>>>>> Can you check it out? I also would appreciate if you can check that this change didn't break anything else (at least with your simulations). >>>>>>> >>>>>>> Thanks, >>>>>>> Alex >>>>>>> >>>>>>> >>>>>>> On Feb 21, 2013, at 1:11 AM, Xiaoke Jiang wrote: >>>>>>> >>>>>>>> Hi Alex, >>>>>>>> Is it possible to make the Status of FibEntry (Line 105, ndn-fib-entry.h) a TracedCallback type. I think the status is quit important for research on Cache, routing, etc. >>>>>>>> >>>>>>>> I can get what I want by add NS_LOG, but the problem is after fetch and merge your code, my modification will lose. So is it possible for you to make that change since it 's also very important for future research. >>>>>>>> >>>>>>>> >>>>>>>> thanks >>>>>>>> >>>>>>>> My Regards, >>>>>>>> Xiaoke Jiang ????? >>>>>>>> >>>>>>>> Ph.D Candidate, >>>>>>>> Dept. of Computer Science and Technology, >>>>>>>> Tsinghua University, P. R. China >>>>>>>> >>>>>>>> On Feb 21, 2013, at 4:35 PM, Alex Afanasyev wrote: >>>>>>>> >>>>>>>>> In NS-3, Installing applications on a node is not the same as aggregating objects on a node (e.g., installing protocol stacks). As a result, your GetObject call will always return 0 and you get segfault. >>>>>>>>> >>>>>>>>> Instead, you should either call node->GetApplication(...) (not really good choice) or save installed apps in ApplicationContainer (Install returns it). There should be examples of that. >>>>>>>>> >>>>>>>>> --- >>>>>>>>> Alex >>>>>>>>> >>>>>>>>> On Feb 21, 2013, at 12:27 AM, Xiaoke Jiang wrote: >>>>>>>>> >>>>>>>>>> Hi All, >>>>>>>>>> I write my script to trace Producer processing Interest, >>>>>>>>>> >>>>>>>>>> xiaoke.cc: >>>>>>>>>> >>>>>>>>>> static void SinkIst(Ptr, Ptr, Ptr) >>>>>>>>>> { >>>>>>>>>> NS_LOG_INFO("< Respodning with ContentObject"); >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> ? >>>>>>>>>> >>>>>>>>>> producerHelper.Install(node); >>>>>>>>>> node->GetObject()->TraceConnectWithoutContext("ReceivedInterests", MakeCallback(&SinkIst)); >>>>>>>>>> >>>>>>>>>> It compiles successfully, but run failed and give me >>>>>>>>>> "Command ['/Users/shock/ndnSIM/ns-3/build/shock/xiaoke'] terminated with signal SIGSEGV. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s ")." >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Anyone can help? >>>>>>>>>> >>>>>>>>>> thanks >>>>>>>>>> >>>>>>>>>> My Regards, >>>>>>>>>> Xiaoke Jiang ????? >>>>>>>>>> >>>>>>>>>> Ph.D Candidate, >>>>>>>>>> Dept. of Computer Science and Technology, >>>>>>>>>> Tsinghua University, P. R. China >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> ndnSIM mailing list >>>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 4 10:45:02 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 4 Mar 2013 10:45:02 -0800 Subject: [ndnSIM] FIB entry In-Reply-To: <1337911362422007@web27e.yandex.ru> References: <884251362391578@web13e.yandex.ru> <2A2C2F4A-53C1-4B91-958C-C77182C7DD38@ucla.edu> <1316121362419915@web27e.yandex.ru> <1337911362422007@web27e.yandex.ru> Message-ID: <9792E720-896A-468B-8A72-F468FF14D7D9@ucla.edu> Honestly, I don't know the answer to your question... You can try asking the same question to ns3 mailing list (https://groups.google.com/forum/?fromgroups#!forum/ns-3-users), they may have better understanding of PointToPointNetDevice behavior... --- Alex On Mar 4, 2013, at 10:33 AM, Natalya Rozhnova wrote: > Yeah, I think I found the correct face numbers :-) > Thanks! > I have another question please, just to ask you for a hint. Sometimes I have a situation when output queue is not empty but dequeue function returns 0 (because of scheduler), in this case if there is no incoming packets, PointToPointNetDevice thinks that this queue is empty and does not call dequeue function anymore(what is logical though). How could I make network device to call dequeue function in this situation? > > Natalya > > 05.03.2013, 01:08, "Alex Afanasyev" : > If you're using AnnotatedTopologyReader from the example (http://ndnsim.net/examples.html#node-2-bottleneck-topology-with-custom-forwarding-strategy), then there you can use yet another version of AddRoute: > > ndn::StackHelper::AddRoute ("src-node-name", "/prefix", "next-hop-node-name", metric); > > You can simply modify weights in the example scenario. > > --- > > Regarding GlobalRouting controller. The currently available method CalculateRoutes calculates only one route per destination. I have an extended (and highly experimental) version of it that implements a simple heuristic to calculate alternative routes, but you should be very cautious using this method (it can be very time consuming). > > --- > Alex > > On Mar 4, 2013, at 9:58 AM, Natalya Rozhnova wrote: > > Hi Alex, > > It was the first thing I tried to do... I'm a little bit confused with the face numeration. I'm trying the differents settings but the routes are not computed correctly. Probably it's my fault. I'd like to use something similar to the topology from your example here http://ndnsim.net/_images/aafig-64086469224a310d06aeda159c9fd70f5aebbe08.svg and use different metrics for shortest and longest paths at router 1. Does GlobalRouting allow compute this routes and their costs automatically? > > Thanks, > Natalya > > 05.03.2013, 00:38, "Alex Afanasyev" : > Hi Natalya, > > When you're using AddRoute, you can use just a numeric face number, instead of a face object. This face number is based on device id on the Node, so you can just assume that first NetDevice on this Node will correspond to Face 0, next one to face number 1, etc. > > Would this work for you? > > -- > Alex > > On Mar 4, 2013, at 2:06 AM, Natalya Rozhnova wrote: > > Hi Alex, > > Could you tell me please how could I configure two or more faces per prefix in FIB entry? Should I use a manual route configuration? > I'm actually using the function AddRoute to manually configure FIB entries like ndn::StackHelper.AddRoute(node, prefix, face, metric). But I'm confused how to access to the face from ns3 script? > > Thanks, > Natalya > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Mon Mar 4 17:52:54 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Tue, 5 Mar 2013 09:52:54 +0800 Subject: [ndnSIM] Callback unknown error In-Reply-To: References: <0E4D0559-AD64-4E81-A39E-24646516C074@gmail.com> <9FB46141-F9E4-465F-9B86-8000F28561A9@ucla.edu> <50E1948E-ABE1-4A7E-81C2-05A017223058@gmail.com> <7A201A13-A630-4959-8904-72173BF8E0CA@ucla.edu> <9E06855D-08FF-45D3-8A2E-E58951155536@gmail.com> <9E93107E-E3F9-46F9-8DCC-BFD8A7C7AA7A@ucla.edu> <99EF949A-5ECE-4A44-91CA-DC28B374B767@gmail.com> <2840EFEF-E993-4284-BB63-4CC5682460F7@ucla.edu> Message-ID: ../src/ndnSIM/helper/ndn-global-routing-helper.cc: In static member function ?static void ns3::ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes()?: ../src/ndnSIM/helper/ndn-global-routing-helper.cc:328:7: error: unused variable ?counter? [-Werror=unused-variable] cc1plus: all warnings being treated as errors It seems that in you local machine, compiler doesn't treat warning as error. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 5, 2013, at 2:40 AM, Alex Afanasyev wrote: > Hi Xiaoke, > > I just merged the branch. Let me know if you encounter any compilation or run-time errors. > > --- > Alex > > ps > I haven't included your latest commit, as the same issue was fixed recently in the master branch (https://github.com/NDN-Routing/ndnSIM/commit/82ad4d7218a36f3ec1d2dc40ec4a930d776d1fa4) > > > On Mar 4, 2013, at 12:49 AM, Xiaoke Jiang wrote: > >> Hi Alex, >> Do you plan to merge feature-trace-value-for-fib-entry into master branch ? >> >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Feb 22, 2013, at 11:52 AM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> After my test, I think it works quit well! Thank you very much! >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Feb 22, 2013, at 11:15 AM, Alex Afanasyev wrote: >>> >>>> You should checkout a test that I wrote (tests/ndnSIM-fib-entry.cc), it has an example of how to connect to FIBs and how to "attach" extra information to the tracer. >>>> >>>> --- >>>> Alex >>>> >>>> On Feb 21, 2013, at 6:48 PM, Xiaoke Jiang wrote: >>>> >>>>> Hi Alex, >>>>> I have run a simple traced function for Status, >>>>> static void TraceStatus(fib::FaceMetric::Status old, fib::FaceMetric::Status now) { >>>>> NS_LOG_INFO("- Change Status from "<>>>> } >>>>> >>>>> but how can I connect to the fibs, I have variable called nodes and ccnxHelper. >>>>> ccnxHelper.InstallAll () to install ndn stack. >>>>> >>>>> >>>>> thanks >>>>> >>>>> My Regards, >>>>> Xiaoke Jiang ????? >>>>> >>>>> Ph.D Candidate, >>>>> Dept. of Computer Science and Technology, >>>>> Tsinghua University, P. R. China >>>>> >>>>> On Feb 22, 2013, at 10:22 AM, Alex Afanasyev wrote: >>>>> >>>>>> I have removed this variable. Should compile now without problem. >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Feb 21, 2013, at 6:19 PM, Xiaoke Jiang wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> I am trying to compile it on MacOS and Ubuntu. >>>>>>> >>>>>>> On Ubuntu, it compiles successfully, but on MacOS: I run ./waf clean then ./waf, it gives me error: >>>>>>> [1119/1916] cxx: src/ndnSIM/model/fw/green-yellow-red.cc -> build/src/ndnSIM/model/fw/green-yellow-red.cc.1.o >>>>>>> cc1plus: warnings being treated as errors >>>>>>> In file included from ../src/ndnSIM/examples/ndn-simple-with-cs-lfu.cc:27: >>>>>>> ./ns3/ndnSIM/utils/mem-usage.h: In static member function ?static int64_t MemUsage::Get()?: >>>>>>> ./ns3/ndnSIM/utils/mem-usage.h:69: warning: unused variable ?task? >>>>>>> Waf: Leaving directory `/Users/shock/ndnSIM/ns-3/build' >>>>>>> >>>>>>> >>>>>>> then I will trying to run my script and give you more feedback. >>>>>>> >>>>>>> thanks >>>>>>> >>>>>>> My Regards, >>>>>>> Xiaoke Jiang ????? >>>>>>> >>>>>>> Ph.D Candidate, >>>>>>> Dept. of Computer Science and Technology, >>>>>>> Tsinghua University, P. R. China >>>>>>> >>>>>>> On Feb 22, 2013, at 6:04 AM, Alex Afanasyev wrote: >>>>>>> >>>>>>>> Hi Xiaoke, >>>>>>>> >>>>>>>> I've done an implementation of this feature and pushed it to the experimental branch (feature-trace-value-for-fib-entry). >>>>>>>> >>>>>>>> Can you check it out? I also would appreciate if you can check that this change didn't break anything else (at least with your simulations). >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Alex >>>>>>>> >>>>>>>> >>>>>>>> On Feb 21, 2013, at 1:11 AM, Xiaoke Jiang wrote: >>>>>>>> >>>>>>>>> Hi Alex, >>>>>>>>> Is it possible to make the Status of FibEntry (Line 105, ndn-fib-entry.h) a TracedCallback type. I think the status is quit important for research on Cache, routing, etc. >>>>>>>>> >>>>>>>>> I can get what I want by add NS_LOG, but the problem is after fetch and merge your code, my modification will lose. So is it possible for you to make that change since it 's also very important for future research. >>>>>>>>> >>>>>>>>> >>>>>>>>> thanks >>>>>>>>> >>>>>>>>> My Regards, >>>>>>>>> Xiaoke Jiang ????? >>>>>>>>> >>>>>>>>> Ph.D Candidate, >>>>>>>>> Dept. of Computer Science and Technology, >>>>>>>>> Tsinghua University, P. R. China >>>>>>>>> >>>>>>>>> On Feb 21, 2013, at 4:35 PM, Alex Afanasyev wrote: >>>>>>>>> >>>>>>>>>> In NS-3, Installing applications on a node is not the same as aggregating objects on a node (e.g., installing protocol stacks). As a result, your GetObject call will always return 0 and you get segfault. >>>>>>>>>> >>>>>>>>>> Instead, you should either call node->GetApplication(...) (not really good choice) or save installed apps in ApplicationContainer (Install returns it). There should be examples of that. >>>>>>>>>> >>>>>>>>>> --- >>>>>>>>>> Alex >>>>>>>>>> >>>>>>>>>> On Feb 21, 2013, at 12:27 AM, Xiaoke Jiang wrote: >>>>>>>>>> >>>>>>>>>>> Hi All, >>>>>>>>>>> I write my script to trace Producer processing Interest, >>>>>>>>>>> >>>>>>>>>>> xiaoke.cc: >>>>>>>>>>> >>>>>>>>>>> static void SinkIst(Ptr, Ptr, Ptr) >>>>>>>>>>> { >>>>>>>>>>> NS_LOG_INFO("< Respodning with ContentObject"); >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> ? >>>>>>>>>>> >>>>>>>>>>> producerHelper.Install(node); >>>>>>>>>>> node->GetObject()->TraceConnectWithoutContext("ReceivedInterests", MakeCallback(&SinkIst)); >>>>>>>>>>> >>>>>>>>>>> It compiles successfully, but run failed and give me >>>>>>>>>>> "Command ['/Users/shock/ndnSIM/ns-3/build/shock/xiaoke'] terminated with signal SIGSEGV. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s ")." >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Anyone can help? >>>>>>>>>>> >>>>>>>>>>> thanks >>>>>>>>>>> >>>>>>>>>>> My Regards, >>>>>>>>>>> Xiaoke Jiang ????? >>>>>>>>>>> >>>>>>>>>>> Ph.D Candidate, >>>>>>>>>>> Dept. of Computer Science and Technology, >>>>>>>>>>> Tsinghua University, P. R. China >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> ndnSIM mailing list >>>>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> ndnSIM mailing list >>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>> >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 4 17:55:20 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 4 Mar 2013 17:55:20 -0800 Subject: [ndnSIM] Callback unknown error In-Reply-To: References: <0E4D0559-AD64-4E81-A39E-24646516C074@gmail.com> <9FB46141-F9E4-465F-9B86-8000F28561A9@ucla.edu> <50E1948E-ABE1-4A7E-81C2-05A017223058@gmail.com> <7A201A13-A630-4959-8904-72173BF8E0CA@ucla.edu> <9E06855D-08FF-45D3-8A2E-E58951155536@gmail.com> <9E93107E-E3F9-46F9-8DCC-BFD8A7C7AA7A@ucla.edu> <99EF949A-5ECE-4A44-91CA-DC28B374B767@gmail.com> <2840EFEF-E993-4284-BB63-4CC5682460F7@ucla.edu> Message-ID: Thanks for catching it. I just pushed the fix. -- Alex On Mar 4, 2013, at 5:52 PM, Xiaoke Jiang wrote: > ../src/ndnSIM/helper/ndn-global-routing-helper.cc: In static member function ?static void ns3::ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes()?: > ../src/ndnSIM/helper/ndn-global-routing-helper.cc:328:7: error: unused variable ?counter? [-Werror=unused-variable] > cc1plus: all warnings being treated as errors > > It seems that in you local machine, compiler doesn't treat warning as error. > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Mar 5, 2013, at 2:40 AM, Alex Afanasyev wrote: > >> Hi Xiaoke, >> >> I just merged the branch. Let me know if you encounter any compilation or run-time errors. >> >> --- >> Alex >> >> ps >> I haven't included your latest commit, as the same issue was fixed recently in the master branch (https://github.com/NDN-Routing/ndnSIM/commit/82ad4d7218a36f3ec1d2dc40ec4a930d776d1fa4) >> >> >> On Mar 4, 2013, at 12:49 AM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> Do you plan to merge feature-trace-value-for-fib-entry into master branch ? >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Feb 22, 2013, at 11:52 AM, Xiaoke Jiang wrote: >>> >>>> Hi Alex, >>>> After my test, I think it works quit well! Thank you very much! >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Feb 22, 2013, at 11:15 AM, Alex Afanasyev wrote: >>>> >>>>> You should checkout a test that I wrote (tests/ndnSIM-fib-entry.cc), it has an example of how to connect to FIBs and how to "attach" extra information to the tracer. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Feb 21, 2013, at 6:48 PM, Xiaoke Jiang wrote: >>>>> >>>>>> Hi Alex, >>>>>> I have run a simple traced function for Status, >>>>>> static void TraceStatus(fib::FaceMetric::Status old, fib::FaceMetric::Status now) { >>>>>> NS_LOG_INFO("- Change Status from "<>>>>> } >>>>>> >>>>>> but how can I connect to the fibs, I have variable called nodes and ccnxHelper. >>>>>> ccnxHelper.InstallAll () to install ndn stack. >>>>>> >>>>>> >>>>>> thanks >>>>>> >>>>>> My Regards, >>>>>> Xiaoke Jiang ????? >>>>>> >>>>>> Ph.D Candidate, >>>>>> Dept. of Computer Science and Technology, >>>>>> Tsinghua University, P. R. China >>>>>> >>>>>> On Feb 22, 2013, at 10:22 AM, Alex Afanasyev wrote: >>>>>> >>>>>>> I have removed this variable. Should compile now without problem. >>>>>>> >>>>>>> --- >>>>>>> Alex >>>>>>> >>>>>>> On Feb 21, 2013, at 6:19 PM, Xiaoke Jiang wrote: >>>>>>> >>>>>>>> Hi Alex, >>>>>>>> I am trying to compile it on MacOS and Ubuntu. >>>>>>>> >>>>>>>> On Ubuntu, it compiles successfully, but on MacOS: I run ./waf clean then ./waf, it gives me error: >>>>>>>> [1119/1916] cxx: src/ndnSIM/model/fw/green-yellow-red.cc -> build/src/ndnSIM/model/fw/green-yellow-red.cc.1.o >>>>>>>> cc1plus: warnings being treated as errors >>>>>>>> In file included from ../src/ndnSIM/examples/ndn-simple-with-cs-lfu.cc:27: >>>>>>>> ./ns3/ndnSIM/utils/mem-usage.h: In static member function ?static int64_t MemUsage::Get()?: >>>>>>>> ./ns3/ndnSIM/utils/mem-usage.h:69: warning: unused variable ?task? >>>>>>>> Waf: Leaving directory `/Users/shock/ndnSIM/ns-3/build' >>>>>>>> >>>>>>>> >>>>>>>> then I will trying to run my script and give you more feedback. >>>>>>>> >>>>>>>> thanks >>>>>>>> >>>>>>>> My Regards, >>>>>>>> Xiaoke Jiang ????? >>>>>>>> >>>>>>>> Ph.D Candidate, >>>>>>>> Dept. of Computer Science and Technology, >>>>>>>> Tsinghua University, P. R. China >>>>>>>> >>>>>>>> On Feb 22, 2013, at 6:04 AM, Alex Afanasyev wrote: >>>>>>>> >>>>>>>>> Hi Xiaoke, >>>>>>>>> >>>>>>>>> I've done an implementation of this feature and pushed it to the experimental branch (feature-trace-value-for-fib-entry). >>>>>>>>> >>>>>>>>> Can you check it out? I also would appreciate if you can check that this change didn't break anything else (at least with your simulations). >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Alex >>>>>>>>> >>>>>>>>> >>>>>>>>> On Feb 21, 2013, at 1:11 AM, Xiaoke Jiang wrote: >>>>>>>>> >>>>>>>>>> Hi Alex, >>>>>>>>>> Is it possible to make the Status of FibEntry (Line 105, ndn-fib-entry.h) a TracedCallback type. I think the status is quit important for research on Cache, routing, etc. >>>>>>>>>> >>>>>>>>>> I can get what I want by add NS_LOG, but the problem is after fetch and merge your code, my modification will lose. So is it possible for you to make that change since it 's also very important for future research. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> thanks >>>>>>>>>> >>>>>>>>>> My Regards, >>>>>>>>>> Xiaoke Jiang ????? >>>>>>>>>> >>>>>>>>>> Ph.D Candidate, >>>>>>>>>> Dept. of Computer Science and Technology, >>>>>>>>>> Tsinghua University, P. R. China >>>>>>>>>> >>>>>>>>>> On Feb 21, 2013, at 4:35 PM, Alex Afanasyev wrote: >>>>>>>>>> >>>>>>>>>>> In NS-3, Installing applications on a node is not the same as aggregating objects on a node (e.g., installing protocol stacks). As a result, your GetObject call will always return 0 and you get segfault. >>>>>>>>>>> >>>>>>>>>>> Instead, you should either call node->GetApplication(...) (not really good choice) or save installed apps in ApplicationContainer (Install returns it). There should be examples of that. >>>>>>>>>>> >>>>>>>>>>> --- >>>>>>>>>>> Alex >>>>>>>>>>> >>>>>>>>>>> On Feb 21, 2013, at 12:27 AM, Xiaoke Jiang wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi All, >>>>>>>>>>>> I write my script to trace Producer processing Interest, >>>>>>>>>>>> >>>>>>>>>>>> xiaoke.cc: >>>>>>>>>>>> >>>>>>>>>>>> static void SinkIst(Ptr, Ptr, Ptr) >>>>>>>>>>>> { >>>>>>>>>>>> NS_LOG_INFO("< Respodning with ContentObject"); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> ? >>>>>>>>>>>> >>>>>>>>>>>> producerHelper.Install(node); >>>>>>>>>>>> node->GetObject()->TraceConnectWithoutContext("ReceivedInterests", MakeCallback(&SinkIst)); >>>>>>>>>>>> >>>>>>>>>>>> It compiles successfully, but run failed and give me >>>>>>>>>>>> "Command ['/Users/shock/ndnSIM/ns-3/build/shock/xiaoke'] terminated with signal SIGSEGV. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s ")." >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Anyone can help? >>>>>>>>>>>> >>>>>>>>>>>> thanks >>>>>>>>>>>> >>>>>>>>>>>> My Regards, >>>>>>>>>>>> Xiaoke Jiang ????? >>>>>>>>>>>> >>>>>>>>>>>> Ph.D Candidate, >>>>>>>>>>>> Dept. of Computer Science and Technology, >>>>>>>>>>>> Tsinghua University, P. R. China >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> ndnSIM mailing list >>>>>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> ndnSIM mailing list >>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Tue Mar 5 07:41:18 2013 From: aaronishere at qq.com (aaronishere) Date: Tue, 5 Mar 2013 23:41:18 +0800 Subject: [ndnSIM] question for topology Message-ID: <201303052341169487723@qq.com> Hi, Alex The topology in the example is a little simple, is there more complex topology available? And I found that in the ../plugins/topology there's rocketfuel-map/weights, how to use it? Thanks ! Aaron - -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Tue Mar 5 09:47:14 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Tue, 5 Mar 2013 10:47:14 -0700 Subject: [ndnSIM] question for topology In-Reply-To: <201303052341169487723@qq.com> References: <201303052341169487723@qq.com> Message-ID: You can find an example in the src directory: *src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc* Thanks, Chengyu On Tue, Mar 5, 2013 at 8:41 AM, aaronishere wrote: > ** > Hi, Alex > > The topology in the example is a little simple, is there more complex > topology available? And I found that in the ../plugins/topology there's > rocketfuel-map/weights, how to use it? Thanks ! > > ------------------------------ > Aaron - > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 5 17:06:41 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 5 Mar 2013 17:06:41 -0800 Subject: [ndnSIM] question for topology In-Reply-To: References: <201303052341169487723@qq.com> Message-ID: Hi all, You can also checkout the repository that I just created http://github.com/cawka/ndnSIM-sample-topologies, which can be used as a base for topology generation using rocketfuel-maps-cch-to-annotaded tool. I also put a sample for converted topologies (with graphviz-generated topology visualizations) here: https://github.com/cawka/ndnSIM-sample-topologies/tree/master/topologies/bw-delay-rand-1 But you need to double check if the parameters used in the rocketfuel-maps-cch-to-annotaded tool are good for your simulations. --- Alex On Mar 5, 2013, at 9:47 AM, Chengyu Fan wrote: > You can find an example in the src directory: > > src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc > > Thanks, > Chengyu > > On Tue, Mar 5, 2013 at 8:41 AM, aaronishere wrote: > Hi, Alex > > The topology in the example is a little simple, is there more complex topology available? And I found that in the ../plugins/topology there's rocketfuel-map/weights, how to use it? Thanks ! > > Aaron - > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Tue Mar 5 18:36:20 2013 From: aaronishere at qq.com (aaronishere) Date: Wed, 6 Mar 2013 10:36:20 +0800 Subject: [ndnSIM] question for topology References: <201303052341169487723@qq.com> , Message-ID: <201303061036191795502@qq.com> Hi, Alex and Chengyu I download the ndnSIM-sample-topologies under the ..ns3/src but when ./waf configue, it showed like below: Traceback (most recent call last): File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 97, in waf_entry_point run_commands() File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 146, in run_commands parse_options() File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 125, in parse_options Context.create_context('options').execute() File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Options.py", line 133, in execute super(OptionsContext,self).execute() File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 87, in execute self.recurse([os.path.dirname(g_module.root_path)]) File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 128, in recurse user_function(self) File "/home/ndnSIM/ns-3/wscript", line 218, in options opt.sub_options('src') File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 128, in recurse user_function(self) File "/home/ndnSIM/ns-3/src/wscript", line 51, in options opt.sub_options(module, mandatory=False) File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 128, in recurse user_function(self) File "/home/ndnSIM/ns-3/src/ndnSIM-sample-topologies/wscript", line 26, in options opt.load("compiler_c compiler_cxx boost ns3") File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 81, in load module=load_tool(t,path) File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/extras/compat15.py", line 77, in load_tool ret=eld(*k,**kw) File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 296, in load_tool __import__(d) ImportError: No module named ns3 I'm new in ns3 and is there some guidelines for how to use this topology? Thanks a lot ! Aaron From: Alex Afanasyev Date: 2013-03-06 09:06 To: Chengyu Fan CC: aaronishere; ndnsim Subject: Re: [ndnSIM] question for topology Hi all, You can also checkout the repository that I just created http://github.com/cawka/ndnSIM-sample-topologies, which can be used as a base for topology generation using rocketfuel-maps-cch-to-annotaded tool. I also put a sample for converted topologies (with graphviz-generated topology visualizations) here: https://github.com/cawka/ndnSIM-sample-topologies/tree/master/topologies/bw-delay-rand-1 But you need to double check if the parameters used in the rocketfuel-maps-cch-to-annotaded tool are good for your simulations. --- Alex On Mar 5, 2013, at 9:47 AM, Chengyu Fan wrote: You can find an example in the src directory: src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc Thanks, Chengyu On Tue, Mar 5, 2013 at 8:41 AM, aaronishere wrote: Hi, Alex The topology in the example is a little simple, is there more complex topology available? And I found that in the ../plugins/topology there's rocketfuel-map/weights, how to use it? Thanks ! Aaron - _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 5 18:59:54 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 5 Mar 2013 18:59:54 -0800 Subject: [ndnSIM] question for topology In-Reply-To: <201303061036191795502@qq.com> References: <201303052341169487723@qq.com> , <201303061036191795502@qq.com> Message-ID: <8FECEB70-8D73-4BB3-8242-C8081206C020@ucla.edu> Hi Aaron, Sorry, you are not the first one who gets confused with my template. I hope a corrected README file is more clear. In any case, you need to clone ndnSIM-sample-topologies into a separate location, not related to ns-3. Let's say you start from scratch, then you can do the following: mkdir ns-dev cd ns-dev git clone git://github.com/cawka/ns-3-dev-ndnSIM.git -b ns-3.16-ndnSIM ns-3 git clone git://github.com/NDN-Routing/ndnSIM.git -b v0.2.6 ns-3/src/ndnSIM git clone git://github.com/cawka/ndnSIM-sample-topologies.git ndnSIM-sample-topologies cd ns-3 ./waf configure ./waf install cd ../ndnSIM-sample-topologies (there are some tricks to compile ndnSIM-sample-topologies, but README talks about them) As for the usage, you can create your scenario similar to http://ndnsim.net/examples.html#node-grid-example-using-topology-plugin, but instead of topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-grid-3x3.txt"); write something like topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); // you also need to adjust other parts of the scenario (or you can just copy .txt files to your preferred location) Btw. This template can be used for all your custom simulations. Just put any scenario that you're working on in scenarios/ folder and all of them will be automatically compiled when you do ./waf and you can run. --- Alex On Mar 5, 2013, at 6:36 PM, aaronishere wrote: > Hi, Alex and Chengyu > I download the ndnSIM-sample-topologies under the ..ns3/src but when ./waf configue, it showed like below: > Traceback (most recent call last): > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 97, in waf_entry_point > run_commands() > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 146, in run_commands > parse_options() > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Scripting.py", line 125, in parse_options > Context.create_context('options').execute() > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Options.py", line 133, in execute > super(OptionsContext,self).execute() > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 87, in execute > self.recurse([os.path.dirname(g_module.root_path)]) > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 128, in recurse > user_function(self) > File "/home/ndnSIM/ns-3/wscript", line 218, in options > opt.sub_options('src') > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 128, in recurse > user_function(self) > File "/home/ndnSIM/ns-3/src/wscript", line 51, in options > opt.sub_options(module, mandatory=False) > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 128, in recurse > user_function(self) > File "/home/ndnSIM/ns-3/src/ndnSIM-sample-topologies/wscript", line 26, in options > opt.load("compiler_c compiler_cxx boost ns3") > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 81, in load > module=load_tool(t,path) > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/extras/compat15.py", line 77, in load_tool > ret=eld(*k,**kw) > File "/home/ndnSIM/ns-3/.waf-1.6.11-30618c54883417962c38f5d395f83584/waflib/Context.py", line 296, in load_tool > __import__(d) > ImportError: No module named ns3 > > I'm new in ns3 and is there some guidelines for how to use this topology? > > Thanks a lot ! > > Aaron > > From: Alex Afanasyev > Date: 2013-03-06 09:06 > To: Chengyu Fan > CC: aaronishere; ndnsim > Subject: Re: [ndnSIM] question for topology > Hi all, > > You can also checkout the repository that I just created http://github.com/cawka/ndnSIM-sample-topologies, which can be used as a base for topology generation using rocketfuel-maps-cch-to-annotaded tool. > > I also put a sample for converted topologies (with graphviz-generated topology visualizations) here: https://github.com/cawka/ndnSIM-sample-topologies/tree/master/topologies/bw-delay-rand-1 But you need to double check if the parameters used in the rocketfuel-maps-cch-to-annotaded tool are good for your simulations. > > --- > Alex > > On Mar 5, 2013, at 9:47 AM, Chengyu Fan wrote: > >> You can find an example in the src directory: >> >> src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc >> >> Thanks, >> Chengyu >> >> On Tue, Mar 5, 2013 at 8:41 AM, aaronishere wrote: >> Hi, Alex >> >> The topology in the example is a little simple, is there more complex topology available? And I found that in the ../plugins/topology there's rocketfuel-map/weights, how to use it? Thanks ! >> >> Aaron - >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Tue Mar 5 23:05:54 2013 From: aaronishere at qq.com (aaronishere) Date: Wed, 6 Mar 2013 15:05:54 +0800 Subject: [ndnSIM] question for topology References: <201303052341169487723@qq.com> , <201303061036191795502@qq.com>, <8FECEB70-8D73-4BB3-8242-C8081206C020@ucla.edu> Message-ID: <201303061505516541135@qq.com> Hi, Alex when I typed ./waf configure or PKG_CONFIG_PATH=/home/ndnSIM/lib/pkgconfig ./waf configure it showed like below: gconfig ./waf configure Setting top to : /home/ndnSIM-3-6/ndnSIM-sample-topologies Setting out to : /home/ndnSIM-3-6/ndnSIM-sample-topologies/build Checking for 'g++' (c++ compiler) : /usr/bin/g++ Checking boost includes : 1_50 Checking boost libs : ok Checking for boost linkage : ok Checking for program pkg-config : /usr/bin/pkg-config Checking for pkg-config version >= '0.0.0' : yes Checking for ns3-ndnSIM : not found NS-3 or one of the required NS-3 modules not found NS-3 needs to be compiled and installed somewhere. You may need also to set PKG_CONFIG_PATH variable in order for configure find installed NS-3. For example: PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ./waf configure (complete log in /home/ndnSIM-3-6/ndnSIM-sample-topologies/build/config.log) it seems that NS-3 is not found and the log in the build is like below: .... .... .... ------------------------------------------ Checking for ns3-ndnSIM ['/usr/bin/pkg-config', '--cflags', '--libs', 'libns3-dev-ndnSIM-optimized'] err: Package libns3-dev-ndnSIM-optimized was not found in the pkg-config search path. Perhaps you should add the directory containing `libns3-dev-ndnSIM-optimized.pc' to the PKG_CONFIG_PATH environment variable No package 'libns3-dev-ndnSIM-optimized' found not found from /home/ndnSIM/ndnSIM-sample-topologies: The configuration failed from /home/ndnSIM/ndnSIM-sample-topologies: aaron From: Alex Afanasyev Date: 2013-03-06 10:59 To: aaronishere CC: ndnsim Subject: Re: [ndnSIM] question for topology Hi Aaron, Sorry, you are not the first one who gets confused with my template. I hope a corrected README file is more clear. In any case, you need to clone ndnSIM-sample-topologies into a separate location, not related to ns-3. Let's say you start from scratch, then you can do the following: mkdir ns-dev cd ns-dev git clone git://github.com/cawka/ns-3-dev-ndnSIM.git -b ns-3.16-ndnSIM ns-3 git clone git://github.com/NDN-Routing/ndnSIM.git -b v0.2.6 ns-3/src/ndnSIM git clone git://github.com/cawka/ndnSIM-sample-topologies.git ndnSIM-sample-topologies cd ns-3 ./waf configure ./waf install cd ../ndnSIM-sample-topologies (there are some tricks to compile ndnSIM-sample-topologies, but README talks about them) As for the usage, you can create your scenario similar to http://ndnsim.net/examples.html#node-grid-example-using-topology-plugin, but instead of topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-grid-3x3.txt"); write something like topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); // you also need to adjust other parts of the scenario (or you can just copy .txt files to your preferred location) Btw. This template can be used for all your custom simulations. Just put any scenario that you're working on in scenarios/ folder and all of them will be automatically compiled when you do ./waf and you can run. --- Alex -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 5 23:31:23 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 5 Mar 2013 23:31:23 -0800 Subject: [ndnSIM] question for topology In-Reply-To: <201303061505516541135@qq.com> References: <201303052341169487723@qq.com> , <201303061036191795502@qq.com>, <8FECEB70-8D73-4BB3-8242-C8081206C020@ucla.edu> <201303061505516541135@qq.com> Message-ID: <8841BEC7-447D-4A1B-8A0A-E7490501C09E@ucla.edu> Where did you install NS-3 ? in /usr/local/? Do you have /usr/local/include/ns3-dev folder? -- Alex On Mar 5, 2013, at 11:05 PM, aaronishere wrote: > Hi, Alex > when I typed ./waf configure or PKG_CONFIG_PATH=/home/ndnSIM/lib/pkgconfig ./waf configure > it showed like below: > gconfig ./waf configure > Setting top to : /home/ndnSIM-3-6/ndnSIM-sample-topologies > Setting out to : /home/ndnSIM-3-6/ndnSIM-sample-topologies/build > Checking for 'g++' (c++ compiler) : /usr/bin/g++ > Checking boost includes : 1_50 > Checking boost libs : ok > Checking for boost linkage : ok > Checking for program pkg-config : /usr/bin/pkg-config > Checking for pkg-config version >= '0.0.0' : yes > Checking for ns3-ndnSIM : not found > NS-3 or one of the required NS-3 modules not found > NS-3 needs to be compiled and installed somewhere. You may need also to set PKG_CONFIG_PATH variable in order for configure find installed NS-3. > For example: > PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ./waf configure > > (complete log in /home/ndnSIM-3-6/ndnSIM-sample-topologies/build/config.log) > > it seems that NS-3 is not found and the log in the build is like below: > .... > .... > .... > ------------------------------------------ > Checking for ns3-ndnSIM > ['/usr/bin/pkg-config', '--cflags', '--libs', 'libns3-dev-ndnSIM-optimized'] > err: Package libns3-dev-ndnSIM-optimized was not found in the pkg-config search path. > Perhaps you should add the directory containing `libns3-dev-ndnSIM-optimized.pc' > to the PKG_CONFIG_PATH environment variable > No package 'libns3-dev-ndnSIM-optimized' found > > not found > from /home/ndnSIM/ndnSIM-sample-topologies: The configuration failed > from /home/ndnSIM/ndnSIM-sample-topologies: > > > > aaron > > From: Alex Afanasyev > Date: 2013-03-06 10:59 > To: aaronishere > CC: ndnsim > Subject: Re: [ndnSIM] question for topology > Hi Aaron, > > Sorry, you are not the first one who gets confused with my template. I hope a corrected README file is more clear. > > In any case, you need to clone ndnSIM-sample-topologies into a separate location, not related to ns-3. Let's say you start from scratch, then you can do the following: > > mkdir ns-dev > cd ns-dev > > git clone git://github.com/cawka/ns-3-dev-ndnSIM.git -b ns-3.16-ndnSIM ns-3 > git clone git://github.com/NDN-Routing/ndnSIM.git -b v0.2.6 ns-3/src/ndnSIM > > git clone git://github.com/cawka/ndnSIM-sample-topologies.git ndnSIM-sample-topologies > > cd ns-3 > ./waf configure > ./waf install > > cd ../ndnSIM-sample-topologies > (there are some tricks to compile ndnSIM-sample-topologies, but README talks about them) > > > As for the usage, you can create your scenario similar to http://ndnsim.net/examples.html#node-grid-example-using-topology-plugin, but instead of > topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-grid-3x3.txt"); > write something like > topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); // you also need to adjust other parts of the scenario > > (or you can just copy .txt files to your preferred location) > > Btw. This template can be used for all your custom simulations. Just put any scenario that you're working on in scenarios/ folder and all of them will be automatically compiled when you do ./waf and you can run. > > --- > Alex > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Tue Mar 5 23:37:36 2013 From: aaronishere at qq.com (aaronishere) Date: Wed, 6 Mar 2013 15:37:36 +0800 Subject: [ndnSIM] =?gb2312?b?u9i4tDogUmU6ICBxdWVzdGlvbiBmb3IgdG9wb2xvZ3k=?= References: <201303052341169487723@qq.com> , <201303061036191795502@qq.com>, <8FECEB70-8D73-4BB3-8242-C8081206C020@ucla.edu> <201303061505516541135@qq.com>, <8841BEC7-447D-4A1B-8A0A-E7490501C09E@ucla.edu> Message-ID: <201303061537207024876@qq.com> Under /home/ndnSIM/ and no /usr/local/include/ns3-dev folder aaron ???? Alex Afanasyev ????? 2013-03-06 15:31 ???? aaronishere ??? ndnsim ??? Re: [ndnSIM] question for topology Where did you install NS-3 ? in /usr/local/? Do you have /usr/local/include/ns3-dev folder? -- Alex On Mar 5, 2013, at 11:05 PM, aaronishere wrote: Hi, Alex when I typed ./waf configure or PKG_CONFIG_PATH=/home/ndnSIM/lib/pkgconfig ./waf configure it showed like below: gconfig ./waf configure Setting top to : /home/ndnSIM-3-6/ndnSIM-sample-topologies Setting out to : /home/ndnSIM-3-6/ndnSIM-sample-topologies/build Checking for 'g++' (c++ compiler) : /usr/bin/g++ Checking boost includes : 1_50 Checking boost libs : ok Checking for boost linkage : ok Checking for program pkg-config : /usr/bin/pkg-config Checking for pkg-config version >= '0.0.0' : yes Checking for ns3-ndnSIM : not found NS-3 or one of the required NS-3 modules not found NS-3 needs to be compiled and installed somewhere. You may need also to set PKG_CONFIG_PATH variable in order for configure find installed NS-3. For example: PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ./waf configure (complete log in /home/ndnSIM-3-6/ndnSIM-sample-topologies/build/config.log) it seems that NS-3 is not found and the log in the build is like below: .... .... .... ------------------------------------------ Checking for ns3-ndnSIM ['/usr/bin/pkg-config', '--cflags', '--libs', 'libns3-dev-ndnSIM-optimized'] err: Package libns3-dev-ndnSIM-optimized was not found in the pkg-config search path. Perhaps you should add the directory containing `libns3-dev-ndnSIM-optimized.pc' to the PKG_CONFIG_PATH environment variable No package 'libns3-dev-ndnSIM-optimized' found not found from /home/ndnSIM/ndnSIM-sample-topologies: The configuration failed from /home/ndnSIM/ndnSIM-sample-topologies: aaron From: Alex Afanasyev Date: 2013-03-06 10:59 To: aaronishere CC: ndnsim Subject: Re: [ndnSIM] question for topology Hi Aaron, Sorry, you are not the first one who gets confused with my template. I hope a corrected README file is more clear. In any case, you need to clone ndnSIM-sample-topologies into a separate location, not related to ns-3. Let's say you start from scratch, then you can do the following: mkdir ns-dev cd ns-dev git clone git://github.com/cawka/ns-3-dev-ndnSIM.git -b ns-3.16-ndnSIM ns-3 git clone git://github.com/NDN-Routing/ndnSIM.git -b v0.2.6 ns-3/src/ndnSIM git clone git://github.com/cawka/ndnSIM-sample-topologies.git ndnSIM-sample-topologies cd ns-3 ../waf configure ../waf install cd ../ndnSIM-sample-topologies (there are some tricks to compile ndnSIM-sample-topologies, but README talks about them) As for the usage, you can create your scenario similar to http://ndnsim.net/examples.html#node-grid-example-using-topology-plugin, but instead of topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-grid-3x3.txt"); write something like topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); // you also need to adjust other parts of the scenario (or you can just copy .txt files to your preferred location) Btw. This template can be used for all your custom simulations. Just put any scenario that you're working on in scenarios/ folder and all of them will be automatically compiled when you do ./waf and you can run. --- Alex _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 5 23:47:56 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 5 Mar 2013 23:47:56 -0800 Subject: [ndnSIM] =?utf-8?b?5Zue5aSNOiBSZTogIHF1ZXN0aW9uIGZvciB0b3BvbG9n?= =?utf-8?q?y?= In-Reply-To: <201303061537207024876@qq.com> References: <201303052341169487723@qq.com> , <201303061036191795502@qq.com>, <8FECEB70-8D73-4BB3-8242-C8081206C020@ucla.edu> <201303061505516541135@qq.com>, <8841BEC7-447D-4A1B-8A0A-E7490501C09E@ucla.edu> <201303061537207024876@qq.com> Message-ID: <9A86301A-BEA7-420D-BFA5-2777EC0DC607@ucla.edu> (is there a compilation with installing to /usr/local?) Just to double check. When you configured NS-3, did you just typed ./waf configure --prefix=/home/ndnSIM ? --- Alex On Mar 5, 2013, at 11:37 PM, aaronishere wrote: > Under /home/ndnSIM/ and no /usr/local/include/ns3-dev folder > > aaron > > ???? Alex Afanasyev > ????? 2013-03-06 15:31 > ???? aaronishere > ??? ndnsim > ??? Re: [ndnSIM] question for topology > Where did you install NS-3 ? in /usr/local/? Do you have /usr/local/include/ns3-dev folder? > > -- > Alex > > On Mar 5, 2013, at 11:05 PM, aaronishere wrote: > >> Hi, Alex >> when I typed ./waf configure or PKG_CONFIG_PATH=/home/ndnSIM/lib/pkgconfig ./waf configure >> it showed like below: >> gconfig ./waf configure >> Setting top to : /home/ndnSIM-3-6/ndnSIM-sample-topologies >> Setting out to : /home/ndnSIM-3-6/ndnSIM-sample-topologies/build >> Checking for 'g++' (c++ compiler) : /usr/bin/g++ >> Checking boost includes : 1_50 >> Checking boost libs : ok >> Checking for boost linkage : ok >> Checking for program pkg-config : /usr/bin/pkg-config >> Checking for pkg-config version >= '0.0.0' : yes >> Checking for ns3-ndnSIM : not found >> NS-3 or one of the required NS-3 modules not found >> NS-3 needs to be compiled and installed somewhere. You may need also to set PKG_CONFIG_PATH variable in order for configure find installed NS-3. >> For example: >> PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ./waf configure >> >> (complete log in /home/ndnSIM-3-6/ndnSIM-sample-topologies/build/config.log) >> >> it seems that NS-3 is not found and the log in the build is like below: >> .... >> .... >> .... >> ------------------------------------------ >> Checking for ns3-ndnSIM >> ['/usr/bin/pkg-config', '--cflags', '--libs', 'libns3-dev-ndnSIM-optimized'] >> err: Package libns3-dev-ndnSIM-optimized was not found in the pkg-config search path. >> Perhaps you should add the directory containing `libns3-dev-ndnSIM-optimized.pc' >> to the PKG_CONFIG_PATH environment variable >> No package 'libns3-dev-ndnSIM-optimized' found >> >> not found >> from /home/ndnSIM/ndnSIM-sample-topologies: The configuration failed >> from /home/ndnSIM/ndnSIM-sample-topologies: >> >> >> >> aaron >> >> From: Alex Afanasyev >> Date: 2013-03-06 10:59 >> To: aaronishere >> CC: ndnsim >> Subject: Re: [ndnSIM] question for topology >> Hi Aaron, >> >> Sorry, you are not the first one who gets confused with my template. I hope a corrected README file is more clear. >> >> In any case, you need to clone ndnSIM-sample-topologies into a separate location, not related to ns-3. Let's say you start from scratch, then you can do the following: >> >> mkdir ns-dev >> cd ns-dev >> >> git clone git://github.com/cawka/ns-3-dev-ndnSIM.git -b ns-3.16-ndnSIM ns-3 >> git clone git://github.com/NDN-Routing/ndnSIM.git -b v0.2.6 ns-3/src/ndnSIM >> >> git clone git://github.com/cawka/ndnSIM-sample-topologies.git ndnSIM-sample-topologies >> >> cd ns-3 >> ../waf configure >> ../waf install >> >> cd ../ndnSIM-sample-topologies >> (there are some tricks to compile ndnSIM-sample-topologies, but README talks about them) >> >> >> As for the usage, you can create your scenario similar to http://ndnsim.net/examples.html#node-grid-example-using-topology-plugin, but instead of >> topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-grid-3x3.txt"); >> write something like >> topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); // you also need to adjust other parts of the scenario >> >> (or you can just copy .txt files to your preferred location) >> >> Btw. This template can be used for all your custom simulations. Just put any scenario that you're working on in scenarios/ folder and all of them will be automatically compiled when you do ./waf and you can run. >> >> --- >> Alex >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Wed Mar 6 04:41:42 2013 From: huyao0107 at gmail.com (yao hu) Date: Wed, 6 Mar 2013 21:41:42 +0900 Subject: [ndnSIM] question about PyViz visualizer when installing Message-ID: Dear all, Hello, everybody. I am new to ndnsim. I have a question about PyViz visualizer. Could you help me? I am a fedora16 user and now installing ndnsim according to the instruction on the HP http://ndnsim.net/getting-started.html#downloading-ndnsim-source. There is no problem when I `configure` without python bindings using the following command ./waf configure --disable-python --enable-examples However, when I `configure` using the following command in order to run simulations with visualizer ./waf configure --enable-examples The PyViz visualizer line will be shown as follows PyViz visualizer : not enabled (Missing python modules: pygraphviz) It seems that the pygraphviz was not installed, but actually it has been already installed. Package graphviz-python-2.28.0-11.fc16.i686 already installed and latest version Does anybody know what is the cause of this? Thanks in advance! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Wed Mar 6 15:54:59 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Wed, 6 Mar 2013 16:54:59 -0700 Subject: [ndnSIM] How to disable the CS cache? Message-ID: Hi I want to do a experiment with no CS cache. For example, set the freshness as 0, so the routers would not cache this content. However, when I check the code, I found that setting the Freshness to 0 means unlimited freshness: producerHelper.SetAttribute ("Freshness", TimeValue (Seconds (0))); // unlimited freshness So is there a way to let routers not cache the content? Another question: does anyone know how many Attributes we can set? And what kind of format? Can we add new attributes? Thanks, Chengyu -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 6 16:05:11 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 6 Mar 2013 16:05:11 -0800 Subject: [ndnSIM] How to disable the CS cache? In-Reply-To: References: Message-ID: <6564ABEF-B08C-431F-865F-044FCE985D2B@ucla.edu> Freshness would work only if you're using a CS version that honors content freshness (http://ndnsim.net/cs.html#content-stores-respecting-freshness-field-of-contentobjects) If you want completely disable caching (not per specific packet), then you can set ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1"); 1 is the minimum value that you can set currently. Would it be sufficient? If not, it is possible to implement a non-caching "content store". Let me know. -- Alex On Mar 6, 2013, at 3:54 PM, Chengyu Fan wrote: > Hi > > I want to do a experiment with no CS cache. For example, set the freshness as 0, so the routers would not cache this content. > However, when I check the code, I found that setting the Freshness to 0 means unlimited freshness: > > producerHelper.SetAttribute ("Freshness", TimeValue (Seconds (0))); // unlimited freshness > > So is there a way to let routers not cache the content? > > Another question: does anyone know how many Attributes we can set? And what kind of format? Can we add new attributes? > > Thanks, > Chengyu > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Wed Mar 6 16:48:30 2013 From: aaronishere at qq.com (aaronishere) Date: Thu, 7 Mar 2013 08:48:30 +0800 Subject: [ndnSIM] question for topology Message-ID: <201303070848298592435@qq.com> Hi, Alex Sorry to bother you again I'm still not clear about how to use the topology I copied the ndn-grid-topo-plugin under the file .../ndnSIM-sample-topologies/scenario and changed it like below : int main (int argc, char *argv[]) { ...... RocketfuelWeightsReader topologyReader ("", 25); topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); topologyReader.Read (); ...... // Getting containers for the consumer/producer Ptr producer = Names::Find ("bb-781"); NodeContainer consumerNodes; consumerNodes.Add (Names::Find ("leaf-4349")); ...... } but typed LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis , it showed Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 terminate called without an active exception Thanks a lot! Aaron -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 6 16:53:54 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 6 Mar 2013 16:53:54 -0800 Subject: [ndnSIM] question for topology In-Reply-To: <201303070848298592435@qq.com> References: <201303070848298592435@qq.com> Message-ID: <14F930C0-5EA7-47FA-8A16-F2525665F7A3@ucla.edu> NS-3's python bindings (e.g., visualizer) are not very user friendly and require quite a bit magic. The simplest way, just before running scenario, cd /home/ndnSIM/ ./waf shell cd /home/ndnSIM/ndnSIM-sample-topologies ./waf --run ndn-grid-topo-plugin --vis (or with LD_LIBRARY_PATH, but I don't think it's necessary) If it still not working, check again what ./waf configure in /home/ndnSIM/ndnSIM-sample-topologies is telling. Does it complain about visualizer or it shows "yes"? --- Alex On Mar 6, 2013, at 4:48 PM, aaronishere wrote: > Hi, Alex > Sorry to bother you again > I'm still not clear about how to use the topology > I copied the ndn-grid-topo-plugin under the file .../ndnSIM-sample-topologies/scenario and changed it like below : > > int > main (int argc, char *argv[]) > { > ...... > RocketfuelWeightsReader topologyReader ("", 25); > topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); > topologyReader.Read (); > ...... > // Getting containers for the consumer/producer > Ptr producer = Names::Find ("bb-781"); > NodeContainer consumerNodes; > consumerNodes.Add (Names::Find ("leaf-4349")); > ...... > } > > but typed LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis , it showed > > Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' > Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' > 'build' finished successfully (0.024s) > assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 > terminate called without an active exception > > Thanks a lot! > > Aaron > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Wed Mar 6 17:05:48 2013 From: aaronishere at qq.com (aaronishere) Date: Thu, 7 Mar 2013 09:05:48 +0800 Subject: [ndnSIM] =?gb2312?b?u9i4tDogUmU6ICBxdWVzdGlvbiBmb3IgdG9wb2xvZ3k=?= References: <201303070848298592435@qq.com>, <14F930C0-5EA7-47FA-8A16-F2525665F7A3@ucla.edu> Message-ID: <201303070905474901977@qq.com> Hi, Alex root at ubuntu:/home/ndnSIM/ns-3# ./waf shell Waf: Entering directory `/home/ndnSIM/ns-3/build' Waf: Leaving directory `/home/ndnSIM/ns-3/build' root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf configure --debug Setting top to : /home/ndnSIM/ndnSIM-sample-topologies Setting out to : /home/ndnSIM/ndnSIM-sample-topologies/build Checking for 'g++' (c++ compiler) : /usr/bin/g++ Checking boost includes : 1_50 Checking boost libs : ok Checking for boost linkage : ok Checking for program pkg-config : /usr/bin/pkg-config Checking for pkg-config version >= '0.0.0' : yes Checking for ns3-ndnSIM : yes Checking for ns3-core : yes Checking for ns3-network : yes Checking for ns3-internet : yes Checking for ns3-point-to-point : yes Checking for ns3-topology-read : yes Checking for ns3-applications : yes Checking for ns3-mobility : yes Checking for ns3-visualizer : yes 'configure' finished successfully (1.079s) root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.022s) assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 terminate called without an active exception Aaron ???? Alex Afanasyev ????? 2013-03-07 08:53 ???? aaronishere ??? ndnsim ??? Re: [ndnSIM] question for topology NS-3's python bindings (e.g., visualizer) are not very user friendly and require quite a bit magic. The simplest way, just before running scenario, cd /home/ndnSIM/ ./waf shell cd /home/ndnSIM/ndnSIM-sample-topologies ./waf --run ndn-grid-topo-plugin --vis (or with LD_LIBRARY_PATH, but I don't think it's necessary) If it still not working, check again what ./waf configure in /home/ndnSIM/ndnSIM-sample-topologies is telling. Does it complain about visualizer or it shows "yes"? --- Alex On Mar 6, 2013, at 4:48 PM, aaronishere wrote: Hi, Alex Sorry to bother you again I'm still not clear about how to use the topology I copied the ndn-grid-topo-plugin under the file ..../ndnSIM-sample-topologies/scenario and changed it like below : int main (int argc, char *argv[]) { ...... RocketfuelWeightsReader topologyReader ("", 25); topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); topologyReader.Read (); ...... // Getting containers for the consumer/producer Ptr producer = Names::Find ("bb-781"); NodeContainer consumerNodes; consumerNodes.Add (Names::Find ("leaf-4349")); ...... } but typed LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis , it showed Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 terminate called without an active exception Thanks a lot! Aaron _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 6 17:27:09 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 6 Mar 2013 17:27:09 -0800 Subject: [ndnSIM] =?utf-8?b?5Zue5aSNOiBSZTogIHF1ZXN0aW9uIGZvciB0b3BvbG9n?= =?utf-8?q?y?= In-Reply-To: <201303070905474901977@qq.com> References: <201303070848298592435@qq.com>, <14F930C0-5EA7-47FA-8A16-F2525665F7A3@ucla.edu> <201303070905474901977@qq.com> Message-ID: Hmm... I suspect it is an old feature/bug with linking on Linux. You can try to fetch & merge with the latest update I pushed to ndnSIM-sample-topologies repo and check if it solves to the problem (https://github.com/cawka/ndnSIM-sample-topologies/commit/93b67c03051072264af90a0357b5b9fe8be6e47b). --- Alex On Mar 6, 2013, at 5:05 PM, aaronishere wrote: > Hi, Alex > > root at ubuntu:/home/ndnSIM/ns-3# ./waf shell > Waf: Entering directory `/home/ndnSIM/ns-3/build' > Waf: Leaving directory `/home/ndnSIM/ns-3/build' > > root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf configure --debug > Setting top to : /home/ndnSIM/ndnSIM-sample-topologies > Setting out to : /home/ndnSIM/ndnSIM-sample-topologies/build > Checking for 'g++' (c++ compiler) : /usr/bin/g++ > Checking boost includes : 1_50 > Checking boost libs : ok > Checking for boost linkage : ok > Checking for program pkg-config : /usr/bin/pkg-config > Checking for pkg-config version >= '0.0.0' : yes > Checking for ns3-ndnSIM : yes > Checking for ns3-core : yes > Checking for ns3-network : yes > Checking for ns3-internet : yes > Checking for ns3-point-to-point : yes > Checking for ns3-topology-read : yes > Checking for ns3-applications : yes > Checking for ns3-mobility : yes > Checking for ns3-visualizer : yes > 'configure' finished successfully (1.079s) > root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis > Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' > Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' > 'build' finished successfully (0.022s) > assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 > terminate called without an active exception > > > > > Aaron > > ???? Alex Afanasyev > ????? 2013-03-07 08:53 > ???? aaronishere > ??? ndnsim > ??? Re: [ndnSIM] question for topology > NS-3's python bindings (e.g., visualizer) are not very user friendly and require quite a bit magic. > > The simplest way, just before running scenario, > > cd /home/ndnSIM/ > ./waf shell > cd /home/ndnSIM/ndnSIM-sample-topologies > ./waf --run ndn-grid-topo-plugin --vis > > (or with LD_LIBRARY_PATH, but I don't think it's necessary) > > If it still not working, check again what ./waf configure in /home/ndnSIM/ndnSIM-sample-topologies is telling. Does it complain about visualizer or it shows "yes"? > > --- > Alex > > On Mar 6, 2013, at 4:48 PM, aaronishere wrote: > >> Hi, Alex >> Sorry to bother you again >> I'm still not clear about how to use the topology >> I copied the ndn-grid-topo-plugin under the file ..../ndnSIM-sample-topologies/scenario and changed it like below : >> >> int >> main (int argc, char *argv[]) >> { >> ...... >> RocketfuelWeightsReader topologyReader ("", 25); >> topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); >> topologyReader.Read (); >> ...... >> // Getting containers for the consumer/producer >> Ptr producer = Names::Find ("bb-781"); >> NodeContainer consumerNodes; >> consumerNodes.Add (Names::Find ("leaf-4349")); >> ...... >> } >> >> but typed LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis , it showed >> >> Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >> Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >> 'build' finished successfully (0.024s) >> assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 >> terminate called without an active exception >> >> Thanks a lot! >> >> Aaron >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Wed Mar 6 19:00:51 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Wed, 6 Mar 2013 20:00:51 -0700 Subject: [ndnSIM] How to disable the CS cache? In-Reply-To: <6564ABEF-B08C-431F-865F-044FCE985D2B@ucla.edu> References: <6564ABEF-B08C-431F-865F-044FCE985D2B@ucla.edu> Message-ID: On Wed, Mar 6, 2013 at 5:05 PM, Alex Afanasyev wrote: > Freshness would work only if you're using a CS version that honors content > freshness ( > http://ndnsim.net/cs.html#content-stores-respecting-freshness-field-of-contentobjects > ) > > If you want completely disable caching (not per specific packet), then you > can set > > ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1"); > > > 1 is the minimum value that you can set currently. Would it be > sufficient? If not, it is possible to implement a non-caching "content > store". Let me know. > For now, I can generate the required result without setting the content freshness. But I may need it someday. Could you please tell me which file implements the caching behavior? Thanks, Chengyu > > -- > Alex > > On Mar 6, 2013, at 3:54 PM, Chengyu Fan wrote: > > Hi > > I want to do a experiment with no CS cache. For example, set the freshness > as 0, so the routers would not cache this content. > However, when I check the code, I found that setting the Freshness to 0 > means unlimited freshness: > > producerHelper.SetAttribute ("Freshness", TimeValue (Seconds (0))); // > unlimited freshness > > So is there a way to let routers not cache the content? > > Another question: does anyone know how many Attributes we can set? And > what kind of format? Can we add new attributes? > > Thanks, > Chengyu > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 6 20:36:32 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 6 Mar 2013 20:36:32 -0800 Subject: [ndnSIM] How to disable the CS cache? In-Reply-To: References: <6564ABEF-B08C-431F-865F-044FCE985D2B@ucla.edu> Message-ID: <47C99045-EE72-41E9-93D6-8A17C691FC61@ucla.edu> I this case, I would recommend using ns3::ndn::cs::Freshness::* content store implementations. You can see details how freshness is handled in https://github.com/NDN-Routing/ndnSIM/blob/master/model/cs/custom-policies/freshness-policy.h The currently implemented way treats Freshness=0s as an unset value, but you can easily modify this behavior. --- Alex On Mar 6, 2013, at 7:00 PM, Chengyu Fan wrote: > > > On Wed, Mar 6, 2013 at 5:05 PM, Alex Afanasyev wrote: > Freshness would work only if you're using a CS version that honors content freshness (http://ndnsim.net/cs.html#content-stores-respecting-freshness-field-of-contentobjects) > > If you want completely disable caching (not per specific packet), then you can set > ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1"); > > 1 is the minimum value that you can set currently. Would it be sufficient? If not, it is possible to implement a non-caching "content store". Let me know. > > For now, I can generate the required result without setting the content freshness. > But I may need it someday. Could you please tell me which file implements the caching behavior? > > Thanks, > Chengyu > > > -- > Alex > > On Mar 6, 2013, at 3:54 PM, Chengyu Fan wrote: > >> Hi >> >> I want to do a experiment with no CS cache. For example, set the freshness as 0, so the routers would not cache this content. >> However, when I check the code, I found that setting the Freshness to 0 means unlimited freshness: >> >> producerHelper.SetAttribute ("Freshness", TimeValue (Seconds (0))); // unlimited freshness >> >> So is there a way to let routers not cache the content? >> >> Another question: does anyone know how many Attributes we can set? And what kind of format? Can we add new attributes? >> >> Thanks, >> Chengyu >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Wed Mar 6 21:30:03 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Wed, 6 Mar 2013 22:30:03 -0700 Subject: [ndnSIM] How to disable the CS cache? In-Reply-To: <47C99045-EE72-41E9-93D6-8A17C691FC61@ucla.edu> References: <6564ABEF-B08C-431F-865F-044FCE985D2B@ucla.edu> <47C99045-EE72-41E9-93D6-8A17C691FC61@ucla.edu> Message-ID: Thanks, Alex. On Wed, Mar 6, 2013 at 9:36 PM, Alex Afanasyev wrote: > I this case, I would recommend using ns3::ndn::cs::Freshness::* content > store implementations. You can see details how freshness is handled in > https://github.com/NDN-Routing/ndnSIM/blob/master/model/cs/custom-policies/freshness-policy.h > > > The currently implemented way treats Freshness=0s as an unset value, but > you can easily modify this behavior. > > --- > Alex > > On Mar 6, 2013, at 7:00 PM, Chengyu Fan wrote: > > > > On Wed, Mar 6, 2013 at 5:05 PM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > >> Freshness would work only if you're using a CS version that honors >> content freshness ( >> http://ndnsim.net/cs.html#content-stores-respecting-freshness-field-of-contentobjects >> ) >> >> If you want completely disable caching (not per specific packet), then >> you can set >> >> ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1"); >> >> >> 1 is the minimum value that you can set currently. Would it be >> sufficient? If not, it is possible to implement a non-caching "content >> store". Let me know. >> > > For now, I can generate the required result without setting the content > freshness. > But I may need it someday. Could you please tell me which file implements > the caching behavior? > > Thanks, > Chengyu > > >> >> -- >> Alex >> >> On Mar 6, 2013, at 3:54 PM, Chengyu Fan wrote: >> >> Hi >> >> I want to do a experiment with no CS cache. For example, set the >> freshness as 0, so the routers would not cache this content. >> However, when I check the code, I found that setting the Freshness to 0 >> means unlimited freshness: >> >> producerHelper.SetAttribute ("Freshness", TimeValue (Seconds (0))); // >> unlimited freshness >> >> So is there a way to let routers not cache the content? >> >> Another question: does anyone know how many Attributes we can set? And >> what kind of format? Can we add new attributes? >> >> Thanks, >> Chengyu >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Wed Mar 6 22:02:43 2013 From: aaronishere at qq.com (aaronishere) Date: Thu, 7 Mar 2013 14:02:43 +0800 Subject: [ndnSIM] =?gb2312?b?u9i4tDogUmU6ICAgcXVlc3Rpb24gZm9yIHRvcG9sb2d5?= References: <201303070848298592435@qq.com>, <14F930C0-5EA7-47FA-8A16-F2525665F7A3@ucla.edu> <201303070905474901977@qq.com>, <201303070958439600959@qq.com>, Message-ID: <2013030714024200303310@qq.com> VMware 9.0.1 with Ubuntu 12.10 boost 1.50 Thanks a lot! aaronishere ???? Alex Afanasyev ????? 2013-03-07 12:38 ???? aaronishere ??? Re: [ndnSIM] question for topology I'm going to try to reproduce the problem. Are you using ubuntu, if yes then which version? --- Alex On Mar 6, 2013, at 5:58 PM, aaronishere wrote: root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) build/ndn-grid-topo-plugin: error while loading shared libraries: libns3-dev-network-debug.so: cannot open shared object file: No such file or directory root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) but there's no visualizer showed. Aaron ???? Alex Afanasyev ????? 2013-03-07 09:27 ???? aaronishere ??? ndnsim ??? Re: [ndnSIM] ??: Re: question for topology Hmm... I suspect it is an old feature/bug with linking on Linux. You can try to fetch & merge with the latest update I pushed to ndnSIM-sample-topologies repo and check if it solves to the problem (https://github.com/cawka/ndnSIM-sample-topologies/commit/93b67c03051072264af90a0357b5b9fe8be6e47b). --- Alex On Mar 6, 2013, at 5:05 PM, aaronishere wrote: Hi, Alex root at ubuntu:/home/ndnSIM/ns-3# ./waf shell Waf: Entering directory `/home/ndnSIM/ns-3/build' Waf: Leaving directory `/home/ndnSIM/ns-3/build' root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf configure --debug Setting top to : /home/ndnSIM/ndnSIM-sample-topologies Setting out to : /home/ndnSIM/ndnSIM-sample-topologies/build Checking for 'g++' (c++ compiler) : /usr/bin/g++ Checking boost includes : 1_50 Checking boost libs : ok Checking for boost linkage : ok Checking for program pkg-config : /usr/bin/pkg-config Checking for pkg-config version >= '0.0.0' : yes Checking for ns3-ndnSIM : yes Checking for ns3-core : yes Checking for ns3-network : yes Checking for ns3-internet : yes Checking for ns3-point-to-point : yes Checking for ns3-topology-read : yes Checking for ns3-applications : yes Checking for ns3-mobility : yes Checking for ns3-visualizer : yes 'configure' finished successfully (1.079s) root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.022s) assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 terminate called without an active exception Aaron ???? Alex Afanasyev ????? 2013-03-07 08:53 ???? aaronishere ??? ndnsim ??? Re: [ndnSIM] question for topology NS-3's python bindings (e.g., visualizer) are not very user friendly and require quite a bit magic. The simplest way, just before running scenario, cd /home/ndnSIM/ ./waf shell cd /home/ndnSIM/ndnSIM-sample-topologies ./waf --run ndn-grid-topo-plugin --vis (or with LD_LIBRARY_PATH, but I don't think it's necessary) If it still not working, check again what ./waf configure in /home/ndnSIM/ndnSIM-sample-topologies is telling. Does it complain about visualizer or it shows "yes"? --- Alex On Mar 6, 2013, at 4:48 PM, aaronishere wrote: Hi, Alex Sorry to bother you again I'm still not clear about how to use the topology I copied the ndn-grid-topo-plugin under the file ....../ndnSIM-sample-topologies/scenario and changed it like below : int main (int argc, char *argv[]) { ...... RocketfuelWeightsReader topologyReader ("", 25); topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); topologyReader.Read (); ...... // Getting containers for the consumer/producer Ptr producer = Names::Find ("bb-781"); NodeContainer consumerNodes; consumerNodes.Add (Names::Find ("leaf-4349")); ...... } but typed LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis , it showed Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 terminate called without an active exception Thanks a lot! Aaron _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huqian at bupt.edu.cn Thu Mar 7 01:40:12 2013 From: huqian at bupt.edu.cn (huqian) Date: Thu, 7 Mar 2013 17:40:12 +0800 Subject: [ndnSIM] how does "sending packet" be implemented ? Message-ID: <201303071740120932209@bupt.edu.cn> Hi,Alex: I have some questions about "how to send a packet ". I found that function "DidSendOutData " in "ndn-forwarding-strategy.cc " is not implemented yet,so how does a DATA packet be sended to other nodes? the same question about "DidSendOutInterest". do functions "m_outInterests" and "m_outData" send out the packet actually?I am confused that how do they work..... I try to implement that,one node can send a kind of packet defined by custom,may be not INTEREST or DATA packet. WISH YOUR HELP,THANK YOU! ----------------------------------------------------- related codes ForwardingStrategy::DidSendOutInterest (Ptr inFace, Ptr outFace, Ptr header, Ptr origPacket, Ptr pitEntry) { m_outInterests (header, outFace); } TracedCallback, Ptr > m_outInterests; TracedCallback, Ptr > m_outData ; Huqian -------------- next part -------------- An HTML attachment was scrubbed... URL: From chiara.contoli at gmail.com Thu Mar 7 10:00:21 2013 From: chiara.contoli at gmail.com (Chiara Contoli) Date: Thu, 7 Mar 2013 10:00:21 -0800 Subject: [ndnSIM] Same interest Message-ID: <28839074-90CE-44C8-8DE3-AEF4FA785582@gmail.com> Hi all, my question is the following: is it possible to make generate the same Interest, from the same Consumer, more times? If the answer is yes, how can I do it? I know that if the Consumer doesn't receive a Content object before timers expires, it's re-express the same request again; but I need to re-express the same request for the same interest even if the consumer receive the Content for that Interest. Thanks From alexander.afanasyev at ucla.edu Thu Mar 7 10:08:23 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 7 Mar 2013 10:08:23 -0800 Subject: [ndnSIM] Same interest In-Reply-To: <28839074-90CE-44C8-8DE3-AEF4FA785582@gmail.com> References: <28839074-90CE-44C8-8DE3-AEF4FA785582@gmail.com> Message-ID: <24684CCE-F890-446D-A0E3-0AE332A160EB@ucla.edu> Hi Chiara, With the available code, you can achieve this by installing two or more instances of the same applications on the same node (but of course, you probably want to have different starting/stopping times for different instances). For example: Ptr consumer = ...; ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); consumerHelper.SetPrefix (... consumerHelper.SetAttribute ("Frequency", ... consumerHelper.Install (consumer).Start (Seconds (1.0)); consumerHelper.Install (consumer).Start (Seconds (2.0)); consumerHelper.Install (consumer).Start (Seconds (3.0)); ... If you really want to have the same application (not just a node) to send the same interest multiple times, you would need to write a custom application class, deriving either from ndn::Consumer or just from ndn::App, implementing Interest re-request logic that you need. For a couple of simple examples on how to write applications, please refer here: http://ndnsim.net/applications.html#custom-applications --- Alex On Mar 7, 2013, at 10:00 AM, Chiara Contoli wrote: > Hi all, > my question is the following: is it possible to make generate the same Interest, from the same Consumer, more times? If the answer is yes, how can I do it? > I know that if the Consumer doesn't receive a Content object before timers expires, it's re-express the same request again; but I need to re-express the same request for the same interest even if the consumer receive the Content for that Interest. > Thanks > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Thu Mar 7 11:48:29 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 7 Mar 2013 11:48:29 -0800 Subject: [ndnSIM] how does "sending packet" be implemented ? In-Reply-To: <201303071740120932209@bupt.edu.cn> References: <201303071740120932209@bupt.edu.cn> Message-ID: <1C5EF385-C0FF-4408-BBA9-0AAFECE5539F@ucla.edu> Hi Huqian, DidSendOutData and DidSendOutInterest (as I was hoping that name would suggest) are so called events that are executed just after Data or Interest packet was send out on a face. You can override these events in a custom strategy, e.g., to calculate statistics or do some other processing. In any case, these are not used and not intended to be used to send packets. m_outInterests and m_outData are so called TracedCallbacks, whose sole purpose is to collect statistics. --- To send out an Interest/Data you need to simply call Send method on Face object, similar as it is done for Interests here: https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L573 and for Data here: https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L391 --- Alex On Mar 7, 2013, at 1:40 AM, huqian wrote: > Hi,Alex: > I have some questions about "how to send a packet ". > I found that function "DidSendOutData " in "ndn-forwarding-strategy.cc " is not implemented yet,so how does a DATA packet be sended to other nodes? > the same question about "DidSendOutInterest". > do functions "m_outInterests" and "m_outData" send out the packet actually?I am confused that how do they work..... > I try to implement that,one node can send a kind of packet defined by custom,may be not INTEREST or DATA packet. > WISH YOUR HELP,THANK YOU! > ----------------------------------------------------- > related codes > ForwardingStrategy::DidSendOutInterest (Ptr inFace, > Ptr outFace, > Ptr header, > Ptr origPacket, > Ptr pitEntry) > { > m_outInterests (header, outFace); > } > > TracedCallback, > Ptr > m_outInterests; > > TracedCallback, > Ptr > m_outData ; > Huqian > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Mar 7 14:15:02 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 7 Mar 2013 14:15:02 -0800 Subject: [ndnSIM] question for topology In-Reply-To: <2013030714024200303310@qq.com> References: <201303070848298592435@qq.com>, <14F930C0-5EA7-47FA-8A16-F2525665F7A3@ucla.edu> <201303070905474901977@qq.com>, <201303070958439600959@qq.com>, <2013030714024200303310@qq.com> Message-ID: Hi Aaron, I have updated scenario repo, ndnSIM repo, and README instructions. In my Ubuntu 12.10 (with stock boost 1.49), everything worked, including the visualizer. mkdir ns-dev cd ns-dev git clone git://github.com/cawka/ns-3-dev-ndnSIM.git -b ns-3.16-ndnSIM ns-3 git clone git://github.com/cawka/pybindgen.git pybindgen git clone git://github.com/NDN-Routing/ndnSIM.git -b v0.2.7 ns-3/src/ndnSIM git clone git://github.com/cawka/ndnSIM-sample-topologies.git ndnSIM-sample-topologies cd ns-3 ./waf configure -d optimized ./waf sudo ./waf install ./waf shell cd ../ndnSIM-sample-topologies PKG_LIBRARY_PATH=/usr/local/lib NS_VIS_ASSIGN=1 ./waf --run example --vis --- Alex On Mar 6, 2013, at 10:02 PM, aaronishere wrote: > VMware 9.0.1 with Ubuntu 12.10 boost 1.50 > Thanks a lot! > > > aaronishere > > ???? Alex Afanasyev > ????? 2013-03-07 12:38 > ???? aaronishere > ??? Re: [ndnSIM] question for topology > I'm going to try to reproduce the problem. Are you using ubuntu, if yes then which version? > > --- > Alex > > On Mar 6, 2013, at 5:58 PM, aaronishere wrote: > >> >> root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis >> Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >> Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >> 'build' finished successfully (0.024s) >> build/ndn-grid-topo-plugin: error while loading shared libraries: libns3-dev-network-debug.so: cannot open shared object file: No such file or directory >> >> root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis >> Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >> Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >> 'build' finished successfully (0.024s) >> >> but there's no visualizer showed. >> >> Aaron >> >> ???? Alex Afanasyev >> ????? 2013-03-07 09:27 >> ???? aaronishere >> ??? ndnsim >> ??? Re: [ndnSIM] ??: Re: question for topology >> Hmm... I suspect it is an old feature/bug with linking on Linux. >> >> You can try to fetch & merge with the latest update I pushed to ndnSIM-sample-topologies repo and check if it solves to the problem (https://github.com/cawka/ndnSIM-sample-topologies/commit/93b67c03051072264af90a0357b5b9fe8be6e47b). >> >> --- >> Alex >> >> On Mar 6, 2013, at 5:05 PM, aaronishere wrote: >> >>> Hi, Alex >>> >>> root at ubuntu:/home/ndnSIM/ns-3# ./waf shell >>> Waf: Entering directory `/home/ndnSIM/ns-3/build' >>> Waf: Leaving directory `/home/ndnSIM/ns-3/build' >>> >>> root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf configure --debug >>> Setting top to : /home/ndnSIM/ndnSIM-sample-topologies >>> Setting out to : /home/ndnSIM/ndnSIM-sample-topologies/build >>> Checking for 'g++' (c++ compiler) : /usr/bin/g++ >>> Checking boost includes : 1_50 >>> Checking boost libs : ok >>> Checking for boost linkage : ok >>> Checking for program pkg-config : /usr/bin/pkg-config >>> Checking for pkg-config version >= '0.0.0' : yes >>> Checking for ns3-ndnSIM : yes >>> Checking for ns3-core : yes >>> Checking for ns3-network : yes >>> Checking for ns3-internet : yes >>> Checking for ns3-point-to-point : yes >>> Checking for ns3-topology-read : yes >>> Checking for ns3-applications : yes >>> Checking for ns3-mobility : yes >>> Checking for ns3-visualizer : yes >>> 'configure' finished successfully (1.079s) >>> root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis >>> Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >>> Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >>> 'build' finished successfully (0.022s) >>> assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 >>> terminate called without an active exception >>> >>> >>> >>> >>> Aaron >>> >>> ???? Alex Afanasyev >>> ????? 2013-03-07 08:53 >>> ???? aaronishere >>> ??? ndnsim >>> ??? Re: [ndnSIM] question for topology >>> NS-3's python bindings (e.g., visualizer) are not very user friendly and require quite a bit magic. >>> >>> The simplest way, just before running scenario, >>> >>> cd /home/ndnSIM/ >>> ./waf shell >>> cd /home/ndnSIM/ndnSIM-sample-topologies >>> ./waf --run ndn-grid-topo-plugin --vis >>> >>> (or with LD_LIBRARY_PATH, but I don't think it's necessary) >>> >>> If it still not working, check again what ./waf configure in /home/ndnSIM/ndnSIM-sample-topologies is telling. Does it complain about visualizer or it shows "yes"? >>> >>> --- >>> Alex >>> >>> On Mar 6, 2013, at 4:48 PM, aaronishere wrote: >>> >>>> Hi, Alex >>>> Sorry to bother you again >>>> I'm still not clear about how to use the topology >>>> I copied the ndn-grid-topo-plugin under the file ....../ndnSIM-sample-topologies/scenario and changed it like below : >>>> >>>> int >>>> main (int argc, char *argv[]) >>>> { >>>> ...... >>>> RocketfuelWeightsReader topologyReader ("", 25); >>>> topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); >>>> topologyReader.Read (); >>>> ...... >>>> // Getting containers for the consumer/producer >>>> Ptr producer = Names::Find ("bb-781"); >>>> NodeContainer consumerNodes; >>>> consumerNodes.Add (Names::Find ("leaf-4349")); >>>> ...... >>>> } >>>> >>>> but typed LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis , it showed >>>> >>>> Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >>>> Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' >>>> 'build' finished successfully (0.024s) >>>> assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 >>>> terminate called without an active exception >>>> >>>> Thanks a lot! >>>> >>>> Aaron >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Thu Mar 7 18:38:55 2013 From: aaronishere at qq.com (aaronishere) Date: Fri, 8 Mar 2013 10:38:55 +0800 Subject: [ndnSIM] =?gb2312?b?u9i4tDogUmU6ICAgIHF1ZXN0aW9uIGZvciB0b3BvbG9n?= =?gb2312?b?eQ==?= References: <201303070848298592435@qq.com>, <14F930C0-5EA7-47FA-8A16-F2525665F7A3@ucla.edu> <201303070905474901977@qq.com>, <201303070958439600959@qq.com>, <2013030714024200303310@qq.com>, Message-ID: <201303081038548026892@qq.com> Hi, Alex It works! Thanks a lot!!! So kind of you!!! Really Nice!!! : ) Aaron ???? Alex Afanasyev ????? 2013-03-08 06:15 ???? aaronishere ??? ndnsim ??? Re: [ndnSIM] question for topology Hi Aaron, I have updated scenario repo, ndnSIM repo, and README instructions. In my Ubuntu 12.10 (with stock boost 1.49), everything worked, including the visualizer. mkdir ns-dev cd ns-dev git clone git://github.com/cawka/ns-3-dev-ndnSIM.git -b ns-3.16-ndnSIM ns-3 git clone git://github.com/cawka/pybindgen.git pybindgen git clone git://github.com/NDN-Routing/ndnSIM.git -b v0.2.7 ns-3/src/ndnSIM git clone git://github.com/cawka/ndnSIM-sample-topologies.git ndnSIM-sample-topologies cd ns-3 ../waf configure -d optimized ../waf sudo ./waf install ../waf shell cd .../ndnSIM-sample-topologies PKG_LIBRARY_PATH=/usr/local/lib NS_VIS_ASSIGN=1 ./waf --run example --vis --- Alex On Mar 6, 2013, at 10:02 PM, aaronishere wrote: VMware 9.0.1 with Ubuntu 12.10 boost 1.50 Thanks a lot! aaronishere ???? Alex Afanasyev ????? 2013-03-07 12:38 ???? aaronishere ??? Re: [ndnSIM] question for topology I'm going to try to reproduce the problem. Are you using ubuntu, if yes then which version? --- Alex On Mar 6, 2013, at 5:58 PM, aaronishere wrote: root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) build/ndn-grid-topo-plugin: error while loading shared libraries: libns3-dev-network-debug.so: cannot open shared object file: No such file or directory root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) but there's no visualizer showed. Aaron ???? Alex Afanasyev ????? 2013-03-07 09:27 ???? aaronishere ??? ndnsim ??? Re: [ndnSIM] ??: Re: question for topology Hmm... I suspect it is an old feature/bug with linking on Linux. You can try to fetch & merge with the latest update I pushed to ndnSIM-sample-topologies repo and check if it solves to the problem (https://github.com/cawka/ndnSIM-sample-topologies/commit/93b67c03051072264af90a0357b5b9fe8be6e47b). --- Alex On Mar 6, 2013, at 5:05 PM, aaronishere wrote: Hi, Alex root at ubuntu:/home/ndnSIM/ns-3# ./waf shell Waf: Entering directory `/home/ndnSIM/ns-3/build' Waf: Leaving directory `/home/ndnSIM/ns-3/build' root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf configure --debug Setting top to : /home/ndnSIM/ndnSIM-sample-topologies Setting out to : /home/ndnSIM/ndnSIM-sample-topologies/build Checking for 'g++' (c++ compiler) : /usr/bin/g++ Checking boost includes : 1_50 Checking boost libs : ok Checking for boost linkage : ok Checking for program pkg-config : /usr/bin/pkg-config Checking for pkg-config version >= '0.0.0' : yes Checking for ns3-ndnSIM : yes Checking for ns3-core : yes Checking for ns3-network : yes Checking for ns3-internet : yes Checking for ns3-point-to-point : yes Checking for ns3-topology-read : yes Checking for ns3-applications : yes Checking for ns3-mobility : yes Checking for ns3-visualizer : yes 'configure' finished successfully (1.079s) root at ubuntu:/home/ndnSIM/ndnSIM-sample-topologies# ./waf --run ndn-grid-topo-plugin --vis Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.022s) assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 terminate called without an active exception Aaron ???? Alex Afanasyev ????? 2013-03-07 08:53 ???? aaronishere ??? ndnsim ??? Re: [ndnSIM] question for topology NS-3's python bindings (e.g., visualizer) are not very user friendly and require quite a bit magic. The simplest way, just before running scenario, cd /home/ndnSIM/ ./waf shell cd /home/ndnSIM/ndnSIM-sample-topologies ./waf --run ndn-grid-topo-plugin --vis (or with LD_LIBRARY_PATH, but I don't think it's necessary) If it still not working, check again what ./waf configure in /home/ndnSIM/ndnSIM-sample-topologies is telling. Does it complain about visualizer or it shows "yes"? --- Alex On Mar 6, 2013, at 4:48 PM, aaronishere wrote: Hi, Alex Sorry to bother you again I'm still not clear about how to use the topology I copied the ndn-grid-topo-plugin under the file ......./ndnSIM-sample-topologies/scenario and changed it like below : int main (int argc, char *argv[]) { ...... RocketfuelWeightsReader topologyReader ("", 25); topologyReader.SetFileName ("topologies/bw-delay-rand-1/1221.r0-conv-annotated.txt"); topologyReader.Read (); ...... // Getting containers for the consumer/producer Ptr producer = Names::Find ("bb-781"); NodeContainer consumerNodes; consumerNodes.Add (Names::Find ("leaf-4349")); ...... } but typed LD_LIBRARY_PATH=/usr/local/lib ./waf --run ndn-grid-topo-plugin --vis , it showed Waf: Entering directory `/home/ndnSIM/ndnSIM-sample-topologies/build' Waf: Leaving directory `/home/ndnSIM/ndnSIM-sample-topologies/build' 'build' finished successfully (0.024s) assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found", file=../src/core/model/type-id.cc, line=419 terminate called without an active exception Thanks a lot! Aaron _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Thu Mar 7 19:16:05 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Fri, 8 Mar 2013 11:16:05 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> Message-ID: <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> Hi Alex, I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). Is it accurate? thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: > > On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: > >> Thank you Alex. Your email really makes sense. >> >> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >> >> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >> >> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. > > There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. > > The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... > > -- > Alex > >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Jan 22, 2013, at 12:55 PM, Alex Afanasyev wrote: >> >>> Hi Xiaoke, >>> >>> I haven't time today to think about the solution, but I think I know what "problem" is. With hop counting with NACKs there is a question whether each returned NACK should be counted as an extra hop or not (e.g., when Interest is send from A to B and then NACKed from B to A, should it be 2 hops or 0?). The solution that I'm thinking about would count those "imaginary" hops, not sure if this will make sense for you... >>> >>> --- >>> Alex >>> >>> On Jan 21, 2013, at 4:58 AM, Xiaoke Jiang wrote: >>> >>>> Hi Alex, >>>> There is an error when I enable Nack and set Limit caused by >>>> if (payload->RemovePacketTag (hopCountTag)) >>>> { >>>> hopCount = hopCountTag.Get (); >>>> } else{ >>>> NS_LOG_DEBUG("hopcount=-1 because of failling removing tag"); >>>> } >>>> >>>> Sometimes, payload->RemovePacketTag(hopCountTag) return false, in this case hopcount is -1, I think this is not reasonable. >>>> what does -1 mean if it do give me hopcount=-1? >>>> >>>> P.S, I think ns3::ndn::fw::BestRoute::PerOutFaceLimits is such a wonderful function, have you put its description to ndnSim.net? I strongly suggest to do that. >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Jan 21, 2013, at 6:15 AM, Alex Afanasyev wrote: >>>> >>>>> Hi Xiaoke, >>>>> >>>>> Your message to mailing list got blocked, as it has exceeded 40kb (it's kind of big for a small mailing list). If you want, you can resend it, but I recommend you to exclude all attachments and (if necessary) put links, for example to pastebin.com. If you resend your question, I'll replicate my answer there. >>>>> >>>>> >>>>> As for your question. Just enabling NACKs is not be enough. Forwarding plane needs to know when to start sending them. For instance, this signal would be when forwarding strategy detects that "Interest limit" has been reached (some explanation is in section 3.4 in the long paper. PS. it got accepted to the journal, so soon will be available to everybody). >>>>> >>>>> To enable this Interest limit, there are a couple of things: >>>>> >>>>> 1) select forwarding strategy that enforces limits. You can choose one of these: >>>>> - ns3::ndn::fw::BestRoute::PerOutFaceLimits >>>>> - ns3::ndn::fw::Flooding::PerOutFaceLimits >>>>> - ns3::ndn::fw::SmartFlooding::PerOutFaceLimits >>>>> >>>>> As well as select the limit enforcement type (the one explained in paper is ns3::ndn::Limits::Rate). For example, to enable BestRoute with limits: >>>>> >>>>> ndnStack.SetForwardingStrategy ("ns3::ndn::fw::BestRoute::PerOutFaceLimits", >>>>> "Limit", "ns3::ndn::Limits::Rate"); >>>>> >>>>> 2) you also need to call ndnStack.EnableLimits (true, , , ) to configure limits to reflect you scenario parameters. You can initially try with default parameters and then subsequently adjust. >>>>> >>>>> Sincerely, >>>>> Alex >>>>> >>>>> On Jan 20, 2013, at 12:01 AM, Xiaoke Jiang wrote: >>>>> >>>>>> Hi Alex, >>>>>> I am trying to making experiment when there is congestion. I enable Nack with "Config::SetDefault("ns3::ndn::fw::Nacks::EnableNACKs", StringValue("true"));" >>>>>> >>>>>> and I log the output from Consumer, but I can't find Nack message, which is very strange. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> thanks >>>>>> >>>>>> My Regards, >>>>>> Xiaoke Jiang ????? >>>>>> >>>>>> Ph.D Candidate, >>>>>> Dept. of Computer Science and Technology, >>>>>> Tsinghua University, P. R. China >>>>>> >>>>> >>>> >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Mar 7 19:31:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 7 Mar 2013 19:31:10 -0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> Message-ID: Hi Xiaoke, Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? Thanks, Alex On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: > Hi Alex, > I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). > Is it accurate? > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: > >> >> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >> >>> Thank you Alex. Your email really makes sense. >>> >>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>> >>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>> >>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >> >> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >> >> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >> >> -- >> Alex -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Thu Mar 7 19:37:36 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Fri, 8 Mar 2013 11:37:36 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> Message-ID: <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> Hi Alex, I add an issue here: https://github.com/NDN-Routing/ndnSIM/issues/26 , but I am not sure it is what you want. P.S, when do you plan to merge new Rtt Estimator? thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 8, 2013, at 11:31 AM, Alex Afanasyev wrote: > Hi Xiaoke, > > Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? > > Thanks, > Alex > > On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: > >> Hi Alex, >> I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). >> Is it accurate? >> >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: >> >>> >>> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >>> >>>> Thank you Alex. Your email really makes sense. >>>> >>>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>>> >>>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>>> >>>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >>> >>> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >>> >>> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >>> >>> -- >>> Alex > -------------- next part -------------- An HTML attachment was scrubbed... URL: From zyj0310 at 163.com Thu Mar 7 21:57:25 2013 From: zyj0310 at 163.com (zyj0310) Date: Fri, 8 Mar 2013 13:57:25 +0800 (CST) Subject: [ndnSIM] question for wireless networks Message-ID: <7a15b25d.72a3.13d48934b7a.Coremail.zyj0310@163.com> Hi all, my question is the following: is it possible to emulate wireless multihop networks(such as 802.11 adhoc etc..) by use of ndnsim? If the answer is yes, how can I do it, and how to configure the routing policy? I know that topology-read is well support to wired-networks, what about wireless networks? ThanksZhang YJ. -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Fri Mar 8 00:07:45 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Fri, 8 Mar 2013 16:07:45 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> Message-ID: <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> Hi Alex, in Consumer.cc, in the function OnContentObject, according to your email, it may also process Nack, right? if hopCount = -1, it means the Packet is a Nack, but it still print that the Data is comming. uint32_t seq = boost::lexical_cast (contentObject->GetName ().GetComponents ().back ()); NS_LOG_INFO ("< DATA for " << seq); int hopCount = -1; FwHopCountTag hopCountTag; if (payload->RemovePacketTag (hopCountTag)) { hopCount = hopCountTag.Get (); } That's quit strange. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 8, 2013, at 11:37 AM, Xiaoke Jiang wrote: > Hi Alex, > I add an issue here: https://github.com/NDN-Routing/ndnSIM/issues/26 , but I am not sure it is what you want. > > P.S, when do you plan to merge new Rtt Estimator? > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Mar 8, 2013, at 11:31 AM, Alex Afanasyev wrote: > >> Hi Xiaoke, >> >> Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? >> >> Thanks, >> Alex >> >> On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). >>> Is it accurate? >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: >>> >>>> >>>> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >>>> >>>>> Thank you Alex. Your email really makes sense. >>>>> >>>>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>>>> >>>>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>>>> >>>>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >>>> >>>> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >>>> >>>> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >>>> >>>> -- >>>> Alex >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Fri Mar 8 00:40:03 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Fri, 8 Mar 2013 16:40:03 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> Message-ID: <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> Maybe in OnContentObject, the packet should be checked first, if it is a Nack, call onNack to process it. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 8, 2013, at 4:07 PM, Xiaoke Jiang wrote: > Hi Alex, > > > in Consumer.cc, in the function OnContentObject, according to your email, it may also process Nack, right? if hopCount = -1, it means the Packet is a Nack, but it still print that the Data is comming. > > > uint32_t seq = boost::lexical_cast (contentObject->GetName ().GetComponents ().back ()); > NS_LOG_INFO ("< DATA for " << seq); > > int hopCount = -1; > FwHopCountTag hopCountTag; > if (payload->RemovePacketTag (hopCountTag)) > { > hopCount = hopCountTag.Get (); > } > > > That's quit strange. > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Mar 8, 2013, at 11:37 AM, Xiaoke Jiang wrote: > >> Hi Alex, >> I add an issue here: https://github.com/NDN-Routing/ndnSIM/issues/26 , but I am not sure it is what you want. >> >> P.S, when do you plan to merge new Rtt Estimator? >> >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Mar 8, 2013, at 11:31 AM, Alex Afanasyev wrote: >> >>> Hi Xiaoke, >>> >>> Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? >>> >>> Thanks, >>> Alex >>> >>> On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: >>> >>>> Hi Alex, >>>> I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). >>>> Is it accurate? >>>> >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: >>>> >>>>> >>>>> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >>>>> >>>>>> Thank you Alex. Your email really makes sense. >>>>>> >>>>>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>>>>> >>>>>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>>>>> >>>>>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >>>>> >>>>> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >>>>> >>>>> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >>>>> >>>>> -- >>>>> Alex >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 8 11:43:50 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 8 Mar 2013 11:43:50 -0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> Message-ID: <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> Hi Xiaoke, Not exactly. Right now -1 will be returned either for Interests or ContentObject, if the Interest on the way get "bounced" with NACKs at least one. Let me illustrate with a simple example: C----R1---X | +----R2----P C sends an interest and R1 originally forwards it towards X. X sends out NACK (which is Interest with NACK code in it) back to R1. At this point, HopCounter tag got destroyed, so when P finally receives the Interest (which will no longer be NACK), this interest will not have HopCounter tag attached, making producer not to include HopCounter tag to the content object. Finally, when C gets back data, this data will not have a HopCounter tag, and will return -1 for DATA. In a simple fix, we should just keep along the original HopCounter tag when Interest-NACKs are getting created in ndn::fw::Nacks (model/fw/nacks.cc). In a better solution, and I would really appreciate if you can help with implementation, we probably need to count real hops and NACKed hops slightly separately. For example, there should be counter to track number of hops that data packet followed, number of hops including all NACK returns, and may be something else. Thanks, Alex On Mar 8, 2013, at 12:40 AM, Xiaoke Jiang wrote: > Maybe in OnContentObject, the packet should be checked first, if it is a Nack, call onNack to process it. > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Mar 8, 2013, at 4:07 PM, Xiaoke Jiang wrote: > >> Hi Alex, >> >> >> in Consumer.cc, in the function OnContentObject, according to your email, it may also process Nack, right? if hopCount = -1, it means the Packet is a Nack, but it still print that the Data is comming. >> >> >> uint32_t seq = boost::lexical_cast (contentObject->GetName ().GetComponents ().back ()); >> NS_LOG_INFO ("< DATA for " << seq); >> >> int hopCount = -1; >> FwHopCountTag hopCountTag; >> if (payload->RemovePacketTag (hopCountTag)) >> { >> hopCount = hopCountTag.Get (); >> } >> >> >> That's quit strange. >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Mar 8, 2013, at 11:37 AM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> I add an issue here: https://github.com/NDN-Routing/ndnSIM/issues/26 , but I am not sure it is what you want. >>> >>> P.S, when do you plan to merge new Rtt Estimator? >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Mar 8, 2013, at 11:31 AM, Alex Afanasyev wrote: >>> >>>> Hi Xiaoke, >>>> >>>> Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? >>>> >>>> Thanks, >>>> Alex >>>> >>>> On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: >>>> >>>>> Hi Alex, >>>>> I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). >>>>> Is it accurate? >>>>> >>>>> >>>>> thanks >>>>> >>>>> My Regards, >>>>> Xiaoke Jiang ????? >>>>> >>>>> Ph.D Candidate, >>>>> Dept. of Computer Science and Technology, >>>>> Tsinghua University, P. R. China >>>>> >>>>> On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: >>>>> >>>>>> >>>>>> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >>>>>> >>>>>>> Thank you Alex. Your email really makes sense. >>>>>>> >>>>>>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>>>>>> >>>>>>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>>>>>> >>>>>>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >>>>>> >>>>>> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >>>>>> >>>>>> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >>>>>> >>>>>> -- >>>>>> Alex >>>> >>> >> > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 8 11:50:20 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 8 Mar 2013 11:50:20 -0800 Subject: [ndnSIM] Packet drops In-Reply-To: References: , <00CC1EF7-BFE8-49C1-8AD8-587A9C8E3AF3@ucla.edu> Message-ID: <433E9227-AD68-4F02-9A2A-E3CD7657F87E@ucla.edu> Hi Mohammad, Let me know after you tested if the code works as it should, so I can safely merge it to the master branch. Also, if you will be able to make a simple usage example, I can also put it on ndnsim.net website. Thanks! --- Alex On Mar 8, 2013, at 1:02 AM, Hovaidi Ardestani Mohammad wrote: > Oh, sorry for misunderstanding! > Great help. > Thank you so much! > -Mohammad > > -----Original Message----- > From: Alexander Afanasyev [mailto:cawka1 at gmail.com] On Behalf Of Alex Afanasyev > Sent: Friday, March 8, 2013 12:18 AM > To: Hovaidi Ardestani Mohammad > Subject: Re: [ndnSIM] Packet drops > > L2RateTracer is not a member of ns3::ndn, as it is pretty general thing and I would strongly recommend to not put it in ndn namespace. You could have solved the usage problem by removing ndn:: prefix before L2RateTracer. > > Can you retry? > > Thanks, > Alex > > On Mar 7, 2013, at 7:38 AM, Hovaidi Ardestani Mohammad wrote: > >> Dear Alex >> I am trying to compile the l2-rate-tracer as you recommended,but there are some errors. >> When I want to run your code,I encounter with error of " 'L2RateTracer' is not a member of 'ns3::ndn' ". >> I changed the code with namespace of ndn, and there were lots of other errors.Do you have any idea how I can modify the code to have the number of dropped packets. >> I really appreciate your help. >> ________________________________________ >> From: Alexander Afanasyev [cawka1 at gmail.com] on behalf of Alex Afanasyev [alexander.afanasyev at ucla.edu] >> Sent: Thursday, February 28, 2013 9:08 PM >> To: Hovaidi Ardestani Mohammad >> Cc: ndnsim at lists.cs.ucla.edu >> Subject: Re: [ndnSIM] Packet drops >> >> Hi Mohammad, >> >> Sorry for the confusion. What I meant is that NS-3 provides you callback mechanism inside a transmission queue, to which you can "connect" and get data. ndn-l3-rate-tracer is really a helper class that is pretty useful, but it is just a helper. >> >> I have sketch out a draft implementation of another helper, l2-rate-tracer (you can check the code from feature-l2-tracer branch, or get this commit https://github.com/NDN-Routing/ndnSIM/commit/c759762fb12bfb5219715c5699ca8370d8ee6402). This is basically one of zillion ways to "connect" to /NodeList/*/DeviceList/*/TxQueue/Drop trace (see https://github.com/NDN-Routing/ndnSIM/commit/c759762fb12bfb5219715c5699ca8370d8ee6402#L2R50) and do some basic preprocessing. >> >> I have not fully tested the code, but it compiles on my machine. >> >> As for other types of drops that I mentioned (by ndnSIM itself), which are "exposed" through DropData/DropInterest NS-3 trace sources. This info is already aggregated by ndn-l3-rate-tracer, but I just commented out lines to print them (https://github.com/NDN-Routing/ndnSIM/blob/master/utils/tracers/ndn-l3-rate-tracer.cc#L173). You can uncomment and see if anything useful is there. But again, these "NDN" drops are specific to the forwarding strategy used, and you may be seeing zeroes here. >> >> Hope I clarified confusion. Let me know if I should explain more. >> >> --- >> Alex >> >> On Feb 28, 2013, at 12:44 AM, Hovaidi Ardestani Mohammad wrote: >> >>> Hi Alex >>> To tell the truth I didn't get your point. Let me explain what I am going to do. Actually, I need to have one tracer like "ndn-l3-rate-tracer.h" in which I can see the exact number of dropped packets due to buffer overflow or other possible reasons in each router. Could you please guide me more elaborately? >>> Thank you in advance! >>> -Mohammad >>> -----Original Message----- >>> From: Alexander Afanasyev [mailto:cawka1 at gmail.com] On Behalf Of Alex Afanasyev >>> Sent: Wednesday, February 27, 2013 10:27 PM >>> To: Hovaidi Ardestani Mohammad >>> Cc: ndnsim at lists.cs.ucla.edu >>> Subject: Re: [ndnSIM] Packet drops >>> >>> Hi Mohammad, >>> >>> If you're talking about normal drops due to queue overflows, then you can use packet drop traces from NetDevice queue (you can check examples in src/visualizer/model/pyviz.cc): >>> >>> - /NodeList/*/DeviceList/*/TxQueue/Drop >>> >>> If you want to factor in cases when ndnSIM stops forwarding packet (which is not exactly a drop), then you may want to also use >>> >>> - /NodeList/*/$ns3::ndn::ForwardingStrategy/DropInterests >>> - /NodeList/*/$ns3::ndn::ForwardingStrategy/DropData >>> >>> However, I'm not confident 100% that right now ndnSIM tracks all the cases of stopped forwarding of Interst/Data. >>> >>> --- >>> Alex >>> >>> On Feb 27, 2013, at 5:51 AM, Hovaidi Ardestani Mohammad wrote: >>> >>>> Hello everybody! >>>> I have several scenarios in which congestion happens. I am wondering how I can trace dropped packets or know when packet dropping has been started? >>>> Any help is appreciated in advance >>>> BR >>>> -Mohammad >> > From alexander.afanasyev at ucla.edu Fri Mar 8 12:03:54 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 8 Mar 2013 12:03:54 -0800 Subject: [ndnSIM] question for wireless networks In-Reply-To: <7a15b25d.72a3.13d48934b7a.Coremail.zyj0310@163.com> References: <7a15b25d.72a3.13d48934b7a.Coremail.zyj0310@163.com> Message-ID: Hi! When you referring to multi-hop wireless networks, do you mean that some nodes would have multiple wireless interfaces and act similar to routers in wired networks? Or do you mean that some nodes would relay received interest "further" over the same face? In the first case, it can be achieved by a little bit customizing the annotated topology reader, so it creates requested types of the NetDevices, not just PointToPointNetDevices, as it is doing now. For the second case, the problem is more complicated and more fundamental. Normally (and this logic is implemented in stock version of ndnSIM), NDN routers do not rebroadcast Interests or Data over the face they received this Interest or Data. In the case of wireless networks, and especially multi-hop wireless networks, this logic may not be always valid and needs to be adjusted using customized forwarding strategy. We had a preliminary experimentation with vehicle-to-vehicle multi-hop adhoc networks, assuming that Interest/Data is intended to be propagated as far as possible from the originator. You can check ndnSIM extensions here: https://github.com/cawka/ndnSIM-nom-rapid-car2car. In our case, it was a key assumption, as it allows to distinguish whether a particular Interest needs to be rebroadcasted or not. (The extension code also have special consideration about broadcast nature of the wifi, so in some cases it would cancel "scheduled" rebroadcast event. You can check the linked paper for more info.) If you can make a similar assumption, or define a specific criteria when Interest/Data need to be related or not, you can write a specialized version of forwarding strategy (similar to this: ndn::fw:V2v: https://github.com/cawka/ndnSIM-nom-rapid-car2car/blob/master/extensions/ndn-fw-v2v.h and https://github.com/cawka/ndnSIM-nom-rapid-car2car/blob/master/extensions/ndn-fw-v2v.cc). Sincerely, Alex On Mar 7, 2013, at 9:57 PM, zyj0310 wrote: > Hi all, > my question is the following: is it possible to emulate wireless multihop networks(such as 802.11 adhoc etc..) by use of ndnsim? If the answer is yes, how can I do it, and how to configure the routing policy? > I know that topology-read is well support to wired-networks, what about wireless networks? > Thanks > Zhang YJ. -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Fri Mar 8 19:56:20 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Sat, 9 Mar 2013 11:56:20 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> Message-ID: <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> Hi Alex, I would like to try to solve it with second solution. Now here is my design: add a new tag, named TX-tag for content packet, after Interest meets a Content, we add the TX-tag to the content with initial value 0 and the TX increase by 2 every time. What do you think? And of course, we should let onNack function add the hopCount Tag. As to hopCount, is must be an even number, right? bug I get some odd number. The amount is very small, but I do get. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 9, 2013, at 3:43 AM, Alex Afanasyev wrote: > Hi Xiaoke, > > Not exactly. Right now -1 will be returned either for Interests or ContentObject, if the Interest on the way get "bounced" with NACKs at least one. > > Let me illustrate with a simple example: > > C----R1---X > | > +----R2----P > > C sends an interest and R1 originally forwards it towards X. X sends out NACK (which is Interest with NACK code in it) back to R1. At this point, HopCounter tag got destroyed, so when P finally receives the Interest (which will no longer be NACK), this interest will not have HopCounter tag attached, making producer not to include HopCounter tag to the content object. Finally, when C gets back data, this data will not have a HopCounter tag, and will return -1 for DATA. > > In a simple fix, we should just keep along the original HopCounter tag when Interest-NACKs are getting created in ndn::fw::Nacks (model/fw/nacks.cc). In a better solution, and I would really appreciate if you can help with implementation, we probably need to count real hops and NACKed hops slightly separately. For example, there should be counter to track number of hops that data packet followed, number of hops including all NACK returns, and may be something else. > > Thanks, > Alex > > On Mar 8, 2013, at 12:40 AM, Xiaoke Jiang wrote: > >> Maybe in OnContentObject, the packet should be checked first, if it is a Nack, call onNack to process it. >> >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Mar 8, 2013, at 4:07 PM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> >>> >>> in Consumer.cc, in the function OnContentObject, according to your email, it may also process Nack, right? if hopCount = -1, it means the Packet is a Nack, but it still print that the Data is comming. >>> >>> >>> uint32_t seq = boost::lexical_cast (contentObject->GetName ().GetComponents ().back ()); >>> NS_LOG_INFO ("< DATA for " << seq); >>> >>> int hopCount = -1; >>> FwHopCountTag hopCountTag; >>> if (payload->RemovePacketTag (hopCountTag)) >>> { >>> hopCount = hopCountTag.Get (); >>> } >>> >>> >>> That's quit strange. >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Mar 8, 2013, at 11:37 AM, Xiaoke Jiang wrote: >>> >>>> Hi Alex, >>>> I add an issue here: https://github.com/NDN-Routing/ndnSIM/issues/26 , but I am not sure it is what you want. >>>> >>>> P.S, when do you plan to merge new Rtt Estimator? >>>> >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Mar 8, 2013, at 11:31 AM, Alex Afanasyev wrote: >>>> >>>>> Hi Xiaoke, >>>>> >>>>> Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? >>>>> >>>>> Thanks, >>>>> Alex >>>>> >>>>> On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: >>>>> >>>>>> Hi Alex, >>>>>> I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). >>>>>> Is it accurate? >>>>>> >>>>>> >>>>>> thanks >>>>>> >>>>>> My Regards, >>>>>> Xiaoke Jiang ????? >>>>>> >>>>>> Ph.D Candidate, >>>>>> Dept. of Computer Science and Technology, >>>>>> Tsinghua University, P. R. China >>>>>> >>>>>> On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: >>>>>> >>>>>>> >>>>>>> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >>>>>>> >>>>>>>> Thank you Alex. Your email really makes sense. >>>>>>>> >>>>>>>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>>>>>>> >>>>>>>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>>>>>>> >>>>>>>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >>>>>>> >>>>>>> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >>>>>>> >>>>>>> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >>>>>>> >>>>>>> -- >>>>>>> Alex >>>>> >>>> >>> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 9 13:14:18 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 9 Mar 2013 13:14:18 -0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> Message-ID: <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> Hi Xiaoke, I like the idea of creating a separate tag just to track content hops. We can actually create a two classes derived from the existing FwHopCountTag, one to track Interest hops (including all the NACKing) and one explicitly for ContentObject hops. I wouldn't do increase by 2, as application can figure out itself that real number of round-trip hops is twice as many as just content object hops (or we can have a helper method for that). There are several places where new tag needs to be created/updated: ndn-face.cc (somewhere around line 132), ndn-forwarding-strategy.cc (around line 183), and of course in nacks.cc, ndn-consumer.cc, and ndn-producer.cc. As for the current hopCount tag, there are legitimate cases when you will get odd number. I can't exactly recall right now what they are, but I think it is related to cached content objects. Thanks for the help, Alex On Mar 8, 2013, at 7:56 PM, Xiaoke Jiang wrote: > Hi Alex, > I would like to try to solve it with second solution. Now here is my design: add a new tag, named TX-tag for content packet, after Interest meets a Content, we add the TX-tag to the content with initial value 0 and the TX increase by 2 every time. What do you think? > > And of course, we should let onNack function add the hopCount Tag. > > As to hopCount, is must be an even number, right? bug I get some odd number. The amount is very small, but I do get. > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Mar 9, 2013, at 3:43 AM, Alex Afanasyev wrote: > >> Hi Xiaoke, >> >> Not exactly. Right now -1 will be returned either for Interests or ContentObject, if the Interest on the way get "bounced" with NACKs at least one. >> >> Let me illustrate with a simple example: >> >> C----R1---X >> | >> +----R2----P >> >> C sends an interest and R1 originally forwards it towards X. X sends out NACK (which is Interest with NACK code in it) back to R1. At this point, HopCounter tag got destroyed, so when P finally receives the Interest (which will no longer be NACK), this interest will not have HopCounter tag attached, making producer not to include HopCounter tag to the content object. Finally, when C gets back data, this data will not have a HopCounter tag, and will return -1 for DATA. >> >> In a simple fix, we should just keep along the original HopCounter tag when Interest-NACKs are getting created in ndn::fw::Nacks (model/fw/nacks.cc). In a better solution, and I would really appreciate if you can help with implementation, we probably need to count real hops and NACKed hops slightly separately. For example, there should be counter to track number of hops that data packet followed, number of hops including all NACK returns, and may be something else. >> >> Thanks, >> Alex >> >> On Mar 8, 2013, at 12:40 AM, Xiaoke Jiang wrote: >> >>> Maybe in OnContentObject, the packet should be checked first, if it is a Nack, call onNack to process it. >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Mar 8, 2013, at 4:07 PM, Xiaoke Jiang wrote: >>> >>>> Hi Alex, >>>> >>>> >>>> in Consumer.cc, in the function OnContentObject, according to your email, it may also process Nack, right? if hopCount = -1, it means the Packet is a Nack, but it still print that the Data is comming. >>>> >>>> >>>> uint32_t seq = boost::lexical_cast (contentObject->GetName ().GetComponents ().back ()); >>>> NS_LOG_INFO ("< DATA for " << seq); >>>> >>>> int hopCount = -1; >>>> FwHopCountTag hopCountTag; >>>> if (payload->RemovePacketTag (hopCountTag)) >>>> { >>>> hopCount = hopCountTag.Get (); >>>> } >>>> >>>> >>>> That's quit strange. >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Mar 8, 2013, at 11:37 AM, Xiaoke Jiang wrote: >>>> >>>>> Hi Alex, >>>>> I add an issue here: https://github.com/NDN-Routing/ndnSIM/issues/26 , but I am not sure it is what you want. >>>>> >>>>> P.S, when do you plan to merge new Rtt Estimator? >>>>> >>>>> >>>>> thanks >>>>> >>>>> My Regards, >>>>> Xiaoke Jiang ????? >>>>> >>>>> Ph.D Candidate, >>>>> Dept. of Computer Science and Technology, >>>>> Tsinghua University, P. R. China >>>>> >>>>> On Mar 8, 2013, at 11:31 AM, Alex Afanasyev wrote: >>>>> >>>>>> Hi Xiaoke, >>>>>> >>>>>> Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? >>>>>> >>>>>> Thanks, >>>>>> Alex >>>>>> >>>>>> On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). >>>>>>> Is it accurate? >>>>>>> >>>>>>> >>>>>>> thanks >>>>>>> >>>>>>> My Regards, >>>>>>> Xiaoke Jiang ????? >>>>>>> >>>>>>> Ph.D Candidate, >>>>>>> Dept. of Computer Science and Technology, >>>>>>> Tsinghua University, P. R. China >>>>>>> >>>>>>> On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: >>>>>>> >>>>>>>> >>>>>>>> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >>>>>>>> >>>>>>>>> Thank you Alex. Your email really makes sense. >>>>>>>>> >>>>>>>>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>>>>>>>> >>>>>>>>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>>>>>>>> >>>>>>>>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >>>>>>>> >>>>>>>> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >>>>>>>> >>>>>>>> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >>>>>>>> >>>>>>>> -- >>>>>>>> Alex >>>>>> >>>>> >>>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Sat Mar 9 13:47:40 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sun, 10 Mar 2013 04:47:40 +0700 Subject: [ndnSIM] FaceIterator Message-ID: <2011781362865660@web5g.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 9 15:15:56 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 9 Mar 2013 15:15:56 -0800 Subject: [ndnSIM] FaceIterator In-Reply-To: <2011781362865660@web5g.yandex.ru> References: <2011781362865660@web5g.yandex.ru> Message-ID: Hi Natalya, 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? Another side question. Are you intentionally not using metric to rank faces (fib::i_nth instead of fib::i_metric)? --- Alex On Mar 9, 2013, at 1:47 PM, Natalya Rozhnova wrote: > Hi Alex, > > 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? > I rewrite DoPropagateInterest function and choose the interface as follows: > > BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get ()) > { > if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry)) > { > if(m_drop_cause == 1) > continue; > else break; > } > propagatedCount++; > break; > } > return propagatedCount > 0; > > Is it correct and the problem should not come from this piece? > > Thanks, > Natalya > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Sat Mar 9 16:05:19 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sun, 10 Mar 2013 07:05:19 +0700 Subject: [ndnSIM] FaceIterator In-Reply-To: References: <2011781362865660@web5g.yandex.ru> Message-ID: <2138791362873919@web6h.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 9 17:01:28 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 9 Mar 2013 17:01:28 -0800 Subject: [ndnSIM] FaceIterator In-Reply-To: <2138791362873919@web6h.yandex.ru> References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> Message-ID: <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> Hi Natalya, 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. 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? --- Alex On Mar 9, 2013, at 4:05 PM, Natalya Rozhnova wrote: > Hi Alex, > > 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. > 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). > > Oh, yes, I use i_metric. The i_nth was just the last attempt to see if it can change anything. > > Thanks, > Natalya > > > 10.03.2013, 06:16, "Alex Afanasyev" : >> Hi Natalya, >> >> 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? >> >> Another side question. Are you intentionally not using metric to rank faces (fib::i_nth instead of fib::i_metric)? >> >> --- >> Alex >> >> On Mar 9, 2013, at 1:47 PM, Natalya Rozhnova wrote: >> >>> Hi Alex, >>> >>> 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? >>> I rewrite DoPropagateInterest function and choose the interface as follows: >>> >>> BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get ()) >>> { >>> if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry)) >>> { >>> if(m_drop_cause == 1) >>> continue; >>> else break; >>> } >>> propagatedCount++; >>> break; >>> } >>> return propagatedCount > 0; >>> >>> Is it correct and the problem should not come from this piece? >>> >>> Thanks, >>> Natalya >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Sat Mar 9 17:47:51 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sun, 10 Mar 2013 08:47:51 +0700 Subject: [ndnSIM] FaceIterator In-Reply-To: <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> Message-ID: <1953561362880071@web3d.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 9 18:40:14 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 9 Mar 2013 18:40:14 -0800 Subject: [ndnSIM] FaceIterator In-Reply-To: <1953561362880071@web3d.yandex.ru> References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> <1953561362880071@web3d.yandex.ru> Message-ID: <9075F3BE-4380-4FAF-8EED-4151A25EFF7C@ucla.edu> Hi again, 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... --- Alex On Mar 9, 2013, at 5:47 PM, Natalya Rozhnova wrote: > Hi Alex, > > 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... > Is it possible to fix it somehow? > > Thanks! > Natalya > > 10.03.2013, 08:01, "Alex Afanasyev" : >> Hi Natalya, >> >> 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. >> >> 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? >> >> --- >> Alex >> >> On Mar 9, 2013, at 4:05 PM, Natalya Rozhnova wrote: >> >>> Hi Alex, >>> >>> 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. >>> 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). >>> >>> Oh, yes, I use i_metric. The i_nth was just the last attempt to see if it can change anything. >>> >>> Thanks, >>> Natalya >>> >>> >>> 10.03.2013, 06:16, "Alex Afanasyev" : >>>> Hi Natalya, >>>> >>>> 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? >>>> >>>> Another side question. Are you intentionally not using metric to rank faces (fib::i_nth instead of fib::i_metric)? >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 9, 2013, at 1:47 PM, Natalya Rozhnova wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> 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? >>>>> I rewrite DoPropagateInterest function and choose the interface as follows: >>>>> >>>>> BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get ()) >>>>> { >>>>> if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry)) >>>>> { >>>>> if(m_drop_cause == 1) >>>>> continue; >>>>> else break; >>>>> } >>>>> propagatedCount++; >>>>> break; >>>>> } >>>>> return propagatedCount > 0; >>>>> >>>>> Is it correct and the problem should not come from this piece? >>>>> >>>>> Thanks, >>>>> Natalya >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Sat Mar 9 18:51:46 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sun, 10 Mar 2013 09:51:46 +0700 Subject: [ndnSIM] FaceIterator In-Reply-To: <9075F3BE-4380-4FAF-8EED-4151A25EFF7C@ucla.edu> References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> <1953561362880071@web3d.yandex.ru> <9075F3BE-4380-4FAF-8EED-4151A25EFF7C@ucla.edu> Message-ID: <1957691362883906@web3d.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 9 19:01:04 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 9 Mar 2013 19:01:04 -0800 Subject: [ndnSIM] FaceIterator In-Reply-To: <1957691362883906@web3d.yandex.ru> References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> <1953561362880071@web3d.yandex.ru> <9075F3BE-4380-4FAF-8EED-4151A25EFF7C@ucla.edu> <1957691362883906@web3d.yandex.ru> Message-ID: <3232F296-DBF3-41DF-AA75-DA71DBCF4B42@ucla.edu> I still want to clarify first what do you mean by "Consumer"? Consumer node or a specific consumer application on the "consumer" node? If you are talking about a Consumer node and generating NACKs back to the application when forwarding cannot forward just received interest from the application, then it is definitely a right thing to do. --- Alex On Mar 9, 2013, at 6:51 PM, Natalya Rozhnova wrote: > Hummm... please, let me ask a little question so... I want to make ForwardingStrategy to generate NACKs if transmission queue is full and there are no more available faces to reroute Interests. I add this condition in Nacks::DidExhaustForwardingOptions. Is it right that Consumer will also execute DidExhaustForwardingOptions to generate an NACK if its transmission queue is full? > > Thanks, > Natalya > > 10.03.2013, 09:40, "Alex Afanasyev" : >> Hi again, >> >> 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... >> >> --- >> Alex >> >> On Mar 9, 2013, at 5:47 PM, Natalya Rozhnova wrote: >> >>> Hi Alex, >>> >>> 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... >>> Is it possible to fix it somehow? >>> >>> Thanks! >>> Natalya >>> >>> 10.03.2013, 08:01, "Alex Afanasyev" : >>>> Hi Natalya, >>>> >>>> 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. >>>> >>>> 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? >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 9, 2013, at 4:05 PM, Natalya Rozhnova wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> 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. >>>>> 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). >>>>> >>>>> Oh, yes, I use i_metric. The i_nth was just the last attempt to see if it can change anything. >>>>> >>>>> Thanks, >>>>> Natalya >>>>> >>>>> >>>>> 10.03.2013, 06:16, "Alex Afanasyev" : >>>>>> Hi Natalya, >>>>>> >>>>>> 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? >>>>>> >>>>>> Another side question. Are you intentionally not using metric to rank faces (fib::i_nth instead of fib::i_metric)? >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 9, 2013, at 1:47 PM, Natalya Rozhnova wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> >>>>>>> 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? >>>>>>> I rewrite DoPropagateInterest function and choose the interface as follows: >>>>>>> >>>>>>> BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get ()) >>>>>>> { >>>>>>> if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry)) >>>>>>> { >>>>>>> if(m_drop_cause == 1) >>>>>>> continue; >>>>>>> else break; >>>>>>> } >>>>>>> propagatedCount++; >>>>>>> break; >>>>>>> } >>>>>>> return propagatedCount > 0; >>>>>>> >>>>>>> Is it correct and the problem should not come from this piece? >>>>>>> >>>>>>> Thanks, >>>>>>> Natalya >>>>>>> _______________________________________________ >>>>>>> ndnSIM mailing list >>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Sat Mar 9 19:17:43 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sun, 10 Mar 2013 10:17:43 +0700 Subject: [ndnSIM] FaceIterator In-Reply-To: <3232F296-DBF3-41DF-AA75-DA71DBCF4B42@ucla.edu> References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> <1953561362880071@web3d.yandex.ru> <9075F3BE-4380-4FAF-8EED-4151A25EFF7C@ucla.edu> <1957691362883906@web3d.yandex.ru> <3232F296-DBF3-41DF-AA75-DA71DBCF4B42@ucla.edu> Message-ID: <1960591362885463@web3d.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 9 19:24:12 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 9 Mar 2013 19:24:12 -0800 Subject: [ndnSIM] FaceIterator In-Reply-To: <1960591362885463@web3d.yandex.ru> References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> <1953561362880071@web3d.yandex.ru> <9075F3BE-4380-4FAF-8EED-4151A25EFF7C@ucla.edu> <1957691362883906@web3d.yandex.ru> <3232F296-DBF3-41DF-AA75-DA71DBCF4B42@ucla.edu> <1960591362885463@web3d.yandex.ru> Message-ID: Hi Natalya, No worries. You're always highly welcome here. Just in case it may help. Due to the nature of message passing in NS-3 (mostly callbacks), you should be careful in cases of message passing inside the same node. For example in your case, when a node sends out an Interest and this Interest gets "NACKed" inside the same node, the consumer application will receive NACK before you exit SendInterest function (i.e., you can see something like "send call in ConsumerApp"->fw processing->...->DidExhaustForwarding->"onNack in ConsumerApp" stack trace). This may or may not be related in your case, but I was having hard time a couple of times trying to figure out what is happening. --- Alex On Mar 9, 2013, at 7:17 PM, Natalya Rozhnova wrote: > Yes yes, I mean a Consumer node, not application. > Ok, now I see where the NACKs come from and that I were looking for a bug I didn't have. > Thanks, Alex! And sorry for disturbing you. > > Natalya > > > 10.03.2013, 10:01, "Alex Afanasyev" : >> I still want to clarify first what do you mean by "Consumer"? Consumer node or a specific consumer application on the "consumer" node? >> >> If you are talking about a Consumer node and generating NACKs back to the application when forwarding cannot forward just received interest from the application, then it is definitely a right thing to do. >> >> --- >> Alex >> >> On Mar 9, 2013, at 6:51 PM, Natalya Rozhnova wrote: >> >>> Hummm... please, let me ask a little question so... I want to make ForwardingStrategy to generate NACKs if transmission queue is full and there are no more available faces to reroute Interests. I add this condition in Nacks::DidExhaustForwardingOptions. Is it right that Consumer will also execute DidExhaustForwardingOptions to generate an NACK if its transmission queue is full? >>> >>> Thanks, >>> Natalya >>> >>> 10.03.2013, 09:40, "Alex Afanasyev" : >>>> Hi again, >>>> >>>> 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... >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 9, 2013, at 5:47 PM, Natalya Rozhnova wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> 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... >>>>> Is it possible to fix it somehow? >>>>> >>>>> Thanks! >>>>> Natalya >>>>> >>>>> 10.03.2013, 08:01, "Alex Afanasyev" : >>>>>> Hi Natalya, >>>>>> >>>>>> 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. >>>>>> >>>>>> 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? >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 9, 2013, at 4:05 PM, Natalya Rozhnova wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> >>>>>>> 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. >>>>>>> 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). >>>>>>> >>>>>>> Oh, yes, I use i_metric. The i_nth was just the last attempt to see if it can change anything. >>>>>>> >>>>>>> Thanks, >>>>>>> Natalya >>>>>>> >>>>>>> >>>>>>> 10.03.2013, 06:16, "Alex Afanasyev" : >>>>>>>> Hi Natalya, >>>>>>>> >>>>>>>> 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? >>>>>>>> >>>>>>>> Another side question. Are you intentionally not using metric to rank faces (fib::i_nth instead of fib::i_metric)? >>>>>>>> >>>>>>>> --- >>>>>>>> Alex >>>>>>>> >>>>>>>> On Mar 9, 2013, at 1:47 PM, Natalya Rozhnova wrote: >>>>>>>> >>>>>>>>> Hi Alex, >>>>>>>>> >>>>>>>>> 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? >>>>>>>>> I rewrite DoPropagateInterest function and choose the interface as follows: >>>>>>>>> >>>>>>>>> BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get ()) >>>>>>>>> { >>>>>>>>> if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry)) >>>>>>>>> { >>>>>>>>> if(m_drop_cause == 1) >>>>>>>>> continue; >>>>>>>>> else break; >>>>>>>>> } >>>>>>>>> propagatedCount++; >>>>>>>>> break; >>>>>>>>> } >>>>>>>>> return propagatedCount > 0; >>>>>>>>> >>>>>>>>> Is it correct and the problem should not come from this piece? >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Natalya >>>>>>>>> _______________________________________________ >>>>>>>>> ndnSIM mailing list >>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>> _______________________________________________ >>>>>>> ndnSIM mailing list >>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Sat Mar 9 19:31:58 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sun, 10 Mar 2013 10:31:58 +0700 Subject: [ndnSIM] FaceIterator In-Reply-To: References: <2011781362865660@web5g.yandex.ru> <2138791362873919@web6h.yandex.ru> <2C7D4188-4C72-413A-970D-B9AE262C15F5@ucla.edu> <1953561362880071@web3d.yandex.ru> <9075F3BE-4380-4FAF-8EED-4151A25EFF7C@ucla.edu> <1957691362883906@web3d.yandex.ru> <3232F296-DBF3-41DF-AA75-DA71DBCF4B42@ucla.edu> <1960591362885463@web3d.yandex.ru> Message-ID: <1962181362886318@web3d.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 9 20:46:15 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 9 Mar 2013 20:46:15 -0800 Subject: [ndnSIM] question about PyViz visualizer when installing In-Reply-To: References: Message-ID: <11935DCD-40D9-44BA-B571-2DADE9B3C6BA@ucla.edu> Hi Yao, Sorry for the delayed reply. I was trying to figure out what is happening with Fedora. Apparently, pygraphviz is not yet packaged even in the latest Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=740687) and graphviz-python is apparently something totally different and unrelated to pygraphviz. In any case, there is an easy method to make it work on Fedore (I just updated downloading section on ndnsim.net website): sudo yum install pygoocanvas python-kiwi graphviz-python # easy_install method, since pygraphviz is not yet packaged into Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=740687) sudo yum install graphviz-devel sudo yum install python-pip sudo easy_install pygraphviz I just checked these instruction in my fresh fedora 16 installation running in a virtual machine and they are worked. I was even able to run an example simulation in visualizer. Let us know if you still have problems. --- Alex On Mar 6, 2013, at 4:41 AM, yao hu wrote: > Dear all, > > Hello, everybody. I am new to ndnsim. I have a question about PyViz visualizer. Could you help me? > > I am a fedora16 user and now installing ndnsim according to the instruction on the HP http://ndnsim.net/getting-started.html#downloading-ndnsim-source. > There is no problem when I `configure` without python bindings using the following command > > ./waf configure --disable-python --enable-examples > > However, when I `configure` using the following command in order to run simulations with visualizer > > ./waf configure --enable-examples > > The PyViz visualizer line will be shown as follows > PyViz visualizer : not enabled (Missing python modules: pygraphviz) > > It seems that the pygraphviz was not installed, but actually it has been already installed. > Package graphviz-python-2.28.0-11.fc16.i686 already installed and latest version > > Does anybody know what is the cause of this? Thanks in advance! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Mar 9 22:48:31 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 10 Mar 2013 15:48:31 +0900 Subject: [ndnSIM] question about PyViz visualizer when installing In-Reply-To: <11935DCD-40D9-44BA-B571-2DADE9B3C6BA@ucla.edu> References: <11935DCD-40D9-44BA-B571-2DADE9B3C6BA@ucla.edu> Message-ID: Dear Alex, Thanks very much for your explanation. After I did the following instruction, it works now. sudo yum install graphviz-devel sudo easy_install pygraphviz And also I can run the example simulations in visualizer. Thanks again for your reply. 2013/3/10 Alex Afanasyev > Hi Yao, > > Sorry for the delayed reply. I was trying to figure out what is happening > with Fedora. Apparently, pygraphviz is not yet packaged even in the > latest Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=740687) and > graphviz-python is apparently something totally different and unrelated to > pygraphviz. > > In any case, there is an easy method to make it work on Fedore (I just > updated downloading section on ndnsim.net website): > > sudo yum install pygoocanvas python-kiwi graphviz-python > # easy_install method, since pygraphviz is not yet packaged into Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=740687) > sudo yum install graphviz-devel > sudo yum install python-pip > sudo easy_install pygraphviz > > > I just checked these instruction in my fresh fedora 16 installation > running in a virtual machine and they are worked. I was even able to run > an example simulation in visualizer. > > Let us know if you still have problems. > > --- > Alex > > On Mar 6, 2013, at 4:41 AM, yao hu wrote: > > Dear all, > > Hello, everybody. I am new to ndnsim. I have a question about PyViz > visualizer. Could you help me? > > I am a fedora16 user and now installing ndnsim according to the > instruction on the HP > http://ndnsim.net/getting-started.html#downloading-ndnsim-source. > There is no problem when I `configure` without python bindings using the > following command > > ./waf configure --disable-python --enable-examples > > > However, when I `configure` using the following command in order to run > simulations with visualizer > > ./waf configure --enable-examples > > > The PyViz visualizer line will be shown as follows > PyViz visualizer : not enabled (Missing python modules: pygraphviz) > > It seems that the pygraphviz was not installed, but actually it has been > already installed. > Package graphviz-python-2.28.0-11.fc16.i686 already installed and latest > version > > Does anybody know what is the cause of this? Thanks in advance! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Sun Mar 10 05:18:28 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Sun, 10 Mar 2013 20:18:28 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> Message-ID: Hi Alex, First, I have fix the hop count = -1 (test passed), maybe we can merge this first. I have sent you a pull request on GitHub. I am also try to design two tags. P,S, Is there any way to make the Forward Strategy works like IP? Because I want to compare NDN with IP, no retransmission on the middle node, I mean the Nack/timeout leads to rechoose another path and leave all the retransmission work to end nodes. And of course, only one path is selected for one prefix. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 10, 2013, at 5:14 AM, Alex Afanasyev wrote: > Hi Xiaoke, > > I like the idea of creating a separate tag just to track content hops. We can actually create a two classes derived from the existing FwHopCountTag, one to track Interest hops (including all the NACKing) and one explicitly for ContentObject hops. > > I wouldn't do increase by 2, as application can figure out itself that real number of round-trip hops is twice as many as just content object hops (or we can have a helper method for that). > > There are several places where new tag needs to be created/updated: ndn-face.cc (somewhere around line 132), ndn-forwarding-strategy.cc (around line 183), and of course in nacks.cc, ndn-consumer.cc, and ndn-producer.cc. > > As for the current hopCount tag, there are legitimate cases when you will get odd number. I can't exactly recall right now what they are, but I think it is related to cached content objects. > > > Thanks for the help, > Alex > > > On Mar 8, 2013, at 7:56 PM, Xiaoke Jiang wrote: > >> Hi Alex, >> I would like to try to solve it with second solution. Now here is my design: add a new tag, named TX-tag for content packet, after Interest meets a Content, we add the TX-tag to the content with initial value 0 and the TX increase by 2 every time. What do you think? >> >> And of course, we should let onNack function add the hopCount Tag. >> >> As to hopCount, is must be an even number, right? bug I get some odd number. The amount is very small, but I do get. >> >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Mar 9, 2013, at 3:43 AM, Alex Afanasyev wrote: >> >>> Hi Xiaoke, >>> >>> Not exactly. Right now -1 will be returned either for Interests or ContentObject, if the Interest on the way get "bounced" with NACKs at least one. >>> >>> Let me illustrate with a simple example: >>> >>> C----R1---X >>> | >>> +----R2----P >>> >>> C sends an interest and R1 originally forwards it towards X. X sends out NACK (which is Interest with NACK code in it) back to R1. At this point, HopCounter tag got destroyed, so when P finally receives the Interest (which will no longer be NACK), this interest will not have HopCounter tag attached, making producer not to include HopCounter tag to the content object. Finally, when C gets back data, this data will not have a HopCounter tag, and will return -1 for DATA. >>> >>> In a simple fix, we should just keep along the original HopCounter tag when Interest-NACKs are getting created in ndn::fw::Nacks (model/fw/nacks.cc). In a better solution, and I would really appreciate if you can help with implementation, we probably need to count real hops and NACKed hops slightly separately. For example, there should be counter to track number of hops that data packet followed, number of hops including all NACK returns, and may be something else. >>> >>> Thanks, >>> Alex >>> >>> On Mar 8, 2013, at 12:40 AM, Xiaoke Jiang wrote: >>> >>>> Maybe in OnContentObject, the packet should be checked first, if it is a Nack, call onNack to process it. >>>> >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Mar 8, 2013, at 4:07 PM, Xiaoke Jiang wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> >>>>> in Consumer.cc, in the function OnContentObject, according to your email, it may also process Nack, right? if hopCount = -1, it means the Packet is a Nack, but it still print that the Data is comming. >>>>> >>>>> >>>>> uint32_t seq = boost::lexical_cast (contentObject->GetName ().GetComponents ().back ()); >>>>> NS_LOG_INFO ("< DATA for " << seq); >>>>> >>>>> int hopCount = -1; >>>>> FwHopCountTag hopCountTag; >>>>> if (payload->RemovePacketTag (hopCountTag)) >>>>> { >>>>> hopCount = hopCountTag.Get (); >>>>> } >>>>> >>>>> >>>>> That's quit strange. >>>>> >>>>> thanks >>>>> >>>>> My Regards, >>>>> Xiaoke Jiang ????? >>>>> >>>>> Ph.D Candidate, >>>>> Dept. of Computer Science and Technology, >>>>> Tsinghua University, P. R. China >>>>> >>>>> On Mar 8, 2013, at 11:37 AM, Xiaoke Jiang wrote: >>>>> >>>>>> Hi Alex, >>>>>> I add an issue here: https://github.com/NDN-Routing/ndnSIM/issues/26 , but I am not sure it is what you want. >>>>>> >>>>>> P.S, when do you plan to merge new Rtt Estimator? >>>>>> >>>>>> >>>>>> thanks >>>>>> >>>>>> My Regards, >>>>>> Xiaoke Jiang ????? >>>>>> >>>>>> Ph.D Candidate, >>>>>> Dept. of Computer Science and Technology, >>>>>> Tsinghua University, P. R. China >>>>>> >>>>>> On Mar 8, 2013, at 11:31 AM, Alex Afanasyev wrote: >>>>>> >>>>>>> Hi Xiaoke, >>>>>>> >>>>>>> Yes. I haven't yet had chance to make the implementation and -1 will mean that somewhere on the way Interest got "NACKed". Can you open an issue for this on github? >>>>>>> >>>>>>> Thanks, >>>>>>> Alex >>>>>>> >>>>>>> On Mar 7, 2013, at 7:16 PM, Xiaoke Jiang wrote: >>>>>>> >>>>>>>> Hi Alex, >>>>>>>> I am not sure whether you have improve hop count or not. Now as far as I can understand, hop count = -1 means Interest got Nack (from provider or middle router). >>>>>>>> Is it accurate? >>>>>>>> >>>>>>>> >>>>>>>> thanks >>>>>>>> >>>>>>>> My Regards, >>>>>>>> Xiaoke Jiang ????? >>>>>>>> >>>>>>>> Ph.D Candidate, >>>>>>>> Dept. of Computer Science and Technology, >>>>>>>> Tsinghua University, P. R. China >>>>>>>> >>>>>>>> On Jan 23, 2013, at 1:36 AM, Alex Afanasyev wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> On Jan 21, 2013, at 11:18 PM, Xiaoke Jiang wrote: >>>>>>>>> >>>>>>>>>> Thank you Alex. Your email really makes sense. >>>>>>>>>> >>>>>>>>>> I think for a Interest-Nack there is same problem with Interest-Content, hop count for last transmission and hop count for whole transmission(This is quit important, which can measure hop cost of request), what do you think? >>>>>>>>>> >>>>>>>>>> For our trace, there is trace information for those interest who gets its data, in this case, if hopcount=-1, it means a Nack return but not data, is it suitable to not print trace information, RIGHT? >>>>>>>>>> >>>>>>>>>> FYI, it's quit strange, because this code is inside OnContent function, but not OnNack. >>>>>>>>> >>>>>>>>> There is another thing with hop counting. It is implemented using packet tags, which means that packets tags in the Interest should be transferred to the Content Object. With NACKs, these tags are getting lost when NACK is generated, because I didn't consider tags when I originally implemented them. As a result, as soon as something get nacked, the tag is lost and can't reappear again in ContentObject. >>>>>>>>> >>>>>>>>> The "fix" to preserve hop count in NACKs is trivial. Less trivial is to count whole transmission and last transmission separately... >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Alex >>>>>>> >>>>>> >>>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From panhgshine at 163.com Sun Mar 10 05:53:39 2013 From: panhgshine at 163.com (panhgshine at 163.com) Date: Sun, 10 Mar 2013 20:53:39 +0800 (CST) Subject: [ndnSIM] How to get a node's neighbour Message-ID: <7527c8f1.a5f5.13d545d14bc.Coremail.panhgshine@163.com> Hi All, I'm a beginner of NS3 and ndnSIM. Recently, I have read the cache replacement policy code. Now, I want to get a node's all neighbour. Is there anyone can give me some advice or hint? Thank you in advance. Pan -------------- next part -------------- An HTML attachment was scrubbed... URL: From lixia at cs.ucla.edu Sun Mar 10 07:20:46 2013 From: lixia at cs.ucla.edu (Lixia Zhang) Date: Sun, 10 Mar 2013 07:20:46 -0700 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> Message-ID: On Mar 10, 2013, at 5:18 AM, Xiaoke Jiang wrote: > Hi Alex, > First, I have fix the hop count = -1 (test passed), maybe we can merge this first. I have sent you a pull request on GitHub. I am also try to design two tags. > > P,S, Is there any way to make the Forward Strategy works like IP? Because I want to compare NDN with IP, no retransmission on the middle node, I mean the Nack/timeout leads to rechoose another path and leave all the retransmission work to end nodes. And of course, only one path is selected for one prefix. I happened to cross this msg (apology for jumping in the middle of a dialog): I would like to better understand exactly what you concern is. as I understand, intermediate routers only do retries (in your word, rechoose another path). Retransmission is indeed the responsibility of end nodes; NDN network does not guarantee reliable delivery of Interest. > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Mar 10, 2013, at 5:14 AM, Alex Afanasyev wrote: > >> Hi Xiaoke, >> >> I like the idea of creating a separate tag just to track content hops. We can actually create a two classes derived from the existing FwHopCountTag, one to track Interest hops (including all the NACKing) and one explicitly for ContentObject hops. >> >> I wouldn't do increase by 2, as application can figure out itself that real number of round-trip hops is twice as many as just content object hops (or we can have a helper method for that). >> >> There are several places where new tag needs to be created/updated: ndn-face.cc (somewhere around line 132), ndn-forwarding-strategy.cc (around line 183), and of course in nacks.cc, ndn-consumer.cc, and ndn-producer.cc. >> >> As for the current hopCount tag, there are legitimate cases when you will get odd number. I can't exactly recall right now what they are, but I think it is related to cached content objects. >> >> >> Thanks for the help, >> Alex >> >> >> On Mar 8, 2013, at 7:56 PM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> I would like to try to solve it with second solution. Now here is my design: add a new tag, named TX-tag for content packet, after Interest meets a Content, we add the TX-tag to the content with initial value 0 and the TX increase by 2 every time. What do you think? >>> >>> And of course, we should let onNack function add the hopCount Tag. >>> >>> As to hopCount, is must be an even number, right? bug I get some odd number. The amount is very small, but I do get. >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> >>> On Mar 9, 2013, at 3:43 AM, Alex Afanasyev wrote: >>> >>>> Hi Xiaoke, >>>> >>>> Not exactly. Right now -1 will be returned either for Interests or ContentObject, if the Interest on the way get "bounced" with NACKs at least one. >>>> >>>> Let me illustrate with a simple example: >>>> >>>> C----R1---X >>>> | >>>> +----R2----P >>>> >>>> C sends an interest and R1 originally forwards it towards X. X sends out NACK (which is Interest with NACK code in it) back to R1. At this point, HopCounter tag got destroyed, so when P finally receives the Interest (which will no longer be NACK), this interest will not have HopCounter tag attached, making producer not to include HopCounter tag to the content object. Finally, when C gets back data, this data will not have a HopCounter tag, and will return -1 for DATA. >>>> >>>> In a simple fix, we should just keep along the original HopCounter tag when Interest-NACKs are getting created in ndn::fw::Nacks (model/fw/nacks.cc). In a better solution, and I would really appreciate if you can help with implementation, we probably need to count real hops and NACKed hops slightly separately. For example, there should be counter to track number of hops that data packet followed, number of hops including all NACK returns, and may be something else. >>>> >>>> Thanks, >>>> Alex -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 10 11:33:22 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 10 Mar 2013 11:33:22 -0700 Subject: [ndnSIM] How to get a node's neighbour In-Reply-To: <7527c8f1.a5f5.13d545d14bc.Coremail.panhgshine@163.com> References: <7527c8f1.a5f5.13d545d14bc.Coremail.panhgshine@163.com> Message-ID: Hi Pan, In general, as in real system, you would need to implement some kind of a resource discovery protocol to discover all node's neighbors. At the same time, in NS-3, since it is a simulation, it is technically possible to "discover" neighbors directly: In NS-3 in general, you would enumerate all NetDevice's on a particular Node object (http://www.nsnam.org/doxygen/classns3_1_1_node.html): for (uint32_t deviceId = 0; deviceId < node->GetNDevices (); deviceId ++) { Ptr device = node->GetDevice (deviceId); # get channel, to which device is connected (a "wire") Ptr channel = device->GetChannel (); for (uint32_t channelDeviceId = 0; channelDeviceId < channel->GetNDevices (); channelDeviceId ++) { Ptr channelDevice = channel->GetDevice (channelDeviceId); if (channelDevice == device) continue; # channelDevice is a "neighbor" } } --- Alex On Mar 10, 2013, at 5:53 AM, panhgshine at 163.com wrote: > Hi All, > > I'm a beginner of NS3 and ndnSIM. Recently, I have read the cache replacement policy code. > Now, I want to get a node's all neighbour. > Is there anyone can give me some advice or hint? > > Thank you in advance. > > Pan From alexander.afanasyev at ucla.edu Sun Mar 10 12:15:03 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 10 Mar 2013 12:15:03 -0700 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> Message-ID: <216B0BDD-94AE-43CC-99D8-CB05B53D012A@ucla.edu> Hi Xiaoke, Thank you very much for your commit! I have merged it with some minor corrections. For the later fixes, you can create a new branch (e.g., git checkout -b issue-27 origin/issue-27-hop-count-fix). You can also put "Issue #27" at the beginning of the commit message, this way github will associate commit to the issue. Regarding to you other question. I'm not entirely sure what is your concern. The available forwarding strategies in ndnSIM do not ask routers to do "retransmission" (as Lixia mentioned in another email, routers can merely "retry" if "asked" by NACK or new interest from the consumer). The whole responsibility to retransmit (in case something was lost) is solely end-client (consumer app) responsibility. Did I misunderstand your question? Thanks again, Alex On Mar 10, 2013, at 5:18 AM, Xiaoke Jiang wrote: > Hi Alex, > First, I have fix the hop count = -1 (test passed), maybe we can merge this first. I have sent you a pull request on GitHub. I am also try to design two tags. > > P,S, Is there any way to make the Forward Strategy works like IP? Because I want to compare NDN with IP, no retransmission on the middle node, I mean the Nack/timeout leads to rechoose another path and leave all the retransmission work to end nodes. And of course, only one path is selected for one prefix. > > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Sun Mar 10 19:04:17 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Mon, 11 Mar 2013 10:04:17 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> Message-ID: <9045C77F-E4FE-4DC2-AB76-8F90F2F98F40@gmail.com> Hi Lixia, Alex, Intermediate routers do retry but not retransmit, that's what I mean in my last email. I am sorry for the wrong expression. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 10, 2013, at 10:20 PM, Lixia Zhang wrote: > > On Mar 10, 2013, at 5:18 AM, Xiaoke Jiang wrote: > >> Hi Alex, >> First, I have fix the hop count = -1 (test passed), maybe we can merge this first. I have sent you a pull request on GitHub. I am also try to design two tags. >> >> P,S, Is there any way to make the Forward Strategy works like IP? Because I want to compare NDN with IP, no retransmission on the middle node, I mean the Nack/timeout leads to rechoose another path and leave all the retransmission work to end nodes. And of course, only one path is selected for one prefix. > > I happened to cross this msg (apology for jumping in the middle of a dialog): I would like to better understand exactly what you concern is. as I understand, intermediate routers only do retries (in your word, rechoose another path). > > Retransmission is indeed the responsibility of end nodes; NDN network does not guarantee reliable delivery of Interest. > > >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Mar 10, 2013, at 5:14 AM, Alex Afanasyev wrote: >> >>> Hi Xiaoke, >>> >>> I like the idea of creating a separate tag just to track content hops. We can actually create a two classes derived from the existing FwHopCountTag, one to track Interest hops (including all the NACKing) and one explicitly for ContentObject hops. >>> >>> I wouldn't do increase by 2, as application can figure out itself that real number of round-trip hops is twice as many as just content object hops (or we can have a helper method for that). >>> >>> There are several places where new tag needs to be created/updated: ndn-face.cc (somewhere around line 132), ndn-forwarding-strategy.cc (around line 183), and of course in nacks.cc, ndn-consumer.cc, and ndn-producer.cc. >>> >>> As for the current hopCount tag, there are legitimate cases when you will get odd number. I can't exactly recall right now what they are, but I think it is related to cached content objects. >>> >>> >>> Thanks for the help, >>> Alex >>> >>> >>> On Mar 8, 2013, at 7:56 PM, Xiaoke Jiang wrote: >>> >>>> Hi Alex, >>>> I would like to try to solve it with second solution. Now here is my design: add a new tag, named TX-tag for content packet, after Interest meets a Content, we add the TX-tag to the content with initial value 0 and the TX increase by 2 every time. What do you think? >>>> >>>> And of course, we should let onNack function add the hopCount Tag. >>>> >>>> As to hopCount, is must be an even number, right? bug I get some odd number. The amount is very small, but I do get. >>>> >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Mar 9, 2013, at 3:43 AM, Alex Afanasyev wrote: >>>> >>>>> Hi Xiaoke, >>>>> >>>>> Not exactly. Right now -1 will be returned either for Interests or ContentObject, if the Interest on the way get "bounced" with NACKs at least one. >>>>> >>>>> Let me illustrate with a simple example: >>>>> >>>>> C----R1---X >>>>> | >>>>> +----R2----P >>>>> >>>>> C sends an interest and R1 originally forwards it towards X. X sends out NACK (which is Interest with NACK code in it) back to R1. At this point, HopCounter tag got destroyed, so when P finally receives the Interest (which will no longer be NACK), this interest will not have HopCounter tag attached, making producer not to include HopCounter tag to the content object. Finally, when C gets back data, this data will not have a HopCounter tag, and will return -1 for DATA. >>>>> >>>>> In a simple fix, we should just keep along the original HopCounter tag when Interest-NACKs are getting created in ndn::fw::Nacks (model/fw/nacks.cc). In a better solution, and I would really appreciate if you can help with implementation, we probably need to count real hops and NACKed hops slightly separately. For example, there should be counter to track number of hops that data packet followed, number of hops including all NACK returns, and may be something else. >>>>> >>>>> Thanks, >>>>> Alex -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Sun Mar 10 19:33:53 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Mon, 11 Mar 2013 10:33:53 +0800 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <216B0BDD-94AE-43CC-99D8-CB05B53D012A@ucla.edu> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> <216B0BDD-94AE-43CC-99D8-CB05B53D012A@ucla.edu> Message-ID: <3D628A52-9E5A-449E-9D58-AE68D23EFBA3@gmail.com> Hi Alex, In your paper "A Case for Stateful Forwarding Plane", you have compared performance of NDN, Path Splicing and IP, eg, the following figure. How do you implement the IP part? thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Mar 11, 2013, at 3:15 AM, Alex Afanasyev wrote: > Hi Xiaoke, > > Thank you very much for your commit! > > I have merged it with some minor corrections. For the later fixes, you can create a new branch (e.g., git checkout -b issue-27 origin/issue-27-hop-count-fix). You can also put "Issue #27" at the beginning of the commit message, this way github will associate commit to the issue. > > Regarding to you other question. I'm not entirely sure what is your concern. The available forwarding strategies in ndnSIM do not ask routers to do "retransmission" (as Lixia mentioned in another email, routers can merely "retry" if "asked" by NACK or new interest from the consumer). The whole responsibility to retransmit (in case something was lost) is solely end-client (consumer app) responsibility. Did I misunderstand your question? > > Thanks again, > Alex > > On Mar 10, 2013, at 5:18 AM, Xiaoke Jiang wrote: > >> Hi Alex, >> First, I have fix the hop count = -1 (test passed), maybe we can merge this first. I have sent you a pull request on GitHub. I am also try to design two tags. >> >> P,S, Is there any way to make the Forward Strategy works like IP? Because I want to compare NDN with IP, no retransmission on the middle node, I mean the Nack/timeout leads to rechoose another path and leave all the retransmission work to end nodes. And of course, only one path is selected for one prefix. >> >> >> >> thanks >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screen Shot 2013-03-11 at 10.33.27 AM.png Type: image/png Size: 26792 bytes Desc: not available URL: From panhgshine at 163.com Mon Mar 11 08:24:18 2013 From: panhgshine at 163.com (panhgshine at 163.com) Date: Mon, 11 Mar 2013 23:24:18 +0800 (CST) Subject: [ndnSIM] How to get a node's neighbour In-Reply-To: References: <7527c8f1.a5f5.13d545d14bc.Coremail.panhgshine@163.com> Message-ID: <47923a73.12fcd.13d5a0d5f3b.Coremail.panhgshine@163.com> Hi Alex, Thank you very much! You let me understand much better to the problem. By the way, how can I get the request node. In cache replacement policy, such as: lru_policy_traits, freshness_policy_traits, I don't know how to get which node request the *item data. Can you help me? And my thoughts is wrong or not? Thank you! Pan At 2013-03-11 02:33:22,"Alex Afanasyev" wrote: >Hi Pan, > >In general, as in real system, you would need to implement some kind of a resource discovery protocol to discover all node's neighbors. At the same time, in NS-3, since it is a simulation, it is technically possible to "discover" neighbors directly: > >In NS-3 in general, you would enumerate all NetDevice's on a particular Node object (http://www.nsnam.org/doxygen/classns3_1_1_node.html): > >for (uint32_t deviceId = 0; deviceId < node->GetNDevices (); deviceId ++) >{ > Ptr device = node->GetDevice (deviceId); > > # get channel, to which device is connected (a "wire") > Ptr channel = device->GetChannel (); > > for (uint32_t channelDeviceId = 0; channelDeviceId < channel->GetNDevices (); channelDeviceId ++) > { > Ptr channelDevice = channel->GetDevice (channelDeviceId); > if (channelDevice == device) > continue; > > # channelDevice is a "neighbor" > } >} > >--- >Alex > >On Mar 10, 2013, at 5:53 AM, panhgshine at 163.com wrote: > >> Hi All, >> >> I'm a beginner of NS3 and ndnSIM. Recently, I have read the cache replacement policy code. >> Now, I want to get a node's all neighbour. >> Is there anyone can give me some advice or hint? >> >> Thank you in advance. >> >> Pan > > >_______________________________________________ >ndnSIM mailing list >ndnSIM at lists.cs.ucla.edu >http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 11 13:07:37 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 11 Mar 2013 13:07:37 -0700 Subject: [ndnSIM] can't get Nack when congestion In-Reply-To: <3D628A52-9E5A-449E-9D58-AE68D23EFBA3@gmail.com> References: <2A0011A8-BCBD-4731-894F-14342D7272CC@gmail.com> <54C6E944-D13F-407E-A3AF-0A22520D988C@ucla.edu> <6B637EF8-DF9D-4CCD-86B3-FB605A46809B@ucla.edu> <74B772D9-679A-4502-BB84-04D18A3A4673@gmail.com> <6C360EDB-3F15-483C-94D6-2A0432D26773@ucla.edu> <215A9B5E-B603-4ED9-A46B-A79F0881B7DC@gmail.com> <135B6EB8-FDC7-443C-8188-4057C197163F@gmail.com> <4003C44B-486B-4BF3-812E-50B122B860D0@gmail.com> <5F822C3D-3064-4CDC-834F-038578C9E981@gmail.com> <381A36E4-C54D-4965-920E-6DFB5B3A8FDA@ucla.edu> <1AA7F1A2-56ED-431E-A5D4-0CFB424CE713@gmail.com> <8E1CEAC5-3FE4-4CCD-A7AE-439D1E49ACD5@ucla.edu> <216B0BDD-94AE-43CC-99D8-CB05B53D012A@ucla.edu> <3D628A52-9E5A-449E-9D58-AE68D23EFBA3@gmail.com> Message-ID: <6AE7630E-E703-4A6E-A8E7-39D7C9CB4A4A@ucla.edu> Hi Xiaoke, Sorry for a little bit delayed answer. There is no need to "emulate" IP using ndnSIM. What we did is we just used available IP simulation capabilities (internet module) to simulate IP-based reaction to the same events. You can check out this repo https://github.com/cawka/ndnSIM-comcom-stateful-fw for paper's scenarios. I haven't yet fully converted our old simulations from the paper to ndnSIM, but for the congestion-related scenarios, we used two completely separated scenarios: one to evaluate NDN using ndnSIM (https://github.com/cawka/ndnSIM-comcom-stateful-fw/blob/master/scenarios/congestion-pop-ndn.cc) and another to evaluate IP using internet module (https://github.com/cawka/ndnSIM-comcom-stateful-fw/blob/master/scenarios/congestion-pop-tcp.cc). Did I answer your question? If you need code examples for link failure scenarios for IP, I'll try to dig them out (they are not in the repo yet). --- Alex On Mar 10, 2013, at 7:33 PM, Xiaoke Jiang wrote: > Hi Alex, > In your paper "A Case for Stateful Forwarding Plane", you have compared performance of NDN, Path Splicing and IP, eg, the following figure. How do you implement the IP part? > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Mar 11, 2013, at 3:15 AM, Alex Afanasyev wrote: > >> Hi Xiaoke, >> >> Thank you very much for your commit! >> >> I have merged it with some minor corrections. For the later fixes, you can create a new branch (e.g., git checkout -b issue-27 origin/issue-27-hop-count-fix). You can also put "Issue #27" at the beginning of the commit message, this way github will associate commit to the issue. >> >> Regarding to you other question. I'm not entirely sure what is your concern. The available forwarding strategies in ndnSIM do not ask routers to do "retransmission" (as Lixia mentioned in another email, routers can merely "retry" if "asked" by NACK or new interest from the consumer). The whole responsibility to retransmit (in case something was lost) is solely end-client (consumer app) responsibility. Did I misunderstand your question? >> >> Thanks again, >> Alex >> >> On Mar 10, 2013, at 5:18 AM, Xiaoke Jiang wrote: >> >>> Hi Alex, >>> First, I have fix the hop count = -1 (test passed), maybe we can merge this first. I have sent you a pull request on GitHub. I am also try to design two tags. >>> >>> P,S, Is there any way to make the Forward Strategy works like IP? Because I want to compare NDN with IP, no retransmission on the middle node, I mean the Nack/timeout leads to rechoose another path and leave all the retransmission work to end nodes. And of course, only one path is selected for one prefix. >>> >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 11 13:12:35 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 11 Mar 2013 13:12:35 -0700 Subject: [ndnSIM] Packet drops In-Reply-To: References: , <00CC1EF7-BFE8-49C1-8AD8-587A9C8E3AF3@ucla.edu> <433E9227-AD68-4F02-9A2A-E3CD7657F87E@ucla.edu> Message-ID: <21387A47-56FC-410E-8192-024AAF4DD5B1@ucla.edu> Hi Mohammad, That's great! Can you make a very simple example like http://ndnsim.net/metric.html#example-of-packet-level-trace-helpers that demonstrates how to use L2Tracer and what results you can get (I can help with picture, if you want). If you do it in your github fork, then just tell me which commit or make a pull request. I'll be happy to merge the code and put example to the website. I can update description myself, but in case you want to update metric section of the website, the source for ndnsim.net website is in docs/source and metric page is docs/source/metrics.rst. -- Alex On Mar 11, 2013, at 2:04 AM, Hovaidi Ardestani Mohammad wrote: > Hello Alex! > Sorry for the delay. > Yes, the code worked on my system as well! > I have modified your code as you suggested and tested my own scenario. > What do you want to have? I will be more than happy if I can contribute. > Let me know exactly what should I send. > -Mohammad > > -----Original Message----- > From: Alexander Afanasyev [mailto:cawka1 at gmail.com] On Behalf Of Alex Afanasyev > Sent: Friday, March 8, 2013 9:50 PM > To: Hovaidi Ardestani Mohammad > Cc: ndnsim > Subject: Re: [ndnSIM] Packet drops > > Hi Mohammad, > > Let me know after you tested if the code works as it should, so I can safely merge it to the master branch. > > Also, if you will be able to make a simple usage example, I can also put it on ndnsim.net website. > > Thanks! > > --- > Alex > > > On Mar 8, 2013, at 1:02 AM, Hovaidi Ardestani Mohammad wrote: > >> Oh, sorry for misunderstanding! >> Great help. >> Thank you so much! >> -Mohammad >> >> -----Original Message----- >> From: Alexander Afanasyev [mailto:cawka1 at gmail.com] On Behalf Of Alex Afanasyev >> Sent: Friday, March 8, 2013 12:18 AM >> To: Hovaidi Ardestani Mohammad >> Subject: Re: [ndnSIM] Packet drops >> >> L2RateTracer is not a member of ns3::ndn, as it is pretty general thing and I would strongly recommend to not put it in ndn namespace. You could have solved the usage problem by removing ndn:: prefix before L2RateTracer. >> >> Can you retry? >> >> Thanks, >> Alex >> >> On Mar 7, 2013, at 7:38 AM, Hovaidi Ardestani Mohammad wrote: >> >>> Dear Alex >>> I am trying to compile the l2-rate-tracer as you recommended,but there are some errors. >>> When I want to run your code,I encounter with error of " 'L2RateTracer' is not a member of 'ns3::ndn' ". >>> I changed the code with namespace of ndn, and there were lots of other errors.Do you have any idea how I can modify the code to have the number of dropped packets. >>> I really appreciate your help. >>> ________________________________________ >>> From: Alexander Afanasyev [cawka1 at gmail.com] on behalf of Alex Afanasyev [alexander.afanasyev at ucla.edu] >>> Sent: Thursday, February 28, 2013 9:08 PM >>> To: Hovaidi Ardestani Mohammad >>> Cc: ndnsim at lists.cs.ucla.edu >>> Subject: Re: [ndnSIM] Packet drops >>> >>> Hi Mohammad, >>> >>> Sorry for the confusion. What I meant is that NS-3 provides you callback mechanism inside a transmission queue, to which you can "connect" and get data. ndn-l3-rate-tracer is really a helper class that is pretty useful, but it is just a helper. >>> >>> I have sketch out a draft implementation of another helper, l2-rate-tracer (you can check the code from feature-l2-tracer branch, or get this commit https://github.com/NDN-Routing/ndnSIM/commit/c759762fb12bfb5219715c5699ca8370d8ee6402). This is basically one of zillion ways to "connect" to /NodeList/*/DeviceList/*/TxQueue/Drop trace (see https://github.com/NDN-Routing/ndnSIM/commit/c759762fb12bfb5219715c5699ca8370d8ee6402#L2R50) and do some basic preprocessing. >>> >>> I have not fully tested the code, but it compiles on my machine. >>> >>> As for other types of drops that I mentioned (by ndnSIM itself), which are "exposed" through DropData/DropInterest NS-3 trace sources. This info is already aggregated by ndn-l3-rate-tracer, but I just commented out lines to print them (https://github.com/NDN-Routing/ndnSIM/blob/master/utils/tracers/ndn-l3-rate-tracer.cc#L173). You can uncomment and see if anything useful is there. But again, these "NDN" drops are specific to the forwarding strategy used, and you may be seeing zeroes here. >>> >>> Hope I clarified confusion. Let me know if I should explain more. >>> >>> --- >>> Alex >>> >>> On Feb 28, 2013, at 12:44 AM, Hovaidi Ardestani Mohammad wrote: >>> >>>> Hi Alex >>>> To tell the truth I didn't get your point. Let me explain what I am going to do. Actually, I need to have one tracer like "ndn-l3-rate-tracer.h" in which I can see the exact number of dropped packets due to buffer overflow or other possible reasons in each router. Could you please guide me more elaborately? >>>> Thank you in advance! >>>> -Mohammad >>>> -----Original Message----- >>>> From: Alexander Afanasyev [mailto:cawka1 at gmail.com] On Behalf Of Alex Afanasyev >>>> Sent: Wednesday, February 27, 2013 10:27 PM >>>> To: Hovaidi Ardestani Mohammad >>>> Cc: ndnsim at lists.cs.ucla.edu >>>> Subject: Re: [ndnSIM] Packet drops >>>> >>>> Hi Mohammad, >>>> >>>> If you're talking about normal drops due to queue overflows, then you can use packet drop traces from NetDevice queue (you can check examples in src/visualizer/model/pyviz.cc): >>>> >>>> - /NodeList/*/DeviceList/*/TxQueue/Drop >>>> >>>> If you want to factor in cases when ndnSIM stops forwarding packet (which is not exactly a drop), then you may want to also use >>>> >>>> - /NodeList/*/$ns3::ndn::ForwardingStrategy/DropInterests >>>> - /NodeList/*/$ns3::ndn::ForwardingStrategy/DropData >>>> >>>> However, I'm not confident 100% that right now ndnSIM tracks all the cases of stopped forwarding of Interst/Data. >>>> >>>> --- >>>> Alex >>>> >>>> On Feb 27, 2013, at 5:51 AM, Hovaidi Ardestani Mohammad wrote: >>>> >>>>> Hello everybody! >>>>> I have several scenarios in which congestion happens. I am wondering how I can trace dropped packets or know when packet dropping has been started? >>>>> Any help is appreciated in advance >>>>> BR >>>>> -Mohammad >>> >> > From alexander.afanasyev at ucla.edu Mon Mar 11 13:22:03 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 11 Mar 2013 13:22:03 -0700 Subject: [ndnSIM] How to get a node's neighbour In-Reply-To: <47923a73.12fcd.13d5a0d5f3b.Coremail.panhgshine@163.com> References: <7527c8f1.a5f5.13d545d14bc.Coremail.panhgshine@163.com> <47923a73.12fcd.13d5a0d5f3b.Coremail.panhgshine@163.com> Message-ID: <21DFADC2-E0F6-4171-87C8-69DBE690BB96@ucla.edu> Hi Pan, Let me ask you one clarification question. What is the intended use of getting the node for the requested item? If it is to collect content store performance, then I would recommend to use content store trace helper (http://ndnsim.net/metric.html#example-of-content-store-trace-helper) or a modified version of this trace helper. Normally, Node is not directly accessible from lru_policy_traits, as these traits define a general replacement policy. If you really need it, you can write a specialized policy that has access to node, similar but not exactly as freshness-policy.h and lifetime-stats-policy.h. If needed, I can try to give you some more examples. Would you mind giving a high-level idea what you want to implement, so I can give a better suggestion? --- Alex On Mar 11, 2013, at 8:24 AM, panhgshine at 163.com wrote: > Hi Alex, > > Thank you very much! > You let me understand much better to the problem. > By the way, how can I get the request node. > In cache replacement policy, such as: lru_policy_traits, freshness_policy_traits, I don't know how to get which node request the *item data. Can you help me? And my thoughts is wrong or not? > > Thank you! > > Pan > > > > > At 2013-03-11 02:33:22,"Alex Afanasyev" wrote: > >Hi Pan, > > > >In general, as in real system, you would need to implement some kind of a resource discovery protocol to discover all node's neighbors. At the same time, in NS-3, since it is a simulation, it is technically possible to "discover" neighbors directly: > > > >In NS-3 in general, you would enumerate all NetDevice's on a particular Node object (http://www.nsnam.org/doxygen/classns3_1_1_node.html): > > > >for (uint32_t deviceId = 0; deviceId < node->GetNDevices (); deviceId ++) > >{ > > Ptr device = node->GetDevice (deviceId); > > > > # get channel, to which device is connected (a "wire") > > Ptr channel = device->GetChannel (); > > > > for (uint32_t channelDeviceId = 0; channelDeviceId < channel->GetNDevices (); channelDeviceId ++) > > { > > Ptr channelDevice = channel->GetDevice (channelDeviceId); > > if (channelDevice == device) > > continue; > > > > # channelDevice is a "neighbor" > > } > >} > > > >--- > >Alex > > > >On Mar 10, 2013, at 5:53 AM, panhgshine at 163.com wrote: > > > >> Hi All, > >> > >> I'm a beginner of NS3 and ndnSIM. Recently, I have read the cache replacement policy code. > >> Now, I want to get a node's all neighbour. > >> Is there anyone can give me some advice or hint? > >> > >> Thank you in advance. > >> > >> Pan From igorcompuff at gmail.com Mon Mar 11 20:01:52 2013 From: igorcompuff at gmail.com (Igor) Date: Tue, 12 Mar 2013 00:01:52 -0300 Subject: [ndnSIM] How to deal with just arrived Data Packets in a custom way Message-ID: Hi Alex, I would like to implement a packet verification before the actions in the method *ForwardingStrategy::OnData(...)* to be performed. I have tried to overwrite this method in a ForwardingStrategy derived class but I end up with a bunch of erros like this: *"./libns3-dev-ndnSIM-debug.so: undefined reference to `ns3::ndn::fw::CustomFlooding::OnData(ns3::Ptr, ns3::Ptr, ns3::Ptr, ns3::Ptr)"* I could implement my code on the ForwardingStrategy class directly, but I am not sure if this is the best way. Could you helpe me? Best Regards, Igor Ribeiro -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 11 21:14:20 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 11 Mar 2013 21:14:20 -0700 Subject: [ndnSIM] How to deal with just arrived Data Packets in a custom way In-Reply-To: References: Message-ID: Hi Igor, The way you started implementing is the recommended way to extend forwarding strategy behavior. You probably have some small linking problem. If you can show us a little bit more code, we can try to point out what can be wrong. If you want, you can check out an example that I put up here: https://github.com/cawka/ndnSIM-examples/blob/master/extensions/custom-strategies/pre-process-incoming-packets.h https://github.com/cawka/ndnSIM-examples/blob/master/extensions/custom-strategies/pre-process-incoming-packets.cc and scenario that uses this new "strategy": https://github.com/cawka/ndnSIM-examples/blob/master/scenarios/ndn-simple-with-packet-preprocessing.cc (You can simply clone https://github.com/cawka/ndnSIM-examples repo and try it out). Let us know if your problem still exists or solved. Thanks, Alex On Mar 11, 2013, at 8:01 PM, Igor wrote: > Hi Alex, > > I would like to implement a packet verification before the actions in the method ForwardingStrategy::OnData(...) to be performed. I have tried to overwrite this method in a ForwardingStrategy derived class but I end up with a bunch of erros like this: > > "./libns3-dev-ndnSIM-debug.so: undefined reference to `ns3::ndn::fw::CustomFlooding::OnData(ns3::Ptr, ns3::Ptr, ns3::Ptr, ns3::Ptr)" > > I could implement my code on the ForwardingStrategy class directly, but I am not sure if this is the best way. > > Could you helpe me? > > Best Regards, > > Igor Ribeiro _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From wangwei2012 at ict.ac.cn Mon Mar 11 23:09:57 2013 From: wangwei2012 at ict.ac.cn (=?GBK?B?zfXOsA==?=) Date: Tue, 12 Mar 2013 14:09:57 +0800 (GMT+08:00) Subject: [ndnSIM] How to deal with large topology in ndnSIM Message-ID: <196f06b.8563.13d5d383382.Coremail.wangwei2012@ict.ac.cn> Hi all, I have a problem, I use the ndnSIM example to run a scenario which has about 280000 nodes and 800000 links, it has a SIGSEGV problem when add GlobalRoute to the node (call function ccnxGlobalRoutingHelper.InstallAll() ), but when I reduce the links to 700000, it works. So, is there a limit in the topology? And it takes a so long time(I use ctrl + C to stop it in gdb) for the CalculateRoutes() function to obtain the global route, how could I deal with this problem? Thanks weiwang -- Wei WANG -------------- next part -------------- An HTML attachment was scrubbed... URL: From igorcompuff at gmail.com Tue Mar 12 09:10:50 2013 From: igorcompuff at gmail.com (Igor) Date: Tue, 12 Mar 2013 13:10:50 -0300 Subject: [ndnSIM] How to deal with just arrived Data Packets in a custom way In-Reply-To: References: Message-ID: Hi Alex, I decided to use the code you provided as the base to build my own logic. I believe the erros that I reported in the previous e-mail was due to my lack of c++ experience. Thank you so much for your fast and precise help. Igor Ribeiro. 2013/3/12 Alex Afanasyev > Hi Igor, > > The way you started implementing is the recommended way to extend > forwarding strategy behavior. You probably have some small linking > problem. If you can show us a little bit more code, we can try to point > out what can be wrong. > > If you want, you can check out an example that I put up here: > > > https://github.com/cawka/ndnSIM-examples/blob/master/extensions/custom-strategies/pre-process-incoming-packets.h > > https://github.com/cawka/ndnSIM-examples/blob/master/extensions/custom-strategies/pre-process-incoming-packets.cc > > and scenario that uses this new "strategy": > > https://github.com/cawka/ndnSIM-examples/blob/master/scenarios/ndn-simple-with-packet-preprocessing.cc > > (You can simply clone https://github.com/cawka/ndnSIM-examples repo and > try it out). > > Let us know if your problem still exists or solved. > > Thanks, > Alex > > > On Mar 11, 2013, at 8:01 PM, Igor wrote: > > Hi Alex, > > I would like to implement a packet verification before the actions in the > method *ForwardingStrategy::OnData(...)* to be performed. I have tried to > overwrite this method in a ForwardingStrategy derived class but I end up > with a bunch of erros like this: > > *"./libns3-dev-ndnSIM-debug.so: undefined reference to > `ns3::ndn::fw::CustomFlooding::OnData(ns3::Ptr, > ns3::Ptr, ns3::Ptr, > ns3::Ptr)"* > > I could implement my code on the ForwardingStrategy class directly, but I > am not sure if this is the best way. > > Could you helpe me? > > Best Regards, > > Igor Ribeiro _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 12 10:02:03 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 12 Mar 2013 10:02:03 -0700 Subject: [ndnSIM] How to deal with large topology in ndnSIM In-Reply-To: <196f06b.8563.13d5d383382.Coremail.wangwei2012@ict.ac.cn> References: <196f06b.8563.13d5d383382.Coremail.wangwei2012@ict.ac.cn> Message-ID: <5C87B0B0-CDD1-4B06-8B86-ADEBE23AE668@ucla.edu> Hi Wei, This is a pretty big topology (and ns-3/ndnSIM has a non-trivial memory overhead per node) and I would suspect that SIGSEGV is related to the fact that OS cannot allocate enough memory. How much memory the computer you're trying to run this simulation has? GlobalRoutingHelper/Controller is just one "dirty" way to set up routing in simulation. For such a large topology, you may want to consider using other, more direct methods, to populate FIBs (e.g., using L2Helper::AddRoute). Are you using some generated topology or some "realistic" topology? --- Alex On Mar 11, 2013, at 11:09 PM, ?? wrote: > > Hi all, > I have a problem, I use the ndnSIM example to run a scenario which has about 280000 nodes and 800000 links, > it has a SIGSEGV problem when add GlobalRoute to the node (call function ccnxGlobalRoutingHelper.InstallAll() ), > but when I reduce the links to 700000, it works. > So, is there a limit in the topology? > > And it takes a so long time(I use ctrl + C to stop it in gdb) for the CalculateRoutes() function to obtain the global route, how > could I deal with this problem? > > Thanks > weiwang > > > -- > Wei WANG > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From chengyu at cs.colostate.edu Tue Mar 12 13:56:38 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Tue, 12 Mar 2013 14:56:38 -0600 Subject: [ndnSIM] How to control the Consumer behavior when an Interest times out? Message-ID: Hi Alex, I want to control the Consumer behavior when an Interest times out: when an Interest times out, the consumer must ignore it, and send another Interest. I did not find an example which does the similar thing. But I notice that ns3::ndn::Consumer Class can handle the time out, do I need to write my class to inherit it? And I don't understand the method OnTimeout (uint32_t sequenceNumber), what does the parameter sequenceNumber mean? For example, if I send Interest for content /ucla.edu/alex/cv, and it times out, what kind of sequenceNumber is? Thanks, Chengyu -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Tue Mar 12 14:07:38 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Tue, 12 Mar 2013 15:07:38 -0600 Subject: [ndnSIM] How to control the Consumer behavior when an Interest times out? In-Reply-To: References: Message-ID: Sorry, here is another question: Can I set the AnswerOriginKind bit in ndnSIM? On Tue, Mar 12, 2013 at 2:56 PM, Chengyu Fan wrote: > Hi Alex, > > I want to control the Consumer behavior when an Interest times out: when > an Interest times out, the consumer must ignore it, and send another > Interest. > I did not find an example which does the similar thing. But I notice that ns3::ndn::Consumer > Class can handle the time out, do I need to write my class to inherit it? > > And I don't understand the method OnTimeout (uint32_t > sequenceNumber), what does the parameter sequenceNumber mean? > For example, if I send Interest for content /ucla.edu/alex/cv, and it > times out, what kind of sequenceNumber is? > > Thanks, > Chengyu > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 12 14:33:32 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 12 Mar 2013 14:33:32 -0700 Subject: [ndnSIM] How to control the Consumer behavior when an Interest times out? In-Reply-To: References: Message-ID: Hi Chengyu, About your last question. I "temporarily" broke the functionality to configure Selectors (which AnswerOriginKind is part of), but it can be relatively easy added back. The main reason for this regression is that I wanted to have a packet format that incurs lesser overhead (you can check out the current packet format used by ndnSIM here: http://ndnsim.net/new-packet-formats.html). Would you have time to help me implementing this functionality? Btw. There is always an option to revert back to CCNx-compatible format (old files are in disabled/ folder), but I was planning to have an option to select packet format in the next (major) release of ndnSIM. Another btw. After "re-adding" the ability to set AnswerOriginKind, there is also a need to implement logic of this selector in the forwarding strategy (not currently there). --- About the fist question. ns3::ndn::Consumer is a very simplified implementation of the consumer and in your case you may want to implement a completely separated Consumer application (derived from ndn::App), taking the existing one as a base for the implementation. This way you going to have full control on what is happening. If the only functionality that you want is to send Interests and do not retransmit ones that timed out, you can try to use a consumer similar to DumbRequester from examples (examples/custom-apps/dumb-requester.h/cc): http://ndnsim.net/applications.html#dumb-requester As for the sequence numbers. Consumer-derived apps make an assumption that you would send Interest in a specified namespace (/ucla.edu/alex/cv) with sequence numbers: /ucla.edu/alex/cv/0 /ucla.edu/alex/cv/1 /ucla.edu/alex/cv/2 /ucla.edu/alex/cv/3 /ucla.edu/alex/cv/4 ... (ConsumerZipfMandelbrot does not request sequentially, but still uses notion of sequence numbers.) --- Alex On Mar 12, 2013, at 2:07 PM, Chengyu Fan wrote: > Sorry, here is another question: Can I set the AnswerOriginKind bit in ndnSIM? > > On Tue, Mar 12, 2013 at 2:56 PM, Chengyu Fan wrote: > Hi Alex, > > I want to control the Consumer behavior when an Interest times out: when an Interest times out, the consumer must ignore it, and send another Interest. > I did not find an example which does the similar thing. But I notice that ns3::ndn::Consumer Class can handle the time out, do I need to write my class to inherit it? > > And I don't understand the method OnTimeout (uint32_t sequenceNumber), what does the parameter sequenceNumber mean? > For example, if I send Interest for content /ucla.edu/alex/cv, and it times out, what kind of sequenceNumber is? > > Thanks, > Chengyu > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Tue Mar 12 15:16:13 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Tue, 12 Mar 2013 16:16:13 -0600 Subject: [ndnSIM] How to control the Consumer behavior when an Interest times out? In-Reply-To: References: Message-ID: On Tue, Mar 12, 2013 at 3:33 PM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Chengyu, > > About your last question. I "temporarily" broke the functionality to > configure Selectors (which AnswerOriginKind is part of), but it can be > relatively easy added back. The main reason for this regression is that I > wanted to have a packet format that incurs lesser overhead (you can check > out the current packet format used by ndnSIM here: > http://ndnsim.net/new-packet-formats.html). Would you have time to help > me implementing this functionality? > Let me look into it, and discuss with you latter. > > > Btw. There is always an option to revert back to CCNx-compatible format > (old files are in disabled/ folder), but I was planning to have an option > to select packet format in the next (major) release of ndnSIM. > > Another btw. After "re-adding" the ability to set AnswerOriginKind, there > is also a need to implement logic of this selector in the forwarding > strategy (not currently there). > > --- > > About the fist question. > ns3::ndn::Consumer is a very simplified implementation of the consumer and > in your case you may want to implement a completely separated Consumer > application (derived from ndn::App), taking the existing one as a base for > the implementation. This way you going to have full control on what is > happening. > > If the only functionality that you want is to send Interests and do not > retransmit ones that timed out, you can try to use a consumer similar to > DumbRequester from examples (examples/custom-apps/dumb-requester.h/cc): > http://ndnsim.net/applications.html#dumb-requester > > I think the DumbRequester cannot figure out which Interest times out. Am I right? > As for the sequence numbers. Consumer-derived apps make an assumption > that you would send Interest in a specified namespace (/ucla.edu/alex/cv) > with sequence numbers: > > /ucla.edu/alex/cv/0 > /ucla.edu/alex/cv/1 > /ucla.edu/alex/cv/2 > /ucla.edu/alex/cv/3 > /ucla.edu/alex/cv/4 > ... > > (ConsumerZipfMandelbrot does not request sequentially, but still uses > notion of sequence numbers.) > > --- > Alex > > On Mar 12, 2013, at 2:07 PM, Chengyu Fan wrote: > > Sorry, here is another question: Can I set the AnswerOriginKind bit in > ndnSIM? > > On Tue, Mar 12, 2013 at 2:56 PM, Chengyu Fan wrote: > >> Hi Alex, >> >> I want to control the Consumer behavior when an Interest times out: when >> an Interest times out, the consumer must ignore it, and send another >> Interest. >> I did not find an example which does the similar thing. But I notice that ns3::ndn::Consumer >> Class can handle the time out, do I need to write my class to inherit it? >> >> And I don't understand the method OnTimeout (uint32_t >> sequenceNumber), what does the parameter sequenceNumber mean? >> For example, if I send Interest for content /ucla.edu/alex/cv, and it >> times out, what kind of sequenceNumber is? >> >> Thanks, >> Chengyu >> > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 12 15:20:26 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 12 Mar 2013 15:20:26 -0700 Subject: [ndnSIM] How to control the Consumer behavior when an Interest times out? In-Reply-To: References: Message-ID: <5283FB0F-8CEC-4F2B-AB02-6966A1126409@ucla.edu> On Mar 12, 2013, at 3:16 PM, Chengyu Fan wrote: > > > On Tue, Mar 12, 2013 at 3:33 PM, Alex Afanasyev wrote: > Hi Chengyu, > > About your last question. I "temporarily" broke the functionality to configure Selectors (which AnswerOriginKind is part of), but it can be relatively easy added back. The main reason for this regression is that I wanted to have a packet format that incurs lesser overhead (you can check out the current packet format used by ndnSIM here: http://ndnsim.net/new-packet-formats.html). Would you have time to help me implementing this functionality? > > Let me look into it, and discuss with you latter. Thanks! > > > Btw. There is always an option to revert back to CCNx-compatible format (old files are in disabled/ folder), but I was planning to have an option to select packet format in the next (major) release of ndnSIM. > > Another btw. After "re-adding" the ability to set AnswerOriginKind, there is also a need to implement logic of this selector in the forwarding strategy (not currently there). > > --- > > About the fist question. > ns3::ndn::Consumer is a very simplified implementation of the consumer and in your case you may want to implement a completely separated Consumer application (derived from ndn::App), taking the existing one as a base for the implementation. This way you going to have full control on what is happening. > > If the only functionality that you want is to send Interests and do not retransmit ones that timed out, you can try to use a consumer similar to DumbRequester from examples (examples/custom-apps/dumb-requester.h/cc): http://ndnsim.net/applications.html#dumb-requester > > > I think the DumbRequester cannot figure out which Interest times out. Am I right? Yes, it simply doesn't care if interest has been satisfied or not. So, you still need to know which one times out? You can copy relevant code from Consumer, if you still need it. Btw, if it is just for logging purposes, then it can also be done not in the client, but in forwarding strategy (you can track timed out PIT entries, which could be almost the same). -- Alex > As for the sequence numbers. Consumer-derived apps make an assumption that you would send Interest in a specified namespace (/ucla.edu/alex/cv) with sequence numbers: > > /ucla.edu/alex/cv/0 > /ucla.edu/alex/cv/1 > /ucla.edu/alex/cv/2 > /ucla.edu/alex/cv/3 > /ucla.edu/alex/cv/4 > ... > > (ConsumerZipfMandelbrot does not request sequentially, but still uses notion of sequence numbers.) > > --- > Alex > > On Mar 12, 2013, at 2:07 PM, Chengyu Fan wrote: > >> Sorry, here is another question: Can I set the AnswerOriginKind bit in ndnSIM? >> >> On Tue, Mar 12, 2013 at 2:56 PM, Chengyu Fan wrote: >> Hi Alex, >> >> I want to control the Consumer behavior when an Interest times out: when an Interest times out, the consumer must ignore it, and send another Interest. >> I did not find an example which does the similar thing. But I notice that ns3::ndn::Consumer Class can handle the time out, do I need to write my class to inherit it? >> >> And I don't understand the method OnTimeout (uint32_t sequenceNumber), what does the parameter sequenceNumber mean? >> For example, if I send Interest for content /ucla.edu/alex/cv, and it times out, what kind of sequenceNumber is? >> >> Thanks, >> Chengyu >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 12 16:16:13 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 12 Mar 2013 16:16:13 -0700 Subject: [ndnSIM] How to get a node's neighbour In-Reply-To: <1615b05f.13bed.13d5bc27c1a.Coremail.panhgshine@163.com> References: <7527c8f1.a5f5.13d545d14bc.Coremail.panhgshine@163.com> <47923a73.12fcd.13d5a0d5f3b.Coremail.panhgshine@163.com> <21DFADC2-E0F6-4171-87C8-69DBE690BB96@ucla.edu> <1615b05f.13bed.13d5bc27c1a.Coremail.panhgshine@163.com> Message-ID: Hi Pan, No, absolutely nothing wrong with the idea, I just wanted to get more input on what is the intended use of the functionality and get a better sense on what would be more appropriate solution. I have compiled an example of what you approximately need. To use it, you need first to get, compile, and install an updated version of ndnSIM (I had to implement a small extension there). After that you can get this repo: https://github.com/cawka/ndnSIM-examples You would be specifically interested in these three files: Custom CS policy with example of how to get access to Node upon CS operations: - https://github.com/cawka/ndnSIM-examples/blob/master/extensions/custom-cs/node-access-policy.h Instantiation of customized CS versions: - https://github.com/cawka/ndnSIM-examples/blob/master/extensions/custom-cs/content-store-with-node-access.cc Scenario that used customized version of CS: - https://github.com/cawka/ndnSIM-examples/blob/master/scenarios/ndn-simple-with-cs-node-access.cc --- Btw, you should be careful implementing your idea. You should take care of two things. First, you should probably somehow cache node neighbors, otherwise your simulation will have huge processing overhead, as enumerating neighbors is pretty heavy operations. Second, and more important, is you should be careful with deleting of the content. For example, let's say you have a simple 3 node topology: A -- B -- C Let's say all of them cached some data. Now, if each node (at the same time) decides to check neighbors and delete if data is present there, they may end up removing this data from everywhere. In any case, you may already have considered this problem (or I could be wrong in this regard), I just want to warn you of a potential issue. Sincerely, Alex On Mar 11, 2013, at 4:21 PM, panhgshine at 163.com wrote: > Hi Alex, > > Thanks for your patient to reply my question. > First, I want to get a node's all neighbour; > Second, if every neighbour has been request the same data to the node(marked as A node), A node's cache can delete the request data, because every neighbour has cache the data and A node's cache is needless. > Because of above idea, I want to know which node request the data to A node and obtain the A node's all neighbour. > Is there something wrong with my idea? > > Thanks > > Pan > > > > > At 2013-03-12 04:22:03,"Alex Afanasyev" wrote: > >Hi Pan, > > > >Let me ask you one clarification question. What is the intended use of getting the node for the requested item? If it is to collect content store performance, then I would recommend to use content store trace helper (http://ndnsim.net/metric.html#example-of-content-store-trace-helper) or a modified version of this trace helper. > > > >Normally, Node is not directly accessible from lru_policy_traits, as these traits define a general replacement policy. If you really need it, you can write a specialized policy that has access to node, similar but not exactly as freshness-policy.h and lifetime-stats-policy.h. If needed, I can try to give you some more examples. Would you mind giving a high-level idea what you want to implement, so I can give a better suggestion? > > > >--- > >Alex > > > >On Mar 11, 2013, at 8:24 AM, panhgshine at 163.com wrote: > > > >> Hi Alex, > >> > >> Thank you very much! > >> You let me understand much better to the problem. > >> By the way, how can I get the request node. > >> In cache replacement policy, such as: lru_policy_traits, freshness_policy_traits, I don't know how to get which node request the *item data. Can you help me? And my thoughts is wrong or not? > >> > >> Thank you! > >> > >> Pan > >> > >> > >> > >> > >> At 2013-03-11 02:33:22,"Alex Afanasyev" wrote: > >> >Hi Pan, > >> > > >> >In general, as in real system, you would need to implement some kind of a resource discovery protocol to discover all node's neighbors. At the same time, in NS-3, since it is a simulation, it is technically possible to "discover" neighbors directly: > >> > > >> >In NS-3 in general, you would enumerate all NetDevice's on a particular Node object (http://www.nsnam.org/doxygen/classns3_1_1_node.html): > >> > > >> >for (uint32_t deviceId = 0; deviceId < node->GetNDevices (); deviceId ++) > >> >{ > >> > Ptr device = node->GetDevice (deviceId); > >> > > >> > # get channel, to which device is connected (a "wire") > >> > Ptr channel = device->GetChannel (); > >> > > >> > for (uint32_t channelDeviceId = 0; channelDeviceId < channel->GetNDevices (); channelDeviceId ++) > >> > { > >> > Ptr channelDevice = channel->GetDevice (channelDeviceId); > >> > if (channelDevice == device) > >> > continue; > >> > > >> > # channelDevice is a "neighbor" > >> > } > >> >} > >> > > >> >--- > >> >Alex > >> > > >> >On Mar 10, 2013, at 5:53 AM, panhgshine at 163.com wrote: > >> > > >> >> Hi All, > >> >> > >> >> I'm a beginner of NS3 and ndnSIM. Recently, I have read the cache replacement policy code. > >> >> Now, I want to get a node's all neighbour. > >> >> Is there anyone can give me some advice or hint? > >> >> > >> >> Thank you in advance. > >> >> > >> >> Pan > > > > > >_______________________________________________ > >ndnSIM mailing list > >ndnSIM at lists.cs.ucla.edu > >http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 12 21:58:48 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 12 Mar 2013 21:58:48 -0700 Subject: [ndnSIM] How to deal with large topology in ndnSIM In-Reply-To: <195fbe5.a18f.13d61660591.Coremail.wangwei2012@ict.ac.cn> References: <5C87B0B0-CDD1-4B06-8B86-ADEBE23AE668@ucla.edu> <196f06b.8563.13d5d383382.Coremail.wangwei2012@ict.ac.cn> <195fbe5.a18f.13d61660591.Coremail.wangwei2012@ict.ac.cn> Message-ID: <9AAA103D-1C11-4149-B0ED-23ECBE766A6A@ucla.edu> Hi Wei, If memory is not an issue, than I'm not yet sure what could be the problem. Can you run it in debugger and check what exactly causes the segfault? Time-wise, GlobalRoutingHelper is running Dikjstra algorithm N times (where N number of nodes in the system), each time it's takes N*M steps (M=number of edges). I haven't thoroughly evaluated performance, but it definitely would not be too fast. If you want to use GlobalRoutingHelper every time caching changes, than that could be a problem. You may want to design some way to adjust routing without changing/recalculating routes everywhere, but I'm not sure how (and what are you requirements). --- Alex On Mar 12, 2013, at 6:38 PM, weiwang wrote: > > It has 8G memory, I think the memory is enough(when it is running, the memory usage is about 30%). > I use realistic topology. If I use addroute, how could I get the FIB for each router? > > And I also wonder that during the content store repacement, it will also update FIB, will it takes such a long time like now? > > > > -----????----- > > ???: "Alex Afanasyev" > > ????: 2013?3?13? ??? > > ???: "??" > > ??: ndnsim at lists.cs.ucla.edu > > ??: Re: [ndnSIM] How to deal with large topology in ndnSIM > > > > Hi Wei, > > > > This is a pretty big topology (and ns-3/ndnSIM has a non-trivial memory overhead per node) and I would suspect that SIGSEGV is related to the fact that OS cannot allocate enough memory. > > > > How much memory the computer you're trying to run this simulation has? > > > > GlobalRoutingHelper/Controller is just one "dirty" way to set up routing in simulation. For such a large topology, you may want to consider using other, more direct methods, to populate FIBs (e.g., using L2Helper::AddRoute). Are you using some generated topology or some "realistic" topology? > > > > --- > > Alex > > > > On Mar 11, 2013, at 11:09 PM, ?? wrote: > > > > > > > > Hi all, > > > I have a problem, I use the ndnSIM example to run a scenario which has about 280000 nodes and 800000 links, > > > it has a SIGSEGV problem when add GlobalRoute to the node (call function ccnxGlobalRoutingHelper.InstallAll() ), > > > but when I reduce the links to 700000, it works. > > > So, is there a limit in the topology? > > > > > > And it takes a so long time(I use ctrl + C to stop it in gdb) for the CalculateRoutes() function to obtain the global route, how > > > could I deal with this problem? > > > > > > Thanks > > > weiwang > > > > > > > > > -- > > > Wei WANG > > > > > > > > > _______________________________________________ > > > ndnSIM mailing list > > > ndnSIM at lists.cs.ucla.edu > > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > > > -- > Wei WANG > > > From huyao0107 at gmail.com Wed Mar 13 05:35:31 2013 From: huyao0107 at gmail.com (yao hu) Date: Wed, 13 Mar 2013 21:35:31 +0900 Subject: [ndnSIM] how to modify FIB entries during the simulation time Message-ID: Dear ndnsimers, Is it possible to delete an existing or add a new FIB entry during the simulation time? Because I would like to do some change on the existing FIB entries according to the incoming data. However, in the current ndnsim documentation, the StackHelper class only has the AddRoute function. So how to implement a function like DelRoute so as to modify the existing FIB entries according to some situation during the simulation time? Thanks for your reply in advance! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 13 09:54:22 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 13 Mar 2013 09:54:22 -0700 Subject: [ndnSIM] Call for help In-Reply-To: <56827df0.15d64.13d64168356.Coremail.blindeafer@163.com> References: <56827df0.15d64.13d64168356.Coremail.blindeafer@163.com> Message-ID: <7F9DCCCD-802E-4956-829C-896BC0E7272E@ucla.edu> Hi Shenglan, People already complained to me that they cannot connect to github, so I made a mirror on google's servers (I also just added links to them on ndnsim.net website). Can you try to clone the following way: mkdir ndnSIM cd ndnSIM git clone https://code.google.com/p/ndnsim.ns3-base/ ns-3 git clone https://code.google.com/p/ndnsim.pybindgen/ pybindgen git clone https://code.google.com/p/ndnsim/ ns-3/src/ndnSIM If you still have problems with access, I can try to mirror on other servers. I really prefer you getting the code using git. You also may want to check out a new section of the docs http://ndnsim.net/getting-started.html#simulating-using-ndnsim, giving example of how to write simulations independently of NS-3 and ndnSIM code base (i.e., in a separate directory/repository). --- Alex On Mar 13, 2013, at 7:10 AM, ??? wrote: > Hi Alex? > I plan to install ndnSIM.But I could not connect to github.com on my linux and download form https://github.com/cawka/ns-3-dev-ndnSIM/archive/ns3-dev.zip and https://github.com/cawka/ns-3-dev-ndnSIM/archive/master.zip. I think it is because of the network problem in my university.So I wander if you can offer me all the files that I need to get from github to finish the installation with e-mail attachments.Thank you. > > Best regards. > Shenglan Chen -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 13 10:08:18 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 13 Mar 2013 10:08:18 -0700 Subject: [ndnSIM] how to modify FIB entries during the simulation time In-Reply-To: References: Message-ID: <348D7632-9D34-4BBF-902F-906773398717@ucla.edu> Hi Yao, Yes, at least for now StackHelper does not provide functionality to delete specific routes. It probably can be extended, but I think the primary purpose of the helper is to facilitate writing a scenario code, not do something in the core/runtime. As it stands right now, during runtime, you can try to directly modify FIB entries using FIB interface (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_fib.html). There is Remove call to remove a specific prefix from the FIB. If you want to remove a specific face from the FIB entry, you can use fib::Entry API (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1fib_1_1_entry.html), specifically RemoveFace call. There is definitely a need for easier access to FIB management in ndnSIM. We would greatly appreciate if you can create a new helper class (say, ndn::FibHelper) with various methods to add/update/or delete existing FIB entries. We can go even further and implement some FIB management protocol (similar in spirit to CCNx face management protocol, but not necessarily the same). What do you think? --- Alex PS To get hold of the fib on a specific node, you can do the following: Ptr fib = node->GetObject (); On Mar 13, 2013, at 5:35 AM, yao hu wrote: > Dear ndnsimers, > > Is it possible to delete an existing or add a new FIB entry during the simulation time? Because I would like to do some change on the existing FIB entries according to the incoming data. However, in the current ndnsim documentation, the StackHelper class only has the AddRoute function. So how to implement a function like DelRoute so as to modify the existing FIB entries according to some situation during the simulation time? > > Thanks for your reply in advance! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 13 19:00:36 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 13 Mar 2013 19:00:36 -0700 Subject: [ndnSIM] Call for help In-Reply-To: <59b017f4.1afc8.13d6696599f.Coremail.blindeafer@163.com> References: <56827df0.15d64.13d64168356.Coremail.blindeafer@163.com> <7F9DCCCD-802E-4956-829C-896BC0E7272E@ucla.edu> <59b017f4.1afc8.13d6696599f.Coremail.blindeafer@163.com> Message-ID: <419FFDAE-F6B8-4243-8975-5F2CB47FBDF2@ucla.edu> Hi Shenglan, It will not affect the simulation results, but (because of the missing python-related modules, resulting in visualizer being not built) you may not be able to visualize the simulations. But this is not strictly necessary. --- Alex On Mar 13, 2013, at 6:49 PM, ??? wrote: > Hi Alex, > Thank you for your help. > And I have another question that after I installed the NS-3,it was shown that three modules were not built,they were click,openflow and visualizer.I wander whether it would affect my simulation. > > Best regards. > Shenglan Chen > > > > > At 2013-03-14 00:54:22,"Alex Afanasyev" wrote: > Hi Shenglan, > > People already complained to me that they cannot connect to github, so I made a mirror on google's servers (I also just added links to them on ndnsim.net website). Can you try to clone the following way: > > mkdir ndnSIM > cd ndnSIM > git clone https://code.google.com/p/ndnsim.ns3-base/ ns-3 > git clone https://code.google.com/p/ndnsim.pybindgen/ pybindgen > git clone https://code.google.com/p/ndnsim/ ns-3/src/ndnSIM > > If you still have problems with access, I can try to mirror on other servers. I really prefer you getting the code using git. > > You also may want to check out a new section of the docs http://ndnsim.net/getting-started.html#simulating-using-ndnsim, giving example of how to write simulations independently of NS-3 and ndnSIM code base (i.e., in a separate directory/repository). > > --- > Alex > > > On Mar 13, 2013, at 7:10 AM, ??? wrote: > >> Hi Alex? >> I plan to install ndnSIM.But I could not connect to github.com on my linux and download form https://github.com/cawka/ns-3-dev-ndnSIM/archive/ns3-dev.zip and https://github.com/cawka/ns-3-dev-ndnSIM/archive/master.zip. I think it is because of the network problem in my university.So I wander if you can offer me all the files that I need to get from github to finish the installation with e-mail attachments.Thank you. >> >> Best regards. >> Shenglan Chen > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao at goto.info.waseda.ac.jp Thu Mar 14 02:51:52 2013 From: huyao at goto.info.waseda.ac.jp (yao hu) Date: Thu, 14 Mar 2013 18:51:52 +0900 Subject: [ndnSIM] how to modify FIB entries during the simulation time In-Reply-To: <348D7632-9D34-4BBF-902F-906773398717@ucla.edu> References: <348D7632-9D34-4BBF-902F-906773398717@ucla.edu> Message-ID: Hi Alex, Thanks for your reply. I will try to implement such a new fib helper class within my ability scope if time permits. Sorry, one more simple question about this issue.. Now I am filling something in the function DidReceiveSolicitedData ( ) in ndn-forwarding-strategy.cc. So how to get hold of the specific node or node name as a parameter to say AddRoute() function or further get hold of the fib on a specific node. Or my way is wrong? Regards, huyao 2013/3/14 Alex Afanasyev > Hi Yao, > > Yes, at least for now StackHelper does not provide functionality to delete > specific routes. It probably can be extended, but I think the primary > purpose of the helper is to facilitate writing a scenario code, not do > something in the core/runtime. > > As it stands right now, during runtime, you can try to directly modify FIB > entries using FIB interface ( > http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_fib.html). There is Remove > call to remove a specific prefix from the FIB. If you want to remove a > specific face from the FIB entry, you can use fib::Entry API ( > http://ndnsim.net/doxygen/classns3_1_1ndn_1_1fib_1_1_entry.html), > specifically RemoveFace call. > > There is definitely a need for easier access to FIB management in ndnSIM. > We would greatly appreciate if you can create a new helper class (say, > ndn::FibHelper) with various methods to add/update/or delete existing FIB > entries. We can go even further and implement some FIB management protocol > (similar in spirit to CCNx face management protocol, but not necessarily > the same). What do you think? > > --- > Alex > > PS > To get hold of the fib on a specific node, you can do the following: > Ptr fib = node->GetObject (); > > On Mar 13, 2013, at 5:35 AM, yao hu wrote: > > Dear ndnsimers, > > Is it possible to delete an existing or add a new FIB entry during the > simulation time? Because I would like to do some change on the existing FIB > entries according to the incoming data. However, in the current ndnsim > documentation, the StackHelper class only has the AddRoute function. > So how to implement a function like DelRoute so as to modify the existing > FIB entries according to some situation during the simulation time? > > Thanks for your reply in advance! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -- ************************************************** ????? ???????? ??????? ??????? ? ? (HU Yao) E-mail : huyao at goto.info.waseda.ac.jp ************************************************** -------------- next part -------------- An HTML attachment was scrubbed... URL: From mohammad.hovaidi.ardestani at aalto.fi Thu Mar 14 05:12:15 2013 From: mohammad.hovaidi.ardestani at aalto.fi (Hovaidi Ardestani Mohammad) Date: Thu, 14 Mar 2013 12:12:15 +0000 Subject: [ndnSIM] Buffer size and CS helper Message-ID: Hi everybody! 1. I am going to formulate size of buffer memory for ndnSim routers. In topology we set them based on packets (I think size of every packet should be 1024). I am wondering if CS, FIB and PIT are included in this space or not. 2. Can anybody guide me what exactly CS helper shows? Any help is appreciated in advance! BR -Mohammad -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Mar 14 08:57:08 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Mar 2013 08:57:08 -0700 Subject: [ndnSIM] how to modify FIB entries during the simulation time In-Reply-To: References: <348D7632-9D34-4BBF-902F-906773398717@ucla.edu> Message-ID: <9855E7DD-D185-457F-AEB5-24843D53DDCC@ucla.edu> On Mar 14, 2013, at 2:51 AM, yao hu wrote: > Hi Alex, > > Thanks for your reply. I will try to implement such a new fib helper class within my ability scope if time permits. > > Sorry, one more simple question about this issue.. Now I am filling something in the function DidReceiveSolicitedData ( ) in ndn-forwarding-strategy.cc. So how to get hold of the specific node or node name as a parameter to say AddRoute() function or further get hold of the fib on a specific node. Or my way is wrong? > The question here is which FIBs you're planning to modify and how do you discover those. It is a simulator, so it is possible to cheat in many ways, but think for a second as in real system. How such an update could be implemented there. After that, we can find a way to simplify this in simulator. --- Alex > > Regards, > huyao > > > 2013/3/14 Alex Afanasyev >> Hi Yao, >> >> Yes, at least for now StackHelper does not provide functionality to delete specific routes. It probably can be extended, but I think the primary purpose of the helper is to facilitate writing a scenario code, not do something in the core/runtime. >> >> As it stands right now, during runtime, you can try to directly modify FIB entries using FIB interface (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_fib.html). There is Remove call to remove a specific prefix from the FIB. If you want to remove a specific face from the FIB entry, you can use fib::Entry API (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1fib_1_1_entry.html), specifically RemoveFace call. >> >> There is definitely a need for easier access to FIB management in ndnSIM. We would greatly appreciate if you can create a new helper class (say, ndn::FibHelper) with various methods to add/update/or delete existing FIB entries. We can go even further and implement some FIB management protocol (similar in spirit to CCNx face management protocol, but not necessarily the same). What do you think? >> >> --- >> Alex >> >> PS >> To get hold of the fib on a specific node, you can do the following: >> Ptr fib = node->GetObject (); >> >> On Mar 13, 2013, at 5:35 AM, yao hu wrote: >> >>> Dear ndnsimers, >>> >>> Is it possible to delete an existing or add a new FIB entry during the simulation time? Because I would like to do some change on the existing FIB entries according to the incoming data. However, in the current ndnsim documentation, the StackHelper class only has the AddRoute function. So how to implement a function like DelRoute so as to modify the existing FIB entries according to some situation during the simulation time? >>> >>> Thanks for your reply in advance! >>> >>> Regards, >>> huyao >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > -- > ************************************************** > ????? ???????? ??????? > ??????? > ? ? (HU Yao) > E-mail : huyao at goto.info.waseda.ac.jp > ************************************************** > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Mar 14 09:03:30 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Mar 2013 09:03:30 -0700 Subject: [ndnSIM] Buffer size and CS helper In-Reply-To: References: Message-ID: On Mar 14, 2013, at 5:12 AM, Hovaidi Ardestani Mohammad wrote: > Hi everybody! > 1. I am going to formulate size of buffer memory for ndnSim routers. In topology we set them based on packets (I think size of every packet should be 1024). I am wondering if CS, FIB and PIT are included in this space or not. I'm not entirely sure what your question asks. You can set individual limits on CS and PIT sizes (in number of content objects). FIB is not updated dynamically, so your simulation is responsible in defining appropriate number of FIB entries. What do you mean "in topology we set..."? Are you referring to transmission queue sizes? If yes, this is totally independent of NDN or ndnSIM. > 2. Can anybody guide me what exactly CS helper shows? Do you mean ndn::StackHelper::SetContentStore method? This is just a generic method to define ns3 class name of cs implementation to be used as a content store in ndnSIM. The rest of the parameters are just name-balue pairs that can configure ns-3 attributes of the specified cs. --- Alex > Any help is appreciated in advance! > BR > -Mohammad > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Thu Mar 14 19:19:56 2013 From: huyao0107 at gmail.com (yao hu) Date: Fri, 15 Mar 2013 11:19:56 +0900 Subject: [ndnSIM] structure of fib in ndnsim Message-ID: Dear ndnsimers, Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Thu Mar 14 19:28:00 2013 From: huyao0107 at gmail.com (yao hu) Date: Fri, 15 Mar 2013 11:28:00 +0900 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: Message-ID: a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? Thanks for your reply! 2013/3/15 yao hu > Dear ndnsimers, > > Assume that there is an existing fib entry with the prefix /data, face 0 > in some specific node. Now by using the function Add() or AddRoute(), a new > fib entry will be added with the same prefix /data, but with the different > face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB > or just seemed as one. For my understanding, the answer is the latter. > Here, in Fib class, GetSize () > still equals to 1. Am I right? > > Regards, > huyao > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Mar 14 19:55:14 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Mar 2013 19:55:14 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: Message-ID: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> Hi huyao, You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. --- Alex On Mar 14, 2013, at 7:28 PM, yao hu wrote: > a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? > > Thanks for your reply! > > > 2013/3/15 yao hu >> Dear ndnsimers, >> >> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >> >> Regards, >> huyao > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Mar 14 20:02:48 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Mar 2013 20:02:48 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> Message-ID: <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> My small correction :). I meant that it is forwarding strategy job to pick a particular face from FIB entry. --- Alex On Mar 14, 2013, at 7:55 PM, Alex Afanasyev wrote: > Hi huyao, > > You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. > > There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. > > > --- > Alex > > On Mar 14, 2013, at 7:28 PM, yao hu wrote: > >> a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? >> >> Thanks for your reply! >> >> >> 2013/3/15 yao hu >>> Dear ndnsimers, >>> >>> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >>> >>> Regards, >>> huyao >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Fri Mar 15 01:33:56 2013 From: huyao0107 at gmail.com (yao hu) Date: Fri, 15 Mar 2013 17:33:56 +0900 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> Message-ID: Hi Alex, Thanks for your explanation! I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace call just has one parameter (const Ptr< Face > &face) without relation to some specific prefix, so I guess if I want to delete one specific face from one specific prefix, it will have the same impact to other prefixes which also have the face. My intention is to delete one specific face from a specific prefix, while any other prefix still retains the face if it has. Is it feasible in the current ndnsim? If not, how do I do to implement such a functionality? Or my understanding for this issue has some error? Regards, huyao 2013/3/15 Alex Afanasyev > My small correction :). I meant that it is forwarding strategy job to pick > a particular face from FIB entry. > > --- > Alex > > On Mar 14, 2013, at 7:55 PM, Alex Afanasyev > wrote: > > Hi huyao, > > You are right, for the single prefix there will be only one FIB entry > created and it is forwarding strategy job to pick a particular one to > forward an Interest in this prefix. > > There is an interface in fib::Entry to remove a specific face from s > specific FIB entry. You can also check recent conversation > http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with > more details about that. > > > --- > Alex > > On Mar 14, 2013, at 7:28 PM, yao hu wrote: > > a supplement.. If so, is there a way to delete just some face like face 0 > from the fib entry with the prefix /data without deleting face 1? > > Thanks for your reply! > > > 2013/3/15 yao hu > >> Dear ndnsimers, >> >> Assume that there is an existing fib entry with the prefix /data, face 0 >> in some specific node. Now by using the function Add() or AddRoute(), a new >> fib entry will be added with the same prefix /data, but with the different >> face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB >> or just seemed as one. For my understanding, the answer is the latter. >> Here, in Fib class, GetSize () >> still equals to 1. Am I right? >> >> Regards, >> huyao >> > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 15 09:48:06 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 15 Mar 2013 09:48:06 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> Message-ID: <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> Hi huyao, fib::Entry object associated with exactly one prefix, so RemoveFace method on fib::Entry will not have impact on any other entries. Let me show an example: # step one: find a FIB entry for the prefix associated with Interest Ptr entry = fib->LongestPrefixMatch (interest); # remove a specific face entry->RemoveFace (face_to_remove); --- This will not impact any other FIB entries. I just realized that the current FIB interface doesn't provide direct way to do lookup just using Name (=NameComponents). But it would be trivial to add this functionality, as underlying data structures fully support that. Let me know if you need it. (Alternatively, you can also enumerate all FIB entries using Begin/End/Next methods and find the one you need, but it can be too inefficient.) --- Alex On Mar 15, 2013, at 1:33 AM, yao hu wrote: > Hi Alex, > > Thanks for your explanation! > > I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace call just has one parameter (const Ptr< Face > &face) without relation to some specific prefix, so I guess if I want to delete one specific face from one specific prefix, it will have the same impact to other prefixes which also have the face. > > My intention is to delete one specific face from a specific prefix, while any other prefix still retains the face if it has. Is it feasible in the current ndnsim? If not, how do I do to implement such a functionality? Or my understanding for this issue has some error? > > Regards, > huyao > > > 2013/3/15 Alex Afanasyev > My small correction :). I meant that it is forwarding strategy job to pick a particular face from FIB entry. > > --- > Alex > > On Mar 14, 2013, at 7:55 PM, Alex Afanasyev wrote: > >> Hi huyao, >> >> You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. >> >> There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. >> >> >> --- >> Alex >> >> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >> >>> a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? >>> >>> Thanks for your reply! >>> >>> >>> 2013/3/15 yao hu >>> Dear ndnsimers, >>> >>> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >>> >>> Regards, >>> huyao >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Fri Mar 15 10:48:16 2013 From: huyao0107 at gmail.com (yao hu) Date: Sat, 16 Mar 2013 02:48:16 +0900 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> Message-ID: Hi Alex, Thanks for your clarification. I have understood what you said. It was my misunderstanding. Yes. I looked into the ndnsim API and felt a little curious that why FIB does not have a lookup functionality like PIT. I really appreciate if you can provide this functionality. Thanks very much! Besides, regarding the fib structure, I have one more question. In the default fib structure, one specific face (like face 1) in one fib entry appears just once. If I use Add() or AddRoute() to add a same ndn route twice or more, face 1 in this fib entry is still only one. My question is, is there a possibility or a way to record the `twice` or more? A very direct thought is could I store one specific face twice or more in one fib entry? Or are there any other ways to do such a behavior? Thanks for your answer in advance! Regards, huyao 2013/3/16 Alex Afanasyev > Hi huyao, > > fib::Entry object associated with exactly one prefix, so RemoveFace method > on fib::Entry will not have impact on any other entries. > > Let me show an example: > > # step one: find a FIB entry for the prefix associated with Interest > Ptr entry = fib->LongestPrefixMatch (interest); > > # remove a specific face > entry->RemoveFace (face_to_remove); > > --- > > This will not impact any other FIB entries. > > I just realized that the current FIB interface doesn't provide direct way > to do lookup just using Name (=NameComponents). But it would be trivial to > add this functionality, as underlying data structures fully support that. > Let me know if you need it. (Alternatively, you can also enumerate all FIB > entries using Begin/End/Next methods and find the one you need, but it can > be too inefficient.) > > --- > Alex > > On Mar 15, 2013, at 1:33 AM, yao hu wrote: > > Hi Alex, > > Thanks for your explanation! > > I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace > call just has one parameter (const Ptr< Face > > &face) without relation to some specific prefix, so I guess if I want to > delete one specific face from one specific prefix, it will have the same > impact to other prefixes which also have the face. > > My intention is to delete one specific face from a specific prefix, while > any other prefix still retains the face if it has. Is it feasible in the > current ndnsim? If not, how do I do to implement such a functionality? Or > my understanding for this issue has some error? > > Regards, > huyao > > > 2013/3/15 Alex Afanasyev > >> My small correction :). I meant that it is forwarding strategy job to >> pick a particular face from FIB entry. >> >> --- >> Alex >> >> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev >> wrote: >> >> Hi huyao, >> >> You are right, for the single prefix there will be only one FIB entry >> created and it is forwarding strategy job to pick a particular one to >> forward an Interest in this prefix. >> >> There is an interface in fib::Entry to remove a specific face from s >> specific FIB entry. You can also check recent conversation >> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.htmlwith more details about that. >> >> >> --- >> Alex >> >> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >> >> a supplement.. If so, is there a way to delete just some face like face 0 >> from the fib entry with the prefix /data without deleting face 1? >> >> Thanks for your reply! >> >> >> 2013/3/15 yao hu >> >>> Dear ndnsimers, >>> >>> Assume that there is an existing fib entry with the prefix /data, face 0 >>> in some specific node. Now by using the function Add() or AddRoute(), a new >>> fib entry will be added with the same prefix /data, but with the different >>> face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB >>> or just seemed as one. For my understanding, the answer is the latter. >>> Here, in Fib class, GetSize () >>> still equals to 1. Am I right? >>> >>> Regards, >>> huyao >>> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> >> >> _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 15 11:06:29 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 15 Mar 2013 11:06:29 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> Message-ID: Hi huyao, PIT also has a limited API to lookup (only using Interests and ContentObjects). So, probably this part is also should be extended, but just pure prefix-based lookup should be used cautiously. For your second question. What is your intended need for the same face associated with the FIB entry more than once? Can you give a specific example? For me it is fundamental that FIB entry has only one reference to a specific face (AddRoute call "adding" the same face will "rerrange" this face based on the specified metric). The forwarding strategy can "re-use" the same face many times, if it feels that is appropriate. --- Alex On Mar 15, 2013, at 10:48 AM, yao hu wrote: > Hi Alex, > > Thanks for your clarification. I have understood what you said. It was my misunderstanding. > > Yes. I looked into the ndnsim API and felt a little curious that why FIB does not have a lookup functionality like PIT. I really appreciate if you can provide this functionality. Thanks very much! > > Besides, regarding the fib structure, I have one more question. In the default fib structure, one specific face (like face 1) in one fib entry appears just once. If I use Add() or AddRoute() to add a same ndn route twice or more, face 1 in this fib entry is still only one. My question is, is there a possibility or a way to record the `twice` or more? A very direct thought is could I store one specific face twice or more in one fib entry? Or are there any other ways to do such a behavior? > > Thanks for your answer in advance! > > Regards, > huyao > > > 2013/3/16 Alex Afanasyev > Hi huyao, > > fib::Entry object associated with exactly one prefix, so RemoveFace method on fib::Entry will not have impact on any other entries. > > Let me show an example: > > # step one: find a FIB entry for the prefix associated with Interest > Ptr entry = fib->LongestPrefixMatch (interest); > > # remove a specific face > entry->RemoveFace (face_to_remove); > > --- > > This will not impact any other FIB entries. > > I just realized that the current FIB interface doesn't provide direct way to do lookup just using Name (=NameComponents). But it would be trivial to add this functionality, as underlying data structures fully support that. Let me know if you need it. (Alternatively, you can also enumerate all FIB entries using Begin/End/Next methods and find the one you need, but it can be too inefficient.) > > --- > Alex > > On Mar 15, 2013, at 1:33 AM, yao hu wrote: > >> Hi Alex, >> >> Thanks for your explanation! >> >> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace call just has one parameter (const Ptr< Face > &face) without relation to some specific prefix, so I guess if I want to delete one specific face from one specific prefix, it will have the same impact to other prefixes which also have the face. >> >> My intention is to delete one specific face from a specific prefix, while any other prefix still retains the face if it has. Is it feasible in the current ndnsim? If not, how do I do to implement such a functionality? Or my understanding for this issue has some error? >> >> Regards, >> huyao >> >> >> 2013/3/15 Alex Afanasyev >> My small correction :). I meant that it is forwarding strategy job to pick a particular face from FIB entry. >> >> --- >> Alex >> >> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev wrote: >> >>> Hi huyao, >>> >>> You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. >>> >>> There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. >>> >>> >>> --- >>> Alex >>> >>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>> >>>> a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? >>>> >>>> Thanks for your reply! >>>> >>>> >>>> 2013/3/15 yao hu >>>> Dear ndnsimers, >>>> >>>> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >>>> >>>> Regards, >>>> huyao >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Fri Mar 15 12:20:48 2013 From: huyao0107 at gmail.com (yao hu) Date: Sat, 16 Mar 2013 04:20:48 +0900 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> Message-ID: Hi Alex, Yes, that is the usual thing for fib entry. What I think is If I use Add or AddRoute call once to add one ndn route, the face will be recorded once. If I use the same call twice, the face will be recorded twice... Then I would like I could modify or adjust the the current forwarding strategy to forward the related interests from the specific face according to the `times` this face appears in the fib entry. Is there any possibility to do such a thing in the current ndnsim? Thanks very much! Regards, huyao 2013/3/16 Alex Afanasyev > Hi huyao, > > PIT also has a limited API to lookup (only using Interests and > ContentObjects). So, probably this part is also should be extended, but > just pure prefix-based lookup should be used cautiously. > > For your second question. What is your intended need for the same face > associated with the FIB entry more than once? Can you give a specific > example? For me it is fundamental that FIB entry has only one reference to > a specific face (AddRoute call "adding" the same face will "rerrange" this > face based on the specified metric). The forwarding strategy can "re-use" > the same face many times, if it feels that is appropriate. > > --- > Alex > > On Mar 15, 2013, at 10:48 AM, yao hu wrote: > > Hi Alex, > > Thanks for your clarification. I have understood what you said. It was my > misunderstanding. > > Yes. I looked into the ndnsim API and felt a little curious that why FIB > does not have a lookup functionality like PIT. I really appreciate if you > can provide this functionality. Thanks very much! > > Besides, regarding the fib structure, I have one more question. In the > default fib structure, one specific face (like face 1) in one fib entry > appears just once. If I use Add() or AddRoute() to add a same ndn route > twice or more, face 1 in this fib entry is still only one. My question is, > is there a possibility or a way to record the `twice` or more? A very > direct thought is could I store one specific face twice or more in one fib > entry? Or are there any other ways to do such a behavior? > > Thanks for your answer in advance! > > Regards, > huyao > > > 2013/3/16 Alex Afanasyev > >> Hi huyao, >> >> fib::Entry object associated with exactly one prefix, so RemoveFace >> method on fib::Entry will not have impact on any other entries. >> >> Let me show an example: >> >> # step one: find a FIB entry for the prefix associated with Interest >> Ptr entry = fib->LongestPrefixMatch (interest); >> >> # remove a specific face >> entry->RemoveFace (face_to_remove); >> >> --- >> >> This will not impact any other FIB entries. >> >> I just realized that the current FIB interface doesn't provide direct way >> to do lookup just using Name (=NameComponents). But it would be trivial to >> add this functionality, as underlying data structures fully support that. >> Let me know if you need it. (Alternatively, you can also enumerate all FIB >> entries using Begin/End/Next methods and find the one you need, but it can >> be too inefficient.) >> >> --- >> Alex >> >> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >> >> Hi Alex, >> >> Thanks for your explanation! >> >> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace >> call just has one parameter (const Ptr< Face > >> &face) without relation to some specific prefix, so I guess if I want to >> delete one specific face from one specific prefix, it will have the same >> impact to other prefixes which also have the face. >> >> My intention is to delete one specific face from a specific prefix, while >> any other prefix still retains the face if it has. Is it feasible in the >> current ndnsim? If not, how do I do to implement such a functionality? Or >> my understanding for this issue has some error? >> >> Regards, >> huyao >> >> >> 2013/3/15 Alex Afanasyev >> >>> My small correction :). I meant that it is forwarding strategy job to >>> pick a particular face from FIB entry. >>> >>> --- >>> Alex >>> >>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev < >>> alexander.afanasyev at ucla.edu> wrote: >>> >>> Hi huyao, >>> >>> You are right, for the single prefix there will be only one FIB entry >>> created and it is forwarding strategy job to pick a particular one to >>> forward an Interest in this prefix. >>> >>> There is an interface in fib::Entry to remove a specific face from s >>> specific FIB entry. You can also check recent conversation >>> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.htmlwith more details about that. >>> >>> >>> --- >>> Alex >>> >>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>> >>> a supplement.. If so, is there a way to delete just some face like face >>> 0 from the fib entry with the prefix /data without deleting face 1? >>> >>> Thanks for your reply! >>> >>> >>> 2013/3/15 yao hu >>> >>>> Dear ndnsimers, >>>> >>>> Assume that there is an existing fib entry with the prefix /data, face >>>> 0 in some specific node. Now by using the function Add() or AddRoute(), a >>>> new fib entry will be added with the same prefix /data, but with the >>>> different face 1. So I wonder in ndnsim, they are counted as two fib >>>> entries in FIB or just seemed as one. For my understanding, the answer is >>>> the latter. Here, in Fib class, GetSize () >>>> still equals to 1. Am I right? >>>> >>>> Regards, >>>> huyao >>>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >>> >>> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 15 12:34:15 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 15 Mar 2013 12:34:15 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> Message-ID: Hi huyao, You should not need to have multiple face entries, if you just want to record number of times you want to forward interest on a specific face. Ideally, this information should be stored somewhere in FaceMetric (model/fib/ndn-fib-entry.h/cc). Unfortunately, there is no "extensible" way to add new parameter to FaceMetric, but it is on my list of future modifications (the implementation plan is to have some sort of "tags" with any custom info that you can attach to a FIB entry or specific Face in FIB entry). For now, you can directly add the counter to FaceMetric class and add appropriate accessor methods. And then use this methods to track either number of times a face was "added" to FIB. --- Alex On Mar 15, 2013, at 12:20 PM, yao hu wrote: > Hi Alex, > > Yes, that is the usual thing for fib entry. What I think is If I use Add or AddRoute call once to add one ndn route, the face will be recorded once. If I use the same call twice, the face will be recorded twice... Then I would like I could modify or adjust the the current forwarding strategy to forward the related interests from the specific face according to the `times` this face appears in the fib entry. Is there any possibility to do such a thing in the current ndnsim? > > Thanks very much! > > Regards, > huyao > > > 2013/3/16 Alex Afanasyev > Hi huyao, > > PIT also has a limited API to lookup (only using Interests and ContentObjects). So, probably this part is also should be extended, but just pure prefix-based lookup should be used cautiously. > > For your second question. What is your intended need for the same face associated with the FIB entry more than once? Can you give a specific example? For me it is fundamental that FIB entry has only one reference to a specific face (AddRoute call "adding" the same face will "rerrange" this face based on the specified metric). The forwarding strategy can "re-use" the same face many times, if it feels that is appropriate. > > --- > Alex > > On Mar 15, 2013, at 10:48 AM, yao hu wrote: > >> Hi Alex, >> >> Thanks for your clarification. I have understood what you said. It was my misunderstanding. >> >> Yes. I looked into the ndnsim API and felt a little curious that why FIB does not have a lookup functionality like PIT. I really appreciate if you can provide this functionality. Thanks very much! >> >> Besides, regarding the fib structure, I have one more question. In the default fib structure, one specific face (like face 1) in one fib entry appears just once. If I use Add() or AddRoute() to add a same ndn route twice or more, face 1 in this fib entry is still only one. My question is, is there a possibility or a way to record the `twice` or more? A very direct thought is could I store one specific face twice or more in one fib entry? Or are there any other ways to do such a behavior? >> >> Thanks for your answer in advance! >> >> Regards, >> huyao >> >> >> 2013/3/16 Alex Afanasyev >> Hi huyao, >> >> fib::Entry object associated with exactly one prefix, so RemoveFace method on fib::Entry will not have impact on any other entries. >> >> Let me show an example: >> >> # step one: find a FIB entry for the prefix associated with Interest >> Ptr entry = fib->LongestPrefixMatch (interest); >> >> # remove a specific face >> entry->RemoveFace (face_to_remove); >> >> --- >> >> This will not impact any other FIB entries. >> >> I just realized that the current FIB interface doesn't provide direct way to do lookup just using Name (=NameComponents). But it would be trivial to add this functionality, as underlying data structures fully support that. Let me know if you need it. (Alternatively, you can also enumerate all FIB entries using Begin/End/Next methods and find the one you need, but it can be too inefficient.) >> >> --- >> Alex >> >> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> Thanks for your explanation! >>> >>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace call just has one parameter (const Ptr< Face > &face) without relation to some specific prefix, so I guess if I want to delete one specific face from one specific prefix, it will have the same impact to other prefixes which also have the face. >>> >>> My intention is to delete one specific face from a specific prefix, while any other prefix still retains the face if it has. Is it feasible in the current ndnsim? If not, how do I do to implement such a functionality? Or my understanding for this issue has some error? >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/15 Alex Afanasyev >>> My small correction :). I meant that it is forwarding strategy job to pick a particular face from FIB entry. >>> >>> --- >>> Alex >>> >>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev wrote: >>> >>>> Hi huyao, >>>> >>>> You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. >>>> >>>> There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. >>>> >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>>> >>>>> a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? >>>>> >>>>> Thanks for your reply! >>>>> >>>>> >>>>> 2013/3/15 yao hu >>>>> Dear ndnsimers, >>>>> >>>>> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Fri Mar 15 13:38:14 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sat, 16 Mar 2013 03:38:14 +0700 Subject: [ndnSIM] Route metrics Message-ID: <1566641363379894@web9e.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 15 13:54:48 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 15 Mar 2013 13:54:48 -0700 Subject: [ndnSIM] Route metrics In-Reply-To: <1566641363379894@web9e.yandex.ru> References: <1566641363379894@web9e.yandex.ru> Message-ID: Hi Natalya, Metric is just a int32_t value, which can be (but not necessarily) be interpreted similar to OSPF routing metric for this prefix for this face. The lower value of this "metric" the more preferred the face is to route Interest towards the prefix. For example, BestRoute forwarding strategy picks a face with minimal "metric". Other interpretations are possible, if you're using a customized forwarding strategy. Regarding metric field in topology file. This field basically defines how preferred a particular link is. Interpretations can vary, but the lower value, the more preferred the link is. The "metric" that is specified for a specific face in FIB entry ("FIB metric) is basically an aggregated sum (minimal sum) of "link metrics" to reach a specific prefix using this face. Btw, "link metric" is uint16_t value to prevent overflow of "FIB metric". Let me show an simple example: Client ------- Router-1 -------- Producer (/prefix) | | +--------- Router-2 --------------+ If topology file specified that "link metrics" are the following: Client Router-1 10 Client Router-2 100 Router-1 Producer 1 Router-2 Producer 1 Then "FIB metrics" on the Client will be: Face 0 (to router-1): 11 Face 1 (to router-2): 101 On Router-1: Face 0 (the only face): 1 On Router-2: Face 0 (the only face): also 1 --- Alex On Mar 15, 2013, at 1:38 PM, Natalya Rozhnova wrote: > Hi Alex, > > I'm using topologyReader to create desired network topology. Then I manually configure the FIB entries in my ns3 script like this: ndnHelper.AddRoute(c1, "/c1", r1, 1) etc. > I'm just curious what is the field "metric" in 'link' section of TopologyReader and what is the difference of this parameter from metric added to my FIB entries as above? > > Thanks, > Natalya > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From natalya.rozhnova at lip6.fr Fri Mar 15 14:04:28 2013 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sat, 16 Mar 2013 04:04:28 +0700 Subject: [ndnSIM] Route metrics In-Reply-To: References: <1566641363379894@web9e.yandex.ru> Message-ID: <1656971363381468@web20h.yandex.ru> An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Mar 16 04:42:06 2013 From: huyao0107 at gmail.com (yao hu) Date: Sat, 16 Mar 2013 20:42:06 +0900 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> Message-ID: Hi Alex, Thanks for your advice. I think I would like to store the counter into fib:Entry, is that ok? Another question is how to get numerical face information (0, 1, 2... which is convenient for storage) from Ptr type? Regards, huyao 2013/3/16 Alex Afanasyev > Hi huyao, > > You should not need to have multiple face entries, if you just want to > record number of times you want to forward interest on a specific face. > Ideally, this information should be stored somewhere in FaceMetric > (model/fib/ndn-fib-entry.h/cc). Unfortunately, there is no "extensible" > way to add new parameter to FaceMetric, but it is on my list of future > modifications (the implementation plan is to have some sort of "tags" with > any custom info that you can attach to a FIB entry or specific Face in FIB > entry). > > For now, you can directly add the counter to FaceMetric class and add > appropriate accessor methods. And then use this methods to track either > number of times a face was "added" to FIB. > > --- > Alex > > On Mar 15, 2013, at 12:20 PM, yao hu wrote: > > Hi Alex, > > Yes, that is the usual thing for fib entry. What I think is If I use Add > or AddRoute call once to add one ndn route, the face will be recorded once. > If I use the same call twice, the face will be recorded twice... Then I > would like I could modify or adjust the the current forwarding strategy to > forward the related interests from the specific face according to the > `times` this face appears in the fib entry. Is there any possibility to do > such a thing in the current ndnsim? > > Thanks very much! > > Regards, > huyao > > > 2013/3/16 Alex Afanasyev > >> Hi huyao, >> >> PIT also has a limited API to lookup (only using Interests and >> ContentObjects). So, probably this part is also should be extended, but >> just pure prefix-based lookup should be used cautiously. >> >> For your second question. What is your intended need for the same face >> associated with the FIB entry more than once? Can you give a specific >> example? For me it is fundamental that FIB entry has only one reference to >> a specific face (AddRoute call "adding" the same face will "rerrange" this >> face based on the specified metric). The forwarding strategy can "re-use" >> the same face many times, if it feels that is appropriate. >> >> --- >> Alex >> >> On Mar 15, 2013, at 10:48 AM, yao hu wrote: >> >> Hi Alex, >> >> Thanks for your clarification. I have understood what you said. It was my >> misunderstanding. >> >> Yes. I looked into the ndnsim API and felt a little curious that why FIB >> does not have a lookup functionality like PIT. I really appreciate if you >> can provide this functionality. Thanks very much! >> >> Besides, regarding the fib structure, I have one more question. In the >> default fib structure, one specific face (like face 1) in one fib entry >> appears just once. If I use Add() or AddRoute() to add a same ndn route >> twice or more, face 1 in this fib entry is still only one. My question is, >> is there a possibility or a way to record the `twice` or more? A very >> direct thought is could I store one specific face twice or more in one fib >> entry? Or are there any other ways to do such a behavior? >> >> Thanks for your answer in advance! >> >> Regards, >> huyao >> >> >> 2013/3/16 Alex Afanasyev >> >>> Hi huyao, >>> >>> fib::Entry object associated with exactly one prefix, so RemoveFace >>> method on fib::Entry will not have impact on any other entries. >>> >>> Let me show an example: >>> >>> # step one: find a FIB entry for the prefix associated with Interest >>> Ptr entry = fib->LongestPrefixMatch (interest); >>> >>> # remove a specific face >>> entry->RemoveFace (face_to_remove); >>> >>> --- >>> >>> This will not impact any other FIB entries. >>> >>> I just realized that the current FIB interface doesn't provide direct >>> way to do lookup just using Name (=NameComponents). But it would be >>> trivial to add this functionality, as underlying data structures fully >>> support that. Let me know if you need it. (Alternatively, you can also >>> enumerate all FIB entries using Begin/End/Next methods and find the one you >>> need, but it can be too inefficient.) >>> >>> --- >>> Alex >>> >>> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >>> >>> Hi Alex, >>> >>> Thanks for your explanation! >>> >>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace >>> call just has one parameter (const Ptr< Face > >>> &face) without relation to some specific prefix, so I guess if I want to >>> delete one specific face from one specific prefix, it will have the same >>> impact to other prefixes which also have the face. >>> >>> My intention is to delete one specific face from a specific prefix, >>> while any other prefix still retains the face if it has. Is it feasible in >>> the current ndnsim? If not, how do I do to implement such a functionality? >>> Or my understanding for this issue has some error? >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/15 Alex Afanasyev >>> >>>> My small correction :). I meant that it is forwarding strategy job to >>>> pick a particular face from FIB entry. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev < >>>> alexander.afanasyev at ucla.edu> wrote: >>>> >>>> Hi huyao, >>>> >>>> You are right, for the single prefix there will be only one FIB entry >>>> created and it is forwarding strategy job to pick a particular one to >>>> forward an Interest in this prefix. >>>> >>>> There is an interface in fib::Entry to remove a specific face from s >>>> specific FIB entry. You can also check recent conversation >>>> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.htmlwith more details about that. >>>> >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>>> >>>> a supplement.. If so, is there a way to delete just some face like face >>>> 0 from the fib entry with the prefix /data without deleting face 1? >>>> >>>> Thanks for your reply! >>>> >>>> >>>> 2013/3/15 yao hu >>>> >>>>> Dear ndnsimers, >>>>> >>>>> Assume that there is an existing fib entry with the prefix /data, face >>>>> 0 in some specific node. Now by using the function Add() or AddRoute(), a >>>>> new fib entry will be added with the same prefix /data, but with the >>>>> different face 1. So I wonder in ndnsim, they are counted as two fib >>>>> entries in FIB or just seemed as one. For my understanding, the answer is >>>>> the latter. Here, in Fib class, GetSize () >>>>> still equals to 1. Am I right? >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Sat Mar 16 08:16:23 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Sat, 16 Mar 2013 23:16:23 +0800 Subject: [ndnSIM] ndn wireless topology Message-ID: Hi I am trying to simulate energy module with ndn in ndnSIM using ns3 energy module, but receiving errors. If anyone have done it before, please help me in doing. Thanks -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 16 12:00:26 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Mar 2013 12:00:26 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> Message-ID: <684873A4-195F-425A-BF59-E0D16526903C@ucla.edu> Hi huyao, Sure, go ahead and add the counter. I will let you know when I generalize forwarding-strategy-specific storage in FIBs. To get a unique face ID of the face, you can use GetId () method of Face class (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_face.html#af65b04aa5f75e24c9e73e0d60bf397a2). Just in case, this ID is just a unique numerical ID of the face on the specific node and doesn't imply anything else (e.g., face with ID 2 doesn't mean there are 3 faces on the node). --- Alex On Mar 16, 2013, at 4:42 AM, yao hu wrote: > Hi Alex, > > Thanks for your advice. I think I would like to store the counter into fib:Entry, is that ok? Another question is how to get numerical face information (0, 1, 2... which is convenient for storage) from Ptr type? > > Regards, > huyao > > > 2013/3/16 Alex Afanasyev > Hi huyao, > > You should not need to have multiple face entries, if you just want to record number of times you want to forward interest on a specific face. Ideally, this information should be stored somewhere in FaceMetric (model/fib/ndn-fib-entry.h/cc). Unfortunately, there is no "extensible" way to add new parameter to FaceMetric, but it is on my list of future modifications (the implementation plan is to have some sort of "tags" with any custom info that you can attach to a FIB entry or specific Face in FIB entry). > > For now, you can directly add the counter to FaceMetric class and add appropriate accessor methods. And then use this methods to track either number of times a face was "added" to FIB. > > --- > Alex > > On Mar 15, 2013, at 12:20 PM, yao hu wrote: > >> Hi Alex, >> >> Yes, that is the usual thing for fib entry. What I think is If I use Add or AddRoute call once to add one ndn route, the face will be recorded once. If I use the same call twice, the face will be recorded twice... Then I would like I could modify or adjust the the current forwarding strategy to forward the related interests from the specific face according to the `times` this face appears in the fib entry. Is there any possibility to do such a thing in the current ndnsim? >> >> Thanks very much! >> >> Regards, >> huyao >> >> >> 2013/3/16 Alex Afanasyev >> Hi huyao, >> >> PIT also has a limited API to lookup (only using Interests and ContentObjects). So, probably this part is also should be extended, but just pure prefix-based lookup should be used cautiously. >> >> For your second question. What is your intended need for the same face associated with the FIB entry more than once? Can you give a specific example? For me it is fundamental that FIB entry has only one reference to a specific face (AddRoute call "adding" the same face will "rerrange" this face based on the specified metric). The forwarding strategy can "re-use" the same face many times, if it feels that is appropriate. >> >> --- >> Alex >> >> On Mar 15, 2013, at 10:48 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> Thanks for your clarification. I have understood what you said. It was my misunderstanding. >>> >>> Yes. I looked into the ndnsim API and felt a little curious that why FIB does not have a lookup functionality like PIT. I really appreciate if you can provide this functionality. Thanks very much! >>> >>> Besides, regarding the fib structure, I have one more question. In the default fib structure, one specific face (like face 1) in one fib entry appears just once. If I use Add() or AddRoute() to add a same ndn route twice or more, face 1 in this fib entry is still only one. My question is, is there a possibility or a way to record the `twice` or more? A very direct thought is could I store one specific face twice or more in one fib entry? Or are there any other ways to do such a behavior? >>> >>> Thanks for your answer in advance! >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/16 Alex Afanasyev >>> Hi huyao, >>> >>> fib::Entry object associated with exactly one prefix, so RemoveFace method on fib::Entry will not have impact on any other entries. >>> >>> Let me show an example: >>> >>> # step one: find a FIB entry for the prefix associated with Interest >>> Ptr entry = fib->LongestPrefixMatch (interest); >>> >>> # remove a specific face >>> entry->RemoveFace (face_to_remove); >>> >>> --- >>> >>> This will not impact any other FIB entries. >>> >>> I just realized that the current FIB interface doesn't provide direct way to do lookup just using Name (=NameComponents). But it would be trivial to add this functionality, as underlying data structures fully support that. Let me know if you need it. (Alternatively, you can also enumerate all FIB entries using Begin/End/Next methods and find the one you need, but it can be too inefficient.) >>> >>> --- >>> Alex >>> >>> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> Thanks for your explanation! >>>> >>>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace call just has one parameter (const Ptr< Face > &face) without relation to some specific prefix, so I guess if I want to delete one specific face from one specific prefix, it will have the same impact to other prefixes which also have the face. >>>> >>>> My intention is to delete one specific face from a specific prefix, while any other prefix still retains the face if it has. Is it feasible in the current ndnsim? If not, how do I do to implement such a functionality? Or my understanding for this issue has some error? >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> 2013/3/15 Alex Afanasyev >>>> My small correction :). I meant that it is forwarding strategy job to pick a particular face from FIB entry. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev wrote: >>>> >>>>> Hi huyao, >>>>> >>>>> You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. >>>>> >>>>> There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. >>>>> >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>>>> >>>>>> a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? >>>>>> >>>>>> Thanks for your reply! >>>>>> >>>>>> >>>>>> 2013/3/15 yao hu >>>>>> Dear ndnsimers, >>>>>> >>>>>> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >>>>>> >>>>>> Regards, >>>>>> huyao >>>>>> >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 16 12:01:53 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Mar 2013 12:01:53 -0700 Subject: [ndnSIM] ndn wireless topology In-Reply-To: References: Message-ID: Hi Xee, We have tried with wifi module (if you want, you can check this repo http://github.com/cawka/ndnSIM-nom-rapid-car2car for an example). What kind of errors are you getting? --- Alex On Mar 16, 2013, at 8:16 AM, Xee <1839750381 at qq.com> wrote: > Hi > I am trying to simulate energy module with ndn in ndnSIM using ns3 energy module, but receiving errors. If anyone have done it before, please help me in doing. > > Thanks > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Mar 16 19:04:51 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 17 Mar 2013 11:04:51 +0900 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: <684873A4-195F-425A-BF59-E0D16526903C@ucla.edu> References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> <684873A4-195F-425A-BF59-E0D16526903C@ucla.edu> Message-ID: Hi Alex, I see. Thanks a lot. Now I am in the method ForwardingStrategy::DidReceiveSolicitedData(), I want to call the method AddRoute(), but I do not know how to pass the first parameter--Ptr node. Could you please give an example? Regards, huyao 2013/3/17 Alex Afanasyev > Hi huyao, > > Sure, go ahead and add the counter. I will let you know when I generalize > forwarding-strategy-specific storage in FIBs. > > To get a unique face ID of the face, you can use GetId () method of Face > class ( > http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_face.html#af65b04aa5f75e24c9e73e0d60bf397a2). > Just in case, this ID is just a unique numerical ID of the face on the > specific node and doesn't imply anything else (e.g., face with ID 2 doesn't > mean there are 3 faces on the node). > > --- > Alex > > On Mar 16, 2013, at 4:42 AM, yao hu wrote: > > Hi Alex, > > Thanks for your advice. I think I would like to store the counter into fib:Entry, > is that ok? Another question is how to get numerical face information (0, > 1, 2... which is convenient for storage) from Ptr type? > > Regards, > huyao > > > 2013/3/16 Alex Afanasyev > >> Hi huyao, >> >> You should not need to have multiple face entries, if you just want to >> record number of times you want to forward interest on a specific face. >> Ideally, this information should be stored somewhere in FaceMetric >> (model/fib/ndn-fib-entry.h/cc). Unfortunately, there is no "extensible" >> way to add new parameter to FaceMetric, but it is on my list of future >> modifications (the implementation plan is to have some sort of "tags" with >> any custom info that you can attach to a FIB entry or specific Face in FIB >> entry). >> >> For now, you can directly add the counter to FaceMetric class and add >> appropriate accessor methods. And then use this methods to track either >> number of times a face was "added" to FIB. >> >> --- >> Alex >> >> On Mar 15, 2013, at 12:20 PM, yao hu wrote: >> >> Hi Alex, >> >> Yes, that is the usual thing for fib entry. What I think is If I use Add >> or AddRoute call once to add one ndn route, the face will be recorded once. >> If I use the same call twice, the face will be recorded twice... Then I >> would like I could modify or adjust the the current forwarding strategy to >> forward the related interests from the specific face according to the >> `times` this face appears in the fib entry. Is there any possibility to do >> such a thing in the current ndnsim? >> >> Thanks very much! >> >> Regards, >> huyao >> >> >> 2013/3/16 Alex Afanasyev >> >>> Hi huyao, >>> >>> PIT also has a limited API to lookup (only using Interests and >>> ContentObjects). So, probably this part is also should be extended, but >>> just pure prefix-based lookup should be used cautiously. >>> >>> For your second question. What is your intended need for the same face >>> associated with the FIB entry more than once? Can you give a specific >>> example? For me it is fundamental that FIB entry has only one reference to >>> a specific face (AddRoute call "adding" the same face will "rerrange" this >>> face based on the specified metric). The forwarding strategy can "re-use" >>> the same face many times, if it feels that is appropriate. >>> >>> --- >>> Alex >>> >>> On Mar 15, 2013, at 10:48 AM, yao hu wrote: >>> >>> Hi Alex, >>> >>> Thanks for your clarification. I have understood what you said. It was >>> my misunderstanding. >>> >>> Yes. I looked into the ndnsim API and felt a little curious that why FIB >>> does not have a lookup functionality like PIT. I really appreciate if you >>> can provide this functionality. Thanks very much! >>> >>> Besides, regarding the fib structure, I have one more question. In the >>> default fib structure, one specific face (like face 1) in one fib entry >>> appears just once. If I use Add() or AddRoute() to add a same ndn route >>> twice or more, face 1 in this fib entry is still only one. My question is, >>> is there a possibility or a way to record the `twice` or more? A very >>> direct thought is could I store one specific face twice or more in one fib >>> entry? Or are there any other ways to do such a behavior? >>> >>> Thanks for your answer in advance! >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/16 Alex Afanasyev >>> >>>> Hi huyao, >>>> >>>> fib::Entry object associated with exactly one prefix, so RemoveFace >>>> method on fib::Entry will not have impact on any other entries. >>>> >>>> Let me show an example: >>>> >>>> # step one: find a FIB entry for the prefix associated with Interest >>>> Ptr entry = fib->LongestPrefixMatch (interest); >>>> >>>> # remove a specific face >>>> entry->RemoveFace (face_to_remove); >>>> >>>> --- >>>> >>>> This will not impact any other FIB entries. >>>> >>>> I just realized that the current FIB interface doesn't provide direct >>>> way to do lookup just using Name (=NameComponents). But it would be >>>> trivial to add this functionality, as underlying data structures fully >>>> support that. Let me know if you need it. (Alternatively, you can also >>>> enumerate all FIB entries using Begin/End/Next methods and find the one you >>>> need, but it can be too inefficient.) >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >>>> >>>> Hi Alex, >>>> >>>> Thanks for your explanation! >>>> >>>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace >>>> call just has one parameter (const Ptr< Face > >>>> &face) without relation to some specific prefix, so I guess if I want to >>>> delete one specific face from one specific prefix, it will have the same >>>> impact to other prefixes which also have the face. >>>> >>>> My intention is to delete one specific face from a specific prefix, >>>> while any other prefix still retains the face if it has. Is it feasible in >>>> the current ndnsim? If not, how do I do to implement such a functionality? >>>> Or my understanding for this issue has some error? >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> 2013/3/15 Alex Afanasyev >>>> >>>>> My small correction :). I meant that it is forwarding strategy job to >>>>> pick a particular face from FIB entry. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev < >>>>> alexander.afanasyev at ucla.edu> wrote: >>>>> >>>>> Hi huyao, >>>>> >>>>> You are right, for the single prefix there will be only one FIB entry >>>>> created and it is forwarding strategy job to pick a particular one to >>>>> forward an Interest in this prefix. >>>>> >>>>> There is an interface in fib::Entry to remove a specific face from s >>>>> specific FIB entry. You can also check recent conversation >>>>> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.htmlwith more details about that. >>>>> >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>>>> >>>>> a supplement.. If so, is there a way to delete just some face like >>>>> face 0 from the fib entry with the prefix /data without deleting face 1? >>>>> >>>>> Thanks for your reply! >>>>> >>>>> >>>>> 2013/3/15 yao hu >>>>> >>>>>> Dear ndnsimers, >>>>>> >>>>>> Assume that there is an existing fib entry with the prefix /data, >>>>>> face 0 in some specific node. Now by using the function Add() or >>>>>> AddRoute(), a new fib entry will be added with the same prefix /data, but >>>>>> with the different face 1. So I wonder in ndnsim, they are counted as two >>>>>> fib entries in FIB or just seemed as one. For my understanding, the answer >>>>>> is the latter. Here, in Fib class, GetSize () >>>>>> still equals to 1. Am I right? >>>>>> >>>>>> Regards, >>>>>> huyao >>>>>> >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 16 19:07:12 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Mar 2013 19:07:12 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> <684873A4-195F-425A-BF59-E0D16526903C@ucla.edu> Message-ID: <6568BB76-F4B4-4E8B-881E-F23CB43555F8@ucla.edu> Hi huyao, I'm assuming you're modifying FIB on the same node Ptr node = this->GetObject (); or better, you can do the following: Ptr fib = this->GetObject (); and then directly use FIB methods to update FIB without use of StackHelper. --- Alex On Mar 16, 2013, at 7:04 PM, yao hu wrote: > Hi Alex, > > I see. Thanks a lot. > > Now I am in the method ForwardingStrategy::DidReceiveSolicitedData(), I want to call the method AddRoute(), but I do not know how to pass the first parameter--Ptr node. Could you please give an example? > > Regards, > huyao > > > 2013/3/17 Alex Afanasyev > Hi huyao, > > Sure, go ahead and add the counter. I will let you know when I generalize forwarding-strategy-specific storage in FIBs. > > To get a unique face ID of the face, you can use GetId () method of Face class (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_face.html#af65b04aa5f75e24c9e73e0d60bf397a2). Just in case, this ID is just a unique numerical ID of the face on the specific node and doesn't imply anything else (e.g., face with ID 2 doesn't mean there are 3 faces on the node). > > --- > Alex > > On Mar 16, 2013, at 4:42 AM, yao hu wrote: > >> Hi Alex, >> >> Thanks for your advice. I think I would like to store the counter into fib:Entry, is that ok? Another question is how to get numerical face information (0, 1, 2... which is convenient for storage) from Ptr type? >> >> Regards, >> huyao >> >> >> 2013/3/16 Alex Afanasyev >> Hi huyao, >> >> You should not need to have multiple face entries, if you just want to record number of times you want to forward interest on a specific face. Ideally, this information should be stored somewhere in FaceMetric (model/fib/ndn-fib-entry.h/cc). Unfortunately, there is no "extensible" way to add new parameter to FaceMetric, but it is on my list of future modifications (the implementation plan is to have some sort of "tags" with any custom info that you can attach to a FIB entry or specific Face in FIB entry). >> >> For now, you can directly add the counter to FaceMetric class and add appropriate accessor methods. And then use this methods to track either number of times a face was "added" to FIB. >> >> --- >> Alex >> >> On Mar 15, 2013, at 12:20 PM, yao hu wrote: >> >>> Hi Alex, >>> >>> Yes, that is the usual thing for fib entry. What I think is If I use Add or AddRoute call once to add one ndn route, the face will be recorded once. If I use the same call twice, the face will be recorded twice... Then I would like I could modify or adjust the the current forwarding strategy to forward the related interests from the specific face according to the `times` this face appears in the fib entry. Is there any possibility to do such a thing in the current ndnsim? >>> >>> Thanks very much! >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/16 Alex Afanasyev >>> Hi huyao, >>> >>> PIT also has a limited API to lookup (only using Interests and ContentObjects). So, probably this part is also should be extended, but just pure prefix-based lookup should be used cautiously. >>> >>> For your second question. What is your intended need for the same face associated with the FIB entry more than once? Can you give a specific example? For me it is fundamental that FIB entry has only one reference to a specific face (AddRoute call "adding" the same face will "rerrange" this face based on the specified metric). The forwarding strategy can "re-use" the same face many times, if it feels that is appropriate. >>> >>> --- >>> Alex >>> >>> On Mar 15, 2013, at 10:48 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> Thanks for your clarification. I have understood what you said. It was my misunderstanding. >>>> >>>> Yes. I looked into the ndnsim API and felt a little curious that why FIB does not have a lookup functionality like PIT. I really appreciate if you can provide this functionality. Thanks very much! >>>> >>>> Besides, regarding the fib structure, I have one more question. In the default fib structure, one specific face (like face 1) in one fib entry appears just once. If I use Add() or AddRoute() to add a same ndn route twice or more, face 1 in this fib entry is still only one. My question is, is there a possibility or a way to record the `twice` or more? A very direct thought is could I store one specific face twice or more in one fib entry? Or are there any other ways to do such a behavior? >>>> >>>> Thanks for your answer in advance! >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> 2013/3/16 Alex Afanasyev >>>> Hi huyao, >>>> >>>> fib::Entry object associated with exactly one prefix, so RemoveFace method on fib::Entry will not have impact on any other entries. >>>> >>>> Let me show an example: >>>> >>>> # step one: find a FIB entry for the prefix associated with Interest >>>> Ptr entry = fib->LongestPrefixMatch (interest); >>>> >>>> # remove a specific face >>>> entry->RemoveFace (face_to_remove); >>>> >>>> --- >>>> >>>> This will not impact any other FIB entries. >>>> >>>> I just realized that the current FIB interface doesn't provide direct way to do lookup just using Name (=NameComponents). But it would be trivial to add this functionality, as underlying data structures fully support that. Let me know if you need it. (Alternatively, you can also enumerate all FIB entries using Begin/End/Next methods and find the one you need, but it can be too inefficient.) >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> Thanks for your explanation! >>>>> >>>>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace call just has one parameter (const Ptr< Face > &face) without relation to some specific prefix, so I guess if I want to delete one specific face from one specific prefix, it will have the same impact to other prefixes which also have the face. >>>>> >>>>> My intention is to delete one specific face from a specific prefix, while any other prefix still retains the face if it has. Is it feasible in the current ndnsim? If not, how do I do to implement such a functionality? Or my understanding for this issue has some error? >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> >>>>> 2013/3/15 Alex Afanasyev >>>>> My small correction :). I meant that it is forwarding strategy job to pick a particular face from FIB entry. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev wrote: >>>>> >>>>>> Hi huyao, >>>>>> >>>>>> You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. >>>>>> >>>>>> There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. >>>>>> >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>>>>> >>>>>>> a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? >>>>>>> >>>>>>> Thanks for your reply! >>>>>>> >>>>>>> >>>>>>> 2013/3/15 yao hu >>>>>>> Dear ndnsimers, >>>>>>> >>>>>>> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >>>>>>> >>>>>>> Regards, >>>>>>> huyao >>>>>>> >>>>>>> _______________________________________________ >>>>>>> ndnSIM mailing list >>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Mar 16 19:33:51 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 17 Mar 2013 11:33:51 +0900 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: <6568BB76-F4B4-4E8B-881E-F23CB43555F8@ucla.edu> References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> <684873A4-195F-425A-BF59-E0D16526903C@ucla.edu> <6568BB76-F4B4-4E8B-881E-F23CB43555F8@ucla.edu> Message-ID: Hi Alex, Thanks for your immediate reply. If I use the second way, I can use the method fib->Add() to add a ndn route. However, the trouble is the first parameter--Name &prefix. The following the the only way to change from prefix string to Name? Can it be used directly in ForwardingStrategy? NameValue prefixValue; prefixValue.DeserializeFromString (prefix, MakeNameChecker ()); fib->Add(prefixValue.Get (), face, metric); Regards, huyao 2013/3/17 Alex Afanasyev > Hi huyao, > > I'm assuming you're modifying FIB on the same node > > Ptr node = this->GetObject (); > > or better, you can do the following: > > Ptr fib = this->GetObject (); and then directly use FIB > methods to update FIB without use of StackHelper. > > --- > Alex > > On Mar 16, 2013, at 7:04 PM, yao hu wrote: > > Hi Alex, > > I see. Thanks a lot. > > Now I am in the method ForwardingStrategy::DidReceiveSolicitedData(), I > want to call the method AddRoute(), but I do not know how to pass the first > parameter--Ptr node. Could you please give an example? > > Regards, > huyao > > 2013/3/17 Alex Afanasyev > >> Hi huyao, >> >> Sure, go ahead and add the counter. I will let you know when I >> generalize forwarding-strategy-specific storage in FIBs. >> >> To get a unique face ID of the face, you can use GetId () method of Face >> class ( >> http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_face.html#af65b04aa5f75e24c9e73e0d60bf397a2). >> Just in case, this ID is just a unique numerical ID of the face on the >> specific node and doesn't imply anything else (e.g., face with ID 2 doesn't >> mean there are 3 faces on the node). >> >> --- >> Alex >> >> On Mar 16, 2013, at 4:42 AM, yao hu wrote: >> >> Hi Alex, >> >> Thanks for your advice. I think I would like to store the counter into fib:Entry, >> is that ok? Another question is how to get numerical face information (0, >> 1, 2... which is convenient for storage) from Ptr type? >> >> Regards, >> huyao >> >> >> 2013/3/16 Alex Afanasyev >> >>> Hi huyao, >>> >>> You should not need to have multiple face entries, if you just want to >>> record number of times you want to forward interest on a specific face. >>> Ideally, this information should be stored somewhere in FaceMetric >>> (model/fib/ndn-fib-entry.h/cc). Unfortunately, there is no "extensible" >>> way to add new parameter to FaceMetric, but it is on my list of future >>> modifications (the implementation plan is to have some sort of "tags" with >>> any custom info that you can attach to a FIB entry or specific Face in FIB >>> entry). >>> >>> For now, you can directly add the counter to FaceMetric class and add >>> appropriate accessor methods. And then use this methods to track either >>> number of times a face was "added" to FIB. >>> >>> --- >>> Alex >>> >>> On Mar 15, 2013, at 12:20 PM, yao hu wrote: >>> >>> Hi Alex, >>> >>> Yes, that is the usual thing for fib entry. What I think is If I use Add >>> or AddRoute call once to add one ndn route, the face will be recorded once. >>> If I use the same call twice, the face will be recorded twice... Then I >>> would like I could modify or adjust the the current forwarding strategy to >>> forward the related interests from the specific face according to the >>> `times` this face appears in the fib entry. Is there any possibility to do >>> such a thing in the current ndnsim? >>> >>> Thanks very much! >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/16 Alex Afanasyev >>> >>>> Hi huyao, >>>> >>>> PIT also has a limited API to lookup (only using Interests and >>>> ContentObjects). So, probably this part is also should be extended, but >>>> just pure prefix-based lookup should be used cautiously. >>>> >>>> For your second question. What is your intended need for the same face >>>> associated with the FIB entry more than once? Can you give a specific >>>> example? For me it is fundamental that FIB entry has only one reference to >>>> a specific face (AddRoute call "adding" the same face will "rerrange" this >>>> face based on the specified metric). The forwarding strategy can "re-use" >>>> the same face many times, if it feels that is appropriate. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 15, 2013, at 10:48 AM, yao hu wrote: >>>> >>>> Hi Alex, >>>> >>>> Thanks for your clarification. I have understood what you said. It was >>>> my misunderstanding. >>>> >>>> Yes. I looked into the ndnsim API and felt a little curious that why >>>> FIB does not have a lookup functionality like PIT. I really appreciate if >>>> you can provide this functionality. Thanks very much! >>>> >>>> Besides, regarding the fib structure, I have one more question. In the >>>> default fib structure, one specific face (like face 1) in one fib entry >>>> appears just once. If I use Add() or AddRoute() to add a same ndn route >>>> twice or more, face 1 in this fib entry is still only one. My question is, >>>> is there a possibility or a way to record the `twice` or more? A very >>>> direct thought is could I store one specific face twice or more in one fib >>>> entry? Or are there any other ways to do such a behavior? >>>> >>>> Thanks for your answer in advance! >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> 2013/3/16 Alex Afanasyev >>>> >>>>> Hi huyao, >>>>> >>>>> fib::Entry object associated with exactly one prefix, so RemoveFace >>>>> method on fib::Entry will not have impact on any other entries. >>>>> >>>>> Let me show an example: >>>>> >>>>> # step one: find a FIB entry for the prefix associated with Interest >>>>> Ptr entry = fib->LongestPrefixMatch (interest); >>>>> >>>>> # remove a specific face >>>>> entry->RemoveFace (face_to_remove); >>>>> >>>>> --- >>>>> >>>>> This will not impact any other FIB entries. >>>>> >>>>> I just realized that the current FIB interface doesn't provide direct >>>>> way to do lookup just using Name (=NameComponents). But it would be >>>>> trivial to add this functionality, as underlying data structures fully >>>>> support that. Let me know if you need it. (Alternatively, you can also >>>>> enumerate all FIB entries using Begin/End/Next methods and find the one you >>>>> need, but it can be too inefficient.) >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >>>>> >>>>> Hi Alex, >>>>> >>>>> Thanks for your explanation! >>>>> >>>>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace >>>>> call just has one parameter (const Ptr< Face > >>>>> &face) without relation to some specific prefix, so I guess if I want to >>>>> delete one specific face from one specific prefix, it will have the same >>>>> impact to other prefixes which also have the face. >>>>> >>>>> My intention is to delete one specific face from a specific prefix, >>>>> while any other prefix still retains the face if it has. Is it feasible in >>>>> the current ndnsim? If not, how do I do to implement such a functionality? >>>>> Or my understanding for this issue has some error? >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> >>>>> 2013/3/15 Alex Afanasyev >>>>> >>>>>> My small correction :). I meant that it is forwarding strategy job to >>>>>> pick a particular face from FIB entry. >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev < >>>>>> alexander.afanasyev at ucla.edu> wrote: >>>>>> >>>>>> Hi huyao, >>>>>> >>>>>> You are right, for the single prefix there will be only one FIB entry >>>>>> created and it is forwarding strategy job to pick a particular one to >>>>>> forward an Interest in this prefix. >>>>>> >>>>>> There is an interface in fib::Entry to remove a specific face from s >>>>>> specific FIB entry. You can also check recent conversation >>>>>> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.htmlwith more details about that. >>>>>> >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>>>>> >>>>>> a supplement.. If so, is there a way to delete just some face like >>>>>> face 0 from the fib entry with the prefix /data without deleting face 1? >>>>>> >>>>>> Thanks for your reply! >>>>>> >>>>>> >>>>>> 2013/3/15 yao hu >>>>>> >>>>>>> Dear ndnsimers, >>>>>>> >>>>>>> Assume that there is an existing fib entry with the prefix /data, >>>>>>> face 0 in some specific node. Now by using the function Add() or >>>>>>> AddRoute(), a new fib entry will be added with the same prefix /data, but >>>>>>> with the different face 1. So I wonder in ndnsim, they are counted as two >>>>>>> fib entries in FIB or just seemed as one. For my understanding, the answer >>>>>>> is the latter. Here, in Fib class, GetSize () >>>>>>> still equals to 1. Am I right? >>>>>>> >>>>>>> Regards, >>>>>>> huyao >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>>> >>>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 16 19:45:23 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Mar 2013 19:45:23 -0700 Subject: [ndnSIM] structure of fib in ndnsim In-Reply-To: References: <29E1AE45-1E0E-4B0A-89F8-F6EAFBF95249@ucla.edu> <7E4F6627-CA6C-411B-99D8-F7989CB04A5C@ucla.edu> <6BB47D6D-A86C-48F4-B9C9-539055ACC5A8@ucla.edu> <684873A4-195F-425A-BF59-E0D16526903C@ucla.edu> <6568BB76-F4B4-4E8B-881E-F23CB43555F8@ucla.edu> Message-ID: <1EA21CC8-B607-4DDA-98CE-A2035AB3796F@ucla.edu> you can also use this: lexical_cast ("/string/prefix"); (assuming that you have following in the beginning of cc file: #include using namespace boost; ) you can also directly construct name using () methods, if it is more appropriate for you: Name name; name ("string")("prefix"); --- Alex On Mar 16, 2013, at 7:33 PM, yao hu wrote: > Hi Alex, > > Thanks for your immediate reply. If I use the second way, I can use the method fib->Add() to add a ndn route. However, the trouble is the first parameter--Name &prefix. The following the the only way to change from prefix string to Name? Can it be used directly in ForwardingStrategy? > > > NameValue prefixValue; > prefixValue.DeserializeFromString (prefix, MakeNameChecker ()); > fib->Add (prefixValue.Get (), face, metric); > > > Regards, > huyao > > > > 2013/3/17 Alex Afanasyev >> Hi huyao, >> >> I'm assuming you're modifying FIB on the same node >> >> Ptr node = this->GetObject (); >> >> or better, you can do the following: >> >> Ptr fib = this->GetObject (); and then directly use FIB methods to update FIB without use of StackHelper. >> >> --- >> Alex >> >> On Mar 16, 2013, at 7:04 PM, yao hu wrote: >> >>> Hi Alex, >>> >>> I see. Thanks a lot. >>> >>> Now I am in the method ForwardingStrategy::DidReceiveSolicitedData(), I want to call the method AddRoute(), but I do not know how to pass the first parameter--Ptr node. Could you please give an example? >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/17 Alex Afanasyev >>>> Hi huyao, >>>> >>>> Sure, go ahead and add the counter. I will let you know when I generalize forwarding-strategy-specific storage in FIBs. >>>> >>>> To get a unique face ID of the face, you can use GetId () method of Face class (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_face.html#af65b04aa5f75e24c9e73e0d60bf397a2). Just in case, this ID is just a unique numerical ID of the face on the specific node and doesn't imply anything else (e.g., face with ID 2 doesn't mean there are 3 faces on the node). >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 16, 2013, at 4:42 AM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> Thanks for your advice. I think I would like to store the counter into fib:Entry, is that ok? Another question is how to get numerical face information (0, 1, 2... which is convenient for storage) from Ptr type? >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> >>>>> 2013/3/16 Alex Afanasyev >>>>>> Hi huyao, >>>>>> >>>>>> You should not need to have multiple face entries, if you just want to record number of times you want to forward interest on a specific face. Ideally, this information should be stored somewhere in FaceMetric (model/fib/ndn-fib-entry.h/cc). Unfortunately, there is no "extensible" way to add new parameter to FaceMetric, but it is on my list of future modifications (the implementation plan is to have some sort of "tags" with any custom info that you can attach to a FIB entry or specific Face in FIB entry). >>>>>> >>>>>> For now, you can directly add the counter to FaceMetric class and add appropriate accessor methods. And then use this methods to track either number of times a face was "added" to FIB. >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 15, 2013, at 12:20 PM, yao hu wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> >>>>>>> Yes, that is the usual thing for fib entry. What I think is If I use Add or AddRoute call once to add one ndn route, the face will be recorded once. If I use the same call twice, the face will be recorded twice... Then I would like I could modify or adjust the the current forwarding strategy to forward the related interests from the specific face according to the `times` this face appears in the fib entry. Is there any possibility to do such a thing in the current ndnsim? >>>>>>> >>>>>>> Thanks very much! >>>>>>> >>>>>>> Regards, >>>>>>> huyao >>>>>>> >>>>>>> >>>>>>> 2013/3/16 Alex Afanasyev >>>>>>>> Hi huyao, >>>>>>>> >>>>>>>> PIT also has a limited API to lookup (only using Interests and ContentObjects). So, probably this part is also should be extended, but just pure prefix-based lookup should be used cautiously. >>>>>>>> >>>>>>>> For your second question. What is your intended need for the same face associated with the FIB entry more than once? Can you give a specific example? For me it is fundamental that FIB entry has only one reference to a specific face (AddRoute call "adding" the same face will "rerrange" this face based on the specified metric). The forwarding strategy can "re-use" the same face many times, if it feels that is appropriate. >>>>>>>> >>>>>>>> --- >>>>>>>> Alex >>>>>>>> >>>>>>>> On Mar 15, 2013, at 10:48 AM, yao hu wrote: >>>>>>>> >>>>>>>>> Hi Alex, >>>>>>>>> >>>>>>>>> Thanks for your clarification. I have understood what you said. It was my misunderstanding. >>>>>>>>> >>>>>>>>> Yes. I looked into the ndnsim API and felt a little curious that why FIB does not have a lookup functionality like PIT. I really appreciate if you can provide this functionality. Thanks very much! >>>>>>>>> >>>>>>>>> Besides, regarding the fib structure, I have one more question. In the default fib structure, one specific face (like face 1) in one fib entry appears just once. If I use Add() or AddRoute() to add a same ndn route twice or more, face 1 in this fib entry is still only one. My question is, is there a possibility or a way to record the `twice` or more? A very direct thought is could I store one specific face twice or more in one fib entry? Or are there any other ways to do such a behavior? >>>>>>>>> >>>>>>>>> Thanks for your answer in advance! >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> huyao >>>>>>>>> >>>>>>>>> >>>>>>>>> 2013/3/16 Alex Afanasyev >>>>>>>>>> Hi huyao, >>>>>>>>>> >>>>>>>>>> fib::Entry object associated with exactly one prefix, so RemoveFace method on fib::Entry will not have impact on any other entries. >>>>>>>>>> >>>>>>>>>> Let me show an example: >>>>>>>>>> >>>>>>>>>> # step one: find a FIB entry for the prefix associated with Interest >>>>>>>>>> Ptr entry = fib->LongestPrefixMatch (interest); >>>>>>>>>> >>>>>>>>>> # remove a specific face >>>>>>>>>> entry->RemoveFace (face_to_remove); >>>>>>>>>> >>>>>>>>>> --- >>>>>>>>>> >>>>>>>>>> This will not impact any other FIB entries. >>>>>>>>>> >>>>>>>>>> I just realized that the current FIB interface doesn't provide direct way to do lookup just using Name (=NameComponents). But it would be trivial to add this functionality, as underlying data structures fully support that. Let me know if you need it. (Alternatively, you can also enumerate all FIB entries using Begin/End/Next methods and find the one you need, but it can be too inefficient.) >>>>>>>>>> >>>>>>>>>> --- >>>>>>>>>> Alex >>>>>>>>>> >>>>>>>>>> On Mar 15, 2013, at 1:33 AM, yao hu wrote: >>>>>>>>>> >>>>>>>>>>> Hi Alex, >>>>>>>>>>> >>>>>>>>>>> Thanks for your explanation! >>>>>>>>>>> >>>>>>>>>>> I am sorry I still have the perplexity. I saw that fib::Entry->RemoveFace call just has one parameter (const Ptr< Face > &face) without relation to some specific prefix, so I guess if I want to delete one specific face from one specific prefix, it will have the same impact to other prefixes which also have the face. >>>>>>>>>>> >>>>>>>>>>> My intention is to delete one specific face from a specific prefix, while any other prefix still retains the face if it has. Is it feasible in the current ndnsim? If not, how do I do to implement such a functionality? Or my understanding for this issue has some error? >>>>>>>>>>> >>>>>>>>>>> Regards, >>>>>>>>>>> huyao >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 2013/3/15 Alex Afanasyev >>>>>>>>>>>> My small correction :). I meant that it is forwarding strategy job to pick a particular face from FIB entry. >>>>>>>>>>>> >>>>>>>>>>>> --- >>>>>>>>>>>> Alex >>>>>>>>>>>> >>>>>>>>>>>> On Mar 14, 2013, at 7:55 PM, Alex Afanasyev wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi huyao, >>>>>>>>>>>>> >>>>>>>>>>>>> You are right, for the single prefix there will be only one FIB entry created and it is forwarding strategy job to pick a particular one to forward an Interest in this prefix. >>>>>>>>>>>>> >>>>>>>>>>>>> There is an interface in fib::Entry to remove a specific face from s specific FIB entry. You can also check recent conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000242.html with more details about that. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> --- >>>>>>>>>>>>> Alex >>>>>>>>>>>>> >>>>>>>>>>>>> On Mar 14, 2013, at 7:28 PM, yao hu wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> a supplement.. If so, is there a way to delete just some face like face 0 from the fib entry with the prefix /data without deleting face 1? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks for your reply! >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2013/3/15 yao hu >>>>>>>>>>>>>>> Dear ndnsimers, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Assume that there is an existing fib entry with the prefix /data, face 0 in some specific node. Now by using the function Add() or AddRoute(), a new fib entry will be added with the same prefix /data, but with the different face 1. So I wonder in ndnsim, they are counted as two fib entries in FIB or just seemed as one. For my understanding, the answer is the latter. Here, in Fib class, GetSize () still equals to 1. Am I right? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>>> huyao >>>>>>>>>>>>>> >>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>> ndnSIM mailing list >>>>>>>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> ndnSIM mailing list >>>>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> ndnSIM mailing list >>>>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>>> >>>>>>> _______________________________________________ >>>>>>> ndnSIM mailing list >>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 17 04:59:39 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 17 Mar 2013 04:59:39 -0700 Subject: [ndnSIM] puzzled about nameconponent~~~ In-Reply-To: <201303161546596097832@gmail.com> References: <201303161546596097832@gmail.com> Message-ID: <9582552C-69BA-4D98-9718-DB575346D113@ucla.edu> Hi Yakun, Sorry for the delayed reply. Can you tell me what is the way you're trying to construct names. The current interface in Name class is far from perfect and I would love to have suggestions on how to improve it. Right now, one of the Name constructors takes a list of references to string as input parameter, but it most likely not going to work in your case (it works with GetSubComponents). With header->GetName() there should not be a problem, since you can either assign the output to another Name object or construct a new name object using the return value of GetName. --- Alex On Mar 16, 2013, at 12:47 AM, "Minerva" wrote: > Hi Alex, > The function "GetComponets()" in "name.cc" can convert the namecomponent structure to a list. > I'm wondering if there is an inverse function that can convert the list to nameconponent structure as well as header->GetName. > If so, would you please show me an example how to use it? > Many thanks. > > > > Sincerely, > Yakun Xu > National Engineering Laboratory for Next Generation Internet Interconnection Devices > Beijing Jiaotong University, China > Email: 11111015 at bjtu.edu.cn or xuyakunkun at gmail.com > ???????????? > 2013-03-16 > Minerva -------------- next part -------------- An HTML attachment was scrubbed... URL: From 11111015 at bjtu.edu.cn Sun Mar 17 07:13:18 2013 From: 11111015 at bjtu.edu.cn (=?gb2312?B?0OzRxef7?=) Date: Sun, 17 Mar 2013 22:13:18 +0800 Subject: [ndnSIM] forwarding-strategy.cc Message-ID: <563529374.05733@bjtu.edu.cn> Hi Alex, I add few new bits in the name prefix as you suppose and these new bits in the prefix should not be handlled as the header name. So I wanna add a new header similiar to Ptr header in forwarding-strategy.cc except for the name. In other words, I wanna reset the name in Ptr header. I guess the router can only read NDN package without any modification. Confusing~~~~ ???????????? 2013-03-17 ??? -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 17 18:35:39 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 17 Mar 2013 19:35:39 -0600 Subject: [ndnSIM] forwarding-strategy.cc In-Reply-To: <563529374.05733@bjtu.edu.cn> References: <563529374.05733@bjtu.edu.cn> Message-ID: <2CCFD1AA-214C-4F51-AF61-3E75DE81F118@ucla.edu> Hi Yakun, If you want to create and send out a slightly modified Interest inside the forwarding strategy, you can do something similar to what is done in nacks.cc: you create a new Interest, based on the existing interest that you have and then "replace" necessary parts (name). For example, ... Ptr newInterest = Create (*header); newInterest->SetName (Create ("/some/new/name")); Ptr packet = Create (); nonNackInterest->AddHeader (*nonNackHeader); ... --- Alex On Mar 17, 2013, at 7:13 AM, "???" <11111015 at bjtu.edu.cn> wrote: > Hi Alex, > I add few new bits in the name prefix as you suppose and these new bits in the prefix should not be handlled as the header name. So I wanna add a new header similiar to Ptr header in forwarding-strategy.cc except for the name. In other words, I wanna reset the name in Ptr header. > I guess the router can only read NDN package without any modification. > Confusing~~~~ > > > ???????????? > 2013-03-17 > ??? -------------- next part -------------- An HTML attachment was scrubbed... URL: From 11111015 at bjtu.edu.cn Sun Mar 17 20:34:32 2013 From: 11111015 at bjtu.edu.cn (=?gb2312?B?0OzRxef7?=) Date: Mon, 18 Mar 2013 11:34:32 +0800 Subject: [ndnSIM] forwarding-strategy.cc References: <563529374.05733@bjtu.edu.cn> Message-ID: <563577449.06337@bjtu.edu.cn> Thanks very much, Alex. newInterest->SetName (Create ("/some/new/name")) can work; (I missed Create () .) I should read the source code carefully beforehand. Yakun Xu 2013-03-18 ??? ???? Alex Afanasyev ????? 2013-03-18 09:37:36 ???? "???" ??? ndnsim ??? Re: [ndnSIM] forwarding-strategy.cc Hi Yakun, If you want to create and send out a slightly modified Interest inside the forwarding strategy, you can do something similar to what is done in nacks.cc: you create a new Interest, based on the existing interest that you have and then "replace" necessary parts (name). For example, ... Ptr newInterest = Create (*header); newInterest->SetName (Create ("/some/new/name")); Ptr packet = Create (); nonNackInterest->AddHeader (*nonNackHeader); ... --- Alex On Mar 17, 2013, at 7:13 AM, "???" <11111015 at bjtu.edu.cn> wrote: Hi Alex, I add few new bits in the name prefix as you suppose and these new bits in the prefix should not be handlled as the header name. So I wanna add a new header similiar to Ptr header in forwarding-strategy.cc except for the name. In other words, I wanna reset the name in Ptr header. I guess the router can only read NDN package without any modification. Confusing~~~~ ???????????? 2013-03-17 ??? -------------- next part -------------- An HTML attachment was scrubbed... URL: From mohammad.hovaidi.ardestani at aalto.fi Mon Mar 18 01:41:08 2013 From: mohammad.hovaidi.ardestani at aalto.fi (Hovaidi Ardestani Mohammad) Date: Mon, 18 Mar 2013 08:41:08 +0000 Subject: [ndnSIM] Number of dropped packets Message-ID: Hello everybody! I am thinking that the following formula should give us the number of dropped packets. Number of Dropped packets = (Number of received interests + number of received data packets) - (Number of sent interests + number of sent data packets). If above formula is correct, then why on earth number of dropped packets shown by ndn::L2RateTracer is not equal with that? Thank you for your response in advance! -Mohammad -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 18 07:44:23 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 18 Mar 2013 08:44:23 -0600 Subject: [ndnSIM] Number of dropped packets In-Reply-To: References: Message-ID: <977F0873-4D3D-4FBE-AC43-DA1F2AFEA4F8@ucla.edu> L2Tracer (there is no ndn namespace) shows number of packets dropped due to queue overflows. In many cases of normal NDN communication, number of incoming interests is not equal to number of outgoing interests (same for data), as NDN router (in general) performing much more operations than just forwarding packets. For example, if the same data piece is requested from two different neighbors, only the first interest will be forwarded, the second one will be either "collapsed" or satisfied from caches. When Data packet comes, if there is no corresponding PIT entry (or entries), Data packet will be dropped (without L2Tracer knowing it). If there is a PIT entry with multiple incoming faces (or multiple PIT entries), then more than one Data packet will be forwarded out. At the same time, if you have a simple simulation where consumers requests unique pieces of content, then your formula should be correct, unless you're using forwarding strategy that enforces interest limits (e.g., PerOutFaceLimits). How big is the number discrepancy? --- Alex On Mar 18, 2013, at 2:41 AM, Hovaidi Ardestani Mohammad wrote: > Hello everybody! > I am thinking that the following formula should give us the number of dropped packets. > Number of Dropped packets = (Number of received interests + number of received data packets) - (Number of sent interests + number of sent data packets). > If above formula is correct, then why on earth number of dropped packets shown by ndn::L2RateTracer is not equal with that? > Thank you for your response in advance! > -Mohammad > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 18 11:10:18 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 18 Mar 2013 12:10:18 -0600 Subject: [ndnSIM] Number of dropped packets In-Reply-To: References: <977F0873-4D3D-4FBE-AC43-DA1F2AFEA4F8@ucla.edu> Message-ID: Hi Mohammad, I found several inconsistencies in drop tracing (in forwarding strategy and l2-rate-tracer). In particular, l2-rate-tracer was recording only "rates" which are calculated using exponential smoothing averaging, this could be one reason for large discrepancies (in case you compared absolute numbers of drops versus rates). Another inconsistency is related to what was traced in ndn::ForwardingStrategy. As of the latest commit, I have changed the logic to the following: - every time forwarding strategy picks a face to forward (no matter of the actual status of sending out of a particular face), this even is traced as OutInterest or OutData. - if status of the send was negative, this will be reported in a separate trace via DropInterest and DropData. These DropInterest and DropData are now outputted in ndn::L3RateTracer and ndn::L3AggregateTracer. Can you check the updated code? --- Alex On Mar 18, 2013, at 8:56 AM, Hovaidi Ardestani Mohammad wrote: > Hi Alex > Thank you for response! > The problem is that each consumer is expressing unique interest every time and there should not be any caching in the path, but interestingly, the discrepancy was large enough to convince me to ask this question. > > > From: Alexander Afanasyev [mailto:cawka1 at gmail.com] On Behalf Of Alex Afanasyev > Sent: Monday, March 18, 2013 4:44 PM > To: Hovaidi Ardestani Mohammad > Cc: ndnsim at lists.cs.ucla.edu > Subject: Re: [ndnSIM] Number of dropped packets > > L2Tracer (there is no ndn namespace) shows number of packets dropped due to queue overflows. In many cases of normal NDN communication, number of incoming interests is not equal to number of outgoing interests (same for data), as NDN router (in general) performing much more operations than just forwarding packets. > > For example, if the same data piece is requested from two different neighbors, only the first interest will be forwarded, the second one will be either "collapsed" or satisfied from caches. When Data packet comes, if there is no corresponding PIT entry (or entries), Data packet will be dropped (without L2Tracer knowing it). If there is a PIT entry with multiple incoming faces (or multiple PIT entries), then more than one Data packet will be forwarded out. > > At the same time, if you have a simple simulation where consumers requests unique pieces of content, then your formula should be correct, unless you're using forwarding strategy that enforces interest limits (e.g., PerOutFaceLimits). How big is the number discrepancy? > > --- > Alex > > On Mar 18, 2013, at 2:41 AM, Hovaidi Ardestani Mohammad wrote: > > > Hello everybody! > I am thinking that the following formula should give us the number of dropped packets. > Number of Dropped packets = (Number of received interests + number of received data packets) - (Number of sent interests + number of sent data packets). > If above formula is correct, then why on earth number of dropped packets shown by ndn::L2RateTracer is not equal with that? > Thank you for your response in advance! > -Mohammad > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From duyabo2012 at sina.cn Mon Mar 18 23:55:34 2013 From: duyabo2012 at sina.cn (duyabo2012 at sina.cn) Date: Tue, 19 Mar 2013 14:55:34 +0800 Subject: [ndnSIM] Some Questions about Content Store Message-ID: <20130319065534.64ADA4800E2@webmail.sinamail.sina.com.cn> Hi All , I'm using the ndnSIM to do some experiments ,while I have an idea . As we all know that the routers in CCN will cache contant objects they received ,what confused me is whether all or some of the routers have to cache content objects ? If every router must install cache policy ,how to solve the redundance of data ? In my opinion we don't need to get data from our neibourhood ,actually three or four steps before we get what we want is acceptable . So how about this ,in my university ,four of forty routers will cache content objects ,and the other thirty-six routers are just forwarders between 'consumer who send interest' and 'the four special routers' . Thank you in advance . Sincerely, Du -------------- next part -------------- An HTML attachment was scrubbed... URL: From sarantarnoi at gmail.com Tue Mar 19 02:52:48 2013 From: sarantarnoi at gmail.com (Saran Tarnoi) Date: Tue, 19 Mar 2013 18:52:48 +0900 Subject: [ndnSIM] Memory and Lfu (replacement policy of Content Store) In-Reply-To: <19F0BBEE-1D22-4D60-985E-E45413819CA6@ucla.edu> References: <19F0BBEE-1D22-4D60-985E-E45413819CA6@ucla.edu> Message-ID: Hi Alex and everyone, Sorry for the late reply. In my simulation, there are 100 nodes. The capacity of the CS of each node is 5,000. There are 1,000,000 different content objects. According to your guide, the required memory should be 702 bytes*5000*100 = 351 MB. I don't know why it takes more than 8 GB. In addition, the required memory increases as a function of the simulation time. I have tried your suggested example. I had no luck, the column of MemUsage consistently shows "-9.53674e-07." I will try to see what I can do. Oh, I have a suggestion for additional function in ndnSIM. In the current version of ndnSIM, I understand that every content is cached in every node it traverses. It may be good if we can randomly cache a content object at a certain probability for each node. Please feel free to let me know what you think. Thanks for your help. Regards, Saran Tarnoi 2013/2/20 Alex Afanasyev > Hi Saran, > > How many nodes are in your simulation? I just checked memory overhead for > different replacement policies and they are about the same (with Lfu taking > a little bit more). As for numbers, one CS entry in the current > implementation corresponds to about 708 bytes memory footprint with Lfu > policy (with freshness) and about 650 bytes with Lru policy. (I haven't > yet had time to investigate why so much, as I was expecting about 10 times > smaller footprint.) > > You can get commit 41684ab625b165, which gives an example of how to > evaluate memory footprint (ndn-simple-with-cs-lfu.cc) > > --- > Alex > > On Feb 19, 2013, at 5:02 AM, Saran Tarnoi wrote: > > To Alex and everyone, > > I conducted a simulation to see how *Lfu* performs. > Content number is set as "100,000." > It appeared that the simulator consumed memory more than that my laptop > can provide (RAM 4GB), then my laptop stopped working. > The problem did not appear when I used the other replacement policies > (Lru, Random) for Content Store. > Would you kindly give me some ideas? > > Thanks, > Saran > > -- Regards, Saran Tarnoi Graduate Student Department of Informatics The Graduate University for Advanced Studies (Sokendai) Tokyo, Japan http://sarantarnoi.blogspot.jp -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 19 07:15:11 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 19 Mar 2013 08:15:11 -0600 Subject: [ndnSIM] Memory and Lfu (replacement policy of Content Store) In-Reply-To: References: <19F0BBEE-1D22-4D60-985E-E45413819CA6@ucla.edu> Message-ID: <7AC6098A-A3FB-49AB-85A1-4FF19539B58F@ucla.edu> Hi Saran, PIT also could have contributed to a large (and growing) memory utilization. Are Interests in your scenario getting satisfied? You can try to set limits on PIT size, for example, ndn::StackHelper::SetPit("ns3::ndn::pit::Persistent", "MaxSize", "5000"), and see what could happen with memory. I have fully tested memory utilization tool only on Mac computer, so it may need certain adjustments to be run on other platforms (in master branch, non-OSX code is commented out because of compatibility issues which have not been resolved yet). Thanks for your suggestion. Caching (relative long-term) / buffering (short-term, to recover from "last-hop" losses and prevent re-expressed Interests to go back to the producer) are essential components of NDN architecture and the more options we have in ndnSIM, the more clearly we can see what works (under which assumptions/environments) and what's not. Would you be willing to implement such a random caching policy? There is already an implementation of random caching replacement policy (ns3::ndn::cs::Random using utils/trie/random-policy.h), but this implementation is rather simplistic and doesn't allow one to configure probabilities. --- Alex On Mar 19, 2013, at 3:52 AM, Saran Tarnoi wrote: > Hi Alex and everyone, > > Sorry for the late reply. > > In my simulation, there are 100 nodes. > The capacity of the CS of each node is 5,000. > There are 1,000,000 different content objects. > > According to your guide, the required memory should be 702 bytes*5000*100 = 351 MB. > I don't know why it takes more than 8 GB. > In addition, the required memory increases as a function of the simulation time. > > I have tried your suggested example. > I had no luck, the column of MemUsage consistently shows "-9.53674e-07." > I will try to see what I can do. > > Oh, I have a suggestion for additional function in ndnSIM. > In the current version of ndnSIM, I understand that every content is cached in every node it traverses. > It may be good if we can randomly cache a content object at a certain probability for each node. > Please feel free to let me know what you think. > > Thanks for your help. > > Regards, > Saran Tarnoi > > > > 2013/2/20 Alex Afanasyev > Hi Saran, > > How many nodes are in your simulation? I just checked memory overhead for different replacement policies and they are about the same (with Lfu taking a little bit more). As for numbers, one CS entry in the current implementation corresponds to about 708 bytes memory footprint with Lfu policy (with freshness) and about 650 bytes with Lru policy. (I haven't yet had time to investigate why so much, as I was expecting about 10 times smaller footprint.) > > You can get commit 41684ab625b165, which gives an example of how to evaluate memory footprint (ndn-simple-with-cs-lfu.cc) > > --- > Alex > > On Feb 19, 2013, at 5:02 AM, Saran Tarnoi wrote: > >> To Alex and everyone, >> >> I conducted a simulation to see how Lfu performs. >> Content number is set as "100,000." >> It appeared that the simulator consumed memory more than that my laptop can provide (RAM 4GB), then my laptop stopped working. >> The problem did not appear when I used the other replacement policies (Lru, Random) for Content Store. >> Would you kindly give me some ideas? >> >> Thanks, >> Saran > > > > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 19 07:47:13 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 19 Mar 2013 08:47:13 -0600 Subject: [ndnSIM] Some Questions about Content Store In-Reply-To: <20130319065534.64ADA4800E2@webmail.sinamail.sina.com.cn> References: <20130319065534.64ADA4800E2@webmail.sinamail.sina.com.cn> Message-ID: <0E64607F-2C88-461A-8002-FAE6EA46EB8D@ucla.edu> Hi Du, Word "caching" may not always be the right word to use, since NDN just defines/requires/features a concept of some in-network storage. This in-network storage can have different forms/tiers, for example it could be - a simple packet buffers (short term, acting similar to packet queues in existing IP routers) to facilitate robust recovery from losses: re-expressed Interests don't need to go all the way down to the producer, as they do now - more sophisticated and longer-term caches (this is what normally meant by "cache") - permanent data storage (CDN-like storage, "paid by" consumer). More specifically about ndnSIM. It is possible to set different limits on ContentStore capacities, as well as different types of ContentStores (including not-yet-implemented "non-caching" ContentStore) on individual simulation nodes. You can check out example ndn-simple-with-different-sizes-content-store.cc that sets different sizes of ContentStores on different simulation nodes. --- Alex On Mar 19, 2013, at 12:55 AM, wrote: > > Hi All , > I'm using the ndnSIM to do some experiments ,while I have an idea . > As we all know that the routers in CCN will cache contant objects they received ,what confused me is whether all or some of the routers have to cache content objects ? > If every router must install cache policy ,how to solve the redundance of data ? In my opinion we don't need to get data from our neibourhood ,actually three or four steps before we get what we want is acceptable . > So how about this ,in my university ,four of forty routers will cache content objects ,and the other thirty-six routers are just forwarders between 'consumer who send interest' and 'the four special routers' . > > Thank you in advance . > > Sincerely, > Du > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From huyao0107 at gmail.com Wed Mar 20 03:43:36 2013 From: huyao0107 at gmail.com (yao hu) Date: Wed, 20 Mar 2013 19:43:36 +0900 Subject: [ndnSIM] cannot find Find (const Name &prefix) in ns3::ndn::Fib Message-ID: Hi Alex, Thanks for reply to my previous question. Now I am continuing my work. I want to look up FIB when Data packet comes (doing this in ForwardingStrategy::DidReceiveSolicitedData()), however I cannot find the call Find (const Name &prefix) in my local file model/fib/ndn-fib.h which is shown on the online API documentation. So I added (1) into ndn-fib.h and (2) into ndn-fib-impl.cc, but after compiling, it shows the error message (3). What else should I do? Or is there any other ways to look up FIB (fib::Entry should be returned) in the call ForwardingStrategy::DidReceiveSolicitedData()? Thanks very much! --- (1) virtual Ptr Find (const Name &prefix) = 0; (2) Ptr FibImpl::Find (const Name &prefix) { super::iterator item = super::find_exact (prefix); if (item == super::end ()) return 0; else return item->payload (); } (3) ../src/ndnSIM/model/fib/ndn-fib-impl.cc:88:34: error: no ?ns3::Ptr ns3::ndn::fib::FibImpl::Find(const ns3::ndn::Name&)? member function declared in class ?ns3::ndn::fib::FibImpl? In file included from ./ns3/object-base.h:23:0, from ./ns3/object.h:29, from ./ns3/node.h:26, from ./ns3/ndn-fib.h:25, from ../src/ndnSIM/model/fib/ndn-fib-impl.h:24, from ../src/ndnSIM/model/fib/ndn-fib-impl.cc:21: ./ns3/type-id.h: In static member function ?static ns3::ObjectBase* ns3::TypeId::AddConstructor()::Maker::Create() [with T = ns3::ndn::fib::FibImpl]?: ./ns3/type-id.h:396:59: instantiated from ?ns3::TypeId ns3::TypeId::AddConstructor() [with T = ns3::ndn::fib::FibImpl]? ../src/ndnSIM/model/fib/ndn-fib-impl.cc:51:31: instantiated from here ./ns3/type-id.h:392:34: error: cannot allocate an object of abstract type ?ns3::ndn::fib::FibImpl? ../src/ndnSIM/model/fib/ndn-fib-impl.h:66:7: note: because the following virtual functions are pure within ?ns3::ndn::fib::FibImpl?: ./ns3/ndn-fib.h:70:3: note: virtual ns3::Ptr ns3::ndn::Fib::Find(const ns3::ndn::Name&) Waf: Leaving directory `/root/ndnSIM/ns-3/build' Build failed -> task in 'ns3-ndnSIM' failed (exit status 1): {task 167312460: cxx ndn-fib-impl.cc -> ndn-fib-impl.cc.1.o} -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 20 10:20:38 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 20 Mar 2013 10:20:38 -0700 Subject: [ndnSIM] cannot find Find (const Name &prefix) in ns3::ndn::Fib In-Reply-To: References: Message-ID: Why did you manually added (1) or (2) ? You should just have pulled the update from github... If you don't like git, you could have just applied a patch. In any case, you're just missing a method declaration in ndn-fib-impl.h (https://github.com/NDN-Routing/ndnSIM/commit/e5a8b5a276cfbda168cd07f87807a75e9acb65c5#L3R91) --- Alex On Mar 20, 2013, at 3:43 AM, yao hu wrote: > Hi Alex, > > Thanks for reply to my previous question. Now I am continuing my work. > > I want to look up FIB when Data packet comes (doing this in ForwardingStrategy::DidReceiveSolicitedData()), however I cannot find the call Find (const Name &prefix) in my local file model/fib/ndn-fib.h which is shown on the online API documentation. So I added (1) into ndn-fib.h and (2) into ndn-fib-impl.cc, but after compiling, it shows the error message (3). > > What else should I do? Or is there any other ways to look up FIB (fib::Entry should be returned) in the call ForwardingStrategy::DidReceiveSolicitedData()? > Thanks very much! > > --- > (1) > virtual Ptr > Find (const Name &prefix) = 0; > > (2) > Ptr > FibImpl::Find (const Name &prefix) > { > super::iterator item = super::find_exact (prefix); > > if (item == super::end ()) > return 0; > else > return item->payload (); > } > > (3) > ../src/ndnSIM/model/fib/ndn-fib-impl.cc:88:34: error: no ?ns3::Ptr ns3::ndn::fib::FibImpl::Find(const ns3::ndn::Name&)? member function declared in class ?ns3::ndn::fib::FibImpl? > In file included from ./ns3/object-base.h:23:0, > from ./ns3/object.h:29, > from ./ns3/node.h:26, > from ./ns3/ndn-fib.h:25, > from ../src/ndnSIM/model/fib/ndn-fib-impl.h:24, > from ../src/ndnSIM/model/fib/ndn-fib-impl.cc:21: > ./ns3/type-id.h: In static member function ?static ns3::ObjectBase* ns3::TypeId::AddConstructor()::Maker::Create() [with T = ns3::ndn::fib::FibImpl]?: > ./ns3/type-id.h:396:59: instantiated from ?ns3::TypeId ns3::TypeId::AddConstructor() [with T = ns3::ndn::fib::FibImpl]? > ../src/ndnSIM/model/fib/ndn-fib-impl.cc:51:31: instantiated from here > ./ns3/type-id.h:392:34: error: cannot allocate an object of abstract type ?ns3::ndn::fib::FibImpl? > ../src/ndnSIM/model/fib/ndn-fib-impl.h:66:7: note: because the following virtual functions are pure within ?ns3::ndn::fib::FibImpl?: > ./ns3/ndn-fib.h:70:3: note: virtual ns3::Ptr ns3::ndn::Fib::Find(const ns3::ndn::Name&) > Waf: Leaving directory `/root/ndnSIM/ns-3/build' > Build failed > -> task in 'ns3-ndnSIM' failed (exit status 1): > {task 167312460: cxx ndn-fib-impl.cc -> ndn-fib-impl.cc.1.o} > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Wed Mar 20 10:25:14 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Wed, 20 Mar 2013 11:25:14 -0600 Subject: [ndnSIM] Questions about the AggregateTracer stat info Message-ID: Hi Alex, When we use L3AggregateTracer, we usually create it as follows: ------------------------------------------------------------------------------------------------------------------- boost::tuple< boost::shared_ptr, std::list > > aggTracers = ndn::L3AggregateTracer::InstallAll ("aggregate-trace.txt", Seconds (1.0)); ------------------------------------------------------------------------------------------------------------------- I think this means that AggregateTracer will print the stat information in the "aggregate-trace.txt" every second. My question is : Is the stat information only for one second interval? For instance, at second 1, the Tracer collects 10 incoming Interests, so it prints it out 10; after that, it collects 5 incoming Interests, so at second 2, how many incoming Interests will the Tracer print out? 5 or 10? Thanks, Chengyu -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 20 10:28:23 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 20 Mar 2013 10:28:23 -0700 Subject: [ndnSIM] Questions about the AggregateTracer stat info In-Reply-To: References: Message-ID: <9A1FE3A8-84B3-419D-8C6E-955906FB67B2@ucla.edu> Hi Chengyu, Yes, the period specified in InstallAll specifies aggregation time, and in each period number of Interests/Data is counted independently. Actually, if you specify a time period that is longer than the simulation time, you should get aggregate numbers for the whole simulation. --- Alex On Mar 20, 2013, at 10:25 AM, Chengyu Fan wrote: > Hi Alex, > > When we use L3AggregateTracer, we usually create it as follows: > ------------------------------------------------------------------------------------------------------------------- > boost::tuple< boost::shared_ptr, std::list > > > aggTracers = ndn::L3AggregateTracer::InstallAll ("aggregate-trace.txt", Seconds (1.0)); > ------------------------------------------------------------------------------------------------------------------- > > I think this means that AggregateTracer will print the stat information in the "aggregate-trace.txt" every second. > > My question is : > Is the stat information only for one second interval? > > For instance, at second 1, the Tracer collects 10 incoming Interests, so it prints it out 10; after that, it collects 5 incoming Interests, > so at second 2, how many incoming Interests will the Tracer print out? 5 or 10? > > Thanks, > Chengyu > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From chengyu at cs.colostate.edu Wed Mar 20 10:37:53 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Wed, 20 Mar 2013 11:37:53 -0600 Subject: [ndnSIM] Questions about the AggregateTracer stat info In-Reply-To: <9A1FE3A8-84B3-419D-8C6E-955906FB67B2@ucla.edu> References: <9A1FE3A8-84B3-419D-8C6E-955906FB67B2@ucla.edu> Message-ID: Thanks, Alex. On Wed, Mar 20, 2013 at 11:28 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Chengyu, > > Yes, the period specified in InstallAll specifies aggregation time, and in > each period number of Interests/Data is counted independently. > > Actually, if you specify a time period that is longer than the simulation > time, you should get aggregate numbers for the whole simulation. > > --- > Alex > > On Mar 20, 2013, at 10:25 AM, Chengyu Fan > wrote: > > > Hi Alex, > > > > When we use L3AggregateTracer, we usually create it as follows: > > > ------------------------------------------------------------------------------------------------------------------- > > boost::tuple< boost::shared_ptr, > std::list > > > > aggTracers = ndn::L3AggregateTracer::InstallAll > ("aggregate-trace.txt", Seconds (1.0)); > > > ------------------------------------------------------------------------------------------------------------------- > > > > I think this means that AggregateTracer will print the stat information > in the "aggregate-trace.txt" every second. > > > > My question is : > > Is the stat information only for one second interval? > > > > For instance, at second 1, the Tracer collects 10 incoming Interests, so > it prints it out 10; after that, it collects 5 incoming Interests, > > so at second 2, how many incoming Interests will the Tracer print out? 5 > or 10? > > > > Thanks, > > Chengyu > > > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From chengyu at cs.colostate.edu Wed Mar 20 12:03:15 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Wed, 20 Mar 2013 13:03:15 -0600 Subject: [ndnSIM] How to set the attributes in the InterestHeader? Message-ID: Hi Alex, Could you tell me how to set the attributes in the InterestHeader? The InterestHeader contains many attributes. For example, Selector ::= MinSuffixComponents | MaxSuffixComponents | Publisher | Exclude | ChildSelector | AnswerOriginKind But I notice that the ndn-interest.h does not have so many method to set them. In addition, the ndn-interest-header-ccnb.h does have them, but it is located in the folder "disabled ". So I'm curious how to set these attributes like "AnswerOriginKind"? Thanks, Chengyu -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Mar 20 15:00:00 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 20 Mar 2013 15:00:00 -0700 Subject: [ndnSIM] How to set the attributes in the InterestHeader? In-Reply-To: References: Message-ID: <955C9DAC-A9E7-4D46-9266-4DAED4D44FC2@ucla.edu> Hi Chengu, Since these selectors are not (yet?) fully supported by the forwarding strategy/pit/fib/cs lookups, I have decided to not include them in the default interest header implementation. You are more than welcome to add some or all of the fields to the interest, but there is also a need for relevant extensions in other places of ndnSIM. --- Alex On Mar 20, 2013, at 12:03 PM, Chengyu Fan wrote: > Hi Alex, > > Could you tell me how to set the attributes in the InterestHeader? > > The InterestHeader contains many attributes. For example, > Selector ::= MinSuffixComponents | MaxSuffixComponents | Publisher | Exclude | ChildSelector | AnswerOriginKind > > But I notice that the ndn-interest.h does not have so many method to set them. In addition, the ndn-interest-header-ccnb.h does have them, but it is located in the folder "disabled ". > > So I'm curious how to set these attributes like "AnswerOriginKind"? > > Thanks, > Chengyu > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From chengyu at cs.colostate.edu Wed Mar 20 16:10:25 2013 From: chengyu at cs.colostate.edu (Chengyu Fan) Date: Wed, 20 Mar 2013 17:10:25 -0600 Subject: [ndnSIM] How to set the attributes in the InterestHeader? In-Reply-To: <955C9DAC-A9E7-4D46-9266-4DAED4D44FC2@ucla.edu> References: <955C9DAC-A9E7-4D46-9266-4DAED4D44FC2@ucla.edu> Message-ID: I see, thanks. On Wed, Mar 20, 2013 at 4:00 PM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Chengu, > > Since these selectors are not (yet?) fully supported by the forwarding > strategy/pit/fib/cs lookups, I have decided to not include them in the > default interest header implementation. You are more than welcome to add > some or all of the fields to the interest, but there is also a need for > relevant extensions in other places of ndnSIM. > > --- > Alex > > On Mar 20, 2013, at 12:03 PM, Chengyu Fan > wrote: > > > Hi Alex, > > > > Could you tell me how to set the attributes in the InterestHeader? > > > > The InterestHeader contains many attributes. For example, > > Selector ::= MinSuffixComponents | MaxSuffixComponents | Publisher | > Exclude | ChildSelector | AnswerOriginKind > > > > But I notice that the ndn-interest.h does not have so many method to set > them. In addition, the ndn-interest-header-ccnb.h does have them, but it is > located in the folder "disabled ". > > > > So I'm curious how to set these attributes like "AnswerOriginKind"? > > > > Thanks, > > Chengyu > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From igorcompuff at gmail.com Thu Mar 21 16:43:47 2013 From: igorcompuff at gmail.com (Igor) Date: Thu, 21 Mar 2013 20:43:47 -0300 Subject: [ndnSIM] Events randomization Message-ID: Hi Alex, I'm not sure if my doubt concerns properly to NDNSim or to the NS3 simulator, but if you could help me it would be great. I'm working with a simple topology where 2 publishers and 1 consumer are connected together through a router. All the nodes have the ndn stack installed. Both publishers are able to serve all the contents that the consumer asks. For the forwarding strategy I am using Flooding. Once the consumer asks a content, both the producers receive an interest and respond with a content object. Both the content objects get the router at the same time, but, obviously, just one of them satisfies the pending interest and is forwarded to the next hop. The problem is that the router always select the content object that came from the same publisher. Such a predictable behavior do not sounds good for me and I would like to insert some randomness to this process. I have already tried to change the "RngRun" parameter but the results were the same and now I am stuck with this problem. I thank you in advance. Best Regards, Igor Ribeiro. -------------- next part -------------- An HTML attachment was scrubbed... URL: From cawka1 at gmail.com Fri Mar 22 09:38:49 2013 From: cawka1 at gmail.com (Alex Afanasyev) Date: Fri, 22 Mar 2013 09:38:49 -0700 Subject: [ndnSIM] Events randomization In-Reply-To: References: Message-ID: Hi Igor, RngRun parameter would not help much in this case, as you have topology-defined timings (link propagation delays) that deterministically define which node receives an interest/replies with data first, resulting in "stable" selection of the packet. To solve the "problem", you would need somehow to introduce randomness in your scenario. For example, you can make a new Producer app implementation that instead of immediate reply for the Interest, will schedule this reply within a short random period of time. Another, more straightforward, opportunity would be to randomize link delays to different producers, which would approximately correspond to different volumes of cross traffic. --- Alex On Mar 21, 2013, at 4:43 PM, Igor wrote: > Hi Alex, > > I'm not sure if my doubt concerns properly to NDNSim or to the NS3 simulator, but if you could help me it would be great. I'm working with a simple topology where 2 publishers and 1 consumer are connected together through a router. All the nodes have the ndn stack installed. Both publishers are able to serve all the contents that the consumer asks. For the forwarding strategy I am using Flooding. Once the consumer asks a content, both the producers receive an interest and respond with a content object. Both the content objects get the router at the same time, but, obviously, just one of them satisfies the pending interest and is forwarded to the next hop. The problem is that the router always select the content object that came from the same publisher. Such a predictable behavior do not sounds good for me and I would like to insert some randomness to this process. I have already tried to change the "RngRun" parameter but the results were the same and now I am stuck with this problem. > > I thank you in advance. > > Best Regards, > > Igor Ribeiro. > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Fri Mar 22 09:41:41 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 22 Mar 2013 09:41:41 -0700 Subject: [ndnSIM] =?utf-8?b?5Zue5aSN77yaUmU6X+WbnuWkje+8mlJlOl9fU29tZV9R?= =?utf-8?q?uestions=5Fabout=5FContent=5FStore?= In-Reply-To: <20130322015036.9CDAF260001@webmail.sinamail.sina.com.cn> References: <20130322015036.9CDAF260001@webmail.sinamail.sina.com.cn> Message-ID: <2476CE0B-F2A6-42FB-B819-5AC761529270@ucla.edu> Hi Du, If you do not change RngRun parameter in different runs of your simulation, you would get exactly the same results in NS-3. See this page see here for more detail http://www.nsnam.org/docs/release/3.16/manual/html/random-variables.html#seeding-and-independent-replications for more detail on randomization in NS-3. --- Alex On Mar 21, 2013, at 6:50 PM, duyabo2012 at sina.cn wrote: > And another question is as followed. > When I do a experiment ,I build three nodes,they are 'a','b','c'. > I install "ConsumerZipfMandelbrot" to node 'a' , "Producer" to node c .Just like this model : "'consumerzipfmandelbrot'----b-------'producer' " .I use ' ndn::CsTracer' to obtain statistics of cache hits/cache misses on simulation nodes. > What confused me is that I do the experiment twice ,and the statistics obtained are the same .Since node 'a' will post Interests following Zipf-Mandelbrot distribution .Shouldn't be there differences between two statistics . > yours > DU -------------- next part -------------- An HTML attachment was scrubbed... URL: From igorcompuff at gmail.com Sun Mar 24 20:20:04 2013 From: igorcompuff at gmail.com (Igor) Date: Mon, 25 Mar 2013 00:20:04 -0300 Subject: [ndnSIM] Events randomization In-Reply-To: References: Message-ID: Thank you Alex. 2013/3/22 Alex Afanasyev > Hi Igor, > > RngRun parameter would not help much in this case, as you have > topology-defined timings (link propagation delays) that deterministically > define which node receives an interest/replies with data first, resulting > in "stable" selection of the packet. > > To solve the "problem", you would need somehow to introduce randomness in > your scenario. For example, you can make a new Producer app > implementation that instead of immediate reply for the Interest, will > schedule this reply within a short random period of time. Another, more > straightforward, opportunity would be to randomize link delays to different > producers, which would approximately correspond to different volumes of > cross traffic. > > --- > Alex > > On Mar 21, 2013, at 4:43 PM, Igor wrote: > > > Hi Alex, > > > > I'm not sure if my doubt concerns properly to NDNSim or to the NS3 > simulator, but if you could help me it would be great. I'm working with a > simple topology where 2 publishers and 1 consumer are connected together > through a router. All the nodes have the ndn stack installed. Both > publishers are able to serve all the contents that the consumer asks. For > the forwarding strategy I am using Flooding. Once the consumer asks a > content, both the producers receive an interest and respond with a content > object. Both the content objects get the router at the same time, but, > obviously, just one of them satisfies the pending interest and is forwarded > to the next hop. The problem is that the router always select the content > object that came from the same publisher. Such a predictable behavior do > not sounds good for me and I would like to insert some randomness to this > process. I have already tried to change the "RngRun" parameter but the > results were the same and now I am stuck with this problem. > > > > I thank you in advance. > > > > Best Regards, > > > > Igor Ribeiro. > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Mar 25 10:09:43 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 25 Mar 2013 10:09:43 -0700 Subject: [ndnSIM] some doubt about ndnSIM In-Reply-To: <514C1171.6060709@ict.ac.cn> References: <514C1171.6060709@ict.ac.cn> Message-ID: <87C5548C-55F4-483A-800C-6C667A87D552@ucla.edu> Hi BoDeng, NS-3 has its internal mechanism (ns3::Names class) that is used to associate names and pointers, such as pointers to Node objects. Internally, ns3::Names uses std::map, so it is not exactly hash operations, but should not be too inefficient (each operation on the order of logN). Creating FIB table from scratch using AddRoute method (this specific version: http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_stack_helper.html#a64db64bd1b98144cda977dc5659a7d98) should be relatively efficient. There is no way currently to save/restore FIB from the disk, as its data structure is special. How big is your FIB? --- Alex On Mar 22, 2013, at 1:08 AM, dengbo wrote: > Dear Alex: > > My name is BoDeng , I will study for master in September and be student of teacher sun . I have some doubt about your ndnSIM and > wish get your answer.(I am helping teacher sun to do his experiment about ndn with weiwang) > The first is about the function Names::Find > (nodeName) used in function void StackHelper::AddRouter (const std::string &nodeName, > const std::string &prefix, uint32_t faceId, int32_t metric). I want to know how you store the nodeName ? Do you use hash? > The second is that the fib table is stored in the memory and be added in every experiment , I think it is not suitable when the fib > table is big , can you store them in disk with some structure so that we can read them from the file and needn`t calculate > it every time .Also, if the structure is very special , we can create the fib file alone to reduce the experiment time . > > Thanks > -- > BSET REGARDS > DengBo > Student of Network Technology Research Center , ict , ac > Addr: No. 6 Kexueyuan South Rd, Haidian, Beijing, China > Tel:+86-15271810335 -------------- next part -------------- An HTML attachment was scrubbed... URL: From amin at ac.upc.edu Tue Mar 26 04:34:22 2013 From: amin at ac.upc.edu (Amin Karami) Date: Tue, 26 Mar 2013 12:34:22 +0100 Subject: [ndnSIM] PIT access frequency Message-ID: <515187BE.8050901@ac.upc.edu> Dear Friends, I am going to take 'PIT access frequency' into consideration in each second. That is, Interest looks up, inserts, updates, and removes PIT entries in each second. How does it possible in ndnSIM? Best Regards, Amin From mohammad.hovaidi.ardestani at aalto.fi Tue Mar 26 05:11:14 2013 From: mohammad.hovaidi.ardestani at aalto.fi (Hovaidi Ardestani Mohammad) Date: Tue, 26 Mar 2013 12:11:14 +0000 Subject: [ndnSIM] Changing topology parameter in real-time Message-ID: Hello, I am wondering how I can change the topology parameters, such as Delay, Capacity and Queue length in real time. It seems to me that we can have those parameters fixed as input in *.txt file. Can anybody guide me? I really appreciate your help in advance. -Mohammad -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Mar 26 11:57:08 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 26 Mar 2013 11:57:08 -0700 Subject: [ndnSIM] Changing topology parameter in real-time In-Reply-To: References: Message-ID: <247B180A-4C30-46D8-8798-E36F8C3E440B@ucla.edu> Hi Mohammad, Topology (.txt) is designed to work only once before the simulation begins. At any particular point of simulation, you have a full control of what kind of parameters links have, but you need to manually get hold of the specific transmission queues and channels and manually updated their attributes. You can try to do something like the following: Ptr node = ?; Ptr channel = node->GetDevice (?)->netDevice->GetChannel (); // set channel delay channel->SetAttribute ("Delay", TimeValue (Seconds (0.01)); Ptr toDev = channel->GetDevice (1); Ptr fromDev = channel->GetDevice (0); // set data rates toDev->SetAttribute ("DataRate", StringValue ("10Mbps")); fromDev->SetAttribute ("DataRate", StringValue ("10Mbps")); // set queue sizes PointerValue txQueue; toDev->GetAttribute ("TxQueue", txQueue); txQueue.Get ()->SetAttribute ("MaxPackets", StringValue ("1000")); fromDev->GetAttribute ("TxQueue", txQueue); txQueue.Get ()->SetAttribute ("MaxPackets", StringValue ("1000")); --- Alex On Mar 26, 2013, at 5:11 AM, Hovaidi Ardestani Mohammad wrote: > Hello, > I am wondering how I can change the topology parameters, such as Delay, Capacity and Queue length in real time. It seems to me that we can have those parameters fixed as input in *.txt file. > Can anybody guide me? > I really appreciate your help in advance. > -Mohammad > -------------- next part -------------- An HTML attachment was scrubbed... URL: From cawka1 at gmail.com Tue Mar 26 13:43:52 2013 From: cawka1 at gmail.com (Alex Afanasyev) Date: Tue, 26 Mar 2013 13:43:52 -0700 Subject: [ndnSIM] PIT access frequency In-Reply-To: <515187BE.8050901@ac.upc.edu> References: <515187BE.8050901@ac.upc.edu> Message-ID: Hi Amin, There are several ways you can accomplish this. One (and I would say more correct appropriate and easier) way is not to deal with PIT data structure itself, but implement your own forwarding strategy and collect statistics based on forwarding strategy events: there are events that fired when PIT entry is removed, events when it is added, etc. If you really want to directly access stats of PIT structure, there is a slight complication, but nothing is impossible. I have just added to the master branch an specialized version of PIT (ns3::ndn::pit::Persistent::AggregateStats) that allows you to collect basic statistics using a new aggregate stats policy, as well as a "simple" example that prints out collected stats every second (./waf --run=ndn-simple-with-pit-operation-stats). For the implementation details you can also check out utils/trie/aggregate-stats-policy.h. --- Alex On Mar 26, 2013, at 4:34 AM, Amin Karami wrote: > Dear Friends, > > I am going to take 'PIT access frequency' into consideration in each second. That is, Interest looks up, inserts, updates, and removes PIT entries in each second. > > How does it possible in ndnSIM? > > > > Best Regards, > Amin > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Wed Mar 27 10:28:00 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 27 Mar 2013 10:28:00 -0700 Subject: [ndnSIM] Changing topology parameter in real-time In-Reply-To: References: <247B180A-4C30-46D8-8798-E36F8C3E440B@ucla.edu> Message-ID: Hi Mohammad, You don't need to remove topology reader, as it just creates a topology, and you are free to modify anything that has been created (doesn't matter which way) by directly accessing links and devices. In a simple topology (I would not recommend this in very large topologies, since it may introduce significant overhead), to figure out the right NetDevice, you can do a trick similar to one used in a variant of ndn::StackHelper::AddRoute (https://github.com/NDN-Routing/ndnSIM/blob/master/helper/ndn-stack-helper.cc#L396): input: otherNode -> node on the other side of the link for (uint32_t deviceId = 0; deviceId < node->GetNDevices (); deviceId ++) { Ptr netDevice = DynamicCast (node->GetDevice (deviceId)); if (netDevice == 0) continue; Ptr channel = netDevice->GetChannel (); if (channel == 0) continue; if (channel->GetDevice (0)->GetNode () == otherNode || channel->GetDevice (1)->GetNode () == otherNode) { // netDevice - is the device you're looking for } } Without tricks, you can just manually (if it is feasible) figure out or pre-calculate which deviceId corresponds to the link you want to modify. This would work more efficiently in large topologies, as will not need a linear search. With AnnotatedTopologyReader, deviceId are assigned in order of links defined in the "links" section of the topology file. For example, if you have something like this: dev1 dev2 ... dev1 dev3 ... dev5 dev1 ... The first line will create netdevice 0 on dev1 and netdevice 0 on dev2, the second will create netdevice 1 on dev1 and netdevice 0 on dev3. The third will create netdevice 0 on dev5 and netdevice 2 on dev1. --- Alex On Mar 27, 2013, at 6:31 AM, Hovaidi Ardestani Mohammad wrote: > Hi Alex, > Thank you for your answer. > Now, my questions are: > 1.Do I need to remove AnnotatedTopolgyReader part and place these lines instead? > 1-a.If I remove topology reader part then how I can define my network?(For instance using NodeContainer andPointToPointHelper). > 1-b.If there is no need to remove topology then there will be conflict between those attributes set in topology and those in code. > 2.In my simple code I have > Ptr consumer1 = Names::Find ("Src1"); > and according to > Ptr< NetDevice > ns3::Node::GetDevice ( uint32_t index ) const > what should I put as an index in following line. > Ptr channel = node->GetDevice (?)->netDevice->GetChannel (); > -Mohammad > > > > From: Alexander Afanasyev [mailto:cawka1 at gmail.com] On Behalf Of Alex Afanasyev > Sent: Tuesday, March 26, 2013 8:57 PM > To: Hovaidi Ardestani Mohammad > Cc: ndnsim at lists.cs.ucla.edu > Subject: Re: [ndnSIM] Changing topology parameter in real-time > > Hi Mohammad, > > Topology (.txt) is designed to work only once before the simulation begins. At any particular point of simulation, you have a full control of what kind of parameters links have, but you need to manually get hold of the specific transmission queues and channels and manually updated their attributes. > > You can try to do something like the following: > > Ptr node = ?; > Ptr channel = node->GetDevice (?)->netDevice->GetChannel (); > > // set channel delay > channel->SetAttribute ("Delay", TimeValue (Seconds (0.01)); > > Ptr toDev = channel->GetDevice (1); > Ptr fromDev = channel->GetDevice (0); > > // set data rates > toDev->SetAttribute ("DataRate", StringValue ("10Mbps")); > fromDev->SetAttribute ("DataRate", StringValue ("10Mbps")); > > // set queue sizes > PointerValue txQueue; > > toDev->GetAttribute ("TxQueue", txQueue); > txQueue.Get ()->SetAttribute ("MaxPackets", StringValue ("1000")); > > fromDev->GetAttribute ("TxQueue", txQueue); > txQueue.Get ()->SetAttribute ("MaxPackets", StringValue ("1000")); > > --- > Alex > > > On Mar 26, 2013, at 5:11 AM, Hovaidi Ardestani Mohammad wrote: > > > Hello, > I am wondering how I can change the topology parameters, such as Delay, Capacity and Queue length in real time. It seems to me that we can have those parameters fixed as input in *.txt file. > Can anybody guide me? > I really appreciate your help in advance. > -Mohammad -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Wed Mar 27 19:30:13 2013 From: huyao0107 at gmail.com (yao hu) Date: Thu, 28 Mar 2013 11:30:13 +0900 Subject: [ndnSIM] how to update ndnsim codes without a github account Message-ID: Hi Alex, I downloaded ndnsim source without a github account, like git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM which is wihout `wirte` access. Now I have modified some codes and want to merge them with the latest ndnsim codes on ndnsim project. I tried commit and pull from the ndnsim repository but conflicts happened and it does not work. So I re-downloaded the latest version of ndnsim source and added my modification into it again. Now it works. My question is for the future use how to merge my ndnsim modification into the latest version of ndnsim without a github account? Thanks for your help in advance! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From sarantarnoi at gmail.com Thu Mar 28 03:19:54 2013 From: sarantarnoi at gmail.com (Saran Tarnoi) Date: Thu, 28 Mar 2013 19:19:54 +0900 Subject: [ndnSIM] Memory and Lfu (replacement policy of Content Store) In-Reply-To: <7AC6098A-A3FB-49AB-85A1-4FF19539B58F@ucla.edu> References: <19F0BBEE-1D22-4D60-985E-E45413819CA6@ucla.edu> <7AC6098A-A3FB-49AB-85A1-4FF19539B58F@ucla.edu> Message-ID: Hi Alex and all, I spent some time to fix the problem about memory usage tracking for ndnSIM in Linux (mem-usage.h). Would you kindly check that for me since I don't have the reference value? If it is correct, please consider uploading it to the public. Another issue, I found a wired thing. When the Zipfmandelbrot is used for generating interest traffic and Lfu is set as the replacement policy for the Content Store, if "NumberOfContents" of Zipfmandelbrot > "MaxSize" of Content Store, the cache replacement under Lfu performs strangely. The number of CS entries is sometimes above or lower the given "MaxSize". It is never equal to the given "MaxSize" of the Content Store. I also attach the example that shows the problem. You may check it. I did not see this kind of problem when the Zipfmandelbrot is used with either Random, Lru, or Fifo. Have you ever met the problem? Thanks for your time. Regards, Saran Tarnoi 2013/3/19 Alex Afanasyev > Hi Saran, > > PIT also could have contributed to a large (and growing) memory > utilization. Are Interests in your scenario getting satisfied? You can > try to set limits on PIT size, for example, > ndn::StackHelper::SetPit("ns3::ndn::pit::Persistent", "MaxSize", "5000"), > and see what could happen with memory. > > I have fully tested memory utilization tool only on Mac computer, so it > may need certain adjustments to be run on other platforms (in master > branch, non-OSX code is commented out because of compatibility issues which > have not been resolved yet). > > Thanks for your suggestion. Caching (relative long-term) / buffering > (short-term, to recover from "last-hop" losses and prevent re-expressed > Interests to go back to the producer) are essential components of NDN > architecture and the more options we have in ndnSIM, the more clearly we > can see what works (under which assumptions/environments) and what's not. > Would you be willing to implement such a random caching policy? There is > already an implementation of random caching replacement policy > (ns3::ndn::cs::Random using utils/trie/random-policy.h), but this > implementation is rather simplistic and doesn't allow one to configure > probabilities. > > --- > Alex > > On Mar 19, 2013, at 3:52 AM, Saran Tarnoi wrote: > > Hi Alex and everyone, > > Sorry for the late reply. > > In my simulation, there are 100 nodes. > The capacity of the CS of each node is 5,000. > There are 1,000,000 different content objects. > > According to your guide, the required memory should be 702 bytes*5000*100 > = 351 MB. > I don't know why it takes more than 8 GB. > In addition, the required memory increases as a function of the simulation > time. > > I have tried your suggested example. > I had no luck, the column of MemUsage consistently shows "-9.53674e-07." > I will try to see what I can do. > > Oh, I have a suggestion for additional function in ndnSIM. > In the current version of ndnSIM, I understand that every content is > cached in every node it traverses. > It may be good if we can randomly cache a content object at a certain > probability for each node. > Please feel free to let me know what you think. > > Thanks for your help. > > Regards, > Saran Tarnoi > > > > 2013/2/20 Alex Afanasyev > >> Hi Saran, >> >> How many nodes are in your simulation? I just checked memory overhead >> for different replacement policies and they are about the same (with Lfu >> taking a little bit more). As for numbers, one CS entry in the current >> implementation corresponds to about 708 bytes memory footprint with Lfu >> policy (with freshness) and about 650 bytes with Lru policy. (I haven't >> yet had time to investigate why so much, as I was expecting about 10 times >> smaller footprint.) >> >> You can get commit 41684ab625b165, which gives an example of how to >> evaluate memory footprint (ndn-simple-with-cs-lfu.cc) >> >> --- >> Alex >> >> On Feb 19, 2013, at 5:02 AM, Saran Tarnoi wrote: >> >> To Alex and everyone, >> >> I conducted a simulation to see how *Lfu* performs. >> Content number is set as "100,000." >> It appeared that the simulator consumed memory more than that my laptop >> can provide (RAM 4GB), then my laptop stopped working. >> The problem did not appear when I used the other replacement policies >> (Lru, Random) for Content Store. >> Would you kindly give me some ideas? >> >> Thanks, >> Saran >> >> > > > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -- Regards, Saran Tarnoi Graduate Student Department of Informatics The Graduate University for Advanced Studies (Sokendai) Tokyo, Japan http://sarantarnoi.blogspot.jp -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: mem-usage.h Type: text/x-chdr Size: 3006 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ndn-simple-with-cs-lfu.cc Type: application/octet-stream Size: 5859 bytes Desc: not available URL: From alexander.afanasyev at ucla.edu Thu Mar 28 11:23:23 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 28 Mar 2013 11:23:23 -0700 Subject: [ndnSIM] how to update ndnsim codes without a github account In-Reply-To: References: Message-ID: Hi huyao, Conflicts are not necessarily are blocking point for the merge. You can always manually resolve the conflicts using "git mergetool" using your favorite merging app. Having or not having github account is kind of irrelevant here. Having said that, I continue to advocate a modular approach for simulation scenarios. That is, in most of the cases you don't really need to modify ndnSIM internals, as almost everything can be done in the form of extensions, and if something is not, I would be glad to include it to ndnSIM. You can use one of these examples http://ndnsim.net/getting-started.html#simulating-using-ndnsim as a starting point. This way you will be able to update to the latest ndnSIM without creating any conflict, since you will not be modifying ndnSIM code. Another plus, you can easily track your changes in your scenarios, as well as bundle your scenarios with other relevant information (topologies, graph building scripts, etc.). --- Alex On Mar 27, 2013, at 7:30 PM, yao hu wrote: > Hi Alex, > > I downloaded ndnsim source without a github account, like > git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM > which is wihout `wirte` access. Now I have modified some codes and want to merge them with the latest ndnsim codes on ndnsim project. I tried commit and pull from the ndnsim repository but conflicts happened and it does not work. So I re-downloaded the latest version of ndnsim source and added my modification into it again. Now it works. > > My question is for the future use how to merge my ndnsim modification into the latest version of ndnsim without a github account? > > Thanks for your help in advance! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Mar 28 15:16:07 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 28 Mar 2013 15:16:07 -0700 Subject: [ndnSIM] Memory and Lfu (replacement policy of Content Store) In-Reply-To: References: <19F0BBEE-1D22-4D60-985E-E45413819CA6@ucla.edu> <7AC6098A-A3FB-49AB-85A1-4FF19539B58F@ucla.edu> Message-ID: <6E7A665F-7A83-4D2A-9651-ED6B1DCB5FE1@ucla.edu> Hi Saran, Thank you very much for your contribution! I have just committed your Linux implementation of memory utilization with minor changes, replaced file reading procedures to STL equivalents. I checked and it seem to work on both Mac and Linux. As for the second issue, another thanks to you for catching the problem! Apparently, there were two serious bugs with ZipfMandelbrot and Lfu policy implementation. The first problem, which you may or may not encountered on Linux, was causing enormous memory utilization and I basically couldn't even run your scenario. The second problem was related to Lfu implementation, which I did slightly incorrectly. This error basically broke the consistency of the internal "frequency" representation, making the whole thing behave very strange. Thanks again! With the updated ndnSIM code, your scenario gives a consistent results with Lfu policy. Can you check it? --- Alex On Mar 28, 2013, at 3:19 AM, Saran Tarnoi wrote: > Hi Alex and all, > > I spent some time to fix the problem about memory usage tracking for ndnSIM in Linux (mem-usage.h). > Would you kindly check that for me since I don't have the reference value? > If it is correct, please consider uploading it to the public. > > Another issue, I found a wired thing. > When the Zipfmandelbrot is used for generating interest traffic and Lfu is set as the replacement policy for the Content Store, > if "NumberOfContents" of Zipfmandelbrot > "MaxSize" of Content Store, the cache replacement under Lfu performs strangely. > The number of CS entries is sometimes above or lower the given "MaxSize". > It is never equal to the given "MaxSize" of the Content Store. > I also attach the example that shows the problem. You may check it. > I did not see this kind of problem when the Zipfmandelbrot is used with either Random, Lru, or Fifo. > Have you ever met the problem? > > Thanks for your time. > > Regards, > Saran Tarnoi > > > 2013/3/19 Alex Afanasyev > Hi Saran, > > PIT also could have contributed to a large (and growing) memory utilization. Are Interests in your scenario getting satisfied? You can try to set limits on PIT size, for example, ndn::StackHelper::SetPit("ns3::ndn::pit::Persistent", "MaxSize", "5000"), and see what could happen with memory. > > I have fully tested memory utilization tool only on Mac computer, so it may need certain adjustments to be run on other platforms (in master branch, non-OSX code is commented out because of compatibility issues which have not been resolved yet). > > Thanks for your suggestion. Caching (relative long-term) / buffering (short-term, to recover from "last-hop" losses and prevent re-expressed Interests to go back to the producer) are essential components of NDN architecture and the more options we have in ndnSIM, the more clearly we can see what works (under which assumptions/environments) and what's not. Would you be willing to implement such a random caching policy? There is already an implementation of random caching replacement policy (ns3::ndn::cs::Random using utils/trie/random-policy.h), but this implementation is rather simplistic and doesn't allow one to configure probabilities. > > --- > Alex > > On Mar 19, 2013, at 3:52 AM, Saran Tarnoi wrote: > >> Hi Alex and everyone, >> >> Sorry for the late reply. >> >> In my simulation, there are 100 nodes. >> The capacity of the CS of each node is 5,000. >> There are 1,000,000 different content objects. >> >> According to your guide, the required memory should be 702 bytes*5000*100 = 351 MB. >> I don't know why it takes more than 8 GB. >> In addition, the required memory increases as a function of the simulation time. >> >> I have tried your suggested example. >> I had no luck, the column of MemUsage consistently shows "-9.53674e-07." >> I will try to see what I can do. >> >> Oh, I have a suggestion for additional function in ndnSIM. >> In the current version of ndnSIM, I understand that every content is cached in every node it traverses. >> It may be good if we can randomly cache a content object at a certain probability for each node. >> Please feel free to let me know what you think. >> >> Thanks for your help. >> >> Regards, >> Saran Tarnoi >> >> >> >> 2013/2/20 Alex Afanasyev >> Hi Saran, >> >> How many nodes are in your simulation? I just checked memory overhead for different replacement policies and they are about the same (with Lfu taking a little bit more). As for numbers, one CS entry in the current implementation corresponds to about 708 bytes memory footprint with Lfu policy (with freshness) and about 650 bytes with Lru policy. (I haven't yet had time to investigate why so much, as I was expecting about 10 times smaller footprint.) >> >> You can get commit 41684ab625b165, which gives an example of how to evaluate memory footprint (ndn-simple-with-cs-lfu.cc) >> >> --- >> Alex >> >> On Feb 19, 2013, at 5:02 AM, Saran Tarnoi wrote: >> >>> To Alex and everyone, >>> >>> I conducted a simulation to see how Lfu performs. >>> Content number is set as "100,000." >>> It appeared that the simulator consumed memory more than that my laptop can provide (RAM 4GB), then my laptop stopped working. >>> The problem did not appear when I used the other replacement policies (Lru, Random) for Content Store. >>> Would you kindly give me some ideas? >>> >>> Thanks, >>> Saran >> >> >> >> -- >> Regards, >> Saran Tarnoi >> Graduate Student >> Department of Informatics >> The Graduate University for Advanced Studies (Sokendai) >> Tokyo, Japan >> http://sarantarnoi.blogspot.jp >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From cghali at uci.edu Fri Mar 29 19:50:21 2013 From: cghali at uci.edu (Cesar Ghali) Date: Fri, 29 Mar 2013 19:50:21 -0700 Subject: [ndnSIM] TransmittedContentObjects Callback Message-ID: <515652ED.8030705@uci.edu> Hello, I am new to ndnSIM and the answer to my question might be simple but I have been trying for the last couple of hours with no success. I am using this code to connect the TransmittedContentObjects to function ContentTransmitted. This function only prints "sent". Config::Connect ("/NodeList/*/$ns3::ndn::Producer/TransmittedContentObjects", MakeCallback (ContentTransmitted)); However, this does not seem to work since "sent" is not printed. My ndnSIM setup is as the instructions on this page https://github.com/cawka/ndnSIM-scenario-template/blob/master/README.md Thanks for your help, Cesar -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Mar 29 20:18:31 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 29 Mar 2013 20:18:31 -0700 Subject: [ndnSIM] TransmittedContentObjects Callback In-Reply-To: <515652ED.8030705@uci.edu> References: <515652ED.8030705@uci.edu> Message-ID: <9A0AB396-9508-4257-99E4-E8F9D5E88545@ucla.edu> Hi Cesar, It is always helpful if you can give a scenario file (an excerpt from it), which will help to reproduce the problem. For this particular case, I see that you have a small problem with connecting the trace. The application that is installed on the node is not "aggregated" to a node object, meaning that "/NodeList/*/$ns3::ndn::Producer" will not find anything. Instead, you should do something like this: Config::Connect ("/NodeList/*/ApplicationList/*/TransmittedContentObjects", MakeCallback (ContentTransmitted)) (instead of *, you can put specific node id and application id) If you want, you can always to constrain your trace only to producer applications, like this: Config::Connect ("/NodeList/*/ApplicationList/*/$ns3::ndn::Producer/TransmittedContentObjects", MakeCallback (ContentTransmitted)) Let me know if it is still not working. --- Alex On Mar 29, 2013, at 7:50 PM, Cesar Ghali wrote: > Hello, > > I am new to ndnSIM and the answer to my question might be simple but I have been trying for the last couple of hours with no success. I am using this code to connect the TransmittedContentObjects to function ContentTransmitted. This function only prints "sent". > > Config::Connect ("/NodeList/*/$ns3::ndn::Producer/TransmittedContentObjects", MakeCallback (ContentTransmitted)); > > However, this does not seem to work since "sent" is not printed. My ndnSIM setup is as the instructions on this page https://github.com/cawka/ndnSIM-scenario-template/blob/master/README.md > > Thanks for your help, > Cesar > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From cghali at uci.edu Sat Mar 30 02:02:33 2013 From: cghali at uci.edu (Cesar Ghali) Date: Sat, 30 Mar 2013 02:02:33 -0700 Subject: [ndnSIM] TransmittedContentObjects Callback In-Reply-To: <9A0AB396-9508-4257-99E4-E8F9D5E88545@ucla.edu> References: <515652ED.8030705@uci.edu> <9A0AB396-9508-4257-99E4-E8F9D5E88545@ucla.edu> Message-ID: <5156AA29.3080600@uci.edu> Hi Alex, That actually worked. Both code lines that you suggested worked. The reason is that I did not know the proper format of the path parameter of the Config::Connect function. Thanks for the help. Regards, Cesar On 03/29/2013 08:18 PM, Alex Afanasyev wrote: > Hi Cesar, > > It is always helpful if you can give a scenario file (an excerpt from > it), which will help to reproduce the problem. > > For this particular case, I see that you have a small problem with > connecting the trace. The application that is installed on the node is > not "aggregated" to a node object, meaning that > "/NodeList/*/$ns3::ndn::Producer" will not find anything. Instead, > you should do something like this: > Config::Connect("/NodeList/*/ApplicationList/*/TransmittedContentObjects", MakeCallback(ContentTransmitted)) > (instead of *, you can put specific node id and application id) > > If you want, you can always to constrain your trace only to producer > applications, like this: > Config::Connect("/NodeList/*/ApplicationList/*/$ns3::ndn::Producer/TransmittedContentObjects", > MakeCallback(ContentTransmitted)) > > Let me know if it is still not working. > > --- > Alex > > On Mar 29, 2013, at 7:50 PM, Cesar Ghali > wrote: > >> Hello, >> >> I am new to ndnSIM and the answer to my question might be simple but >> I have been trying for the last couple of hours with no success. I am >> using this code to connect the TransmittedContentObjects to function >> ContentTransmitted. This function only prints "sent". >> >> Config::Connect >> ("/NodeList/*/$ns3::ndn::Producer/TransmittedContentObjects", >> MakeCallback (ContentTransmitted)); >> >> However, this does not seem to work since "sent" is not printed. My >> ndnSIM setup is as the instructions on this page >> https://github.com/cawka/ndnSIM-scenario-template/blob/master/README.md >> >> Thanks for your help, >> Cesar >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Mar 30 08:20:28 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 31 Mar 2013 00:20:28 +0900 Subject: [ndnSIM] question about faceIterator in CustomStrategy Message-ID: Hi Alex, Thanks for your reply to the previous question about ndnsim update. Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? I am sorry for my confusing expression. Thank you very much! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 30 14:14:43 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 30 Mar 2013 14:14:43 -0700 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: References: Message-ID: Hi huyao, The data structure that stores ordered Face instances in FIB behaves like any other STL container: begin () returns iterator to first element in the container end () returns a special iterator, indicating element just after the last valid element In other words, end () is never an iterator to a valid element in the container, and situations when begin () == end () means that the container has no elements. If there is at least one element in the container, begin () will return iterator to a valid first element. --- Alex On Mar 30, 2013, at 8:20 AM, yao hu wrote: > Hi Alex, > > Thanks for your reply to the previous question about ndnsim update. > > Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? > > I am sorry for my confusing expression. Thank you very much! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Mar 30 20:33:16 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 31 Mar 2013 12:33:16 +0900 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: References: Message-ID: Hi Alex, I see. I forgot about it. Thanks for your explanation. I am sorry I have one question about flooding strategy in ndnsim. I saw your reply http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that mentions how to flood to all available faces not listed in FIB. Now I assume that when ndnsim simulation starts, I do not manually configure FIB routes by AddRoute, that is, FIB on each node is empty, and let each node forward the incoming interest to all available faces and don't want them to add to FIB entries by the following Ptr ndn = this->GetObject (); for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) { Ptr outFace = ndn->GetFace (faceNum); TrySendOutInterest (inFace, outFace, header, origPacket, pitEntry); } However the interest will be not forwarded from any face and it seems no interest packet is produced. What is wrong with it? Thanks a lot. Regards, huyao 2013/3/31 Alex Afanasyev > Hi huyao, > > The data structure that stores ordered Face instances in FIB behaves like > any other STL container: > begin () returns iterator to first element in the container > end () returns a special iterator, indicating element just after the last > valid element > > In other words, end () is never an iterator to a valid element in the > container, and situations when begin () == end () means that the container > has no elements. If there is at least one element in the container, begin > () will return iterator to a valid first element. > > --- > Alex > > On Mar 30, 2013, at 8:20 AM, yao hu wrote: > > Hi Alex, > > Thanks for your reply to the previous question about ndnsim update. > > Now I am looking into the CustomStrategy::DoPropagateInterest. This > function is to let Interest be forwarded to first two best-metric faces > specified by FIB. However, in the codes, the faceIterator is first pointed > to the beginning of faces ordered by metric and then checked whether it is > pointed to the end of the faces. Assume that there is only one face > existing in the associated faces for the fib entry. For my understanding, > this face is located at the beginning of the faces and also should be > located at the end of the faces. Then according to the DoPropagateInterest > algorithm, the incoming interest will be not sent out though the fact is > not like that for sure. So what is wrong with my understanding for the > faceIterator? Or what is the internal structure of FacesByMetric &faces > especially faces.begin () or faces.end()? > > I am sorry for my confusing expression. Thank you very much! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 30 20:41:50 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 30 Mar 2013 20:41:50 -0700 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: References: Message-ID: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> Hi huyao, You still have to have an entry in FIB that corresponds to forwarded interests. This entry is part of overall logic to forward interests, data, and record data performance stats for the forwarded data. In your case, you can have an entry that corresponds to "/" prefix. The easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), which will create this entry and fill with all available faces (which you can ignore later). --- Alex On Mar 30, 2013, at 8:33 PM, yao hu wrote: > Hi Alex, > > I see. I forgot about it. Thanks for your explanation. I am sorry I have one question about flooding strategy in ndnsim. > > I saw your reply http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that mentions how to flood to all available faces not listed in FIB. Now I assume that when ndnsim simulation starts, I do not manually configure FIB routes by AddRoute, that is, FIB on each node is empty, and let each node forward the incoming interest to all available faces and don't want them to add to FIB entries by the following > > Ptr ndn = this->GetObject (); > for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) > { > Ptr outFace = ndn->GetFace (faceNum); > TrySendOutInterest (inFace, outFace, header, origPacket, pitEntry); > } > > However the interest will be not forwarded from any face and it seems no interest packet is produced. What is wrong with it? Thanks a lot. > > Regards, > huyao > > > > 2013/3/31 Alex Afanasyev > Hi huyao, > > The data structure that stores ordered Face instances in FIB behaves like any other STL container: > begin () returns iterator to first element in the container > end () returns a special iterator, indicating element just after the last valid element > > In other words, end () is never an iterator to a valid element in the container, and situations when begin () == end () means that the container has no elements. If there is at least one element in the container, begin () will return iterator to a valid first element. > > --- > Alex > > On Mar 30, 2013, at 8:20 AM, yao hu wrote: > >> Hi Alex, >> >> Thanks for your reply to the previous question about ndnsim update. >> >> Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? >> >> I am sorry for my confusing expression. Thank you very much! >> >> Regards, >> huyao >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Mar 30 21:34:19 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 31 Mar 2013 13:34:19 +0900 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> Message-ID: Hi Alex, Thanks for your reply. That means SetDefaultRoutes(true) does not conflict with my later implementation in ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on nodes, the following codes is ok? ndn::StackHelper ccnxHelper; *ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy");* *ccnxHelper.SetDefaultRoutes (true);* ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1"); // ! Attention ! If set to 0, then MaxSize is infinite ccnxHelper.InstallAll (); Regards, huyao 2013/3/31 Alex Afanasyev > Hi huyao, > > You still have to have an entry in FIB that corresponds to forwarded > interests. This entry is part of overall logic to forward interests, data, > and record data performance stats for the forwarded data. > > In your case, you can have an entry that corresponds to "/" prefix. The > easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), > which will create this entry and fill with all available faces (which you > can ignore later). > > --- > Alex > > On Mar 30, 2013, at 8:33 PM, yao hu wrote: > > Hi Alex, > > I see. I forgot about it. Thanks for your explanation. I am sorry I have > one question about flooding strategy in ndnsim. > > I saw your reply > http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that > mentions how to flood to all available faces not listed in FIB. Now I > assume that when ndnsim simulation starts, I do not manually configure FIB > routes by AddRoute, that is, FIB on each node is empty, and let each node > forward the incoming interest to all available faces and don't want them > to add to FIB entries by the following > > Ptr ndn = this->GetObject (); for (uint32_t > faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) { Ptr outFace = > ndn->GetFace (faceNum); TrySendOutInterest (inFace, outFace, header, > origPacket, pitEntry); } > > However the interest will be not forwarded from any face and it seems no > interest packet is produced. What is wrong with it? Thanks a lot. > > Regards, > huyao > > > > 2013/3/31 Alex Afanasyev > >> Hi huyao, >> >> The data structure that stores ordered Face instances in FIB behaves like >> any other STL container: >> begin () returns iterator to first element in the container >> end () returns a special iterator, indicating element just after the last >> valid element >> >> In other words, end () is never an iterator to a valid element in the >> container, and situations when begin () == end () means that the container >> has no elements. If there is at least one element in the container, begin >> () will return iterator to a valid first element. >> >> --- >> Alex >> >> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >> >> Hi Alex, >> >> Thanks for your reply to the previous question about ndnsim update. >> >> Now I am looking into the CustomStrategy::DoPropagateInterest. This >> function is to let Interest be forwarded to first two best-metric faces >> specified by FIB. However, in the codes, the faceIterator is first pointed >> to the beginning of faces ordered by metric and then checked whether it is >> pointed to the end of the faces. Assume that there is only one face >> existing in the associated faces for the fib entry. For my understanding, >> this face is located at the beginning of the faces and also should be >> located at the end of the faces. Then according to the DoPropagateInterest >> algorithm, the incoming interest will be not sent out though the fact is >> not like that for sure. So what is wrong with my understanding for the >> faceIterator? Or what is the internal structure of FacesByMetric &faces >> especially faces.begin () or faces.end()? >> >> I am sorry for my confusing expression. Thank you very much! >> >> Regards, >> huyao >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Mar 30 21:47:39 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 30 Mar 2013 21:47:39 -0700 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> Message-ID: <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> Looks good. Your forwarding strategy has full control on how Interests are forwarded, so you're free to ignore the contents suggested faces in the FIB entry. --- Alex On Mar 30, 2013, at 9:34 PM, yao hu wrote: > Hi Alex, > > Thanks for your reply. That means SetDefaultRoutes(true) does not conflict with my later implementation in ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on nodes, the following codes is ok? > > ndn::StackHelper ccnxHelper; > ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy"); > ccnxHelper.SetDefaultRoutes (true); > ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", > "MaxSize", "1"); // ! Attention ! If set to 0, then MaxSize is infinite > ccnxHelper.InstallAll (); > > Regards, > huyao > > > > 2013/3/31 Alex Afanasyev >> Hi huyao, >> >> You still have to have an entry in FIB that corresponds to forwarded interests. This entry is part of overall logic to forward interests, data, and record data performance stats for the forwarded data. >> >> In your case, you can have an entry that corresponds to "/" prefix. The easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), which will create this entry and fill with all available faces (which you can ignore later). >> >> --- >> Alex >> >> On Mar 30, 2013, at 8:33 PM, yao hu wrote: >> >>> Hi Alex, >>> >>> I see. I forgot about it. Thanks for your explanation. I am sorry I have one question about flooding strategy in ndnsim. >>> >>> I saw your reply http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that mentions how to flood to all available faces not listed in FIB. Now I assume that when ndnsim simulation starts, I do not manually configure FIB routes by AddRoute, that is, FIB on each node is empty, and let each node forward the incoming interest to all available faces and don't want them to add to FIB entries by the following >>> >>> Ptr ndn = this->GetObject (); >>> for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) >>> { >>> Ptr outFace = ndn->GetFace (faceNum); >>> TrySendOutInterest (inFace, outFace, header, origPacket, pitEntry); >>> } >>> >>> However the interest will be not forwarded from any face and it seems no interest packet is produced. What is wrong with it? Thanks a lot. >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/3/31 Alex Afanasyev >>>> Hi huyao, >>>> >>>> The data structure that stores ordered Face instances in FIB behaves like any other STL container: >>>> begin () returns iterator to first element in the container >>>> end () returns a special iterator, indicating element just after the last valid element >>>> >>>> In other words, end () is never an iterator to a valid element in the container, and situations when begin () == end () means that the container has no elements. If there is at least one element in the container, begin () will return iterator to a valid first element. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> Thanks for your reply to the previous question about ndnsim update. >>>>> >>>>> Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? >>>>> >>>>> I am sorry for my confusing expression. Thank you very much! >>>>> >>>>> Regards, >>>>> huyao >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaronishere at qq.com Sat Mar 30 22:55:02 2013 From: aaronishere at qq.com (Aaron) Date: Sun, 31 Mar 2013 13:55:02 +0800 Subject: [ndnSIM] question for policy functions Message-ID: <201303311355008888074@qq.com> Hi, Alex I'm confused about the policy like LRU, LFU etc. under the file /utils/trie. In the file such as LRU-policy.h, there are functions like insert, lookup, update, erase and so on. I'm not sure which functions/files, how and when call those funcitons in the lru/lfu/fifo/random policy.h? Aaron -------------- next part -------------- An HTML attachment was scrubbed... URL: From xbeiba at gmail.com Sat Mar 30 23:34:29 2013 From: xbeiba at gmail.com (Angli Liu) Date: Sun, 31 Mar 2013 14:34:29 +0800 Subject: [ndnSIM] A new comer of the networking space Message-ID: Hello guys! -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sun Mar 31 08:36:25 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 1 Apr 2013 00:36:25 +0900 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> Message-ID: Hi Alex, I understand what you mean. In ndnsim, setting forwarding strategy is meaningless if routes are not configured. Now I have made some progress. I am sorry for bothering you to check the following.. When setting up *default* FIB entries using StackHelper::SetDefaultRoutes() call that is to let each node/router have a FIB entry to / prefix, containing all available faces. So for the prefix "/"(class Name), its size() == 0? (pitEntry->GetFibEntry ()->m_prefix->size() == 0?) Thanks a lot! Regards, huyao 2013/3/31 Alex Afanasyev > Looks good. > > Your forwarding strategy has full control on how Interests are forwarded, > so you're free to ignore the contents suggested faces in the FIB entry. > > --- > Alex > > On Mar 30, 2013, at 9:34 PM, yao hu wrote: > > Hi Alex, > > Thanks for your reply. That means SetDefaultRoutes(true) does not > conflict with my later implementation in ccnxHelper.SetForwardingStrategy > ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on > nodes, the following codes is ok? > > ndn::StackHelper ccnxHelper; > *ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy");* > *ccnxHelper.SetDefaultRoutes (true);* > ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", > "MaxSize", "1"); // ! Attention ! If set to > 0, then MaxSize is infinite > ccnxHelper.InstallAll (); > > Regards, > huyao > > > > 2013/3/31 Alex Afanasyev > >> Hi huyao, >> >> You still have to have an entry in FIB that corresponds to forwarded >> interests. This entry is part of overall logic to forward interests, data, >> and record data performance stats for the forwarded data. >> >> In your case, you can have an entry that corresponds to "/" prefix. The >> easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), >> which will create this entry and fill with all available faces (which you >> can ignore later). >> >> --- >> Alex >> >> On Mar 30, 2013, at 8:33 PM, yao hu wrote: >> >> Hi Alex, >> >> I see. I forgot about it. Thanks for your explanation. I am sorry I have >> one question about flooding strategy in ndnsim. >> >> I saw your reply >> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that >> mentions how to flood to all available faces not listed in FIB. Now I >> assume that when ndnsim simulation starts, I do not manually configure FIB >> routes by AddRoute, that is, FIB on each node is empty, and let each node >> forward the incoming interest to all available faces and don't want them >> to add to FIB entries by the following >> >> Ptr ndn = this->GetObject (); for (uint32_t >> faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) { Ptr outFace = >> ndn->GetFace (faceNum); TrySendOutInterest (inFace, outFace, header, >> origPacket, pitEntry); } >> >> However the interest will be not forwarded from any face and it seems no >> interest packet is produced. What is wrong with it? Thanks a lot. >> >> Regards, >> huyao >> >> >> >> 2013/3/31 Alex Afanasyev >> >>> Hi huyao, >>> >>> The data structure that stores ordered Face instances in FIB behaves >>> like any other STL container: >>> begin () returns iterator to first element in the container >>> end () returns a special iterator, indicating element just after the >>> last valid element >>> >>> In other words, end () is never an iterator to a valid element in the >>> container, and situations when begin () == end () means that the container >>> has no elements. If there is at least one element in the container, begin >>> () will return iterator to a valid first element. >>> >>> --- >>> Alex >>> >>> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >>> >>> Hi Alex, >>> >>> Thanks for your reply to the previous question about ndnsim update. >>> >>> Now I am looking into the CustomStrategy::DoPropagateInterest. This >>> function is to let Interest be forwarded to first two best-metric faces >>> specified by FIB. However, in the codes, the faceIterator is first pointed >>> to the beginning of faces ordered by metric and then checked whether it is >>> pointed to the end of the faces. Assume that there is only one face >>> existing in the associated faces for the fib entry. For my understanding, >>> this face is located at the beginning of the faces and also should be >>> located at the end of the faces. Then according to the DoPropagateInterest >>> algorithm, the incoming interest will be not sent out though the fact is >>> not like that for sure. So what is wrong with my understanding for the >>> faceIterator? Or what is the internal structure of FacesByMetric &faces >>> especially faces.begin () or faces.end()? >>> >>> I am sorry for my confusing expression. Thank you very much! >>> >>> Regards, >>> huyao >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 31 11:17:17 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 31 Mar 2013 11:17:17 -0700 Subject: [ndnSIM] question for policy functions In-Reply-To: <201303311355008888074@qq.com> References: <201303311355008888074@qq.com> Message-ID: <015B0640-F72F-4B86-91A0-A39E0CADF41F@ucla.edu> Hi Aaron, Policies defined in utils/trie/*-policy.h files are used by a special "policy-based" container defined in utils/trie/trie-with-policy.h. The main storage for the container is defined in trie.h file, which implements a hash-based trie-like structure, resembling Patricia Trees, but with every level corresponds to the whole name component and children nodes organized using hash-container. As you may see, both trie.h, trie-with-policy.h, and all policies are templated classes. Particular instantiation of these classes happens in PIT/FIB/CS implementations. For example, you can check content store implementation using trie-with-policy in model/cs/content-store-impl.h (full definition of the content store) and model/cs/content-store-impl.cc (instantiation of "known" content store types). --- Alex On Mar 30, 2013, at 10:55 PM, Aaron wrote: > Hi, Alex > > I'm confused about the policy like LRU, LFU etc. under the file /utils/trie. In the file such as LRU-policy.h, there are functions like insert, lookup, update, erase and so on. I'm not sure which functions/files, how and when call those funcitons in the lru/lfu/fifo/random policy.h? > > Aaron -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 31 11:17:47 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 31 Mar 2013 11:17:47 -0700 Subject: [ndnSIM] A new comer of the networking space In-Reply-To: References: Message-ID: <823157BF-E0AB-4D41-81BA-CB1F8D0408FC@ucla.edu> You're welcome! On Mar 30, 2013, at 11:34 PM, Angli Liu wrote: > Hello guys! From alexander.afanasyev at ucla.edu Sun Mar 31 11:20:45 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 31 Mar 2013 11:20:45 -0700 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> Message-ID: <7226EB61-941D-4610-A6A9-EEBD38D2C184@ucla.edu> Hi huyao, Yes, "/" represents a name with 0 components, so you're right that ...m_prefix->size() will return 0 for such an entry. --- Alex On Mar 31, 2013, at 8:36 AM, yao hu wrote: > Hi Alex, > > I understand what you mean. In ndnsim, setting forwarding strategy is meaningless if routes are not configured. Now I have made some progress. I am sorry for bothering you to check the following.. > > When setting up default FIB entries using StackHelper::SetDefaultRoutes() call that is to let each node/router have a FIB entry to / prefix, containing all available faces. So for the prefix "/"(class Name), its size() == 0? (pitEntry->GetFibEntry ()->m_prefix->size() == 0?) > > Thanks a lot! > > Regards, > huyao > > > 2013/3/31 Alex Afanasyev > Looks good. > > Your forwarding strategy has full control on how Interests are forwarded, so you're free to ignore the contents suggested faces in the FIB entry. > > --- > Alex > > On Mar 30, 2013, at 9:34 PM, yao hu wrote: > >> Hi Alex, >> >> Thanks for your reply. That means SetDefaultRoutes(true) does not conflict with my later implementation in ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on nodes, the following codes is ok? >> >> ndn::StackHelper ccnxHelper; >> ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy"); >> ccnxHelper.SetDefaultRoutes (true); >> ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", >> "MaxSize", "1"); // ! Attention ! If set to 0, then MaxSize is infinite >> ccnxHelper.InstallAll (); >> >> Regards, >> huyao >> >> >> >> 2013/3/31 Alex Afanasyev >> Hi huyao, >> >> You still have to have an entry in FIB that corresponds to forwarded interests. This entry is part of overall logic to forward interests, data, and record data performance stats for the forwarded data. >> >> In your case, you can have an entry that corresponds to "/" prefix. The easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), which will create this entry and fill with all available faces (which you can ignore later). >> >> --- >> Alex >> >> On Mar 30, 2013, at 8:33 PM, yao hu wrote: >> >>> Hi Alex, >>> >>> I see. I forgot about it. Thanks for your explanation. I am sorry I have one question about flooding strategy in ndnsim. >>> >>> I saw your reply http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that mentions how to flood to all available faces not listed in FIB. Now I assume that when ndnsim simulation starts, I do not manually configure FIB routes by AddRoute, that is, FIB on each node is empty, and let each node forward the incoming interest to all available faces and don't want them to add to FIB entries by the following >>> >>> Ptr ndn = this->GetObject (); >>> for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) >>> { >>> Ptr outFace = ndn->GetFace (faceNum); >>> TrySendOutInterest (inFace, outFace, header, origPacket, pitEntry); >>> } >>> >>> However the interest will be not forwarded from any face and it seems no interest packet is produced. What is wrong with it? Thanks a lot. >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/3/31 Alex Afanasyev >>> Hi huyao, >>> >>> The data structure that stores ordered Face instances in FIB behaves like any other STL container: >>> begin () returns iterator to first element in the container >>> end () returns a special iterator, indicating element just after the last valid element >>> >>> In other words, end () is never an iterator to a valid element in the container, and situations when begin () == end () means that the container has no elements. If there is at least one element in the container, begin () will return iterator to a valid first element. >>> >>> --- >>> Alex >>> >>> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> Thanks for your reply to the previous question about ndnsim update. >>>> >>>> Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? >>>> >>>> I am sorry for my confusing expression. Thank you very much! >>>> >>>> Regards, >>>> huyao >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From amin at ac.upc.edu Sun Mar 31 11:35:12 2013 From: amin at ac.upc.edu (Amin Karami) Date: Sun, 31 Mar 2013 20:35:12 +0200 Subject: [ndnSIM] Satisfy Interests with more than one producer Message-ID: <515881E0.2060707@ac.upc.edu> Hi friends, Is it possible to satisfy sent Interests from a consumer with more than one producer? for example, does the following code work correctly to satisfy Interests in /dst1 namespace with three producers? ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer1); ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer2); ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer3); Best Regards, /Amin -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 31 11:42:00 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 31 Mar 2013 11:42:00 -0700 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: <515881E0.2060707@ac.upc.edu> References: <515881E0.2060707@ac.upc.edu> Message-ID: <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> Hi Amin, I is possible, but it depends on the forwarding strategy to deliver Interests to different producers. For example, if you choose ns3::ndn::fw::BestRoute, then Interests will only be delivered over the "shortest-metric" path and some of the producers will never see the Interests. If you use ns3::ndn::fw::Flooding, then all of the producers will receive Interests and it would depend on network topology (delays/losses) content object from which exactly producer will reach the consumer. In case if you have several consumers, depending on topology and forwarding strategy, they may be getting content objects from different producers. If you want only some Interests be satisfied by one producers and other by another, you may need to amend ndn::Producer implementation (or better create a new custom Producer app) by adding the appropriate logic. --- Alex On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: > Hi friends, > Is it possible to satisfy sent Interests from a consumer with more than one producer? > for example, does the following code work correctly to satisfy Interests in /dst1 namespace with three producers? > ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); > producerHelper.SetPrefix ("/dst1"); > producerHelper.Install (producer1); > > ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); > producerHelper.SetPrefix ("/dst1"); > producerHelper.Install (producer2); > > ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); > producerHelper.SetPrefix ("/dst1"); > producerHelper.Install (producer3); > > > Best Regards, > /Amin > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 31 12:11:35 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 31 Mar 2013 12:11:35 -0700 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: <5158883D.9010701@ac.upc.edu> References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> Message-ID: <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> Hi Amin, Let me clarify a little bit with a small example: Consumer --- Router ----- Producer1 | +--------- Producer2 Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer will reach both Producer1 and Producer2, and they both will send back a content object packet. Router, receiving the first packet (depending on the topology, could be from Producer1 or Producer2) will forward it to the consumer and remove* the PIT entry. When the second content object arrives to the Router (not the consumer), it will be discarded by the router, as unsolicited. (I would not call this as a drop, since it is relatively high-level decision to not forward the specific packet.) * PIT entry can be immediately removed (by default), or scheduled for removal within a short time interval (PitEntryPruningTimout). In either case, an extra content object will be discarded. --- Alex On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: > In case of ns3::ndn::fw::Flooding, we will have several drops. Because when a consumer receives desired content from first sender/producer, consumer will drop other same contents. Yes? because the desired Interest has been satisfied and removed from PIT. > > > /Amin > > > On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >> Hi Amin, >> >> I is possible, but it depends on the forwarding strategy to deliver Interests to different producers. For example, if you choose ns3::ndn::fw::BestRoute, then Interests will only be delivered over the "shortest-metric" path and some of the producers will never see the Interests. If you use ns3::ndn::fw::Flooding, then all of the producers will receive Interests and it would depend on network topology (delays/losses) content object from which exactly producer will reach the consumer. >> >> In case if you have several consumers, depending on topology and forwarding strategy, they may be getting content objects from different producers. >> >> If you want only some Interests be satisfied by one producers and other by another, you may need to amend ndn::Producer implementation (or better create a new custom Producer app) by adding the appropriate logic. >> >> --- >> Alex >> >> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >> >>> Hi friends, >>> Is it possible to satisfy sent Interests from a consumer with more than one producer? >>> for example, does the following code work correctly to satisfy Interests in /dst1 namespace with three producers? >>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); >>> producerHelper.SetPrefix ("/dst1"); >>> producerHelper.Install (producer1); >>> >>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); >>> producerHelper.SetPrefix ("/dst1"); >>> producerHelper.Install (producer2); >>> >>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); >>> producerHelper.SetPrefix ("/dst1"); >>> producerHelper.Install (producer3); >>> >>> >>> Best Regards, >>> /Amin >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > > > -- > > Best Regards, > > ======================================================= > Amin Karami, PhD student in Computer Architecture Department (DAC) at > the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) > > e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 > phone: +34 93 40 11 638 | Jordi Girona, 1-3 > | 08034 Barcelona - SPAIN > WWW: http://personals.ac.upc.edu/amin/ > ======================================================= > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yskim525 at gmail.com Sun Mar 31 19:50:50 2013 From: yskim525 at gmail.com (Yusung Kim) Date: Mon, 1 Apr 2013 11:50:50 +0900 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> Message-ID: Hi Alex and ndnSIM community. When using ndnSIM, is there the same function of the implicit digest to get specific content ? ( the implicit digest is used in CCNx, right ? ) In the your example topology, Does Consumer need to select one producer between Producer1 and Producer2 using the implicit digest ? Thanks, - Yusung Kim - On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev wrote: > Hi Amin, > > Let me clarify a little bit with a small example: > > Consumer --- Router ----- Producer1 > | > +--------- Producer2 > > Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer will > reach both Producer1 and Producer2, and they both will send back a content > object packet. > > Router, receiving the first packet (depending on the topology, could be > from Producer1 or Producer2) will forward it to the consumer and remove* > the PIT entry. When the second content object arrives to the Router (not > the consumer), it will be discarded by the router, as unsolicited. (I > would not call this as a drop, since it is relatively high-level decision > to not forward the specific packet.) > > * PIT entry can be immediately removed (by default), or scheduled for > removal within a short time interval (PitEntryPruningTimout). In either > case, an extra content object will be discarded. > > --- > Alex > > On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: > > In case of ns3::ndn::fw::Flooding, we will have several drops. Because > when a consumer receives desired content from first sender/producer, > consumer will drop other same contents. Yes? because the desired Interest > has been satisfied and removed from PIT. > > > /Amin > > > > On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: > > Hi Amin, > > I is possible, but it depends on the forwarding strategy to deliver > Interests to different producers. For example, if you choose > ns3::ndn::fw::BestRoute, then Interests will only be delivered over the > "shortest-metric" path and some of the producers will never see the > Interests. If you use ns3::ndn::fw::Flooding, then all of the producers > will receive Interests and it would depend on network topology > (delays/losses) content object from which exactly producer will reach the > consumer. > > In case if you have several consumers, depending on topology and > forwarding strategy, they may be getting content objects from different > producers. > > If you want only some Interests be satisfied by one producers and other > by another, you may need to amend ndn::Producer implementation (or better > create a new custom Producer app) by adding the appropriate logic. > > --- > Alex > > On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: > > Hi friends, > Is it possible to satisfy sent Interests from a consumer with more than > one producer? > for example, does the following code work correctly to satisfy Interests > in /dst1 namespace with three producers? > > ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer1); ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer2); > ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer3); > > > Best Regards, > /Amin > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > > -- > > > Best Regards, > > ======================================================= > Amin Karami, PhD student in Computer Architecture Department (DAC) at > the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) > > e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 > phone: +34 93 40 11 638 | Jordi Girona, 1-3 > | 08034 Barcelona - SPAIN > WWW: http://personals.ac.upc.edu/amin/ > ======================================================= > > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Mar 31 19:58:38 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 31 Mar 2013 19:58:38 -0700 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> Message-ID: Hi Yusung, No, ndnSIM (as of right now) does not have a concept of the implicit digest. Ideally, each individual piece of content should have a unique name. If you really want to distinguish between data produced by Producer1 and Producer2, why not explicitly name these two data pieces differently? Alternatively, you can explicitly add a digest component to the name. --- Alex On Mar 31, 2013, at 7:50 PM, Yusung Kim wrote: > Hi Alex and ndnSIM community. > > When using ndnSIM, is there the same function of the implicit digest to get specific content ? > ( the implicit digest is used in CCNx, right ? ) > > In the your example topology, > Does Consumer need to select one producer between Producer1 and Producer2 using the implicit digest ? > > Thanks, > > - Yusung Kim - > > > > On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev wrote: > Hi Amin, > > Let me clarify a little bit with a small example: > > Consumer --- Router ----- Producer1 > | > +--------- Producer2 > > Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer will reach both Producer1 and Producer2, and they both will send back a content object packet. > > Router, receiving the first packet (depending on the topology, could be from Producer1 or Producer2) will forward it to the consumer and remove* the PIT entry. When the second content object arrives to the Router (not the consumer), it will be discarded by the router, as unsolicited. (I would not call this as a drop, since it is relatively high-level decision to not forward the specific packet.) > > * PIT entry can be immediately removed (by default), or scheduled for removal within a short time interval (PitEntryPruningTimout). In either case, an extra content object will be discarded. > > --- > Alex > > On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: > >> In case of ns3::ndn::fw::Flooding, we will have several drops. Because when a consumer receives desired content from first sender/producer, consumer will drop other same contents. Yes? because the desired Interest has been satisfied and removed from PIT. >> >> >> /Amin >> >> >> >> On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >>> Hi Amin, >>> >>> I is possible, but it depends on the forwarding strategy to deliver Interests to different producers. For example, if you choose ns3::ndn::fw::BestRoute, then Interests will only be delivered over the "shortest-metric" path and some of the producers will never see the Interests. If you use ns3::ndn::fw::Flooding, then all of the producers will receive Interests and it would depend on network topology (delays/losses) content object from which exactly producer will reach the consumer. >>> >>> In case if you have several consumers, depending on topology and forwarding strategy, they may be getting content objects from different producers. >>> >>> If you want only some Interests be satisfied by one producers and other by another, you may need to amend ndn::Producer implementation (or better create a new custom Producer app) by adding the appropriate logic. >>> >>> --- >>> Alex >>> >>> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >>> >>>> Hi friends, >>>> Is it possible to satisfy sent Interests from a consumer with more than one producer? >>>> for example, does the following code work correctly to satisfy Interests in /dst1 namespace with three producers? >>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); >>>> producerHelper.SetPrefix ("/dst1"); >>>> producerHelper.Install (producer1); >>>> >>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); >>>> producerHelper.SetPrefix ("/dst1"); >>>> producerHelper.Install (producer2); >>>> >>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); >>>> producerHelper.SetPrefix ("/dst1"); >>>> producerHelper.Install (producer3); >>>> >>>> >>>> Best Regards, >>>> /Amin >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >> >> >> -- >> >> Best Regards, >> >> ======================================================= >> Amin Karami, PhD student in Computer Architecture Department (DAC) at >> the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) >> >> e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 >> phone: +34 93 40 11 638 | Jordi Girona, 1-3 >> | 08034 Barcelona - SPAIN >> WWW: http://personals.ac.upc.edu/amin/ >> ======================================================= >> > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: