From xhbreezehu at gmail.com Mon Dec 10 00:08:21 2012 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Mon, 10 Dec 2012 16:08:21 +0800 Subject: [ndnSIM] do statistics about the lifetime of a content store entry in ndnSIM Message-ID: Hi all, Really happy to join the ndnSIM mailing list. Thank Alex very much for the development of ndnSIM which enables the simulation for NDN features. Hope everyone have fun with ndnSIM. I am doing some research on the NDN caching stuff and trying to simulate it with ndnSIM. I want to do statistics about the average time that an content object stays in the content store of a NDN node which is based on the lifetime of content store entries that have been replaced. Would you guys pls tell me where is the exact source code location of ndnSIM when an content store entry is replaced/erased? Look forward to hearing from your guys ?? Thanks in advance! Best regards, Xiaoyan -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Dec 10 00:28:55 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 10 Dec 2012 00:28:55 -0800 Subject: [ndnSIM] do statistics about the lifetime of a content store entry in ndnSIM In-Reply-To: References: Message-ID: <1970C198-FB07-4B3F-89BA-1C72EB42CDC4@ucla.edu> Hi Xiaoyan, Replacement and removal of content store entries in ndnSIM is controlled by so called policies. These policies are not really related specifically to the content store, but to the general data structure (trie-with-policy: utils/trie/trie-with-policy.h). There are currently three policies that are used in content stores: lru-policy.h, random-policy.h, and fifo-policy.h (code in utils/trie/ folder). If you create a new policy, a "new" content store can be created by adding a couple of lines (at least in the current code) into model/cs/content-store-impl.cc file: --- // (1) A little bit cheating to trick NS-3 object system template<> TypeId ContentStoreImpl< YOUR_POLICY >::GetTypeId () { static TypeId tid = TypeId ("CONTENT_STORE_NAME") // e.g., to use in ndnStackHelper.SetContentStore ("CONTENT_STORE_NAME") .SetGroupName ("Ndn") .SetParent () .AddConstructor< ContentStoreImpl< YOUR_POLICY > > () .AddAttribute ("MaxSize", "Set maximum number of entries in ContentStore. If 0, limit is not enforced", StringValue ("100"), MakeUintegerAccessor (&ContentStoreImpl< YOUR_POLICY >::GetMaxSize, &ContentStoreImpl< YOUR_POLICY >::SetMaxSize), MakeUintegerChecker ()) ; return tid; } // (2) specialize content store implementation: template class ContentStoreImpl; --- Now regarding the policy itself. For CS statistic generation I would recommend (at least for now) creating a custom "replacement" policy based on the existing one. That is, if you want stats for LRU policy, just copy lru-policy.h to lru-policy-stat.h and do necessary modifications. There is also multi-policy.h, which potentially could be a better fit (e.g., you would not need to "reimplement" stats for every replacement policy), but I haven't thoroughly tested this implementation. The code should be semi-self explanatory, though may be a little bit obscured. Looking forward to hear about your progress and/or problems :) Sincerely, Alex On Dec 10, 2012, at 12:08 AM, Xiao yan Hu wrote: > Hi all, > > Really happy to join the ndnSIM mailing list. > Thank Alex very much for the development of ndnSIM which enables the simulation for NDN features. > Hope everyone have fun with ndnSIM. > I am doing some research on the NDN caching stuff and trying to simulate it with ndnSIM. > I want to do statistics about the average time that an content object stays in the content store of a NDN node which is based on the lifetime of content store entries that have been replaced. Would you guys pls tell me where is the exact source code location of ndnSIM when an content store entry is replaced/erased? > Look forward to hearing from your guys ?? Thanks in advance! > > Best regards, > Xiaoyan From alexander.afanasyev at ucla.edu Mon Dec 10 16:29:51 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 10 Dec 2012 16:29:51 -0800 Subject: [ndnSIM] do statistics about the lifetime of a content store entry in ndnSIM In-Reply-To: References: <1970C198-FB07-4B3F-89BA-1C72EB42CDC4@ucla.edu> Message-ID: <56897DFD-FE1C-471A-9B3E-74D880C4B533@ucla.edu> Hi Xiaoyan, The "policy" that I was talking about is just a way to get access to the underlying data structure (insert/erase events). In any case, as it could be a generally useful metric, I decided to implement the necessary mechanics myself. If you're curious, you can check commit 8566f458f2aacc25f06683ce00219f7168ee71f5, in particular utils/trie/lifetime-stats-policy.h policy file. As of right now (commit f4a0359ac1dc60390ea41d8347c73a8c24a6789e) you can use the following code in order to get samples for lifetime of cached entries (copy from http://ndnsim.net/helpers.html#content-store): -------------------- void CacheEntryRemoved (std::string context, Ptr entry, Time lifetime) { std::cout << entry->GetName () << " " << lifetime.ToDouble (Time::S) << "s" << std::endl; } ... ndnHelper.SetContentStore ("ns3::ndn::cs::Stats::Lru", "MaxSize", "10000"); ... ndnHelper.Install (nodes); // connect to lifetime trace Config::Connect ("/NodeList/*/$ns3::ndn::cs::Stats::Lru/WillRemoveEntry", MakeCallback (CacheEntryRemoved)); -------------------- I haven't had time, but you can write a tracer (similar to the one you already wrote for CacheHits/CacheMisses), which will make tracing totally trivial. Please note, that you *have to* use a specialized version of content store (ns3::ndn::cs::Stats::Lru, ns3::ndn::cs::Stats::Random, or ns3::ndn::cs::Stats::Fifo), and Config::Connect/Config::ConnectWithoutContext *have to* specify the correct content store implementation. Another note, for some replacement policies, entries may not be put in cache at all. In the current implementation, such entries will be reported with lifetime 0. --- Alex PS I have incorporated your implementation of the content store tracer (ndn::CsImpTracer). I also have added an example how to use the tracer (http://ndnsim.net/examples.html#level-binary-tree-with-content-store-trace-helper). Thanks again. On Dec 10, 2012, at 1:34 AM, Xiao yan Hu wrote: > Hi Alex, > > Thanks very much for your information. > Actually I do not want to create a new replacement policy, but that updating the average lifetime of content store entries whenever cache replacement happens. > I found, e.g., in lru-policy.h, how an new content store entry is inserted as follow, and " base_.erase (&(*policy_container::begin ()));" shuld be for the replacement (&(*policy_container::begin ()) is the entry to replace), right? > 74 inline bool > 75 insert (typename parent_trie::iterator item) > 76 { > 77 if (max_size_ != 0 && policy_container::size () >= max_size_) > 78 { > 79 base_.erase (&(*policy_container::begin ())); > 80 } > 81 > 82 policy_container::push_back (*item); > 83 return true; > 84 } > > I think I get stuck in that how to map &(*policy_container::begin ()) into content store entry. Please forgive me about that I don't understand c++ very well. > And then I do not know what are eventually instantiated separately as "class Base, class Container, class Hook" of "template" in in lru-policy.h. > Would you pls give me a hint? > > Thanks, > Xiaoyan > > On Mon, Dec 10, 2012 at 4:28 PM, Alex Afanasyev wrote: > Hi Xiaoyan, > > Replacement and removal of content store entries in ndnSIM is controlled by so called policies. These policies are not really related specifically to the content store, but to the general data structure (trie-with-policy: utils/trie/trie-with-policy.h). There are currently three policies that are used in content stores: lru-policy.h, random-policy.h, and fifo-policy.h (code in utils/trie/ folder). If you create a new policy, a "new" content store can be created by adding a couple of lines (at least in the current code) into model/cs/content-store-impl.cc file: > > --- > > // (1) A little bit cheating to trick NS-3 object system > > template<> > TypeId > ContentStoreImpl< YOUR_POLICY >::GetTypeId () > { > static TypeId tid = TypeId ("CONTENT_STORE_NAME") // e.g., to use in ndnStackHelper.SetContentStore ("CONTENT_STORE_NAME") > .SetGroupName ("Ndn") > .SetParent () > .AddConstructor< ContentStoreImpl< YOUR_POLICY > > () > .AddAttribute ("MaxSize", > "Set maximum number of entries in ContentStore. If 0, limit is not enforced", > StringValue ("100"), > MakeUintegerAccessor (&ContentStoreImpl< YOUR_POLICY >::GetMaxSize, > &ContentStoreImpl< YOUR_POLICY >::SetMaxSize), > MakeUintegerChecker ()) > ; > > return tid; > } > > // (2) specialize content store implementation: > > template class ContentStoreImpl; > > --- > > Now regarding the policy itself. > For CS statistic generation I would recommend (at least for now) creating a custom "replacement" policy based on the existing one. That is, if you want stats for LRU policy, just copy lru-policy.h to lru-policy-stat.h and do necessary modifications. There is also multi-policy.h, which potentially could be a better fit (e.g., you would not need to "reimplement" stats for every replacement policy), but I haven't thoroughly tested this implementation. > > The code should be semi-self explanatory, though may be a little bit obscured. Looking forward to hear about your progress and/or problems :) > > Sincerely, > Alex > > On Dec 10, 2012, at 12:08 AM, Xiao yan Hu wrote: > > > Hi all, > > > > Really happy to join the ndnSIM mailing list. > > Thank Alex very much for the development of ndnSIM which enables the simulation for NDN features. > > Hope everyone have fun with ndnSIM. > > I am doing some research on the NDN caching stuff and trying to simulate it with ndnSIM. > > I want to do statistics about the average time that an content object stays in the content store of a NDN node which is based on the lifetime of content store entries that have been replaced. Would you guys pls tell me where is the exact source code location of ndnSIM when an content store entry is replaced/erased? > > Look forward to hearing from your guys ?? Thanks in advance! > > > > Best regards, > > Xiaoyan > > From shock.jiang at gmail.com Mon Dec 10 17:23:53 2012 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Tue, 11 Dec 2012 09:23:53 +0800 Subject: [ndnSIM] Hi, ndnSIM-ers. Message-ID: <879DD193EAF6464D8C82FD6DC52FD326@gmail.com> Hello mail to all :) thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China Sent with Sparrow (http://www.sparrowmailapp.com/?sig) -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Dec 11 12:32:35 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 11 Dec 2012 12:32:35 -0800 Subject: [ndnSIM] ns-3 questions In-Reply-To: References: Message-ID: Hi Natalya, I checked the NS-3 code, and see that it does not have any buffering on incoming interfaces, at least not with point-to-point links. When packet is received by a NetDevice (e.g., Receive call in src/point-to-point/model/point-to-point-net-device.cc), it is immediately forwarded to higher level using a registered callback. However, I agree that your trace is indeed confusing and I can't be sure what is wrong. You probably want to log not only queues, but also other events, such as ndn.fw and ndn.fw.BestRoute (or ndn.fw.Flooding if you're using flooding strategy in ndnSIM). I tried to run my own simple 3-node scenario (http://pastebin.com/skVd8UyC) and got expected results (http://pastebin.com/TmYJTNpM). As I don't have your queue implementation, I put DropTailQueue between nodes 0 and 1, and RedQueue between nodes 1 and 2. As you can see in the log output, queueing on a node starts only after DoPropagateInterest forwarding strategy call (e.g., lines 22-23 for node 0, and lines 34-36 for node 1). For node 2 there are more queueing, as the Data packet is getting returned to the requester. -- Alex ps I would recommend updating both ns-3 and ndnSIM code. There were some nasty hidden bugs with logging system. On Dec 11, 2012, at 9:10 AM, "Natalya Rozhnova -X (nrozhnov - AAP3 INC at Cisco)" wrote: > Hi Alex, > > Sorry for my late response, I just didn't have an access to my pc these > days. > I'm curious about the input queues in ns3. I thought that ns3 doesn't have > the input queues but when I trace the queues I obtain the following: > > 0s 0 DropTailQueue:DoEnqueue(0x7fca81c25480, 0x7fca81c2f8d0) > 0s 0 DropTailQueue:DoEnqueue(): [LOGIC] Number packets 1 > 0s 0 DropTailQueue:DoEnqueue(): [LOGIC] Number bytes 30 > 0s 0 DropTailQueue:DoDequeue(0x7fca81c25480) > 0s 0 DropTailQueue:DoDequeue(): [LOGIC] Popped 0x7fca81c2f8d0 > 0s 0 DropTailQueue:DoDequeue(): [LOGIC] Number packets 0 > 0s 0 DropTailQueue:DoDequeue(): [LOGIC] Number bytes 0 > 2.399e-06s 0 DropTailQueue:DoDequeue(0x7fca81c25480) > 2.399e-06s 0 DropTailQueue:DoDequeue(): [LOGIC] Queue empty > 0.0100024s 2 DropTailQueue:DoEnqueue(0x7fca81c26590, 0x7fca81c30570) > 0.0100024s 2 DropTailQueue:DoEnqueue(): [LOGIC] Number packets 1 > 0.0100024s 2 DropTailQueue:DoEnqueue(): [LOGIC] Number bytes 30 > 0.0100024s 2 DropTailQueue:DoDequeue(0x7fca81c26590) > 0.0100024s 2 DropTailQueue:DoDequeue(): [LOGIC] Popped 0x7fca81c30570 > 0.0100024s 2 DropTailQueue:DoDequeue(): [LOGIC] Number packets 0 > 0.0100024s 2 DropTailQueue:DoDequeue(): [LOGIC] Number bytes 0 > 0.0100024s 2 NDNQueue:Interest_DoEnqueue(): [INFO] Interest_enqueue > 0x7fca81c26db0 0 > 0.0100024s 2 NDNQueue:Interest_DoEnqueue(): [INFO] Interest Packet > Enqueued 30p size30 > > 0.0100024s 2 NDNQueue:DoDequeue(): [LOGIC] NDNQueue_Dequeue Simple Round > Robin > 0.0100024s 3 NDNQueue:Interest_DoEnqueue(): [INFO] Interest_enqueue > 0x7fca81c27600 0 > > A node 0 is connected to node 2 which is connected to node 3. I installed > the different queue types on these nodes to see what will happen : p2p for > 0->2 has DropTailQueue and p2p for 2->3 has NDNQueue installed. So, as you > can see, the node 2 executes enqueue function of TailDropQueue before a > packet will be enqueued to the output NDNQueue? > > Does it mean that ns3 has the concept of incoming interface buffers or it > just my fault? > > Thanks, > Natalya > > On 12/7/12 6:45 AM, "Alexander Afanasyev" wrote: > >> I'm not sure that ns3 simulates the concept of incoming interface >> buffers. If I remember correctly, queues are emulated only for sending >> data out, while incoming processing is done "instantaneously" via >> callback. >> >> If you really want to just have access to the data packet before PIT >> lookups, ndnSIM provides this functionality via custom forwarding >> strategy (there is a study example on the website). You would only need >> to overwrite OnData method, do some magic, and depending on the magic >> allow further processing by the base class, or simply stop processing. >> >> Let me know if this can / would be better for your task. >> >> --- >> Alex >> >> On Dec 6, 2012, at 4:10 PM, "Natalya Rozhnova -X (nrozhnov - AAP3 INC at >> Cisco)" wrote: >> >>> Hi Alex, >>> >>> Thanks for the answer, I'll try to explain in more detail what we want. >>> In general, the question is that we want to get access to Data packet, just when >>> it arrives on a router and has not been distributed (using PIT search) >>> in >>> a queue to som output interface. Largely speaking, intercept >>> the event of receiving packet on an incoming interface (marked on a figure as >>> in) and send size of this packet into output interface queue >>> (on figure, marked as out). >>> >>> +------+out ->Interests >>> |Router| >>> +------+in <- Data >>> >>> >>> Best regards, >>> Natalya >>> >>> On 12/6/12 6:25 PM, "Alex Afanasyev" wrote: >>> >>>> Hi Ashok, >>>> >>>> I'm not sure that I'm answering the right question, but in NS-3 you can >>>> always get the size of a packet (packet->GetSize ()), as all packets >>>> "emulate" (to some extent) packets in real protocols. That is, calling >>>> GetSize() method on a packet received in the queue will return a full >>>> size of the packet, including all link-layer headers. >>>> >>>> Let me know if I misunderstood the question. >>>> >>>> Sincerely, >>>> Alex >>>> >>>>> On Dec 6, 2012, at 2:31 PM, Ashok Narayanan wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Natalya and I are slogging through ns-3 and are running into some >>>>>> basic questions. Specifically we want to compute packet statistics >>>>>> (interest & data sizes) for both incoming and outgoing faces >>>>>> independently. Are these counts available attached to each packet as >>>>>> we >>>>>> receive the output-queue event and queue the packet? >>>>>> >>>>>> Thanks >>>>>> -Ashok From alexander.afanasyev at ucla.edu Tue Dec 11 12:44:14 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 11 Dec 2012 12:44:14 -0800 Subject: [ndnSIM] Question about ndnSIM for Data Freshness function. In-Reply-To: References: Message-ID: <0C40E282-7FE2-4DAE-B954-8CED0EF98208@ucla.edu> Dear Prasertsak, Though it is possible to specify the freshness parameter in the ContentObject packet, ndnSIM does not yet have support for actually enforcing it. Generally, as such a "cache" is just a temporary short-term buffer, it does not really matter. You as a producer don't really have a control for how long routers would store your data, similarly how you don't have control for how long packets will be in routers interface queues. Actually, Content Store name for the cache in ndnSIM is a little bit misleading, and we are planning to rename it to PacketBuffer in near future. It should be pretty straightforward to add freshness functionality (similar how it is implemented in ndn-pit-impl.h/cc, but unfortunately I will be only available in a week or so to work on this. Sincerely, Alex On Dec 11, 2012, at 5:55 AM, Prasertsak U. wrote: > Dear cawka (Alex Afanasyev), > > I'm Prasertsak from Thailand. I'm not a native speaker in English. I'd apologize if my English made you confuse. > > Now, I'm using the ndnSIM to simulate the CCN network in my research. However, I have a problem about "SetFreshness" function on the provider side. The data freshness seems to be not working, but I'm not sure because of the less experience about this tool. > > This is my simple environment for testing the data freshness: > > Consumer <------------> intermediate node <-----------------> provider > > I try to send the same prefix (i.e., "/data/10") to the provider and capture the interest packet at the provider node. Hence, the interest packet is replied by the provider application with freshness attributes. (Some parts of the code are shown below) > > ndn::ContentObjectHeader data; > data.SetName (Create (interest->GetName())); > data.SetFreshness(Seconds(1.0)); > data.SetTimestamp(Simulator::Now().GetSeconds()); > > At the consumer side, the consumer application tries to send the same prefix (i.e., "/data/10") again, but the interest doesn't send through the provider after the second time. The response packet came from the cache only. In my opinion, the interest packet should send through the provider when the data in the cache is expired (by SetFreshness() function ... Is correct?). > > My question is > ? Have the ndnSIM supported the data freshness? > ? How to use the data freshness of the ndnSIM? (If the data freshness had already supported.) > Thank you very much. > > Regards, > Prasertsak U. > > From alexander.afanasyev at ucla.edu Tue Dec 11 12:54:04 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 11 Dec 2012 12:54:04 -0800 Subject: [ndnSIM] question about ndnSIM code In-Reply-To: <121211194112ffe974aa4dcdd1eb00a265d8da916f40@bjtu.edu.cn> References: <121211194112ffe974aa4dcdd1eb00a265d8da916f40@bjtu.edu.cn> Message-ID: <91923EBE-28E6-4038-B54E-0B771CDDB736@ucla.edu> Hi Ren, Each Interest for a unique name requests a unique Data packet. So answer to your question is no, each interest is for its own unique data packet. For many simulations it is enough to assume for ndn::Producer that it has unlimited number of Data packets available, all of them from "/prefix" namespace. Every time a consumer expresses an Interests starting with "/prefix" (e.g., /prefix/19283) and this interests reaches the Producer, the producer will answer with a unique Data packet, matching the name, specified in the Interest (e.g., the same /prefix/19283). You can check out how it is done in apps/ndn-producer.cc in Producer::OnInterest method (lines 105-140). If you have some other assumption/simulations in mind, you can implement your own Data producer, which replies to only to specific Interests. Sincerely, Alex On Dec 11, 2012, at 3:41 AM, 12111027 <12111027 at bjtu.edu.cn> wrote: > Mr Alexander, > > Thanks to your contribution to the ndnSIM. I have read the code recently and there is one question: > > The consumer sent the "interest" packet with "/prefix/" to the producer. There is one "data" retrieved for each "interest", but the sequence numbers of "interest" are "/prefix/0" "/prefix/1" "/prefix/2"......"/prefix/n". There is no end until the consumer stops the request. I want to know whether the "/prefix/1" "/prefix/2" ......"/prefix/n" interests are all for one "data" packet with "/prefix/"? And I could not find the space where the code is defined. Could you give me some references? > > I will look forward to your response. Thank you! > > > Best regards, > Ren Fei > From xhbreezehu at gmail.com Tue Dec 11 18:27:54 2012 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Wed, 12 Dec 2012 10:27:54 +0800 Subject: [ndnSIM] do statistics about the lifetime of a content store entry in ndnSIM In-Reply-To: <56897DFD-FE1C-471A-9B3E-74D880C4B533@ucla.edu> References: <1970C198-FB07-4B3F-89BA-1C72EB42CDC4@ucla.edu> <56897DFD-FE1C-471A-9B3E-74D880C4B533@ucla.edu> Message-ID: Hi Alex, Thanks very much for the information you offered and it works :) Sincerely, Xiaoyan On Tue, Dec 11, 2012 at 8:29 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Xiaoyan, > > The "policy" that I was talking about is just a way to get access to the > underlying data structure (insert/erase events). > > In any case, as it could be a generally useful metric, I decided to > implement the necessary mechanics myself. If you're curious, you can > check commit 8566f458f2aacc25f06683ce00219f7168ee71f5, in particular > utils/trie/lifetime-stats-policy.h policy file. > > As of right now (commit f4a0359ac1dc60390ea41d8347c73a8c24a6789e) you can > use the following code in order to get samples for lifetime of cached > entries (copy from http://ndnsim.net/helpers.html#content-store): > > -------------------- > void > CacheEntryRemoved (std::string context, Ptr entry, > Time lifetime) > { > std::cout << entry->GetName () << " " << lifetime.ToDouble (Time::S) > << "s" << std::endl; > } > ... > ndnHelper.SetContentStore ("ns3::ndn::cs::Stats::Lru", "MaxSize", "10000"); > ... > ndnHelper.Install (nodes); > // connect to lifetime trace > Config::Connect ("/NodeList/*/$ns3::ndn::cs::Stats::Lru/WillRemoveEntry", > MakeCallback (CacheEntryRemoved)); > -------------------- > > I haven't had time, but you can write a tracer (similar to the one you > already wrote for CacheHits/CacheMisses), which will make tracing totally > trivial. > > Please note, that you *have to* use a specialized version of content store > (ns3::ndn::cs::Stats::Lru, ns3::ndn::cs::Stats::Random, or > ns3::ndn::cs::Stats::Fifo), and > Config::Connect/Config::ConnectWithoutContext *have to* specify the correct > content store implementation. > > Another note, for some replacement policies, entries may not be put in > cache at all. In the current implementation, such entries will be reported > with lifetime 0. > > --- > Alex > > PS > I have incorporated your implementation of the content store tracer > (ndn::CsImpTracer). I also have added an example how to use the tracer ( > http://ndnsim.net/examples.html#level-binary-tree-with-content-store-trace-helper). > Thanks again. > > > On Dec 10, 2012, at 1:34 AM, Xiao yan Hu wrote: > > > Hi Alex, > > > > Thanks very much for your information. > > Actually I do not want to create a new replacement policy, but that > updating the average lifetime of content store entries whenever cache > replacement happens. > > I found, e.g., in lru-policy.h, how an new content store entry is > inserted as follow, and " base_.erase (&(*policy_container::begin ()));" > shuld be for the replacement (&(*policy_container::begin ()) is the entry > to replace), right? > > 74 inline bool > > 75 insert (typename parent_trie::iterator item) > > 76 { > > 77 if (max_size_ != 0 && policy_container::size () >= max_size_) > > 78 { > > 79 base_.erase (&(*policy_container::begin ())); > > 80 } > > 81 > > 82 policy_container::push_back (*item); > > 83 return true; > > 84 } > > > > I think I get stuck in that how to map &(*policy_container::begin ()) > into content store entry. Please forgive me about that I don't understand > c++ very well. > > And then I do not know what are eventually instantiated separately as > "class Base, class Container, class Hook" of "template Container, class Hook>" in in lru-policy.h. > > Would you pls give me a hint? > > > > Thanks, > > Xiaoyan > > > > On Mon, Dec 10, 2012 at 4:28 PM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > > Hi Xiaoyan, > > > > Replacement and removal of content store entries in ndnSIM is controlled > by so called policies. These policies are not really related specifically > to the content store, but to the general data structure (trie-with-policy: > utils/trie/trie-with-policy.h). There are currently three policies that > are used in content stores: lru-policy.h, random-policy.h, and > fifo-policy.h (code in utils/trie/ folder). If you create a new policy, a > "new" content store can be created by adding a couple of lines (at least in > the current code) into model/cs/content-store-impl.cc file: > > > > --- > > > > // (1) A little bit cheating to trick NS-3 object system > > > > template<> > > TypeId > > ContentStoreImpl< YOUR_POLICY >::GetTypeId () > > { > > static TypeId tid = TypeId ("CONTENT_STORE_NAME") // e.g., to use in > ndnStackHelper.SetContentStore ("CONTENT_STORE_NAME") > > .SetGroupName ("Ndn") > > .SetParent () > > .AddConstructor< ContentStoreImpl< YOUR_POLICY > > () > > .AddAttribute ("MaxSize", > > "Set maximum number of entries in ContentStore. If 0, > limit is not enforced", > > StringValue ("100"), > > MakeUintegerAccessor (&ContentStoreImpl< YOUR_POLICY > >::GetMaxSize, > > &ContentStoreImpl< YOUR_POLICY > >::SetMaxSize), > > MakeUintegerChecker ()) > > ; > > > > return tid; > > } > > > > // (2) specialize content store implementation: > > > > template class ContentStoreImpl; > > > > --- > > > > Now regarding the policy itself. > > For CS statistic generation I would recommend (at least for now) > creating a custom "replacement" policy based on the existing one. That is, > if you want stats for LRU policy, just copy lru-policy.h to > lru-policy-stat.h and do necessary modifications. There is also > multi-policy.h, which potentially could be a better fit (e.g., you would > not need to "reimplement" stats for every replacement policy), but I > haven't thoroughly tested this implementation. > > > > The code should be semi-self explanatory, though may be a little bit > obscured. Looking forward to hear about your progress and/or problems :) > > > > Sincerely, > > Alex > > > > On Dec 10, 2012, at 12:08 AM, Xiao yan Hu wrote: > > > > > Hi all, > > > > > > Really happy to join the ndnSIM mailing list. > > > Thank Alex very much for the development of ndnSIM which enables the > simulation for NDN features. > > > Hope everyone have fun with ndnSIM. > > > I am doing some research on the NDN caching stuff and trying to > simulate it with ndnSIM. > > > I want to do statistics about the average time that an content object > stays in the content store of a NDN node which is based on the lifetime of > content store entries that have been replaced. Would you guys pls tell me > where is the exact source code location of ndnSIM when an content store > entry is replaced/erased? > > > Look forward to hearing from your guys ?? Thanks in advance! > > > > > > Best regards, > > > Xiaoyan > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Dec 12 00:06:29 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 12 Dec 2012 00:06:29 -0800 Subject: [ndnSIM] Scripts not compiling (was: issue 10 NDN-Routing/ndnSIM on GitHub) References: <201212121525512189316@bupt.edu.cn> Message-ID: <586F9449-E53A-4A75-9940-6B8A14D515EA@ucla.edu> Begin forwarded message: > From: huqian > Subject: Scripts not compiling $)G!& Issue #10 !& NDN-Routing/ndnSIM !& GitHub > Date: December 11, 2012 11:25:51 PM PST > To: "alexander.afanasyev" > > Dear Alexander Afanasyev: > I am a Ph.D candiadate in BUPT in China.I am using NDNSIM and I face some problem.I saw this" issue list" herehttps://github.com/NDN-Routing/ndnSIM/issues/10 > problem: > when I do "./waf" ,I get the following: > ----------------------------------------------------------------- > > Waf: Entering directory `/home/huqian/ndnSIM20121211/ndnSIM/ns-3/build' > [ 702/1758] cxx: scratch/ndn-simple.cc -> build/scratch/ndn-simple.cc.3.o > ../scratch/ndn-simple.cc:24:31: fatal error$)A#: ns3/ndnSIM-module.h#:No such file or directory > Compile interrupt$)A!# > Waf: Leaving directory `/home/huqian/ndnSIM20121211/ndnSIM/ns-3/build' > Build failed > -> task in 'ndn-simple' failed (exit status 1): > {task 169125772: cxx ndn-simple.cc -> ndn-simple.cc.3.o} > ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-Ibuild', '-I.', '-I.', '-I/home/huqian/ndnSIM20121211/ndnSIM', '-I/usr/include/gtk-2.0', '-I/usr/lib/i386-linux-gnu/gtk-2.0/include', '-I/usr/include/atk-1.0', '-I/usr/include/cairo', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/pango-1.0', '-I/usr/include/gio-unix-2.0', '-I/usr/include/glib-2.0', '-I/usr/lib/i386-linux-gnu/glib-2.0/include', '-I/usr/include/pixman-1', '-I/usr/include/freetype2', '-I/usr/include/libpng12', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_PACKET_H=1', '-DSQLITE3=1', '-DHAVE_IF_TUN_H=1', '-DNDEBUG', '../scratch/ndn-simple.cc', '-c', '-o', 'scratch/ndn-simple.cc.3.o'] > ----------------------------------------------------------------------- > I cannot sure whether it's the boost library that matters.If so ,what should I do ?I have tried this method but it still doesn't work.( http://ndnsim.net/faq.html#boost-libraries ) > I send build/config.log (http://pastebin.com/yceTxnC9) to you in case of necessary. > If possible,would you please help me?I will appreciate your help very much. > Huqian > Beijing University of Posts and Telecommunications,Laboratory of Network System Architecture and Convergence > Email : huqian at bupt.edu.cn From alexander.afanasyev at ucla.edu Wed Dec 12 00:17:14 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 12 Dec 2012 00:17:14 -0800 Subject: [ndnSIM] Scripts not compiling (was: issue 10 NDN-Routing/ndnSIM on GitHub) In-Reply-To: <201212121525512189316@bupt.edu.cn> References: <201212121525512189316@bupt.edu.cn> Message-ID: <64C64174-7487-4C48-A602-0ABFBC8DAA8D@ucla.edu> Hi Huqian, I see that ./waf is still trying to use old version of boost (http://pastebin.com/yceTxnC9, line 40-41). So, there is no wonder ndnSIM is not working. I have a question. When you followed http://ndnsim.net/faq.html#boost-libraries, where did you install new version of boost? In your home directory or somewhere in the system? In most of the cases, if you have already old version of boost installed, you *have to* explicitly specify which one you're using, like herehttp://ndnsim.net/faq.html#compiling-ns-3-with-custom-boost-libraries: cd ./waf configure --boost-includes=$BOOSTDIR/include --boost-libs=$BOOSTDIR/lib --enable-examples --enable-ndn-plugins=topology,mobility Btw. During the config phase it should have complained about the version and stated the fact that ndnSIM will not be compiled, unless you have boost version of at least 1.48. Sincerely, Alex On Dec 11, 2012, at 11:25 PM, huqian wrote: > From: huqian > Subject: Scripts not compiling $)G!& Issue #10 !& NDN-Routing/ndnSIM !& GitHub > Date: December 11, 2012 11:25:51 PM PST > To: "alexander.afanasyev" > > Dear Alexander Afanasyev: > I am a Ph.D candiadate in BUPT in China.I am using NDNSIM and I face some problem.I saw this" issue list here https://github.com/NDN-Routing/ndnSIM/issues/10 > problem: > when I do "./waf" ,I get the following: > ----------------------------------------------------------------- > > Waf: Entering directory `/home/huqian/ndnSIM20121211/ndnSIM/ns-3/build' > [ 702/1758] cxx: scratch/ndn-simple.cc -> build/scratch/ndn-simple.cc.3.o > ../scratch/ndn-simple.cc:24:31: fatal error$)A#: ns3/ndnSIM-module.h#:No such file or directory > Compile interrupt > Waf: Leaving directory `/home/huqian/ndnSIM20121211/ndnSIM/ns-3/build' > Build failed > -> task in 'ndn-simple' failed (exit status 1): > {task 169125772: cxx ndn-simple.cc -> ndn-simple.cc.3.o} > ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-Ibuild', '-I.', '-I.', '-I/home/huqian/ndnSIM20121211/ndnSIM', '-I/usr/include/gtk-2.0', '-I/usr/lib/i386-linux-gnu/gtk-2.0/include', '-I/usr/include/atk-1.0', '-I/usr/include/cairo', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/pango-1.0', '-I/usr/include/gio-unix-2.0', '-I/usr/include/glib-2.0', '-I/usr/lib/i386-linux-gnu/glib-2.0/include', '-I/usr/include/pixman-1', '-I/usr/include/freetype2', '-I/usr/include/libpng12', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_PACKET_H=1', '-DSQLITE3=1', '-DHAVE_IF_TUN_H=1', '-DNDEBUG', '../scratch/ndn-simple.cc', '-c', '-o', 'scratch/ndn-simple.cc.3.o'] > ----------------------------------------------------------------------- > I cannot sure whether it's the boost library that matters.If so ,what should I do ?I have tried this method but it still doesn't work.( http://ndnsim.net/faq.html#boost-libraries ) > I send build/config.log (http://pastebin.com/yceTxnC9) to you in case of necessary. > If possible,would you please help me?I will appreciate your help very much. > Huqian > Beijing University of Posts and Telecommunications,Laboratory of Network System Architecture and Convergence > Email : huqian at bupt.edu.cn From natalya.rozhnova at lip6.fr Wed Dec 12 13:46:27 2012 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Thu, 13 Dec 2012 04:46:27 +0700 Subject: [ndnSIM] OnInterest/OnData functions : access to an output queue Message-ID: <157701355348787@web17h.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Dec 12 13:55:11 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 12 Dec 2012 13:55:11 -0800 Subject: [ndnSIM] OnInterest/OnData functions : access to an output queue In-Reply-To: <157701355348787@web17h.yandex.ru> References: <157701355348787@web17h.yandex.ru> Message-ID: <6D1768C1-7C77-48D3-8003-D6EC248E6D63@ucla.edu> Hi, Natalya! It is easy, but would take a couple of steps. First, you need to figure out what from which type of face you have received a packet (as it could be an application face, which doesn't have a queue). This could be done using DynamicCast call, like in https://github.com/NDN-Routing/ndnSIM/blob/master/model/ndn-l3-protocol.cc#L229. Second, you will need to get netdevice pointer from the NetDeviceFace using GetNetDevice method (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_net_device_face.html#ae5ee510df5ba24c4a1aa94343302bb46). Finally, you can access queue and other NetDevice attributes in a standard NS-3 way. --- Alex On Dec 12, 2012, at 1:46 PM, Natalya Rozhnova wrote: > Hi everyone, > > I'm trying to access to the output queue from m_forwardingStrategy::OnInterest(...) and OnData(...) functions. I need to access to the output queue installed on the interface from where the router just received a packet. > Like: > +-----+ > | R |->out > | | > +-----+<-in > > What I'm actually trying to do is : when the router receives an Interest (or Data) packet on the Interface "in", I'd like to access to the queue instaled on interface "out" and to put there some values. > How I could access to this queue correctly? > > Thanks in advance! > Best, > Natalya From natalya.rozhnova at lip6.fr Wed Dec 12 14:43:14 2012 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Thu, 13 Dec 2012 05:43:14 +0700 Subject: [ndnSIM] OnInterest/OnData functions : access to an output queue In-Reply-To: <6D1768C1-7C77-48D3-8003-D6EC248E6D63@ucla.edu> References: <157701355348787@web17h.yandex.ru> <6D1768C1-7C77-48D3-8003-D6EC248E6D63@ucla.edu> Message-ID: <179341355352194@web20e.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Dec 12 15:31:36 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 12 Dec 2012 15:31:36 -0800 Subject: [ndnSIM] OnInterest/OnData functions : access to an output queue In-Reply-To: <179341355352194@web20e.yandex.ru> References: <157701355348787@web17h.yandex.ru> <6D1768C1-7C77-48D3-8003-D6EC248E6D63@ucla.edu> <179341355352194@web20e.yandex.ru> Message-ID: Quick thing. Don't forget to check that netDeviceFace returned by DynamicCast is no 0, otherwise you'll get in trouble with segfaults. As for the queue. There are two options. ns-3 style and c++-style. (1) ns-3 style ============== ns-3 allows you to access to many internal variables using so called attributes, without accessing implementation class. For netdevice example, you can access to queue using the following: PointerValue txQueueAttribute; nd->GetAttribute ("TxQueue", txQueueAttribute); /** // or this, more safer way * bool ok = nd->GetAttributeFailSafe ("TxQueue", txQueueAttribute); * if (!ok) { /* something wrong */ } **/ Ptr txQueue = txQueueAttribute.Get (); if (txQueue == 0) { /*something wrong*/ } ... (2) c++ style Alternative and more C++ way is to make another dynamic cast on NetDevice object: Ptr p2pNd = DynamicCast (nd); ... and do the rest. The small disadvantage of the second approach is that it requires exact knowledge of the class you're casting to, that is, you need to include "point-to-point-net-device.h" header. --- Alex On Dec 12, 2012, at 2:43 PM, Natalya Rozhnova wrote: > Hi Alex! > > Thanks for your reply! > That's what I thought to do, but one thing was disturbing me. > I tried so this : > Ptr netDeviceFace = DynamicCast (inFace); > Ptr nd = netDeviceFace->GetNetDevice (); > > Then, I presume to use the function GetQueue() which is in PointToPointNetDevice class and not virtual function of base NetDevice object. > So I'm just confused how to get the p2p device after getting the NetDevice object... > > Thanks, > Natalya > > 13.12.2012, 04:55, "Alex Afanasyev" : >> Hi, Natalya! >> >> It is easy, but would take a couple of steps. >> >> First, you need to figure out what from which type of face you have received a packet (as it could be an application face, which doesn't have a queue). This could be done using DynamicCast call, like in https://github.com/NDN-Routing/ndnSIM/blob/master/model/ndn-l3-protocol.cc#L229. >> >> Second, you will need to get netdevice pointer from the NetDeviceFace using GetNetDevice method (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_net_device_face.html#ae5ee510df5ba24c4a1aa94343302bb46). >> >> Finally, you can access queue and other NetDevice attributes in a standard NS-3 way. >> >> --- >> Alex >> >> On Dec 12, 2012, at 1:46 PM, Natalya Rozhnova wrote: >> >> Hi everyone, >> >> I'm trying to access to the output queue from m_forwardingStrategy::OnInterest(...) and OnData(...) functions. I need to access to the output queue installed on the interface from where the router just received a packet. >> Like: >> +-----+ >> | R |->out >> | | >> +-----+<-in >> >> What I'm actually trying to do is : when the router receives an Interest (or Data) packet on the Interface "in", I'd like to access to the queue instaled on interface "out" and to put there some values. >> How I could access to this queue correctly? >> >> Thanks in advance! >> Best, >> Natalya >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From natalya.rozhnova at lip6.fr Wed Dec 12 15:40:04 2012 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Thu, 13 Dec 2012 06:40:04 +0700 Subject: [ndnSIM] OnInterest/OnData functions : access to an output queue In-Reply-To: References: <157701355348787@web17h.yandex.ru> <6D1768C1-7C77-48D3-8003-D6EC248E6D63@ucla.edu> <179341355352194@web20e.yandex.ru> Message-ID: <174291355355604@web16g.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Dec 12 19:24:16 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 12 Dec 2012 19:24:16 -0800 Subject: [ndnSIM] Question about ndnSIM for Data Freshness function. In-Reply-To: <0C40E282-7FE2-4DAE-B954-8CED0EF98208@ucla.edu> References: <0C40E282-7FE2-4DAE-B954-8CED0EF98208@ucla.edu> Message-ID: <02D99731-9E8F-4163-AE31-BE05AF8B4928@ucla.edu> Hi Prasertsak, I decided to spend a little bit time today to implement functionality that you were missing. As of the latest commit on github (71278d4c6011bf4f961fa79d12a2c39f3fbfdd3c) you can use the following content store realizations that fully support Freshness in ContentObjects - ns3::ndn::cs::Freshness::Lru - ns3::ndn::cs::Freshness::Random - ns3::ndn::cs::Freshness::Fifo (Small disclaimer. I haven't had time to thoroughly test them yet. Basic tests working, but if you encounter a bug, please let me know.) I also updated documentation on the website, adding an example how to use new realizations: http://ndnsim.net/helpers.html#content-store-respecting-freshness-field-of-contentobjects Sincerely, Alex On Dec 11, 2012, at 12:44 PM, Alex Afanasyev wrote: > Dear Prasertsak, > > Though it is possible to specify the freshness parameter in the ContentObject packet, ndnSIM does not yet have support for actually enforcing it. Generally, as such a "cache" is just a temporary short-term buffer, it does not really matter. You as a producer don't really have a control for how long routers would store your data, similarly how you don't have control for how long packets will be in routers interface queues. > > Actually, Content Store name for the cache in ndnSIM is a little bit misleading, and we are planning to rename it to PacketBuffer in near future. > > It should be pretty straightforward to add freshness functionality (similar how it is implemented in ndn-pit-impl.h/cc, but unfortunately I will be only available in a week or so to work on this. > > Sincerely, > Alex > > > On Dec 11, 2012, at 5:55 AM, Prasertsak U. wrote: > >> Dear cawka (Alex Afanasyev), >> >> I'm Prasertsak from Thailand. I'm not a native speaker in English. I'd apologize if my English made you confuse. >> >> Now, I'm using the ndnSIM to simulate the CCN network in my research. However, I have a problem about "SetFreshness" function on the provider side. The data freshness seems to be not working, but I'm not sure because of the less experience about this tool. >> >> This is my simple environment for testing the data freshness: >> >> Consumer <------------> intermediate node <-----------------> provider >> >> I try to send the same prefix (i.e., "/data/10") to the provider and capture the interest packet at the provider node. Hence, the interest packet is replied by the provider application with freshness attributes. (Some parts of the code are shown below) >> >> ndn::ContentObjectHeader data; >> data.SetName (Create (interest->GetName())); >> data.SetFreshness(Seconds(1.0)); >> data.SetTimestamp(Simulator::Now().GetSeconds()); >> >> At the consumer side, the consumer application tries to send the same prefix (i.e., "/data/10") again, but the interest doesn't send through the provider after the second time. The response packet came from the cache only. In my opinion, the interest packet should send through the provider when the data in the cache is expired (by SetFreshness() function ... Is correct?). >> >> My question is >> ? Have the ndnSIM supported the data freshness? >> ? How to use the data freshness of the ndnSIM? (If the data freshness had already supported.) >> Thank you very much. >> >> Regards, >> Prasertsak U. >> >> > From gniliamg at gmail.com Wed Dec 12 22:29:59 2012 From: gniliamg at gmail.com (Prasertsak U.) Date: Thu, 13 Dec 2012 13:29:59 +0700 Subject: [ndnSIM] Question about ndnSIM for Data Freshness function. In-Reply-To: <02D99731-9E8F-4163-AE31-BE05AF8B4928@ucla.edu> References: <0C40E282-7FE2-4DAE-B954-8CED0EF98208@ucla.edu> <02D99731-9E8F-4163-AE31-BE05AF8B4928@ucla.edu> Message-ID: *Thank you so much* for all *your help and* suggestion. Regards, Prasertsak. On Thu, Dec 13, 2012 at 10:24 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Prasertsak, > > I decided to spend a little bit time today to implement functionality that > you were missing. > > As of the latest commit on github > (71278d4c6011bf4f961fa79d12a2c39f3fbfdd3c) you can use the following > content store realizations that fully support Freshness in ContentObjects > - ns3::ndn::cs::Freshness::Lru > - ns3::ndn::cs::Freshness::Random > - ns3::ndn::cs::Freshness::Fifo > > (Small disclaimer. I haven't had time to thoroughly test them yet. Basic > tests working, but if you encounter a bug, please let me know.) > > I also updated documentation on the website, adding an example how to use > new realizations: > http://ndnsim.net/helpers.html#content-store-respecting-freshness-field-of-contentobjects > > Sincerely, > Alex > > On Dec 11, 2012, at 12:44 PM, Alex Afanasyev > wrote: > > > Dear Prasertsak, > > > > Though it is possible to specify the freshness parameter in the > ContentObject packet, ndnSIM does not yet have support for actually > enforcing it. Generally, as such a "cache" is just a temporary short-term > buffer, it does not really matter. You as a producer don't really have a > control for how long routers would store your data, similarly how you don't > have control for how long packets will be in routers interface queues. > > > > Actually, Content Store name for the cache in ndnSIM is a little bit > misleading, and we are planning to rename it to PacketBuffer in near future. > > > > It should be pretty straightforward to add freshness functionality > (similar how it is implemented in ndn-pit-impl.h/cc, but unfortunately I > will be only available in a week or so to work on this. > > > > Sincerely, > > Alex > > > > > > On Dec 11, 2012, at 5:55 AM, Prasertsak U. wrote: > > > >> Dear cawka (Alex Afanasyev), > >> > >> I'm Prasertsak from Thailand. I'm not a native speaker in English. I'd > apologize if my English made you confuse. > >> > >> Now, I'm using the ndnSIM to simulate the CCN network in my research. > However, I have a problem about "SetFreshness" function on the provider > side. The data freshness seems to be not working, but I'm not sure because > of the less experience about this tool. > >> > >> This is my simple environment for testing the data freshness: > >> > >> Consumer <------------> intermediate node <-----------------> provider > >> > >> I try to send the same prefix (i.e., "/data/10") to the provider and > capture the interest packet at the provider node. Hence, the interest > packet is replied by the provider application with freshness attributes. > (Some parts of the code are shown below) > >> > >> ndn::ContentObjectHeader data; > >> data.SetName (Create (interest->GetName())); > >> data.SetFreshness(Seconds(1.0)); > >> data.SetTimestamp(Simulator::Now().GetSeconds()); > >> > >> At the consumer side, the consumer application tries to send the same > prefix (i.e., "/data/10") again, but the interest doesn't send through the > provider after the second time. The response packet came from the cache > only. In my opinion, the interest packet should send through the provider > when the data in the cache is expired (by SetFreshness() function ... Is > correct?). > >> > >> My question is > >> ? Have the ndnSIM supported the data freshness? > >> ? How to use the data freshness of the ndnSIM? (If the data > freshness had already supported.) > >> Thank you very much. > >> > >> Regards, > >> Prasertsak U. > >> > >> > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Dec 13 12:02:01 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 13 Dec 2012 12:02:01 -0800 Subject: [ndnSIM] Question about ndnSIM for Data Freshness function. In-Reply-To: References: <0C40E282-7FE2-4DAE-B954-8CED0EF98208@ucla.edu> <02D99731-9E8F-4163-AE31-BE05AF8B4928@ucla.edu> Message-ID: <3AE03C41-1129-48D1-B03B-2BE70E8B5DD3@ucla.edu> Hi Prasertsak, Thanks for the reporting this bug, which didn't express itself for some reason with my compiler. I just pushed the fix on github (commit 6978611...), so now the code should compile (I have tested with on my Ubuntu with the latest boost libraries installed from the source). --- Alex On Dec 13, 2012, at 12:43 AM, Prasertsak U. wrote: > Dear Alex, > > After I compile from the last update about freshness functionality. I found some errors from a new entry as below: ( start from re-cloning the source code) > > In file included from ../src/ndnSIM/model/cs/content-store-with-freshness.h:27, > from ../src/ndnSIM/model/cs/content-store-with-freshness.cc:21: > ../src/ndnSIM/model/cs/../../utils/trie/freshness-policy.h:87: error: declaration of ?typedef struct ns3::ndn::ndnSIM::freshness_policy_traits::policy ns3::ndn::ndnSIM::freshness_policy_traits::policy::type::policy? > ../src/ndnSIM/model/cs/../../utils/trie/freshness-policy.h:57: error: changes meaning of ?policy? from ?struct ns3::ndn::ndnSIM::freshness_policy_traits::policy? > In file included from ../src/ndnSIM/model/cs/content-store-with-freshness.cc:23: > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:85: error: declaration of ?typedef struct ns3::ndn::ndnSIM::random_policy_traits::policy ns3::ndn::ndnSIM::random_policy_traits::policy::type::policy? > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:55: error: changes meaning of ?policy? from ?struct ns3::ndn::ndnSIM::random_policy_traits::policy? > [1793/1884] cxx: src/ndnSIM/model/ndn-l3-protocol.cc -> build/src/ndnSIM/model/ndn-l3-protocol.cc.1.o > In file included from ../src/ndnSIM/model/cs/content-store-impl.cc:23: > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:85: error: declaration of ?typedef struct ns3::ndn::ndnSIM::random_policy_traits::policy ns3::ndn::ndnSIM::random_policy_traits::policy::type::policy? > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:55: error: changes meaning of ?policy? from ?struct ns3::ndn::ndnSIM::random_policy_traits::policy? > [1794/1884] cxx: src/ndnSIM/utils/tracers/ndn-l3-tracer.cc -> build/src/ndnSIM/utils/tracers/ndn-l3-tracer.cc.1.o > [1795/1884] cxx: src/ndnSIM/examples/ndn-simple-with-content-freshness.cc -> build/src/ndnSIM/examples/ndn-simple-with-content-freshness.cc.3.o > In file included from ../src/ndnSIM/model/pit/ndn-pit-impl.cc:29: > ../src/ndnSIM/model/pit/../../utils/trie/random-policy.h:85: error: declaration of ?typedef struct ns3::ndn::ndnSIM::random_policy_traits::policy ns3::ndn::ndnSIM::random_policy_traits::policy::type::policy? > ../src/ndnSIM/model/pit/../../utils/trie/random-policy.h:55: error: changes meaning of ?policy? from ?struct ns3::ndn::ndnSIM::random_policy_traits::policy? > In file included from ../src/ndnSIM/model/cs/content-store-with-stats.h:27, > from ../src/ndnSIM/model/cs/content-store-with-stats.cc:21: > ../src/ndnSIM/model/cs/../../utils/trie/lifetime-stats-policy.h:75: error: declaration of ?typedef struct ns3::ndn::ndnSIM::lifetime_stats_policy_traits::policy ns3::ndn::ndnSIM::lifetime_stats_policy_traits::policy::type::policy? > ../src/ndnSIM/model/cs/../../utils/trie/lifetime-stats-policy.h:57: error: changes meaning of ?policy? from ?struct ns3::ndn::ndnSIM::lifetime_stats_policy_traits::policy? > In file included from ../src/ndnSIM/model/cs/content-store-with-stats.cc:23: > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:85: error: declaration of ?typedef struct ns3::ndn::ndnSIM::random_policy_traits::policy ns3::ndn::ndnSIM::random_policy_traits::policy::type::policy? > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:55: error: changes meaning of ?policy? from ?struct ns3::ndn::ndnSIM::random_policy_traits::policy? > > Thanks in advance! > > Regards, > Prasertsak. > > > On Thu, Dec 13, 2012 at 1:29 PM, Prasertsak U. wrote: > Thank you so much for all your help and suggestion. > > Regards, > Prasertsak. > > > On Thu, Dec 13, 2012 at 10:24 AM, Alex Afanasyev wrote: > Hi Prasertsak, > > I decided to spend a little bit time today to implement functionality that you were missing. > > As of the latest commit on github (71278d4c6011bf4f961fa79d12a2c39f3fbfdd3c) you can use the following content store realizations that fully support Freshness in ContentObjects > - ns3::ndn::cs::Freshness::Lru > - ns3::ndn::cs::Freshness::Random > - ns3::ndn::cs::Freshness::Fifo > > (Small disclaimer. I haven't had time to thoroughly test them yet. Basic tests working, but if you encounter a bug, please let me know.) > > I also updated documentation on the website, adding an example how to use new realizations: http://ndnsim.net/helpers.html#content-store-respecting-freshness-field-of-contentobjects > > Sincerely, > Alex > > On Dec 11, 2012, at 12:44 PM, Alex Afanasyev wrote: > > > Dear Prasertsak, > > > > Though it is possible to specify the freshness parameter in the ContentObject packet, ndnSIM does not yet have support for actually enforcing it. Generally, as such a "cache" is just a temporary short-term buffer, it does not really matter. You as a producer don't really have a control for how long routers would store your data, similarly how you don't have control for how long packets will be in routers interface queues. > > > > Actually, Content Store name for the cache in ndnSIM is a little bit misleading, and we are planning to rename it to PacketBuffer in near future. > > > > It should be pretty straightforward to add freshness functionality (similar how it is implemented in ndn-pit-impl.h/cc, but unfortunately I will be only available in a week or so to work on this. > > > > Sincerely, > > Alex > > > > > > On Dec 11, 2012, at 5:55 AM, Prasertsak U. wrote: > > > >> Dear cawka (Alex Afanasyev), > >> > >> I'm Prasertsak from Thailand. I'm not a native speaker in English. I'd apologize if my English made you confuse. > >> > >> Now, I'm using the ndnSIM to simulate the CCN network in my research. However, I have a problem about "SetFreshness" function on the provider side. The data freshness seems to be not working, but I'm not sure because of the less experience about this tool. > >> > >> This is my simple environment for testing the data freshness: > >> > >> Consumer <------------> intermediate node <-----------------> provider > >> > >> I try to send the same prefix (i.e., "/data/10") to the provider and capture the interest packet at the provider node. Hence, the interest packet is replied by the provider application with freshness attributes. (Some parts of the code are shown below) > >> > >> ndn::ContentObjectHeader data; > >> data.SetName (Create (interest->GetName())); > >> data.SetFreshness(Seconds(1.0)); > >> data.SetTimestamp(Simulator::Now().GetSeconds()); > >> > >> At the consumer side, the consumer application tries to send the same prefix (i.e., "/data/10") again, but the interest doesn't send through the provider after the second time. The response packet came from the cache only. In my opinion, the interest packet should send through the provider when the data in the cache is expired (by SetFreshness() function ... Is correct?). > >> > >> My question is > >> ? Have the ndnSIM supported the data freshness? > >> ? How to use the data freshness of the ndnSIM? (If the data freshness had already supported.) > >> Thank you very much. > >> > >> Regards, > >> Prasertsak U. > >> > >> > > > > > From gniliamg at gmail.com Thu Dec 13 18:32:04 2012 From: gniliamg at gmail.com (Prasertsak U.) Date: Fri, 14 Dec 2012 09:32:04 +0700 Subject: [ndnSIM] Question about ndnSIM for Data Freshness function. In-Reply-To: <3AE03C41-1129-48D1-B03B-2BE70E8B5DD3@ucla.edu> References: <0C40E282-7FE2-4DAE-B954-8CED0EF98208@ucla.edu> <02D99731-9E8F-4163-AE31-BE05AF8B4928@ucla.edu> <3AE03C41-1129-48D1-B03B-2BE70E8B5DD3@ucla.edu> Message-ID: Dear Alex, Thank you very much for your help. It works both the compiling and freshness functionality. Regards, Prasertsak. On Fri, Dec 14, 2012 at 3:02 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Prasertsak, > > Thanks for the reporting this bug, which didn't express itself for some > reason with my compiler. > > I just pushed the fix on github (commit 6978611...), so now the code > should compile (I have tested with on my Ubuntu with the latest boost > libraries installed from the source). > > --- > Alex > > On Dec 13, 2012, at 12:43 AM, Prasertsak U. wrote: > > > Dear Alex, > > > > After I compile from the last update about freshness functionality. I > found some errors from a new entry as below: ( start from re-cloning the > source code) > > > > In file included from > ../src/ndnSIM/model/cs/content-store-with-freshness.h:27, > > from > ../src/ndnSIM/model/cs/content-store-with-freshness.cc:21: > > ../src/ndnSIM/model/cs/../../utils/trie/freshness-policy.h:87: error: > declaration of ?typedef struct > ns3::ndn::ndnSIM::freshness_policy_traits::policy > ns3::ndn::ndnSIM::freshness_policy_traits::policy Hook>::type::policy? > > ../src/ndnSIM/model/cs/../../utils/trie/freshness-policy.h:57: error: > changes meaning of ?policy? from ?struct > ns3::ndn::ndnSIM::freshness_policy_traits::policy? > > In file included from > ../src/ndnSIM/model/cs/content-store-with-freshness.cc:23: > > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:85: error: > declaration of ?typedef struct > ns3::ndn::ndnSIM::random_policy_traits::policy > ns3::ndn::ndnSIM::random_policy_traits::policy Hook>::type::policy? > > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:55: error: > changes meaning of ?policy? from ?struct > ns3::ndn::ndnSIM::random_policy_traits::policy? > > [1793/1884] cxx: src/ndnSIM/model/ndn-l3-protocol.cc -> > build/src/ndnSIM/model/ndn-l3-protocol.cc.1.o > > In file included from ../src/ndnSIM/model/cs/content-store-impl.cc:23: > > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:85: error: > declaration of ?typedef struct > ns3::ndn::ndnSIM::random_policy_traits::policy > ns3::ndn::ndnSIM::random_policy_traits::policy Hook>::type::policy? > > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:55: error: > changes meaning of ?policy? from ?struct > ns3::ndn::ndnSIM::random_policy_traits::policy? > > [1794/1884] cxx: src/ndnSIM/utils/tracers/ndn-l3-tracer.cc -> > build/src/ndnSIM/utils/tracers/ndn-l3-tracer.cc.1.o > > [1795/1884] cxx: > src/ndnSIM/examples/ndn-simple-with-content-freshness.cc -> > build/src/ndnSIM/examples/ndn-simple-with-content-freshness.cc.3.o > > In file included from ../src/ndnSIM/model/pit/ndn-pit-impl.cc:29: > > ../src/ndnSIM/model/pit/../../utils/trie/random-policy.h:85: error: > declaration of ?typedef struct > ns3::ndn::ndnSIM::random_policy_traits::policy > ns3::ndn::ndnSIM::random_policy_traits::policy Hook>::type::policy? > > ../src/ndnSIM/model/pit/../../utils/trie/random-policy.h:55: error: > changes meaning of ?policy? from ?struct > ns3::ndn::ndnSIM::random_policy_traits::policy? > > In file included from > ../src/ndnSIM/model/cs/content-store-with-stats.h:27, > > from > ../src/ndnSIM/model/cs/content-store-with-stats.cc:21: > > ../src/ndnSIM/model/cs/../../utils/trie/lifetime-stats-policy.h:75: > error: declaration of ?typedef struct > ns3::ndn::ndnSIM::lifetime_stats_policy_traits::policy Hook> ns3::ndn::ndnSIM::lifetime_stats_policy_traits::policy Container, Hook>::type::policy? > > ../src/ndnSIM/model/cs/../../utils/trie/lifetime-stats-policy.h:57: > error: changes meaning of ?policy? from ?struct > ns3::ndn::ndnSIM::lifetime_stats_policy_traits::policy Hook>? > > In file included from > ../src/ndnSIM/model/cs/content-store-with-stats.cc:23: > > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:85: error: > declaration of ?typedef struct > ns3::ndn::ndnSIM::random_policy_traits::policy > ns3::ndn::ndnSIM::random_policy_traits::policy Hook>::type::policy? > > ../src/ndnSIM/model/cs/../../utils/trie/random-policy.h:55: error: > changes meaning of ?policy? from ?struct > ns3::ndn::ndnSIM::random_policy_traits::policy? > > > > Thanks in advance! > > > > Regards, > > Prasertsak. > > > > > > On Thu, Dec 13, 2012 at 1:29 PM, Prasertsak U. > wrote: > > Thank you so much for all your help and suggestion. > > > > Regards, > > Prasertsak. > > > > > > On Thu, Dec 13, 2012 at 10:24 AM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > > Hi Prasertsak, > > > > I decided to spend a little bit time today to implement functionality > that you were missing. > > > > As of the latest commit on github > (71278d4c6011bf4f961fa79d12a2c39f3fbfdd3c) you can use the following > content store realizations that fully support Freshness in ContentObjects > > - ns3::ndn::cs::Freshness::Lru > > - ns3::ndn::cs::Freshness::Random > > - ns3::ndn::cs::Freshness::Fifo > > > > (Small disclaimer. I haven't had time to thoroughly test them yet. Basic > tests working, but if you encounter a bug, please let me know.) > > > > I also updated documentation on the website, adding an example how to > use new realizations: > http://ndnsim.net/helpers.html#content-store-respecting-freshness-field-of-contentobjects > > > > Sincerely, > > Alex > > > > On Dec 11, 2012, at 12:44 PM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > > > > > Dear Prasertsak, > > > > > > Though it is possible to specify the freshness parameter in the > ContentObject packet, ndnSIM does not yet have support for actually > enforcing it. Generally, as such a "cache" is just a temporary short-term > buffer, it does not really matter. You as a producer don't really have a > control for how long routers would store your data, similarly how you don't > have control for how long packets will be in routers interface queues. > > > > > > Actually, Content Store name for the cache in ndnSIM is a little bit > misleading, and we are planning to rename it to PacketBuffer in near future. > > > > > > It should be pretty straightforward to add freshness functionality > (similar how it is implemented in ndn-pit-impl.h/cc, but unfortunately I > will be only available in a week or so to work on this. > > > > > > Sincerely, > > > Alex > > > > > > > > > On Dec 11, 2012, at 5:55 AM, Prasertsak U. wrote: > > > > > >> Dear cawka (Alex Afanasyev), > > >> > > >> I'm Prasertsak from Thailand. I'm not a native speaker in English. > I'd apologize if my English made you confuse. > > >> > > >> Now, I'm using the ndnSIM to simulate the CCN network in my research. > However, I have a problem about "SetFreshness" function on the provider > side. The data freshness seems to be not working, but I'm not sure because > of the less experience about this tool. > > >> > > >> This is my simple environment for testing the data freshness: > > >> > > >> Consumer <------------> intermediate node <-----------------> provider > > >> > > >> I try to send the same prefix (i.e., "/data/10") to the provider and > capture the interest packet at the provider node. Hence, the interest > packet is replied by the provider application with freshness attributes. > (Some parts of the code are shown below) > > >> > > >> ndn::ContentObjectHeader data; > > >> data.SetName (Create (interest->GetName())); > > >> data.SetFreshness(Seconds(1.0)); > > >> data.SetTimestamp(Simulator::Now().GetSeconds()); > > >> > > >> At the consumer side, the consumer application tries to send the same > prefix (i.e., "/data/10") again, but the interest doesn't send through the > provider after the second time. The response packet came from the cache > only. In my opinion, the interest packet should send through the provider > when the data in the cache is expired (by SetFreshness() function ... Is > correct?). > > >> > > >> My question is > > >> ? Have the ndnSIM supported the data freshness? > > >> ? How to use the data freshness of the ndnSIM? (If the data > freshness had already supported.) > > >> Thank you very much. > > >> > > >> Regards, > > >> Prasertsak U. > > >> > > >> > > > > > > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From natalya.rozhnova at lip6.fr Sat Dec 15 12:36:34 2012 From: natalya.rozhnova at lip6.fr (Natalya Rozhnova) Date: Sun, 16 Dec 2012 03:36:34 +0700 Subject: [ndnSIM] Interest packet size Message-ID: <212541355603794@web13g.yandex.ru> An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Dec 15 13:50:07 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 15 Dec 2012 13:50:07 -0800 Subject: [ndnSIM] Interest packet size In-Reply-To: <212541355603794@web13g.yandex.ru> References: <212541355603794@web13g.yandex.ru> Message-ID: <057BD409-3FE8-4B08-BCA9-201CDEE79A60@ucla.edu> Interest packet by definition don't carry the payload and (honestly) I'm not sure how large interest sizes (especially 20-40kbytes). Given that, if you really want to, you still can choose and vary extremely large interest names, resulting in large interest packet sizes and all other implications (e.g., each PIT entry will be also large). --- Alex On Dec 15, 2012, at 12:36 PM, Natalya Rozhnova wrote: > Hi Alex! > > Is there in ndnSIM an option to make a Client generate the Interests of different sizes? > I mean the randomized virtual packet sizes within some interval (e.g. from 20 to 40 kbytes etc.)? > > Thanks! > Natalya > _______________________________________________ > 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 Dec 17 09:47:29 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 17 Dec 2012 09:47:29 -0800 Subject: [ndnSIM] Compilation failure because of undefined reference References: Message-ID: <8BE401AF-D365-4B7C-AFB4-C72FBCC2B0B9@ucla.edu> Begin forwarded message: > From: "T.Ogawara" > > Hi, > I'm trying to create custom apps on ndnSIM in /src/ndnSIM/apps. > But an error occured on compilation. > > Here is the part of code. > > #include "ns3/ndn-content-store.h" > > void Chronos::SendMsg(){ > ContentObjectTail tail; > Ptr header = Create (); > > header->SetName (Create ("/prefix")); > > > Ptr packet = Create (1024); > packet->AddHeader (*header); > packet->AddTrailer (tail); > > ContentStore::GetContentStore(GetNode())->ContentStore::Add(header,packet); > */ > } > > I hoe this works, but this error occuered. > > ./libns3-dev-ndnSIM-debug.so: undefined reference to `ns3::ndn::ContentStore::Add(ns3::Ptr, ns3::Ptr)' > collect2: ld returned 1 exit status > > I tried but could not fix this. > Could you give me some hints to solve this? > Thank you. From alexander.afanasyev at ucla.edu Mon Dec 17 10:44:57 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 17 Dec 2012 10:44:57 -0800 Subject: [ndnSIM] Compilation failure because of undefined reference In-Reply-To: <8BE401AF-D365-4B7C-AFB4-C72FBCC2B0B9@ucla.edu> References: <8BE401AF-D365-4B7C-AFB4-C72FBCC2B0B9@ucla.edu> Message-ID: <3F19D630-F001-4F75-AE86-5036FDBF84CD@ucla.edu> Hi! Why do you put packet directly to content store from the app. It was never an intended behavior... Normally, you would reply to Interests by sending a data packet using m_protocolHandler(packet) call in a ndn::App-derivative class. If you really want to proceed with manually putting packets to the content store, then you'll need a couple of changes. First, "packet" for the second parameter should be the payload only, not the full packet with NDN headers. Second, you need to change your call to something like ``ContentStore::GetContentStore(GetNode())->Add(header,packet);``. The way you do it cannot work, as you're explicitly asking to call Add method of ContentStore class (base class), where this method is defined as pure virtual and never defined. --- Alex >> From: "T.Ogawara" >> >> Hi, >> I'm trying to create custom apps on ndnSIM in /src/ndnSIM/apps. >> But an error occured on compilation. >> >> Here is the part of code. >> >> #include "ns3/ndn-content-store.h" >> >> void Chronos::SendMsg(){ >> ContentObjectTail tail; >> Ptr header = Create (); >> >> header->SetName (Create ("/prefix")); >> >> >> Ptr packet = Create (1024); >> packet->AddHeader (*header); >> packet->AddTrailer (tail); >> >> ContentStore::GetContentStore(GetNode())->ContentStore::Add(header,packet); >> */ >> } >> >> I hoe this works, but this error occuered. >> >> ./libns3-dev-ndnSIM-debug.so: undefined reference to `ns3::ndn::ContentStore::Add(ns3::Ptr, ns3::Ptr)' >> collect2: ld returned 1 exit status >> >> I tried but could not fix this. >> Could you give me some hints to solve this? >> Thank you. > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From shock.jiang at gmail.com Mon Dec 24 19:09:45 2012 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Tue, 25 Dec 2012 11:09:45 +0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM Message-ID: Dear All, I have implemented an app which requests contents following Zipf-Mandelbrot distribution (number of Content frequency Distribution). This class is subclass of ConsumerCbr. My change includes: 1) modify ConsumerCbr.h, make its private members to protected, which allow ConsumberZipfManbelbrot to access those members. 2) add an 2 file, consumber-zipf-mandelbrot.{h, cc} in ndnSIM/apps/ Usage is very simple, just as what you do to ConsumerCbr, ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerZipfMandelbrot"); //ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); consumerHelper.SetPrefix (prefix); consumerHelper.SetAttribute ("Frequency", StringValue ("100")); // 100 interests a second //consumerHelper.SetAttribute ("Randomize", StringValue ("uniform")); // 100 interests a second of course, I have written some script to test it, I put it into ndnSIM/example/ndn-zipf-mandelbrot.cc I will share it with github with Alex's help, I hope it may help you. thanks My Regards, Xiaoke Jiang Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China From alexander.afanasyev at ucla.edu Tue Dec 25 00:33:49 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 25 Dec 2012 00:33:49 -0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: References: Message-ID: Thanks Xiaoke, I have incorporated your pull request with several minor changes. Also, I've made a documentation section on ndnsim, including your simulation results that compare with theoretical zipf distribution: http://ndnsim.net/applications.html#consumerzipfmandelbrot. Sincerely, Alex On Dec 24, 2012, at 7:09 PM, Xiaoke Jiang wrote: > Dear All, > > I have implemented an app which requests contents following Zipf-Mandelbrot distribution (number of Content frequency Distribution). This class is subclass of ConsumerCbr. > > My change includes: > 1) modify ConsumerCbr.h, make its private members to protected, which allow ConsumberZipfManbelbrot to access those members. > 2) add an 2 file, consumber-zipf-mandelbrot.{h, cc} in ndnSIM/apps/ > > Usage is very simple, just as what you do to ConsumerCbr, > > ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerZipfMandelbrot"); > //ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); > consumerHelper.SetPrefix (prefix); > consumerHelper.SetAttribute ("Frequency", StringValue ("100")); // 100 interests a second > //consumerHelper.SetAttribute ("Randomize", StringValue ("uniform")); // 100 interests a second > > of course, I have written some script to test it, I put it into ndnSIM/example/ndn-zipf-mandelbrot.cc > > I will share it with github with Alex's help, I hope it may help you. > > > > > thanks > > My Regards, > Xiaoke Jiang > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From shock.jiang at gmail.com Tue Dec 25 00:50:44 2012 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Tue, 25 Dec 2012 16:50:44 +0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: References: Message-ID: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> Thank you Alex, but would you please change it 4th figure (duration=1000) to the attached one. As to q and s, the two parameters are very important, http://en.wikipedia.org/wiki/Zipf%E2%80%93Mandelbrot_law. It's the parameters of Zipf-Mandelbrot PMF. So I will add setter and getter functions later. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Dec 25, 2012, at 4:33 PM, Alex Afanasyev wrote: > Thanks Xiaoke, > > I have incorporated your pull request with several minor changes. Also, I've made a documentation section on ndnsim, including your simulation results that compare with theoretical zipf distribution: http://ndnsim.net/applications.html#consumerzipfmandelbrot. > > Sincerely, > Alex > > > On Dec 24, 2012, at 7:09 PM, Xiaoke Jiang wrote: > >> Dear All, >> >> I have implemented an app which requests contents following Zipf-Mandelbrot distribution (number of Content frequency Distribution). This class is subclass of ConsumerCbr. >> >> My change includes: >> 1) modify ConsumerCbr.h, make its private members to protected, which allow ConsumberZipfManbelbrot to access those members. >> 2) add an 2 file, consumber-zipf-mandelbrot.{h, cc} in ndnSIM/apps/ >> >> Usage is very simple, just as what you do to ConsumerCbr, >> >> ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerZipfMandelbrot"); >> //ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); >> consumerHelper.SetPrefix (prefix); >> consumerHelper.SetAttribute ("Frequency", StringValue ("100")); // 100 interests a second >> //consumerHelper.SetAttribute ("Randomize", StringValue ("uniform")); // 100 interests a second >> >> of course, I have written some script to test it, I put it into ndnSIM/example/ndn-zipf-mandelbrot.cc >> >> I will share it with github with Alex's help, I hope it may help you. >> >> >> >> >> thanks >> >> My Regards, >> Xiaoke Jiang >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: N100-Frq100-Duration1000.pdf Type: application/pdf Size: 21030 bytes Desc: not available URL: -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Dec 25 01:11:43 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 25 Dec 2012 01:11:43 -0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> References: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> Message-ID: <35266774-3413-4DF6-B18A-B4349BAF7DAF@ucla.edu> Sure. I have updated the figure. Btw, all documentation is stored in ndnsim repository under docs/sources in sphinx format (http://pypi.python.org/pypi/Sphinx). You can also add corrections to the documentation and I can later "compile" and update docs on http://ndnsim.net website. --- Alex On Dec 25, 2012, at 12:50 AM, Xiaoke Jiang wrote: > Thank you Alex, but would you please change it 4th figure (duration=1000) to the attached one. > > As to q and s, the two parameters are very important, http://en.wikipedia.org/wiki/Zipf%E2%80%93Mandelbrot_law. It's the parameters of Zipf-Mandelbrot PMF. So I will add setter and getter functions later. > > thanks > > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Dec 25, 2012, at 4:33 PM, Alex Afanasyev wrote: > >> Thanks Xiaoke, >> >> I have incorporated your pull request with several minor changes. Also, I've made a documentation section on ndnsim, including your simulation results that compare with theoretical zipf distribution: http://ndnsim.net/applications.html#consumerzipfmandelbrot. >> >> Sincerely, >> Alex >> >> >> On Dec 24, 2012, at 7:09 PM, Xiaoke Jiang wrote: >> >>> Dear All, >>> >>> I have implemented an app which requests contents following Zipf-Mandelbrot distribution (number of Content frequency Distribution). This class is subclass of ConsumerCbr. >>> >>> My change includes: >>> 1) modify ConsumerCbr.h, make its private members to protected, which allow ConsumberZipfManbelbrot to access those members. >>> 2) add an 2 file, consumber-zipf-mandelbrot.{h, cc} in ndnSIM/apps/ >>> >>> Usage is very simple, just as what you do to ConsumerCbr, >>> >>> ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerZipfMandelbrot"); >>> //ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); >>> consumerHelper.SetPrefix (prefix); >>> consumerHelper.SetAttribute ("Frequency", StringValue ("100")); // 100 interests a second >>> //consumerHelper.SetAttribute ("Randomize", StringValue ("uniform")); // 100 interests a second >>> >>> of course, I have written some script to test it, I put it into ndnSIM/example/ndn-zipf-mandelbrot.cc >>> >>> I will share it with github with Alex's help, I hope it may help you. >>> >>> >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From shock.jiang at gmail.com Tue Dec 25 01:14:45 2012 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Tue, 25 Dec 2012 17:14:45 +0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: <35266774-3413-4DF6-B18A-B4349BAF7DAF@ucla.edu> References: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> <35266774-3413-4DF6-B18A-B4349BAF7DAF@ucla.edu> Message-ID: Thank you! I will make it perfect then ask you to check it. thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Dec 25, 2012, at 5:11 PM, Alex Afanasyev wrote: > Sure. I have updated the figure. > > Btw, all documentation is stored in ndnsim repository under docs/sources in sphinx format (http://pypi.python.org/pypi/Sphinx). You can also add corrections to the documentation and I can later "compile" and update docs on http://ndnsim.net website. > > --- > Alex > > On Dec 25, 2012, at 12:50 AM, Xiaoke Jiang wrote: > >> Thank you Alex, but would you please change it 4th figure (duration=1000) to the attached one. >> >> As to q and s, the two parameters are very important, http://en.wikipedia.org/wiki/Zipf%E2%80%93Mandelbrot_law. It's the parameters of Zipf-Mandelbrot PMF. So I will add setter and getter functions later. >> >> thanks >> >> >> My Regards, >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Dec 25, 2012, at 4:33 PM, Alex Afanasyev wrote: >> >>> Thanks Xiaoke, >>> >>> I have incorporated your pull request with several minor changes. Also, I've made a documentation section on ndnsim, including your simulation results that compare with theoretical zipf distribution: http://ndnsim.net/applications.html#consumerzipfmandelbrot. >>> >>> Sincerely, >>> Alex >>> >>> >>> On Dec 24, 2012, at 7:09 PM, Xiaoke Jiang wrote: >>> >>>> Dear All, >>>> >>>> I have implemented an app which requests contents following Zipf-Mandelbrot distribution (number of Content frequency Distribution). This class is subclass of ConsumerCbr. >>>> >>>> My change includes: >>>> 1) modify ConsumerCbr.h, make its private members to protected, which allow ConsumberZipfManbelbrot to access those members. >>>> 2) add an 2 file, consumber-zipf-mandelbrot.{h, cc} in ndnSIM/apps/ >>>> >>>> Usage is very simple, just as what you do to ConsumerCbr, >>>> >>>> ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerZipfMandelbrot"); >>>> //ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); >>>> consumerHelper.SetPrefix (prefix); >>>> consumerHelper.SetAttribute ("Frequency", StringValue ("100")); // 100 interests a second >>>> //consumerHelper.SetAttribute ("Randomize", StringValue ("uniform")); // 100 interests a second >>>> >>>> of course, I have written some script to test it, I put it into ndnSIM/example/ndn-zipf-mandelbrot.cc >>>> >>>> I will share it with github with Alex's help, I hope it may help you. >>>> >>>> >>>> >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Tue Dec 25 08:16:55 2012 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Wed, 26 Dec 2012 00:16:55 +0800 Subject: [ndnSIM] color different traffic from apps Message-ID: Dear all, I want to color different traffic from apps, is there any solution? thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Dec 25 12:23:10 2012 From: alexander.afanasyev at ucla.edu (Alexander Afanasyev) Date: Tue, 25 Dec 2012 12:23:10 -0800 Subject: [ndnSIM] color different traffic from apps In-Reply-To: References: Message-ID: <2384963D-63B8-4E7E-AB9C-68042BE44435@icloud.com> Hi Xiaoke, Which color do you mean? In the visualizer or somewhere else? --- Alex On Dec 25, 2012, at 8:16 AM, Xiaoke Jiang wrote: > Dear all, > I want to color different traffic from apps, is there any solution? > > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China From alexander.afanasyev at ucla.edu Tue Dec 25 19:30:15 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 25 Dec 2012 19:30:15 -0800 Subject: [ndnSIM] question for flooding In-Reply-To: <201212261007410417793@qq.com> References: <201212261007410417793@qq.com> Message-ID: Hi Aaron, Yes. The current Flooding strategies (Flooding and SmartFlooding) only "flood" to interfaces that are specified in a specific FIB entry, except the incoming interest. If you don't care about FIB entries, you can just set up a / entry and add there all interfaces (by using SetDefaultRoutes(true) in ndn::StackHelper, http://ndnsim.net/helpers.html#default-routes). If you still care about entries, why don't you just add missing interfaces to entries? Is there a reason of not doing so? In any case, if you really want to use all available interfaces and don't want them to add to FIB entries, it is still possible. To do so, I would recommend to create a new forwarding strategy based on Flooding. Instead of iterating over interfaces in FIB entry, you can do the following: Ptr ndn = this->GetObject (); for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) { Ptr face = ndn->GetFace (faceNum); ... // almost exact copy of the rest ... } --- Alex On Dec 25, 2012, at 6:07 PM, aaronishere wrote: > Hi, Alex > > In flooding.cc > BOOST_FOREACH(const fib:FaceMetric &merticFace, pitEntry->GetFibEntry()-) > { > ................................ > } > > It seems that interests only be flooded to the outgoing interfaces which exists in the FIB, is that correct? > I wonder how to flood the interests to all interfaces except the incoming interface even though there's no interfaces in the FIB for specific prefixes. > Is there any solutions? > Thanks! > > Aaron From alexander.afanasyev at ucla.edu Tue Dec 25 19:33:42 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 25 Dec 2012 19:33:42 -0800 Subject: [ndnSIM] color different traffic from apps In-Reply-To: <899FFBEB-2A08-4851-98E0-5FFC5399B705@gmail.com> References: <2384963D-63B8-4E7E-AB9C-68042BE44435@icloud.com> <899FFBEB-2A08-4851-98E0-5FFC5399B705@gmail.com> Message-ID: <19789565-B4CC-4B3F-BE73-0F961C4D99B8@ucla.edu> Hi Xiaoke, To the best of my knowledge, in order to put different colors in the visualizer for different traffic (e.g., packets from different senders) you may need to add some non-trivial changes to the visualizer. I was thinking myself that it would be great to show Interest and Data flows separately, but unfortunately haven't find any solution so far. --- Alex On Dec 25, 2012, at 5:56 PM, Xiaoke Jiang wrote: > Hi Alex, > It is the visualizer part. 2 app instances send Interests concurrently. I want to give different color to Interest based on its sender node. > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Dec 26, 2012, at 4:23 AM, Alexander Afanasyev wrote: > >> Hi Xiaoke, >> >> Which color do you mean? In the visualizer or somewhere else? >> >> --- >> Alex >> >> On Dec 25, 2012, at 8:16 AM, Xiaoke Jiang wrote: >> >>> Dear all, >>> I want to color different traffic from apps, is there any solution? >>> >>> >>> thanks >>> >>> My Regards, >>> Xiaoke Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China >> > From ahmed.waliullah.kazi at gmail.com Fri Dec 28 00:37:39 2012 From: ahmed.waliullah.kazi at gmail.com (Wali) Date: Fri, 28 Dec 2012 02:37:39 -0600 Subject: [ndnSIM] CCN Segmentation Message-ID: Hi Alex, I was skimming through the ndnSIIM documentation. I did not find reference to any notion of segmentation. Is the present implementation following the simple model of one interest packet for one object, which is satisfied by one data packet? Hence, presently, we cannot have very large objects which will be requested with multiple interest packets and satisfied with corresponding data packets? Thank you very much for your time. Best regards, Wali. -------------- next part -------------- An HTML attachment was scrubbed... URL: From saeid.montazeri at gmail.com Fri Dec 28 01:42:43 2012 From: saeid.montazeri at gmail.com (Saeid Montazeri) Date: Fri, 28 Dec 2012 17:42:43 +0800 Subject: [ndnSIM] CCN Segmentation In-Reply-To: References: Message-ID: Hi Wali, I have a little bit experience in ndnSIM. Alex please correct me if I am wrong. You can have a content with several packets by setting MaxSeq attribute of CcnxAppHelper class. For example I have added the bold line bellow to the code in ndn-grid.cc. By the line, I asked CcnxAllHelper to generate Interest for 250 Data packets of the content with name "/prefix". ("/prefix/0", "/prefix/1", .. "/prefix/249") std::string prefix = "/prefix"; CcnxAppHelper consumerHelper ("ns3::CcnxConsumerCbr"); consumerHelper.SetPrefix (prefix); consumerHelper.SetAttribute ("Frequency", StringValue ("10")); // 10 interests a second *consumerHelper.SetAttribute ("MaxSeq", StringValue("250")); * Best Regards, Saeid On Fri, Dec 28, 2012 at 4:37 PM, Wali wrote: > Hi Alex, > > I was skimming through the ndnSIIM documentation. I did not find reference > to any notion of segmentation. Is the present implementation following the > simple model of one interest packet for one object, which is satisfied by > one data packet? Hence, presently, we cannot have very large objects which > will be requested with multiple interest packets and satisfied > with corresponding data packets? > > Thank you very much for your time. > > Best regards, > Wali. > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Dec 28 12:09:20 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 28 Dec 2012 12:09:20 -0800 Subject: [ndnSIM] CCN Segmentation In-Reply-To: References: Message-ID: <882A9D34-68B8-4965-9118-304B98AB4544@ucla.edu> Hi Wali, In the available reference applications, such as ConsumerCbr, it is assumed that each Interest requesting a unique piece of content object. This uniqueness is achieved by adding a sequence number to the end of the configured prefix. This request pattern can be interpreted in many other ways. For example Saeid's example can be considered as a series of Interests for one big file, which is split into 250 content objects. I'm not entirely sure why you're saying that "...we cannot have very large objects which will be requested with multiple interest packets and satisfied with corresponding data packets..." Each interest corresponds to one content object. Which sequence numbers represent a particular data can be totally independent. In addition, if you have specific needs, you can always write a custom application, as explained here http://ndnsim.net/applications.html#custom-applications, which gives you a full control over what will be in requests (Interests) and what will be in replies (ContentObjects). Sincerely, Alex PS Recently a lot of things got renamed, so the code that Saeid gave would look a little bit differently: std::string prefix = "/prefix"; ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); consumerHelper.SetPrefix (prefix); consumerHelper.SetAttribute ("Frequency", StringValue ("10")); // 10 interests a second consumerHelper.SetAttribute ("MaxSeq", StringValue("250")); On Dec 28, 2012, at 1:42 AM, Saeid Montazeri wrote: > Hi Wali, > > I have a little bit experience in ndnSIM. > > Alex please correct me if I am wrong. > > You can have a content with several packets by setting MaxSeq attribute of CcnxAppHelper class. > For example I have added the bold line bellow to the code in ndn-grid.cc. By the line, I asked CcnxAllHelper to generate Interest for 250 Data packets of the content with name "/prefix". ("/prefix/0", "/prefix/1", .. "/prefix/249") > > std::string prefix = "/prefix"; > > CcnxAppHelper consumerHelper ("ns3::CcnxConsumerCbr"); > consumerHelper.SetPrefix (prefix); > consumerHelper.SetAttribute ("Frequency", StringValue ("10")); // 10 interests a second > consumerHelper.SetAttribute ("MaxSeq", StringValue("250")); > > > Best Regards, > Saeid > > > On Fri, Dec 28, 2012 at 4:37 PM, Wali wrote: > Hi Alex, > > I was skimming through the ndnSIIM documentation. I did not find reference to any notion of segmentation. Is the present implementation following the simple model of one interest packet for one object, which is satisfied by one data packet? Hence, presently, we cannot have very large objects which will be requested with multiple interest packets and satisfied with corresponding data packets? > > Thank you very much for your time. > > Best regards, > Wali. > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Fri Dec 28 22:02:56 2012 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Sat, 29 Dec 2012 14:02:56 +0800 Subject: [ndnSIM] How to make the Content Store Size to 0 Message-ID: <22C8F80D-64AA-4250-81F0-44C8053529FF@gmail.com> Dear all, In my experiment, I want to make the size of content store to be 0, in order to compare with others. Is it possible? thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Dec 28 22:37:46 2012 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 28 Dec 2012 22:37:46 -0800 Subject: [ndnSIM] How to make the Content Store Size to 0 In-Reply-To: <22C8F80D-64AA-4250-81F0-44C8053529FF@gmail.com> References: <22C8F80D-64AA-4250-81F0-44C8053529FF@gmail.com> Message-ID: <2C61A170-3457-4853-99B7-A73E893388CB@ucla.edu> If by 0 you mean to completely disable it, then I would recommend (for now) to create a new content store with trivial implementation of ndn::ContentStore pure virtual functions. Setting 0 for existing implementations, as you probably already figured out, make content store unlimited. --- Alex On Dec 28, 2012, at 10:02 PM, Xiaoke Jiang wrote: > Dear all, > In my experiment, I want to make the size of content store to be 0, in order to compare with others. Is it possible? > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: