From alexander.afanasyev at ucla.edu Fri Nov 1 14:32:40 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 1 Nov 2013 14:32:40 -0700 Subject: [ndnSIM] ndnsim error help In-Reply-To: References: Message-ID: <4F76B108-B0EC-4A25-9129-515E624CB5CA@ucla.edu> Hi Yowaraj, This is very strange error that I had never encountered and not sure what to do. Which platform are you building ndnSIM on? The error comes from inside NS-3's build in visualizer. You should try to update your NS-3, pybindgen, and ndnSIM repos (I just pushed update that incorporates all recent updates from NS-3 development branch). If that doesn't fix the problem, I can only suggest to try to fix NS-3's visualizer and/or submit but report to NS-3: https://www.nsnam.org/bugzilla/ --- Alex On Oct 31, 2013, at 2:16 AM, Yowaraj Chhetri wrote: > Dear sir/madam, > > I am using ndnSim for my simulation on CCN architecture. > > when i click the shell in the graphical output to see the running process. I got this error message; > > Time NodeId NodeName NumberOfPitEntries > Plugin 'show_last_interests' has no 'register' function > Plugin 'ndnsim_pit_queue' has no 'register' function > scanning topology: [0, 3) nodes... > Traceback (most recent call last): > File "/home/akari/ndnSIM/ns-3/src/visualizer/visualizer/core.py", line 1481, in _start_shell > ipython = ipython_view.IPythonView() > File "/home/akari/ndnSIM/ns-3/src/visualizer/visualizer/ipython_view.py", line 250, in __init__ > input_func=self.raw_input) > File "/home/akari/ndnSIM/ns-3/src/visualizer/visualizer/ipython_view.py", line 45, in __init__ > IPython.iplib.raw_input_original = input_func > AttributeError: 'module' object has no attribute 'iplib' > > > Please help me to solve how to use the shell to see the running process of .cc file [ndn-simple] > > thank you > > with regards > > Yowaraj Chhetri > Advanced IT, > Okamura sensei lab > Kyushu University, > Fukuoka, Japan > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Nov 1 14:44:15 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 1 Nov 2013 14:44:15 -0700 Subject: [ndnSIM] unexcepted interruption in wireless multi-hop scenarios In-Reply-To: References: Message-ID: Hi! Have you tried to run the gdb and see what exactly is causing the error? I have a suspicion that in some cases pitEntry becomes invalid (or information inside the pit entry) and you're getting segfault. Can you confirm this with gdb? --- Alex On Oct 30, 2013, at 7:03 AM, ??? <997566196 at qq.com> wrote: > Hello Everyone, > I'm a new learner to ndnSIM. I have a problem when I try to delay some time before sending out an interest. > The detailed description are as follow: > I want to impliment simulation in a wireless multi-hop scenario with ndnSIM. For the first step, I do simple changes to deal with the Face abstraction, and the key point is to enable "forwarding" to the incoming face. I suppose every node has one wireless interface. It works well in a linear topology, for example 9 nodes in a line and the first node as Consumer and the last one Producer. The intermediate nodes can forward the interest and data to its neighbours(include the next hop and the front hop). Hop by hop, the Consumer and Producer can communicate with each other successfully in this linear topology. > But in a more complicated topology, for example a 3*5 Grid topology, we need to delay a random time before forwarding an interest or data to avoid collision. It's the second step, where my problem appears. I just do a simple changes in this step, as follows: > change From PropagateInterest (inFace, interest, pitEntry); > To Simulator::Schedule(MicroSeconds(rand_delay),&ForwardingStrategy::PropagateInterest,this,inFace, interest, pitEntry); > > Then the simulation can't run continuously. It just runs for a perod of time and stop with an error.The error message is ?Command ['/home/long/ndnSIM0823/ns-3/build/scratch/ndn-wireless1'] terminated with signal SIGSEGV. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s "). ? > > I try hard to solve this problem, but can't make it till now. I hope you can give me some help. Thank you so much! > > > Best Regards! -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Nov 1 14:50:01 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 1 Nov 2013 14:50:01 -0700 Subject: [ndnSIM] simple simulation In-Reply-To: References: Message-ID: Hi Kyushu, I'm not sure what do you mean by "state of art" forwarding. Depending on what you are trying to achieve, there are different forwarding strategies, which require FIB as input. You have to configure both to get the correct behavior. In particular, if you want both consumers to receive Interests, you should 1) select Flooding forwarding strategy (this is actually default, but it may change eventually) 2) configure routes to both consumers Considering defaults, the following may give you the desired behavior: ndn::StackHelper ndnHelper; ndnHelper.SetDefaultRoutes (true); ndnHelper.InstallAll (); ndnHelper.Install (nodes); (SetDefaultRoutes(true) automatically configures '/'-route for all available faces) -- Alex On Oct 28, 2013, at 10:58 PM, nor masri sahri wrote: > hi, im new to ndnsim and ns3. > i want to simulate 4 nodes, 1 as Consumer, 2 node as internediate router and 1 node as Producer. > State of art of NDN is to forward the Interest to every connected node with the Consumer > Do I have to set manually route or just concern about forwarding strategy? > FYI, i manage to connect Consumer node to the 2 intermediate node but when i run the simulation, the traffic goes to only one node. > > ndn::StackHelper ndnHelper; > ndnHelper.SetDefaultRoutes (false); > ndnHelper.InstallAll (); > ndnHelper.Install (nodes); > > thank you (really interested to explore more on ndnsim) > > -- > Regards, > > masri.sahri > Phd Student, > Kyushu University, Japan > > _______________________________________________ > 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 Nov 1 15:08:15 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 1 Nov 2013 15:08:15 -0700 Subject: [ndnSIM] A question about ndnSim routing item In-Reply-To: <201310231022080093705@gmail.com> References: <201310231022080093705@gmail.com> Message-ID: <0B18A53A-5FC8-4749-A27A-0876AC8B9C2E@ucla.edu> Hi Xu, I hope the list you showed is not for the same node, otherwise something is strange. You can see the implementation detail on what is printed inside in model/ndn-net-device-face.cc and model/fw/ndn-fib-entry.cc (last methods), but here is brief summary: dev[0]=net(0,0-4)(2,y,1) for NetDeviceFace with PointToPointNetDevice dev[) = net(, -, , ) for AppFace dev = local() --- Alex On Oct 22, 2013, at 7:22 PM, xuzhw2001 at gmail.com wrote: > Hi, Alex > > I have written some experiments on ndnSim recently. Now, I have two problem about the routing process in ndnSim. > (1) I can't understand the detail of the routing item which I got in my experiment, listed as below: > /root dev[0]=net(0,0-4)(2,y,1) > /root dev[0]=net(0,0-4)(2,y,1) > /root dev[4]=net(2,4-6)(1,y,1) > /root dev[4]=net(2,4-6)(1,y,1) > /root dev=local(2)(0,g,0) > /root dev=local(2)(0,g,0) > > Can you do me a favor to explain the meaning of the parts in these routing items? Thanks a lot. > xu zhiwei -------------- next part -------------- An HTML attachment was scrubbed... URL: From leshuyuan at 163.com Sat Nov 2 19:21:08 2013 From: leshuyuan at 163.com (=?GBK?B?wNbK5tSt?=) Date: Sun, 3 Nov 2013 10:21:08 +0800 (CST) Subject: [ndnSIM] Confusion when Analizing the Log Message-ID: <958b201.14ba.1421bc386d5.Coremail.leshuyuan@163.com> Hi All, Firstly,I will introduce the program in my experiment.And then,I will talk about my confusions found when looking for the log. My purpose is to forward the interest when the pit size under the threshold.I have two forwarding strategy class.One drops the interest when the pit size out of the threshold;Another drops the interest and pushes back a fake data packet in the same situation.To reach these goals,I overrided the OnInterest method and deal with the interest accouding to the pit size before the pit entry create when a new interest received. To observe and verify the result,I logged the interest prefix in OnInterest method and DoPropagateInterest method,and logged the pit size in OnInterest.What's more,I outputed each pit entry. The forwarding strategy is running on the 11-node 2-bottleneck topology.The topology is as follow.The c1,c2,c3 and c4 are consumerCbrs which send 10 interestes per second .C1 starts in 1s,c2 starts in 1s,c3 starts in 2s and c4 starts in 4s.A little different between this topology and the example provided by ndnSIM is the p1,p2,p3 and p4 are routers not producers because I want the router and cusumer pend the incoming interest.In addition,I set the pit max size of each node is 10 and the threshold of the pit is 5. # /------\ 0 0 /------\ # | 0 |<-----+ +----->| 7 | # \------/ \ / \------/ # \ /-----\ / # /------\ 0 \ +==>| 5 |<==+ / 0 /------\ # | 1 |<--+ \ / \-----/ \ / +-->| 8 | # \------/ \ \ | | / / \------/ # \ | | 1Mbps links | | / # \ 1 v0 v5 1v 2v 3 / # +->/------\ /------\<-+ # 2| 4 |<===============>| 6 |4 # +->\------/4 0\------/<-+ # / 3^ ^5 \ # / | | \ # /------\ 0 / / \ \ 0 /------\ # | 2 |<--+ / \ +-->| 9 | # \------/ / \ \------/ # / "All consumer-router and" \ # /------\ 0 / "router-producer links are" \ 0 /------\ # | 3 |<-----+ "10Mbps" +---->| 10 | # \------/ \------/ # When I run the first forwarding strategy which just drop the interest without push back data packet.I found serveral confusions: 1,.Is there any re-request mechanism in ndnSIM core?In the 1st 0.5 second, c1 sent 5 interests in data /p1/data/%00, /p1/data/%00%01, /p1/data/%00%02, /p1/data/%00%03, /p1/data/%00%04.The pit size of node 0,4,5,6 were 5 and reached the threshold.They would drop the interest.And the consumer application in c1 would continue to send interestes.The c1 would drop the interest and would not propograte the interest.In the 2nd 0.5 second,c1 sent 5 interests in data /p1/data/%00%05, /p1/data/%00%06, /p1/data/%00%07, /p1/data/%00%08, /p1/data/%00%09.The node had reached the threshold and would drop the interestes.But in the 3rd 0/5 second,the output confused me.After c1 sent a interest for /p1/data/%00%0A,it sent another interest in p1/data/%00.What's more confued is the node 4 will propograte this interest.Why c1 sent interest in /p1/data/%00 again and propogated it when the pit size above the threshold?The same question in node 4,5,6. 2,Is there any timeout mechanism in pit entry?When c1 sent a interest for /p1/data/%00%13,the output shows that the pit size in c1 is still 5.But when it sent a interest for /p1/data/%00%14,the pit size is 4. When I run the second forwarding strategy which just drop the interest and push back a fake data packet.I found serveral confusions: 1,The confusion is like the 1st confusion in first forwarding strategy.In the first 0.5 seconds, c1 sent 5 interests which data name are /p1/data/%00, /p1/data/%00%01, /p1/data/%00%02, /p1/data/%00%03, /p1/data/%00%04.The pit size of node 0,4,5,6 were 5 and reached the threshold.They would drop the interest.In the next 0.5 seconds, c1 continued to send interest.But this time,it just sent one interest in new data named /p1/%data/%00/%05.Other 4 interests are interested in data /p1/data/%00, /p1/data/%00%01, /p1/data/%00%02, /p1/data/%00%03.This is quiet different from the 1st forwarding strategy. 2,I used Ptr name = Create("/pushback/altert") to construct a name.But it throw exception. The attachment have 6 files.MyFwStrategy_PitLimit_NoPushBack.txt is the log in 1st strategy.MyFwStrategy_PitLimit.txt is the log in 2nd strategy.ndn-congestion-alt-topo-plugin.cc is the scenario.topo-11-node-two-bottlenecks.txt is the topoplogy.MyFwStrategy_PitLimit.* is my strategy. -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Nov 4 11:25:36 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 4 Nov 2013 11:25:36 -0800 Subject: [ndnSIM] A question about ndnSim routing item In-Reply-To: <2013110311110637102430@gmail.com> References: <201310231022080093705@gmail.com>, <0B18A53A-5FC8-4749-A27A-0876AC8B9C2E@ucla.edu> <2013110311110637102430@gmail.com> Message-ID: <4B75D1C2-C36B-4EF1-B0AD-9977E908AA03@ucla.edu> Hi Xu, There are two different things that are called "metric". One thing that is metric for the face as managed by setMetric() method in ndn::NetDeviceFace. This parameter is configured for the scenario in topology file (http://ndnsim.net/examples.html#node-grid-example-using-topology-plugin; 4th element on each line in 'link' block). The other "metric" belongs to FIB entry: priority with which interests for the prefix should be routed via this face. This metric can be either configured manually via "AddRoute" call (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_stack_helper.html#aa30137bf3324ce86d1a3c0708c0ac1f2), or if you use ndn::GlobalRoutingContoller, will be set automatically as a sum of individual ndn::NetDeviceFace metrics on the path. I hope this clarifies the confusion, Alex On Nov 2, 2013, at 8:11 PM, xuzhw2001 at gmail.com wrote: > Hi, Alex > > Thank you for the reply, that help a lot. I have understood these items. But what does here stand for exactly? I have read the ndn-fib-entry.cc and its .h. > There is an int32_t variable named metric, and the class is also named FaceMetric. I am confused, since the class FaceMetric has many factors such as status,rtt, how can you only use one variable to represent this class? Is the int32_t variable metric a point of the class FaceMetric? But why setMetric() in ndn-net-device-face.cc set the varialbe to be 1 on the line 63. > Look forward to your reply, thanks a lot. > > Xu Zhiwei > > > ???? Alex Afanasyev > ????? 2013-11-02 06:08 > ???? xuzhw2001 > ??? ndnsim at lists.cs.ucla.edu > ??? Re: A question about ndnSim routing item > Hi Xu, > > I hope the list you showed is not for the same node, otherwise something is strange. > > You can see the implementation detail on what is printed inside in model/ndn-net-device-face.cc and model/fw/ndn-fib-entry.cc (last methods), but here is brief summary: > > dev[0]=net(0,0-4)(2,y,1) > > for NetDeviceFace with PointToPointNetDevice > > dev[) = net(, -, , ) > > for AppFace > dev = local() > > --- > Alex > > On Oct 22, 2013, at 7:22 PM, xuzhw2001 at gmail.com wrote: > >> Hi, Alex >> >> I have written some experiments on ndnSim recently. Now, I have two problem about the routing process in ndnSim. >> (1) I can't understand the detail of the routing item which I got in my experiment, listed as below: >> /root dev[0]=net(0,0-4)(2,y,1) >> /root dev[0]=net(0,0-4)(2,y,1) >> /root dev[4]=net(2,4-6)(1,y,1) >> /root dev[4]=net(2,4-6)(1,y,1) >> /root dev=local(2)(0,g,0) >> /root dev=local(2)(0,g,0) >> >> Can you do me a favor to explain the meaning of the parts in these routing items? Thanks a lot. >> xu zhiwei -------------- next part -------------- An HTML attachment was scrubbed... URL: From amin at ac.upc.edu Mon Nov 4 12:59:09 2013 From: amin at ac.upc.edu (Amin Karami) Date: Mon, 04 Nov 2013 21:59:09 +0100 Subject: [ndnSIM] a problem in 'ndn-simple-with-pit-operation-stats' In-Reply-To: <524BF948.6000209@ac.upc.edu> References: <524BF948.6000209@ac.upc.edu> Message-ID: <52780A9D.7050500@ac.upc.edu> > Hi Alex, > I ran the ./waf --run=ndn-simple-with-pit-operation-stats by Lru > implementation for PIT table. > I set PIT Size to 50: ndnHelper.SetPit > ("ns3::ndn::pit::Lru::AggregateStats","MaxSize","50"); > Interest rate to 1000: consumerHelper.SetAttribute ("Frequency", > StringValue ("1000")); > Finally, the output is: > Time NodeId Updates Inserts Lookups Erases > 1 1 0 990 3 940 > 2 1 0 999 0 999 > 3 1 0 998 0 998 > 4 1 0 1000 0 > 1000 > 5 1 0 1000 0 > 1000 > 6 1 0 1000 0 > 1000 > 7 1 0 1000 0 > 1000 > 8 1 0 1000 0 > 1000 > 9 1 0 1000 0 > 1000 > 10 1 0 1000 0 > 1000 > > As you see, the number of Insert/Lookup/Erase is based on the rate of > the Consumer (1000 interests per second), not based on the maximum PIT > size. I think maximum insert/Erase should be fixed to 50 (PIT size) > not to 1000 (consumer rate). > Is there any problem? > > > 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 Mon Nov 4 23:42:19 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 4 Nov 2013 23:42:19 -0800 Subject: [ndnSIM] a problem in 'ndn-simple-with-pit-operation-stats' In-Reply-To: <524BF948.6000209@ac.upc.edu> References: <524BF948.6000209@ac.upc.edu> Message-ID: <955F5351-B49D-49B3-8D1D-54B21FAD6478@ucla.edu> Hi Amin, This is entirely effect of "Lru" PIT entry "replacement" policy. This is actually **not** a default one. I think, if you try to run stats with default policy (ns3::ndn::pit::Persistent::AggregateStats), you may get results that you're expecting. With Lru, every time a new interest coming in, some old element is getting evicted, if capacity is reached. When Persistent policy is used, whenever PIT capacity is reached, new items will be rejected, not existing items evicted. --- Alex On Oct 2, 2013, at 3:45 AM, Amin Karami wrote: > Hi Alex, > I ran the ./waf --run=ndn-simple-with-pit-operation-stats by Lru implementation for PIT table. > I set PIT Size to 50: ndnHelper.SetPit ("ns3::ndn::pit::Lru::AggregateStats","MaxSize","50"); > Interest rate to 1000: consumerHelper.SetAttribute ("Frequency", StringValue ("1000")); > Finally, the output is: > Time NodeId Updates Inserts Lookups Erases > 1 1 0 990 3 940 > 2 1 0 999 0 999 > 3 1 0 998 0 998 > 4 1 0 1000 0 1000 > 5 1 0 1000 0 1000 > 6 1 0 1000 0 1000 > 7 1 0 1000 0 1000 > 8 1 0 1000 0 1000 > 9 1 0 1000 0 1000 > 10 1 0 1000 0 1000 > > As you see, the number of Insert/Lookup/Erase is based on the rate of the Consumer (1000 interests per second), not based on the PIT maximum size. I think maximum insert/Erase should be fixed to 50 (PIT size) not to 1000 (consumer rate). > Is there any problem? > > > Best Regards, > Amin From htunhtunu at gmail.com Tue Nov 5 04:44:25 2013 From: htunhtunu at gmail.com (Tun Tun Oo) Date: Tue, 5 Nov 2013 21:44:25 +0900 Subject: [ndnSIM] Confusion about Consumer Window Message-ID: Dear Alex I was misunderstanding on ConsumerWindow logic of Window Size in my previous mail. Sorry for that. Now I have several confusion with this ConsumerWindow. When Data is received, window size is increasing as m_window = m_window +1. It allow 2 Interests in each window but size of window increase one by one. It is working properly as in Slow Start mode. But my confusion is that why can generate 2 Interest per window using the logic m_window = m_window +1. And then if I want to interest rate as one Interest per window like in Congestion avoidance mode, I can do it with m_window = m_window. Because of this logic window size is no longer increase. Could you advice me what I am misunderstanding or how could I solve the problem. Sincerely yours TUN -------------- next part -------------- An HTML attachment was scrubbed... URL: From windyswsw at gmail.com Thu Nov 7 06:07:56 2013 From: windyswsw at gmail.com (Windhya Rankothge) Date: Thu, 7 Nov 2013 15:07:56 +0100 Subject: [ndnSIM] rocketfuel-maps help Message-ID: Hi, I am very new to ndnsim and ns3 environments and I want to simulate a topology graph using rocketfuel-maps-cch-to-annotaded tool. I went thorough the ndnsim web site, mail list and found following instructions. 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.gitndnSIM-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 I used same commands, but I get the following error u99319 at ws116615-ubuntu:~/ns-dev/ndnSIM-sample-topologies$ PKG_LIBRARY_PATH=/usr/local/lib NS_VIS_ASSIGN=1 ./waf --run example --vis The project was not configured: run "waf configure" first! Please let me know where I am going wrong and I would highly appreciate any help on simulating a topology graph using rocketfuel-maps given. Best Regards, Windhya Rankothge, Universitat Pompeu Fabra, Barcelona. -------------- next part -------------- An HTML attachment was scrubbed... URL: From i.liyanage at surrey.ac.uk Sun Nov 10 11:56:13 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Sun, 10 Nov 2013 19:56:13 +0000 Subject: [ndnSIM] custom-app Message-ID: Hi, I'm new to ndnSIM. If I want to create a new custom application do I have to compile ns-3 each time or, is there a way to write it like writing a simulation scenario with the scenario-template. Kind regards, Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Nov 10 12:54:30 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 10 Nov 2013 12:54:30 -0800 Subject: [ndnSIM] custom-app In-Reply-To: References: Message-ID: <6382910C-2DAD-4895-8C12-40284FD28174@ucla.edu> Hi Isuru, You can create your own environment without the need to compile ns-3 each time. You can check https://github.com/cawka/ndnSIM-scenario-template repository that I created as an example of how to do it. --- Alex On Nov 10, 2013, at 11:56 AM, i.liyanage at surrey.ac.uk wrote: > Hi, > > I'm new to ndnSIM. > If I want to create a new custom application do I have to compile ns-3 each time or, > is there a way to write it like writing a simulation scenario with the scenario-template. > > Kind regards, > Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Nov 11 10:17:48 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 11 Nov 2013 10:17:48 -0800 Subject: [ndnSIM] custom-app In-Reply-To: <3fd2e4052f66400f8856e2e06d04ddbe@DB4PR06MB224.eurprd06.prod.outlook.com> References: , <6382910C-2DAD-4895-8C12-40284FD28174@ucla.edu> <3fd2e4052f66400f8856e2e06d04ddbe@DB4PR06MB224.eurprd06.prod.outlook.com> Message-ID: <3069280D-683F-4C51-A3A9-0A22E414CE22@ucla.edu> If you're referring to ndn::GlobalRoutingController, then this one looks at the "metric" field of each face, which by default is 1, so you're getting effectively "hop count" routing metric. If you configure metric in similar way you do in OSPF (e.g., based on bandwidth), the global routing controller may make different routing decisions. --- Alex On Nov 11, 2013, at 3:35 AM, i.liyanage at surrey.ac.uk wrote: > Hi Alex, > > when generating FIB, does node only look for the hop count. > Is there any method that looks bandwidth, delay. > > Many thanks, > Isuru > From: Alexander Afanasyev on behalf of Alex Afanasyev > Sent: 10 November 2013 20:54 > To: Liyanage IU Mr (PG/R - Electronic Eng) > Cc: ndnsim at lists.cs.ucla.edu > Subject: Re: [ndnSIM] custom-app > > Hi Isuru, > > You can create your own environment without the need to compile ns-3 each time. You can check https://github.com/cawka/ndnSIM-scenario-template repository that I created as an example of how to do it. > > --- > Alex > > On Nov 10, 2013, at 11:56 AM, i.liyanage at surrey.ac.uk wrote: > >> Hi, >> >> I'm new to ndnSIM. >> If I want to create a new custom application do I have to compile ns-3 each time or, >> is there a way to write it like writing a simulation scenario with the scenario-template. >> >> Kind regards, >> Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Nov 11 15:46:14 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 11 Nov 2013 15:46:14 -0800 Subject: [ndnSIM] rocketfuel-maps help In-Reply-To: References: Message-ID: <877BE7F1-B57E-4E43-A9D6-AA5203AF0106@ucla.edu> Hi Windya, You have missed configuration/build step (https://github.com/cawka/ndnSIM-sample-topologies#compiling). After you have done with it (hopefully successfully), then you should not see the error anymore. --- Alex On Nov 7, 2013, at 6:07 AM, Windhya Rankothge wrote: > > Hi, > > I am very new to ndnsim and ns3 environments and I want to simulate a topology graph using rocketfuel-maps-cch-to-annotaded tool. > > I went thorough the ndnsim web site, mail list and found following instructions. > > 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 > > I used same commands, but I get the following error > > u99319 at ws116615-ubuntu:~/ns-dev/ndnSIM-sample-topologies$ PKG_LIBRARY_PATH=/usr/local/lib NS_VIS_ASSIGN=1 ./waf --run example --vis > The project was not configured: run "waf configure" first! > > Please let me know where I am going wrong and I would highly appreciate any help on simulating a topology graph using rocketfuel-maps given. > > > Best Regards, > > Windhya Rankothge, > Universitat Pompeu Fabra, > Barcelona. -------------- next part -------------- An HTML attachment was scrubbed... URL: From masri.sahri at gmail.com Tue Nov 12 21:54:01 2013 From: masri.sahri at gmail.com (nor masri sahri) Date: Wed, 13 Nov 2013 14:54:01 +0900 Subject: [ndnSIM] segmentation Message-ID: hi alex and all, correct me if i am wrong about my interpretation. from the example file (ndn-simple.cc), i just did simple rule to set maximum number of prefix to be requested (i set to max = 200) to see how it works.(assuming the size of /prefix name file is consist of 200 segment) 1. consumer send interest for data name /prefix 2. Producer will reply /prefix 0 (part or chunk or segment of /prefix named file) 3. when consumer receive /prefix 0, consumer will send another interest for the same file name (/prefix) 4. producer will reply /prefix 1 since that is the sequence number for the complete named data of /prefix im quite confused when i see the ns log file 0s 0 ndn.Consumer:SendPacket() 0s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0 0s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items 0.020496s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0db70) 0.020496s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with Data: /prefix/%00 0.057472s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0d260) 0.057472s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 0 0.1s 0 ndn.Consumer:SendPacket() 0.1s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1 0.1s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 1 with +100000000.0ns. already 0 items 0.120512s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0f7f0) 0.120512s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with Data: /prefix/%00%01 0.157504s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0f5b0) 0.157504s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 1 Is Consumer request specifically for /prefix 0 at the first time and when he get the data, the consumer send another interest for next data which is /prefix 1? In this scenario, it is presumed that the size of /prefix is max 200 segment. Sorry about my question, little confused. I am planning to do research on window on NDNsim. Need advice. Many thanks -- Regards, masri.sahri -------------- next part -------------- An HTML attachment was scrubbed... URL: From amin at ac.upc.edu Wed Nov 13 15:47:51 2013 From: amin at ac.upc.edu (Amin Karami) Date: Thu, 14 Nov 2013 00:47:51 +0100 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: References: Message-ID: <52840FA7.2050708@ac.upc.edu> Hi, I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" But, i received this error: ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory compilation terminated. Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. How is it possible to call this engine? Best Regards, Amin From i.liyanage at surrey.ac.uk Thu Nov 14 03:25:43 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Thu, 14 Nov 2013 11:25:43 +0000 Subject: [ndnSIM] Content Store data manipulation Message-ID: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com> Hi, Is it possible to add/remove Content Store entries using a application on a node. If it is what methods should I use. many thanks, Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Nov 14 07:47:43 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 07:47:43 -0800 Subject: [ndnSIM] Question for GetName( ) in *-policy.h In-Reply-To: <201311142251537106796@qq.com> References: <201311142251537106796@qq.com> Message-ID: <537B82A6-592D-49BB-B4FD-AD3B4E2E9E51@ucla.edu> Hi Aaron, Among all the garbage, there is actually a real error message: policy.h:108:1: error: ?class ns3::ndn::pit::EntryImpl >? has no member named ?GetName? Just replace GetName() to GetPrefix() and it should work. Regarding the second question. It is not quite easy to implement feature to return back name of the evicted content in contentStore->Add(). But you still have access to this information within the policy. The "erase" event will be fired every time the item is removed/evicted. Would that be sufficient? --- Alex On Nov 14, 2013, at 6:51 AM, aaronishere wrote: > Hi, Alex > > I have typed > std::cout<<"Node#"<payload ()->GetName ()< however, different from the old version, the new shows errors bellow. How to show the content name in the *-policy.h. > > Another question is that is it possible to send the content name back with return value(bool) to m_contentstore->Add( )? > In fact, m_contentstore->Add( ) is only for adding the content while the replacement policy evicts the correpoding content. I hope the content name could be back so that the cache policy that I defined in the fowarding strategy knows the exact evicted name and makes decision. > > Thanks! > > In file included from ../src/ndnSIM/model/pit/ndn-pit-impl.cc:27:0: > ../src/ndnSIM/model/pit/../../utils/trie/lfu-policy.h: In member function ?bool ns3::ndn::ndnSIM::lfu_policy_traits::policy::type::insert(typename ns3::ndn::ndnSIM::lfu_policy_traits::policy::type::parent_trie::iterator) [with Base = ns3::ndn::ndnSIM::trie_with_policy >, ns3::ndn::pit::EntryImpl > >, ns3::ndn::ndnSIM::lfu_policy_traits>, Container = ns3::ndn::ndnSIM::trie >, ns3::ndn::pit::EntryImpl > >, ns3::ndn::ndnSIM::lfu_policy_traits::policy_hook_type>, Hook = boost::intrusive::member_hook >, ns3::ndn::pit::EntryImpl > >, ns3::ndn::ndnSIM::lfu_policy_traits::policy_hook_type>, ns3::ndn::ndnSIM::lfu_policy_traits::policy_hook_type, &ns3::ndn::ndnSIM::trie >, ns3::ndn::pit::EntryImpl > >, ns3::ndn::ndnSIM::lfu_policy_traits::policy_hook_type>::policy_hook_>, typename ns3::ndn::ndnSIM::lfu_policy_traits::policy::type::parent_trie::iterator = ns3::ndn::ndnSIM::trie >, ns3::ndn::pit::EntryImpl > >, ns3::ndn::ndnSIM::lfu_policy_traits::policy_hook_type>*]?: > ../src/ndnSIM/model/pit/../../utils/trie/trie-with-policy.h:64:61: instantiated from ?std::pair::iterator, bool> ns3::ndn::ndnSIM::trie_with_policy::insert(const FullKey&, typename PayloadTraits::insert_type) [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits >, ns3::ndn::pit::EntryImpl > >, PolicyTraits = ns3::ndn::ndnSIM::lfu_policy_traits, typename ns3::ndn::ndnSIM::trie::iterator = ns3::ndn::ndnSIM::trie >, ns3::ndn::pit::EntryImpl > >, ns3::ndn::ndnSIM::lfu_policy_traits::policy_hook_type>*, typename PayloadTraits::insert_type = ns3::Ptr > >]? > ../src/ndnSIM/model/pit/ndn-pit-impl.h:359:99: instantiated from ?ns3::Ptr ns3::ndn::pit::PitImpl::Create(ns3::Ptr) [with Policy = ns3::ndn::ndnSIM::lfu_policy_traits]? > ../src/ndnSIM/model/pit/ndn-pit-impl.cc:79:16: instantiated from here > ../src/ndnSIM/model/pit/../../utils/trie/lfu-policy.h:108:1: error: ?class ns3::ndn::pit::EntryImpl >? has no member named ?GetName? > ../src/ndnSIM/model/pit/../../utils/trie/lfu-policy.h: In member function ?bool ns3::ndn::ndnSIM::lfu_policy_traits::policy::type::insert(typename ns3::ndn::ndnSIM::lfu_policy_traits::policy::type::parent_trie::iterator) [with Base = ns3::ndn::ndnSIM::trie_with_policy > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, Container = ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, Hook = boost::intrusive::function_hook, 0>, 0> >, ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, 0> >, typename ns3::ndn::ndnSIM::lfu_policy_traits::policy::type::parent_trie::iterator = ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >*]?: > ../src/ndnSIM/model/pit/../../utils/trie/detail/multi-policy-container.h:54:41: instantiated from ?bool ns3::ndn::ndnSIM::detail::inherit_with_base::insert(typename Base::iterator) [with Base = ns3::ndn::ndnSIM::trie_with_policy > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, Super = ns3::ndn::ndnSIM::detail::empty_policy_wrap > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > > >, Value = ns3::ndn::ndnSIM::detail::policy_wrap > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, ns3::ndn::ndnSIM::lfu_policy_traits::policy > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, boost::intrusive::function_hook, 0>, 0> >, ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, 0> > >::type>, typename Base::iterator = ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >*]? > ../src/ndnSIM/model/pit/../../utils/trie/detail/multi-policy-container.h:58:5: instantiated from ?bool ns3::ndn::ndnSIM::detail::inherit_with_base::insert(typename Base::iterator) [with Base = ns3::ndn::ndnSIM::trie_with_policy > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, Super = ns3::ndn::ndnSIM::detail::inherit_with_base > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, ns3::ndn::ndnSIM::detail::empty_policy_wrap > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > > >, ns3::ndn::ndnSIM::detail::policy_wrap > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, ns3::ndn::ndnSIM::lfu_policy_traits::policy > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, boost::intrusive::function_hook, 0>, 0> >, ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, 0> > >::type> >, Value = ns3::ndn::ndnSIM::detail::policy_wrap > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, ns3::ndn::ndnSIM::aggregate_stats_policy_traits::policy > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, boost::intrusive::function_hook, 0>, 0> >, ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, 1> > >::type>, typename Base::iterator = ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >*]? > ../src/ndnSIM/model/pit/../../utils/trie/multi-policy.h:107:46: instantiated from ?bool ns3::ndn::ndnSIM::multi_policy_traits::policy::type::insert(typename ns3::ndn::ndnSIM::multi_policy_traits::policy::type::parent_trie::iterator) [with Base = ns3::ndn::ndnSIM::trie_with_policy > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::multi_policy_traits > >, Container = ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >, Hook = ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> >, Policies = boost::mpl::vector2, typename ns3::ndn::ndnSIM::multi_policy_traits::policy::type::parent_trie::iterator = ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >*]? > ../src/ndnSIM/model/pit/../../utils/trie/trie-with-policy.h:64:61: instantiated from ?std::pair::iterator, bool> ns3::ndn::ndnSIM::trie_with_policy::insert(const FullKey&, typename PayloadTraits::insert_type) [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits > > >, ns3::ndn::pit::EntryImpl > > > >, PolicyTraits = ns3::ndn::ndnSIM::multi_policy_traits >, typename ns3::ndn::ndnSIM::trie::iterator = ns3::ndn::ndnSIM::trie > > >, ns3::ndn::pit::EntryImpl > > > >, ns3::ndn::ndnSIM::detail::multi_type_container, 0>, 0> > >*, typename PayloadTraits::insert_type = ns3::Ptr > > > >]? > ../src/ndnSIM/model/pit/ndn-pit-impl.h:359:99: instantiated from ?ns3::Ptr ns3::ndn::pit::PitImpl::Create(ns3::Ptr) [with Policy = ns3::ndn::ndnSIM::multi_policy_traits >]? > ../src/ndnSIM/model/pit/ndn-pit-impl.cc:109:16: instantiated from here > ../src/ndnSIM/model/pit/../../utils/trie/lfu-policy.h:108:1: error: ?class ns3::ndn::pit::EntryImpl > > >? has no member named ?GetName? > > Aaron -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Nov 14 08:07:03 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 08:07:03 -0800 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: <52840FA7.2050708@ac.upc.edu> References: <52840FA7.2050708@ac.upc.edu> Message-ID: <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> Hi Amin, The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: 1. Edit src/ndnSIM/wscript somewhere (in the beginning) of `def configure(conf):` conf.env['INCLUDES_MATLAB'] = '' conf.env['LIB_MATLAB'] = [''] conf.env['LIBPATH_MATLAB'] = '' I'm not sure, but according some Internet posts, the second line should be something like: conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB 2. Edit src/ndnSIM/examples/wscript Edit/create definition for your program to look like this obj = bld.create_ns3_program('your-app', all_modules) obj.source = 'your-app.cc' obj.use += ['MATLAB'] --- Alex On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: > Hi, > I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" > But, i received this error: > ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory > compilation terminated. > > Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. > > How is it possible to call this engine? > > > Best Regards, > Amin From alexander.afanasyev at ucla.edu Thu Nov 14 08:07:52 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 08:07:52 -0800 Subject: [ndnSIM] Content Store data manipulation In-Reply-To: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com> References: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com> Message-ID: <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> Hi Isuru, Since ContentStore is property of the forwarding daemon, there is no application interface to directly manage (add/remove) entries. You can have full control over the cache content if you write a so-called policy, but this will not be application. --- Alex On Nov 14, 2013, at 3:25 AM, i.liyanage at surrey.ac.uk wrote: > Hi, > > Is it possible to add/remove Content Store entries using a application on a node. > If it is what methods should I use. > > many thanks, > Isuru > _______________________________________________ > 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 Nov 14 08:41:58 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 08:41:58 -0800 Subject: [ndnSIM] segmentation In-Reply-To: References: Message-ID: <88FAA69C-4DF9-4A4D-99D8-DD6BA98D6D23@ucla.edu> Hi Masri, You're seeing the correct behavior. The consumer application explicitly requests (as it is done in majority cases in NDN) specific Data packets, which can be interpreted as a part of a large content. Another small comment. None of the implemented consumer applications in ndnSIM wait for the arrival of Data before sending another Interest. Instead, the number of sent interest is controlled either by rate (ConsumerCbr) or "outstanding Interest window" (ConsumerWindow). --- Alex On Nov 12, 2013, at 9:54 PM, nor masri sahri wrote: > hi alex and all, > correct me if i am wrong about my interpretation. > from the example file (ndn-simple.cc), i just did simple rule to set maximum number of prefix to be requested (i set to max = 200) to see how it works.(assuming the size of /prefix name file is consist of 200 segment) > > 1. consumer send interest for data name /prefix > 2. Producer will reply /prefix 0 (part or chunk or segment of /prefix named file) > 3. when consumer receive /prefix 0, consumer will send another interest for the same file name (/prefix) > 4. producer will reply /prefix 1 since that is the sequence number for the complete named data of /prefix > > im quite confused when i see the ns log file > > 0s 0 ndn.Consumer:SendPacket() > 0s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0 > 0s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items > 0.020496s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0db70) > 0.020496s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with Data: /prefix/%00 > 0.057472s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0d260) > 0.057472s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 0 > 0.1s 0 ndn.Consumer:SendPacket() > 0.1s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1 > 0.1s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 1 with +100000000.0ns. already 0 items > 0.120512s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0f7f0) > 0.120512s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with Data: /prefix/%00%01 > 0.157504s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0f5b0) > 0.157504s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 1 > > Is Consumer request specifically for /prefix 0 at the first time and when he get the data, the consumer send another interest for next data which is /prefix 1? > > In this scenario, it is presumed that the size of /prefix is max 200 segment. > > > Sorry about my question, little confused. > > I am planning to do research on window on NDNsim. Need advice. Many thanks > > > > -- > Regards, > > masri.sahri > > _______________________________________________ > 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 i.liyanage at surrey.ac.uk Thu Nov 14 09:36:44 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Thu, 14 Nov 2013 17:36:44 +0000 Subject: [ndnSIM] Content Store data manipulation In-Reply-To: <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> References: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com>, <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> Message-ID: <12b1b625738747ba830737e1a795bf11@DB4PR06MB224.eurprd06.prod.outlook.com> Hi Alex, To write a policy which file should I refer to. I noticed the ContentStore implementation in */model/ cs folder and policy file in */utils/ trie folder. Could you suggest me good way to start to create a new policy. Many thanks, Isuru ________________________________ From: Alexander Afanasyev on behalf of Alex Afanasyev Sent: 14 November 2013 16:07 To: Liyanage IU Mr (PG/R - Electronic Eng) Cc: ndnsim at lists.cs.ucla.edu Subject: Re: [ndnSIM] Content Store data manipulation Hi Isuru, Since ContentStore is property of the forwarding daemon, there is no application interface to directly manage (add/remove) entries. You can have full control over the cache content if you write a so-called policy, but this will not be application. --- Alex On Nov 14, 2013, at 3:25 AM, i.liyanage at surrey.ac.uk wrote: Hi, Is it possible to add/remove Content Store entries using a application on a node. If it is what methods should I use. many thanks, Isuru _______________________________________________ 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 Thu Nov 14 12:12:09 2013 From: amin at ac.upc.edu (Amin Karami) Date: Thu, 14 Nov 2013 21:12:09 +0100 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> References: <52840FA7.2050708@ac.upc.edu> <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> Message-ID: <52852E99.1090005@ac.upc.edu> Hi Alex, Thank you for your guidance. I ran your suggested commands but i faced with errors: Traceback (most recent call last): File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 97, in waf_entry_point run_commands() File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 149, in run_commands parse_options() File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 127, in parse_options Context.create_context('options').execute() File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Options.py", line 134, in execute super(OptionsContext,self).execute() File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 87, in execute self.recurse([os.path.dirname(g_module.root_path)]) File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse user_function(self) File "/home/bluebit/Documents/ndnSIM/ns-3/wscript", line 209, in options opt.recurse('src') File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse user_function(self) File "/home/bluebit/Documents/ndnSIM/ns-3/src/wscript", line 47, in options opt.recurse(module, mandatory=False) File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 122, in recurse wscript_module=load_module(node.abspath()) File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 281, in load_module exec(compile(code,path,'exec'),module.__dict__) File "/home/bluebit/Documents/ndnSIM/ns-3/src/ndnSIM/wscript", line 42 conf.env['ENABLE_NDNSIM']=False; ^ IndentationError: unindent does not match any outer indentation level On 11/14/2013 05:07 ?.?, Alex Afanasyev wrote: > Hi Amin, > > The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: > > 1. Edit src/ndnSIM/wscript > > somewhere (in the beginning) of `def configure(conf):` > > conf.env['INCLUDES_MATLAB'] = '' > conf.env['LIB_MATLAB'] = [''] > conf.env['LIBPATH_MATLAB'] = '' > > > I'm not sure, but according some Internet posts, the second line should be something like: > > conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] > > and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB > > > 2. Edit src/ndnSIM/examples/wscript > > Edit/create definition for your program to look like this > > obj = bld.create_ns3_program('your-app', all_modules) > obj.source = 'your-app.cc' > obj.use += ['MATLAB'] > > --- > Alex > > > On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: > >> Hi, >> I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" >> But, i received this error: >> ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory >> compilation terminated. >> >> Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. >> >> How is it possible to call this engine? >> >> >> Best Regards, >> Amin From alexander.afanasyev at ucla.edu Thu Nov 14 12:14:18 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 12:14:18 -0800 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: <52852E99.1090005@ac.upc.edu> References: <52840FA7.2050708@ac.upc.edu> <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> <52852E99.1090005@ac.upc.edu> Message-ID: <2AC01781-8779-40DF-882A-F6CA474A7ECA@ucla.edu> Hi Amin, Python scripts (wscript) are very sensitive to indentation. You should correct the things you have typed to match indentation of the existing code. --- Alex On Nov 14, 2013, at 12:12 PM, Amin Karami wrote: > Hi Alex, > Thank you for your guidance. I ran your suggested commands but i faced with errors: > > Traceback (most recent call last): > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 97, in waf_entry_point > run_commands() > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 149, in run_commands > parse_options() > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 127, in parse_options > Context.create_context('options').execute() > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Options.py", line 134, in execute > super(OptionsContext,self).execute() > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 87, in execute > self.recurse([os.path.dirname(g_module.root_path)]) > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse > user_function(self) > File "/home/bluebit/Documents/ndnSIM/ns-3/wscript", line 209, in options > opt.recurse('src') > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse > user_function(self) > File "/home/bluebit/Documents/ndnSIM/ns-3/src/wscript", line 47, in options > opt.recurse(module, mandatory=False) > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 122, in recurse > wscript_module=load_module(node.abspath()) > File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 281, in load_module > exec(compile(code,path,'exec'),module.__dict__) > File "/home/bluebit/Documents/ndnSIM/ns-3/src/ndnSIM/wscript", line 42 > conf.env['ENABLE_NDNSIM']=False; > ^ > IndentationError: unindent does not match any outer indentation level > > > > On 11/14/2013 05:07 ?.?, Alex Afanasyev wrote: >> Hi Amin, >> >> The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: >> >> 1. Edit src/ndnSIM/wscript >> >> somewhere (in the beginning) of `def configure(conf):` >> >> conf.env['INCLUDES_MATLAB'] = '' >> conf.env['LIB_MATLAB'] = [''] >> conf.env['LIBPATH_MATLAB'] = '' >> >> >> I'm not sure, but according some Internet posts, the second line should be something like: >> >> conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] >> >> and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB >> >> >> 2. Edit src/ndnSIM/examples/wscript >> >> Edit/create definition for your program to look like this >> >> obj = bld.create_ns3_program('your-app', all_modules) >> obj.source = 'your-app.cc' >> obj.use += ['MATLAB'] >> >> --- >> Alex >> >> >> On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: >> >>> Hi, >>> I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" >>> But, i received this error: >>> ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory >>> compilation terminated. >>> >>> Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. >>> >>> How is it possible to call this engine? >>> >>> >>> Best Regards, >>> Amin From amin at ac.upc.edu Thu Nov 14 12:46:56 2013 From: amin at ac.upc.edu (Amin Karami) Date: Thu, 14 Nov 2013 21:46:56 +0100 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: <2AC01781-8779-40DF-882A-F6CA474A7ECA@ucla.edu> References: <52840FA7.2050708@ac.upc.edu> <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> <52852E99.1090005@ac.upc.edu> <2AC01781-8779-40DF-882A-F6CA474A7ECA@ucla.edu> Message-ID: <528536C0.401@ac.upc.edu> Hi Alex, I just shift the 2nd command to end of the page and the problem was fixed! I put my scenario (simple.cc) into src/ndnSIM/example folder. But when I run this program it gives error: program 'simple' not found; available programs are ... But for other program in this folder (e.g., ndn-simple), simulator works. What is the problem? I think i need run "./waf configure --enable-examples" again. Yes? Best Regards, Amin On 11/14/2013 09:14 ?.?, Alex Afanasyev wrote: > Hi Amin, > > Python scripts (wscript) are very sensitive to indentation. You should correct the things you have typed to match indentation of the existing code. > > --- > Alex > > On Nov 14, 2013, at 12:12 PM, Amin Karami wrote: > >> Hi Alex, >> Thank you for your guidance. I ran your suggested commands but i faced with errors: >> >> Traceback (most recent call last): >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 97, in waf_entry_point >> run_commands() >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 149, in run_commands >> parse_options() >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 127, in parse_options >> Context.create_context('options').execute() >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Options.py", line 134, in execute >> super(OptionsContext,self).execute() >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 87, in execute >> self.recurse([os.path.dirname(g_module.root_path)]) >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >> user_function(self) >> File "/home/bluebit/Documents/ndnSIM/ns-3/wscript", line 209, in options >> opt.recurse('src') >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >> user_function(self) >> File "/home/bluebit/Documents/ndnSIM/ns-3/src/wscript", line 47, in options >> opt.recurse(module, mandatory=False) >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 122, in recurse >> wscript_module=load_module(node.abspath()) >> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 281, in load_module >> exec(compile(code,path,'exec'),module.__dict__) >> File "/home/bluebit/Documents/ndnSIM/ns-3/src/ndnSIM/wscript", line 42 >> conf.env['ENABLE_NDNSIM']=False; >> ^ >> IndentationError: unindent does not match any outer indentation level >> >> >> >> On 11/14/2013 05:07 ?.?, Alex Afanasyev wrote: >>> Hi Amin, >>> >>> The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: >>> >>> 1. Edit src/ndnSIM/wscript >>> >>> somewhere (in the beginning) of `def configure(conf):` >>> >>> conf.env['INCLUDES_MATLAB'] = '' >>> conf.env['LIB_MATLAB'] = [''] >>> conf.env['LIBPATH_MATLAB'] = '' >>> >>> >>> I'm not sure, but according some Internet posts, the second line should be something like: >>> >>> conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] >>> >>> and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB >>> >>> >>> 2. Edit src/ndnSIM/examples/wscript >>> >>> Edit/create definition for your program to look like this >>> >>> obj = bld.create_ns3_program('your-app', all_modules) >>> obj.source = 'your-app.cc' >>> obj.use += ['MATLAB'] >>> >>> --- >>> Alex >>> >>> >>> On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: >>> >>>> Hi, >>>> I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" >>>> But, i received this error: >>>> ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory >>>> compilation terminated. >>>> >>>> Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. >>>> >>>> How is it possible to call this engine? >>>> >>>> >>>> Best Regards, >>>> Amin From alexander.afanasyev at ucla.edu Thu Nov 14 14:07:51 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 14:07:51 -0800 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: <528536C0.401@ac.upc.edu> References: <52840FA7.2050708@ac.upc.edu> <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> <52852E99.1090005@ac.upc.edu> <2AC01781-8779-40DF-882A-F6CA474A7ECA@ucla.edu> <528536C0.401@ac.upc.edu> Message-ID: If you haven't configured your NS-3 with examples before, then ./waf configure --enable-examples should fix it. --- Alex On Nov 14, 2013, at 12:46 PM, Amin Karami wrote: > Hi Alex, > > I just shift the 2nd command to end of the page and the problem was fixed! > I put my scenario (simple.cc) into src/ndnSIM/example folder. But when I run this program it gives error: program 'simple' not found; available programs are ... > > But for other program in this folder (e.g., ndn-simple), simulator works. > > What is the problem? > I think i need run "./waf configure --enable-examples" again. Yes? > > > > Best Regards, > Amin > > On 11/14/2013 09:14 ?.?, Alex Afanasyev wrote: >> Hi Amin, >> >> Python scripts (wscript) are very sensitive to indentation. You should correct the things you have typed to match indentation of the existing code. >> >> --- >> Alex >> >> On Nov 14, 2013, at 12:12 PM, Amin Karami wrote: >> >>> Hi Alex, >>> Thank you for your guidance. I ran your suggested commands but i faced with errors: >>> >>> Traceback (most recent call last): >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 97, in waf_entry_point >>> run_commands() >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 149, in run_commands >>> parse_options() >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 127, in parse_options >>> Context.create_context('options').execute() >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Options.py", line 134, in execute >>> super(OptionsContext,self).execute() >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 87, in execute >>> self.recurse([os.path.dirname(g_module.root_path)]) >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>> user_function(self) >>> File "/home/bluebit/Documents/ndnSIM/ns-3/wscript", line 209, in options >>> opt.recurse('src') >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>> user_function(self) >>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/wscript", line 47, in options >>> opt.recurse(module, mandatory=False) >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 122, in recurse >>> wscript_module=load_module(node.abspath()) >>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 281, in load_module >>> exec(compile(code,path,'exec'),module.__dict__) >>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/ndnSIM/wscript", line 42 >>> conf.env['ENABLE_NDNSIM']=False; >>> ^ >>> IndentationError: unindent does not match any outer indentation level >>> >>> >>> >>> On 11/14/2013 05:07 ?.?, Alex Afanasyev wrote: >>>> Hi Amin, >>>> >>>> The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: >>>> >>>> 1. Edit src/ndnSIM/wscript >>>> >>>> somewhere (in the beginning) of `def configure(conf):` >>>> >>>> conf.env['INCLUDES_MATLAB'] = '' >>>> conf.env['LIB_MATLAB'] = [''] >>>> conf.env['LIBPATH_MATLAB'] = '' >>>> >>>> >>>> I'm not sure, but according some Internet posts, the second line should be something like: >>>> >>>> conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] >>>> >>>> and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB >>>> >>>> >>>> 2. Edit src/ndnSIM/examples/wscript >>>> >>>> Edit/create definition for your program to look like this >>>> >>>> obj = bld.create_ns3_program('your-app', all_modules) >>>> obj.source = 'your-app.cc' >>>> obj.use += ['MATLAB'] >>>> >>>> --- >>>> Alex >>>> >>>> >>>> On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: >>>> >>>>> Hi, >>>>> I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" >>>>> But, i received this error: >>>>> ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory >>>>> compilation terminated. >>>>> >>>>> Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. >>>>> >>>>> How is it possible to call this engine? >>>>> >>>>> >>>>> 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 Thu Nov 14 14:21:38 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 14:21:38 -0800 Subject: [ndnSIM] Content Store data manipulation In-Reply-To: <12b1b625738747ba830737e1a795bf11@DB4PR06MB224.eurprd06.prod.outlook.com> References: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com>, <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> <12b1b625738747ba830737e1a795bf11@DB4PR06MB224.eurprd06.prod.outlook.com> Message-ID: <34A0B1AF-F69D-4E67-94C9-1E10B629D51C@ucla.edu> Hi Isuru, utils/ folder contain general-use policies and model/cs/ folder contain policy that can be used only with ContentStore. I would recommend to start with general-use and just peek at ContentStore-specific policy to see how to access information from cached entry. --- Alex On Nov 14, 2013, at 9:36 AM, wrote: > Hi Alex, > > To write a policy which file should I refer to. I noticed the ContentStore implementation in */model/ cs folder and policy file in */utils/ trie folder. > Could you suggest me good way to start to create a new policy. > > Many thanks, > Isuru > > From: Alexander Afanasyev on behalf of Alex Afanasyev > Sent: 14 November 2013 16:07 > To: Liyanage IU Mr (PG/R - Electronic Eng) > Cc: ndnsim at lists.cs.ucla.edu > Subject: Re: [ndnSIM] Content Store data manipulation > > Hi Isuru, > > Since ContentStore is property of the forwarding daemon, there is no application interface to directly manage (add/remove) entries. You can have full control over the cache content if you write a so-called policy, but this will not be application. > > --- > Alex > > On Nov 14, 2013, at 3:25 AM, i.liyanage at surrey.ac.uk wrote: > >> Hi, >> >> Is it possible to add/remove Content Store entries using a application on a node. >> If it is what methods should I use. >> >> many thanks, >> Isuru >> _______________________________________________ >> 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 Thu Nov 14 14:59:47 2013 From: amin at ac.upc.edu (Amin Karami) Date: Thu, 14 Nov 2013 23:59:47 +0100 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: References: <52840FA7.2050708@ac.upc.edu> <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> <52852E99.1090005@ac.upc.edu> <2AC01781-8779-40DF-882A-F6CA474A7ECA@ucla.edu> <528536C0.401@ac.upc.edu> Message-ID: <528555E3.5020608@ac.upc.edu> I configured NS-3 with examples, but it shows the same error: program 'simple' not found; .... But, when I copied simple.cc program into /scratch folder, it is executing. I cannot call it in /scratch? Another question is that, when i add MATLAB engine and requirement libraries into wscript files, i need again include it in my simple.cc program? /Amin On 11/14/2013 11:07 ?.?, Alex Afanasyev wrote: > If you haven't configured your NS-3 with examples before, then ./waf configure --enable-examples should fix it. > > --- > Alex > > On Nov 14, 2013, at 12:46 PM, Amin Karami wrote: > >> Hi Alex, >> >> I just shift the 2nd command to end of the page and the problem was fixed! >> I put my scenario (simple.cc) into src/ndnSIM/example folder. But when I run this program it gives error: program 'simple' not found; available programs are ... >> >> But for other program in this folder (e.g., ndn-simple), simulator works. >> >> What is the problem? >> I think i need run "./waf configure --enable-examples" again. Yes? >> >> >> >> Best Regards, >> Amin >> >> On 11/14/2013 09:14 ?.?, Alex Afanasyev wrote: >>> Hi Amin, >>> >>> Python scripts (wscript) are very sensitive to indentation. You should correct the things you have typed to match indentation of the existing code. >>> >>> --- >>> Alex >>> >>> On Nov 14, 2013, at 12:12 PM, Amin Karami wrote: >>> >>>> Hi Alex, >>>> Thank you for your guidance. I ran your suggested commands but i faced with errors: >>>> >>>> Traceback (most recent call last): >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 97, in waf_entry_point >>>> run_commands() >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 149, in run_commands >>>> parse_options() >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 127, in parse_options >>>> Context.create_context('options').execute() >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Options.py", line 134, in execute >>>> super(OptionsContext,self).execute() >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 87, in execute >>>> self.recurse([os.path.dirname(g_module.root_path)]) >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>>> user_function(self) >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/wscript", line 209, in options >>>> opt.recurse('src') >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>>> user_function(self) >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/wscript", line 47, in options >>>> opt.recurse(module, mandatory=False) >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 122, in recurse >>>> wscript_module=load_module(node.abspath()) >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 281, in load_module >>>> exec(compile(code,path,'exec'),module.__dict__) >>>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/ndnSIM/wscript", line 42 >>>> conf.env['ENABLE_NDNSIM']=False; >>>> ^ >>>> IndentationError: unindent does not match any outer indentation level >>>> >>>> >>>> >>>> On 11/14/2013 05:07 ?.?, Alex Afanasyev wrote: >>>>> Hi Amin, >>>>> >>>>> The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: >>>>> >>>>> 1. Edit src/ndnSIM/wscript >>>>> >>>>> somewhere (in the beginning) of `def configure(conf):` >>>>> >>>>> conf.env['INCLUDES_MATLAB'] = '' >>>>> conf.env['LIB_MATLAB'] = [''] >>>>> conf.env['LIBPATH_MATLAB'] = '' >>>>> >>>>> >>>>> I'm not sure, but according some Internet posts, the second line should be something like: >>>>> >>>>> conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] >>>>> >>>>> and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB >>>>> >>>>> >>>>> 2. Edit src/ndnSIM/examples/wscript >>>>> >>>>> Edit/create definition for your program to look like this >>>>> >>>>> obj = bld.create_ns3_program('your-app', all_modules) >>>>> obj.source = 'your-app.cc' >>>>> obj.use += ['MATLAB'] >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> >>>>> On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: >>>>> >>>>>> Hi, >>>>>> I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" >>>>>> But, i received this error: >>>>>> ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory >>>>>> compilation terminated. >>>>>> >>>>>> Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. >>>>>> >>>>>> How is it possible to call this engine? >>>>>> >>>>>> >>>>>> 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 Thu Nov 14 15:59:21 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 15:59:21 -0800 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: <528555E3.5020608@ac.upc.edu> References: <52840FA7.2050708@ac.upc.edu> <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> <52852E99.1090005@ac.upc.edu> <2AC01781-8779-40DF-882A-F6CA474A7ECA@ucla.edu> <528536C0.401@ac.upc.edu> <528555E3.5020608@ac.upc.edu> Message-ID: Hi Amin, Files you put in scratch are compiled only against NS-3 modules, so you're bound to fail if you want to link against MATLAB. When you move to the examples folder, you have to edit the corresponsing wscript and in the wscript you specify name of the application, as I suggested before, which you will be using ./waf --run. --- Alex On Nov 14, 2013, at 2:59 PM, Amin Karami wrote: > I configured NS-3 with examples, but it shows the same error: program 'simple' not found; .... > But, when I copied simple.cc program into /scratch folder, it is executing. I cannot call it in /scratch? > Another question is that, when i add MATLAB engine and requirement libraries into wscript files, i need again include it in my simple.cc program? > > /Amin > > On 11/14/2013 11:07 ?.?, Alex Afanasyev wrote: >> If you haven't configured your NS-3 with examples before, then ./waf configure --enable-examples should fix it. >> >> --- >> Alex >> >> On Nov 14, 2013, at 12:46 PM, Amin Karami wrote: >> >>> Hi Alex, >>> >>> I just shift the 2nd command to end of the page and the problem was fixed! >>> I put my scenario (simple.cc) into src/ndnSIM/example folder. But when I run this program it gives error: program 'simple' not found; available programs are ... >>> >>> But for other program in this folder (e.g., ndn-simple), simulator works. >>> >>> What is the problem? >>> I think i need run "./waf configure --enable-examples" again. Yes? >>> >>> >>> >>> Best Regards, >>> Amin >>> >>> On 11/14/2013 09:14 ?.?, Alex Afanasyev wrote: >>>> Hi Amin, >>>> >>>> Python scripts (wscript) are very sensitive to indentation. You should correct the things you have typed to match indentation of the existing code. >>>> >>>> --- >>>> Alex >>>> >>>> On Nov 14, 2013, at 12:12 PM, Amin Karami wrote: >>>> >>>>> Hi Alex, >>>>> Thank you for your guidance. I ran your suggested commands but i faced with errors: >>>>> >>>>> Traceback (most recent call last): >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 97, in waf_entry_point >>>>> run_commands() >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 149, in run_commands >>>>> parse_options() >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 127, in parse_options >>>>> Context.create_context('options').execute() >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Options.py", line 134, in execute >>>>> super(OptionsContext,self).execute() >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 87, in execute >>>>> self.recurse([os.path.dirname(g_module.root_path)]) >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>>>> user_function(self) >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/wscript", line 209, in options >>>>> opt.recurse('src') >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>>>> user_function(self) >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/wscript", line 47, in options >>>>> opt.recurse(module, mandatory=False) >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 122, in recurse >>>>> wscript_module=load_module(node.abspath()) >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 281, in load_module >>>>> exec(compile(code,path,'exec'),module.__dict__) >>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/ndnSIM/wscript", line 42 >>>>> conf.env['ENABLE_NDNSIM']=False; >>>>> ^ >>>>> IndentationError: unindent does not match any outer indentation level >>>>> >>>>> >>>>> >>>>> On 11/14/2013 05:07 ?.?, Alex Afanasyev wrote: >>>>>> Hi Amin, >>>>>> >>>>>> The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: >>>>>> >>>>>> 1. Edit src/ndnSIM/wscript >>>>>> >>>>>> somewhere (in the beginning) of `def configure(conf):` >>>>>> >>>>>> conf.env['INCLUDES_MATLAB'] = '' >>>>>> conf.env['LIB_MATLAB'] = [''] >>>>>> conf.env['LIBPATH_MATLAB'] = '' >>>>>> >>>>>> >>>>>> I'm not sure, but according some Internet posts, the second line should be something like: >>>>>> >>>>>> conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] >>>>>> >>>>>> and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB >>>>>> >>>>>> >>>>>> 2. Edit src/ndnSIM/examples/wscript >>>>>> >>>>>> Edit/create definition for your program to look like this >>>>>> >>>>>> obj = bld.create_ns3_program('your-app', all_modules) >>>>>> obj.source = 'your-app.cc' >>>>>> obj.use += ['MATLAB'] >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> >>>>>> On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: >>>>>> >>>>>>> Hi, >>>>>>> I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" >>>>>>> But, i received this error: >>>>>>> ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory >>>>>>> compilation terminated. >>>>>>> >>>>>>> Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. >>>>>>> >>>>>>> How is it possible to call this engine? >>>>>>> >>>>>>> >>>>>>> Best Regards, >>>>>>> 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 From yowarj at gmail.com Thu Nov 14 19:41:36 2013 From: yowarj at gmail.com (Yowaraj Chhetri) Date: Fri, 15 Nov 2013 12:41:36 +0900 Subject: [ndnSIM] error in running cs-tracer::install() Message-ID: Dear All, I want to run cs-tarcer::install() to trace cache hit/miss in of the node. Can anybody tell me how to run cs-tracer only in one node. I have tried a lot but couldnt succeed. May be my syntax is wrong? Please let me know the correct way to do. Thank you in advance... I did as follow: ndn::CsTracer::Install (consumer1 ("Src1"),"cs-trace.txt", Seconds (1)); and the error is: Waf: Entering directory `/home/akari/ns-dev/ns-3/build' [1218/2363] cxx: src/ndnSIM/examples/ndn-tree-with-l2tracer.cc -> build/src/ndnSIM/examples/ndn-tree-with-l2tracer.cc.15.o ../src/ndnSIM/examples/ndn-tree-with-l2tracer.cc: In function ?int main(int, char**)?: ../src/ndnSIM/examples/ndn-tree-with-l2tracer.cc:141:43: error: no match for call to ?(ns3::Ptr) (const char [5])? Waf: Leaving directory `/home/akari/ns-dev/ns-3/build' Build failed -> task in 'ndn-tree-with-l2tracer' failed (exit status 1): {task 39907088: cxx ndn-tree-with-l2tracer.cc -> ndn-tree-with-l2tracer.cc.15.o} ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-I.', '-I..', '-I/usr/include/libxml2', '-I/usr/include', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_GSL=1', '-DNDEBUG', '../src/ndnSIM/examples/ndn-tree-with-l2tracer.cc', '-c', '-o', 'src/ndnSIM/examples/ndn-tree-with-l2tracer.cc.15.o'] Yowaraj Chhetri, Master of Advanced Information Technology Kyushu University, Fukuoka: Japan -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Nov 14 20:51:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 20:51:10 -0800 Subject: [ndnSIM] error in running cs-tracer::install() In-Reply-To: References: Message-ID: <081016E2-7BE9-4170-9726-501F6B69F9CE@ucla.edu> Hi Yowaraj, You have incorrectly specified (actually, over-specified) the node on which you wnat to install the tracer. What you need is just ndn::CsTracer::Install (consumer1, "cs-trace.txt", Seconds (1)); or (if you need to specify node by the name ndn::CsTracer::Install (Names::Find ("Src1"), "cs-trace.txt", Seconds (1)); --- Alex On Nov 14, 2013, at 7:41 PM, Yowaraj Chhetri wrote: > Dear All, > > I want to run cs-tarcer::install() to trace cache hit/miss in of the node. > Can anybody tell me how to run cs-tracer only in one node. I have tried a lot but couldnt succeed. May be my syntax is wrong? Please let me know the correct way to do. > > Thank you in advance... > > I did as follow: > ndn::CsTracer::Install (consumer1 ("Src1"),"cs-trace.txt", Seconds (1)); > > and the error is: > > Waf: Entering directory `/home/akari/ns-dev/ns-3/build' > [1218/2363] cxx: src/ndnSIM/examples/ndn-tree-with-l2tracer.cc -> build/src/ndnSIM/examples/ndn-tree-with-l2tracer.cc.15.o > ../src/ndnSIM/examples/ndn-tree-with-l2tracer.cc: In function ?int main(int, char**)?: > ../src/ndnSIM/examples/ndn-tree-with-l2tracer.cc:141:43: error: no match for call to ?(ns3::Ptr) (const char [5])? > Waf: Leaving directory `/home/akari/ns-dev/ns-3/build' > Build failed > -> task in 'ndn-tree-with-l2tracer' failed (exit status 1): > {task 39907088: cxx ndn-tree-with-l2tracer.cc -> ndn-tree-with-l2tracer.cc.15.o} > ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-I.', '-I..', '-I/usr/include/libxml2', '-I/usr/include', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_GSL=1', '-DNDEBUG', '../src/ndnSIM/examples/ndn-tree-with-l2tracer.cc', '-c', '-o', 'src/ndnSIM/examples/ndn-tree-with-l2tracer.cc.15.o'] > > > Yowaraj Chhetri, > Master of Advanced Information Technology > Kyushu University, > Fukuoka: Japan > _______________________________________________ > 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 Nov 14 20:57:16 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 14 Nov 2013 20:57:16 -0800 Subject: [ndnSIM] ndnsim some problems about caching In-Reply-To: <20131115013057.B1A91D00002@webmail.sinamail.sina.com.cn> References: <20131115013057.B1A91D00002@webmail.sinamail.sina.com.cn> Message-ID: <2AEFDE68-D650-46C1-AC87-E2E37B59F85F@ucla.edu> Hi Julia, `cached' variable is set to true whenever the item was successfully cached by the ContentStore. For all default caching policies, this value is always be true if the Data packet was requested (i.e., there is an outstanding PIT entry). But, you make design your own caching policy that may reject to cache items. For the second question. If suspect that you have installed just one consumer application. In this case, this application is requesting unique pieces of data within the configured prefix (unique sequence numbers: /prefix/0, /prefix/1, ...) and you don't see any effects of caching. --- Alex On Nov 14, 2013, at 5:30 PM, wrote: > > Hi~ > I'm a student new to learn ndnsim.Nowadays,I'm doing some reaserch about ndn's caching algorithm,but I met some problems when I do some experiments. > The first one is that I find there is a bool variable named 'cached' occured in ndnSIM/model/fw/ndn-fowarding-strategy.cc,and I want to know is the variable control cached or not? > The next one is that there is no different route choices between the twice request from the same node. As my understanding, the first request's response will let all the nodes in route cached data, then the request node will has a near node which cached data. When the same request be sent again, the best routing isn't the near node? But I find wether two oi more times,the same routing was chose.Could you tell me why? > Thank you very much~ > > Julia Zhao From amin at ac.upc.edu Fri Nov 15 04:19:54 2013 From: amin at ac.upc.edu (Amin Karami) Date: Fri, 15 Nov 2013 13:19:54 +0100 Subject: [ndnSIM] Call engine.h in ndnSIM In-Reply-To: References: <52840FA7.2050708@ac.upc.edu> <150F31FB-0A69-4BE5-BFE1-3D1877425BAA@ucla.edu> <52852E99.1090005@ac.upc.edu> <2AC01781-8779-40DF-882A-F6CA474A7ECA@ucla.edu> <528536C0.401@ac.upc.edu> <528555E3.5020608@ac.upc.edu> Message-ID: <5286116A.7050800@ac.upc.edu> Hi Alex, I just separate two first lines as obj = bld.create_ns3_program('your-app', all_modules) obj.source = 'your-app.cc' with obj.use += ['MATLAB'] , and the problem solved!! Another setting is : conf.env['INCLUDES_MATLAB'] = '/usr/local/MATLAB/R2011b/extern/include/engine.h' conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] conf.env['LIBPATH_MATLAB'] = '/usr/local/MATLAB/R2011b/bin/glnx86' I also change the first one with conf.env['INCLUDES_MATLAB'] = '/usr/local/MATLAB/R2011b/extern/include/' But the same error is occurred: ../src/ndnSIM/examples/simple.cc:5:20: fatal error: engine.h: No such file or directory compilation terminated. I also searched in Internet posts, but noting found to be helpful. /Amin On 11/15/2013 12:59 ?.?, Alex Afanasyev wrote: > Hi Amin, > > Files you put in scratch are compiled only against NS-3 modules, so you're bound to fail if you want to link against MATLAB. > > When you move to the examples folder, you have to edit the corresponsing wscript and in the wscript you specify name of the application, as I suggested before, which you will be using ./waf --run. > > --- > Alex > > On Nov 14, 2013, at 2:59 PM, Amin Karami wrote: > >> I configured NS-3 with examples, but it shows the same error: program 'simple' not found; .... >> But, when I copied simple.cc program into /scratch folder, it is executing. I cannot call it in /scratch? >> Another question is that, when i add MATLAB engine and requirement libraries into wscript files, i need again include it in my simple.cc program? >> >> /Amin >> >> On 11/14/2013 11:07 ?.?, Alex Afanasyev wrote: >>> If you haven't configured your NS-3 with examples before, then ./waf configure --enable-examples should fix it. >>> >>> --- >>> Alex >>> >>> On Nov 14, 2013, at 12:46 PM, Amin Karami wrote: >>> >>>> Hi Alex, >>>> >>>> I just shift the 2nd command to end of the page and the problem was fixed! >>>> I put my scenario (simple.cc) into src/ndnSIM/example folder. But when I run this program it gives error: program 'simple' not found; available programs are ... >>>> >>>> But for other program in this folder (e.g., ndn-simple), simulator works. >>>> >>>> What is the problem? >>>> I think i need run "./waf configure --enable-examples" again. Yes? >>>> >>>> >>>> >>>> Best Regards, >>>> Amin >>>> >>>> On 11/14/2013 09:14 ?.?, Alex Afanasyev wrote: >>>>> Hi Amin, >>>>> >>>>> Python scripts (wscript) are very sensitive to indentation. You should correct the things you have typed to match indentation of the existing code. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Nov 14, 2013, at 12:12 PM, Amin Karami wrote: >>>>> >>>>>> Hi Alex, >>>>>> Thank you for your guidance. I ran your suggested commands but i faced with errors: >>>>>> >>>>>> Traceback (most recent call last): >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 97, in waf_entry_point >>>>>> run_commands() >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 149, in run_commands >>>>>> parse_options() >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Scripting.py", line 127, in parse_options >>>>>> Context.create_context('options').execute() >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Options.py", line 134, in execute >>>>>> super(OptionsContext,self).execute() >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 87, in execute >>>>>> self.recurse([os.path.dirname(g_module.root_path)]) >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>>>>> user_function(self) >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/wscript", line 209, in options >>>>>> opt.recurse('src') >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 128, in recurse >>>>>> user_function(self) >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/wscript", line 47, in options >>>>>> opt.recurse(module, mandatory=False) >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 122, in recurse >>>>>> wscript_module=load_module(node.abspath()) >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/.waf-1.7.11-2f760793a9090bf35f69082a250595d9/waflib/Context.py", line 281, in load_module >>>>>> exec(compile(code,path,'exec'),module.__dict__) >>>>>> File "/home/bluebit/Documents/ndnSIM/ns-3/src/ndnSIM/wscript", line 42 >>>>>> conf.env['ENABLE_NDNSIM']=False; >>>>>> ^ >>>>>> IndentationError: unindent does not match any outer indentation level >>>>>> >>>>>> >>>>>> >>>>>> On 11/14/2013 05:07 ?.?, Alex Afanasyev wrote: >>>>>>> Hi Amin, >>>>>>> >>>>>>> The problem is that you need to specify that your program needs to be compiled with MATLAB dependency (with proper CXXFLAGS and LINKFLAGS). I'm not quite confident how to do it with scratch/ folder, but if you have created a separate scenario repository or configured your scenario in src/ndnSIM/examples/wscript (and put it under src/ndnSIM/examples), then you may do the following: >>>>>>> >>>>>>> 1. Edit src/ndnSIM/wscript >>>>>>> >>>>>>> somewhere (in the beginning) of `def configure(conf):` >>>>>>> >>>>>>> conf.env['INCLUDES_MATLAB'] = '' >>>>>>> conf.env['LIB_MATLAB'] = [''] >>>>>>> conf.env['LIBPATH_MATLAB'] = '' >>>>>>> >>>>>>> >>>>>>> I'm not sure, but according some Internet posts, the second line should be something like: >>>>>>> >>>>>>> conf.env['LIB_MATLAB'] = ['eng', 'mat', 'mx'] >>>>>>> >>>>>>> and third should be location of libeng.dylib/libeng.so, libmat.dylb/libmat.so, libmx.dylib/libmx.so libraries within MATLAB >>>>>>> >>>>>>> >>>>>>> 2. Edit src/ndnSIM/examples/wscript >>>>>>> >>>>>>> Edit/create definition for your program to look like this >>>>>>> >>>>>>> obj = bld.create_ns3_program('your-app', all_modules) >>>>>>> obj.source = 'your-app.cc' >>>>>>> obj.use += ['MATLAB'] >>>>>>> >>>>>>> --- >>>>>>> Alex >>>>>>> >>>>>>> >>>>>>> On Nov 13, 2013, at 3:47 PM, Amin Karami wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> I want to call MATLAB engine into the my scenario in ndnSIM by #include "engine.h" >>>>>>>> But, i received this error: >>>>>>>> ../scratch/simple.cc:5:20: fatal error: engine.h: No such file or directory >>>>>>>> compilation terminated. >>>>>>>> >>>>>>>> Also, i included the complete route of the engine.h, but i faced with the same error as follows. Again, i copied the engine.h next to the simple.cc file. but i faced with the same error. >>>>>>>> >>>>>>>> How is it possible to call this engine? >>>>>>>> >>>>>>>> >>>>>>>> Best Regards, >>>>>>>> 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 From amin at ac.upc.edu Sat Nov 16 05:04:14 2013 From: amin at ac.upc.edu (Amin Karami) Date: Sat, 16 Nov 2013 14:04:14 +0100 Subject: [ndnSIM] Periodic stats of L3Tracer in a specific interface of a specific node Message-ID: <52876D4E.8080101@ac.upc.edu> Hi Alex, There is an example as "ndn-simple-with-pit-count-stats" which prints periodic stats of PIT size in the nodes. (https://github.com/NDN-Routing/ndnSIM/blob/master/examples/ndn-simple-with-pit-count-stats.cc) How does this periodic state work for L3Tracer statistics in a specific interface of a specific node? As i see in L3Tracer, there are 13 statistic features in each second, where 11 features are for each interface in a node and 2 others for whole the node (OutSatisfiedInterests and OutTimedOutInterests). Thank you in advance. Best Regards, Amin From amin at ac.upc.edu Sat Nov 16 05:06:37 2013 From: amin at ac.upc.edu (Amin Karami) Date: Sat, 16 Nov 2013 14:06:37 +0100 Subject: [ndnSIM] Periodic stats of L3Tracer in a specific interface of a specific node In-Reply-To: <52876D4E.8080101@ac.upc.edu> References: <52876D4E.8080101@ac.upc.edu> Message-ID: <52876DDD.4000905@ac.upc.edu> Hi Alex, There is an example as "ndn-simple-with-pit-count-stats" which prints periodic stats of PIT size in the nodes. (https://github.com/NDN-Routing/ndnSIM/blob/master/examples/ndn-simple-with-pit-count-stats.cc) How does this periodic state work for L3Tracer statistics in a specific interface of a specific node? As i see in L3Tracer, there are 13 statistic features in each second, where 11 features are for each interface in a node and 2 others for whole the node (OutSatisfiedInterests and OutTimedOutInterests). Thank you in advance. Best Regards, Amin From alexander.afanasyev at ucla.edu Sat Nov 16 16:11:43 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Nov 2013 16:11:43 -0800 Subject: [ndnSIM] Running cs-tracer on two or more nodes and increasing the Cache size of individual node In-Reply-To: References: Message-ID: Hi Yowaraj! On Nov 14, 2013, at 10:03 PM, Yowaraj Chhetri wrote: > Thank you Sir for your previous answer regarding Title "error in running cs-tracer::install()" > > Now it is working fine. > > I was trying to run cs-tracer on more than two node at the same time. But could not do it. Can you help me to solve my problem. Thanks in advance. > > Problem statement 1: I have 6 routers, but I want to run cs-tracer only on r1, r2 and r3 at the same time to find collective cache hit/miss. What is the problem? Just install tracer on different nodes and point to a different trace file. If you want to have one trace file, then do the following: NodeContainer nodesWithTracer; nodesWithTracer.Add (); nodesWithTracer.Add (); ... ndn::CsTracer::Install (nodesWithTracer, ... ); > Problem Statement 2: I want to increase the cache size of router r1, r2 and r3 respectively but rest node will have default size of 100. How to go about it. You have two options. First, you can select cache type (i.e., which policy to use) and cache size before installing NDN stack on the node: ndn::StackHelper ndnHelper; ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "10000"); ndnHelper.Install (node1); ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "10"); ndnHelper.Install (node2); ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "200"); ndnHelper.Install (node3); ... The second option is to install the same cache type on all nodes and then configure cache sizes: node1->GetObject()->SetAttribute("MaxSize", IntegerValue(10000)); node2->GetObject()->SetAttribute("MaxSize", IntegerValue(10)); node3->GetObject()->SetAttribute("MaxSize", IntegerValue(200)); --- Alex > How to achieve this, I tried but couldnt succeed. > > With Regards, > Yowaraj Chhetri -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Nov 16 16:21:39 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Nov 2013 16:21:39 -0800 Subject: [ndnSIM] how to show a new table shown in the visualizer? In-Reply-To: <201311161526035752252@qq.com> References: <201311161526035752252@qq.com> Message-ID: <6AB677E5-AAB9-4B5E-80A2-15F0786EFB48@ucla.edu> Hi Aaron, These tables are implemented as "plugins" to the NS-3's visualizer and are placed in src/visualizer/visualizer/plugins folder. You should be able to easily make a new one based on the existing code of ndnsim_cs|fib|pit.py or other NS-3's code. --- Alex On Nov 15, 2013, at 11:26 PM, aaronishere wrote: > Hi?Alex > > I created a new table like pit and I want the table to show in the visualizer like Pit/Cs/Fib, how could do that? > > Aaron From alexander.afanasyev at ucla.edu Sat Nov 16 16:25:57 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Nov 2013 16:25:57 -0800 Subject: [ndnSIM] Periodic stats of L3Tracer in a specific interface of a specific node In-Reply-To: <52876DDD.4000905@ac.upc.edu> References: <52876D4E.8080101@ac.upc.edu> <52876DDD.4000905@ac.upc.edu> Message-ID: Hi Amin, ndn::L3Tracer implementation hides all the complexity of setting up timers and printing out data to the right place, but essentially it is doing the same thing. You can check/update implementation here https://github.com/NDN-Routing/ndnSIM/blob/master/utils/tracers/ndn-l3-rate-tracer.cc --- Alex On Nov 16, 2013, at 5:06 AM, Amin Karami wrote: > Hi Alex, > There is an example as "ndn-simple-with-pit-count-stats" which prints periodic stats of PIT size in the nodes. > (https://github.com/NDN-Routing/ndnSIM/blob/master/examples/ndn-simple-with-pit-count-stats.cc) > > How does this periodic state work for L3Tracer statistics in a specific interface of a specific node? As i see in L3Tracer, there are 13 statistic features > in each second, where 11 features are for each interface in a node and 2 others for whole the node (OutSatisfiedInterests and OutTimedOutInterests). > > Thank you in advance. > > Best Regards, > Amin From alexander.afanasyev at ucla.edu Sat Nov 16 16:59:27 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Nov 2013 16:59:27 -0800 Subject: [ndnSIM] Confusion about Consumer Window In-Reply-To: References: Message-ID: <299BD977-25D6-4843-8792-252B6A389C8B@ucla.edu> Hi Tun, Let me clarify first. ConsumerWindow is not trying to implement TCP's congestion control. It has some similarities, but it has completely different logic. You can implement a version that more or less copies TCP's behavior, but you will need first to choose and study a specific congestion control scheme that you want to implement. For start, I can recommend the survey my colleagues and I wrote a couple of years back (http://dx.doi.org/10.1109/SURV.2010.042710.00114). --- Alex On Nov 5, 2013, at 4:44 AM, Tun Tun Oo wrote: > Dear Alex > > I was misunderstanding on ConsumerWindow logic of Window Size in my previous mail. Sorry for that. > Now I have several confusion with this ConsumerWindow. > > When Data is received, window size is increasing as m_window = m_window +1. > It allow 2 Interests in each window but size of window increase one by one. > It is working properly as in Slow Start mode. > > But my confusion is that why can generate 2 Interest per window using the logic m_window = m_window +1. > > And then if I want to interest rate as one Interest per window like in Congestion avoidance mode, I can do it with m_window = m_window. Because of this logic window size is no longer increase. > > Could you advice me what I am misunderstanding or how could I solve the problem. > > Sincerely yours > TUN From alexander.afanasyev at ucla.edu Sat Nov 16 17:38:39 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 16 Nov 2013 17:38:39 -0800 Subject: [ndnSIM] Confusion when Analizing the Log In-Reply-To: <958b201.14ba.1421bc386d5.Coremail.leshuyuan@163.com> References: <958b201.14ba.1421bc386d5.Coremail.leshuyuan@163.com> Message-ID: Hi! Sorry for the delayed reply. On Nov 2, 2013, at 7:21 PM, ??? wrote: > Hi All, > Firstly,I will introduce the program in my experiment.And then,I will talk about my confusions found when looking for the log. > My purpose is to forward the interest when the pit size under the threshold.I have two forwarding strategy class.One drops the interest when the pit size out of the threshold;Another drops the interest and pushes back a fake data packet in the same situation.To reach these goals,I overrided the OnInterest method and deal with the interest accouding to the pit size before the pit entry create when a new interest received. > To observe and verify the result,I logged the interest prefix in OnInterest method and DoPropagateInterest method,and logged the pit size in OnInterest.What's more,I outputed each pit entry. > The forwarding strategy is running on the 11-node 2-bottleneck topology.The topology is as follow.The c1,c2,c3 and c4 are consumerCbrs which send 10 interestes per second .C1 starts in 1s,c2 starts in 1s,c3 starts in 2s and c4 starts in 4s.A little different between this topology and the example provided by ndnSIM is the p1,p2,p3 and p4 are routers not producers because I want the router and cusumer pend the incoming interest.In addition,I set the pit max size of each node is 10 and the threshold of the pit is 5. > > # /------\ 0 0 /------\ > # | 0 |<-----+ +----->| 7 | > # \------/ \ / \------/ > # \ /-----\ / > # /------\ 0 \ +==>| 5 |<==+ / 0 /------\ > # | 1 |<--+ \ / \-----/ \ / +-->| 8 | > # \------/ \ \ | | / / \------/ > # \ | | 1Mbps links | | / > # \ 1 v0 v5 1v 2v 3 / > # +->/------\ /------\<-+ > # 2| 4 |<===============>| 6 |4 > # +->\------/4 0\------/<-+ > # / 3^ ^5 \ > # / | | \ > # /------\ 0 / / \ \ 0 /------\ > # | 2 |<--+ / \ +-->| 9 | > # \------/ / \ \------/ > # / "All consumer-router and" \ > # /------\ 0 / "router-producer links are" \ 0 /------\ > # | 3 |<-----+ "10Mbps" +---->| 10 | > # \------/ \------/ > # > When I run the first forwarding strategy which just drop the interest without push back data packet.I found serveral confusions: > 1,.Is there any re-request mechanism in ndnSIM core?In the 1st 0.5 second, c1 sent 5 interests in data /p1/data/%00, /p1/data/%00%01, /p1/data/%00%02, /p1/data/%00%03, /p1/data/%00%04.The pit size of node 0,4,5,6 were 5 and reached the threshold.They would drop the interest.And the consumer application in c1 would continue to send interestes.The c1 would drop the interest and would not propograte the interest.In the 2nd 0.5 second,c1 sent 5 interests in data /p1/data/%00%05, /p1/data/%00%06, /p1/data/%00%07, /p1/data/%00%08, /p1/data/%00%09.The node had reached the threshold and would drop the interestes.But in the 3rd 0/5 second,the output confused me.After c1 sent a interest for /p1/data/%00%0A,it sent another interest in p1/data/%00.What's more confued is the node 4 will propograte this interest.Why c1 sent interest in /p1/data/%00 again and propogated it when the pit size above the threshold?The same question in node 4,5,6. Yes, there is a re-request mechanism, but it is not in the ndnSIM core. It belongs to ConsumerCbr application that you're using. This particular application will keep requesting and re-requesting Data packets until it receives them. > 2,Is there any timeout mechanism in pit entry?When c1 sent a interest for /p1/data/%00%13,the output shows that the pit size in c1 is still 5.But when it sent a interest for /p1/data/%00%14,the pit size is 4. Yes. Each PIT entry has limited lifetime, which is currently fully controlled by the application using InterestLifetime field in Interests. If you want Interests to stay longer in PIT, just adjust value that is set by the Consumer application (either inside the application or in scenario). > > When I run the second forwarding strategy which just drop the interest and push back a fake data packet.I found serveral confusions: > 1,The confusion is like the 1st confusion in first forwarding strategy.In the first 0.5 seconds, c1 sent 5 interests which data name are /p1/data/%00, /p1/data/%00%01, /p1/data/%00%02, /p1/data/%00%03, /p1/data/%00%04.The pit size of node 0,4,5,6 were 5 and reached the threshold.They would drop the interest.In the next 0.5 seconds, c1 continued to send interest.But this time,it just sent one interest in new data named /p1/%data/%00/%05.Other 4 interests are interested in data /p1/data/%00, /p1/data/%00%01, /p1/data/%00%02, /p1/data/%00%03.This is quiet different from the 1st forwarding strategy. I'm not quite sure here. Is your strategy sending out a "proper" data packet (name of the fake data = name of the incoming interest) or something else? If so, then consumer should be completely ignorant of the fact that data is fake, since ConsumerCbr doesn't do any kind of verification. If the name is different, then ConsumerCbr simply never received Data and will re-request when it thinks that Data should have already arrived (after estimated retransmission timeout, RTO). > 2,I used Ptr name = Create("/pushback/altert") to construct a name.But it throw exception. Just "Create("/pushback/altert")" should not throw any exceptions... It may throw if you create name with non-URI symbols (you need to use .append method for that). --- Alex > The attachment have 6 files.MyFwStrategy_PitLimit_NoPushBack.txt is the log in 1st strategy.MyFwStrategy_PitLimit.txt is the log in 2nd strategy.ndn-congestion-alt-topo-plugin.cc is the scenario.topo-11-node-two-bottlenecks.txt is the topoplogy.MyFwStrategy_PitLimit.* is my strategy. From tengmingnianzbb at 163.com Sat Nov 16 23:56:34 2013 From: tengmingnianzbb at 163.com (Teng) Date: Sun, 17 Nov 2013 15:56:34 +0800 (CST) Subject: [ndnSIM] Build failed Message-ID: <5934a13a.2c2b.142650fa9a7.Coremail.tengmingnianzbb@163.com> Hi All, I am a new for ndnSIM, I tried to install ndnSIM in my ubuntu, after I run the compilation with command ./waf,it turned out a error: mmandLine? to ?ns3::TypeId? ./ns3/boolean.h:64:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::BooleanValue&) ./ns3/boolean.h:64:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::BooleanValue&? ./ns3/ptr.h:292:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::Ptr&) ../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc:82:15: error: no match for ?operator<::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:110:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ostream_type& (*)(std::basic_ostream::__ostream_type&) {aka std::basic_ostream& (*)(std::basic_ostream&)}? /usr/include/c++/4.6/ostream:119:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream, std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios] /usr/include/c++/4.6/ostream:119:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ios_type& (*)(std::basic_ostream::__ios_type&) {aka std::basic_ios& (*)(std::basic_ios&)}? /usr/include/c++/4.6/ostream:129:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:129:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::ios_base& (*)(std::ios_base&)? /usr/include/c++/4.6/ostream:167:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:167:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long int? /usr/include/c++/4.6/ostream:171:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:171:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long unsigned int? /usr/include/c++/4.6/ostream:175:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:175:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?bool? /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short int? /usr/include/c++/4.6/ostream:182:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:182:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short unsigned int? /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?int? /usr/include/c++/4.6/ostream:193:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:193:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?unsigned int? /usr/include/c++/4.6/ostream:202:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:202:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long int? /usr/include/c++/4.6/ostream:206:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:206:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long unsigned int? /usr/include/c++/4.6/ostream:211:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:211:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?double? /usr/include/c++/4.6/ostream:215:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:215:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?float? /usr/include/c++/4.6/ostream:223:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:223:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long double? /usr/include/c++/4.6/ostream:227:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:227:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?const void*? /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf] /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__streambuf_type* {aka std::basic_streambuf*}? /usr/include/c++/4.6/bits/basic_string.h:2693:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) /usr/include/c++/4.6/ostream:451:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT) /usr/include/c++/4.6/ostream:456:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) /usr/include/c++/4.6/ostream:462:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, char) /usr/include/c++/4.6/ostream:468:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, signed char) /usr/include/c++/4.6/ostream:473:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, unsigned char) /usr/include/c++/4.6/ostream:493:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*) /usr/include/c++/4.6/bits/ostream.tcc:323:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) /usr/include/c++/4.6/ostream:510:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const char*) /usr/include/c++/4.6/ostream:523:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const signed char*) /usr/include/c++/4.6/ostream:528:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const unsigned char*) /usr/include/c++/4.6/bitset:1514:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::bitset<_Nb>&) /usr/include/c++/4.6/complex:521:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::complex<_Tp>&) /usr/local/include/boost/graph/detail/edge.hpp:114:3: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const boost::detail::edge_desc_impl&) ./ns3/mac48-address.h:164:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Mac48Address&) ./ns3/mac48-address.h:164:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Mac48Address&? ./ns3/data-rate.h:113:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::DataRate&) ./ns3/data-rate.h:113:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::DataRate&? ./ns3/sequence-number.h:277:1: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::SequenceNumber&) ./ns3/l2-tracer.h:79:1: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::L2Tracer&) ./ns3/l2-tracer.h:79:1: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::L2Tracer&? ./ns3/packet.h:609:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Packet&) ./ns3/packet.h:609:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Packet&? ./ns3/trailer.h:96:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Trailer&) ./ns3/trailer.h:96:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Trailer&? ./ns3/header.h:94:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Header&) ./ns3/header.h:94:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Header&? ./ns3/ipv6-address.h:481:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Prefix&) ./ns3/ipv6-address.h:481:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Prefix&? ./ns3/ipv6-address.h:480:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Address&) ./ns3/ipv6-address.h:480:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Address&? ./ns3/ipv4-address.h:293:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Mask&) ./ns3/ipv4-address.h:293:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Mask&? ./ns3/ipv4-address.h:292:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Address&) ./ns3/ipv4-address.h:292:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Address&? ./ns3/address.h:232:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Address&) ./ns3/address.h:232:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Address&? ./ns3/vector.h:149:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector2D&) ./ns3/vector.h:149:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector2D&? ./ns3/vector.h:147:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector3D&) ./ns3/vector.h:147:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector3D&? ./ns3/traced-value.h:471:16: note: template ns3::TracedValue ns3::operator<<(const U&, const ns3::TracedValue&) ./ns3/traced-value.h:466:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const U&) ./ns3/traced-value.h:461:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const ns3::TracedValue&) ./ns3/traced-value.h:136:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::TracedValue&) ./ns3/random-variable.h:741:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::RandomVariable&) ./ns3/random-variable.h:741:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::RandomVariable&? ./ns3/object-factory.h:91:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::ObjectFactory&) ./ns3/object-factory.h:91:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::ObjectFactory&? ./ns3/nstime.h:665:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Time&) ./ns3/nstime.h:665:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Time&? ./ns3/int64x64.h:82:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::int64x64_t&) ./ns3/int64x64.h:82:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::int64x64_t&? ./ns3/type-id.h:362:16: note: std::ostream& ns3::operator<<(std::ostream&, ns3::TypeId) ./ns3/type-id.h:362:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?ns3::TypeId? ./ns3/boolean.h:64:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::BooleanValue&) ./ns3/boolean.h:64:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::BooleanValue&? ./ns3/ptr.h:292:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::Ptr&) ../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc:91:15: error: no match for ?operator<::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:110:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ostream_type& (*)(std::basic_ostream::__ostream_type&) {aka std::basic_ostream& (*)(std::basic_ostream&)}? /usr/include/c++/4.6/ostream:119:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream, std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios] /usr/include/c++/4.6/ostream:119:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ios_type& (*)(std::basic_ostream::__ios_type&) {aka std::basic_ios& (*)(std::basic_ios&)}? /usr/include/c++/4.6/ostream:129:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:129:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::ios_base& (*)(std::ios_base&)? /usr/include/c++/4.6/ostream:167:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:167:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long int? /usr/include/c++/4.6/ostream:171:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:171:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long unsigned int? /usr/include/c++/4.6/ostream:175:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:175:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?bool? /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short int? /usr/include/c++/4.6/ostream:182:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:182:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short unsigned int? /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?int? /usr/include/c++/4.6/ostream:193:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:193:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?unsigned int? /usr/include/c++/4.6/ostream:202:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:202:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long int? /usr/include/c++/4.6/ostream:206:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:206:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long unsigned int? /usr/include/c++/4.6/ostream:211:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:211:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?double? /usr/include/c++/4.6/ostream:215:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:215:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?float? /usr/include/c++/4.6/ostream:223:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:223:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long double? /usr/include/c++/4.6/ostream:227:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] /usr/include/c++/4.6/ostream:227:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?const void*? /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf] /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__streambuf_type* {aka std::basic_streambuf*}? /usr/include/c++/4.6/bits/basic_string.h:2693:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) /usr/include/c++/4.6/ostream:451:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT) /usr/include/c++/4.6/ostream:456:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) /usr/include/c++/4.6/ostream:462:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, char) /usr/include/c++/4.6/ostream:468:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, signed char) /usr/include/c++/4.6/ostream:473:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, unsigned char) /usr/include/c++/4.6/ostream:493:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*) /usr/include/c++/4.6/bits/ostream.tcc:323:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) /usr/include/c++/4.6/ostream:510:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const char*) /usr/include/c++/4.6/ostream:523:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const signed char*) /usr/include/c++/4.6/ostream:528:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const unsigned char*) /usr/include/c++/4.6/bitset:1514:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::bitset<_Nb>&) /usr/include/c++/4.6/complex:521:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::complex<_Tp>&) /usr/local/include/boost/graph/detail/edge.hpp:114:3: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const boost::detail::edge_desc_impl&) ./ns3/mac48-address.h:164:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Mac48Address&) ./ns3/mac48-address.h:164:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Mac48Address&? ./ns3/data-rate.h:113:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::DataRate&) ./ns3/data-rate.h:113:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::DataRate&? ./ns3/sequence-number.h:277:1: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::SequenceNumber&) ./ns3/l2-tracer.h:79:1: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::L2Tracer&) ./ns3/l2-tracer.h:79:1: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::L2Tracer&? ./ns3/packet.h:609:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Packet&) ./ns3/packet.h:609:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Packet&? ./ns3/trailer.h:96:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Trailer&) ./ns3/trailer.h:96:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Trailer&? ./ns3/header.h:94:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Header&) ./ns3/header.h:94:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Header&? ./ns3/ipv6-address.h:481:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Prefix&) ./ns3/ipv6-address.h:481:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Prefix&? ./ns3/ipv6-address.h:480:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Address&) ./ns3/ipv6-address.h:480:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Address&? ./ns3/ipv4-address.h:293:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Mask&) ./ns3/ipv4-address.h:293:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Mask&? ./ns3/ipv4-address.h:292:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Address&) ./ns3/ipv4-address.h:292:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Address&? ./ns3/address.h:232:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Address&) ./ns3/address.h:232:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Address&? ./ns3/vector.h:149:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector2D&) ./ns3/vector.h:149:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector2D&? ./ns3/vector.h:147:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector3D&) ./ns3/vector.h:147:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector3D&? ./ns3/traced-value.h:471:16: note: template ns3::TracedValue ns3::operator<<(const U&, const ns3::TracedValue&) ./ns3/traced-value.h:466:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const U&) ./ns3/traced-value.h:461:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const ns3::TracedValue&) ./ns3/traced-value.h:136:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::TracedValue&) ./ns3/random-variable.h:741:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::RandomVariable&) ./ns3/random-variable.h:741:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::RandomVariable&? ./ns3/object-factory.h:91:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::ObjectFactory&) ./ns3/object-factory.h:91:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::ObjectFactory&? ./ns3/nstime.h:665:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Time&) ./ns3/nstime.h:665:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Time&? ./ns3/int64x64.h:82:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::int64x64_t&) ./ns3/int64x64.h:82:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::int64x64_t&? ./ns3/type-id.h:362:16: note: std::ostream& ns3::operator<<(std::ostream&, ns3::TypeId) ./ns3/type-id.h:362:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?ns3::TypeId? ./ns3/boolean.h:64:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::BooleanValue&) ./ns3/boolean.h:64:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::BooleanValue&? ./ns3/ptr.h:292:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::Ptr&) Waf: Leaving directory `/home/tmn/ndnSIM/ns-3/build' Build failed -> task in 'rocketfuel-maps-cch-to-annotaded' failed (exit status 1): {task 167240748: cxx rocketfuel-maps-cch-to-annotaded.cc -> rocketfuel-maps-cch-to-annotaded.cc.1.o} ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-I.', '-I..', '-I/usr/local/include', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_IF_TUN_H=1', '-DNDEBUG', '../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc', '-c', '-o', 'src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc.1.o'] How can I solve the problem, would you please give me some hints. Thank you! -------------- next part -------------- An HTML attachment was scrubbed... URL: From drirawassim+ndnsim at gmail.com Sun Nov 17 03:37:21 2013 From: drirawassim+ndnsim at gmail.com (Wassim Drira) Date: Sun, 17 Nov 2013 14:37:21 +0300 Subject: [ndnSIM] [2] ContentStore order Message-ID: Hi all, I am using ContentStore to store some msgs in reception order. I am using the fifo variant. The issue is when printing the content of the cache, it looks not ordered as you can see below (sequence number in the end of the name). Do you have an idea about the cause and may be a solution to this issue... *%%%%%%%% ----- Code ----- %%%%%%%* ObjectFactory m_contentStoreFactory; m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo"); m_contentStoreFactory.Set("MaxSize", StringValue ("50")); m_pubCS = m_contentStoreFactory.Create (); ...... Ptr entry = m_pubCS->Begin(); while(entry){ NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName()); entry = m_pubCS->Next(entry); } *%%%%%%%% ----- OutPut ----- %%%%%%%* 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F Best regards -------------- next part -------------- An HTML attachment was scrubbed... URL: From amin at ac.upc.edu Sun Nov 17 07:52:05 2013 From: amin at ac.upc.edu (Amin Karami) Date: Sun, 17 Nov 2013 16:52:05 +0100 Subject: [ndnSIM] A question about printing out PIT contents In-Reply-To: <51DB16DD-718A-470A-AC03-FF2DE85E6B34@ucla.edu> References: <11688b9.27c9d.14157edd0a3.Coremail.liuzongzhen@cstnet.cn> <601D9137-A03E-4E69-BCB3-6D09083EA9EC@ucla.edu> <5245709F.6090409@ac.upc.edu> <51DB16DD-718A-470A-AC03-FF2DE85E6B34@ucla.edu> Message-ID: <5288E625.4070202@ac.upc.edu> Hi Alex, I wrote a function as follows based on your guidance to print out PIT contents: #include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/point-to-point-module.h" #include "ns3/ndnSIM-module.h" #include "ns3/ndn-fib-entry.h" #include "ns3/ndn-fib.h" using namespace ns3; using namespace ndn; using namespace fib; void PeriodicStatsPrinter (Ptr node, Time next) { Ptr pit = node->GetObject (); for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) { std::cout << "=========" << std::endl; std::cout << entry->GetPrefix () << std::endl; for (FaceMetricContainer::type::index::type::iterator metric = entry->m_faces.get ().begin(); metric != entry->m_faces.get ().end(); metric++) { os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; } // Print Prefix name, In Interface, Out Interface, Nonces //std::cout << *entry << std::endl; } Simulator::Schedule (next, PeriodicStatsPrinter, node, next); } When I ran the scenario, I faced with an error: ../scratch/PIT/PITInfo.cc: In function ?void PeriodicStatsPrinter(ns3::Ptr, ns3::Time)?: ../scratch/PIT/PITInfo.cc:38:82: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? ../scratch/PIT/PITInfo.cc:38:99: error: expected primary-expression before ?>? token ../scratch/PIT/PITInfo.cc:38:102: error: expected primary-expression before ?)? token ../scratch/PIT/PITInfo.cc:39:27: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? ../scratch/PIT/PITInfo.cc:39:44: error: expected primary-expression before ?>? token ../scratch/PIT/PITInfo.cc:39:47: error: expected primary-expression before ?)? token But, i call "ndn-fib-entry.h" and "ndn-fib.h" to declare the variables. Where is the problem? /Amin On 09/28/2013 03:43 ?.?, Alex Afanasyev wrote: > Hi Amin, > > Since this information belongs to each individual face (FaceMetric instance) inside FIB entry, you need to access individual items like this: > > Ptr pit = node->GetObject (); > for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) > { > std::cout << "=========" << std::endl; > std::cout << entry->GetPrefix () << std::endl; > > for (FaceMetricContainer::type::index::type::iterator metric = > entry->m_faces.get ().begin (); > metric != entry->m_faces.get ().end (); > metric++) > { > os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; > } > } > > --- > Alex > > On Sep 27, 2013, at 4:48 AM, Amin Karami wrote: > >> Hi Alex, >> If we want to print some extra information such as, RTT (or incoming time of Interest into PIT and the response time) for each entry, what we should do? >> Thanks a lot. >> >> I looking forward to your response. >> >> Best Regards, >> Amin >> >> >> On 09/26/2013 06:25 ?.?, Alex Afanasyev wrote: >>> Hi Liu, >>> >>> You can do something like this: >>> >>> input: Ptr node; >>> >>> Ptr pit = node->GetObject (); >>> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >>> { >>> std::cout << *entry << std::endl; >>> } >>> >>> This will print out content of each PIT entry in the default format. If you want some customizations, you can either directly access elements of PIT entry, or modify Print method of Pit implementation. >>> >>> --- >>> Alex >>> >>> On Sep 25, 2013, at 6:41 PM, ??? wrote: >>> >>>> Hi Alex, >>>> >>>> I want to print out PIT contents, such as the incoming and outgoing interface. But I don?t know which function to use. Any suggestion?Thanks a lot! >>>> >>>> Looking forward to your response. >>>> >>>> Liu Zongzhen >>> _______________________________________________ >>> 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 From i.liyanage at surrey.ac.uk Sun Nov 17 10:57:56 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Sun, 17 Nov 2013 18:57:56 +0000 Subject: [ndnSIM] Content Store data manipulation In-Reply-To: <34A0B1AF-F69D-4E67-94C9-1E10B629D51C@ucla.edu> References: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com>, <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> <12b1b625738747ba830737e1a795bf11@DB4PR06MB224.eurprd06.prod.outlook.com>, <34A0B1AF-F69D-4E67-94C9-1E10B629D51C@ucla.edu> Message-ID: <36cb81ae14b64cff82bca3666e96db2e@DB4PR06MB224.eurprd06.prod.outlook.com> Hi Alex, I looked at the both implementations and still not sure how to handle the entries in CS. for an example when data is received by a node what method inserts the data to CS?? Assuming the method ContentStoreImpl::Add (Ptr data) is executed, from where does this method is called many thanks, Isuru ________________________________ From: Alexander Afanasyev on behalf of Alex Afanasyev Sent: 14 November 2013 22:21 To: Liyanage IU Mr (PG/R - Electronic Eng) Cc: ndnsim at lists.cs.ucla.edu Subject: Re: [ndnSIM] Content Store data manipulation Hi Isuru, utils/ folder contain general-use policies and model/cs/ folder contain policy that can be used only with ContentStore. I would recommend to start with general-use and just peek at ContentStore-specific policy to see how to access information from cached entry. --- Alex On Nov 14, 2013, at 9:36 AM, > > wrote: Hi Alex, To write a policy which file should I refer to. I noticed the ContentStore implementation in */model/ cs folder and policy file in */utils/ trie folder. Could you suggest me good way to start to create a new policy. Many thanks, Isuru ________________________________ From: Alexander Afanasyev > on behalf of Alex Afanasyev > Sent: 14 November 2013 16:07 To: Liyanage IU Mr (PG/R - Electronic Eng) Cc: ndnsim at lists.cs.ucla.edu Subject: Re: [ndnSIM] Content Store data manipulation Hi Isuru, Since ContentStore is property of the forwarding daemon, there is no application interface to directly manage (add/remove) entries. You can have full control over the cache content if you write a so-called policy, but this will not be application. --- Alex On Nov 14, 2013, at 3:25 AM, i.liyanage at surrey.ac.uk wrote: Hi, Is it possible to add/remove Content Store entries using a application on a node. If it is what methods should I use. many thanks, Isuru _______________________________________________ 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 Nov 17 11:58:08 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 17 Nov 2013 11:58:08 -0800 Subject: [ndnSIM] [2] ContentStore order In-Reply-To: References: Message-ID: <60883F14-AF70-43F1-B644-FC27A43B9697@ucla.edu> Hi Wassim, Cache is organized as a hash-based container, so it is expected that entries are not in any particular order. To get access to policy-based ordering (FIFO in your case), you would need a little bit more complex code. Here is a basic example: #include "ns3/ndnSIM/model/cs/content-store-impl.h" #include "ns3/ndnSIM/utils/trie/fifo-policy.h" #include "ns3/ndnSIM/utils/trie/random-policy.h" ... // typedef ns3::ndn::ndnSIM::random_policy_traits policy; typedef ns3::ndn::ndnSIM::fifo_policy_traits policy; typedef ns3::ndn::cs::ContentStoreImpl CS; typedef CS::super::policy_container Policy; Ptr cs = DynamicCast (NodeList::GetNode(1)->GetObject ()); if (!cs) { std::cerr << "Please select the right CS policy" << std::endl; exit (1); } for (Policy::iterator it = cs->GetPolicy().begin (); it != cs->GetPolicy().end(); it++) { std::cout << it->payload()->GetName() << std::endl; } --- Alex On Nov 17, 2013, at 3:37 AM, Wassim Drira wrote: > Hi all, > > I am using ContentStore to store some msgs in reception order. I am using the fifo variant. The issue is when printing the content of the cache, it looks not ordered as you can see below (sequence number in the end of the name). > > Do you have an idea about the cause and may be a solution to this issue... > > %%%%%%%% ----- Code ----- %%%%%%% > ObjectFactory m_contentStoreFactory; > m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo"); > m_contentStoreFactory.Set("MaxSize", StringValue ("50")); > m_pubCS = m_contentStoreFactory.Create (); > ...... > Ptr entry = m_pubCS->Begin(); > while(entry){ > NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName()); > entry = m_pubCS->Next(entry); > } > %%%%%%%% ----- OutPut ----- %%%%%%% > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F > > > Best regards > _______________________________________________ > 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 Nov 17 12:05:32 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 17 Nov 2013 12:05:32 -0800 Subject: [ndnSIM] A question about printing out PIT contents In-Reply-To: <5288E625.4070202@ac.upc.edu> References: <11688b9.27c9d.14157edd0a3.Coremail.liuzongzhen@cstnet.cn> <601D9137-A03E-4E69-BCB3-6D09083EA9EC@ucla.edu> <5245709F.6090409@ac.upc.edu> <51DB16DD-718A-470A-AC03-FF2DE85E6B34@ucla.edu> <5288E625.4070202@ac.upc.edu> Message-ID: <5E8E9877-B35A-4A78-B2F6-8B418495A057@ucla.edu> Hi Amin, Are you trying to print out PIT of FIB contents? If PIT, then you first need to decide what kind of face information you want to print out. There are three different things that you can access: 1. Incoming faces 2. Outgoing faces 3. Faces that are associated with the FIB entry Your code looks like you want to print out faces that are associated FIB entry. For this, you need to do a small modification: add GetFibEntry() call on the PIT entry: for (FaceMetricContainer::type::index::type::iterator metric = entry->GetFibEntry()->m_faces.get ().begin(); metric != entry->GetFibEntry()->m_faces.get ().end(); metric++) { os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; } --- Alex On Nov 17, 2013, at 7:52 AM, Amin Karami wrote: > Hi Alex, > I wrote a function as follows based on your guidance to print out PIT contents: > #include "ns3/core-module.h" > #include "ns3/network-module.h" > #include "ns3/point-to-point-module.h" > #include "ns3/ndnSIM-module.h" > #include "ns3/ndn-fib-entry.h" > #include "ns3/ndn-fib.h" > > using namespace ns3; > using namespace ndn; > using namespace fib; > > void PeriodicStatsPrinter (Ptr node, Time next) > { > > Ptr pit = node->GetObject (); > for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) > { > std::cout << "=========" << std::endl; > std::cout << entry->GetPrefix () << std::endl; > > for (FaceMetricContainer::type::index::type::iterator metric = entry->m_faces.get ().begin(); > metric != entry->m_faces.get ().end(); metric++) > { > os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; > } > > // Print Prefix name, In Interface, Out Interface, Nonces > //std::cout << *entry << std::endl; > } > Simulator::Schedule (next, PeriodicStatsPrinter, node, next); > } > > When I ran the scenario, I faced with an error: > ../scratch/PIT/PITInfo.cc: In function ?void PeriodicStatsPrinter(ns3::Ptr, ns3::Time)?: > ../scratch/PIT/PITInfo.cc:38:82: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? > ../scratch/PIT/PITInfo.cc:38:99: error: expected primary-expression before ?>? token > ../scratch/PIT/PITInfo.cc:38:102: error: expected primary-expression before ?)? token > ../scratch/PIT/PITInfo.cc:39:27: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? > ../scratch/PIT/PITInfo.cc:39:44: error: expected primary-expression before ?>? token > ../scratch/PIT/PITInfo.cc:39:47: error: expected primary-expression before ?)? token > > > But, i call "ndn-fib-entry.h" and "ndn-fib.h" to declare the variables. Where is the problem? > > > /Amin > > > On 09/28/2013 03:43 ?.?, Alex Afanasyev wrote: >> Hi Amin, >> >> Since this information belongs to each individual face (FaceMetric instance) inside FIB entry, you need to access individual items like this: >> >> Ptr pit = node->GetObject (); >> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >> { >> std::cout << "=========" << std::endl; >> std::cout << entry->GetPrefix () << std::endl; >> >> for (FaceMetricContainer::type::index::type::iterator metric = >> entry->m_faces.get ().begin (); >> metric != entry->m_faces.get ().end (); >> metric++) >> { >> os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; >> } >> } >> >> --- >> Alex >> >> On Sep 27, 2013, at 4:48 AM, Amin Karami wrote: >> >>> Hi Alex, >>> If we want to print some extra information such as, RTT (or incoming time of Interest into PIT and the response time) for each entry, what we should do? >>> Thanks a lot. >>> >>> I looking forward to your response. >>> >>> Best Regards, >>> Amin >>> >>> >>> On 09/26/2013 06:25 ?.?, Alex Afanasyev wrote: >>>> Hi Liu, >>>> >>>> You can do something like this: >>>> >>>> input: Ptr node; >>>> >>>> Ptr pit = node->GetObject (); >>>> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >>>> { >>>> std::cout << *entry << std::endl; >>>> } >>>> >>>> This will print out content of each PIT entry in the default format. If you want some customizations, you can either directly access elements of PIT entry, or modify Print method of Pit implementation. >>>> >>>> --- >>>> Alex >>>> >>>> On Sep 25, 2013, at 6:41 PM, ??? wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> I want to print out PIT contents, such as the incoming and outgoing interface. But I don?t know which function to use. Any suggestion?Thanks a lot! >>>>> >>>>> Looking forward to your response. >>>>> >>>>> Liu Zongzhen >>>> _______________________________________________ >>>> 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 From alexander.afanasyev at ucla.edu Sun Nov 17 12:07:51 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 17 Nov 2013 12:07:51 -0800 Subject: [ndnSIM] A question about detecting the Face status In-Reply-To: References: Message-ID: <0B498CCD-4D6B-402D-B0E1-52675E130084@ucla.edu> Hi Jin, Highest rank currently is defined as a face in FIB with smallest routing metric. You can control this parameter either when you directly insert entries into FIB (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_fib.html#a62d58066a4e5f497513b795031100c91), or if you're using ndn::GlobalRoutingController, this metric will be a sum of face metrics configured in the topology. --- Alex On Nov 17, 2013, at 4:53 AM, xuejin wrote: > Hi Alex, > In ndnSIM, there are three fowarding stategies(BestRoute, Flooding, SmartFlooding). When using the BestRoute, the Interest only be forwarded to Highest-Rank GREEN face or YELLOW face. Actually, I want to know how could you find the "Highest-Rank" GREEN or YELLOW? I can't find the define of "Highest-Rank". Maybe it just means the face which gets into the FIB earliest? Or something else? > > Looking forward to your Reply. > Thanks. > > Jin Xue > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Nov 17 12:10:24 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 17 Nov 2013 12:10:24 -0800 Subject: [ndnSIM] Build failed In-Reply-To: <5934a13a.2c2b.142650fa9a7.Coremail.tengmingnianzbb@163.com> References: <5934a13a.2c2b.142650fa9a7.Coremail.tengmingnianzbb@163.com> Message-ID: Hi Teng, Try to download the latest version of ndnSIM and base NS-3. Your error indicates that you're using an older version of ndnSIM with newer version of the base NS-3 code. --- Alex On Nov 16, 2013, at 11:56 PM, Teng wrote: > Hi All, > I am a new for ndnSIM, I tried to install ndnSIM in my ubuntu, after I run the compilation with command ./waf,it turned out a error: > mmandLine? to ?ns3::TypeId? > ./ns3/boolean.h:64:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::BooleanValue&) > ./ns3/boolean.h:64:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::BooleanValue&? > ./ns3/ptr.h:292:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::Ptr&) > ../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc:82:15: error: no match for ?operator< ../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc:82:15: note: candidates are: > /usr/include/c++/4.6/ostream:110:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:110:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ostream_type& (*)(std::basic_ostream::__ostream_type&) {aka std::basic_ostream& (*)(std::basic_ostream&)}? > /usr/include/c++/4.6/ostream:119:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream, std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios] > /usr/include/c++/4.6/ostream:119:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ios_type& (*)(std::basic_ostream::__ios_type&) {aka std::basic_ios& (*)(std::basic_ios&)}? > /usr/include/c++/4.6/ostream:129:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:129:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::ios_base& (*)(std::ios_base&)? > /usr/include/c++/4.6/ostream:167:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:167:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long int? > /usr/include/c++/4.6/ostream:171:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:171:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long unsigned int? > /usr/include/c++/4.6/ostream:175:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:175:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?bool? > /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits] > /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short int? > /usr/include/c++/4.6/ostream:182:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:182:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short unsigned int? > /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits] > /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?int? > /usr/include/c++/4.6/ostream:193:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:193:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?unsigned int? > /usr/include/c++/4.6/ostream:202:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:202:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long int? > /usr/include/c++/4.6/ostream:206:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:206:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long unsigned int? > /usr/include/c++/4.6/ostream:211:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:211:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?double? > /usr/include/c++/4.6/ostream:215:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:215:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?float? > /usr/include/c++/4.6/ostream:223:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:223:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long double? > /usr/include/c++/4.6/ostream:227:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:227:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?const void*? > /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf] > /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__streambuf_type* {aka std::basic_streambuf*}? > /usr/include/c++/4.6/bits/basic_string.h:2693:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) > /usr/include/c++/4.6/ostream:451:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT) > /usr/include/c++/4.6/ostream:456:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) > /usr/include/c++/4.6/ostream:462:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, char) > /usr/include/c++/4.6/ostream:468:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, signed char) > /usr/include/c++/4.6/ostream:473:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, unsigned char) > /usr/include/c++/4.6/ostream:493:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*) > /usr/include/c++/4.6/bits/ostream.tcc:323:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) > /usr/include/c++/4.6/ostream:510:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const char*) > /usr/include/c++/4.6/ostream:523:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const signed char*) > /usr/include/c++/4.6/ostream:528:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const unsigned char*) > /usr/include/c++/4.6/bitset:1514:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::bitset<_Nb>&) > /usr/include/c++/4.6/complex:521:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::complex<_Tp>&) > /usr/local/include/boost/graph/detail/edge.hpp:114:3: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const boost::detail::edge_desc_impl&) > ./ns3/mac48-address.h:164:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Mac48Address&) > ./ns3/mac48-address.h:164:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Mac48Address&? > ./ns3/data-rate.h:113:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::DataRate&) > ./ns3/data-rate.h:113:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::DataRate&? > ./ns3/sequence-number.h:277:1: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::SequenceNumber&) > ./ns3/l2-tracer.h:79:1: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::L2Tracer&) > ./ns3/l2-tracer.h:79:1: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::L2Tracer&? > ./ns3/packet.h:609:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Packet&) > ./ns3/packet.h:609:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Packet&? > ./ns3/trailer.h:96:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Trailer&) > ./ns3/trailer.h:96:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Trailer&? > ./ns3/header.h:94:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Header&) > ./ns3/header.h:94:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Header&? > ./ns3/ipv6-address.h:481:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Prefix&) > ./ns3/ipv6-address.h:481:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Prefix&? > ./ns3/ipv6-address.h:480:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Address&) > ./ns3/ipv6-address.h:480:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Address&? > ./ns3/ipv4-address.h:293:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Mask&) > ./ns3/ipv4-address.h:293:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Mask&? > ./ns3/ipv4-address.h:292:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Address&) > ./ns3/ipv4-address.h:292:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Address&? > ./ns3/address.h:232:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Address&) > ./ns3/address.h:232:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Address&? > ./ns3/vector.h:149:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector2D&) > ./ns3/vector.h:149:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector2D&? > ./ns3/vector.h:147:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector3D&) > ./ns3/vector.h:147:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector3D&? > ./ns3/traced-value.h:471:16: note: template ns3::TracedValue ns3::operator<<(const U&, const ns3::TracedValue&) > ./ns3/traced-value.h:466:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const U&) > ./ns3/traced-value.h:461:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const ns3::TracedValue&) > ./ns3/traced-value.h:136:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::TracedValue&) > ./ns3/random-variable.h:741:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::RandomVariable&) > ./ns3/random-variable.h:741:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::RandomVariable&? > ./ns3/object-factory.h:91:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::ObjectFactory&) > ./ns3/object-factory.h:91:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::ObjectFactory&? > ./ns3/nstime.h:665:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Time&) > ./ns3/nstime.h:665:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Time&? > ./ns3/int64x64.h:82:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::int64x64_t&) > ./ns3/int64x64.h:82:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::int64x64_t&? > ./ns3/type-id.h:362:16: note: std::ostream& ns3::operator<<(std::ostream&, ns3::TypeId) > ./ns3/type-id.h:362:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?ns3::TypeId? > ./ns3/boolean.h:64:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::BooleanValue&) > ./ns3/boolean.h:64:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::BooleanValue&? > ./ns3/ptr.h:292:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::Ptr&) > ../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc:91:15: error: no match for ?operator< ../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc:91:15: note: candidates are: > /usr/include/c++/4.6/ostream:110:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:110:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ostream_type& (*)(std::basic_ostream::__ostream_type&) {aka std::basic_ostream& (*)(std::basic_ostream&)}? > /usr/include/c++/4.6/ostream:119:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream, std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios] > /usr/include/c++/4.6/ostream:119:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__ios_type& (*)(std::basic_ostream::__ios_type&) {aka std::basic_ios& (*)(std::basic_ios&)}? > /usr/include/c++/4.6/ostream:129:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:129:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::ios_base& (*)(std::ios_base&)? > /usr/include/c++/4.6/ostream:167:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:167:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long int? > /usr/include/c++/4.6/ostream:171:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:171:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long unsigned int? > /usr/include/c++/4.6/ostream:175:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:175:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?bool? > /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits] > /usr/include/c++/4.6/bits/ostream.tcc:93:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short int? > /usr/include/c++/4.6/ostream:182:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:182:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?short unsigned int? > /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits] > /usr/include/c++/4.6/bits/ostream.tcc:107:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?int? > /usr/include/c++/4.6/ostream:193:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:193:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?unsigned int? > /usr/include/c++/4.6/ostream:202:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:202:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long int? > /usr/include/c++/4.6/ostream:206:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:206:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long long unsigned int? > /usr/include/c++/4.6/ostream:211:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:211:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?double? > /usr/include/c++/4.6/ostream:215:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:215:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?float? > /usr/include/c++/4.6/ostream:223:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:223:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?long double? > /usr/include/c++/4.6/ostream:227:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream] > /usr/include/c++/4.6/ostream:227:7: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?const void*? > /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char, _Traits = std::char_traits, std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf] > /usr/include/c++/4.6/bits/ostream.tcc:121:5: note: no known conversion for argument 1 from ?ns3::CommandLine? to ?std::basic_ostream::__streambuf_type* {aka std::basic_streambuf*}? > /usr/include/c++/4.6/bits/basic_string.h:2693:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) > /usr/include/c++/4.6/ostream:451:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT) > /usr/include/c++/4.6/ostream:456:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) > /usr/include/c++/4.6/ostream:462:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, char) > /usr/include/c++/4.6/ostream:468:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, signed char) > /usr/include/c++/4.6/ostream:473:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, unsigned char) > /usr/include/c++/4.6/ostream:493:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*) > /usr/include/c++/4.6/bits/ostream.tcc:323:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) > /usr/include/c++/4.6/ostream:510:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const char*) > /usr/include/c++/4.6/ostream:523:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const signed char*) > /usr/include/c++/4.6/ostream:528:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const unsigned char*) > /usr/include/c++/4.6/bitset:1514:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::bitset<_Nb>&) > /usr/include/c++/4.6/complex:521:5: note: template std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::complex<_Tp>&) > /usr/local/include/boost/graph/detail/edge.hpp:114:3: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const boost::detail::edge_desc_impl&) > ./ns3/mac48-address.h:164:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Mac48Address&) > ./ns3/mac48-address.h:164:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Mac48Address&? > ./ns3/data-rate.h:113:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::DataRate&) > ./ns3/data-rate.h:113:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::DataRate&? > ./ns3/sequence-number.h:277:1: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::SequenceNumber&) > ./ns3/l2-tracer.h:79:1: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::L2Tracer&) > ./ns3/l2-tracer.h:79:1: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::L2Tracer&? > ./ns3/packet.h:609:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Packet&) > ./ns3/packet.h:609:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Packet&? > ./ns3/trailer.h:96:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Trailer&) > ./ns3/trailer.h:96:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Trailer&? > ./ns3/header.h:94:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Header&) > ./ns3/header.h:94:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Header&? > ./ns3/ipv6-address.h:481:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Prefix&) > ./ns3/ipv6-address.h:481:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Prefix&? > ./ns3/ipv6-address.h:480:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv6Address&) > ./ns3/ipv6-address.h:480:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv6Address&? > ./ns3/ipv4-address.h:293:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Mask&) > ./ns3/ipv4-address.h:293:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Mask&? > ./ns3/ipv4-address.h:292:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Ipv4Address&) > ./ns3/ipv4-address.h:292:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Ipv4Address&? > ./ns3/address.h:232:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Address&) > ./ns3/address.h:232:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Address&? > ./ns3/vector.h:149:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector2D&) > ./ns3/vector.h:149:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector2D&? > ./ns3/vector.h:147:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Vector3D&) > ./ns3/vector.h:147:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Vector3D&? > ./ns3/traced-value.h:471:16: note: template ns3::TracedValue ns3::operator<<(const U&, const ns3::TracedValue&) > ./ns3/traced-value.h:466:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const U&) > ./ns3/traced-value.h:461:16: note: template ns3::TracedValue ns3::operator<<(const ns3::TracedValue&, const ns3::TracedValue&) > ./ns3/traced-value.h:136:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::TracedValue&) > ./ns3/random-variable.h:741:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::RandomVariable&) > ./ns3/random-variable.h:741:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::RandomVariable&? > ./ns3/object-factory.h:91:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::ObjectFactory&) > ./ns3/object-factory.h:91:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::ObjectFactory&? > ./ns3/nstime.h:665:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::Time&) > ./ns3/nstime.h:665:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::Time&? > ./ns3/int64x64.h:82:15: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::int64x64_t&) > ./ns3/int64x64.h:82:15: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::int64x64_t&? > ./ns3/type-id.h:362:16: note: std::ostream& ns3::operator<<(std::ostream&, ns3::TypeId) > ./ns3/type-id.h:362:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?ns3::TypeId? > ./ns3/boolean.h:64:16: note: std::ostream& ns3::operator<<(std::ostream&, const ns3::BooleanValue&) > ./ns3/boolean.h:64:16: note: no known conversion for argument 2 from ?ns3::CommandLine? to ?const ns3::BooleanValue&? > ./ns3/ptr.h:292:15: note: template std::ostream& ns3::operator<<(std::ostream&, const ns3::Ptr&) > Waf: Leaving directory `/home/tmn/ndnSIM/ns-3/build' > Build failed > -> task in 'rocketfuel-maps-cch-to-annotaded' failed (exit status 1): > {task 167240748: cxx rocketfuel-maps-cch-to-annotaded.cc -> rocketfuel-maps-cch-to-annotaded.cc.1.o} > ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-I.', '-I..', '-I/usr/local/include', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_IF_TUN_H=1', '-DNDEBUG', '../src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc', '-c', '-o', 'src/ndnSIM/tools/rocketfuel-maps-cch-to-annotaded.cc.1.o'] > > How can I solve the problem, would you please give me some hints. > Thank you! > > > _______________________________________________ > 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 Nov 17 12:19:11 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 17 Nov 2013 12:19:11 -0800 Subject: [ndnSIM] Content Store data manipulation In-Reply-To: <36cb81ae14b64cff82bca3666e96db2e@DB4PR06MB224.eurprd06.prod.outlook.com> References: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com>, <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> <12b1b625738747ba830737e1a795bf11@DB4PR06MB224.eurprd06.prod.outlook.com>, <34A0B1AF-F69D-4E67-94C9-1E10B629D51C@ucla.edu> <36cb81ae14b64cff82bca3666e96db2e@DB4PR06MB224.eurprd06.prod.outlook.com> Message-ID: <247254B5-2F60-4EF7-9FD8-C2B2A0DA96D5@ucla.edu> Hi Isuru, The ContentStore::Add method is called (and which results in calling of the selected ContentStoreImpl::Add method) from ndn::ForwardingStrategy (model/fw/ndn-forwarding-strategy.cc line 239 and 255). Further, ContentStoreImpl::Add calls insert method on the underlying policy-based controller, which results in calling policy-specific 'insert' method. For example, if selected policy is Lru, then `insert' method defined in utils/trie/lru-policy.h line 77-87. --- Alex On Nov 17, 2013, at 10:57 AM, wrote: > Hi Alex, > > I looked at the both implementations and still not sure how to handle the entries in CS. > > for an example when data is received by a node what method inserts the data to CS?? > Assuming the method ContentStoreImpl::Add (Ptr data) is executed, > from where does this method is called > > many thanks, > Isuru > From: Alexander Afanasyev on behalf of Alex Afanasyev > Sent: 14 November 2013 22:21 > To: Liyanage IU Mr (PG/R - Electronic Eng) > Cc: ndnsim at lists.cs.ucla.edu > Subject: Re: [ndnSIM] Content Store data manipulation > > Hi Isuru, > > utils/ folder contain general-use policies and model/cs/ folder contain policy that can be used only with ContentStore. I would recommend to start with general-use and just peek at ContentStore-specific policy to see how to access information from cached entry. > > --- > Alex > > On Nov 14, 2013, at 9:36 AM, wrote: > >> Hi Alex, >> >> To write a policy which file should I refer to. I noticed the ContentStore implementation in */model/ cs folder and policy file in */utils/ trie folder. >> Could you suggest me good way to start to create a new policy. >> >> Many thanks, >> Isuru >> >> From: Alexander Afanasyev on behalf of Alex Afanasyev >> Sent: 14 November 2013 16:07 >> To: Liyanage IU Mr (PG/R - Electronic Eng) >> Cc: ndnsim at lists.cs.ucla.edu >> Subject: Re: [ndnSIM] Content Store data manipulation >> >> Hi Isuru, >> >> Since ContentStore is property of the forwarding daemon, there is no application interface to directly manage (add/remove) entries. You can have full control over the cache content if you write a so-called policy, but this will not be application. >> >> --- >> Alex >> >> On Nov 14, 2013, at 3:25 AM, i.liyanage at surrey.ac.uk wrote: >> >>> Hi, >>> >>> Is it possible to add/remove Content Store entries using a application on a node. >>> If it is what methods should I use. >>> >>> many thanks, >>> Isuru >>> _______________________________________________ >>> 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 Nov 17 14:16:46 2013 From: amin at ac.upc.edu (Amin Karami) Date: Sun, 17 Nov 2013 23:16:46 +0100 Subject: [ndnSIM] A question about printing out PIT contents In-Reply-To: <5E8E9877-B35A-4A78-B2F6-8B418495A057@ucla.edu> References: <11688b9.27c9d.14157edd0a3.Coremail.liuzongzhen@cstnet.cn> <601D9137-A03E-4E69-BCB3-6D09083EA9EC@ucla.edu> <5245709F.6090409@ac.upc.edu> <51DB16DD-718A-470A-AC03-FF2DE85E6B34@ucla.edu> <5288E625.4070202@ac.upc.edu> <5E8E9877-B35A-4A78-B2F6-8B418495A057@ucla.edu> Message-ID: <5289404E.3000302@ac.upc.edu> Hi Alex, What is the different between implementation of these two outputs: 'GetSRtt' (Get current estimate for smoothed RTT value) and 'GetRttVar' (Get current estimate for the RTT variation)? For those PIT entries which are reached to their timeout, what is the output? infinity? I also faced with an error in printing "metric->GetRttVar". I changed it to string variable to be printable in std::cout. But gives me error in the type of "metric->GetRttVar" and cannot change it to string value to be printable. What it is the solution? /Amin On 11/17/2013 09:05 ?.?, Alex Afanasyev wrote: > Hi Amin, > > Are you trying to print out PIT of FIB contents? If PIT, then you first need to decide what kind of face information you want to print out. There are three different things that you can access: > > 1. Incoming faces > 2. Outgoing faces > 3. Faces that are associated with the FIB entry > > Your code looks like you want to print out faces that are associated FIB entry. For this, you need to do a small modification: add GetFibEntry() call on the PIT entry: > > for (FaceMetricContainer::type::index::type::iterator metric = entry->GetFibEntry()->m_faces.get ().begin(); > metric != entry->GetFibEntry()->m_faces.get ().end(); metric++) > { > os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; > } > > --- > Alex > > On Nov 17, 2013, at 7:52 AM, Amin Karami wrote: > >> Hi Alex, >> I wrote a function as follows based on your guidance to print out PIT contents: >> #include "ns3/core-module.h" >> #include "ns3/network-module.h" >> #include "ns3/point-to-point-module.h" >> #include "ns3/ndnSIM-module.h" >> #include "ns3/ndn-fib-entry.h" >> #include "ns3/ndn-fib.h" >> >> using namespace ns3; >> using namespace ndn; >> using namespace fib; >> >> void PeriodicStatsPrinter (Ptr node, Time next) >> { >> >> Ptr pit = node->GetObject (); >> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >> { >> std::cout << "=========" << std::endl; >> std::cout << entry->GetPrefix () << std::endl; >> >> for (FaceMetricContainer::type::index::type::iterator metric = entry->m_faces.get ().begin(); >> metric != entry->m_faces.get ().end(); metric++) >> { >> os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; >> } >> >> // Print Prefix name, In Interface, Out Interface, Nonces >> //std::cout << *entry << std::endl; >> } >> Simulator::Schedule (next, PeriodicStatsPrinter, node, next); >> } >> >> When I ran the scenario, I faced with an error: >> ../scratch/PIT/PITInfo.cc: In function ?void PeriodicStatsPrinter(ns3::Ptr, ns3::Time)?: >> ../scratch/PIT/PITInfo.cc:38:82: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? >> ../scratch/PIT/PITInfo.cc:38:99: error: expected primary-expression before ?>? token >> ../scratch/PIT/PITInfo.cc:38:102: error: expected primary-expression before ?)? token >> ../scratch/PIT/PITInfo.cc:39:27: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? >> ../scratch/PIT/PITInfo.cc:39:44: error: expected primary-expression before ?>? token >> ../scratch/PIT/PITInfo.cc:39:47: error: expected primary-expression before ?)? token >> >> >> But, i call "ndn-fib-entry.h" and "ndn-fib.h" to declare the variables. Where is the problem? >> >> >> /Amin >> >> >> On 09/28/2013 03:43 ?.?, Alex Afanasyev wrote: >>> Hi Amin, >>> >>> Since this information belongs to each individual face (FaceMetric instance) inside FIB entry, you need to access individual items like this: >>> >>> Ptr pit = node->GetObject (); >>> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >>> { >>> std::cout << "=========" << std::endl; >>> std::cout << entry->GetPrefix () << std::endl; >>> >>> for (FaceMetricContainer::type::index::type::iterator metric = >>> entry->m_faces.get ().begin (); >>> metric != entry->m_faces.get ().end (); >>> metric++) >>> { >>> os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; >>> } >>> } >>> >>> --- >>> Alex >>> >>> On Sep 27, 2013, at 4:48 AM, Amin Karami wrote: >>> >>>> Hi Alex, >>>> If we want to print some extra information such as, RTT (or incoming time of Interest into PIT and the response time) for each entry, what we should do? >>>> Thanks a lot. >>>> >>>> I looking forward to your response. >>>> >>>> Best Regards, >>>> Amin >>>> >>>> >>>> On 09/26/2013 06:25 ?.?, Alex Afanasyev wrote: >>>>> Hi Liu, >>>>> >>>>> You can do something like this: >>>>> >>>>> input: Ptr node; >>>>> >>>>> Ptr pit = node->GetObject (); >>>>> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >>>>> { >>>>> std::cout << *entry << std::endl; >>>>> } >>>>> >>>>> This will print out content of each PIT entry in the default format. If you want some customizations, you can either directly access elements of PIT entry, or modify Print method of Pit implementation. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Sep 25, 2013, at 6:41 PM, ??? wrote: >>>>> >>>>>> Hi Alex, >>>>>> >>>>>> I want to print out PIT contents, such as the incoming and outgoing interface. But I don?t know which function to use. Any suggestion?Thanks a lot! >>>>>> >>>>>> Looking forward to your response. >>>>>> >>>>>> Liu Zongzhen >>>>> _______________________________________________ >>>>> 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 masri.sahri at gmail.com Sun Nov 17 16:45:22 2013 From: masri.sahri at gmail.com (nor masri sahri) Date: Mon, 18 Nov 2013 09:45:22 +0900 Subject: [ndnSIM] segmentation In-Reply-To: <88FAA69C-4DF9-4A4D-99D8-DD6BA98D6D23@ucla.edu> References: <88FAA69C-4DF9-4A4D-99D8-DD6BA98D6D23@ucla.edu> Message-ID: hi alex, thank you for the clarification. need idea from sifu Alex ;) 1. i plan to break packets into segment. default size of payload is 1024 and i plan to break into 4 packets BUT named in one segment. For example, /prefix 0 to /prefix 4 is named under Segment 1. When Consumer send FIRST Interest , it will fetch the segment name (in this case Segment 1, and Producer will reply packet /prefix 0 to /prefix 4, 256 bytes each). And the following Interest will fetch Segment 2 and so on. Can you give some advice on how to do this, your help is really appreciated. On Fri, Nov 15, 2013 at 1:41 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Masri, > > You're seeing the correct behavior. The consumer application explicitly > requests (as it is done in majority cases in NDN) specific Data packets, > which can be interpreted as a part of a large content. > > Another small comment. None of the implemented consumer applications in > ndnSIM wait for the arrival of Data before sending another Interest. > Instead, the number of sent interest is controlled either by rate > (ConsumerCbr) or "outstanding Interest window" (ConsumerWindow). > > --- > Alex > > On Nov 12, 2013, at 9:54 PM, nor masri sahri > wrote: > > hi alex and all, > correct me if i am wrong about my interpretation. > from the example file (ndn-simple.cc), i just did simple rule to set > maximum number of prefix to be requested (i set to max = 200) to see how it > works.(assuming the size of /prefix name file is consist of 200 segment) > > 1. consumer send interest for data name /prefix > 2. Producer will reply /prefix 0 (part or chunk or segment of /prefix > named file) > 3. when consumer receive /prefix 0, consumer will send another interest > for the same file name (/prefix) > 4. producer will reply /prefix 1 since that is the sequence number for the > complete named data of /prefix > > im quite confused when i see the ns log file > > 0s 0 ndn.Consumer:SendPacket() > 0s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0 > 0s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 0 with > +0.0ns. already 0 items > 0.020496s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0db70) > 0.020496s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with > Data: /prefix/%00 > 0.057472s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0d260) > 0.057472s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 0 > 0.1s 0 ndn.Consumer:SendPacket() > 0.1s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1 > 0.1s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 1 with > +100000000.0ns. already 0 items > 0.120512s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0f7f0) > 0.120512s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with > Data: /prefix/%00%01 > 0.157504s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0f5b0) > 0.157504s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 1 > > Is Consumer request specifically for /prefix 0 at the first time and when > he get the data, the consumer send another interest for next data which is > /prefix 1? > > In this scenario, it is presumed that the size of /prefix is max 200 > segment. > > > Sorry about my question, little confused. > > I am planning to do research on window on NDNsim. Need advice. Many thanks > > > > -- > Regards, > > masri.sahri > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -- Regards, masri.sahri -------------- next part -------------- An HTML attachment was scrubbed... URL: From drirawassim+ndnsim at gmail.com Sun Nov 17 18:48:30 2013 From: drirawassim+ndnsim at gmail.com (Wassim Drira) Date: Mon, 18 Nov 2013 05:48:30 +0300 Subject: [ndnSIM] [2] ContentStore order In-Reply-To: <60883F14-AF70-43F1-B644-FC27A43B9697@ucla.edu> References: <60883F14-AF70-43F1-B644-FC27A43B9697@ucla.edu> Message-ID: Hi Alex, Thanks Alex! This resolves partially the issue, when I use cs->Print(std::cout); the entries are correctly printed but when I use for (Policy::iterator it = cs->GetPolicy().begin (); ... it gives me a build error. *%%%%%%%% ----- Build Error ----- %%%%%%%* ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h: In member function ?virtual void ns3::ndn::ANode::OnMsg(ns3::Ptr)?: ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: ?ns3::ndn::ndnSIM::trie_with_policy::policy_container& ns3::ndn::ndnSIM::trie_with_policy::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits >, ns3::ndn::cs::Entry>, PolicyTraits = ns3::ndn::ndnSIM::fifo_policy_traits, ns3::ndn::ndnSIM::trie_with_policy::policy_container = ns3::ndn::ndnSIM::fifo_policy_traits::policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, boost::intrusive::member_hook >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, &ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >::type]? is inaccessible ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: within this context ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: ?ns3::ndn::ndnSIM::trie_with_policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an accessible base of ?ns3::ndn::cs::ContentStoreImpl? ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: ?ns3::ndn::ndnSIM::trie_with_policy::policy_container& ns3::ndn::ndnSIM::trie_with_policy::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits >, ns3::ndn::cs::Entry>, PolicyTraits = ns3::ndn::ndnSIM::fifo_policy_traits, ns3::ndn::ndnSIM::trie_with_policy::policy_container = ns3::ndn::ndnSIM::fifo_policy_traits::policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, boost::intrusive::member_hook >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, &ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >::type]? is inaccessible ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: within this context ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: ?ns3::ndn::ndnSIM::trie_with_policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an accessible base of ?ns3::ndn::cs::ContentStoreImpl? Regards, On Sun, Nov 17, 2013 at 10:58 PM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Wassim, > > Cache is organized as a hash-based container, so it is expected that > entries are not in any particular order. To get access to policy-based > ordering (FIFO in your case), you would need a little bit more complex > code. Here is a basic example: > > #include "ns3/ndnSIM/model/cs/content-store-impl.h" > #include "ns3/ndnSIM/utils/trie/fifo-policy.h" > #include "ns3/ndnSIM/utils/trie/random-policy.h" > > ... > > > // typedef ns3::ndn::ndnSIM::random_policy_traits policy; > typedef ns3::ndn::ndnSIM::fifo_policy_traits policy; > > typedef ns3::ndn::cs::ContentStoreImpl CS; > typedef CS::super::policy_container Policy; > > Ptr cs = DynamicCast > (NodeList::GetNode(1)->GetObject ()); > if (!cs) > { > std::cerr << "Please select the right CS policy" << std::endl; > exit (1); > } > > for (Policy::iterator it = cs->GetPolicy().begin (); > it != cs->GetPolicy().end(); > it++) > { > std::cout << it->payload()->GetName() << std::endl; > } > > --- > Alex > > On Nov 17, 2013, at 3:37 AM, Wassim Drira > wrote: > > Hi all, > > I am using ContentStore to store some msgs in reception order. I am using > the fifo variant. The issue is when printing the content of the cache, it > looks not ordered as you can see below (sequence number in the end of the > name). > > Do you have an idea about the cause and may be a solution to this issue... > > *%%%%%%%% ----- Code ----- %%%%%%%* > ObjectFactory m_contentStoreFactory; > m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo"); > m_contentStoreFactory.Set("MaxSize", StringValue ("50")); > m_pubCS = m_contentStoreFactory.Create (); > ...... > Ptr entry = m_pubCS->Begin(); > while(entry){ > NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName()); > entry = m_pubCS->Next(entry); > } > *%%%%%%%% ----- OutPut ----- %%%%%%%* > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10 > 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F > > > Best regards > _______________________________________________ > 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 drirawassim+ndnsim at gmail.com Sun Nov 17 21:55:59 2013 From: drirawassim+ndnsim at gmail.com (Wassim Drira) Date: Mon, 18 Nov 2013 08:55:59 +0300 Subject: [ndnSIM] [2] ContentStore order In-Reply-To: References: <60883F14-AF70-43F1-B644-FC27A43B9697@ucla.edu> Message-ID: I resolved the issue by changing protected to public in : template class ContentStoreImpl : public ContentStore, protected ndnSIM::trie_with_policy< Name, Regards, On Mon, Nov 18, 2013 at 5:48 AM, Wassim Drira wrote: > Hi Alex, > > Thanks Alex! > This resolves partially the issue, when I use cs->Print(std::cout); the > entries are correctly printed but when I use for (Policy::iterator it = > cs->GetPolicy().begin (); ... it gives me a build error. > > *%%%%%%%% ----- Build Error ----- %%%%%%%* > ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h: In member > function ?virtual void ns3::ndn::ANode::OnMsg(ns3::Ptr ns3::ndn::Data>)?: > ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: > ?ns3::ndn::ndnSIM::trie_with_policy PolicyTraits>::policy_container& > ns3::ndn::ndnSIM::trie_with_policy PolicyTraits>::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = > ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, PolicyTraits = > ns3::ndn::ndnSIM::fifo_policy_traits, > ns3::ndn::ndnSIM::trie_with_policy PolicyTraits>::policy_container = > ns3::ndn::ndnSIM::fifo_policy_traits::policy ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, > ns3::ndn::ndnSIM::trie ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, > boost::intrusive::member_hook ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, > &ns3::ndn::ndnSIM::trie ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> > >::type]? is inaccessible > ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: within this context > ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: > ?ns3::ndn::ndnSIM::trie_with_policy ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an > accessible base of > ?ns3::ndn::cs::ContentStoreImpl? > ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: > ?ns3::ndn::ndnSIM::trie_with_policy PolicyTraits>::policy_container& > ns3::ndn::ndnSIM::trie_with_policy PolicyTraits>::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = > ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, PolicyTraits = > ns3::ndn::ndnSIM::fifo_policy_traits, > ns3::ndn::ndnSIM::trie_with_policy PolicyTraits>::policy_container = > ns3::ndn::ndnSIM::fifo_policy_traits::policy ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, > ns3::ndn::ndnSIM::trie ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, > boost::intrusive::member_hook ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, > &ns3::ndn::ndnSIM::trie ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, > ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> > >::type]? is inaccessible > ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: within this context > ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: > ?ns3::ndn::ndnSIM::trie_with_policy ns3::ndn::ndnSIM::smart_pointer_payload_traits > >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an > accessible base of > ?ns3::ndn::cs::ContentStoreImpl? > > Regards, > > > On Sun, Nov 17, 2013 at 10:58 PM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > >> Hi Wassim, >> >> Cache is organized as a hash-based container, so it is expected that >> entries are not in any particular order. To get access to policy-based >> ordering (FIFO in your case), you would need a little bit more complex >> code. Here is a basic example: >> >> #include "ns3/ndnSIM/model/cs/content-store-impl.h" >> #include "ns3/ndnSIM/utils/trie/fifo-policy.h" >> #include "ns3/ndnSIM/utils/trie/random-policy.h" >> >> ... >> >> >> // typedef ns3::ndn::ndnSIM::random_policy_traits policy; >> typedef ns3::ndn::ndnSIM::fifo_policy_traits policy; >> >> typedef ns3::ndn::cs::ContentStoreImpl CS; >> typedef CS::super::policy_container Policy; >> >> Ptr cs = DynamicCast >> (NodeList::GetNode(1)->GetObject ()); >> if (!cs) >> { >> std::cerr << "Please select the right CS policy" << std::endl; >> exit (1); >> } >> >> for (Policy::iterator it = cs->GetPolicy().begin (); >> it != cs->GetPolicy().end(); >> it++) >> { >> std::cout << it->payload()->GetName() << std::endl; >> } >> >> --- >> Alex >> >> On Nov 17, 2013, at 3:37 AM, Wassim Drira >> wrote: >> >> Hi all, >> >> I am using ContentStore to store some msgs in reception order. I am >> using the fifo variant. The issue is when printing the content of the >> cache, it looks not ordered as you can see below (sequence number in the >> end of the name). >> >> Do you have an idea about the cause and may be a solution to this issue... >> >> *%%%%%%%% ----- Code ----- %%%%%%%* >> ObjectFactory m_contentStoreFactory; >> m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo"); >> m_contentStoreFactory.Set("MaxSize", StringValue ("50")); >> m_pubCS = m_contentStoreFactory.Create (); >> ...... >> Ptr entry = m_pubCS->Begin(); >> while(entry){ >> NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName()); >> entry = m_pubCS->Next(entry); >> } >> *%%%%%%%% ----- OutPut ----- %%%%%%%* >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F >> >> >> Best regards >> _______________________________________________ >> 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 i.liyanage at surrey.ac.uk Mon Nov 18 05:00:05 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Mon, 18 Nov 2013 13:00:05 +0000 Subject: [ndnSIM] Compiling Message-ID: Hi, If I make a change to a ndnSim source file, do I have to run waf configure and then waf to compile all the files like did in the beginning or is there an easy way. Many thanks, Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Nov 18 10:15:35 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 18 Nov 2013 10:15:35 -0800 Subject: [ndnSIM] [2] ContentStore order In-Reply-To: References: <60883F14-AF70-43F1-B644-FC27A43B9697@ucla.edu> Message-ID: <0E6CEE48-9368-4B7B-A19A-8D639E1EF744@ucla.edu> Oh... I forgot to mention to update the ndnSIM codebase. I have added GetPolicy() method to ContentStoreImpl class. Making it public also solves the problem, but I have intentionally made the qualifier protected, so to ensure that access to the data is only through ContentStore interface. --- Alex On Nov 17, 2013, at 9:55 PM, Wassim Drira wrote: > I resolved the issue by changing protected to public in : > > template > class ContentStoreImpl : public ContentStore, > protected ndnSIM::trie_with_policy< Name, > > > Regards, > > > On Mon, Nov 18, 2013 at 5:48 AM, Wassim Drira wrote: > Hi Alex, > > Thanks Alex! > This resolves partially the issue, when I use cs->Print(std::cout); the entries are correctly printed but when I use for (Policy::iterator it = cs->GetPolicy().begin (); ... it gives me a build error. > > %%%%%%%% ----- Build Error ----- %%%%%%% > ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h: In member function ?virtual void ns3::ndn::ANode::OnMsg(ns3::Ptr)?: > ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: ?ns3::ndn::ndnSIM::trie_with_policy::policy_container& ns3::ndn::ndnSIM::trie_with_policy::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits >, ns3::ndn::cs::Entry>, PolicyTraits = ns3::ndn::ndnSIM::fifo_policy_traits, ns3::ndn::ndnSIM::trie_with_policy::policy_container = ns3::ndn::ndnSIM::fifo_policy_traits::policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, boost::intrusive::member_hook >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, &ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >::type]? is inaccessible > ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: within this context > ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: ?ns3::ndn::ndnSIM::trie_with_policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an accessible base of ?ns3::ndn::cs::ContentStoreImpl? > ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: ?ns3::ndn::ndnSIM::trie_with_policy::policy_container& ns3::ndn::ndnSIM::trie_with_policy::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits >, ns3::ndn::cs::Entry>, PolicyTraits = ns3::ndn::ndnSIM::fifo_policy_traits, ns3::ndn::ndnSIM::trie_with_policy::policy_container = ns3::ndn::ndnSIM::fifo_policy_traits::policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, boost::intrusive::member_hook >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, &ns3::ndn::ndnSIM::trie >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >::type]? is inaccessible > ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: within this context > ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: ?ns3::ndn::ndnSIM::trie_with_policy >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an accessible base of ?ns3::ndn::cs::ContentStoreImpl? > > Regards, > > > On Sun, Nov 17, 2013 at 10:58 PM, Alex Afanasyev wrote: > Hi Wassim, > > Cache is organized as a hash-based container, so it is expected that entries are not in any particular order. To get access to policy-based ordering (FIFO in your case), you would need a little bit more complex code. Here is a basic example: > > #include "ns3/ndnSIM/model/cs/content-store-impl.h" > #include "ns3/ndnSIM/utils/trie/fifo-policy.h" > #include "ns3/ndnSIM/utils/trie/random-policy.h" > > ... > > > // typedef ns3::ndn::ndnSIM::random_policy_traits policy; > typedef ns3::ndn::ndnSIM::fifo_policy_traits policy; > > typedef ns3::ndn::cs::ContentStoreImpl CS; > typedef CS::super::policy_container Policy; > > Ptr cs = DynamicCast (NodeList::GetNode(1)->GetObject ()); > if (!cs) > { > std::cerr << "Please select the right CS policy" << std::endl; > exit (1); > } > > for (Policy::iterator it = cs->GetPolicy().begin (); > it != cs->GetPolicy().end(); > it++) > { > std::cout << it->payload()->GetName() << std::endl; > } > > --- > Alex > > On Nov 17, 2013, at 3:37 AM, Wassim Drira wrote: > >> Hi all, >> >> I am using ContentStore to store some msgs in reception order. I am using the fifo variant. The issue is when printing the content of the cache, it looks not ordered as you can see below (sequence number in the end of the name). >> >> Do you have an idea about the cause and may be a solution to this issue... >> >> %%%%%%%% ----- Code ----- %%%%%%% >> ObjectFactory m_contentStoreFactory; >> m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo"); >> m_contentStoreFactory.Set("MaxSize", StringValue ("50")); >> m_pubCS = m_contentStoreFactory.Create (); >> ...... >> Ptr entry = m_pubCS->Begin(); >> while(entry){ >> NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName()); >> entry = m_pubCS->Next(entry); >> } >> %%%%%%%% ----- OutPut ----- %%%%%%% >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10 >> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F >> >> >> Best regards >> _______________________________________________ >> 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 Nov 18 10:19:04 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 18 Nov 2013 10:19:04 -0800 Subject: [ndnSIM] Compiling In-Reply-To: References: Message-ID: <64ED33A7-7486-4275-BC37-D80712A0C522@ucla.edu> Hi Isuru, If you modified just source code, then you can simply compile without going through configure process (e.g., just `./waf' and `./waf install' if you need to install it). Configure step is only needed in the beginning, if you have changed something in build scripts, or if you moved your source code base to a new location. --- Alex On Nov 18, 2013, at 5:00 AM, i.liyanage at surrey.ac.uk wrote: > Hi, > > If I make a change to a ndnSim source file, do I have to run waf configure and then waf to compile all the files like did in the beginning or is there an easy way. > > Many thanks, > Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Nov 18 10:38:43 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 18 Nov 2013 10:38:43 -0800 Subject: [ndnSIM] A question about printing out PIT contents In-Reply-To: <5289404E.3000302@ac.upc.edu> References: <11688b9.27c9d.14157edd0a3.Coremail.liuzongzhen@cstnet.cn> <601D9137-A03E-4E69-BCB3-6D09083EA9EC@ucla.edu> <5245709F.6090409@ac.upc.edu> <51DB16DD-718A-470A-AC03-FF2DE85E6B34@ucla.edu> <5288E625.4070202@ac.upc.edu> <5E8E9877-B35A-4A78-B2F6-8B418495A057@ucla.edu> <5289404E.3000302@ac.upc.edu> Message-ID: <75ECC6FB-B852-4624-9B1C-5B5BAB349E66@ucla.edu> Hi Amin, First thing (SRtt) is "average" value of RTT and the other (RttVar) is variance of RTT measurements. The implementation is similar to TCP RTT measurements. Since it was not really used anywhere, the value of RTT was updated only when PIT entry is satisfied. And you're absolutely right saying that when PIT entry is timed out, there should be some action. I'm not sure about infinity, but it should somehow impact the measurement, but we need to find out what is the best way. I'm not quite sure what do you mean by "changed to string variable to be printable". You can directly print out either RTT variation or smoothed RTT on std::cout. You can do it as simple as: std::cout << fibEntry->GetRttVar() << std::endl; or a little bit more complicated std::cout << fibEntry->GetRttVar().ToDouble(Time::S) << std::endl; --- Alex On Nov 17, 2013, at 2:16 PM, Amin Karami wrote: > Hi Alex, > What is the different between implementation of these two outputs: 'GetSRtt' (Get current estimate for smoothed RTT value) and 'GetRttVar' (Get current estimate for the RTT variation)? For those PIT entries which are reached to their timeout, what is the output? infinity? > > I also faced with an error in printing "metric->GetRttVar". I changed it to string variable to be printable in std::cout. But gives me error in the type of "metric->GetRttVar" and cannot change it to string value to be printable. What it is the solution? > > > /Amin > > > On 11/17/2013 09:05 ?.?, Alex Afanasyev wrote: >> Hi Amin, >> >> Are you trying to print out PIT of FIB contents? If PIT, then you first need to decide what kind of face information you want to print out. There are three different things that you can access: >> >> 1. Incoming faces >> 2. Outgoing faces >> 3. Faces that are associated with the FIB entry >> >> Your code looks like you want to print out faces that are associated FIB entry. For this, you need to do a small modification: add GetFibEntry() call on the PIT entry: >> >> for (FaceMetricContainer::type::index::type::iterator metric = entry->GetFibEntry()->m_faces.get ().begin(); >> metric != entry->GetFibEntry()->m_faces.get ().end(); metric++) >> { >> os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; >> } >> >> --- >> Alex >> >> On Nov 17, 2013, at 7:52 AM, Amin Karami wrote: >> >>> Hi Alex, >>> I wrote a function as follows based on your guidance to print out PIT contents: >>> #include "ns3/core-module.h" >>> #include "ns3/network-module.h" >>> #include "ns3/point-to-point-module.h" >>> #include "ns3/ndnSIM-module.h" >>> #include "ns3/ndn-fib-entry.h" >>> #include "ns3/ndn-fib.h" >>> >>> using namespace ns3; >>> using namespace ndn; >>> using namespace fib; >>> >>> void PeriodicStatsPrinter (Ptr node, Time next) >>> { >>> >>> Ptr pit = node->GetObject (); >>> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >>> { >>> std::cout << "=========" << std::endl; >>> std::cout << entry->GetPrefix () << std::endl; >>> >>> for (FaceMetricContainer::type::index::type::iterator metric = entry->m_faces.get ().begin(); >>> metric != entry->m_faces.get ().end(); metric++) >>> { >>> os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; >>> } >>> >>> // Print Prefix name, In Interface, Out Interface, Nonces >>> //std::cout << *entry << std::endl; >>> } >>> Simulator::Schedule (next, PeriodicStatsPrinter, node, next); >>> } >>> >>> When I ran the scenario, I faced with an error: >>> ../scratch/PIT/PITInfo.cc: In function ?void PeriodicStatsPrinter(ns3::Ptr, ns3::Time)?: >>> ../scratch/PIT/PITInfo.cc:38:82: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? >>> ../scratch/PIT/PITInfo.cc:38:99: error: expected primary-expression before ?>? token >>> ../scratch/PIT/PITInfo.cc:38:102: error: expected primary-expression before ?)? token >>> ../scratch/PIT/PITInfo.cc:39:27: error: ?class ns3::ndn::pit::Entry? has no member named ?m_faces? >>> ../scratch/PIT/PITInfo.cc:39:44: error: expected primary-expression before ?>? token >>> ../scratch/PIT/PITInfo.cc:39:47: error: expected primary-expression before ?)? token >>> >>> >>> But, i call "ndn-fib-entry.h" and "ndn-fib.h" to declare the variables. Where is the problem? >>> >>> >>> /Amin >>> >>> >>> On 09/28/2013 03:43 ?.?, Alex Afanasyev wrote: >>>> Hi Amin, >>>> >>>> Since this information belongs to each individual face (FaceMetric instance) inside FIB entry, you need to access individual items like this: >>>> >>>> Ptr pit = node->GetObject (); >>>> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >>>> { >>>> std::cout << "=========" << std::endl; >>>> std::cout << entry->GetPrefix () << std::endl; >>>> >>>> for (FaceMetricContainer::type::index::type::iterator metric = >>>> entry->m_faces.get ().begin (); >>>> metric != entry->m_faces.get ().end (); >>>> metric++) >>>> { >>>> os << metric->GetSRtt () << ", " << metric->GetRttVar << "\t"; >>>> } >>>> } >>>> >>>> --- >>>> Alex >>>> >>>> On Sep 27, 2013, at 4:48 AM, Amin Karami wrote: >>>> >>>>> Hi Alex, >>>>> If we want to print some extra information such as, RTT (or incoming time of Interest into PIT and the response time) for each entry, what we should do? >>>>> Thanks a lot. >>>>> >>>>> I looking forward to your response. >>>>> >>>>> Best Regards, >>>>> Amin >>>>> >>>>> >>>>> On 09/26/2013 06:25 ?.?, Alex Afanasyev wrote: >>>>>> Hi Liu, >>>>>> >>>>>> You can do something like this: >>>>>> >>>>>> input: Ptr node; >>>>>> >>>>>> Ptr pit = node->GetObject (); >>>>>> for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) >>>>>> { >>>>>> std::cout << *entry << std::endl; >>>>>> } >>>>>> >>>>>> This will print out content of each PIT entry in the default format. If you want some customizations, you can either directly access elements of PIT entry, or modify Print method of Pit implementation. >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Sep 25, 2013, at 6:41 PM, ??? wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> >>>>>>> I want to print out PIT contents, such as the incoming and outgoing interface. But I don?t know which function to use. Any suggestion?Thanks a lot! >>>>>>> >>>>>>> Looking forward to your response. >>>>>>> >>>>>>> Liu Zongzhen >>>>>> _______________________________________________ >>>>>> 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 Nov 18 10:48:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 18 Nov 2013 10:48:10 -0800 Subject: [ndnSIM] segmentation In-Reply-To: References: <88FAA69C-4DF9-4A4D-99D8-DD6BA98D6D23@ucla.edu> Message-ID: <04A3ADD9-05F1-4AA8-AA17-E016AE13D242@ucla.edu> Hi Masri, If I understand correctly, you want to do some kind of "prefetching"/Data "pre-publishing". What you can do is to enable unrestrictive caching from local applications using CacheUnsolicitedDataFromApps attribute. Config::SetDefault("ns3::ndn::ForwardingStrategy::CacheUnsolicitedDataFromApps", BooleanValue(true)); After that, you can simply "publish" any number of data packets into local node's cache as a response to the incoming Interests; and any further Interests for the published Data will be answered directly from the cache. Would that work for you? --- Alex On Nov 17, 2013, at 4:45 PM, nor masri sahri wrote: > hi alex, thank you for the clarification. > need idea from sifu Alex ;) > 1. i plan to break packets into segment. > default size of payload is 1024 and i plan to break into 4 packets BUT named in one segment. For example, /prefix 0 to /prefix 4 is named under Segment 1. When Consumer send FIRST Interest , it will fetch the segment name (in this case Segment 1, and Producer will reply packet /prefix 0 to /prefix 4, 256 bytes each). And the following Interest will fetch Segment 2 and so on. > Can you give some advice on how to do this, your help is really appreciated. > > > > On Fri, Nov 15, 2013 at 1:41 AM, Alex Afanasyev wrote: > Hi Masri, > > You're seeing the correct behavior. The consumer application explicitly requests (as it is done in majority cases in NDN) specific Data packets, which can be interpreted as a part of a large content. > > Another small comment. None of the implemented consumer applications in ndnSIM wait for the arrival of Data before sending another Interest. Instead, the number of sent interest is controlled either by rate (ConsumerCbr) or "outstanding Interest window" (ConsumerWindow). > > --- > Alex > > On Nov 12, 2013, at 9:54 PM, nor masri sahri wrote: > >> hi alex and all, >> correct me if i am wrong about my interpretation. >> from the example file (ndn-simple.cc), i just did simple rule to set maximum number of prefix to be requested (i set to max = 200) to see how it works.(assuming the size of /prefix name file is consist of 200 segment) >> >> 1. consumer send interest for data name /prefix >> 2. Producer will reply /prefix 0 (part or chunk or segment of /prefix named file) >> 3. when consumer receive /prefix 0, consumer will send another interest for the same file name (/prefix) >> 4. producer will reply /prefix 1 since that is the sequence number for the complete named data of /prefix >> >> im quite confused when i see the ns log file >> >> 0s 0 ndn.Consumer:SendPacket() >> 0s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0 >> 0s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items >> 0.020496s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0db70) >> 0.020496s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with Data: /prefix/%00 >> 0.057472s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0d260) >> 0.057472s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 0 >> 0.1s 0 ndn.Consumer:SendPacket() >> 0.1s 0 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1 >> 0.1s 0 ndn.Consumer:WillSendOutInterest(): [DEBUG] Trying to add 1 with +100000000.0ns. already 0 items >> 0.120512s 2 ndn.Producer:OnInterest(0x8c01308, 0x8c0f7f0) >> 0.120512s 2 ndn.Producer:OnInterest(): [INFO ] node(2) respodning with Data: /prefix/%00%01 >> 0.157504s 0 ndn.Consumer:OnData(0x8c00d38, 0x8c0f5b0) >> 0.157504s 0 ndn.Consumer:OnData(): [INFO ] < DATA for 1 >> >> Is Consumer request specifically for /prefix 0 at the first time and when he get the data, the consumer send another interest for next data which is /prefix 1? >> >> In this scenario, it is presumed that the size of /prefix is max 200 segment. >> >> >> Sorry about my question, little confused. >> >> I am planning to do research on window on NDNsim. Need advice. Many thanks >> >> >> >> -- >> Regards, >> >> masri.sahri >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > > -- > Regards, > > masri.sahri > > _______________________________________________ > 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 drirawassim+ndnsim at gmail.com Mon Nov 18 11:35:10 2013 From: drirawassim+ndnsim at gmail.com (Wassim Drira) Date: Mon, 18 Nov 2013 22:35:10 +0300 Subject: [ndnSIM] [2] ContentStore order In-Reply-To: <0E6CEE48-9368-4B7B-A19A-8D639E1EF744@ucla.edu> References: <60883F14-AF70-43F1-B644-FC27A43B9697@ucla.edu> <0E6CEE48-9368-4B7B-A19A-8D639E1EF744@ucla.edu> Message-ID: Thanks! this is better, I will add getPolicy( )to ContentStoreImpl class. Regards, On Mon, Nov 18, 2013 at 9:15 PM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Oh... I forgot to mention to update the ndnSIM codebase. I have added > GetPolicy() method to ContentStoreImpl class. > > Making it public also solves the problem, but I have intentionally made > the qualifier protected, so to ensure that access to the data is only > through ContentStore interface. > > --- > Alex > > > > On Nov 17, 2013, at 9:55 PM, Wassim Drira > wrote: > > I resolved the issue by changing protected to public in : > > template > class ContentStoreImpl : public ContentStore, > protected ndnSIM::trie_with_policy< Name, > > > Regards, > > > On Mon, Nov 18, 2013 at 5:48 AM, Wassim Drira < > drirawassim+ndnsim at gmail.com> wrote: > >> Hi Alex, >> >> Thanks Alex! >> This resolves partially the issue, when I use cs->Print(std::cout); the >> entries are correctly printed but when I use for (Policy::iterator it = >> cs->GetPolicy().begin (); ... it gives me a build error. >> >> *%%%%%%%% ----- Build Error ----- %%%%%%%* >> ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h: In member >> function ?virtual void ns3::ndn::ANode::OnMsg(ns3::Ptr> ns3::ndn::Data>)?: >> ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: >> ?ns3::ndn::ndnSIM::trie_with_policy> PolicyTraits>::policy_container& >> ns3::ndn::ndnSIM::trie_with_policy> PolicyTraits>::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = >> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, PolicyTraits = >> ns3::ndn::ndnSIM::fifo_policy_traits, >> ns3::ndn::ndnSIM::trie_with_policy> PolicyTraits>::policy_container = >> ns3::ndn::ndnSIM::fifo_policy_traits::policy> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, >> ns3::ndn::ndnSIM::trie> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, >> boost::intrusive::member_hook> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, >> &ns3::ndn::ndnSIM::trie> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >> >::type]? is inaccessible >> ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: within this context >> ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: >> ?ns3::ndn::ndnSIM::trie_with_policy> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an >> accessible base of >> ?ns3::ndn::cs::ContentStoreImpl? >> ./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: >> ?ns3::ndn::ndnSIM::trie_with_policy> PolicyTraits>::policy_container& >> ns3::ndn::ndnSIM::trie_with_policy> PolicyTraits>::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = >> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, PolicyTraits = >> ns3::ndn::ndnSIM::fifo_policy_traits, >> ns3::ndn::ndnSIM::trie_with_policy> PolicyTraits>::policy_container = >> ns3::ndn::ndnSIM::fifo_policy_traits::policy> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, >> ns3::ndn::ndnSIM::trie> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, >> boost::intrusive::member_hook> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, >> &ns3::ndn::ndnSIM::trie> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, >> ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >> >::type]? is inaccessible >> ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: within this context >> ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: >> ?ns3::ndn::ndnSIM::trie_with_policy> ns3::ndn::ndnSIM::smart_pointer_payload_traits >> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>? is not an >> accessible base of >> ?ns3::ndn::cs::ContentStoreImpl? >> >> Regards, >> >> >> On Sun, Nov 17, 2013 at 10:58 PM, Alex Afanasyev < >> alexander.afanasyev at ucla.edu> wrote: >> >>> Hi Wassim, >>> >>> Cache is organized as a hash-based container, so it is expected that >>> entries are not in any particular order. To get access to policy-based >>> ordering (FIFO in your case), you would need a little bit more complex >>> code. Here is a basic example: >>> >>> #include "ns3/ndnSIM/model/cs/content-store-impl.h" >>> #include "ns3/ndnSIM/utils/trie/fifo-policy.h" >>> #include "ns3/ndnSIM/utils/trie/random-policy.h" >>> >>> ... >>> >>> >>> // typedef ns3::ndn::ndnSIM::random_policy_traits policy; >>> typedef ns3::ndn::ndnSIM::fifo_policy_traits policy; >>> >>> typedef ns3::ndn::cs::ContentStoreImpl CS; >>> typedef CS::super::policy_container Policy; >>> >>> Ptr cs = DynamicCast >>> (NodeList::GetNode(1)->GetObject ()); >>> if (!cs) >>> { >>> std::cerr << "Please select the right CS policy" << std::endl; >>> exit (1); >>> } >>> >>> for (Policy::iterator it = cs->GetPolicy().begin (); >>> it != cs->GetPolicy().end(); >>> it++) >>> { >>> std::cout << it->payload()->GetName() << std::endl; >>> } >>> >>> --- >>> Alex >>> >>> On Nov 17, 2013, at 3:37 AM, Wassim Drira >>> wrote: >>> >>> Hi all, >>> >>> I am using ContentStore to store some msgs in reception order. I am >>> using the fifo variant. The issue is when printing the content of the >>> cache, it looks not ordered as you can see below (sequence number in the >>> end of the name). >>> >>> Do you have an idea about the cause and may be a solution to this >>> issue... >>> >>> *%%%%%%%% ----- Code ----- %%%%%%%* >>> ObjectFactory m_contentStoreFactory; >>> m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo"); >>> m_contentStoreFactory.Set("MaxSize", StringValue ("50")); >>> m_pubCS = m_contentStoreFactory.Create (); >>> ...... >>> Ptr entry = m_pubCS->Begin(); >>> while(entry){ >>> NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName()); >>> entry = m_pubCS->Next(entry); >>> } >>> *%%%%%%%% ----- OutPut ----- %%%%%%%* >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10 >>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F >>> >>> >>> Best regards >>> _______________________________________________ >>> 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 marica.amadeo at gmail.com Tue Nov 19 02:19:04 2013 From: marica.amadeo at gmail.com (Marica Amadeo) Date: Tue, 19 Nov 2013 11:19:04 +0100 Subject: [ndnSIM] about interest lifetime Message-ID: Dear Alex and all, I have been working with the ndnSIM simulator for a few months. My topic is about wireless scenarios. I'm developing a NDN ad hoc network that uses the LIsten First Broadcast Later Protocol or a simple Controlled Flooding scheme, while consumers employ an extended version of the Consumer Window Application. Working in this field, I recently noticed a suspect behavior when I tried to set the Interest Lifetime to a value minor than 1s. Consider, for instance, that I want an Interest Lifetime equal to 0.1s. So the lifetime of the correspondent PIT entry in every forwarding node should be set to 0.1s. However, first, I noticed that the lifetime of every PIT entry was set to the default value. Then, by looking at the code, I noticed that the Serialize function in ndnsim.cc assumes: start.WriteU16 (static_cast (m_interest->GetInterestLifetime ().ToInteger (Time::S))); As a consequence, the value 0.1s is approximated to zero (A thing that I really do not want). And, as a further consequence, the PIT entry lifetime is set to the default value, (because it cannot be zero). I'm looking for the best solution to support Interest Lifetimes with duration <1s, without complicating the system. Thanks in advance. Marica. -- Eng. Marica Amadeo University "Mediterranea" of Reggio Calabria DIIES Department, ARTS Lab Via Graziella Feo di Vito I - 89100 Reggio Calabria (RC), Italy ------------------------------ Email: marica.amadeo at gmail.com, marica.amadeo at unirc.it -------------- next part -------------- An HTML attachment was scrubbed... URL: From i.liyanage at surrey.ac.uk Tue Nov 19 06:46:48 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Tue, 19 Nov 2013 14:46:48 +0000 Subject: [ndnSIM] Content Store data manipulation In-Reply-To: <247254B5-2F60-4EF7-9FD8-C2B2A0DA96D5@ucla.edu> References: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com>, <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> <12b1b625738747ba830737e1a795bf11@DB4PR06MB224.eurprd06.prod.outlook.com>, <34A0B1AF-F69D-4E67-94C9-1E10B629D51C@ucla.edu> <36cb81ae14b64cff82bca3666e96db2e@DB4PR06MB224.eurprd06.prod.outlook.com>, <247254B5-2F60-4EF7-9FD8-C2B2A0DA96D5@ucla.edu> Message-ID: <8a422afaf19249b898f38f70304b88eb@DB4PR06MB224.eurprd06.prod.outlook.com> Hi Alex, Is it possible to get the node number, within the model/fw/ndn-forwarding-strategy.cc code. many thanks, Isuru. ________________________________ From: Alexander Afanasyev on behalf of Alex Afanasyev Sent: 17 November 2013 20:19 To: Liyanage IU Mr (PG/R - Electronic Eng) Cc: ndnsim Subject: Re: [ndnSIM] Content Store data manipulation Hi Isuru, The ContentStore::Add method is called (and which results in calling of the selected ContentStoreImpl::Add method) from ndn::ForwardingStrategy (model/fw/ndn-forwarding-strategy.cc line 239 and 255). Further, ContentStoreImpl::Add calls insert method on the underlying policy-based controller, which results in calling policy-specific 'insert' method. For example, if selected policy is Lru, then `insert' method defined in utils/trie/lru-policy.h line 77-87. --- Alex On Nov 17, 2013, at 10:57 AM, > > wrote: Hi Alex, I looked at the both implementations and still not sure how to handle the entries in CS. for an example when data is received by a node what method inserts the data to CS?? Assuming the method ContentStoreImpl::Add (Ptr data) is executed, from where does this method is called many thanks, Isuru ________________________________ From: Alexander Afanasyev > on behalf of Alex Afanasyev > Sent: 14 November 2013 22:21 To: Liyanage IU Mr (PG/R - Electronic Eng) Cc: ndnsim at lists.cs.ucla.edu Subject: Re: [ndnSIM] Content Store data manipulation Hi Isuru, utils/ folder contain general-use policies and model/cs/ folder contain policy that can be used only with ContentStore. I would recommend to start with general-use and just peek at ContentStore-specific policy to see how to access information from cached entry. --- Alex On Nov 14, 2013, at 9:36 AM, > > wrote: Hi Alex, To write a policy which file should I refer to. I noticed the ContentStore implementation in */model/ cs folder and policy file in */utils/ trie folder. Could you suggest me good way to start to create a new policy. Many thanks, Isuru ________________________________ From: Alexander Afanasyev > on behalf of Alex Afanasyev > Sent: 14 November 2013 16:07 To: Liyanage IU Mr (PG/R - Electronic Eng) Cc: ndnsim at lists.cs.ucla.edu Subject: Re: [ndnSIM] Content Store data manipulation Hi Isuru, Since ContentStore is property of the forwarding daemon, there is no application interface to directly manage (add/remove) entries. You can have full control over the cache content if you write a so-called policy, but this will not be application. --- Alex On Nov 14, 2013, at 3:25 AM, i.liyanage at surrey.ac.uk wrote: Hi, Is it possible to add/remove Content Store entries using a application on a node. If it is what methods should I use. many thanks, Isuru _______________________________________________ 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 Thu Nov 21 19:44:37 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 21 Nov 2013 19:44:37 -0800 Subject: [ndnSIM] understanding payload size paramaters In-Reply-To: References: Message-ID: Hi Yowaraj On Nov 21, 2013, at 7:17 PM, Yowaraj Chhetri wrote: > Dear Sir, > > Would you rectify my underlined doubts please. I am a new to ndnSim. > > 1) producerHelper.SetAttribute ("PayloadSize", StringValue("1024")); > what does payload size 1024 mean? 1024 bits or 1024 bytes, etc ? It is 1024 bytes. > 2)ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "100"); > what does Maxsize 100 mean? 100 entries of payload size 1024 ? or 100 bits, 100 bytes, etc? This one is 100 entries (the location of the MaxSize parameter is "slightly" hidden, but it is here: http://ndnsim.net/doxygen/classns3_1_1ndn_1_1cs_1_1_lru.html). > I want to set a routers cache size to 10GB, what should be my CS_Maxsize be, if the payload size is 10MB? Should be 1000. --- Alex > > Thank you very much. > > With kind regards, > > Yowaraj Chhetri > Kyushu Univeristy, > Fukuoka: Japan -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Nov 21 19:46:31 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 21 Nov 2013 19:46:31 -0800 Subject: [ndnSIM] Content Store data manipulation In-Reply-To: <8a422afaf19249b898f38f70304b88eb@DB4PR06MB224.eurprd06.prod.outlook.com> References: <8601fa925cdf4ab69fca8f0d38e7edab@DB4PR06MB224.eurprd06.prod.outlook.com>, <9D5A5B92-EE20-4658-8341-46AF4A6E9314@ucla.edu> <12b1b625738747ba830737e1a795bf11@DB4PR06MB224.eurprd06.prod.outlook.com>, <34A0B1AF-F69D-4E67-94C9-1E10B629D51C@ucla.edu> <36cb81ae14b64cff82bca3666e96db2e@DB4PR06MB224.eurprd06.prod.outlook.com>, <247254B5-2F60-4EF7-9FD8-C2B2A0DA96D5@ucla.edu> <8a422afaf19249b898f38f70304b88eb@DB4PR06MB224.eurprd06.prod.outlook.com> Message-ID: Hi Isuru, If you want to get hold of the node on which the strategy running, then you can do the following in any of the ndn::ForwardingStrategy methods: Ptr node = this->GetObject(); After that you can node->GetId() to get node id. --- Alex On Nov 19, 2013, at 6:46 AM, i.liyanage at surrey.ac.uk wrote: > Hi Alex, > > Is it possible to get the node number, within the model/fw/ndn-forwarding-strategy.cc code. > > many thanks, > Isuru. > From: Alexander Afanasyev on behalf of Alex Afanasyev > Sent: 17 November 2013 20:19 > To: Liyanage IU Mr (PG/R - Electronic Eng) > Cc: ndnsim > Subject: Re: [ndnSIM] Content Store data manipulation > > Hi Isuru, > > The ContentStore::Add method is called (and which results in calling of the selected ContentStoreImpl::Add method) from ndn::ForwardingStrategy (model/fw/ndn-forwarding-strategy.ccline 239 and 255). > > Further, ContentStoreImpl::Add calls insert method on the underlying policy-based controller, which results in calling policy-specific 'insert' method. For example, if selected policy is Lru, then `insert' method defined in utils/trie/lru-policy.h line 77-87. > > --- > Alex > > On Nov 17, 2013, at 10:57 AM, wrote: > >> Hi Alex, >> >> I looked at the both implementations and still not sure how to handle the entries in CS. >> >> for an example when data is received by a node what method inserts the data to CS?? >> Assuming the method ContentStoreImpl::Add (Ptr data) is executed, >> from where does this method is called >> >> many thanks, >> Isuru >> From: Alexander Afanasyev on behalf of Alex Afanasyev >> Sent: 14 November 2013 22:21 >> To: Liyanage IU Mr (PG/R - Electronic Eng) >> Cc: ndnsim at lists.cs.ucla.edu >> Subject: Re: [ndnSIM] Content Store data manipulation >> >> Hi Isuru, >> >> utils/ folder contain general-use policies and model/cs/ folder contain policy that can be used only with ContentStore. I would recommend to start with general-use and just peek at ContentStore-specific policy to see how to access information from cached entry. >> >> --- >> Alex >> >> On Nov 14, 2013, at 9:36 AM, wrote: >> >>> Hi Alex, >>> >>> To write a policy which file should I refer to. I noticed the ContentStore implementation in */model/ cs folder and policy file in */utils/ trie folder. >>> Could you suggest me good way to start to create a new policy. >>> >>> Many thanks, >>> Isuru >>> >>> From: Alexander Afanasyev on behalf of Alex Afanasyev >>> Sent: 14 November 2013 16:07 >>> To: Liyanage IU Mr (PG/R - Electronic Eng) >>> Cc: ndnsim at lists.cs.ucla.edu >>> Subject: Re: [ndnSIM] Content Store data manipulation >>> >>> Hi Isuru, >>> >>> Since ContentStore is property of the forwarding daemon, there is no application interface to directly manage (add/remove) entries. You can have full control over the cache content if you write a so-called policy, but this will not be application. >>> >>> --- >>> Alex >>> >>> On Nov 14, 2013, at 3:25 AM, i.liyanage at surrey.ac.uk wrote: >>> >>>> Hi, >>>> >>>> Is it possible to add/remove Content Store entries using a application on a node. >>>> If it is what methods should I use. >>>> >>>> many thanks, >>>> Isuru >>>> _______________________________________________ >>>> 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 Thu Nov 21 19:53:24 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 21 Nov 2013 19:53:24 -0800 Subject: [ndnSIM] about interest lifetime In-Reply-To: References: Message-ID: <09223878-456E-4316-B865-EE934D7184EC@ucla.edu> Hi Marcia, First of all, thanks for using ndnSIM :) On Nov 19, 2013, at 2:19 AM, Marica Amadeo wrote: > Dear Alex and all, > I have been working with the ndnSIM simulator for a few months. > My topic is about wireless scenarios. I'm developing a NDN ad hoc network that uses the LIsten First Broadcast Later Protocol or a simple Controlled Flooding scheme, while consumers employ an extended version of the Consumer Window Application. > > Working in this field, I recently noticed a suspect behavior when I tried to set the Interest Lifetime to a value minor than 1s. > Consider, for instance, that I want an Interest Lifetime equal to 0.1s. > So the lifetime of the correspondent PIT entry in every forwarding node should be set to 0.1s. > However, first, I noticed that the lifetime of every PIT entry was set to the default value. > Then, by looking at the code, I noticed that the Serialize function in ndnsim.cc assumes: > > start.WriteU16 (static_cast (m_interest->GetInterestLifetime ().ToInteger (Time::S))); > > As a consequence, the value 0.1s is approximated to zero (A thing that I really do not want). And, as a further consequence, the PIT entry lifetime is set to the default value, (because it cannot be zero). > > I'm looking for the best solution to support Interest Lifetimes with duration <1s, without complicating the system. Thanks for catching this issue. As a quick hack you can replace Time::S to Time:MS (line 134) here and on line 169 replace m_interest->SetInterestLifetime (Seconds (i.ReadU16 ())); with m_interest->SetInterestLifetime (MilliSeconds (i.ReadU16 ())); These two changes should alter the semantics of what is the lifetime. Currently, we are working on implementing a new NDN packet format that uses milliseconds as a time unit. But this will take some time to finalize and then to implement. Btw. I'm really curious of your intention to use such a short interest lifetime? --- Alex > Thanks in advance. > Marica. > > > > -- > Eng. Marica Amadeo > University "Mediterranea" of Reggio Calabria > DIIES Department, ARTS Lab > Via Graziella Feo di Vito I - 89100 Reggio Calabria (RC), Italy > ------------------------------ > > Email: marica.amadeo at gmail.com, marica.amadeo at unirc.it > _______________________________________________ > 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 marica.amadeo at gmail.com Fri Nov 22 02:48:33 2013 From: marica.amadeo at gmail.com (Marica Amadeo) Date: Fri, 22 Nov 2013 11:48:33 +0100 Subject: [ndnSIM] about interest lifetime In-Reply-To: <09223878-456E-4316-B865-EE934D7184EC@ucla.edu> References: <09223878-456E-4316-B865-EE934D7184EC@ucla.edu> Message-ID: Dear Alex, Thanks for your kind answer. By using the milliseconds time unit, my issue is solved. :) Concerning your question about the use of short interest lifetimes, my problem raised from the fact that I'm simulating a IEEE 802.11g multihop wireless network in which consumers and content sources are usually 2-4 hops far away from each other. In this scenario, if the network is not congested, the end-to-end delay is usually very short and, as a consequence, the Interest Retransmission Timeout (RTO) is very short as well. The default value of 2s as Interest Lifetime (as set in the ndn-consumer.cc file) is basically too high in this context. However, the probability that an Interest is not satisfied due to packet collisions or bad channel quality is very very high. And since the Data packet is larger than the Interest packet, the probability of a Data loss is even higher than the Interest packet loss probability. In my scenario, I assumed that the RTO - dynamically computed by the consumer - is included in every Interest packet as Interest Lifetime (I use the sendPacket function of the ndn-consumer.cc file). So, every forwarding (intermediate) node can use the Interest Lifetime value to correctly set the correspondent PIT entry lifetime and rapidly discard an Interest, if it is not satisfied in a reasonable time interval. Thanks again for your help. Marica 2013/11/22 Alex Afanasyev : > Hi Marcia, > > First of all, thanks for using ndnSIM :) > > On Nov 19, 2013, at 2:19 AM, Marica Amadeo wrote: > > Dear Alex and all, > I have been working with the ndnSIM simulator for a few months. > My topic is about wireless scenarios. I'm developing a NDN ad hoc network > that uses the LIsten First Broadcast Later Protocol or a simple Controlled > Flooding scheme, while consumers employ an extended version of the Consumer > Window Application. > > Working in this field, I recently noticed a suspect behavior when I tried to > set the Interest Lifetime to a value minor than 1s. > Consider, for instance, that I want an Interest Lifetime equal to 0.1s. > So the lifetime of the correspondent PIT entry in every forwarding node > should be set to 0.1s. > However, first, I noticed that the lifetime of every PIT entry was set to > the default value. > Then, by looking at the code, I noticed that the Serialize function in > ndnsim.cc assumes: > > start.WriteU16 (static_cast (m_interest->GetInterestLifetime > ().ToInteger (Time::S))); > > As a consequence, the value 0.1s is approximated to zero (A thing that I > really do not want). And, as a further consequence, the PIT entry lifetime > is set to the default value, (because it cannot be zero). > > I'm looking for the best solution to support Interest Lifetimes with > duration <1s, without complicating the system. > > > Thanks for catching this issue. As a quick hack you can replace Time::S to > Time:MS (line 134) here and on line 169 replace > > m_interest->SetInterestLifetime (Seconds (i.ReadU16 ())); > > with > > m_interest->SetInterestLifetime (MilliSeconds (i.ReadU16 ())); > > These two changes should alter the semantics of what is the lifetime. > > > Currently, we are working on implementing a new NDN packet format that uses > milliseconds as a time unit. But this will take some time to finalize and > then to implement. > > Btw. I'm really curious of your intention to use such a short interest > lifetime? > > --- > Alex > > Thanks in advance. > Marica. > > > > -- > Eng. Marica Amadeo > University "Mediterranea" of Reggio Calabria > DIIES Department, ARTS Lab > Via Graziella Feo di Vito I - 89100 Reggio Calabria (RC), Italy > ------------------------------ > > Email: marica.amadeo at gmail.com, marica.amadeo at unirc.it > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > From fab.batta at gmail.com Sun Nov 24 13:42:49 2013 From: fab.batta at gmail.com (fabrizio saponaro) Date: Sun, 24 Nov 2013 22:42:49 +0100 Subject: [ndnSIM] ndnSIM: hijacker doesn't work and empty PIT Message-ID: I'm working on a simple tree topology. I want that one specific node (a router) works like an hijacker, so I tried to set this node to Hijacker but this node works like a normal node and forward everything to the correct destination. Furthermore I can't fill the PITs of every node of the topology, if I try to simulate the application, every PIT is empty, but with the visualizer I can see that every packet pass toward every node. This is my code: // Install CCNx stack on all nodes ndn::StackHelper ccnxHelper; ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute"); ccnxHelper.SetPit ("ns3::ndn::pit::SerializedSize", "MaxSize", "100"); ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1"); // Content Store OFF ccnxHelper.InstallAll (); // Installing global routing interface on all nodes ndn::GlobalRoutingHelper ccnxGlobalRoutingHelper; ccnxGlobalRoutingHelper.InstallAll (); // Getting containers for the consumer/producer Ptr consumer1 = Names::Find ("leaf-1"); Ptr consumer2 = Names::Find ("leaf-2"); Ptr consumer4 = Names::Find ("leaf-4"); Ptr producer = Names::Find ("leaf-3"); Ptr router3 = Names::Find ("rtr-3"); Ptr router2 = Names::Find ("rtr-2"); Ptr router1 = Names::Find ("rtr-1"); //consumerswindow ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerWindow"); consumerHelper.SetAttribute ("Window", UintegerValue (100)); consumerHelper.SetAttribute ("Size", StringValue("0.1")); consumerHelper.SetPrefix ("/rtr-3/leaf-3"); consumerHelper.Install (consumer1); consumerHelper.SetPrefix ("/rtr-3/leaf-3"); consumerHelper.Install (consumer2); //hijaker router1 ndn::AppHelper hijackerHelper ("Hijacker"); hijackerHelper.Install (router1); //attacker consumercbr ndn::AppHelper consumerHelper_attack ("ns3::ndn::ConsumerCbr"); consumerHelper_attack.SetAttribute ("Frequency", StringValue ("1")); consumerHelper_attack.SetPrefix ("/rtr-3/leaf-3"); consumerHelper_attack.Install (consumer4); //producer leaf-3 ndn::AppHelper producerHelper ("ns3::ndn::Producer"); producerHelper.SetAttribute ("PayloadSize", StringValue("1024")); ccnxGlobalRoutingHelper.AddOrigins ("/rtr-3", producer); producerHelper.SetPrefix ("/rtr-3"); producerHelper.Install (producer); // Calculate and install FIBs ccnxGlobalRoutingHelper.CalculateRoutes (); Simulator::Schedule (Seconds (1.0), printPitStats, router1); //print statistics about PIT Simulator::Stop (Seconds (5.0)); Simulator::Run (); Simulator::Destroy (); Where am I wrong? -------------- next part -------------- An HTML attachment was scrubbed... URL: From amin at ac.upc.edu Wed Nov 27 04:25:14 2013 From: amin at ac.upc.edu (Amin Karami) Date: Wed, 27 Nov 2013 13:25:14 +0100 Subject: [ndnSIM] Tracing RTT values of PIT entries Message-ID: <5295E4AA.8080606@ac.upc.edu> Hi Alex, I design a simple scenario as follows: c1---> c2---> R3 ----> R2 ----> p1 c3---> c1,c2 and c3 are connected to R3. In the first 3 seconds, just c1 sends Interest packets. When I printed the RTT values of PIT entries in R3, I face with below output: 1 R3 PIT Size: 3 ========= /dst1/%00%01P mean of RTT: 0.00966371, Variance of RTT: 0.000361557 Prefix: /dst1/%00%01P In: dev[10]=net(0,0-10) Out: dev[10]=net(1,9-10) Nonces: 2647520711 ========= /dst1/%00%01R mean of RTT: 0.00966371, Variance of RTT: 0.000361557 Prefix: /dst1/%00%01R In: dev[10]=net(0,0-10) Out: dev[10]=net(1,9-10) Nonces: 3120749414 ========= /dst1/%00%01Q mean of RTT: 0.00966371, Variance of RTT: 0.000361557 Prefix: /dst1/%00%01Q In: dev[10]=net(0,0-10) Out: dev[10]=net(1,9-10) Nonces: 315221540 2 R3 PIT Size: 3 ========= /dst1/%00%02%C6 mean of RTT: 0.0100666, Variance of RTT: 0.000979842 Prefix: /dst1/%00%02%C6 In: dev[10]=net(0,0-10) Out: dev[10]=net(1,9-10) Nonces: 2858765059 ========= /dst1/%00%02%C7 mean of RTT: 0.0100666, Variance of RTT: 0.000979842 Prefix: /dst1/%00%02%C7 In: dev[10]=net(0,0-10) Out: dev[10]=net(1,9-10) Nonces: 629247679 ========= /dst1/%00%02%C8 mean of RTT: 0.0100666, Variance of RTT: 0.000979842 Prefix: /dst1/%00%02%C8 In: dev[10]=net(0,0-10) Out: dev[10]=net(1,9-10) Nonces: 2514818005 The rate of sending Interests is 400 per second for c1. As you seen, in each second, just 3 entries accommodate in PIT for routing purpose in FIB. What is the problem? Where is other about 397 Interest packets? My implementation for printing RTT values are: void PeriodicStatsPrinter (Ptr node, Time next) { Ptr pit = node->GetObject (); std::cout << Simulator::Now ().ToDouble (Time::S) << "\t" << Names::FindName (node) << "\t" << "PIT Size: " << pit->GetSize () << "\t" for (Ptr entry = pit->Begin (); entry != pit->End (); entry = pit->Next (entry)) { std::cout << "=========" << std::endl; std::cout << entry->GetPrefix () << std::endl; for (FaceMetricContainer::type::index::type::iterator metric = entry->GetFibEntry()->m_faces.get ().begin(); metric != entry->GetFibEntry()->m_faces.get ().end(); metric++) { std::cout << "mean of RTT: " << metric->GetSRtt ().ToDouble(Time::S) << ", Variance of RTT: " << metric->GetRttVar().ToDouble(Time::S) << "\n"; } std::cout << *entry << std::endl; } Simulator::Schedule (next, PeriodicStatsPrinter, node, next); } Best Regards, Amin From dex0268 at gmail.com Wed Nov 27 06:25:11 2013 From: dex0268 at gmail.com (=?GB2312?B?tqHvvw==?=) Date: Wed, 27 Nov 2013 22:25:11 +0800 Subject: [ndnSIM] How to put some information to an Interest? Message-ID: Hi, Alex I want to put some parameters into an Interest for the purpose that a downlink node may convey some control information that designed by myself to a uplink node. Then I found that Interest class has a function named SetPayload(). Could I use SetPayload()? Should I design a new application? Could you please present a simple example file? ---------- Dex -------------- next part -------------- An HTML attachment was scrubbed... URL: From fab.batta at gmail.com Wed Nov 27 11:42:32 2013 From: fab.batta at gmail.com (fabrizio saponaro) Date: Wed, 27 Nov 2013 20:42:32 +0100 Subject: [ndnSIM] Routes not respected Message-ID: Hi Alex, How is it possible that if I set a route of a simple node, for example in this way: ndn::StackHelper::AddRoute (router3, "/", router2, 2); happens that sometimes some packet go toward others destinations (in dependence of the capacity of the links and the size of PITs) not include in the node's Fib? Other useful informations could be the configuration of the nodes: ndn::StackHelper ccnxHelper; ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute"); ccnxHelper.SetPit ("ns3::ndn::pit::Random", "MaxSize", "100"); ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", "MaxSize", "1"); ccnxHelper.SetDefaultRoutes (true); ccnxHelper.InstallAll(); Best regards, Fabrizio -------------- next part -------------- An HTML attachment was scrubbed... URL: From drirawassim at gmail.com Sun Nov 17 03:30:50 2013 From: drirawassim at gmail.com (Wassim Drira) Date: Sun, 17 Nov 2013 14:30:50 +0300 Subject: [ndnSIM] ContentStore order Message-ID: Hi all, I am using ContentStore to store some msgs in reception order. I am using the fifo variant. The issue is when printing the content of the cache, it looks not ordered as you can see below (sequence number in the end of the name). Do you have an idea about the cause and may be a solution to this issue... *%%%%%%%% ----- Code ----- %%%%%%%* ObjectFactory m_contentStoreFactory; m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo"); m_contentStoreFactory.Set("MaxSize", StringValue ("50")); m_pubCS = m_contentStoreFactory.Create (); ...... Ptr entry = m_pubCS->Begin(); while(entry){ NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName()); entry = m_pubCS->Next(entry); } *%%%%%%%% ----- OutPut ----- %%%%%%%* 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F Best regards --- Wassim Drira -------------- next part -------------- An HTML attachment was scrubbed... URL: From yowarj at gmail.com Sat Nov 23 04:26:39 2013 From: yowarj at gmail.com (Yowaraj Chhetri) Date: Sat, 23 Nov 2013 21:26:39 +0900 Subject: [ndnSIM] How to display the total value Message-ID: Dear all, I am new to R and ggplot2 to display data acquired from ndnSim, When I run the flowing code, it displays HopCount 4 and 2 at time 10sec respectively and 4 and 4 in time 11sec. But I want to have it display as 6 (sum of HopCount) in time 10sec and similarly sum of HopCount 8 for 11sec...and so on. How to do that, Please help me. app-delays-trace.txt Time Node AppId SeqNo Type HopCount 10.0057 leaf-1 1 0 LastDelay 4 10.0057 leaf-1 1 0 FullDelay 4 10.0066 leaf-1 1 1 LastDelay 2 10.0066 leaf-1 1 1 FullDelay 2 11.0029 leaf-2 2 0 LastDelay 2 11.0029 leaf-2 2 0 FullDelay 2 11.0057 leaf-1 1 0 LastDelay 4 11.0057 leaf-1 1 0 FullDelay 4 11.0057 leaf-1 1 0 LastDelay 4 11.0057 leaf-1 1 0 FullDelay 4 My original code is data = read.table ("app-delays-trace.txt", header=T) data$Node = factor (data$Node) data$AppId <- factor(data$AppId) data$HopCount <- data$HopCount data$Type = factor (data$Type) # exlude irrelevant types data = subset (data, Type %in% c("FullDelay")) data = subset (data, Node %in% c("leaf-1")) data = subset (data, AppId %in% c("1")) # combine stats from all faces data.combined = summaryBy (. ~ Time + Node + AppId + Type, data=data, FUN=sum) g.root <- ggplot (data.combined) + geom_point (aes (x=Time, y=HopCount.sum, color=Type), size=0.5) + geom_line (aes (x=Time, y=HopCount.sum, color=Type), size=0.5) + ylab ("Hop Count") print (g.root) png ("app-delay-1.png", width=500, height=250) print (g.root) dev.off () With kind regards, Yowaraj Chhetri Japan -------------- next part -------------- An HTML attachment was scrubbed... URL: From i.liyanage at surrey.ac.uk Thu Nov 28 15:23:01 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Thu, 28 Nov 2013 23:23:01 +0000 Subject: [ndnSIM] (no subject) Message-ID: <362f96b49320435f8d6c75418557b0b6@DB4PR06MB224.eurprd06.prod.outlook.com> Hi, I have couple of questions 1)Does content packets have any limitation on its size in ndnSim. 2)Does ndnSim uses Ethernet as layer 2 protocol, so the content packets segments if they are larger than 1500 bytes.? Many thanks, Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From kele86838437 at gmail.com Thu Nov 28 19:11:14 2013 From: kele86838437 at gmail.com (chen dqing) Date: Fri, 29 Nov 2013 11:11:14 +0800 Subject: [ndnSIM] (no subject) In-Reply-To: <362f96b49320435f8d6c75418557b0b6@DB4PR06MB224.eurprd06.prod.outlook.com> References: <362f96b49320435f8d6c75418557b0b6@DB4PR06MB224.eurprd06.prod.outlook.com> Message-ID: 1)content package have a virtual payload size.It is sat by producer node when the node send data and its default value is 1024. 2) The Mtu default value is 1500, so if larger than 1500,it will raise an error. But all above values can manual setting .For example : PointToPointHelper p2p; p2p.SetDeviceAttribute("Mtu",UintegerValue(1800)); ndn::AppHelper producer("ns3::ndn::Producer"); producer.SetAttribute("PayloadSize",StringValue("1700")); I hope its helpful for you. 2013/11/29 > Hi, > > I have couple of questions > 1)Does content packets have any limitation on its size in ndnSim. > 2)Does ndnSim uses Ethernet as layer 2 protocol, so the content packets > segments if they are larger than 1500 bytes.? > > Many thanks, > Isuru > > _______________________________________________ > 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 i.liyanage at surrey.ac.uk Fri Nov 29 10:56:35 2013 From: i.liyanage at surrey.ac.uk (i.liyanage at surrey.ac.uk) Date: Fri, 29 Nov 2013 18:56:35 +0000 Subject: [ndnSIM] (no subject) Message-ID: Hi, Is there a way to insert string in between a one of the current name, in the application. eg. First name: prefix/hello "video" should be added in between "prefix" and "hello" so that the new name: prefix/video/hello Many thanks, Isuru -------------- next part -------------- An HTML attachment was scrubbed... URL: From kele86838437 at gmail.com Sat Nov 30 21:38:23 2013 From: kele86838437 at gmail.com (chen dqing) Date: Sun, 1 Dec 2013 13:38:23 +0800 Subject: [ndnSIM] (no subject) In-Reply-To: References: Message-ID: Hi Isuru, http://ndnsim.net/applications.html#producer-example-interest-hijacker There is an example to hijacker incoming Interests.You can write your own procedure that insert string into the name of Interests in Hijacker::OnIntrest method. Chen 2013/11/30 > Hi, > > Is there a way to insert string in between a one of the current name, in > the application. > > eg. > First name: prefix/hello > > "video" should be added in between "prefix" and "hello" so that the > > new name: prefix/video/hello > > Many thanks, > Isuru > > _______________________________________________ > 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: