From huyao0107 at gmail.com Mon Apr 1 08:59:29 2013 From: huyao0107 at gmail.com (Smallcat) Date: Tue, 2 Apr 2013 00:59:29 +0900 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: <7226EB61-941D-4610-A6A9-EEBD38D2C184@ucla.edu> References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> <7226EB61-941D-4610-A6A9-EEBD38D2C184@ucla.edu> Message-ID: <340D7BC1-6A77-42BD-9F90-E31789B9C2E3@gmail.com> Hi Alex, I see. Thanks. Just now I read your past reply to face Id. I am a little confused by the difference between the one in AddRoute() and method Face::GetId(). The former face Id is specified by face number which is based on device id on the Node (0, 1?2...). The latter face Id is just a unique numerical ID of the face on the specific node and doesn't imply anything else (e.g., face with ID 2 doesn't mean there are 3 faces on the node) as you said before. Then they are the same one or different? Which one should I use to identify the unique one face for a ndn router? Thanks a lot! Regards, huyao ? 2013-4-1?3:20?Alex Afanasyev ??? > Hi huyao, > > Yes, "/" represents a name with 0 components, so you're right that ...m_prefix->size() will return 0 for such an entry. > > --- > Alex > > On Mar 31, 2013, at 8:36 AM, yao hu wrote: > >> Hi Alex, >> >> I understand what you mean. In ndnsim, setting forwarding strategy is meaningless if routes are not configured. Now I have made some progress. I am sorry for bothering you to check the following.. >> >> When setting up default FIB entries using StackHelper::SetDefaultRoutes() call that is to let each node/router have a FIB entry to / prefix, containing all available faces. So for the prefix "/"(class Name), its size() == 0? (pitEntry->GetFibEntry ()->m_prefix->size() == 0?) >> >> Thanks a lot! >> >> Regards, >> huyao >> >> >> 2013/3/31 Alex Afanasyev >> Looks good. >> >> Your forwarding strategy has full control on how Interests are forwarded, so you're free to ignore the contents suggested faces in the FIB entry. >> >> --- >> Alex >> >> On Mar 30, 2013, at 9:34 PM, yao hu wrote: >> >>> Hi Alex, >>> >>> Thanks for your reply. That means SetDefaultRoutes(true) does not conflict with my later implementation in ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on nodes, the following codes is ok? >>> >>> ndn::StackHelper ccnxHelper; >>> ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy"); >>> ccnxHelper.SetDefaultRoutes (true); >>> ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", >>> "MaxSize", "1"); // ! Attention ! If set to 0, then MaxSize is infinite >>> ccnxHelper.InstallAll (); >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/3/31 Alex Afanasyev >>> Hi huyao, >>> >>> You still have to have an entry in FIB that corresponds to forwarded interests. This entry is part of overall logic to forward interests, data, and record data performance stats for the forwarded data. >>> >>> In your case, you can have an entry that corresponds to "/" prefix. The easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), which will create this entry and fill with all available faces (which you can ignore later). >>> >>> --- >>> Alex >>> >>> On Mar 30, 2013, at 8:33 PM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> I see. I forgot about it. Thanks for your explanation. I am sorry I have one question about flooding strategy in ndnsim. >>>> >>>> I saw your reply http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that mentions how to flood to all available faces not listed in FIB. Now I assume that when ndnsim simulation starts, I do not manually configure FIB routes by AddRoute, that is, FIB on each node is empty, and let each node forward the incoming interest to all available faces and don't want them to add to FIB entries by the following >>>> >>>> Ptr ndn = this->GetObject (); >>>> for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) >>>> { >>>> Ptr outFace = ndn->GetFace (faceNum); >>>> TrySendOutInterest (inFace, outFace, header, origPacket, pitEntry); >>>> } >>>> >>>> However the interest will be not forwarded from any face and it seems no interest packet is produced. What is wrong with it? Thanks a lot. >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> >>>> 2013/3/31 Alex Afanasyev >>>> Hi huyao, >>>> >>>> The data structure that stores ordered Face instances in FIB behaves like any other STL container: >>>> begin () returns iterator to first element in the container >>>> end () returns a special iterator, indicating element just after the last valid element >>>> >>>> In other words, end () is never an iterator to a valid element in the container, and situations when begin () == end () means that the container has no elements. If there is at least one element in the container, begin () will return iterator to a valid first element. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> Thanks for your reply to the previous question about ndnsim update. >>>>> >>>>> Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? >>>>> >>>>> I am sorry for my confusing expression. Thank you very much! >>>>> >>>>> Regards, >>>>> huyao >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 1 10:31:23 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 1 Apr 2013 10:31:23 -0700 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: <340D7BC1-6A77-42BD-9F90-E31789B9C2E3@gmail.com> References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> <7226EB61-941D-4610-A6A9-EEBD38D2C184@ucla.edu> <340D7BC1-6A77-42BD-9F90-E31789B9C2E3@gmail.com> Message-ID: <8EC11393-3964-406D-BE9B-349A56490BD2@ucla.edu> Hi huyao, First of all, if you have a pointer to Face object, you don't need to get ID for AddRoute, as supplying Ptr is the most efficient way. As for ids, they are the same for both used by AddRoute and returned by GetId. There could be some inconsistencies in documentation that should be corrected, but I couldn't find where you read about "based on device id on the node"? Can you point to the documentation page/source code? Thanks, Alex On Apr 1, 2013, at 8:59 AM, Smallcat wrote: > Hi Alex, > > I see. Thanks. > > Just now I read your past reply to face Id. I am a little confused by the difference between the one in AddRoute() and method Face::GetId(). The former face Id is specified by face number which is based on device id on the Node (0, 1?2...). The latter face Id is just a unique numerical ID of the face on the specific node and doesn't imply anything else (e.g., face with ID 2 doesn't mean there are 3 faces on the node) as you said before. Then they are the same one or different? Which one should I use to identify the unique one face for a ndn router? > > Thanks a lot! > > Regards, > huyao > > > ? 2013-4-1?3:20?Alex Afanasyev ??? > >> Hi huyao, >> >> Yes, "/" represents a name with 0 components, so you're right that ...m_prefix->size() will return 0 for such an entry. >> >> --- >> Alex >> >> On Mar 31, 2013, at 8:36 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> I understand what you mean. In ndnsim, setting forwarding strategy is meaningless if routes are not configured. Now I have made some progress. I am sorry for bothering you to check the following.. >>> >>> When setting up default FIB entries using StackHelper::SetDefaultRoutes() call that is to let each node/router have a FIB entry to / prefix, containing all available faces. So for the prefix "/"(class Name), its size() == 0? (pitEntry->GetFibEntry ()->m_prefix->size() == 0?) >>> >>> Thanks a lot! >>> >>> Regards, >>> huyao >>> >>> >>> 2013/3/31 Alex Afanasyev >>> Looks good. >>> >>> Your forwarding strategy has full control on how Interests are forwarded, so you're free to ignore the contents suggested faces in the FIB entry. >>> >>> --- >>> Alex >>> >>> On Mar 30, 2013, at 9:34 PM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> Thanks for your reply. That means SetDefaultRoutes(true) does not conflict with my later implementation in ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on nodes, the following codes is ok? >>>> >>>> ndn::StackHelper ccnxHelper; >>>> ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy"); >>>> ccnxHelper.SetDefaultRoutes (true); >>>> ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", >>>> "MaxSize", "1"); // ! Attention ! If set to 0, then MaxSize is infinite >>>> ccnxHelper.InstallAll (); >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> >>>> 2013/3/31 Alex Afanasyev >>>> Hi huyao, >>>> >>>> You still have to have an entry in FIB that corresponds to forwarded interests. This entry is part of overall logic to forward interests, data, and record data performance stats for the forwarded data. >>>> >>>> In your case, you can have an entry that corresponds to "/" prefix. The easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), which will create this entry and fill with all available faces (which you can ignore later). >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 30, 2013, at 8:33 PM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> I see. I forgot about it. Thanks for your explanation. I am sorry I have one question about flooding strategy in ndnsim. >>>>> >>>>> I saw your reply http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that mentions how to flood to all available faces not listed in FIB. Now I assume that when ndnsim simulation starts, I do not manually configure FIB routes by AddRoute, that is, FIB on each node is empty, and let each node forward the incoming interest to all available faces and don't want them to add to FIB entries by the following >>>>> >>>>> Ptr ndn = this->GetObject (); >>>>> for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) >>>>> { >>>>> Ptr outFace = ndn->GetFace (faceNum); >>>>> TrySendOutInterest (inFace, outFace, header, origPacket, pitEntry); >>>>> } >>>>> >>>>> However the interest will be not forwarded from any face and it seems no interest packet is produced. What is wrong with it? Thanks a lot. >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> >>>>> >>>>> 2013/3/31 Alex Afanasyev >>>>> Hi huyao, >>>>> >>>>> The data structure that stores ordered Face instances in FIB behaves like any other STL container: >>>>> begin () returns iterator to first element in the container >>>>> end () returns a special iterator, indicating element just after the last valid element >>>>> >>>>> In other words, end () is never an iterator to a valid element in the container, and situations when begin () == end () means that the container has no elements. If there is at least one element in the container, begin () will return iterator to a valid first element. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >>>>> >>>>>> Hi Alex, >>>>>> >>>>>> Thanks for your reply to the previous question about ndnsim update. >>>>>> >>>>>> Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? >>>>>> >>>>>> I am sorry for my confusing expression. Thank you very much! >>>>>> >>>>>> Regards, >>>>>> huyao >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Mon Apr 1 17:25:35 2013 From: huyao0107 at gmail.com (yao hu) Date: Tue, 2 Apr 2013 09:25:35 +0900 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: <8EC11393-3964-406D-BE9B-349A56490BD2@ucla.edu> References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> <7226EB61-941D-4610-A6A9-EEBD38D2C184@ucla.edu> <340D7BC1-6A77-42BD-9F90-E31789B9C2E3@gmail.com> <8EC11393-3964-406D-BE9B-349A56490BD2@ucla.edu> Message-ID: Hi Alex, Thanks for your reply. I saw the following explanation about face id used by AddRoute. So I am a little confused by the inconsistency from the one returned by GetId. For example, router A is connected with router B and also with router C. How do I know which face (0? 1?) should I pass into AddRoute when I want to set up a route for A--B or A--C? http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000159.html Regards, huyao 2013/4/2 Alex Afanasyev > Hi huyao, > > First of all, if you have a pointer to Face object, you don't need to get > ID for AddRoute, as supplying Ptr is the most efficient way. > > As for ids, they are the same for both used by AddRoute and returned by > GetId. There could be some inconsistencies in documentation that should be > corrected, but I couldn't find where you read about "based on device id on > the node"? Can you point to the documentation page/source code? > > Thanks, > Alex > > On Apr 1, 2013, at 8:59 AM, Smallcat wrote: > > Hi Alex, > > I see. Thanks. > > Just now I read your past reply to face Id. I am a little confused by the > difference between the one in AddRoute() and method Face::GetId(). The > former face Id is specified by face number which is based on device id on > the Node (0, 1?2...). The latter face Id is just a unique numerical ID of > the face on the specific node and doesn't imply anything else (e.g., face > with ID 2 doesn't mean there are 3 faces on the node) as you said before. > Then they are the same one or different? Which one should I use to identify > the unique one face for a ndn router? > > Thanks a lot! > > Regards, > huyao > * > * > > ? 2013-4-1?3:20?Alex Afanasyev ??? > > Hi huyao, > > Yes, "/" represents a name with 0 components, so you're right that > ...m_prefix->size() will return 0 for such an entry. > > --- > Alex > > On Mar 31, 2013, at 8:36 AM, yao hu wrote: > > Hi Alex, > > I understand what you mean. In ndnsim, setting forwarding strategy is > meaningless if routes are not configured. Now I have made some progress. I > am sorry for bothering you to check the following.. > > When setting up *default* FIB entries using > StackHelper::SetDefaultRoutes() call > that is to let each node/router have a FIB entry to / prefix, containing > all available faces. So for the prefix "/"(class Name), its size() == 0? (pitEntry->GetFibEntry > ()->m_prefix->size() == 0?) > > Thanks a lot! > > Regards, > huyao > > > 2013/3/31 Alex Afanasyev > >> Looks good. >> >> Your forwarding strategy has full control on how Interests are forwarded, >> so you're free to ignore the contents suggested faces in the FIB entry. >> >> --- >> Alex >> >> On Mar 30, 2013, at 9:34 PM, yao hu wrote: >> >> Hi Alex, >> >> Thanks for your reply. That means SetDefaultRoutes(true) does not >> conflict with my later implementation in ccnxHelper.SetForwardingStrategy >> ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on >> nodes, the following codes is ok? >> >> ndn::StackHelper ccnxHelper; >> *ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy");* >> *ccnxHelper.SetDefaultRoutes (true);* >> ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", >> "MaxSize", "1"); // ! Attention ! If set to >> 0, then MaxSize is infinite >> ccnxHelper.InstallAll (); >> >> Regards, >> huyao >> >> >> >> 2013/3/31 Alex Afanasyev >> >>> Hi huyao, >>> >>> You still have to have an entry in FIB that corresponds to forwarded >>> interests. This entry is part of overall logic to forward interests, data, >>> and record data performance stats for the forwarded data. >>> >>> In your case, you can have an entry that corresponds to "/" prefix. The >>> easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), >>> which will create this entry and fill with all available faces (which you >>> can ignore later). >>> >>> --- >>> Alex >>> >>> On Mar 30, 2013, at 8:33 PM, yao hu wrote: >>> >>> Hi Alex, >>> >>> I see. I forgot about it. Thanks for your explanation. I am sorry I have >>> one question about flooding strategy in ndnsim. >>> >>> I saw your reply >>> http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that >>> mentions how to flood to all available faces not listed in FIB. Now I >>> assume that when ndnsim simulation starts, I do not manually configure FIB >>> routes by AddRoute, that is, FIB on each node is empty, and let each node >>> forward the incoming interest to all available faces and don't want >>> them to add to FIB entries by the following >>> >>> Ptr ndn = this->GetObject (); for (uint32_t >>> faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) { Ptr outFace = >>> ndn->GetFace (faceNum); TrySendOutInterest (inFace, outFace, header, >>> origPacket, pitEntry); } >>> >>> However the interest will be not forwarded from any face and it seems no >>> interest packet is produced. What is wrong with it? Thanks a lot. >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/3/31 Alex Afanasyev >>> >>>> Hi huyao, >>>> >>>> The data structure that stores ordered Face instances in FIB behaves >>>> like any other STL container: >>>> begin () returns iterator to first element in the container >>>> end () returns a special iterator, indicating element just after the >>>> last valid element >>>> >>>> In other words, end () is never an iterator to a valid element in the >>>> container, and situations when begin () == end () means that the container >>>> has no elements. If there is at least one element in the container, begin >>>> () will return iterator to a valid first element. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >>>> >>>> Hi Alex, >>>> >>>> Thanks for your reply to the previous question about ndnsim update. >>>> >>>> Now I am looking into the CustomStrategy::DoPropagateInterest. This >>>> function is to let Interest be forwarded to first two best-metric >>>> faces specified by FIB. However, in the codes, the faceIterator is first >>>> pointed to the beginning of faces ordered by metric and then checked >>>> whether it is pointed to the end of the faces. Assume that there is only >>>> one face existing in the associated faces for the fib entry. For my >>>> understanding, this face is located at the beginning of the faces and also >>>> should be located at the end of the faces. Then according to the DoPropagateInterest >>>> algorithm, the incoming interest will be not sent out though the fact is >>>> not like that for sure. So what is wrong with my understanding for the >>>> faceIterator? Or what is the internal structure of FacesByMetric &faces >>>> especially faces.begin () or faces.end()? >>>> >>>> I am sorry for my confusing expression. Thank you very much! >>>> >>>> Regards, >>>> huyao >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > 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 yskim525 at gmail.com Mon Apr 1 18:31:44 2013 From: yskim525 at gmail.com (Yusung Kim) Date: Tue, 2 Apr 2013 10:31:44 +0900 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> Message-ID: Hi Alex, It's right, each individual piece of content should have a unique name in NDN. We may explicitly add a digest component to the name as following; 1) /domain.com/video1.avi/sequence_num/*explicit_producer1_digest * 2) /domain.com/video1.avi/sequence_num/*explicit_producer2_digest* When User1 retrieved content by using the name 1) and the data is cached at routers , if User2 sends an interest packet with the name 2), the interest cannot be served from the Content Store since the cache was stored by the name 1) How about using the implicit digest ? 3) /domain.com/video1.avi/sequence_num/*implicit_producer1_digest * 4) /domain.com/video1.avi/sequence_num/*implicit_producer2_digest* * * Once User1 retrieved content by using the name 3), Could User2 retrieve the cached data, even though User2 sends an interest with the name 4) ? If the answer is NO, what is the merit using the implicit digest instead of the explicit digest? Thank you, - Yusung Kim - On Mon, Apr 1, 2013 at 11:58 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Yusung, > > No, ndnSIM (as of right now) does not have a concept of the implicit > digest. Ideally, each individual piece of content should have a unique > name. If you really want to distinguish between data produced by Producer1 > and Producer2, why not explicitly name these two data pieces differently? > Alternatively, you can explicitly add a digest component to the name. > > --- > Alex > > On Mar 31, 2013, at 7:50 PM, Yusung Kim wrote: > > Hi Alex and ndnSIM community. > > When using ndnSIM, is there the same function of the implicit digest to > get specific content ? > ( the implicit digest is used in CCNx, right ? ) > > In the your example topology, > Does Consumer need to select one producer between Producer1 and Producer2 > using the implicit digest ? > > Thanks, > > - Yusung Kim - > > > > On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > >> Hi Amin, >> >> Let me clarify a little bit with a small example: >> >> Consumer --- Router ----- Producer1 >> | >> +--------- Producer2 >> >> Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer >> will reach both Producer1 and Producer2, and they both will send back a >> content object packet. >> >> Router, receiving the first packet (depending on the topology, could be >> from Producer1 or Producer2) will forward it to the consumer and remove* >> the PIT entry. When the second content object arrives to the Router (not >> the consumer), it will be discarded by the router, as unsolicited. (I >> would not call this as a drop, since it is relatively high-level decision >> to not forward the specific packet.) >> >> * PIT entry can be immediately removed (by default), or scheduled for >> removal within a short time interval (PitEntryPruningTimout). In either >> case, an extra content object will be discarded. >> >> --- >> Alex >> >> On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: >> >> In case of ns3::ndn::fw::Flooding, we will have several drops. Because >> when a consumer receives desired content from first sender/producer, >> consumer will drop other same contents. Yes? because the desired Interest >> has been satisfied and removed from PIT. >> >> >> /Amin >> >> >> >> On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >> >> Hi Amin, >> >> I is possible, but it depends on the forwarding strategy to deliver >> Interests to different producers. For example, if you choose >> ns3::ndn::fw::BestRoute, then Interests will only be delivered over the >> "shortest-metric" path and some of the producers will never see the >> Interests. If you use ns3::ndn::fw::Flooding, then all of the producers >> will receive Interests and it would depend on network topology >> (delays/losses) content object from which exactly producer will reach the >> consumer. >> >> In case if you have several consumers, depending on topology and >> forwarding strategy, they may be getting content objects from different >> producers. >> >> If you want only some Interests be satisfied by one producers and other >> by another, you may need to amend ndn::Producer implementation (or better >> create a new custom Producer app) by adding the appropriate logic. >> >> --- >> Alex >> >> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >> >> Hi friends, >> Is it possible to satisfy sent Interests from a consumer with more than >> one producer? >> for example, does the following code work correctly to satisfy Interests >> in /dst1 namespace with three producers? >> >> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer1); ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer2); >> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer3); >> >> >> Best Regards, >> /Amin >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> >> >> -- >> >> >> Best Regards, >> >> ======================================================= >> Amin Karami, PhD student in Computer Architecture Department (DAC) at >> the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) >> >> e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 >> phone: +34 93 40 11 638 | Jordi Girona, 1-3 >> | 08034 Barcelona - SPAIN >> WWW: http://personals.ac.upc.edu/amin/ >> ======================================================= >> >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sarantarnoi at gmail.com Tue Apr 2 06:05:19 2013 From: sarantarnoi at gmail.com (Saran Tarnoi) Date: Tue, 2 Apr 2013 22:05:19 +0900 Subject: [ndnSIM] How to measure the server load Message-ID: Dear Alex and ndnSIM users, The server load is a significant indicator for the in-network caching performance evaluation. I understand that we can measure the server load by reading data from the rate tracer file obtained by using ndn::L3RateTracer . The event that is related to "dev=local(x)" and "InData" practically represents the server load by the number in the column KilobytesRaw. Is it correct? Thanks in advance for your time. -- Regards, Saran Tarnoi Graduate Student Department of Informatics The Graduate University for Advanced Studies (Sokendai) Tokyo, Japan http://sarantarnoi.blogspot.jp -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 2 10:31:17 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 2 Apr 2013 10:31:17 -0700 Subject: [ndnSIM] question about faceIterator in CustomStrategy In-Reply-To: References: <6854511B-FBED-4196-B698-DACC9EC8F216@ucla.edu> <41CB83DA-603B-4469-B148-9E55C539C60C@ucla.edu> <7226EB61-941D-4610-A6A9-EEBD38D2C184@ucla.edu> <340D7BC1-6A77-42BD-9F90-E31789B9C2E3@gmail.com> <8EC11393-3964-406D-BE9B-349A56490BD2@ucla.edu> Message-ID: <915F6972-04E0-4FB2-B6C5-7DAB84503AD7@ucla.edu> Hi huyao, Unless you do something special, the message you're referring is correct. Numerical id for the face would be the same as id of a corresponding NetDevice, but it is just a coincidence, not a requirement (e.g., application faces have no relation to netdevices, but have their unique IDs). As for which face id correspond to which link depends on how you created the topology. If you do it manually like this // Creating nodes NodeContainer nodes; nodes.Create (3); // Connecting nodes using two links PointToPointHelper p2p; p2p.Install (nodes.Get (0), nodes.Get (1)); p2p.Install (nodes.Get (1), nodes.Get (2)); On node 0, there will be only one NetDevice with index 0 (and later there will be face with id 0), on the node 1, there will be two NetDevices. NetDevice with index 0 (and later face with id 0) will correspond to the first created link (between node 0 and 1), and NetDevice with index 1 (face with id 1) will correspond to the second created link. If you are using topology reader, then you can do the same calculation following the order of created links between nodes. --- Alex On Apr 1, 2013, at 5:25 PM, yao hu wrote: > Hi Alex, > > Thanks for your reply. > I saw the following explanation about face id used by AddRoute. So I am a little confused by the inconsistency from the one returned by GetId. For example, router A is connected with router B and also with router C. How do I know which face (0? 1?) should I pass into AddRoute when I want to set up a route for A--B or A--C? > http://www.lists.cs.ucla.edu/pipermail/ndnsim/2013-March/000159.html > > Regards, > huyao > > > > > 2013/4/2 Alex Afanasyev > Hi huyao, > > First of all, if you have a pointer to Face object, you don't need to get ID for AddRoute, as supplying Ptr is the most efficient way. > > As for ids, they are the same for both used by AddRoute and returned by GetId. There could be some inconsistencies in documentation that should be corrected, but I couldn't find where you read about "based on device id on the node"? Can you point to the documentation page/source code? > > Thanks, > Alex > > On Apr 1, 2013, at 8:59 AM, Smallcat wrote: > >> Hi Alex, >> >> I see. Thanks. >> >> Just now I read your past reply to face Id. I am a little confused by the difference between the one in AddRoute() and method Face::GetId(). The former face Id is specified by face number which is based on device id on the Node (0, 1?2...). The latter face Id is just a unique numerical ID of the face on the specific node and doesn't imply anything else (e.g., face with ID 2 doesn't mean there are 3 faces on the node) as you said before. Then they are the same one or different? Which one should I use to identify the unique one face for a ndn router? >> >> Thanks a lot! >> >> Regards, >> huyao >> >> >> ? 2013-4-1?3:20?Alex Afanasyev ??? >> >>> Hi huyao, >>> >>> Yes, "/" represents a name with 0 components, so you're right that ...m_prefix->size() will return 0 for such an entry. >>> >>> --- >>> Alex >>> >>> On Mar 31, 2013, at 8:36 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> I understand what you mean. In ndnsim, setting forwarding strategy is meaningless if routes are not configured. Now I have made some progress. I am sorry for bothering you to check the following.. >>>> >>>> When setting up default FIB entries using StackHelper::SetDefaultRoutes() call that is to let each node/router have a FIB entry to / prefix, containing all available faces. So for the prefix "/"(class Name), its size() == 0? (pitEntry->GetFibEntry ()->m_prefix->size() == 0?) >>>> >>>> Thanks a lot! >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> 2013/3/31 Alex Afanasyev >>>> Looks good. >>>> >>>> Your forwarding strategy has full control on how Interests are forwarded, so you're free to ignore the contents suggested faces in the FIB entry. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 30, 2013, at 9:34 PM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> Thanks for your reply. That means SetDefaultRoutes(true) does not conflict with my later implementation in ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy")? That is, before installing stack on nodes, the following codes is ok? >>>>> >>>>> ndn::StackHelper ccnxHelper; >>>>> ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy"); >>>>> ccnxHelper.SetDefaultRoutes (true); >>>>> ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru", >>>>> "MaxSize", "1"); // ! Attention ! If set to 0, then MaxSize is infinite >>>>> ccnxHelper.InstallAll (); >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> >>>>> >>>>> 2013/3/31 Alex Afanasyev >>>>> Hi huyao, >>>>> >>>>> You still have to have an entry in FIB that corresponds to forwarded interests. This entry is part of overall logic to forward interests, data, and record data performance stats for the forwarded data. >>>>> >>>>> In your case, you can have an entry that corresponds to "/" prefix. The easiest way to do it, is to use ndn::StackHelper::SetDefaultRoutes(true), which will create this entry and fill with all available faces (which you can ignore later). >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 30, 2013, at 8:33 PM, yao hu wrote: >>>>> >>>>>> Hi Alex, >>>>>> >>>>>> I see. I forgot about it. Thanks for your explanation. I am sorry I have one question about flooding strategy in ndnsim. >>>>>> >>>>>> I saw your reply http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html that mentions how to flood to all available faces not listed in FIB. Now I assume that when ndnsim simulation starts, I do not manually configure FIB routes by AddRoute, that is, FIB on each node is empty, and let each node forward the incoming interest to all available faces and don't want them to add to FIB entries by the following >>>>>> >>>>>> Ptr ndn = this->GetObject (); >>>>>> for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) >>>>>> { >>>>>> Ptr outFace = ndn->GetFace (faceNum); >>>>>> TrySendOutInterest (inFace, outFace, header, origPacket, pitEntry); >>>>>> } >>>>>> >>>>>> However the interest will be not forwarded from any face and it seems no interest packet is produced. What is wrong with it? Thanks a lot. >>>>>> >>>>>> Regards, >>>>>> huyao >>>>>> >>>>>> >>>>>> >>>>>> 2013/3/31 Alex Afanasyev >>>>>> Hi huyao, >>>>>> >>>>>> The data structure that stores ordered Face instances in FIB behaves like any other STL container: >>>>>> begin () returns iterator to first element in the container >>>>>> end () returns a special iterator, indicating element just after the last valid element >>>>>> >>>>>> In other words, end () is never an iterator to a valid element in the container, and situations when begin () == end () means that the container has no elements. If there is at least one element in the container, begin () will return iterator to a valid first element. >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 30, 2013, at 8:20 AM, yao hu wrote: >>>>>> >>>>>>> Hi Alex, >>>>>>> >>>>>>> Thanks for your reply to the previous question about ndnsim update. >>>>>>> >>>>>>> Now I am looking into the CustomStrategy::DoPropagateInterest. This function is to let Interest be forwarded to first two best-metric faces specified by FIB. However, in the codes, the faceIterator is first pointed to the beginning of faces ordered by metric and then checked whether it is pointed to the end of the faces. Assume that there is only one face existing in the associated faces for the fib entry. For my understanding, this face is located at the beginning of the faces and also should be located at the end of the faces. Then according to the DoPropagateInterest algorithm, the incoming interest will be not sent out though the fact is not like that for sure. So what is wrong with my understanding for the faceIterator? Or what is the internal structure of FacesByMetric &faces especially faces.begin () or faces.end()? >>>>>>> >>>>>>> I am sorry for my confusing expression. Thank you very much! >>>>>>> >>>>>>> Regards, >>>>>>> huyao >>>>>>> _______________________________________________ >>>>>>> ndnSIM mailing list >>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 2 10:57:12 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 2 Apr 2013 10:57:12 -0700 Subject: [ndnSIM] How to measure the server load In-Reply-To: References: Message-ID: <822E9197-D836-4FA5-BB46-A342C6CCC467@ucla.edu> Hi Saran, Rows corresponding to "dev=local(x)" represent only "load" that was generated by local applications. In your specific example, this would indicate how many (and what volume) of Data packets were received from a local application on the node. This information does not represent anything from the content store (cache), which is not an application. Is it what you're looking for or not? If you want to know cache "performance" (number of cache hits/misses), you may want to use specialized form of content store and CsTracer (http://ndnsim.net/metric.html#content-store-trace-helper). If none of these is an acceptable indication of the "load", then we can try to make something else. I'm really open for suggestions/help :) --- Alex On Apr 2, 2013, at 6:05 AM, Saran Tarnoi wrote: > Dear Alex and ndnSIM users, > > The server load is a significant indicator for the in-network caching performance evaluation. > I understand that we can measure the server load by reading data from the rate tracer file obtained by using ndn::L3RateTracer. > > The event that is related to "dev=local(x)" and "InData" practically represents the server load by the number in the column KilobytesRaw. > Is it correct? > > Thanks in advance for your time. > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 2 11:08:38 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 2 Apr 2013 11:08:38 -0700 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> Message-ID: <300C9032-4545-41EA-97AD-79F691E0EF5E@ucla.edu> Hi Yusung, The answer is of course NO, since the Interests specifies one name, but the available data has different (does not matter implicit or explicit component) name. What I'm seeing as advantage (and a "big" disadvantage at the same time) of using the implicit digest component is that routers are required to calculate this component based on the content. This prevents a producer from "lying" and setting one explicit digest, while the content corresponds to a completely different digest. --- Alex On Apr 1, 2013, at 6:31 PM, Yusung Kim wrote: > Hi Alex, > > It's right, each individual piece of content should have a unique name in NDN. > > We may explicitly add a digest component to the name as following; > > 1) /domain.com/video1.avi/sequence_num/explicit_producer1_digest > 2) /domain.com/video1.avi/sequence_num/explicit_producer2_digest > > > When User1 retrieved content by using the name 1) and the data is cached at routers , > if User2 sends an interest packet with the name 2), the interest cannot be served from the Content Store since the cache was stored by the name 1) > > > How about using the implicit digest ? > > 3) /domain.com/video1.avi/sequence_num/implicit_producer1_digest > 4) /domain.com/video1.avi/sequence_num/implicit_producer2_digest > > Once User1 retrieved content by using the name 3), > Could User2 retrieve the cached data, even though User2 sends an interest with the name 4) ? > > If the answer is NO, what is the merit using the implicit digest instead of the explicit digest? > > Thank you, > > - Yusung Kim - > > > > On Mon, Apr 1, 2013 at 11:58 AM, Alex Afanasyev wrote: > Hi Yusung, > > No, ndnSIM (as of right now) does not have a concept of the implicit digest. Ideally, each individual piece of content should have a unique name. If you really want to distinguish between data produced by Producer1 and Producer2, why not explicitly name these two data pieces differently? Alternatively, you can explicitly add a digest component to the name. > > --- > Alex > > On Mar 31, 2013, at 7:50 PM, Yusung Kim wrote: > >> Hi Alex and ndnSIM community. >> >> When using ndnSIM, is there the same function of the implicit digest to get specific content ? >> ( the implicit digest is used in CCNx, right ? ) >> >> In the your example topology, >> Does Consumer need to select one producer between Producer1 and Producer2 using the implicit digest ? >> >> Thanks, >> >> - Yusung Kim - >> >> >> >> On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev wrote: >> Hi Amin, >> >> Let me clarify a little bit with a small example: >> >> Consumer --- Router ----- Producer1 >> | >> +--------- Producer2 >> >> Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer will reach both Producer1 and Producer2, and they both will send back a content object packet. >> >> Router, receiving the first packet (depending on the topology, could be from Producer1 or Producer2) will forward it to the consumer and remove* the PIT entry. When the second content object arrives to the Router (not the consumer), it will be discarded by the router, as unsolicited. (I would not call this as a drop, since it is relatively high-level decision to not forward the specific packet.) >> >> * PIT entry can be immediately removed (by default), or scheduled for removal within a short time interval (PitEntryPruningTimout). In either case, an extra content object will be discarded. >> >> --- >> Alex >> >> On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: >> >>> In case of ns3::ndn::fw::Flooding, we will have several drops. Because when a consumer receives desired content from first sender/producer, consumer will drop other same contents. Yes? because the desired Interest has been satisfied and removed from PIT. >>> >>> >>> /Amin >>> >>> >>> >>> On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >>>> Hi Amin, >>>> >>>> I is possible, but it depends on the forwarding strategy to deliver Interests to different producers. For example, if you choose ns3::ndn::fw::BestRoute, then Interests will only be delivered over the "shortest-metric" path and some of the producers will never see the Interests. If you use ns3::ndn::fw::Flooding, then all of the producers will receive Interests and it would depend on network topology (delays/losses) content object from which exactly producer will reach the consumer. >>>> >>>> In case if you have several consumers, depending on topology and forwarding strategy, they may be getting content objects from different producers. >>>> >>>> If you want only some Interests be satisfied by one producers and other by another, you may need to amend ndn::Producer implementation (or better create a new custom Producer app) by adding the appropriate logic. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >>>> >>>>> Hi friends, >>>>> Is it possible to satisfy sent Interests from a consumer with more than one producer? >>>>> for example, does the following code work correctly to satisfy Interests in /dst1 namespace with three producers? >>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); >>>>> producerHelper.SetPrefix ("/dst1"); >>>>> producerHelper.Install (producer1); >>>>> >>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); >>>>> producerHelper.SetPrefix ("/dst1"); >>>>> producerHelper.Install (producer2); >>>>> >>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); >>>>> producerHelper.SetPrefix ("/dst1"); >>>>> producerHelper.Install (producer3); >>>>> >>>>> >>>>> Best Regards, >>>>> /Amin >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>> >>> >>> -- >>> >>> Best Regards, >>> >>> ======================================================= >>> Amin Karami, PhD student in Computer Architecture Department (DAC) at >>> the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) >>> >>> e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 >>> phone: +34 93 40 11 638 | Jordi Girona, 1-3 >>> | 08034 Barcelona - SPAIN >>> WWW: http://personals.ac.upc.edu/amin/ >>> ======================================================= >>> >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > 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 sarantarnoi at gmail.com Tue Apr 2 20:33:26 2013 From: sarantarnoi at gmail.com (Saran Tarnoi) Date: Wed, 3 Apr 2013 12:33:26 +0900 Subject: [ndnSIM] How to measure the server load In-Reply-To: <822E9197-D836-4FA5-BB46-A342C6CCC467@ucla.edu> References: <822E9197-D836-4FA5-BB46-A342C6CCC467@ucla.edu> Message-ID: Hi Alex, The server load here represents the number of packets (or amount of data) provided by the producer application installed in a producer node. So I think it is okay to do so, to check the rows corresponding to "dev=local(x)" and "InData". When the in-network caching works effectively, the server load should decrease as a function of increasing cache hit rate because some interest packets are satisfied by intermediate nodes. I would like to confirm the mentioned assumption. Thanks a lot for your clear explanation. Regards, Saran ????? ????????? 3 ?????? ?.?. 2013 Alex Afanasyev ????????: > Hi Saran, > > Rows corresponding to "dev=local(x)" represent only "load" that was > generated by local applications. In your specific example, this would > indicate how many (and what volume) of Data packets were received from a > local application on the node. This information does not represent > anything from the content store (cache), which is not an application. > > Is it what you're looking for or not? > > If you want to know cache "performance" (number of cache hits/misses), you > may want to use specialized form of content store and CsTracer ( > http://ndnsim.net/metric.html#content-store-trace-helper). > > If none of these is an acceptable indication of the "load", then we can > try to make something else. I'm really open for suggestions/help :) > > --- > Alex > > On Apr 2, 2013, at 6:05 AM, Saran Tarnoi > > wrote: > > Dear Alex and ndnSIM users, > > The server load is a significant indicator for the in-network caching > performance evaluation. > I understand that we can measure the server load by reading data from the > rate tracer file obtained by using ndn::L3RateTracer > . > > The event that is related to "dev=local(x)" and "InData" practically > represents the server load by the number in the column KilobytesRaw. > Is it correct? > > Thanks in advance for your time. > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu 'ndnSIM at lists.cs.ucla.edu');> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -- Regards, Saran Tarnoi Graduate Student Department of Informatics The Graduate University for Advanced Studies (Sokendai) Tokyo, Japan http://sarantarnoi.blogspot.jp -------------- next part -------------- An HTML attachment was scrubbed... URL: From yskim525 at gmail.com Tue Apr 2 22:35:11 2013 From: yskim525 at gmail.com (Yusung Kim) Date: Wed, 3 Apr 2013 14:35:11 +0900 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: <300C9032-4545-41EA-97AD-79F691E0EF5E@ucla.edu> References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> <300C9032-4545-41EA-97AD-79F691E0EF5E@ucla.edu> Message-ID: Hi Alex, Thank you for your comment. I agree your explanation. By the way, would you tell me why you consider it as a "big" disadvantage ? When using the implicit digest component, a producer or an application developer does not need to consider the digest component. It seems to be easy to develop applications over NDN. What is a negative effect on using the implicit digest component? - Yusung Kim - On Wed, Apr 3, 2013 at 3:08 AM, Alex Afanasyev wrote: > Hi Yusung, > > The answer is of course NO, since the Interests specifies one name, but > the available data has different (does not matter implicit or explicit > component) name. > > What I'm seeing as advantage (and a "big" disadvantage at the same time) > of using the implicit digest component is that routers are required to > calculate this component based on the content. This prevents a producer > from "lying" and setting one explicit digest, while the content corresponds > to a completely different digest. > > --- > Alex > > On Apr 1, 2013, at 6:31 PM, Yusung Kim wrote: > > Hi Alex, > > It's right, each individual piece of content should have a unique name in > NDN. > > We may explicitly add a digest component to the name as following; > > 1) /domain.com/video1.avi/sequence_num/*explicit_producer1_digest * > 2) /domain.com/video1.avi/sequence_num/*explicit_producer2_digest* > > > When User1 retrieved content by using the name 1) and the data is cached > at routers , > if User2 sends an interest packet with the name 2), the interest cannot > be served from the Content Store since the cache was stored by the name 1) > > > How about using the implicit digest ? > > 3) /domain.com/video1.avi/sequence_num/*implicit_producer1_digest * > 4) /domain.com/video1.avi/sequence_num/*implicit_producer2_digest* > * > * > Once User1 retrieved content by using the name 3), > Could User2 retrieve the cached data, even though User2 sends an > interest with the name 4) ? > > If the answer is NO, what is the merit using the implicit digest > instead of the explicit digest? > > Thank you, > > - Yusung Kim - > > > > On Mon, Apr 1, 2013 at 11:58 AM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > >> Hi Yusung, >> >> No, ndnSIM (as of right now) does not have a concept of the implicit >> digest. Ideally, each individual piece of content should have a unique >> name. If you really want to distinguish between data produced by Producer1 >> and Producer2, why not explicitly name these two data pieces differently? >> Alternatively, you can explicitly add a digest component to the name. >> >> --- >> Alex >> >> On Mar 31, 2013, at 7:50 PM, Yusung Kim wrote: >> >> Hi Alex and ndnSIM community. >> >> When using ndnSIM, is there the same function of the implicit digest to >> get specific content ? >> ( the implicit digest is used in CCNx, right ? ) >> >> In the your example topology, >> Does Consumer need to select one producer between Producer1 and >> Producer2 using the implicit digest ? >> >> Thanks, >> >> - Yusung Kim - >> >> >> >> On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev < >> alexander.afanasyev at ucla.edu> wrote: >> >>> Hi Amin, >>> >>> Let me clarify a little bit with a small example: >>> >>> Consumer --- Router ----- Producer1 >>> | >>> +--------- Producer2 >>> >>> Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer >>> will reach both Producer1 and Producer2, and they both will send back a >>> content object packet. >>> >>> Router, receiving the first packet (depending on the topology, could be >>> from Producer1 or Producer2) will forward it to the consumer and remove* >>> the PIT entry. When the second content object arrives to the Router (not >>> the consumer), it will be discarded by the router, as unsolicited. (I >>> would not call this as a drop, since it is relatively high-level decision >>> to not forward the specific packet.) >>> >>> * PIT entry can be immediately removed (by default), or scheduled for >>> removal within a short time interval (PitEntryPruningTimout). In either >>> case, an extra content object will be discarded. >>> >>> --- >>> Alex >>> >>> On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: >>> >>> In case of ns3::ndn::fw::Flooding, we will have several drops. Because >>> when a consumer receives desired content from first sender/producer, >>> consumer will drop other same contents. Yes? because the desired Interest >>> has been satisfied and removed from PIT. >>> >>> >>> /Amin >>> >>> >>> >>> On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >>> >>> Hi Amin, >>> >>> I is possible, but it depends on the forwarding strategy to deliver >>> Interests to different producers. For example, if you choose >>> ns3::ndn::fw::BestRoute, then Interests will only be delivered over the >>> "shortest-metric" path and some of the producers will never see the >>> Interests. If you use ns3::ndn::fw::Flooding, then all of the producers >>> will receive Interests and it would depend on network topology >>> (delays/losses) content object from which exactly producer will reach the >>> consumer. >>> >>> In case if you have several consumers, depending on topology and >>> forwarding strategy, they may be getting content objects from different >>> producers. >>> >>> If you want only some Interests be satisfied by one producers and >>> other by another, you may need to amend ndn::Producer implementation (or >>> better create a new custom Producer app) by adding the appropriate logic. >>> >>> --- >>> Alex >>> >>> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >>> >>> Hi friends, >>> Is it possible to satisfy sent Interests from a consumer with more than >>> one producer? >>> for example, does the following code work correctly to satisfy Interests >>> in /dst1 namespace with three producers? >>> >>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer1); ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer2); >>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer3); >>> >>> >>> Best Regards, >>> /Amin >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >>> >>> -- >>> >>> >>> Best Regards, >>> >>> ======================================================= >>> Amin Karami, PhD student in Computer Architecture Department (DAC) at >>> the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) >>> >>> e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 >>> phone: +34 93 40 11 638 | Jordi Girona, 1-3 >>> | 08034 Barcelona - SPAIN >>> WWW: http://personals.ac.upc.edu/amin/ >>> ======================================================= >>> >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > 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 Wed Apr 3 00:44:13 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Wed, 3 Apr 2013 15:44:13 +0800 Subject: [ndnSIM] NDN mailing list Message-ID: Hi All, I have some questions want to discuss in NDN community, is there NDN mailing list? Thank you! thanks My Regards, Xiaoke (Shock) Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China, 100084 -------------- next part -------------- An HTML attachment was scrubbed... URL: From john.mckendry at gmail.com Wed Apr 3 10:28:09 2013 From: john.mckendry at gmail.com (John McKendry) Date: Wed, 3 Apr 2013 13:28:09 -0400 Subject: [ndnSIM] "Incompatible types" error in V2vTracer::Connect() Message-ID: I am trying to run the car-push scenario from the car-to-car ndnSIM code from https://github.com/cawka/ndnSIM-nom-rapid-car2car . The car-relay example is working, but I get an "Incompatible Types" error when I try to run car-push. The error comes from the first line in V2vTracer::Connect(), which is a call to TraceConnectWithoutContext(). This is the error: Waf: Entering directory `/home/mzeal/ns-dev/ns-3/ndnSIM-nom-rapid-car2car-master/build' Waf: Leaving directory `/home/mzeal/ns-dev/ns-3/ndnSIM-nom-rapid-car2car-master/build' 'build' finished successfully (0.069s) 0s -1 ndn.Consumer:Consumer() msg="Incompatible types. (feed to "c++filt -t" if needed) got=ns3::MemPtrCallbackImpl, ns3::Ptr), void, std::string, ns3::Ptr, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> expected=ns3::CallbackImpl, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>*", file=./ns3/callback.h, line=470 terminate called without an active exception This is the gdb traceback: Program received signal SIGABRT, Aborted. 0x00007ffff53ac445 in raise () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) bt #0 0x00007ffff53ac445 in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff53afbab in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00007ffff5f1769d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #3 0x00007ffff5f15846 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #4 0x00007ffff5f15873 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #5 0x00007ffff71e7286 in ns3::Callback, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::DoAssign (this=0x7fffffffc560, other=...) at ./ns3/callback.h:468 #6 0x00007ffff71e6c46 in ns3::Callback, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::Assign (this=0x7fffffffc560, other=...) at ./ns3/callback.h:445 #7 0x00007ffff71e691e in ns3::TracedCallback, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::ConnectWithoutContext (this=0x71b990, callback=...) at ./ns3/traced-callback.h:118 #8 0x00007ffff71ee362 in ns3::Accessor::ConnectWithoutContext (this=0x6b6870, obj=0x71b940, cb=...) at ./ns3/trace-source-accessor.h:98 #9 0x00007ffff76df314 in ns3::ObjectBase::TraceConnectWithoutContext (this=0x71b940, name=..., cb=...) at ../src/core/model/object-base.cc:277 #10 0x0000000000455bbd in ns3::ndn::V2vTracer::Connect (this=0x11eb4f0) at ../extensions/v2v-tracer.cc:113 #11 0x0000000000455a17 in ns3::ndn::V2vTracer::V2vTracer (this=0x11eb4f0, os=..., node=...) at ../extensions/v2v-tracer.cc:99 #12 0x00000000004565f0 in boost::make_shared > >, ns3::Ptr > (a1=..., a2=...) at /usr/local/include/boost/smart_ptr/make_shared.hpp:696 #13 0x000000000045573d in ns3::ndn::V2vTracer::InstallAll (file=...) at ../extensions/v2v-tracer.cc:69 #14 0x000000000043065b in main (argc=1, argv=0x7fffffffdde8) at ../scenarios/car-pusher.cc:169 This is in a fresh install of ns-3.16, ndnSIM, and the car2car extensions from two days ago in Ubuntu 12.04. The code in V2vTracer looks just like the code in CarRelayTracer to my naive eye, and I don't know enough about ns-3 tracing to know where to begin fixing it. Any help will be greatly appreciated. John -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 3 11:25:31 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 3 Apr 2013 11:25:31 -0700 Subject: [ndnSIM] "Incompatible types" error in V2vTracer::Connect() In-Reply-To: References: Message-ID: Hi John, Thanks for catching the problem! I haven't realized that V2vTracer implementation was broken and the scenario was not effectively working at all. I have fixed the bugs and pushed an update to the github, so it should work now. --- Alex On Apr 3, 2013, at 10:28 AM, John McKendry wrote: > I am trying to run the car-push scenario from the car-to-car ndnSIM code from https://github.com/cawka/ndnSIM-nom-rapid-car2car . The car-relay example is working, but I get an "Incompatible Types" error when I try to run car-push. The error comes from the first line in V2vTracer::Connect(), which is a call to TraceConnectWithoutContext(). > > This is the error: > Waf: Entering directory `/home/mzeal/ns-dev/ns-3/ndnSIM-nom-rapid-car2car-master/build' > Waf: Leaving directory `/home/mzeal/ns-dev/ns-3/ndnSIM-nom-rapid-car2car-master/build' > 'build' finished successfully (0.069s) > 0s -1 ndn.Consumer:Consumer() > msg="Incompatible types. (feed to "c++filt -t" if needed) > got=ns3::MemPtrCallbackImpl, ns3::Ptr), void, std::string, ns3::Ptr, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> > expected=ns3::CallbackImpl, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>*", file=./ns3/callback.h, line=470 > terminate called without an active exception > > This is the gdb traceback: > Program received signal SIGABRT, Aborted. > 0x00007ffff53ac445 in raise () from /lib/x86_64-linux-gnu/libc.so.6 > (gdb) bt > #0 0x00007ffff53ac445 in raise () from /lib/x86_64-linux-gnu/libc.so.6 > #1 0x00007ffff53afbab in abort () from /lib/x86_64-linux-gnu/libc.so.6 > #2 0x00007ffff5f1769d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 > #3 0x00007ffff5f15846 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 > #4 0x00007ffff5f15873 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 > #5 0x00007ffff71e7286 in ns3::Callback, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::DoAssign (this=0x7fffffffc560, other=...) at ./ns3/callback.h:468 > #6 0x00007ffff71e6c46 in ns3::Callback, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::Assign (this=0x7fffffffc560, other=...) at ./ns3/callback.h:445 > #7 0x00007ffff71e691e in ns3::TracedCallback, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>::ConnectWithoutContext (this=0x71b990, callback=...) at ./ns3/traced-callback.h:118 > #8 0x00007ffff71ee362 in ns3::Accessor::ConnectWithoutContext (this=0x6b6870, obj=0x71b940, cb=...) at ./ns3/trace-source-accessor.h:98 > #9 0x00007ffff76df314 in ns3::ObjectBase::TraceConnectWithoutContext (this=0x71b940, name=..., cb=...) > at ../src/core/model/object-base.cc:277 > #10 0x0000000000455bbd in ns3::ndn::V2vTracer::Connect (this=0x11eb4f0) at ../extensions/v2v-tracer.cc:113 > #11 0x0000000000455a17 in ns3::ndn::V2vTracer::V2vTracer (this=0x11eb4f0, os=..., node=...) at ../extensions/v2v-tracer.cc:99 > #12 0x00000000004565f0 in boost::make_shared > >, ns3::Ptr > (a1=..., a2=...) at /usr/local/include/boost/smart_ptr/make_shared.hpp:696 > #13 0x000000000045573d in ns3::ndn::V2vTracer::InstallAll (file=...) at ../extensions/v2v-tracer.cc:69 > #14 0x000000000043065b in main (argc=1, argv=0x7fffffffdde8) at ../scenarios/car-pusher.cc:169 > > This is in a fresh install of ns-3.16, ndnSIM, and the car2car extensions from two days ago in Ubuntu 12.04. The code in V2vTracer looks just like the code in CarRelayTracer to my naive eye, and I don't know enough about ns-3 tracing to know where to begin fixing it. Any help will be greatly appreciated. > > John > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 3 11:28:46 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 3 Apr 2013 11:28:46 -0700 Subject: [ndnSIM] NDN mailing list In-Reply-To: References: Message-ID: <077572EE-0C51-43B9-9A8F-1CC11EC341F3@ucla.edu> Hi Xiaoke, There is ccnx-users mailing list (http://www.ccnx.org/mailman/listinfo/ccnx-users), which while sometimes is focused mainly on CCNx package, has a large NDN community of subscribers. You can try to start the discussion there. --- Alex On Apr 3, 2013, at 12:44 AM, Xiaoke Jiang wrote: > Hi All, > I have some questions want to discuss in NDN community, is there NDN mailing list? > > Thank you! > > thanks > > My Regards, > Xiaoke (Shock) Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China, 100084 -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 3 11:55:02 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 3 Apr 2013 11:55:02 -0700 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> <300C9032-4545-41EA-97AD-79F691E0EF5E@ucla.edu> Message-ID: Hi Yusung, It may not be that big of a disadvantage, but it is relatively serious requirement for the architecture, raising several questions. What exactly is this digest a hash of? The content? The packet? Some other data? Which digest algorithm suits best for everybody using the architecture? If producers don't consider (directly or indirectly) the digest component, how do the customers will figure out what is the digest to be put in the Interest? The last question, at least for me, is one of the major problems of having the implicit component. Yes, it is good to have ability to uniquely identify the data you want to get, but how exactly can you figure out this implicit digest before you got the data (or before data is actually produced). --- Alex On Apr 2, 2013, at 10:35 PM, Yusung Kim wrote: > Hi Alex, > > Thank you for your comment. > I agree your explanation. > > By the way, would you tell me why you consider it as a "big" disadvantage ? > > When using the implicit digest component, > a producer or an application developer does not need to consider the digest component. > It seems to be easy to develop applications over NDN. > > What is a negative effect on using the implicit digest component? > > - Yusung Kim - > > > > > On Wed, Apr 3, 2013 at 3:08 AM, Alex Afanasyev wrote: > Hi Yusung, > > The answer is of course NO, since the Interests specifies one name, but the available data has different (does not matter implicit or explicit component) name. > > What I'm seeing as advantage (and a "big" disadvantage at the same time) of using the implicit digest component is that routers are required to calculate this component based on the content. This prevents a producer from "lying" and setting one explicit digest, while the content corresponds to a completely different digest. > > --- > Alex > > On Apr 1, 2013, at 6:31 PM, Yusung Kim wrote: > >> Hi Alex, >> >> It's right, each individual piece of content should have a unique name in NDN. >> >> We may explicitly add a digest component to the name as following; >> >> 1) /domain.com/video1.avi/sequence_num/explicit_producer1_digest >> 2) /domain.com/video1.avi/sequence_num/explicit_producer2_digest >> >> >> When User1 retrieved content by using the name 1) and the data is cached at routers , >> if User2 sends an interest packet with the name 2), the interest cannot be served from the Content Store since the cache was stored by the name 1) >> >> >> How about using the implicit digest ? >> >> 3) /domain.com/video1.avi/sequence_num/implicit_producer1_digest >> 4) /domain.com/video1.avi/sequence_num/implicit_producer2_digest >> >> Once User1 retrieved content by using the name 3), >> Could User2 retrieve the cached data, even though User2 sends an interest with the name 4) ? >> >> If the answer is NO, what is the merit using the implicit digest instead of the explicit digest? >> >> Thank you, >> >> - Yusung Kim - >> >> >> >> On Mon, Apr 1, 2013 at 11:58 AM, Alex Afanasyev wrote: >> Hi Yusung, >> >> No, ndnSIM (as of right now) does not have a concept of the implicit digest. Ideally, each individual piece of content should have a unique name. If you really want to distinguish between data produced by Producer1 and Producer2, why not explicitly name these two data pieces differently? Alternatively, you can explicitly add a digest component to the name. >> >> --- >> Alex >> >> On Mar 31, 2013, at 7:50 PM, Yusung Kim wrote: >> >>> Hi Alex and ndnSIM community. >>> >>> When using ndnSIM, is there the same function of the implicit digest to get specific content ? >>> ( the implicit digest is used in CCNx, right ? ) >>> >>> In the your example topology, >>> Does Consumer need to select one producer between Producer1 and Producer2 using the implicit digest ? >>> >>> Thanks, >>> >>> - Yusung Kim - >>> >>> >>> >>> On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev wrote: >>> Hi Amin, >>> >>> Let me clarify a little bit with a small example: >>> >>> Consumer --- Router ----- Producer1 >>> | >>> +--------- Producer2 >>> >>> Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer will reach both Producer1 and Producer2, and they both will send back a content object packet. >>> >>> Router, receiving the first packet (depending on the topology, could be from Producer1 or Producer2) will forward it to the consumer and remove* the PIT entry. When the second content object arrives to the Router (not the consumer), it will be discarded by the router, as unsolicited. (I would not call this as a drop, since it is relatively high-level decision to not forward the specific packet.) >>> >>> * PIT entry can be immediately removed (by default), or scheduled for removal within a short time interval (PitEntryPruningTimout). In either case, an extra content object will be discarded. >>> >>> --- >>> Alex >>> >>> On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: >>> >>>> In case of ns3::ndn::fw::Flooding, we will have several drops. Because when a consumer receives desired content from first sender/producer, consumer will drop other same contents. Yes? because the desired Interest has been satisfied and removed from PIT. >>>> >>>> >>>> /Amin >>>> >>>> >>>> >>>> On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >>>>> Hi Amin, >>>>> >>>>> I is possible, but it depends on the forwarding strategy to deliver Interests to different producers. For example, if you choose ns3::ndn::fw::BestRoute, then Interests will only be delivered over the "shortest-metric" path and some of the producers will never see the Interests. If you use ns3::ndn::fw::Flooding, then all of the producers will receive Interests and it would depend on network topology (delays/losses) content object from which exactly producer will reach the consumer. >>>>> >>>>> In case if you have several consumers, depending on topology and forwarding strategy, they may be getting content objects from different producers. >>>>> >>>>> If you want only some Interests be satisfied by one producers and other by another, you may need to amend ndn::Producer implementation (or better create a new custom Producer app) by adding the appropriate logic. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >>>>> >>>>>> Hi friends, >>>>>> Is it possible to satisfy sent Interests from a consumer with more than one producer? >>>>>> for example, does the following code work correctly to satisfy Interests in /dst1 namespace with three producers? >>>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); >>>>>> producerHelper.SetPrefix ("/dst1"); >>>>>> producerHelper.Install (producer1); >>>>>> >>>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); >>>>>> producerHelper.SetPrefix ("/dst1"); >>>>>> producerHelper.Install (producer2); >>>>>> >>>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); >>>>>> producerHelper.SetPrefix ("/dst1"); >>>>>> producerHelper.Install (producer3); >>>>>> >>>>>> >>>>>> Best Regards, >>>>>> /Amin >>>>>> >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>> >>>> >>>> -- >>>> >>>> Best Regards, >>>> >>>> ======================================================= >>>> Amin Karami, PhD student in Computer Architecture Department (DAC) at >>>> the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) >>>> >>>> e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 >>>> phone: +34 93 40 11 638 | Jordi Girona, 1-3 >>>> | 08034 Barcelona - SPAIN >>>> WWW: http://personals.ac.upc.edu/amin/ >>>> ======================================================= >>>> >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> 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 Wed Apr 3 19:36:36 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Thu, 4 Apr 2013 10:36:36 +0800 Subject: [ndnSIM] NDN mailing list In-Reply-To: <077572EE-0C51-43B9-9A8F-1CC11EC341F3@ucla.edu> References: <077572EE-0C51-43B9-9A8F-1CC11EC341F3@ucla.edu> Message-ID: <35381CACF81843B9AB30187DC0695181@gmail.com> thx. Alex. And I have question, would you give your opinion? I want to solve producer mobility of NDN, so as to the assumption, after moving to a new access point, whether the name prefix of this producer should be changed or not? thanks My Regards, Xiaoke (Shock) Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China, 100084 On Thursday, April 4, 2013 at 2:28 AM, Alex Afanasyev wrote: > Hi Xiaoke, > > There is ccnx-users mailing list (http://www.ccnx.org/mailman/listinfo/ccnx-users), which while sometimes is focused mainly on CCNx package, has a large NDN community of subscribers. You can try to start the discussion there. > > --- > Alex > > On Apr 3, 2013, at 12:44 AM, Xiaoke Jiang wrote: > > Hi All, > > I have some questions want to discuss in NDN community, is there NDN mailing list? > > > > Thank you! > > > > thanks > > > > My Regards, > > Xiaoke (Shock) Jiang ????? > > > > Ph.D Candidate, > > Dept. of Computer Science and Technology, > > Tsinghua University, P. R. China, 100084 > > > > > > > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yskim525 at gmail.com Wed Apr 3 19:54:46 2013 From: yskim525 at gmail.com (Yusung Kim) Date: Thu, 4 Apr 2013 11:54:46 +0900 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> <300C9032-4545-41EA-97AD-79F691E0EF5E@ucla.edu> Message-ID: Hi Alex, Yes I agree that it is an important issue. For the last question, "if a producer does not consider the digest component, how do the customer will figure out it?" In CCNx, the implicit digest component seems to be created and notified by a CCN library rather than an application itself, right ? If the process is going to be in a standard protocol such as TCP ( at a separated layer ), it could be automatically handled without a consumer's * participation**.* otherwise, we may use such a protocol at a library ( like the implementation in CCNx ) or design it at application-layer *individually*. It's very useful discussion on the digest component. I appreciate your kind comment. Thank you, * * - Yusung Kim - * * On Thu, Apr 4, 2013 at 3:55 AM, Alex Afanasyev wrote: > Hi Yusung, > > It may not be that big of a disadvantage, but it is relatively serious > requirement for the architecture, raising several questions. What exactly > is this digest a hash of? The content? The packet? Some other data? Which > digest algorithm suits best for everybody using the architecture? If > producers don't consider (directly or indirectly) the digest component, how > do the customers will figure out what is the digest to be put in the > Interest? > > The last question, at least for me, is one of the major problems of having > the implicit component. Yes, it is good to have ability to uniquely > identify the data you want to get, but how exactly can you figure out this > implicit digest before you got the data (or before data is actually > produced). > > --- > Alex > > On Apr 2, 2013, at 10:35 PM, Yusung Kim wrote: > > Hi Alex, > > Thank you for your comment. > I agree your explanation. > > By the way, would you tell me why you consider it as a "big" disadvantage > ? > > When using the implicit digest component, > a producer or an application developer does not need to consider the > digest component. > It seems to be easy to develop applications over NDN. > > What is a negative effect on using the implicit digest component? > > - Yusung Kim - > > > > > On Wed, Apr 3, 2013 at 3:08 AM, Alex Afanasyev < > alexander.afanasyev at ucla.edu> wrote: > >> Hi Yusung, >> >> The answer is of course NO, since the Interests specifies one name, but >> the available data has different (does not matter implicit or explicit >> component) name. >> >> What I'm seeing as advantage (and a "big" disadvantage at the same time) >> of using the implicit digest component is that routers are required to >> calculate this component based on the content. This prevents a producer >> from "lying" and setting one explicit digest, while the content corresponds >> to a completely different digest. >> >> --- >> Alex >> >> On Apr 1, 2013, at 6:31 PM, Yusung Kim wrote: >> >> Hi Alex, >> >> It's right, each individual piece of content should have a unique name >> in NDN. >> >> We may explicitly add a digest component to the name as following; >> >> 1) /domain.com/video1.avi/sequence_num/*explicit_producer1_digest * >> 2) /domain.com/video1.avi/sequence_num/*explicit_producer2_digest* >> >> >> When User1 retrieved content by using the name 1) and the data is cached >> at routers , >> if User2 sends an interest packet with the name 2), the interest cannot >> be served from the Content Store since the cache was stored by the name 1) >> >> >> How about using the implicit digest ? >> >> 3) /domain.com/video1.avi/sequence_num/*implicit_producer1_digest * >> 4) /domain.com/video1.avi/sequence_num/*implicit_producer2_digest* >> * >> * >> Once User1 retrieved content by using the name 3), >> Could User2 retrieve the cached data, even though User2 sends an >> interest with the name 4) ? >> >> If the answer is NO, what is the merit using the implicit digest >> instead of the explicit digest? >> >> Thank you, >> >> - Yusung Kim - >> >> >> >> On Mon, Apr 1, 2013 at 11:58 AM, Alex Afanasyev < >> alexander.afanasyev at ucla.edu> wrote: >> >>> Hi Yusung, >>> >>> No, ndnSIM (as of right now) does not have a concept of the implicit >>> digest. Ideally, each individual piece of content should have a unique >>> name. If you really want to distinguish between data produced by Producer1 >>> and Producer2, why not explicitly name these two data pieces differently? >>> Alternatively, you can explicitly add a digest component to the name. >>> >>> --- >>> Alex >>> >>> On Mar 31, 2013, at 7:50 PM, Yusung Kim wrote: >>> >>> Hi Alex and ndnSIM community. >>> >>> When using ndnSIM, is there the same function of the implicit digest to >>> get specific content ? >>> ( the implicit digest is used in CCNx, right ? ) >>> >>> In the your example topology, >>> Does Consumer need to select one producer between Producer1 and >>> Producer2 using the implicit digest ? >>> >>> Thanks, >>> >>> - Yusung Kim - >>> >>> >>> >>> On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev < >>> alexander.afanasyev at ucla.edu> wrote: >>> >>>> Hi Amin, >>>> >>>> Let me clarify a little bit with a small example: >>>> >>>> Consumer --- Router ----- Producer1 >>>> | >>>> +--------- Producer2 >>>> >>>> Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer >>>> will reach both Producer1 and Producer2, and they both will send back a >>>> content object packet. >>>> >>>> Router, receiving the first packet (depending on the topology, could be >>>> from Producer1 or Producer2) will forward it to the consumer and remove* >>>> the PIT entry. When the second content object arrives to the Router (not >>>> the consumer), it will be discarded by the router, as unsolicited. (I >>>> would not call this as a drop, since it is relatively high-level decision >>>> to not forward the specific packet.) >>>> >>>> * PIT entry can be immediately removed (by default), or scheduled for >>>> removal within a short time interval (PitEntryPruningTimout). In either >>>> case, an extra content object will be discarded. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: >>>> >>>> In case of ns3::ndn::fw::Flooding, we will have several drops. >>>> Because when a consumer receives desired content from first >>>> sender/producer, consumer will drop other same contents. Yes? because the >>>> desired Interest has been satisfied and removed from PIT. >>>> >>>> >>>> /Amin >>>> >>>> >>>> >>>> On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >>>> >>>> Hi Amin, >>>> >>>> I is possible, but it depends on the forwarding strategy to deliver >>>> Interests to different producers. For example, if you choose >>>> ns3::ndn::fw::BestRoute, then Interests will only be delivered over the >>>> "shortest-metric" path and some of the producers will never see the >>>> Interests. If you use ns3::ndn::fw::Flooding, then all of the producers >>>> will receive Interests and it would depend on network topology >>>> (delays/losses) content object from which exactly producer will reach the >>>> consumer. >>>> >>>> In case if you have several consumers, depending on topology and >>>> forwarding strategy, they may be getting content objects from different >>>> producers. >>>> >>>> If you want only some Interests be satisfied by one producers and >>>> other by another, you may need to amend ndn::Producer implementation (or >>>> better create a new custom Producer app) by adding the appropriate logic. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >>>> >>>> Hi friends, >>>> Is it possible to satisfy sent Interests from a consumer with more than >>>> one producer? >>>> for example, does the following code work correctly to satisfy >>>> Interests in /dst1 namespace with three producers? >>>> >>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer1); ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer2); >>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); producerHelper.SetPrefix ("/dst1"); producerHelper.Install (producer3); >>>> >>>> >>>> Best Regards, >>>> /Amin >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> >>>> >>>> -- >>>> >>>> >>>> Best Regards, >>>> >>>> ======================================================= >>>> Amin Karami, PhD student in Computer Architecture Department (DAC) at >>>> the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) >>>> >>>> e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 >>>> phone: +34 93 40 11 638 | Jordi Girona, 1-3 >>>> | 08034 Barcelona - SPAIN >>>> WWW: http://personals.ac.upc.edu/amin/ >>>> ======================================================= >>>> >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Apr 4 12:07:06 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 4 Apr 2013 12:07:06 -0700 Subject: [ndnSIM] NDN mailing list In-Reply-To: <35381CACF81843B9AB30187DC0695181@gmail.com> References: <077572EE-0C51-43B9-9A8F-1CC11EC341F3@ucla.edu> <35381CACF81843B9AB30187DC0695181@gmail.com> Message-ID: <0D093802-0682-477B-B987-32CB220CF795@ucla.edu> Hi Xiaoke, Namespace prefix that a specific producer uses to name the data it is producing does not normally relate to any "topological" location of this producer. In other words, whether the producer has moved or not, it suppose to use an application-specific name prefix that it is authorized to use and to name its data. The network by some means (either using dynamic routing or some other means of indirection) needs to figure out how to forward the Interest for these data **towards** the current location of the data producer (the highlighted towards means that if the data has been "cached" before somewhere else, there is no need to actually reach the producer). --- Alex On Apr 3, 2013, at 7:36 PM, Xiaoke Jiang wrote: > thx. Alex. > And I have question, would you give your opinion? > I want to solve producer mobility of NDN, so as to the assumption, after moving to a new access point, whether the name prefix of this producer should be changed or not? > > thanks > > My Regards, > Xiaoke (Shock) Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China, 100084 > On Thursday, April 4, 2013 at 2:28 AM, Alex Afanasyev wrote: > >> Hi Xiaoke, >> >> There is ccnx-users mailing list (http://www.ccnx.org/mailman/listinfo/ccnx-users), which while sometimes is focused mainly on CCNx package, has a large NDN community of subscribers. You can try to start the discussion there. >> >> --- >> Alex >> >> On Apr 3, 2013, at 12:44 AM, Xiaoke Jiang wrote: >> >>> Hi All, >>> I have some questions want to discuss in NDN community, is there NDN mailing list? >>> >>> Thank you! >>> >>> thanks >>> >>> My Regards, >>> Xiaoke (Shock) Jiang ????? >>> >>> Ph.D Candidate, >>> Dept. of Computer Science and Technology, >>> Tsinghua University, P. R. China, 100084 > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Apr 4 12:23:31 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 4 Apr 2013 12:23:31 -0700 Subject: [ndnSIM] Satisfy Interests with more than one producer In-Reply-To: References: <515881E0.2060707@ac.upc.edu> <86D47D9B-953A-482E-89DA-02D5F34A7FBB@ucla.edu> <5158883D.9010701@ac.upc.edu> <5F5A0ABB-6A9D-4F7D-BF40-9ED83EEB4931@ucla.edu> <300C9032-4545-41EA-97AD-79F691E0EF5E@ucla.edu> Message-ID: <7838D1FA-7D84-46B4-9151-C0C6A26CDDE6@ucla.edu> Hi Yusung, Let me clarify what I meant by the question. Let's say that the implicit digest component is calculated (hopefully fully defined and standardized way) by the NDN layer, based on the content of a packet. If a client wants to request something using the implicit component, it needs to know this component. BUT, to know this digest, somebody needs to tell what this digest is. And I don't see how exactly this part can be put inside the protocol. There is a special use of implicit component that can be put inside the protocol, but it is related to excluding the packet using the implicit digest, not using digest to request exact data packet. For example, a consumer can request /prefix/data and get some data packet that corresponds to this name. If the consumer after the reception of the packet figure out that it is not the packet it was looking for, it can send a new interest, excluding the received data packet based on the implicit digest component. --- Alex On Apr 3, 2013, at 7:54 PM, Yusung Kim wrote: > Hi Alex, > > Yes I agree that it is an important issue. > > For the last question, > "if a producer does not consider the digest component, how do the customer will figure out it?" > > In CCNx, the implicit digest component seems to be created and notified by a CCN library rather than an application itself, right ? > > If the process is going to be in a standard protocol such as TCP ( at a separated layer ), it could be automatically handled without a consumer's participation. > otherwise, we may use such a protocol at a library ( like the implementation in CCNx ) or design it at application-layer individually. > > It's very useful discussion on the digest component. > I appreciate your kind comment. > > Thank you, > > - Yusung Kim - > > > > > On Thu, Apr 4, 2013 at 3:55 AM, Alex Afanasyev wrote: > Hi Yusung, > > It may not be that big of a disadvantage, but it is relatively serious requirement for the architecture, raising several questions. What exactly is this digest a hash of? The content? The packet? Some other data? Which digest algorithm suits best for everybody using the architecture? If producers don't consider (directly or indirectly) the digest component, how do the customers will figure out what is the digest to be put in the Interest? > > The last question, at least for me, is one of the major problems of having the implicit component. Yes, it is good to have ability to uniquely identify the data you want to get, but how exactly can you figure out this implicit digest before you got the data (or before data is actually produced). > > --- > Alex > > On Apr 2, 2013, at 10:35 PM, Yusung Kim wrote: > >> Hi Alex, >> >> Thank you for your comment. >> I agree your explanation. >> >> By the way, would you tell me why you consider it as a "big" disadvantage ? >> >> When using the implicit digest component, >> a producer or an application developer does not need to consider the digest component. >> It seems to be easy to develop applications over NDN. >> >> What is a negative effect on using the implicit digest component? >> >> - Yusung Kim - >> >> >> >> >> On Wed, Apr 3, 2013 at 3:08 AM, Alex Afanasyev wrote: >> Hi Yusung, >> >> The answer is of course NO, since the Interests specifies one name, but the available data has different (does not matter implicit or explicit component) name. >> >> What I'm seeing as advantage (and a "big" disadvantage at the same time) of using the implicit digest component is that routers are required to calculate this component based on the content. This prevents a producer from "lying" and setting one explicit digest, while the content corresponds to a completely different digest. >> >> --- >> Alex >> >> On Apr 1, 2013, at 6:31 PM, Yusung Kim wrote: >> >>> Hi Alex, >>> >>> It's right, each individual piece of content should have a unique name in NDN. >>> >>> We may explicitly add a digest component to the name as following; >>> >>> 1) /domain.com/video1.avi/sequence_num/explicit_producer1_digest >>> 2) /domain.com/video1.avi/sequence_num/explicit_producer2_digest >>> >>> >>> When User1 retrieved content by using the name 1) and the data is cached at routers , >>> if User2 sends an interest packet with the name 2), the interest cannot be served from the Content Store since the cache was stored by the name 1) >>> >>> >>> How about using the implicit digest ? >>> >>> 3) /domain.com/video1.avi/sequence_num/implicit_producer1_digest >>> 4) /domain.com/video1.avi/sequence_num/implicit_producer2_digest >>> >>> Once User1 retrieved content by using the name 3), >>> Could User2 retrieve the cached data, even though User2 sends an interest with the name 4) ? >>> >>> If the answer is NO, what is the merit using the implicit digest instead of the explicit digest? >>> >>> Thank you, >>> >>> - Yusung Kim - >>> >>> >>> >>> On Mon, Apr 1, 2013 at 11:58 AM, Alex Afanasyev wrote: >>> Hi Yusung, >>> >>> No, ndnSIM (as of right now) does not have a concept of the implicit digest. Ideally, each individual piece of content should have a unique name. If you really want to distinguish between data produced by Producer1 and Producer2, why not explicitly name these two data pieces differently? Alternatively, you can explicitly add a digest component to the name. >>> >>> --- >>> Alex >>> >>> On Mar 31, 2013, at 7:50 PM, Yusung Kim wrote: >>> >>>> Hi Alex and ndnSIM community. >>>> >>>> When using ndnSIM, is there the same function of the implicit digest to get specific content ? >>>> ( the implicit digest is used in CCNx, right ? ) >>>> >>>> In the your example topology, >>>> Does Consumer need to select one producer between Producer1 and Producer2 using the implicit digest ? >>>> >>>> Thanks, >>>> >>>> - Yusung Kim - >>>> >>>> >>>> >>>> On Mon, Apr 1, 2013 at 4:11 AM, Alex Afanasyev wrote: >>>> Hi Amin, >>>> >>>> Let me clarify a little bit with a small example: >>>> >>>> Consumer --- Router ----- Producer1 >>>> | >>>> +--------- Producer2 >>>> >>>> Assuming ns3::ndn::fw::Flooding strategy, Interests from the Consumer will reach both Producer1 and Producer2, and they both will send back a content object packet. >>>> >>>> Router, receiving the first packet (depending on the topology, could be from Producer1 or Producer2) will forward it to the consumer and remove* the PIT entry. When the second content object arrives to the Router (not the consumer), it will be discarded by the router, as unsolicited. (I would not call this as a drop, since it is relatively high-level decision to not forward the specific packet.) >>>> >>>> * PIT entry can be immediately removed (by default), or scheduled for removal within a short time interval (PitEntryPruningTimout). In either case, an extra content object will be discarded. >>>> >>>> --- >>>> Alex >>>> >>>> On Mar 31, 2013, at 12:02 PM, Amin Karami wrote: >>>> >>>>> In case of ns3::ndn::fw::Flooding, we will have several drops. Because when a consumer receives desired content from first sender/producer, consumer will drop other same contents. Yes? because the desired Interest has been satisfied and removed from PIT. >>>>> >>>>> >>>>> /Amin >>>>> >>>>> >>>>> >>>>> On 03/31/2013 08:42 ?.?, Alex Afanasyev wrote: >>>>>> Hi Amin, >>>>>> >>>>>> I is possible, but it depends on the forwarding strategy to deliver Interests to different producers. For example, if you choose ns3::ndn::fw::BestRoute, then Interests will only be delivered over the "shortest-metric" path and some of the producers will never see the Interests. If you use ns3::ndn::fw::Flooding, then all of the producers will receive Interests and it would depend on network topology (delays/losses) content object from which exactly producer will reach the consumer. >>>>>> >>>>>> In case if you have several consumers, depending on topology and forwarding strategy, they may be getting content objects from different producers. >>>>>> >>>>>> If you want only some Interests be satisfied by one producers and other by another, you may need to amend ndn::Producer implementation (or better create a new custom Producer app) by adding the appropriate logic. >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Mar 31, 2013, at 11:35 AM, Amin Karami wrote: >>>>>> >>>>>>> Hi friends, >>>>>>> Is it possible to satisfy sent Interests from a consumer with more than one producer? >>>>>>> for example, does the following code work correctly to satisfy Interests in /dst1 namespace with three producers? >>>>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1); >>>>>>> producerHelper.SetPrefix ("/dst1"); >>>>>>> producerHelper.Install (producer1); >>>>>>> >>>>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer2); >>>>>>> producerHelper.SetPrefix ("/dst1"); >>>>>>> producerHelper.Install (producer2); >>>>>>> >>>>>>> ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer3); >>>>>>> producerHelper.SetPrefix ("/dst1"); >>>>>>> producerHelper.Install (producer3); >>>>>>> >>>>>>> >>>>>>> Best Regards, >>>>>>> /Amin >>>>>>> >>>>>>> _______________________________________________ >>>>>>> ndnSIM mailing list >>>>>>> ndnSIM at lists.cs.ucla.edu >>>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> Best Regards, >>>>> >>>>> ======================================================= >>>>> Amin Karami, PhD student in Computer Architecture Department (DAC) at >>>>> the Universitat Polit?cnica de Catalunya Barcelona Tech (UPC) >>>>> >>>>> e-mail: amin at ac.upc.edu | UPC-Campus Nord., Office: C6-E102 >>>>> phone: +34 93 40 11 638 | Jordi Girona, 1-3 >>>>> | 08034 Barcelona - SPAIN >>>>> WWW: http://personals.ac.upc.edu/amin/ >>>>> ======================================================= >>>>> >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> 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 anik2137 at gmail.com Fri Apr 5 09:02:38 2013 From: anik2137 at gmail.com (kauser anik) Date: Fri, 5 Apr 2013 22:02:38 +0600 Subject: [ndnSIM] ndn sim build error Message-ID: i am very new to this field . so forgive my ignorance. after installing and compiling i want to do the following thing : NS_LOG=ndn.Face:ndn.Consumer ./waf --run=ndn-simple but i got build error . can anybody say what may be the problem is ? i attach an image of the problem thanks in advance . -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screenshot from 2013-04-05 21:51:22.png Type: image/png Size: 221969 bytes Desc: not available URL: From alexander.afanasyev at ucla.edu Fri Apr 5 10:03:21 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 5 Apr 2013 10:03:21 -0700 Subject: [ndnSIM] ndn sim build error In-Reply-To: References: Message-ID: <550DC34C-CE76-4BB4-BCD3-00FC10D8C49E@ucla.edu> Hi! (Small suggestion: don't post a large image next time, you could just copy-paste output / the error message.) >From what I can tell from the error, ndnSIM is not properly configured and compiled. You should double check what are the errors during ./waf configure stage. It most likely complains something about boost libraries, but you should check the actual log for more specific problem(s). --- Alex On Apr 5, 2013, at 9:02 AM, kauser anik wrote: > i am very new to this field . so forgive my ignorance. > after installing and compiling i want to do the following thing : > NS_LOG=ndn.Face:ndn.Consumer ./waf --run=ndn-simple > > but i got build error . can anybody say what may be the problem is ? i attach an image of the problem > thanks in advance . > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From melisyetkinler at gmail.com Fri Apr 5 12:01:39 2013 From: melisyetkinler at gmail.com (=?ISO-8859-9?Q?Melis_YETK=DDNLER?=) Date: Fri, 5 Apr 2013 15:01:39 -0400 Subject: [ndnSIM] (no subject) Message-ID: Hi, I am trying to simulate a mobile wireless network scenario in ndnsim and I wondered if there are any similiar scenarios/examples or modules for wireless already have been written in ndnSIM like some ndnSIM examples on ndnsim github page.Else, I will appreciate any kind of advise on how to use mobility classes of ns3 with ndn protocol stacks to start. Thanks in advance Sincerely Melis -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Apr 5 12:11:53 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 5 Apr 2013 12:11:53 -0700 Subject: [ndnSIM] (no subject) In-Reply-To: References: Message-ID: Hi Melis, Have you already checked this example: https://github.com/cawka/ndnSIM-nom-rapid-car2car ? --- Alex On Apr 5, 2013, at 12:01 PM, Melis YETK?NLER wrote: > Hi, > > I am trying to simulate a mobile wireless network scenario in ndnsim and I wondered if there are any similiar scenarios/examples or modules for wireless already have been written in ndnSIM like some ndnSIM examples on ndnsim github page.Else, I will appreciate any kind of advise on how to use mobility classes of ns3 with ndn protocol stacks to start. Thanks in advance > Sincerely > Melis > _______________________________________________ > 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 anik2137 at gmail.com Fri Apr 5 12:53:22 2013 From: anik2137 at gmail.com (kauser anik) Date: Sat, 6 Apr 2013 01:53:22 +0600 Subject: [ndnSIM] (no subject) Message-ID: i get this message , ./waf Waf: Entering directory `/home/kauser/ndnSIM/ns-3/build' Could not find a task generator for the name 'ns3-visualizer' can anyone help me about the problem -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Apr 5 12:58:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 5 Apr 2013 12:58:10 -0700 Subject: [ndnSIM] (no subject) In-Reply-To: References: Message-ID: <2BE14A8E-958F-43BB-A4A2-00CA9CFA1037@ucla.edu> You should check http://ndnsim.net/faq.html This is a "common" failure. --- Alex On Apr 5, 2013, at 12:53 PM, kauser anik wrote: > i get this message , > > ./waf > Waf: Entering directory `/home/kauser/ndnSIM/ns-3/build' > Could not find a task generator for the name 'ns3-visualizer' > > can anyone help me about the problem > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Sat Apr 6 02:21:16 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Sat, 6 Apr 2013 17:21:16 +0800 Subject: [ndnSIM] ns3 Energy module Message-ID: Hi Alex I am trying to use ns3 energy module with ndnSIM but receiving error with red color. So difficult to trace out errors. I am new to ndnSIM. I would appreciate if you help me with example source code using energy module with ndn. Thanks. rgd -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Sat Apr 6 04:27:48 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Sat, 6 Apr 2013 19:27:48 +0800 Subject: [ndnSIM] GetInterest() in ndn-pit-entry.cc Message-ID: Hi, I met a problem, when I call GetInterest in ndn-pit-entry.cc Ptr GetInterest () const; The program will shutdown (terminated with signal SIGSEGV.), I tried serval times. Does anyone can give some hints? I think GetInterest() is quit a normal Getter, why does it happy? thanks My Regards, Xiaoke (Shock) Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China, 100084 -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Sat Apr 6 04:42:37 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Sat, 6 Apr 2013 19:42:37 +0800 Subject: [ndnSIM] GetInterest() in ndn-pit-entry.cc In-Reply-To: References: Message-ID: Bug Fixed. It caused by pitEntry == 0. I should present a if statement first. thanks My Regards, Xiaoke (Shock) Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China, 100084 On Saturday, April 6, 2013 at 7:27 PM, Xiaoke Jiang wrote: > Hi, I met a problem, when I call GetInterest in ndn-pit-entry.cc (http://ndn-pit-entry.cc) > Ptr > GetInterest () const; > > > > The program will shutdown (terminated with signal SIGSEGV.), I tried serval times. Does anyone can give some hints? > I think GetInterest() is quit a normal Getter, why does it happy? > > thanks > > My Regards, > Xiaoke (Shock) Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China, 100084 > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Apr 6 12:50:45 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 6 Apr 2013 12:50:45 -0700 Subject: [ndnSIM] ns3 Energy module In-Reply-To: References: Message-ID: Hi Xee, I'm not sure what do you mean that you're trying to use energy module with ndnSIM. As far as I understand from what I have checked, energy module in NS-3 just gives a framework to simulate energy consumption parameters (http://www.nsnam.org/docs/release/3.16/models/html/energy.html). I'm not entirely sure what exactly you want to do and what kind of errors are you getting... If you can gives an example of the scenario you're working on, and some error messages you're getting, we would be able to better help you. --- Alex On Apr 6, 2013, at 2:21 AM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > I am trying to use ns3 energy module with ndnSIM but receiving error with red color. So difficult to trace out errors. I am new to ndnSIM. I would appreciate if you help me with example source code using energy module with ndn. > > Thanks. > > rgd > -Xee > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Apr 6 15:52:16 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 6 Apr 2013 15:52:16 -0700 Subject: [ndnSIM] GetInterest() in ndn-pit-entry.cc In-Reply-To: References: Message-ID: <39768BF5-CAFD-49B8-A88D-437421B0E0BE@ucla.edu> Hi Xiaoke, Am I assuming correctly that you're referring to some code that is relies on "previously created" PIT entry? If it is true, than you're absolutely right. A pitEntry may not me created for various reasons (PIT resources exhausted or there is no FIB entry that can be associated with this PIT entry) and one needs always check if pitEntry is 0 (actually, better would be if you compared with the value returned by m_pit->End(), but currently it is the same thing). --- Alex On Apr 6, 2013, at 4:42 AM, Xiaoke Jiang wrote: > Bug Fixed. It caused by pitEntry == 0. I should present a if statement first. > > thanks > > My Regards, > Xiaoke (Shock) Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China, 100084 > On Saturday, April 6, 2013 at 7:27 PM, Xiaoke Jiang wrote: > >> Hi, I met a problem, when I call GetInterest in ndn-pit-entry.cc >> Ptr >> GetInterest () const; >> >> The program will shutdown (terminated with signal SIGSEGV.), I tried serval times. Does anyone can give some hints? >> I think GetInterest() is quit a normal Getter, why does it happy? >> >> thanks >> >> My Regards, >> Xiaoke (Shock) Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China, 100084 > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Sat Apr 6 19:22:48 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Sun, 7 Apr 2013 10:22:48 +0800 Subject: [ndnSIM] ns3 Energy module Message-ID: Hi Alex I want to simulate the energy consumption of nodes using ndn protocol, specifically to the evaluate impact of cache. rgd -Xee ------------------ Original ------------------ From: "Alex Afanasyev"; Date: Apr 7, 2013 To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] ns3 Energy module Hi Xee, I'm not sure what do you mean that you're trying to use energy module with ndnSIM. As far as I understand from what I have checked, energy module in NS-3 just gives a framework to simulate energy consumption parameters (http://www.nsnam.org/docs/release/3.16/models/html/energy.html). I'm not entirely sure what exactly you want to do and what kind of errors are you getting... If you can gives an example of the scenario you're working on, and some error messages you're getting, we would be able to better help you. --- Alex On Apr 6, 2013, at 2:21 AM, "Xee" <1839750381 at qq.com> wrote: Hi Alex I am trying to use ns3 energy module with ndnSIM but receiving error with red color. So difficult to trace out errors. I am new to ndnSIM. I would appreciate if you help me with example source code using energy module with ndn. Thanks. rgd -Xee _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 7 20:58:38 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 7 Apr 2013 20:58:38 -0700 Subject: [ndnSIM] shared libraries In-Reply-To: <3e230a00.1ac95.13de771c92b.Coremail.blindeafer@163.com> References: <3e230a00.1ac95.13de771c92b.Coremail.blindeafer@163.com> Message-ID: <3CE96C64-AFAD-4F8A-A3DC-AC11B9FD2CA5@ucla.edu> Hi Shenglan, You can try to run like this, assuming you have installed NS-3 in /usr/local (if not, just adjust the path) LD_LIBRARY_PATH=/usr/local/lib ./build/ndn-tree-tracers You can adjust your user environment (~/.bashrc or ~/.profile), so you don't need to set this variable every time you're running the simulation. --- Alex On Apr 7, 2013, at 7:20 PM, ??? wrote: > Hi Alex, > It returned an error when I ran the "ndn-tree-tracers.cc", the error is "build/ndn-tree-tracers: error while loading shared libraries: libns3-dev-network-optimized.so: cannot open shared object file: No such file or directory" > Would you like to give me some help. > > Best regards, > Shenglan. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Mon Apr 8 08:22:44 2013 From: huyao0107 at gmail.com (yao hu) Date: Tue, 9 Apr 2013 00:22:44 +0900 Subject: [ndnSIM] How to see the contents/entries in CS? Message-ID: Hi Alex, Is there a simple way to see the real-time contents or entries in CS like FIB and PIT in visulizer on some node when simulation runs? Thanks for your reply!! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 9 05:47:11 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 9 Apr 2013 05:47:11 -0700 Subject: [ndnSIM] How to see the contents/entries in CS? In-Reply-To: References: Message-ID: Hi huyao, I just added this ability to NS-3/ndnSIM. You need to update your NS-3 and ndnSIM code to the latest version from github. For now it shows only names of the content objects that are in cache. Let me known if you want to see some more information there. --- Alex On Apr 8, 2013, at 8:22 AM, yao hu wrote: > Hi Alex, > > Is there a simple way to see the real-time contents or entries in CS like FIB and PIT in visulizer on some node when simulation runs? > > Thanks for your reply!! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From mahdian.m at husky.neu.edu Tue Apr 9 10:07:41 2013 From: mahdian.m at husky.neu.edu (Milad Mahdian) Date: Tue, 9 Apr 2013 13:07:41 -0400 Subject: [ndnSIM] installing ndnSIM Message-ID: Hi Alex, I have installed ndnSIM on my mac and after running the sample simulation I get the following: Milads-MacBook-Air:ns-3 miladmahdian$ ./waf --run=ndn-simple --vis Waf: Entering directory `/Users/miladmahdian/Downloads/ns-allinone-3.16/ns-3.16/ndnSIM/ns-3/build' Waf: Leaving directory `/Users/miladmahdian/Downloads/ns-allinone-3.16/ns-3.16/ndnSIM/ns-3/build' 'build' finished successfully (2.861s) msg="Log component "ndn.fw.BestRoute.PerOutFaceLimits" has already been registered once.", file=../src/core/model/log.cc, line=99 terminate called without an active exception Command ['/Users/miladmahdian/Downloads/ns-allinone-3.16/ns-3.16/ndnSIM/ns-3/build/src/ndnSIM/examples/ns3-dev-ndn-simple-debug', '--SimulatorImplementationType=ns3::VisualSimulatorImpl'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s "). can you help me solve this problem? Regards, Milad Mahdian -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 9 10:18:00 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 9 Apr 2013 10:18:00 -0700 Subject: [ndnSIM] installing ndnSIM In-Reply-To: References: Message-ID: <647EDFE9-6289-4B2B-A0C5-275EB3C5BA8E@ucla.edu> Hi Milad, I'm a little bit confused about your set up. Did you download ns-allinone-3.16 and then cloned ndnSIM or followed the instructions on ndnsim.net. There are a number of changes to NS-3 base, without which ndnSIM would not work properly. --- Alex On Apr 9, 2013, at 10:07 AM, Milad Mahdian wrote: > > Hi Alex, > > I have installed ndnSIM on my mac and after running the sample simulation I get the following: > > Milads-MacBook-Air:ns-3 miladmahdian$ ./waf --run=ndn-simple --vis > Waf: Entering directory `/Users/miladmahdian/Downloads/ns-allinone-3.16/ns-3.16/ndnSIM/ns-3/build' > Waf: Leaving directory `/Users/miladmahdian/Downloads/ns-allinone-3.16/ns-3.16/ndnSIM/ns-3/build' > 'build' finished successfully (2.861s) > msg="Log component "ndn.fw.BestRoute.PerOutFaceLimits" has already been registered once.", file=../src/core/model/log.cc, line=99 > terminate called without an active exception > Command ['/Users/miladmahdian/Downloads/ns-allinone-3.16/ns-3.16/ndnSIM/ns-3/build/src/ndnSIM/examples/ns3-dev-ndn-simple-debug', '--SimulatorImplementationType=ns3::VisualSimulatorImpl'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s "). > > > can you help me solve this problem? > > Regards, > Milad Mahdian > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From xhbreezehu at gmail.com Tue Apr 9 20:53:44 2013 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Wed, 10 Apr 2013 11:53:44 +0800 Subject: [ndnSIM] how forwarding strategy can get the local node name? Message-ID: Hi, Do you guys know how applications can get the local node name? Thanks in advance! Best regards, Xiaoyan -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 9 21:15:14 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 9 Apr 2013 21:15:14 -0700 Subject: [ndnSIM] how forwarding strategy can get the local node name? In-Reply-To: References: Message-ID: <7518D04E-7B15-4FE6-A6BF-BD37897C6738@ucla.edu> Hi Xiaoyan, Do you mean node id or name that has been associated using topology reader (=Names class)? You can always get a reference to node object from the forwarding strategy object by doing the following (assuming you're in the forwarding strategy method): Ptr node = this->GetObject (); >From here to get node id: node->GetId (); to get associated name: Names::FindName (node); --- Alex On Apr 9, 2013, at 8:53 PM, Xiao yan Hu wrote: > Hi, > > Do you guys know how applications can get the local node name? > Thanks in advance! > > Best regards, > Xiaoyan > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From xhbreezehu at gmail.com Tue Apr 9 21:56:35 2013 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Wed, 10 Apr 2013 12:56:35 +0800 Subject: [ndnSIM] how forwarding strategy can get the local node name? In-Reply-To: <7518D04E-7B15-4FE6-A6BF-BD37897C6738@ucla.edu> References: <7518D04E-7B15-4FE6-A6BF-BD37897C6738@ucla.edu> Message-ID: Hi Alex, That is exactly what I want. Really appreciate that. Thanks, Xiaoyan On Wed, Apr 10, 2013 at 12:15 PM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Xiaoyan, > > Do you mean node id or name that has been associated using topology reader > (=Names class)? > > You can always get a reference to node object from the forwarding strategy > object by doing the following (assuming you're in the forwarding strategy > method): > > Ptr node = this->GetObject (); > > From here to get node id: > node->GetId (); > > to get associated name: > Names::FindName (node); > > --- > Alex > > On Apr 9, 2013, at 8:53 PM, Xiao yan Hu wrote: > > > Hi, > > > > Do you guys know how applications can get the local node name? > > Thanks in advance! > > > > Best regards, > > Xiaoyan > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Wed Apr 10 05:15:40 2013 From: huyao0107 at gmail.com (yao hu) Date: Wed, 10 Apr 2013 21:15:40 +0900 Subject: [ndnSIM] How to see the contents/entries in CS? In-Reply-To: References: Message-ID: Hi Alex, Thanks very much for your work! Now I have made some change to some files including model/fw/ndn-forwarding-strategy.cc and it seems it works well. What should I do next in order to update my ns-3 and ndnsim to the latest version without using github (because of concerns about conflict.. it annoys a lot..:( ). Thanks a lot~ Regards, huyao 2013/4/9 Alex Afanasyev > Hi huyao, > > I just added this ability to NS-3/ndnSIM. You need to update your NS-3 > and ndnSIM code to the latest version from github. > > For now it shows only names of the content objects that are in cache. Let > me known if you want to see some more information there. > > --- > Alex > > On Apr 8, 2013, at 8:22 AM, yao hu wrote: > > > Hi Alex, > > > > Is there a simple way to see the real-time contents or entries in CS > like FIB and PIT in visulizer on some node when simulation runs? > > > > Thanks for your reply!! > > > > Regards, > > huyao > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From xhbreezehu at gmail.com Wed Apr 10 07:59:36 2013 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Wed, 10 Apr 2013 22:59:36 +0800 Subject: [ndnSIM] forward declaration error Message-ID: Hi, I kept getting errors " error: forward declaration of 'const struct ns3::ndn::cs::Entry'"? would you guys please tell me what does this mean? Actually I want to write my own custom forwarding strategy which is extended from best route and in which "Ptr entry" is the argument of one function. If I want to use Ptr, how should I declare it? Thanks very much! Sincerely, Xiaoyan -------------- next part -------------- An HTML attachment was scrubbed... URL: From mahdian.m at husky.neu.edu Wed Apr 10 12:44:10 2013 From: mahdian.m at husky.neu.edu (Milad Mahdian) Date: Wed, 10 Apr 2013 15:44:10 -0400 Subject: [ndnSIM] ndnSIM debugging Message-ID: Hi Alex, I re-installed ns-3 and ndnSIM and after running the simple-ndn I get the following: Waf: Entering directory `/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build' Waf: Leaving directory `/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build' 'build' finished successfully (2.165s) msg="Log component "ndn.fw.BestRoute.PerOutFaceLimits" has already been registered once.", file=../src/core/model/log.cc, line=99 terminate called without an active exception Command ['/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build/src/ndnSIM/examples/ns3-dev-ndn-grid-debug'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s "). can you help me solve this problem? Regards, Milad Mahdian -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 10 12:50:07 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 10 Apr 2013 12:50:07 -0700 Subject: [ndnSIM] ndnSIM debugging In-Reply-To: References: Message-ID: <5D17EC2A-AAF7-4AD8-99FD-EFD080E369CA@ucla.edu> Which OS and which compiler version are you using? I'll try to debug the problem, not sure what is wring since I don't have problems. Also, can you send my build/config.log and (if you don't mind) output of env command (just type env). --- Alex On Apr 10, 2013, at 12:44 PM, Milad Mahdian wrote: > Hi Alex, > > I re-installed ns-3 and ndnSIM and after running the simple-ndn I get the following: > > Waf: Entering directory `/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build' > Waf: Leaving directory `/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build' > 'build' finished successfully (2.165s) > msg="Log component "ndn.fw.BestRoute.PerOutFaceLimits" has already been registered once.", file=../src/core/model/log.cc, line=99 > terminate called without an active exception > Command ['/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build/src/ndnSIM/examples/ns3-dev-ndn-grid-debug'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s "). > > can you help me solve this problem? > > Regards, > Milad Mahdian > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Wed Apr 10 14:01:22 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 10 Apr 2013 14:01:22 -0700 Subject: [ndnSIM] ndnSIM debugging In-Reply-To: References: Message-ID: <865E7AB6-CF80-43C6-8DDA-C345670B42B9@ucla.edu> Hi Milad, That was one interesting problem that appeared only using 4.7 compiler. I have pushed a fix that solved the problem in the same environment that you have (OSX 10.8, g++ 4.7.2), so if you pull, you should be able to run the simulation. The fix is not 100% compliant with the old C++ standard (using extern template), but there should not be a problem with gcc that supported this syntax for a long time, and I also tested with clang compiler and it worked. If anybody is using another compiler, can you please test that the compilation is working? Thanks. --- Alex PS I cannot fully recommend using macport's version of gcc compiler (I'm assuming you're using it). It seem to work now, but I was having strange error messages related to incompatibility of libstdc++ in the past. Personally, I prefer using clang (clang++), which comes with OSX's xcode: # configure for debug mode with tests and examples CC=clang CXX=clang++ CXXFLAGS="-g -O0 -Wall -Qunused-arguments -Wno-unused-variable -Wno-unneeded-internal-declaration -Wno-unused-private-field" ./waf configure --enable-tests --enable-examples # configure for optimized mode without tests or examples CC=clang CXX=clang++ CXXFLAGS="-g -O3 -Wall -Qunused-arguments -Wno-unused-variable -Wno-unneeded-internal-declaration -Wno-unused-private-field" ./waf configure -d optimized On Apr 10, 2013, at 12:44 PM, Milad Mahdian wrote: > Hi Alex, > > I re-installed ns-3 and ndnSIM and after running the simple-ndn I get the following: > > Waf: Entering directory `/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build' > Waf: Leaving directory `/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build' > 'build' finished successfully (2.165s) > msg="Log component "ndn.fw.BestRoute.PerOutFaceLimits" has already been registered once.", file=../src/core/model/log.cc, line=99 > terminate called without an active exception > Command ['/Users/miladmahdian/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/build/src/ndnSIM/examples/ns3-dev-ndn-grid-debug'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run --command-template="gdb --args %s "). > > can you help me solve this problem? > > Regards, > Milad Mahdian > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Wed Apr 10 14:09:36 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 10 Apr 2013 14:09:36 -0700 Subject: [ndnSIM] How to see the contents/entries in CS? In-Reply-To: References: Message-ID: <88EB0006-476F-4A2F-BFC1-05060CFF46ED@ucla.edu> Hi huyao, With merging there is always a chance of conflict, but all conflicts are resolvable (or at least you can abort or revert back, if it is something serious). That was my primary reason to recommend writing extensions and scenarios outside NS-3 and ndnSIM repos (like here https://github.com/cawka/ndnSIM-examples, here https://github.com/cawka/ndnSIM-ddos-interest-flooding and other example repos). In this particular case, I don't believe that you're going to have conflicts, if you were using relatively new ndnSIM code (what ndnSIM commit your code is based). I basically made trivial changes that are not related to ndn-forwarding-strategy.cc. You should be able to pull code for NS-3 repo (this is different from ndnSIM repo), where the addition is just one file that gives you ability to monitor CS in visualizer. So, there should not be any kind of problem here with merging. --- Alex On Apr 10, 2013, at 5:15 AM, yao hu wrote: > Hi Alex, > > Thanks very much for your work! > Now I have made some change to some files including model/fw/ndn-forwarding-strategy.cc and it seems it works well. What should I do next in order to update my ns-3 and ndnsim to the latest version without using github (because of concerns about conflict.. it annoys a lot..:( ). > > Thanks a lot~ > > Regards, > huyao > > > > 2013/4/9 Alex Afanasyev > Hi huyao, > > I just added this ability to NS-3/ndnSIM. You need to update your NS-3 and ndnSIM code to the latest version from github. > > For now it shows only names of the content objects that are in cache. Let me known if you want to see some more information there. > > --- > Alex > > On Apr 8, 2013, at 8:22 AM, yao hu wrote: > > > Hi Alex, > > > > Is there a simple way to see the real-time contents or entries in CS like FIB and PIT in visulizer on some node when simulation runs? > > > > Thanks for your reply!! > > > > Regards, > > huyao > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 10 16:00:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 10 Apr 2013 16:00:10 -0700 Subject: [ndnSIM] Print PIT entry size In-Reply-To: <51655B49.4010000@ac.upc.edu> References: <51655B49.4010000@ac.upc.edu> Message-ID: Hi Amin, You can try to use a new example that I just uploaded http://ndnsim.net/metric.html#periodic-tracing-of-pending-interest-table-pit-size as a baseline for your implementation. Note that the number that you will get is an instantaneous size (how many records currently there are) of PIT on a node at that particular moment, and does not give any statistics how many records were created/satisfied. If you want this additional info, the tracing is a little bit more complicated and you can check another example (https://github.com/NDN-Routing/ndnSIM/blob/master/examples/ndn-simple-with-pit-operation-stats.cc). --- Alex On Apr 10, 2013, at 5:30 AM, Amin Karami wrote: > Hi Alex, > I am working with one example in ndnsim.net as: http://ndnsim.net/examples.html#node-bottleneck-topology > I am going to print the number of empty record of PIT in first router (Rtr1) in every second in command prompt, such as below: > (for example the primary PIT size for Rtr1 is 100) > Time Node PIT size > ------- ------- ----------- > 1 Rtr1 98 > 2 Rtr1 93 > 3 Rtr1 94 > 4 Rtr1 99 > . > . > > I could not find any relevant class in user guide to print this output. > > Would you mind please telling me how I can print this output? > > I am thankful for your guidance and support. > > > Best Regards, > Amin > From alexander.afanasyev at ucla.edu Wed Apr 10 16:06:06 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 10 Apr 2013 16:06:06 -0700 Subject: [ndnSIM] forward declaration error In-Reply-To: References: Message-ID: Hi Xiaoyan, I can tell more, if you can give more context about where the error originated. What it could be is that you provided forward declaration of Entry as "struct Entry;", while cs::Entry is actually a class and should be forward-declared as "class Entry;" If you never explicitly declared Entry and the error related to the compiler's implicit attempt to figure out what cs::Entry is, then just include header file in your forwarding strategy header file: #include Note, you should include file before start of any namespace, otherwise you'll get another set of strange errors. --- Alex On Apr 10, 2013, at 7:59 AM, Xiao yan Hu wrote: > Hi, > > I kept getting errors " error: forward declaration of 'const struct ns3::ndn::cs::Entry'"? > would you guys please tell me what does this mean? > Actually I want to write my own custom forwarding strategy which is extended from best route and in which "Ptr entry" is the argument of one function. > If I want to use Ptr, how should I declare it? > Thanks very much! > > Sincerely, > Xiaoyan > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Wed Apr 10 16:07:32 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 10 Apr 2013 16:07:32 -0700 Subject: [ndnSIM] ns3 Energy module In-Reply-To: References: Message-ID: Hi Xee, Can you give me a scenario which uses energy and ndnSIM model and gives you a compilation error, so I can debug the error? Thanks, Alex On Apr 6, 2013, at 7:22 PM, Xee <1839750381 at qq.com> wrote: > Hi Alex > > I want to simulate the energy consumption of nodes using ndn protocol, specifically to the evaluate impact of cache. > > rgd > -Xee > > > ------------------ Original ------------------ > From: "Alex Afanasyev"; > Date: Apr 7, 2013 > To: "Xee"<1839750381 at qq.com>; > Cc: "ndnsim"; > Subject: Re: [ndnSIM] ns3 Energy module > > Hi Xee, > > I'm not sure what do you mean that you're trying to use energy module with ndnSIM. As far as I understand from what I have checked, energy module in NS-3 just gives a framework to simulate energy consumption parameters (http://www.nsnam.org/docs/release/3.16/models/html/energy.html). I'm not entirely sure what exactly you want to do and what kind of errors are you getting... > > If you can gives an example of the scenario you're working on, and some error messages you're getting, we would be able to better help you. > > --- > Alex > > On Apr 6, 2013, at 2:21 AM, "Xee" <1839750381 at qq.com> wrote: > >> Hi Alex >> >> I am trying to use ns3 energy module with ndnSIM but receiving error with red color. So difficult to trace out errors. I am new to ndnSIM. I would appreciate if you help me with example source code using energy module with ndn. >> >> Thanks. >> >> rgd >> -Xee >> _______________________________________________ >> 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 xhbreezehu at gmail.com Wed Apr 10 18:41:29 2013 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Thu, 11 Apr 2013 09:41:29 +0800 Subject: [ndnSIM] forward declaration error In-Reply-To: References: Message-ID: Hi Alex, I forward declared it by "namespace cs {class Entry}". I'll try your suggestion by "#include ". Thanks very much. Best regards, Xiaoyan On Thu, Apr 11, 2013 at 7:06 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Xiaoyan, > > I can tell more, if you can give more context about where the error > originated. > > What it could be is that you provided forward declaration of Entry as > "struct Entry;", while cs::Entry is actually a class and should be > forward-declared as "class Entry;" > > If you never explicitly declared Entry and the error related to the > compiler's implicit attempt to figure out what cs::Entry is, then just > include header file in your forwarding strategy header file: > > #include > > Note, you should include file before start of any namespace, otherwise > you'll get another set of strange errors. > > --- > Alex > > On Apr 10, 2013, at 7:59 AM, Xiao yan Hu wrote: > > > Hi, > > > > I kept getting errors " error: forward declaration of 'const struct > ns3::ndn::cs::Entry'"? > > would you guys please tell me what does this mean? > > Actually I want to write my own custom forwarding strategy which is > extended from best route and in which "Ptr entry" is the > argument of one function. > > If I want to use Ptr, how should I declare it? > > Thanks very much! > > > > Sincerely, > > Xiaoyan > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Apr 11 10:13:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 11 Apr 2013 10:13:10 -0700 Subject: [ndnSIM] How to Add new face in ForwardingStragy.cc In-Reply-To: <1814c37e.5b46.13df6e6293e.Coremail.youshou_wy@126.com> References: <1814c37e.5b46.13df6e6293e.Coremail.youshou_wy@126.com> Message-ID: <7FC59D51-7AC2-4343-9CEB-1C466B5033F3@ucla.edu> Hi Nilicy, You can use ndn::L3Protocol interface (http://ndnsim.net/doxygen/classns3_1_1ndn_1_1_l3_protocol.html#a9d1161fc700b8a4fd793c4ff5644a6af) to convert face id to Ptr, assuming that you're trying to convert node's face id to Ptr (otherwise it would not make sense). For example, you can do a following: // input: int faceId; Ptr ndn = ?; // depending on where you're calling, you may use this->GetObject (); Ptr face = ndn->GetFaceById (faceId); --- Alex On Apr 10, 2013, at 7:21 PM, ?? wrote: > Hi Alex, > I add few new bits in the Interest , and these bits are to store some Face Id. I wanna add a new FIB entry using > m_fib->Add ((header->GetName()), inFace, metric), but how can I generate a Ptr face when i only have the > Face ID ? > Thanks > > Nilicy -------------- next part -------------- An HTML attachment was scrubbed... URL: From sarantarnoi at gmail.com Thu Apr 11 23:12:26 2013 From: sarantarnoi at gmail.com (Saran Tarnoi) Date: Fri, 12 Apr 2013 15:12:26 +0900 Subject: [ndnSIM] ndnSIM compatibility with packet loss simulation Message-ID: Dear Alex and All, I see an example code in ns-3 that simulates simple packet loss by setting an attribute of RateErrorMode in Netdevice. I guest that ndnSIM also support this. There will be hundreds of links in my simulating networks. I cannot do manually link configuration, so using topology file is my choice. However, I have no idea how to set the ErrorRate and ErrorUnit of each link in the topology file that will be later read by using AnnotatedTopologyReader. If you know the solution, please give me some ideas. Thanks a lot in advance for your time. -- Regards, Saran -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Fri Apr 12 09:37:38 2013 From: huyao0107 at gmail.com (yao hu) Date: Sat, 13 Apr 2013 01:37:38 +0900 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? Message-ID: Hi Alex, Maybe this is not related to ndnsim, just about ns3. Could you please give a hint about how to trace or record the value of some self-defined variable like each element in some array somewhere in ndnsim when simulation runs? Thanks a lot!! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Apr 12 10:40:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 12 Apr 2013 10:40:10 -0700 Subject: [ndnSIM] ndnSIM compatibility with packet loss simulation In-Reply-To: References: Message-ID: <6D8A8C4A-17B4-4B72-A63E-D219E59A2DA3@ucla.edu> Hi Saran, Do you need a precise control over which error rate is set on which link, or you want to just set the same error rate on all links? I think, it could be possible and relatively simple to add this function to AnnotatedTopologyReader. Are there just two parameters you mentioned or there is something else to be configured? I see that there are also other error models available in NS-3 (BinaryErrorModel, ListErrorModel, and ReceiveListErrorModel). Would it make sense to create a solution to allow any of these models? I'm not quite sure how exactly to extend the reader, so the solution is general enough... --- Alex On Apr 11, 2013, at 11:12 PM, Saran Tarnoi wrote: > Dear Alex and All, > > I see an example code in ns-3 that simulates simple packet loss by setting an attribute of RateErrorMode in Netdevice. > I guest that ndnSIM also support this. > > There will be hundreds of links in my simulating networks. > I cannot do manually link configuration, so using topology file is my choice. > However, I have no idea how to set the ErrorRate and ErrorUnit of each link in the topology file that will be later read by using AnnotatedTopologyReader. > > If you know the solution, please give me some ideas. > Thanks a lot in advance for your time. > > -- > Regards, > Saran > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Fri Apr 12 10:45:33 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 12 Apr 2013 10:45:33 -0700 Subject: [ndnSIM] Green faces tried twice in best-route forwarding strategy (#32) In-Reply-To: References: Message-ID: <0A9839D8-6604-47FF-9869-F1D13EE380C8@ucla.edu> Hi Yaogong, There is small redundancy, but it does not introduce any problems. If super::DoPropagateInterest() succeeded, then the processing will not happen in BestRoute at all. If it failed, the foreach loop will try and "skip" (if any exist) the green faces and attempt to send out over an available yellow face. This is just a small inefficiency that was made for the sake of simplicity and generality. --- Alex On Apr 12, 2013, at 7:20 AM, Yaogong Wang wrote: > In BestRoute::DoPropagateInterest(), the green faces are first tried in the call to super::DoPropagateInterest() and tried again in the BOOST_FOREACH loop. The call to super::DoPropagateInterest() appears redundant to me. > > ? > Reply to this email directly or view it on GitHub. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Apr 12 11:37:38 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 12 Apr 2013 11:37:38 -0700 Subject: [ndnSIM] ConsumerWindow application does not get all Data (#33) In-Reply-To: References: Message-ID: <66234810-8F79-42ED-B743-2E05D184B9A2@ucla.edu> Hi Cheng, Thanks for noticing the problem! I just pushed a commit that should solve the bug. I used a slightly different solution that you were suggesting, but the effect should be exactly the same. Thanks again, Alex On Apr 12, 2013, at 11:28 AM, Cheng Yi wrote: > In ConsumerWindow::ScheduleNextPacket, m_inFlight is always increased when Consumer::SendPacket is scheduled, but Consumer::SendPacket does not always send out an Interest. If m_inFlight is increased when no Interest is sent out, it will cause m_inFlight to be larger than the actual number of in-flight Interests. As a result, Interests in the retransmission queue may not be sent out because the window size is smaller than the m_inFlight at the end of the simulation. -------------- next part -------------- An HTML attachment was scrubbed... URL: From yic at email.arizona.edu Fri Apr 12 11:42:15 2013 From: yic at email.arizona.edu (Cheng Yi) Date: Fri, 12 Apr 2013 11:42:15 -0700 Subject: [ndnSIM] ConsumerWindow application does not get all Data (#33) In-Reply-To: <66234810-8F79-42ED-B743-2E05D184B9A2@ucla.edu> References: <66234810-8F79-42ED-B743-2E05D184B9A2@ucla.edu> Message-ID: <51685587.9000806@email.arizona.edu> No problem :) thanks for the fix! Cheng On 04/12/2013 11:37 AM, Alex Afanasyev wrote: > Hi Cheng, > > Thanks for noticing the problem! > > I just pushed a commit that should solve the bug. I used a slightly > different solution that you were suggesting, but the effect should be > exactly the same. > > Thanks again, > Alex > > On Apr 12, 2013, at 11:28 AM, Cheng Yi > wrote: > >> In ConsumerWindow::ScheduleNextPacket, m_inFlight is always increased >> when Consumer::SendPacket is scheduled, but Consumer::SendPacket does >> not always send out an Interest. If m_inFlight is increased when no >> Interest is sent out, it will cause m_inFlight to be larger than the >> actual number of in-flight Interests. As a result, Interests in the >> retransmission queue may not be sent out because the window size is >> smaller than the m_inFlight at the end of the simulation. >> > > > _______________________________________________ > 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 Apr 12 11:50:25 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 12 Apr 2013 11:50:25 -0700 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: References: Message-ID: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> Hi huyao, Technically, you have many options how to trace self-defined variables. If you really want to, you can just directly dump the values to std::cout or to some file. If you want to go with NS-3-style tracing, you would need to use either TraceSource, with which you explicitly notifying (somebody, who is configured in the simulation scenario using Connect calls) before or after you change the value. There is also a TraceValue, which can automate some notification tasks, if you're tracing just a value. Both methods require a couple of things. For TraceSource, you need to define a local TracedCallback (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) and then define a way to connect to this variable in GetTypeId method (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). Afterwards, you just use the locally defined TracedCallback as if it is a function (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586). For TracedValue, you need to define the variable that you want to trace in a slightly different way (it is no longer a simple variable), like this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. Then add a line into GetTypeId call, similar to this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65. To connect to variables, you need to use either Config::Connect/Config::ConnectWithoutContext method, or Object's TraceConnect (http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e). Let us know if you have more questions. If you can give more specific description of what you want to trace, then we may give more concrete suggestion of what is the best way to do it. --- Alex On Apr 12, 2013, at 9:37 AM, yao hu wrote: > Hi Alex, > > Maybe this is not related to ndnsim, just about ns3. Could you please give a hint about how to trace or record the value of some self-defined variable like each element in some array somewhere in ndnsim when simulation runs? > > Thanks a lot!! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Apr 13 08:46:38 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 14 Apr 2013 00:46:38 +0900 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> References: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> Message-ID: Hi Alex, Thanks very much for your guidance. After I tried following your instruction, however, I still felt a little confused by the callback to the trace source. Simply speaking, I defined a uint32_t array in ndn-forwarding-strategy.cc which will continuously store the incoming faceid information when simulation runs. If I just want to record the values of each element in this array into a local file using ns3 tracing, how should I select a simple way to do this? Just using NS_LOG or something is possible? Thanks a lot again~ Regards, huyao 2013/4/13 Alex Afanasyev > Hi huyao, > > Technically, you have many options how to trace self-defined variables. > If you really want to, you can just directly dump the values to std::cout > or to some file. > > If you want to go with NS-3-style tracing, you would need to use either > TraceSource, with which you explicitly notifying (somebody, who is > configured in the simulation scenario using Connect calls) before or after > you change the value. > > There is also a TraceValue, which can automate some notification tasks, if > you're tracing just a value. > > Both methods require a couple of things. For TraceSource, you need to > define a local TracedCallback (like this > https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) > and then define a way to connect to this variable in GetTypeId method (like > this > https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). > Afterwards, you just use the locally defined TracedCallback as if it is a > function (like this > https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586 > ). > > For TracedValue, you need to define the variable that you want to trace in > a slightly different way (it is no longer a simple variable), like this > https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. > Then add a line into GetTypeId call, similar to this > https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65 > . > > To connect to variables, you need to use either > Config::Connect/Config::ConnectWithoutContext method, or Object's > TraceConnect ( > http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e > ). > > > Let us know if you have more questions. If you can give more specific > description of what you want to trace, then we may give more concrete > suggestion of what is the best way to do it. > > --- > Alex > > On Apr 12, 2013, at 9:37 AM, yao hu wrote: > > Hi Alex, > > Maybe this is not related to ndnsim, just about ns3. Could you please give > a hint about how to trace or record the value of some self-defined variable > like each element in some array somewhere in ndnsim when simulation runs? > > Thanks a lot!! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 14 14:21:48 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 14 Apr 2013 14:21:48 -0700 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: References: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> Message-ID: <32C7A1BB-7518-4D16-AFFF-0B10DB8FAF76@ucla.edu> Hi huyao, **Do not** use NS_LOG to obtain metrics, as it is designed and is used only for debug purposes to output some helpful information. Most of the logging statements are disabled (and must be disabled) when you compile in optimized version (./waf configure -d optimized). Btw. Do you want periodically save values from your array to file, or save all the values whenever some element changes? The reason I'm asking is that solution could be completely different. --- Alex On Apr 13, 2013, at 8:46 AM, yao hu wrote: > Hi Alex, > > Thanks very much for your guidance. > After I tried following your instruction, however, I still felt a little confused by the callback to the trace source. Simply speaking, I defined a uint32_t array in ndn-forwarding-strategy.cc which will continuously store the incoming faceid information when simulation runs. If I just want to record the values of each element in this array into a local file using ns3 tracing, how should I select a simple way to do this? Just using NS_LOG or something is possible? > > Thanks a lot again~ > > Regards, > huyao > > > > 2013/4/13 Alex Afanasyev > Hi huyao, > > Technically, you have many options how to trace self-defined variables. If you really want to, you can just directly dump the values to std::cout or to some file. > > If you want to go with NS-3-style tracing, you would need to use either TraceSource, with which you explicitly notifying (somebody, who is configured in the simulation scenario using Connect calls) before or after you change the value. > > There is also a TraceValue, which can automate some notification tasks, if you're tracing just a value. > > Both methods require a couple of things. For TraceSource, you need to define a local TracedCallback (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) and then define a way to connect to this variable in GetTypeId method (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). Afterwards, you just use the locally defined TracedCallback as if it is a function (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586). > > For TracedValue, you need to define the variable that you want to trace in a slightly different way (it is no longer a simple variable), like this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. Then add a line into GetTypeId call, similar to this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65. > > To connect to variables, you need to use either Config::Connect/Config::ConnectWithoutContext method, or Object's TraceConnect (http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e). > > > Let us know if you have more questions. If you can give more specific description of what you want to trace, then we may give more concrete suggestion of what is the best way to do it. > > --- > Alex > > On Apr 12, 2013, at 9:37 AM, yao hu wrote: > >> Hi Alex, >> >> Maybe this is not related to ndnsim, just about ns3. Could you please give a hint about how to trace or record the value of some self-defined variable like each element in some array somewhere in ndnsim when simulation runs? >> >> Thanks a lot!! >> >> Regards, >> huyao >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sun Apr 14 19:52:50 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 15 Apr 2013 11:52:50 +0900 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: <32C7A1BB-7518-4D16-AFFF-0B10DB8FAF76@ucla.edu> References: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> <32C7A1BB-7518-4D16-AFFF-0B10DB8FAF76@ucla.edu> Message-ID: Hi Alex, I see. Thanks for your warning. At this stage, I just want to record and print the values to cout or some file whenever some element changes. Besides, I also saw that the output logging information does not include the ID of the related node. I am not sure the output behavior information is from which node. So is there a way to add such a node id information before each logging information. I used Ptr node = this->GetObject (); node->GetId(), but it failed.. ./ns3/ptr.h:410:7: error: invalid use of incomplete type ?struct ns3::Node? ./ns3/ndn-face.h:37:7: error: forward declaration of ?struct ns3::Node? Regards, huyao 2013/4/15 Alex Afanasyev > Hi huyao, > > **Do not** use NS_LOG to obtain metrics, as it is designed and is used > only for debug purposes to output some helpful information. Most of the > logging statements are disabled (and must be disabled) when you compile in > optimized version (./waf configure -d optimized). > > Btw. Do you want periodically save values from your array to file, or save > all the values whenever some element changes? The reason I'm asking is > that solution could be completely different. > > --- > Alex > > On Apr 13, 2013, at 8:46 AM, yao hu wrote: > > Hi Alex, > > Thanks very much for your guidance. > After I tried following your instruction, however, I still felt a little > confused by the callback to the trace source. Simply speaking, I defined a > uint32_t array in ndn-forwarding-strategy.cc which will continuously store > the incoming faceid information when simulation runs. If I just want to > record the values of each element in this array into a local file using ns3 > tracing, how should I select a simple way to do this? Just using NS_LOG or > something is possible? > > Thanks a lot again~ > > Regards, > huyao > > > > 2013/4/13 Alex Afanasyev > >> Hi huyao, >> >> Technically, you have many options how to trace self-defined variables. >> If you really want to, you can just directly dump the values to std::cout >> or to some file. >> >> If you want to go with NS-3-style tracing, you would need to use either >> TraceSource, with which you explicitly notifying (somebody, who is >> configured in the simulation scenario using Connect calls) before or after >> you change the value. >> >> There is also a TraceValue, which can automate some notification tasks, >> if you're tracing just a value. >> >> Both methods require a couple of things. For TraceSource, you need to >> define a local TracedCallback (like this >> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) >> and then define a way to connect to this variable in GetTypeId method (like >> this >> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). >> Afterwards, you just use the locally defined TracedCallback as if it is a >> function (like this >> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586 >> ). >> >> For TracedValue, you need to define the variable that you want to trace >> in a slightly different way (it is no longer a simple variable), like this >> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. >> Then add a line into GetTypeId call, similar to this >> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65 >> . >> >> To connect to variables, you need to use either >> Config::Connect/Config::ConnectWithoutContext method, or Object's >> TraceConnect ( >> http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e >> ). >> >> >> Let us know if you have more questions. If you can give more specific >> description of what you want to trace, then we may give more concrete >> suggestion of what is the best way to do it. >> >> --- >> Alex >> >> On Apr 12, 2013, at 9:37 AM, yao hu wrote: >> >> Hi Alex, >> >> Maybe this is not related to ndnsim, just about ns3. Could you please >> give a hint about how to trace or record the value of some self-defined >> variable like each element in some array somewhere in ndnsim when >> simulation runs? >> >> Thanks a lot!! >> >> Regards, >> huyao >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 14 21:09:24 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 14 Apr 2013 21:09:24 -0700 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: References: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> <32C7A1BB-7518-4D16-AFFF-0B10DB8FAF76@ucla.edu> Message-ID: <8A2B7ACA-F2AE-4E73-9060-DE2076F8F3A8@ucla.edu> Hi huyao, I see. You can just print to std::cout (or some predefined file) for now, but ideally it should be something like TraceSource, which is configured during the runtime (in a specific scenario). To solve your error of obtaining node id, you need to write slightly differently, since "Face" object (I'm assuming you're calling from some method of Face object) is not aggregated to Node and to get node, you just need simply call GetNode () method. Something like this: std::cout << this->GetNode ()->GetId (); One more note. If you need this logging just for debug purposes, then you can simply output the desired values with NS_LOG* methods, which will output node ID as part of the output (when enabled with NS_LOG environmental variable). --- Alex On Apr 14, 2013, at 7:52 PM, yao hu wrote: > Hi Alex, > > I see. Thanks for your warning. At this stage, I just want to record and print the values to cout or some file whenever some element changes. > > Besides, I also saw that the output logging information does not include the ID of the related node. I am not sure the output behavior information is from which node. So is there a way to add such a node id information before each logging information. I used > Ptr node = this->GetObject (); node->GetId(), > > but it failed.. > > ./ns3/ptr.h:410:7: error: invalid use of incomplete type ?struct ns3::Node? > ./ns3/ndn-face.h:37:7: error: forward declaration of ?struct ns3::Node? > > Regards, > huyao > > > > 2013/4/15 Alex Afanasyev > Hi huyao, > > **Do not** use NS_LOG to obtain metrics, as it is designed and is used only for debug purposes to output some helpful information. Most of the logging statements are disabled (and must be disabled) when you compile in optimized version (./waf configure -d optimized). > > Btw. Do you want periodically save values from your array to file, or save all the values whenever some element changes? The reason I'm asking is that solution could be completely different. > > --- > Alex > > On Apr 13, 2013, at 8:46 AM, yao hu wrote: > >> Hi Alex, >> >> Thanks very much for your guidance. >> After I tried following your instruction, however, I still felt a little confused by the callback to the trace source. Simply speaking, I defined a uint32_t array in ndn-forwarding-strategy.cc which will continuously store the incoming faceid information when simulation runs. If I just want to record the values of each element in this array into a local file using ns3 tracing, how should I select a simple way to do this? Just using NS_LOG or something is possible? >> >> Thanks a lot again~ >> >> Regards, >> huyao >> >> >> >> 2013/4/13 Alex Afanasyev >> Hi huyao, >> >> Technically, you have many options how to trace self-defined variables. If you really want to, you can just directly dump the values to std::cout or to some file. >> >> If you want to go with NS-3-style tracing, you would need to use either TraceSource, with which you explicitly notifying (somebody, who is configured in the simulation scenario using Connect calls) before or after you change the value. >> >> There is also a TraceValue, which can automate some notification tasks, if you're tracing just a value. >> >> Both methods require a couple of things. For TraceSource, you need to define a local TracedCallback (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) and then define a way to connect to this variable in GetTypeId method (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). Afterwards, you just use the locally defined TracedCallback as if it is a function (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586). >> >> For TracedValue, you need to define the variable that you want to trace in a slightly different way (it is no longer a simple variable), like this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. Then add a line into GetTypeId call, similar to this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65. >> >> To connect to variables, you need to use either Config::Connect/Config::ConnectWithoutContext method, or Object's TraceConnect (http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e). >> >> >> Let us know if you have more questions. If you can give more specific description of what you want to trace, then we may give more concrete suggestion of what is the best way to do it. >> >> --- >> Alex >> >> On Apr 12, 2013, at 9:37 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> Maybe this is not related to ndnsim, just about ns3. Could you please give a hint about how to trace or record the value of some self-defined variable like each element in some array somewhere in ndnsim when simulation runs? >>> >>> Thanks a lot!! >>> >>> Regards, >>> huyao >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From sarantarnoi at gmail.com Sun Apr 14 21:18:09 2013 From: sarantarnoi at gmail.com (Saran Tarnoi) Date: Mon, 15 Apr 2013 13:18:09 +0900 Subject: [ndnSIM] ndnSIM compatibility with packet loss simulation In-Reply-To: References: <6D8A8C4A-17B4-4B72-A63E-D219E59A2DA3@ucla.edu> Message-ID: Dear Alex, I spent some time this morning to implement a simple link-error-rate configuration ability in Topology file. As you have told me, it's quite simple. I added several lines to AnnotatedTopologyReader.cc. Would you kindly check it. The usage is just adding some loss rate data in the most right column of the link section in the Topology file. I will added more functions and let you consider binding it to the official branch of ndnSIM in the future. Thanks, Saran Tarnoi 2013/4/13 Saran Tarnoi > Hi Alex, > > The simulation of different error rates on different links is my intention. > > I think It does make sense to create a solution that fits well any of > error model. > Once ndnSim is used for the simulation of multimedia streaming, the > different error models may result in different quality of the received data > at a destination. > I think It is positive to have this function, though it is not necessary > for my case now. > > Thanks, > Saran > On Apr 13, 2013 2:40 AM, "Alex Afanasyev" > wrote: > >> Hi Saran, >> >> Do you need a precise control over which error rate is set on which link, >> or you want to just set the same error rate on all links? >> >> I think, it could be possible and relatively simple to add this function >> to AnnotatedTopologyReader. Are there just two parameters you mentioned or >> there is something else to be configured? I see that there are also other >> error models available in NS-3 (BinaryErrorModel, ListErrorModel, and >> ReceiveListErrorModel). Would it make sense to create a solution to allow >> any of these models? I'm not quite sure how exactly to extend the reader, >> so the solution is general enough... >> >> --- >> Alex >> >> On Apr 11, 2013, at 11:12 PM, Saran Tarnoi wrote: >> >> > Dear Alex and All, >> > >> > I see an example code in ns-3 that simulates simple packet loss by >> setting an attribute of RateErrorMode in Netdevice. >> > I guest that ndnSIM also support this. >> > >> > There will be hundreds of links in my simulating networks. >> > I cannot do manually link configuration, so using topology file is my >> choice. >> > However, I have no idea how to set the ErrorRate and ErrorUnit of each >> link in the topology file that will be later read by using >> AnnotatedTopologyReader. >> > >> > If you know the solution, please give me some ideas. >> > Thanks a lot in advance for your time. >> > >> > -- >> > Regards, >> > Saran >> > >> > _______________________________________________ >> > ndnSIM mailing list >> > ndnSIM at lists.cs.ucla.edu >> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> -- Regards, Saran Tarnoi Graduate Student Department of Informatics The Graduate University for Advanced Studies (Sokendai) Tokyo, Japan http://sarantarnoi.blogspot.jp -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: annotated-topology-reader.cc Type: application/octet-stream Size: 13953 bytes Desc: not available URL: From huyao0107 at gmail.com Sun Apr 14 22:11:14 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 15 Apr 2013 14:11:14 +0900 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: <8A2B7ACA-F2AE-4E73-9060-DE2076F8F3A8@ucla.edu> References: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> <32C7A1BB-7518-4D16-AFFF-0B10DB8FAF76@ucla.edu> <8A2B7ACA-F2AE-4E73-9060-DE2076F8F3A8@ucla.edu> Message-ID: Hi Alex, Thanks for reply and advice. I am calling from ns3::ndn::fib::Entry. It seems there is no GetNode () method in it error: ?class ns3::ndn::fib::Entry? has no member named ?GetNode? Regards, huyao 2013/4/15 Alex Afanasyev > Hi huyao, > > I see. You can just print to std::cout (or some predefined file) for now, > but ideally it should be something like TraceSource, which is configured > during the runtime (in a specific scenario). > > To solve your error of obtaining node id, you need to write slightly > differently, since "Face" object (I'm assuming you're calling from some > method of Face object) is not aggregated to Node and to get node, you just > need simply call GetNode () method. Something like this: > > std::cout << this->GetNode ()->GetId (); > > One more note. If you need this logging just for debug purposes, then you > can simply output the desired values with NS_LOG* methods, which will > output node ID as part of the output (when enabled with NS_LOG > environmental variable). > > --- > Alex > > On Apr 14, 2013, at 7:52 PM, yao hu wrote: > > Hi Alex, > > I see. Thanks for your warning. At this stage, I just want to record and > print the values to cout or some file whenever some element changes. > > Besides, I also saw that the output logging information does not include > the ID of the related node. I am not sure the output behavior information > is from which node. So is there a way to add such a node id information > before each logging information. I used > Ptr node = this->GetObject (); node->GetId(), > > but it failed.. > > ./ns3/ptr.h:410:7: error: invalid use of incomplete type ?struct ns3::Node? > ./ns3/ndn-face.h:37:7: error: forward declaration of ?struct ns3::Node? > > Regards, > huyao > > > > 2013/4/15 Alex Afanasyev > >> Hi huyao, >> >> **Do not** use NS_LOG to obtain metrics, as it is designed and is used >> only for debug purposes to output some helpful information. Most of the >> logging statements are disabled (and must be disabled) when you compile in >> optimized version (./waf configure -d optimized). >> >> Btw. Do you want periodically save values from your array to file, or >> save all the values whenever some element changes? The reason I'm asking >> is that solution could be completely different. >> >> --- >> Alex >> >> On Apr 13, 2013, at 8:46 AM, yao hu wrote: >> >> Hi Alex, >> >> Thanks very much for your guidance. >> After I tried following your instruction, however, I still felt a little >> confused by the callback to the trace source. Simply speaking, I defined a >> uint32_t array in ndn-forwarding-strategy.cc which will continuously store >> the incoming faceid information when simulation runs. If I just want to >> record the values of each element in this array into a local file using ns3 >> tracing, how should I select a simple way to do this? Just using NS_LOG or >> something is possible? >> >> Thanks a lot again~ >> >> Regards, >> huyao >> >> >> >> 2013/4/13 Alex Afanasyev >> >>> Hi huyao, >>> >>> Technically, you have many options how to trace self-defined variables. >>> If you really want to, you can just directly dump the values to std::cout >>> or to some file. >>> >>> If you want to go with NS-3-style tracing, you would need to use either >>> TraceSource, with which you explicitly notifying (somebody, who is >>> configured in the simulation scenario using Connect calls) before or after >>> you change the value. >>> >>> There is also a TraceValue, which can automate some notification tasks, >>> if you're tracing just a value. >>> >>> Both methods require a couple of things. For TraceSource, you need to >>> define a local TracedCallback (like this >>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) >>> and then define a way to connect to this variable in GetTypeId method (like >>> this >>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). >>> Afterwards, you just use the locally defined TracedCallback as if it is a >>> function (like this >>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586 >>> ). >>> >>> For TracedValue, you need to define the variable that you want to trace >>> in a slightly different way (it is no longer a simple variable), like this >>> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. >>> Then add a line into GetTypeId call, similar to this >>> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65 >>> . >>> >>> To connect to variables, you need to use either >>> Config::Connect/Config::ConnectWithoutContext method, or Object's >>> TraceConnect ( >>> http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e >>> ). >>> >>> >>> Let us know if you have more questions. If you can give more specific >>> description of what you want to trace, then we may give more concrete >>> suggestion of what is the best way to do it. >>> >>> --- >>> Alex >>> >>> On Apr 12, 2013, at 9:37 AM, yao hu wrote: >>> >>> Hi Alex, >>> >>> Maybe this is not related to ndnsim, just about ns3. Could you please >>> give a hint about how to trace or record the value of some self-defined >>> variable like each element in some array somewhere in ndnsim when >>> simulation runs? >>> >>> Thanks a lot!! >>> >>> Regards, >>> huyao >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 14 22:58:26 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 14 Apr 2013 22:58:26 -0700 Subject: [ndnSIM] ndnSIM compatibility with packet loss simulation In-Reply-To: References: <6D8A8C4A-17B4-4B72-A63E-D219E59A2DA3@ucla.edu> Message-ID: Hi Saran, Thank you very much for your time! I made another variation of implementation based on your code. Instead of hard coding ErrorModel parameters, I decided to allow users to specify both specific error model, as well as error model parameters (like this ns3::RateErrorModel,ErrorUnit=ERROR_UNIT_PACKET,ErrorRate=0.9). Can you check out code from "feature/topology-reader-error-model" branch on github and tell me what you think (I hope it works)? Thanks again, Alex On Apr 14, 2013, at 9:18 PM, Saran Tarnoi wrote: > Dear Alex, > > I spent some time this morning to implement a simple link-error-rate configuration ability in Topology file. > As you have told me, it's quite simple. > I added several lines to AnnotatedTopologyReader.cc. > Would you kindly check it. > The usage is just adding some loss rate data in the most right column of the link section in the Topology file. > I will added more functions and let you consider binding it to the official branch of ndnSIM in the future. > > Thanks, > Saran Tarnoi > > > 2013/4/13 Saran Tarnoi > Hi Alex, > > The simulation of different error rates on different links is my intention. > > I think It does make sense to create a solution that fits well any of error model. > Once ndnSim is used for the simulation of multimedia streaming, the different error models may result in different quality of the received data at a destination. > I think It is positive to have this function, though it is not necessary for my case now. > > Thanks, > Saran > > On Apr 13, 2013 2:40 AM, "Alex Afanasyev" wrote: > Hi Saran, > > Do you need a precise control over which error rate is set on which link, or you want to just set the same error rate on all links? > > I think, it could be possible and relatively simple to add this function to AnnotatedTopologyReader. Are there just two parameters you mentioned or there is something else to be configured? I see that there are also other error models available in NS-3 (BinaryErrorModel, ListErrorModel, and ReceiveListErrorModel). Would it make sense to create a solution to allow any of these models? I'm not quite sure how exactly to extend the reader, so the solution is general enough... > > --- > Alex > > On Apr 11, 2013, at 11:12 PM, Saran Tarnoi wrote: > > > Dear Alex and All, > > > > I see an example code in ns-3 that simulates simple packet loss by setting an attribute of RateErrorMode in Netdevice. > > I guest that ndnSIM also support this. > > > > There will be hundreds of links in my simulating networks. > > I cannot do manually link configuration, so using topology file is my choice. > > However, I have no idea how to set the ErrorRate and ErrorUnit of each link in the topology file that will be later read by using AnnotatedTopologyReader. > > > > If you know the solution, please give me some ideas. > > Thanks a lot in advance for your time. > > > > -- > > Regards, > > Saran > > > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 14 23:01:56 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 14 Apr 2013 23:01:56 -0700 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: References: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> <32C7A1BB-7518-4D16-AFFF-0B10DB8FAF76@ucla.edu> <8A2B7ACA-F2AE-4E73-9060-DE2076F8F3A8@ucla.edu> Message-ID: <97DB6FDB-F5AC-4426-9638-3D189A24E303@ucla.edu> Huh... Currently, there is no way to get pointer to a Node from a fib::Entry. I will add this soon and you will need to do like: this->GetFib ()->GetObject ()... In the meantime, you can use a workaround: Simulator::GetContext () will return string which is equal to current node ID (you may need to include ) --- Alex On Apr 14, 2013, at 10:11 PM, yao hu wrote: > Hi Alex, > > Thanks for reply and advice. > > I am calling from ns3::ndn::fib::Entry. It seems there is no GetNode () method in it > > error: ?class ns3::ndn::fib::Entry? has no member named ?GetNode? > > Regards, > huyao > > > > 2013/4/15 Alex Afanasyev > Hi huyao, > > I see. You can just print to std::cout (or some predefined file) for now, but ideally it should be something like TraceSource, which is configured during the runtime (in a specific scenario). > > To solve your error of obtaining node id, you need to write slightly differently, since "Face" object (I'm assuming you're calling from some method of Face object) is not aggregated to Node and to get node, you just need simply call GetNode () method. Something like this: > > std::cout << this->GetNode ()->GetId (); > > One more note. If you need this logging just for debug purposes, then you can simply output the desired values with NS_LOG* methods, which will output node ID as part of the output (when enabled with NS_LOG environmental variable). > > --- > Alex > > On Apr 14, 2013, at 7:52 PM, yao hu wrote: > >> Hi Alex, >> >> I see. Thanks for your warning. At this stage, I just want to record and print the values to cout or some file whenever some element changes. >> >> Besides, I also saw that the output logging information does not include the ID of the related node. I am not sure the output behavior information is from which node. So is there a way to add such a node id information before each logging information. I used >> Ptr node = this->GetObject (); node->GetId(), >> >> but it failed.. >> >> ./ns3/ptr.h:410:7: error: invalid use of incomplete type ?struct ns3::Node? >> ./ns3/ndn-face.h:37:7: error: forward declaration of ?struct ns3::Node? >> >> Regards, >> huyao >> >> >> >> 2013/4/15 Alex Afanasyev >> Hi huyao, >> >> **Do not** use NS_LOG to obtain metrics, as it is designed and is used only for debug purposes to output some helpful information. Most of the logging statements are disabled (and must be disabled) when you compile in optimized version (./waf configure -d optimized). >> >> Btw. Do you want periodically save values from your array to file, or save all the values whenever some element changes? The reason I'm asking is that solution could be completely different. >> >> --- >> Alex >> >> On Apr 13, 2013, at 8:46 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> Thanks very much for your guidance. >>> After I tried following your instruction, however, I still felt a little confused by the callback to the trace source. Simply speaking, I defined a uint32_t array in ndn-forwarding-strategy.cc which will continuously store the incoming faceid information when simulation runs. If I just want to record the values of each element in this array into a local file using ns3 tracing, how should I select a simple way to do this? Just using NS_LOG or something is possible? >>> >>> Thanks a lot again~ >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/4/13 Alex Afanasyev >>> Hi huyao, >>> >>> Technically, you have many options how to trace self-defined variables. If you really want to, you can just directly dump the values to std::cout or to some file. >>> >>> If you want to go with NS-3-style tracing, you would need to use either TraceSource, with which you explicitly notifying (somebody, who is configured in the simulation scenario using Connect calls) before or after you change the value. >>> >>> There is also a TraceValue, which can automate some notification tasks, if you're tracing just a value. >>> >>> Both methods require a couple of things. For TraceSource, you need to define a local TracedCallback (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) and then define a way to connect to this variable in GetTypeId method (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). Afterwards, you just use the locally defined TracedCallback as if it is a function (like this https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586). >>> >>> For TracedValue, you need to define the variable that you want to trace in a slightly different way (it is no longer a simple variable), like this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. Then add a line into GetTypeId call, similar to this https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65. >>> >>> To connect to variables, you need to use either Config::Connect/Config::ConnectWithoutContext method, or Object's TraceConnect (http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e). >>> >>> >>> Let us know if you have more questions. If you can give more specific description of what you want to trace, then we may give more concrete suggestion of what is the best way to do it. >>> >>> --- >>> Alex >>> >>> On Apr 12, 2013, at 9:37 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> Maybe this is not related to ndnsim, just about ns3. Could you please give a hint about how to trace or record the value of some self-defined variable like each element in some array somewhere in ndnsim when simulation runs? >>>> >>>> Thanks a lot!! >>>> >>>> Regards, >>>> huyao >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sun Apr 14 23:31:21 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 15 Apr 2013 15:31:21 +0900 Subject: [ndnSIM] how to trace the self-defined element in ndnsim? In-Reply-To: <97DB6FDB-F5AC-4426-9638-3D189A24E303@ucla.edu> References: <7C306642-6EAB-46FB-8815-B96C8F4BC1F6@ucla.edu> <32C7A1BB-7518-4D16-AFFF-0B10DB8FAF76@ucla.edu> <8A2B7ACA-F2AE-4E73-9060-DE2076F8F3A8@ucla.edu> <97DB6FDB-F5AC-4426-9638-3D189A24E303@ucla.edu> Message-ID: Hi Alex, Thanks very much for your time. I am afraid currently there is still no way to get pointer to Fib from fib::Entry (no GetFib() in fib::Entry)..but Simulator::GetContext () works.. Yes, for the time being, I will simply use the cout to record my desired information. Thanks again~ Regards, huyao 2013/4/15 Alex Afanasyev > Huh... Currently, there is no way to get pointer to a Node from a > fib::Entry. I will add this soon and you will need to do like: > this->GetFib ()->GetObject ()... > > In the meantime, you can use a workaround: Simulator::GetContext () will > return string which is equal to current node ID (you may need to include > ) > > --- > Alex > > On Apr 14, 2013, at 10:11 PM, yao hu wrote: > > Hi Alex, > > Thanks for reply and advice. > > I am calling from ns3::ndn::fib::Entry. It seems there is no GetNode () > method in it > > error: ?class ns3::ndn::fib::Entry? has no member named ?GetNode? > > Regards, > huyao > > > > 2013/4/15 Alex Afanasyev > >> Hi huyao, >> >> I see. You can just print to std::cout (or some predefined file) for >> now, but ideally it should be something like TraceSource, which is >> configured during the runtime (in a specific scenario). >> >> To solve your error of obtaining node id, you need to write slightly >> differently, since "Face" object (I'm assuming you're calling from some >> method of Face object) is not aggregated to Node and to get node, you just >> need simply call GetNode () method. Something like this: >> >> std::cout << this->GetNode ()->GetId (); >> >> One more note. If you need this logging just for debug purposes, then >> you can simply output the desired values with NS_LOG* methods, which will >> output node ID as part of the output (when enabled with NS_LOG >> environmental variable). >> >> --- >> Alex >> >> On Apr 14, 2013, at 7:52 PM, yao hu wrote: >> >> Hi Alex, >> >> I see. Thanks for your warning. At this stage, I just want to record and >> print the values to cout or some file whenever some element changes. >> >> Besides, I also saw that the output logging information does not include >> the ID of the related node. I am not sure the output behavior information >> is from which node. So is there a way to add such a node id information >> before each logging information. I used >> Ptr node = this->GetObject (); node->GetId(), >> >> but it failed.. >> >> ./ns3/ptr.h:410:7: error: invalid use of incomplete type ?struct >> ns3::Node? >> ./ns3/ndn-face.h:37:7: error: forward declaration of ?struct ns3::Node? >> >> Regards, >> huyao >> >> >> >> 2013/4/15 Alex Afanasyev >> >>> Hi huyao, >>> >>> **Do not** use NS_LOG to obtain metrics, as it is designed and is used >>> only for debug purposes to output some helpful information. Most of the >>> logging statements are disabled (and must be disabled) when you compile in >>> optimized version (./waf configure -d optimized). >>> >>> Btw. Do you want periodically save values from your array to file, or >>> save all the values whenever some element changes? The reason I'm asking >>> is that solution could be completely different. >>> >>> --- >>> Alex >>> >>> On Apr 13, 2013, at 8:46 AM, yao hu wrote: >>> >>> Hi Alex, >>> >>> Thanks very much for your guidance. >>> After I tried following your instruction, however, I still felt a little >>> confused by the callback to the trace source. Simply speaking, I defined a >>> uint32_t array in ndn-forwarding-strategy.cc which will continuously store >>> the incoming faceid information when simulation runs. If I just want to >>> record the values of each element in this array into a local file using ns3 >>> tracing, how should I select a simple way to do this? Just using NS_LOG or >>> something is possible? >>> >>> Thanks a lot again~ >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/4/13 Alex Afanasyev >>> >>>> Hi huyao, >>>> >>>> Technically, you have many options how to trace self-defined variables. >>>> If you really want to, you can just directly dump the values to std::cout >>>> or to some file. >>>> >>>> If you want to go with NS-3-style tracing, you would need to use either >>>> TraceSource, with which you explicitly notifying (somebody, who is >>>> configured in the simulation scenario using Connect calls) before or after >>>> you change the value. >>>> >>>> There is also a TraceValue, which can automate some notification tasks, >>>> if you're tracing just a value. >>>> >>>> Both methods require a couple of things. For TraceSource, you need to >>>> define a local TracedCallback (like this >>>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482) >>>> and then define a way to connect to this variable in GetTypeId method (like >>>> this >>>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71). >>>> Afterwards, you just use the locally defined TracedCallback as if it is a >>>> function (like this >>>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586 >>>> ). >>>> >>>> For TracedValue, you need to define the variable that you want to trace >>>> in a slightly different way (it is no longer a simple variable), like this >>>> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98. >>>> Then add a line into GetTypeId call, similar to this >>>> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65 >>>> . >>>> >>>> To connect to variables, you need to use either >>>> Config::Connect/Config::ConnectWithoutContext method, or Object's >>>> TraceConnect ( >>>> http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e >>>> ). >>>> >>>> >>>> Let us know if you have more questions. If you can give more specific >>>> description of what you want to trace, then we may give more concrete >>>> suggestion of what is the best way to do it. >>>> >>>> --- >>>> Alex >>>> >>>> On Apr 12, 2013, at 9:37 AM, yao hu wrote: >>>> >>>> Hi Alex, >>>> >>>> Maybe this is not related to ndnsim, just about ns3. Could you please >>>> give a hint about how to trace or record the value of some self-defined >>>> variable like each element in some array somewhere in ndnsim when >>>> simulation runs? >>>> >>>> Thanks a lot!! >>>> >>>> Regards, >>>> huyao >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sarantarnoi at gmail.com Mon Apr 15 02:42:34 2013 From: sarantarnoi at gmail.com (Saran Tarnoi) Date: Mon, 15 Apr 2013 18:42:34 +0900 Subject: [ndnSIM] ndnSIM compatibility with packet loss simulation In-Reply-To: References: <6D8A8C4A-17B4-4B72-A63E-D219E59A2DA3@ucla.edu> Message-ID: Hi Alex, Thank you very much for your time writing the *much improved* codes. It works properly. I have a suggestion for ndnSIM. To be honest with you, I want to do this but I have some difficulties studying the codes. :) Each node should be able to selectively cache the ContentObject based on its name prefix. For instance, node A will always cache the ContentObject whose prefix is led by "/prefix1/" but it will never cache the content whose prefix is led by "/prefix2/..." in its Content Store. This will make routing more fancy, leading to a more sophisticated flow control. Could you give me some ideas? Thanks, regards, Saran 2013/4/15 Alex Afanasyev > Hi Saran, > > Thank you very much for your time! > I made another variation of implementation based on your code. Instead of > hard coding ErrorModel parameters, I decided to allow users to specify both > specific error model, as well as error model parameters (like > this ns3::RateErrorModel,ErrorUnit=ERROR_UNIT_PACKET,ErrorRate=0.9). > > Can you check out code from "feature/topology-reader-error-model" branch > on github and tell me what you think (I hope it works)? > > Thanks again, > Alex > > On Apr 14, 2013, at 9:18 PM, Saran Tarnoi wrote: > > Dear Alex, > > I spent some time this morning to implement a simple link-error-rate > configuration ability in Topology file. > As you have told me, it's quite simple. > I added several lines to AnnotatedTopologyReader.cc. > Would you kindly check it. > The usage is just adding some loss rate data in the most right column of > the link section in the Topology file. > I will added more functions and let you consider binding it to the > official branch of ndnSIM in the future. > > Thanks, > Saran Tarnoi > > > 2013/4/13 Saran Tarnoi > >> Hi Alex, >> >> The simulation of different error rates on different links is my >> intention. >> >> I think It does make sense to create a solution that fits well any of >> error model. >> Once ndnSim is used for the simulation of multimedia streaming, the >> different error models may result in different quality of the received data >> at a destination. >> I think It is positive to have this function, though it is not necessary >> for my case now. >> >> Thanks, >> Saran >> On Apr 13, 2013 2:40 AM, "Alex Afanasyev" >> wrote: >> >>> Hi Saran, >>> >>> Do you need a precise control over which error rate is set on which >>> link, or you want to just set the same error rate on all links? >>> >>> I think, it could be possible and relatively simple to add this function >>> to AnnotatedTopologyReader. Are there just two parameters you mentioned or >>> there is something else to be configured? I see that there are also other >>> error models available in NS-3 (BinaryErrorModel, ListErrorModel, and >>> ReceiveListErrorModel). Would it make sense to create a solution to allow >>> any of these models? I'm not quite sure how exactly to extend the reader, >>> so the solution is general enough... >>> >>> --- >>> Alex >>> >>> On Apr 11, 2013, at 11:12 PM, Saran Tarnoi >>> wrote: >>> >>> > Dear Alex and All, >>> > >>> > I see an example code in ns-3 that simulates simple packet loss by >>> setting an attribute of RateErrorMode in Netdevice. >>> > I guest that ndnSIM also support this. >>> > >>> > There will be hundreds of links in my simulating networks. >>> > I cannot do manually link configuration, so using topology file is my >>> choice. >>> > However, I have no idea how to set the ErrorRate and ErrorUnit of each >>> link in the topology file that will be later read by using >>> AnnotatedTopologyReader. >>> > >>> > If you know the solution, please give me some ideas. >>> > Thanks a lot in advance for your time. >>> > >>> > -- >>> > Regards, >>> > Saran >>> > >>> > _______________________________________________ >>> > ndnSIM mailing list >>> > ndnSIM at lists.cs.ucla.edu >>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> > > > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > > _______________________________________________ > > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -- Regards, Saran Tarnoi Graduate Student Department of Informatics The Graduate University for Advanced Studies (Sokendai) Tokyo, Japan http://sarantarnoi.blogspot.jp -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 15 10:29:26 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 15 Apr 2013 10:29:26 -0700 Subject: [ndnSIM] how to obtain link load In-Reply-To: <59737a3.11f2f.13e0d0726d8.Coremail.blindeafer@163.com> References: <59737a3.11f2f.13e0d0726d8.Coremail.blindeafer@163.com> Message-ID: <0C1692B0-2774-4789-A6DE-A80CE0EA4913@ucla.edu> Hi Shenglan, Have you tried ndn::L3RateTracer (http://ndnsim.net/metric.html#example-of-packet-level-trace-helpers)? It breaks down the "rates" (and the aggregate number of packet/bytes) for incoming and outgoing data/interest packets, as well as faces on which (to which) data/interest packets were send out. You can just run the example and check the contents of rate-trace.txt file. --- Alex On Apr 15, 2013, at 2:29 AM, ??? wrote: > Hi Alex, > > Is there any module to obtain the link load of the link from which a content object come into a node and the link(s) which a node transmit to according to PIT entry(s)? > > Best regards, > Shenglan -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 15 11:03:00 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 15 Apr 2013 11:03:00 -0700 Subject: [ndnSIM] How to simulation two or three LNA in ndnSIM? In-Reply-To: <201304151737332322559@126.com> References: <1814c37e.5b46.13df6e6293e.Coremail.youshou_wy@126.com>, <7FC59D51-7AC2-4343-9CEB-1C466B5033F3@ucla.edu>, <201304151734317349448@126.com> <201304151737332322559@126.com> Message-ID: Hi Nilicy, ndn::GlobalRoutingHelper should not have any problems in creating valid FIB entries from one LAN to another. You can either send me your scenario, so I can check what is wrong, or you can use this scenario (http://pastebin.com/Hz3uE73m) that I just created as a base point. (This scenario creates the same topology as you explained, but using PointToPointGridHelper.) I'm a little bit confused about Add method that you have used. If you're referring to Add on a NodeContainer, then it doesn't really do anything good to you, since NodeContainer is just a container and doesn't create any links. To create links within a LAN, as well as between LANs, you need to use, for example, PointToPointHelper::Install method (check line 82 in the example I linked). --- Alex On Apr 15, 2013, at 2:37 AM, youshou_wy wrote: > Hi Alex, > I wanna simulation two LAN in ndnSIM , i set two NodeContainer to creating nodes, like is: > NodeContainer node1; > NodeContainer node2; > node1 contains the nodes of first LAN ,node2 contains the nodes of second LAN. I use Add(node1,node2) to create the WAN . But when i use ndn::GlobalRoutingHelper to Generate each routes of every LAN ,it can't work . > In other word , if i can create a network like is: > > (consumer1) -- ( ) ----- ( ) > | | | > ( ) ------- ( ) ----- ( ) > | | | > ( ) ------- ( ) -- (producer1) LAN1 > | > | > | > > (consumer2) -- ( ) ----- ( ) > | | | > ( ) ------- ( ) ----- ( ) > | | | > ( ) ------- ( ) -- (producer2) LAN2 > > I guess i can generation each LAN ,but if i must Manually add routes in each LAN? > Thanks > > Nilicy From alexander.afanasyev at ucla.edu Mon Apr 15 11:12:37 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 15 Apr 2013 11:12:37 -0700 Subject: [ndnSIM] ndnSIM compatibility with packet loss simulation In-Reply-To: References: <6D8A8C4A-17B4-4B72-A63E-D219E59A2DA3@ucla.edu> Message-ID: Hi Saran, I'm not sure that it is entirely ContentStore's task to decide whether or not to cache specific content objects. If you're using ContentStore that respects freshness (http://ndnsim.net/cs.html#content-stores-respecting-freshness-field-of-contentobjects), then you can set from the application an amount of time a specific ContentObject is allowed to stay in the cache. On the other hand, if you want to cache some prefixes in one content store, and don't cache in the other, the application-based approach will not work anymore. To solve this in a real system we would need some kind of "caching policies". I'm not yet really sure how can we formalize such policies in the simulator (=what data structure to use), which will give us the solution, but will not incur too much computational overhead (in other words, I don't want to use XML-based policies...). After we decide on how to capture this policies (may be using something like FIB?), it should be relatively easy to implement a customized version of content store, similar to ns3::ndn::cs::Freshness::* and ns3::ndn::cs::Stats::*. --- Alex On Apr 15, 2013, at 2:42 AM, Saran Tarnoi wrote: > Hi Alex, > > Thank you very much for your time writing the much improved codes. > It works properly. > > I have a suggestion for ndnSIM. To be honest with you, I want to do this but I have some difficulties studying the codes. :) > Each node should be able to selectively cache the ContentObject based on its name prefix. > For instance, node A will always cache the ContentObject whose prefix is led by "/prefix1/" but it will never cache the content whose prefix is led by "/prefix2/..." in its Content Store. > This will make routing more fancy, leading to a more sophisticated flow control. > Could you give me some ideas? > > Thanks, > > regards, > Saran > > > > 2013/4/15 Alex Afanasyev > Hi Saran, > > Thank you very much for your time! > I made another variation of implementation based on your code. Instead of hard coding ErrorModel parameters, I decided to allow users to specify both specific error model, as well as error model parameters (like this ns3::RateErrorModel,ErrorUnit=ERROR_UNIT_PACKET,ErrorRate=0.9). > > Can you check out code from "feature/topology-reader-error-model" branch on github and tell me what you think (I hope it works)? > > Thanks again, > Alex > > On Apr 14, 2013, at 9:18 PM, Saran Tarnoi wrote: > >> Dear Alex, >> >> I spent some time this morning to implement a simple link-error-rate configuration ability in Topology file. >> As you have told me, it's quite simple. >> I added several lines to AnnotatedTopologyReader.cc. >> Would you kindly check it. >> The usage is just adding some loss rate data in the most right column of the link section in the Topology file. >> I will added more functions and let you consider binding it to the official branch of ndnSIM in the future. >> >> Thanks, >> Saran Tarnoi >> >> >> 2013/4/13 Saran Tarnoi >> Hi Alex, >> >> The simulation of different error rates on different links is my intention. >> >> I think It does make sense to create a solution that fits well any of error model. >> Once ndnSim is used for the simulation of multimedia streaming, the different error models may result in different quality of the received data at a destination. >> I think It is positive to have this function, though it is not necessary for my case now. >> >> Thanks, >> Saran >> >> On Apr 13, 2013 2:40 AM, "Alex Afanasyev" wrote: >> Hi Saran, >> >> Do you need a precise control over which error rate is set on which link, or you want to just set the same error rate on all links? >> >> I think, it could be possible and relatively simple to add this function to AnnotatedTopologyReader. Are there just two parameters you mentioned or there is something else to be configured? I see that there are also other error models available in NS-3 (BinaryErrorModel, ListErrorModel, and ReceiveListErrorModel). Would it make sense to create a solution to allow any of these models? I'm not quite sure how exactly to extend the reader, so the solution is general enough... >> >> --- >> Alex >> >> On Apr 11, 2013, at 11:12 PM, Saran Tarnoi wrote: >> >> > Dear Alex and All, >> > >> > I see an example code in ns-3 that simulates simple packet loss by setting an attribute of RateErrorMode in Netdevice. >> > I guest that ndnSIM also support this. >> > >> > There will be hundreds of links in my simulating networks. >> > I cannot do manually link configuration, so using topology file is my choice. >> > However, I have no idea how to set the ErrorRate and ErrorUnit of each link in the topology file that will be later read by using AnnotatedTopologyReader. >> > >> > If you know the solution, please give me some ideas. >> > Thanks a lot in advance for your time. >> > >> > -- >> > Regards, >> > Saran >> > >> > _______________________________________________ >> > ndnSIM mailing list >> > ndnSIM at lists.cs.ucla.edu >> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> >> >> -- >> Regards, >> Saran Tarnoi >> Graduate Student >> Department of Informatics >> The Graduate University for Advanced Studies (Sokendai) >> Tokyo, Japan >> http://sarantarnoi.blogspot.jp >> _______________________________________________ >> >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > > > -- > Regards, > Saran Tarnoi > Graduate Student > Department of Informatics > The Graduate University for Advanced Studies (Sokendai) > Tokyo, Japan > http://sarantarnoi.blogspot.jp > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Mon Apr 15 18:51:12 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Tue, 16 Apr 2013 09:51:12 +0800 Subject: [ndnSIM] Question for Pending Interest Table Message-ID: Hi Alex Is is possible to set variable timeout for PIT entries during simulation ? rgd -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 15 20:21:09 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 15 Apr 2013 20:21:09 -0700 Subject: [ndnSIM] Question for Pending Interest Table In-Reply-To: References: Message-ID: Hi Xee, Timeout for PIT entries is defined by the lifetime specified in the interests. So, if you set short lifetime, PIT timeout will be short. With ndn::Consumer*'s, you can use attribute "LifeTime" (with helper: appHelper.SetAttribute ("LifeTime", "1s");) --- Alex On Apr 15, 2013, at 6:51 PM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > Is is possible to set variable timeout for PIT entries during simulation ? > > rgd > -Xee > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From 1839750381 at qq.com Mon Apr 15 20:21:53 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Tue, 16 Apr 2013 11:21:53 +0800 Subject: [ndnSIM] Question for Pending Interest Table Message-ID: Hi Alex I am trying to make some mathematical operations with pit->GetSize () function output, but it is giving me error. Is there any way to process the output of this function ? ------------------ Original ------------------ From: "Xee"<1839750381 at qq.com>; Date: Apr 16, 2013 To: "Alex Afanasyev"; Cc: "ndnsim"; Subject: [ndnSIM] Question for Pending Interest Table Hi Alex Is is possible to set variable timeout for PIT entries during simulation ? rgd -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 15 20:24:49 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 15 Apr 2013 20:24:49 -0700 Subject: [ndnSIM] Question for Pending Interest Table In-Reply-To: References: Message-ID: <4FA04163-370E-4D6C-B805-4C46C5D344CA@ucla.edu> Hi Xee, What kind of error? pit->GetSize () returns just size_t value, which you should be able to use in any way. Can post the actual error with a context (where are you calling from and how pit variable is defined). --- Alex On Apr 15, 2013, at 8:21 PM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > I am trying to make some mathematical operations with pit->GetSize () function output, > but it is giving me error. Is there any way to process the output of this function ? > > ------------------ Original ------------------ > From: "Xee"<1839750381 at qq.com>; > Date: Apr 16, 2013 > To: "Alex Afanasyev"; > Cc: "ndnsim"; > Subject: [ndnSIM] Question for Pending Interest Table > > Hi Alex > > Is is possible to set variable timeout for PIT entries during simulation ? > > rgd > -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Mon Apr 15 20:30:51 2013 From: 1839750381 at qq.com (=?gb18030?B?WGVl?=) Date: Tue, 16 Apr 2013 11:30:51 +0800 Subject: [ndnSIM] Question for Pending Interest Table Message-ID: Hi Alex Thanks for your email, I am trying to use the funcation to process the output with numbers as: std::cout << (100)-(pit->GetSize ()); I want to process the value of PIT size from function and calculate with numbers using arithmetical operations. But when I use this function I am receiving the following errors: Waf: Entering directory `/home/xee/ndnSIM/ns-3/build' [1002/1994] cxx: src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc -> build/src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc.18.o ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc: In function ?void PeriodicStatsPrinter(ns3::Ptr, ns3::Time)?: ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc:56:13: error: expected primary-expression before ?< task in 'ndn-simple-with-pit-count-stats' failed (exit status 1): {task 158764620: cxx ndn-simple-with-pit-count-stats.cc -> ndn-simple-with-pit-count-stats.cc.18.o} ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-Ibuild', '-I.', '-I.', '-I/home/xee/ndnSIM', '-I/usr/include', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_PACKET_H=1', '-DHAVE_IF_TUN_H=1', '-DNDEBUG', '-D_FORTIFY_SOURCE=2', '../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc', '-c', '-o', 'src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc.18.o'] rgd -Xee ------------------ Original ------------------ From: "Alex Afanasyev"; Date: Apr 16, 2013 To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] Question for Pending Interest Table Hi Xee, What kind of error? pit->GetSize () returns just size_t value, which you should be able to use in any way. Can post the actual error with a context (where are you calling from and how pit variable is defined). --- Alex On Apr 15, 2013, at 8:21 PM, "Xee" <1839750381 at qq.com> wrote: Hi Alex I am trying to make some mathematical operations with pit->GetSize () function output, but it is giving me error. Is there any way to process the output of this function ? ------------------ Original ------------------ From: "Xee"<1839750381 at qq.com>; Date: Apr 16, 2013 To: "Alex Afanasyev"; Cc: "ndnsim"; Subject: [ndnSIM] Question for Pending Interest Table Hi Alex Is is possible to set variable timeout for PIT entries during simulation ? rgd -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 15 20:38:51 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 15 Apr 2013 20:38:51 -0700 Subject: [ndnSIM] Question for Pending Interest Table In-Reply-To: References: Message-ID: I just tried this code with clang++ compiler and it didn't complain. What you can do, is to write is slightly differently, as you may be facing some problems with operation priorities: std::cout << ( 100 - pit->GetSize () ) << std::endl; (the key point is to put parentheses around 100-pit->GetSize()) --- Alex On Apr 15, 2013, at 8:30 PM, "Xee" <1839750381 at qq.com> wrote: > > Hi Alex > Thanks for your email, I am trying to use the funcation to process the output with numbers as: > > std::cout << (100)-(pit->GetSize ()); > > I want to process the value of PIT size from function and calculate with numbers using arithmetical operations. But when I use this function I am receiving the following errors: > > Waf: Entering directory `/home/xee/ndnSIM/ns-3/build' > [1002/1994] cxx: src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc -> build/src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc.18.o > ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc: In function ?void PeriodicStatsPrinter(ns3::Ptr, ns3::Time)?: > ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc:56:13: error: expected primary-expression before ?< ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc:56:42: error: invalid operands of types ?uint32_t {aka unsigned int}? and ?const char [2]? to binary ?operator< ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc:56:42: error: suggest parentheses around ?-? inside ?< ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc:56:46: error: expected ?)? before ?;? token > ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc: In function ?int main(int, char**)?: > ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc:100:6: error: expected primary-expression before ?< cc1plus: all warnings being treated as errors > Waf: Leaving directory `/home/xee/ndnSIM/ns-3/build' > Build failed > -> task in 'ndn-simple-with-pit-count-stats' failed (exit status 1): > {task 158764620: cxx ndn-simple-with-pit-count-stats.cc -> ndn-simple-with-pit-count-stats.cc.18.o} > ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-Ibuild', '-I.', '-I.', '-I/home/xee/ndnSIM', '-I/usr/include', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_PACKET_H=1', '-DHAVE_IF_TUN_H=1', '-DNDEBUG', '-D_FORTIFY_SOURCE=2', '../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc', '-c', '-o', 'src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc.18.o'] > > > rgd > -Xee > > ------------------ Original ------------------ > From: "Alex Afanasyev"; > Date: Apr 16, 2013 > To: "Xee"<1839750381 at qq.com>; > Cc: "ndnsim"; > Subject: Re: [ndnSIM] Question for Pending Interest Table > > Hi Xee, > > What kind of error? pit->GetSize () returns just size_t value, which you should be able to use in any way. Can post the actual error with a context (where are you calling from and how pit variable is defined). > > --- > Alex > > On Apr 15, 2013, at 8:21 PM, "Xee" <1839750381 at qq.com> wrote: > >> Hi Alex >> >> I am trying to make some mathematical operations with pit->GetSize () function output, >> but it is giving me error. Is there any way to process the output of this function ? >> >> ------------------ Original ------------------ >> From: "Xee"<1839750381 at qq.com>; >> Date: Apr 16, 2013 >> To: "Alex Afanasyev"; >> Cc: "ndnsim"; >> Subject: [ndnSIM] Question for Pending Interest Table >> >> Hi Alex >> >> Is is possible to set variable timeout for PIT entries during simulation ? >> >> rgd >> -Xee > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Mon Apr 15 20:45:12 2013 From: 1839750381 at qq.com (=?gb18030?B?WGVl?=) Date: Tue, 16 Apr 2013 11:45:12 +0800 Subject: [ndnSIM] Reply: Question for Pending Interest Table Message-ID: Hi Alex Thank you so much, it works for me now! rgd -Xee ------------------ Original ------------------ Sender: "Alex Afanasyev"; Send time: Tuesday, Apr 16, 2013 11:38 AM To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] Question for Pending Interest Table I just tried this code with clang++ compiler and it didn't complain. What you can do, is to write is slightly differently, as you may be facing some problems with operation priorities: std::cout << ( 100 - pit->GetSize () ) << std::endl; (the key point is to put parentheses around 100-pit->GetSize()) --- Alex On Apr 15, 2013, at 8:30 PM, "Xee" <1839750381 at qq.com> wrote: Hi Alex Thanks for your email, I am trying to use the funcation to process the output with numbers as: std::cout << (100)-(pit->GetSize ()); I want to process the value of PIT size from function and calculate with numbers using arithmetical operations. But when I use this function I am receiving the following errors: Waf: Entering directory `/home/xee/ndnSIM/ns-3/build' [1002/1994] cxx: src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc -> build/src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc.18.o ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc: In function ?void PeriodicStatsPrinter(ns3::Ptr, ns3::Time)?: ../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc:56:13: error: expected primary-expression before ?< task in 'ndn-simple-with-pit-count-stats' failed (exit status 1): {task 158764620: cxx ndn-simple-with-pit-count-stats.cc -> ndn-simple-with-pit-count-stats.cc.18.o} ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector', '-fno-strict-aliasing', '-Ibuild', '-I.', '-I.', '-I/home/xee/ndnSIM', '-I/usr/include', '-I/usr/include/python2.7', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_PACKET_H=1', '-DHAVE_IF_TUN_H=1', '-DNDEBUG', '-D_FORTIFY_SOURCE=2', '../src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc', '-c', '-o', 'src/ndnSIM/examples/ndn-simple-with-pit-count-stats.cc.18.o'] rgd -Xee ------------------ Original ------------------ From: "Alex Afanasyev"; Date: Apr 16, 2013 To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] Question for Pending Interest Table Hi Xee, What kind of error? pit->GetSize () returns just size_t value, which you should be able to use in any way. Can post the actual error with a context (where are you calling from and how pit variable is defined). --- Alex On Apr 15, 2013, at 8:21 PM, "Xee" <1839750381 at qq.com> wrote: Hi Alex I am trying to make some mathematical operations with pit->GetSize () function output, but it is giving me error. Is there any way to process the output of this function ? ------------------ Original ------------------ From: "Xee"<1839750381 at qq.com>; Date: Apr 16, 2013 To: "Alex Afanasyev"; Cc: "ndnsim"; Subject: [ndnSIM] Question for Pending Interest Table Hi Alex Is is possible to set variable timeout for PIT entries during simulation ? rgd -Xee _______________________________________________ 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 gbrito at ic.uff.br Tue Apr 16 07:32:59 2013 From: gbrito at ic.uff.br (=?ISO-8859-1?Q?Gabriel_Mar=E7al_de_Brito?=) Date: Tue, 16 Apr 2013 11:32:59 -0300 Subject: [ndnSIM] RTTEstimator Message-ID: Hi Alex. I am studying the impact of named-data networking over wireless MANETs and within this work I am performing some simulations with ndnSIM. I noticed an increasing average delay using high chunk request rates and digging deeper, found that RttEstimator::IncreaseMultiplier() is called whenever there is an Interest, doubling the RTT estimate. My guess is that since my scenarios are pretty dynamic, some consumer nodes would be able to retrieve the desired content if they re-request it sooner than waiting for the very long ever-doubled RTT (in case of discontinuities, for exemaple). Is there a reason for doubling this estimate? Thanks in advance, Gabriel -------------- next part -------------- An HTML attachment was scrubbed... URL: From yic at email.arizona.edu Tue Apr 16 07:54:16 2013 From: yic at email.arizona.edu (Cheng Yi) Date: Tue, 16 Apr 2013 07:54:16 -0700 Subject: [ndnSIM] RTTEstimator In-Reply-To: References: Message-ID: <516D6618.4040603@email.arizona.edu> Hi Gabriel, IncreaseMultiplier is called whenever there is a NACK or an Interest timeout, which implies potential congestion in the network. The implementation of RttEstimator is based on the Karn's algorithm which is used in TCP RTT estimation. Whether it fits NDN well is debatable and still under investigation. Hope this helps. Cheers, Cheng On 4/16/2013 7:32 AM, Gabriel Mar?al de Brito wrote: > Hi Alex. > > I am studying the impact of named-data networking over wireless MANETs > and within this work I am performing some simulations with ndnSIM. > > I noticed an increasing average delay using high chunk request rates > and digging deeper, found that RttEstimator::IncreaseMultiplier() is > called whenever there is an Interest, doubling the RTT estimate. > > My guess is that since my scenarios are pretty dynamic, some consumer > nodes would be able to retrieve the desired content if they re-request > it sooner than waiting for the very long ever-doubled RTT (in case of > discontinuities, for exemaple). > > Is there a reason for doubling this estimate? > > Thanks in advance, > Gabriel > > > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Tue Apr 16 08:32:01 2013 From: huyao0107 at gmail.com (yao hu) Date: Wed, 17 Apr 2013 00:32:01 +0900 Subject: [ndnSIM] Inconsistent number of sent packets Message-ID: Hi Alex, Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) Thanks for your reply! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 16 16:49:32 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 16 Apr 2013 16:49:32 -0700 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: References: Message-ID: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> Hi huyao, Did you specify any randomization for inter-interest gap using Randomize parameter (uniform, exponential)? Though, by default there is no randomization. Btw. Do all your interest are getting satisfied from the first attempt? If not, the difference can come from the interest retransmission, since those that needs to be retransmitted are sharing the same "cbr" constraints as new interests. --- Alex On Apr 16, 2013, at 8:32 AM, yao hu wrote: > Hi Alex, > > Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) > > Thanks for your reply! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Tue Apr 16 16:58:22 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 16 Apr 2013 16:58:22 -0700 Subject: [ndnSIM] RTTEstimator In-Reply-To: <516D6618.4040603@email.arizona.edu> References: <516D6618.4040603@email.arizona.edu> Message-ID: <166AD8B2-EA31-427C-8EBF-2527160318AE@ucla.edu> Thanks Cheng! I completely agree that the way existing ndn::Consumer* apps behave is not necessary the ideal or the right way at all. We attempted to emulate very simple TCP behavior, which is very well known not to work "too well" in wireless scenarios. The "problem" can be solved in a couple of different ways: 1) The most straightforward way, you can write your custom app (based on the existing one) that doesn't doubles RTO as much as it does currently. 2) Another way is to set maximum value of RTO to some small value, acceptable for you simulations (by default, max RTO is 200 seconds): Config::SetDefault ("ns3::ndn::RttEstimator::MaxRTO", TimeValue (Seconds (4.0))); 3) Write a completely different (simple) app with fixed RTO, if it is acceptable (not sure) or different logic for RTO calculation. --- Alex On Apr 16, 2013, at 7:54 AM, Cheng Yi wrote: > Hi Gabriel, > > IncreaseMultiplier is called whenever there is a NACK or an Interest timeout, which implies potential congestion in the network. The implementation of RttEstimator is based on the Karn's algorithm which is used in TCP RTT estimation. Whether it fits NDN well is debatable and still under investigation. Hope this helps. > > Cheers, > Cheng > > On 4/16/2013 7:32 AM, Gabriel Mar?al de Brito wrote: >> Hi Alex. >> >> I am studying the impact of named-data networking over wireless MANETs and within this work I am performing some simulations with ndnSIM. >> >> I noticed an increasing average delay using high chunk request rates and digging deeper, found that RttEstimator::IncreaseMultiplier() is called whenever there is an Interest, doubling the RTT estimate. >> >> My guess is that since my scenarios are pretty dynamic, some consumer nodes would be able to retrieve the desired content if they re-request it sooner than waiting for the very long ever-doubled RTT (in case of discontinuities, for exemaple). >> >> Is there a reason for doubling this estimate? >> >> Thanks in advance, >> Gabriel >> >> >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 16 17:06:06 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 16 Apr 2013 17:06:06 -0700 Subject: [ndnSIM] How to simulation two or three LNA in ndnSIM? In-Reply-To: <201304161804211310117@126.com> References: <1814c37e.5b46.13df6e6293e.Coremail.youshou_wy@126.com>, <7FC59D51-7AC2-4343-9CEB-1C466B5033F3@ucla.edu>, <201304151734317349448@126.com> <201304151737332322559@126.com>, <201304161804211310117@126.com> Message-ID: Hi Nilicy, There is one important problem in your code, which probably is the reason of the problem: you should not call ndnStackHelper.Install (...) or ndnStackHelper.InstallAll () before all nodes and all links before nodes are actually created. The reason for this restriction is that the Install method besides installing the stack creates necessary NDN faces based on the available NetDevices on the node. If you call Install and then add new NetDevice (connect LANs), this NetDevice will not have a corresponding ndn::NetDeviceFace and thus NDN will not be aware of the available link. If you really want to connect after calling Install, you will need to manually create faces and install faces in corresponding ndn::L3Protocols. As for the other question about selective route calculation. As it stands right now, CalculateRoutes does the job only for all available nodes. However, you can extend the ndn::GlobalRoutingHelper with another method that accept Node and/or NodeContainer parameter and calculates routes only for the requested nodes. If you make this change, I will gladly push it to the main branch of ndnSIM, as it could be useful for others too. --- Alex On Apr 16, 2013, at 3:04 AM, youshou_wy wrote: > Hi Alex, > > I send you my scenario , and i guess you maybe don't the action of 1.txt , let me explain it. > > I Reload ForwardingStrategy::DidCreatePitEntry in ndn-ForwardingStrategy.cc and make some changes . when a node receive a interest packet ,fisrt it will check CS ,second check PIT and last check FIB , if the node don't find entry about the interest ,the interest will be drop . In my ForwardingStrategy.cc , wnen node don't find entry in FIB, it will check the 1.txt . In other words, 1.txt store some route entrys. > > So when i simulation in ndnSIM , I wanna use ndn::GlobalRoutingHelper::CalculateRoutes () to add some FIB entry about the LAN itself, if cosumer2 (belong to LAN2) request a rouses comes form LAN1, it must find 1.txt. > > But maybe ndn::GlobalRoutingHelper::CalculateRoutes () only Calculate all the nodes routes ,How to use it to Calculate some nodes routes? > > youshou_wy > > From: Alex Afanasyev > Date: 2013-04-16 02:03 > To: youshou_wy > CC: ndnsim at lists.cs.ucla.edu > Subject: Re: How to simulation two or three LNA in ndnSIM? > Hi Nilicy, > > ndn::GlobalRoutingHelper should not have any problems in creating valid FIB entries from one LAN to another. You can either send me your scenario, so I can check what is wrong, or you can use this scenario (http://pastebin.com/Hz3uE73m) that I just created as a base point. (This scenario creates the same topology as you explained, but using PointToPointGridHelper.) > > I'm a little bit confused about Add method that you have used. If you're referring to Add on a NodeContainer, then it doesn't really do anything good to you, since NodeContainer is just a container and doesn't create any links. To create links within a LAN, as well as between LANs, you need to use, for example, PointToPointHelper::Install method (check line 82 in the example I linked). > > --- > Alex > > On Apr 15, 2013, at 2:37 AM, youshou_wy wrote: > > > Hi Alex, > > I wanna simulation two LAN in ndnSIM , i set two NodeContainer to creating nodes, like is: > > NodeContainer node1; > > NodeContainer node2; > > node1 contains the nodes of first LAN ,node2 contains the nodes of second LAN. I use Add(node1,node2) to create the WAN . But when i use ndn::GlobalRoutingHelper to Generate each routes of every LAN ,it can't work . > > In other word , if i can create a network like is: > > > > (consumer1) -- ( ) ----- ( ) > > | | | > > ( ) ------- ( ) ----- ( ) > > | | | > > ( ) ------- ( ) -- (producer1) LAN1 > > | > > | > > | > > > > (consumer2) -- ( ) ----- ( ) > > | | | > > ( ) ------- ( ) ----- ( ) > > | | | > > ( ) ------- ( ) -- (producer2) LAN2 > > > > I guess i can generation each LAN ,but if i must Manually add routes in each LAN? > > Thanks > > > > Nilicy > > <1.txt> -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 16 17:19:10 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 16 Apr 2013 17:19:10 -0700 Subject: [ndnSIM] how to obtain link load In-Reply-To: <616b437f.23d15.13e11a52a1b.Coremail.blindeafer@163.com> References: <59737a3.11f2f.13e0d0726d8.Coremail.blindeafer@163.com> <0C1692B0-2774-4789-A6DE-A80CE0EA4913@ucla.edu> <616b437f.23d15.13e11a52a1b.Coremail.blindeafer@163.com> Message-ID: <7F871F97-6D69-4363-80CB-5EA5D15212A8@ucla.edu> Hi Shenglan, Got it. I think for your specific case you should not use tracer at all, since it is really designed for recording simulation scenario metrics, and not to be used internally. For the "instant" link load (besides that you have to carefully define "instant"), there are no modules in the base code of ndnSIM, but I made an extension to obtain run-time statistics per interface/per name prefix about incoming/outgoing interest/data packets as part of Interest flooding mitigation research. It may be not exactly what you need, but you can try to modify it for your needs. You can check the code in this repo on github: https://github.com/cawka/ndnSIM-ddos-interest-flooding The files that you will be interested are: - extensions/stats.h and extensions/stats.cc defining a "forwarding strategy" (actually it is a strategy layer) that tracks in real-time NDN stats and records it in a special data structure - extensions/stats/* implementation of this special data structure. Let me know if you have questions. I wasn't sure that this "module" (and this particular implementation) is general enough to be included in ndnSIM code base, but if you find it useful, I can push it to the base. --- Alex On Apr 16, 2013, at 12:00 AM, ??? wrote: > Yes?I got the "rate-trace.txt" and "aggregate-trace.txt". > > I want to write a caching scheme that nodes implement it according to both the instant input link load when they got a contentobject and the output link load according to PIT entry(s). > > Would please provide me an example on how can a node get the instant link load and make use of the instant value to decide whether to cache the contentobject? > > > > > > At 2013-04-16 01:29:26,"Alex Afanasyev" wrote: > Hi Shenglan, > > Have you tried ndn::L3RateTracer (http://ndnsim.net/metric.html#example-of-packet-level-trace-helpers)? It breaks down the "rates" (and the aggregate number of packet/bytes) for incoming and outgoing data/interest packets, as well as faces on which (to which) data/interest packets were send out. You can just run the example and check the contents of rate-trace.txt file. > > --- > Alex > > On Apr 15, 2013, at 2:29 AM, ??? wrote: > >> Hi Alex, >> >> Is there any module to obtain the link load of the link from which a content object come into a node and the link(s) which a node transmit to according to PIT entry(s)? >> >> Best regards, >> Shenglan > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Wed Apr 17 05:38:35 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Wed, 17 Apr 2013 20:38:35 +0800 Subject: [ndnSIM] how to trace m_dropData in ForwardingStrategy? Message-ID: <74D5F70F9AC44F4AB71576A48E19178D@gmail.com> Hi, I am trying to trace m_dropData in ForwardingStrategy, but I don't know how to "find" a Forwarding Strategy instance from Ptr. Could anyone give some hint? thanks My Regards, Xiaoke (Shock) Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China, 100084 -------------- next part -------------- An HTML attachment was scrubbed... URL: From wnbupt9 at gmail.com Wed Apr 17 06:27:50 2013 From: wnbupt9 at gmail.com (=?GB2312?B?zfXE/g==?=) Date: Wed, 17 Apr 2013 21:27:50 +0800 Subject: [ndnSIM] question Message-ID: hi,i want to know if the node's neighbor is not in FIB,but i want to send interest to all neighbor. what should i do ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Wed Apr 17 06:57:03 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Wed, 17 Apr 2013 21:57:03 +0800 Subject: [ndnSIM] how to trace m_dropData in ForwardingStrategy? In-Reply-To: <74D5F70F9AC44F4AB71576A48E19178D@gmail.com> References: <74D5F70F9AC44F4AB71576A48E19178D@gmail.com> Message-ID: problem solved with ndn-l3-rate-tracer, which is quite convinent. thanks My Regards, Xiaoke (Shock) Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China, 100084 On Wednesday, April 17, 2013 at 8:38 PM, Xiaoke Jiang wrote: > Hi, > I am trying to trace m_dropData in ForwardingStrategy, but I don't know how to "find" a Forwarding Strategy instance from Ptr. Could anyone give some hint? > > thanks > > My Regards, > Xiaoke (Shock) Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China, 100084 > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Wed Apr 17 08:36:26 2013 From: huyao0107 at gmail.com (yao hu) Date: Thu, 18 Apr 2013 00:36:26 +0900 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> Message-ID: Hi Alex, I did not specify any randomization using Randomize parameter. I am not sure whether all the interests are consumed at the first attempt, but if that is a reason, the retransmitted Interest packets are not counted into "Tx Packets"? Besides, I am not sure about the meaning of routingCost column (2147483647) in FIB. Does it has something different from the 'metric' which affects the forwarding strategy to select the BestRoute? Could I specify it somewhere? Sorry for many questions. Thanks very much! Regards, huyao 2013/4/17 Alex Afanasyev > Hi huyao, > > Did you specify any randomization for inter-interest gap using Randomize > parameter (uniform, exponential)? Though, by default there is no > randomization. > > Btw. Do all your interest are getting satisfied from the first attempt? > If not, the difference can come from the interest retransmission, since > those that needs to be retransmitted are sharing the same "cbr" constraints > as new interests. > > --- > Alex > > On Apr 16, 2013, at 8:32 AM, yao hu wrote: > > > Hi Alex, > > > > Just now, in order to verify my modification I used CustomerCbr to > produce a certain number of Interest from a specific consumer, however, I > found that there is a little difference between expectation and simulation > result. For example, I set the Interest frequency as 10 (packets per > second) for 20 seconds, the result is the number of sent packets is 200 > which is the same as theoretic value. But if I set the Interest frequency > as 100 for 20 seconds, the simulation result is the number of sent packets > is 1805 which is less than the theoretic value 2000. What is the possible > reason for this phenomenon? (No packets are sent from other faces) > > > > Thanks for your reply! > > > > Regards, > > huyao > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 17 11:18:06 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 17 Apr 2013 11:18:06 -0700 Subject: [ndnSIM] question In-Reply-To: References: Message-ID: Is there a reason for not adding information about forwarding to the node's neighbor to the FIB? FIB suppose to be just a database for all available paths to where you can send Interests for specific (or all) prefixes, maintaining data plane performance characteristics for each face. If you really want to do that, it is still possible if you write a custom strategy (http://ndnsim.net/fw.html#writing-your-own-custom-strategy). You may also want to check this conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html with an example how to send out interests to faces not listed in the FIB. --- Alex On Apr 17, 2013, at 6:27 AM, ?? wrote: > hi,i want to know if the node's neighbor is not in FIB,but i want to send interest to all neighbor. what should i do ? > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 17 11:23:08 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 17 Apr 2013 11:23:08 -0700 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> Message-ID: <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> Can you send out scenario (or link to scenario), so I can try to debug the problem on my machine? routingCost is basically an aggregated cost for the specific path. If you're using globalRoutingController, it sums up all the specified metrics on the path. For example, if you have this topology node1 ------ node2 ------- node3 ------- node4 and all metrics for each link is 10, then routing cost on node1 to forward towards node4 using the only available face would be 30. If you are using "EnableDefaultRoute" in ndn::StackHelper, then this value doesn't really mean anything and suggests only that this "default" is the least preferred option to forward interests. --- Alex On Apr 17, 2013, at 8:36 AM, yao hu wrote: > Hi Alex, > > I did not specify any randomization using Randomize parameter. I am not sure whether all the interests are consumed at the first attempt, but if that is a reason, the retransmitted Interest packets are not counted into "Tx Packets"? Besides, I am not sure about the meaning of routingCost column (2147483647) in FIB. Does it has something different from the 'metric' which affects the forwarding strategy to select the BestRoute? Could I specify it somewhere? > > Sorry for many questions. Thanks very much! > > Regards, > huyao > > > > 2013/4/17 Alex Afanasyev > Hi huyao, > > Did you specify any randomization for inter-interest gap using Randomize parameter (uniform, exponential)? Though, by default there is no randomization. > > Btw. Do all your interest are getting satisfied from the first attempt? If not, the difference can come from the interest retransmission, since those that needs to be retransmitted are sharing the same "cbr" constraints as new interests. > > --- > Alex > > On Apr 16, 2013, at 8:32 AM, yao hu wrote: > > > Hi Alex, > > > > Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) > > > > Thanks for your reply! > > > > Regards, > > huyao > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From mahdian.m at husky.neu.edu Wed Apr 17 16:59:49 2013 From: mahdian.m at husky.neu.edu (Milad Mahdian) Date: Wed, 17 Apr 2013 19:59:49 -0400 Subject: [ndnSIM] car2car example Message-ID: Hi Alex, I am trying to run the car2car example. After following the instructions on :http://ndnsim.net/getting-started.html#simulating-using-ndnsim, building the scenario, and running it successfully, I get : milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf --run car-relay Waf: Entering directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' Waf: Leaving directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' 'build' finished successfully (0.017s) However, when I want it to show the results in a figure I get this error milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py -s figure-4-data-propagation-vs-distance Traceback (most recent call last): File "./run.py", line 8, in import workerpool ImportError: No module named workerpool milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py figure-5-retx-count Traceback (most recent call last): File "./run.py", line 8, in import workerpool ImportError: No module named workerpool And this is the waf configuration: milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf configure Setting top to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car Setting out to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build Checking for 'g++' (c++ compiler) : /usr/bin/g++ Checking boost includes : 1_49 Checking boost libs : ok Checking for boost linkage : ok Checking for program pkg-config : /usr/bin/pkg-config Checking for pkg-config version >= '0.0.0' : yes Checking for ns3-ndnSIM : yes Checking for ns3-core : yes Checking for ns3-network : yes Checking for ns3-internet : yes Checking for ns3-point-to-point : yes Checking for ns3-topology-read : yes Checking for ns3-applications : yes Checking for ns3-mobility : yes Checking for ns3-wifi : yes Checking for ns3-visualizer : yes 'configure' finished successfully (0.300s) can you please help me solve this problem? Regards, Milad -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 17 17:04:42 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 17 Apr 2013 17:04:42 -0700 Subject: [ndnSIM] car2car example In-Reply-To: References: Message-ID: <17C15093-1E4D-4BEF-AB47-4DC41E8D9195@ucla.edu> Hi Milad, Just run the following command, which will install the missing python library sudo easy_install workerpool If it complains that easy_install is not found, then just install it using: sudo apt-get install python-setuptools --- Alex On Apr 17, 2013, at 4:59 PM, Milad Mahdian wrote: > Hi Alex, > > I am trying to run the car2car example. After following the instructions on :http://ndnsim.net/getting-started.html#simulating-using-ndnsim, building the scenario, and running it successfully, I get : > > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf --run car-relay > Waf: Entering directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' > Waf: Leaving directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' > 'build' finished successfully (0.017s) > > However, when I want it to show the results in a figure I get this error > > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py -s figure-4-data-propagation-vs-distance > Traceback (most recent call last): > File "./run.py", line 8, in > import workerpool > ImportError: No module named workerpool > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py figure-5-retx-count > Traceback (most recent call last): > File "./run.py", line 8, in > import workerpool > ImportError: No module named workerpool > > And this is the waf configuration: > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf configure > Setting top to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car > Setting out to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build > Checking for 'g++' (c++ compiler) : /usr/bin/g++ > Checking boost includes : 1_49 > Checking boost libs : ok > Checking for boost linkage : ok > Checking for program pkg-config : /usr/bin/pkg-config > Checking for pkg-config version >= '0.0.0' : yes > Checking for ns3-ndnSIM : yes > Checking for ns3-core : yes > Checking for ns3-network : yes > Checking for ns3-internet : yes > Checking for ns3-point-to-point : yes > Checking for ns3-topology-read : yes > Checking for ns3-applications : yes > Checking for ns3-mobility : yes > Checking for ns3-wifi : yes > Checking for ns3-visualizer : yes > 'configure' finished successfully (0.300s) > > can you please help me solve this problem? > > > Regards, > Milad > _______________________________________________ > 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 mahdian.m at husky.neu.edu Wed Apr 17 17:43:22 2013 From: mahdian.m at husky.neu.edu (Milad Mahdian) Date: Wed, 17 Apr 2013 20:43:22 -0400 Subject: [ndnSIM] car2car example Message-ID: Alex, After running the commands, it starts building the graph and then I get this error: ... ./build/car-relay --run=8 --distance=170 ./build/car-relay --run=9 --distance=170 ./build/car-relay --run=10 --distance=170 Traceback (most recent call last): File "./run.py", line 139, in fig5.run () File "./run.py", line 74, in run self.postprocess () File "./run.py", line 107, in postprocess f_out = open ("%s-%s.txt" % (prefix_out, subtype), "w") IOError: [Errno 2] No such file or directory: 'results/figure-5-retx-count/car-relay-jump-distance.txt' I have installed R and ggplot2 previously. Regards, Milad On Wed, Apr 17, 2013 at 8:04 PM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi Milad, > > Just run the following command, which will install the missing python > library > > sudo easy_install workerpool > > > If it complains that easy_install is not found, then just install it using: > > sudo apt-get install python-setuptools > > > --- > Alex > > On Apr 17, 2013, at 4:59 PM, Milad Mahdian > wrote: > > Hi Alex, > > I am trying to run the car2car example. After following the instructions > on :http://ndnsim.net/getting-started.html#simulating-using-ndnsim, > building the scenario, and running it successfully, I get : > > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf > --run car-relay > Waf: Entering directory > `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' > Waf: Leaving directory > `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' > 'build' finished successfully (0.017s) > > However, when I want it to show the results in a figure I get this error > > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ > ./run.py -s figure-4-data-propagation-vs-distance > Traceback (most recent call last): > File "./run.py", line 8, in > import workerpool > ImportError: No module named workerpool > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ > ./run.py figure-5-retx-count > Traceback (most recent call last): > File "./run.py", line 8, in > import workerpool > ImportError: No module named workerpool > > And this is the waf configuration: > milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf > configure > Setting top to : > /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car > Setting out to : > /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build > Checking for 'g++' (c++ compiler) : /usr/bin/g++ > Checking boost includes : 1_49 > Checking boost libs : ok > Checking for boost linkage : ok > Checking for program pkg-config : /usr/bin/pkg-config > Checking for pkg-config version >= '0.0.0' : yes > Checking for ns3-ndnSIM : yes > Checking for ns3-core : yes > Checking for ns3-network : yes > Checking for ns3-internet : yes > Checking for ns3-point-to-point : yes > Checking for ns3-topology-read : yes > Checking for ns3-applications : yes > Checking for ns3-mobility : yes > Checking for ns3-wifi : yes > Checking for ns3-visualizer : yes > 'configure' finished successfully (0.300s) > > can you please help me solve this problem? > > > Regards, > Milad > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 17 18:37:16 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 17 Apr 2013 18:37:16 -0700 Subject: [ndnSIM] car2car example In-Reply-To: References: Message-ID: Hi Milad, I pushed a small update of ndnSIM-nom-rapid-car2car repository. I didn't change any code, just updated README instructions and fixed the directory structure: the scenarios and scripts assume that there is results/ and graphs/pdfs/ folders exist, but they were missing from the clone. I also checked on my ubuntu installation and ./run.py -s figure-5-retx-count succeeded and produced the graph. --- Alex On Apr 17, 2013, at 5:43 PM, Milad Mahdian wrote: > Alex, > > After running the commands, it starts building the graph and then I get this error: > ... > ./build/car-relay --run=8 --distance=170 > ./build/car-relay --run=9 --distance=170 > ./build/car-relay --run=10 --distance=170 > Traceback (most recent call last): > File "./run.py", line 139, in > fig5.run () > File "./run.py", line 74, in run > self.postprocess () > File "./run.py", line 107, in postprocess > f_out = open ("%s-%s.txt" % (prefix_out, subtype), "w") > IOError: [Errno 2] No such file or directory: 'results/figure-5-retx-count/car-relay-jump-distance.txt' > > I have installed R and ggplot2 previously. > > Regards, > Milad > > On Wed, Apr 17, 2013 at 8:04 PM, Alex Afanasyev wrote: > Hi Milad, > > Just run the following command, which will install the missing python library > > sudo easy_install workerpool > > If it complains that easy_install is not found, then just install it using: > > sudo apt-get install python-setuptools > > --- > Alex > > On Apr 17, 2013, at 4:59 PM, Milad Mahdian wrote: > >> Hi Alex, >> >> I am trying to run the car2car example. After following the instructions on :http://ndnsim.net/getting-started.html#simulating-using-ndnsim, building the scenario, and running it successfully, I get : >> >> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf --run car-relay >> Waf: Entering directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' >> Waf: Leaving directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' >> 'build' finished successfully (0.017s) >> >> However, when I want it to show the results in a figure I get this error >> >> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py -s figure-4-data-propagation-vs-distance >> Traceback (most recent call last): >> File "./run.py", line 8, in >> import workerpool >> ImportError: No module named workerpool >> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py figure-5-retx-count >> Traceback (most recent call last): >> File "./run.py", line 8, in >> import workerpool >> ImportError: No module named workerpool >> >> And this is the waf configuration: >> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf configure >> Setting top to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car >> Setting out to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build >> Checking for 'g++' (c++ compiler) : /usr/bin/g++ >> Checking boost includes : 1_49 >> Checking boost libs : ok >> Checking for boost linkage : ok >> Checking for program pkg-config : /usr/bin/pkg-config >> Checking for pkg-config version >= '0.0.0' : yes >> Checking for ns3-ndnSIM : yes >> Checking for ns3-core : yes >> Checking for ns3-network : yes >> Checking for ns3-internet : yes >> Checking for ns3-point-to-point : yes >> Checking for ns3-topology-read : yes >> Checking for ns3-applications : yes >> Checking for ns3-mobility : yes >> Checking for ns3-wifi : yes >> Checking for ns3-visualizer : yes >> 'configure' finished successfully (0.300s) >> >> can you please help me solve this problem? >> >> >> Regards, >> Milad >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Wed Apr 17 19:12:01 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Thu, 18 Apr 2013 10:12:01 +0800 Subject: [ndnSIM] Question of PIT lifetime Message-ID: Hi Alex Let say I have this code, but I want to update dynamically change the lifetime for PIT during simulation runtime. How can I arithmetically change or insert the value of 2s in line number 2. 1. ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); 2. consumerHelper.SetAttribute ("LifeTime", StringValue ("2s")); rgd -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 17 20:06:04 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 17 Apr 2013 20:06:04 -0700 Subject: [ndnSIM] Question of PIT lifetime In-Reply-To: References: Message-ID: <3E116A72-0100-4567-8185-CA03CF220831@ucla.edu> Hi Xee, It really depends on what you want to do with interest lifetime. If you want to adjust interest lifetime based on some data plane performance characteristics (e.g., RTT), then it probably be a good idea to write a separate consumer applications (or modify the existing one). If you want to adjust lifetime periodically, you can do something like this: void ChangeLifeTime (Ptr app, Time newLifeTime) { app->SetAttribute ("LifeTime", TimeValue (newLifeTime)); } ... ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr") ... consumerHelper.SetAttribute ("LifeTime", StringValue ("2s")); ApplicationContainer apps = consumerHelper.Install (appNode); ... Simulator::Schedule (Seconds (10.0), ChangeLifeTime, apps.Get (0), Seconds (2.0)); --- Alex On Apr 17, 2013, at 7:12 PM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > Let say I have this code, but I want to update dynamically change the lifetime for PIT during simulation runtime. How can I arithmetically change or insert the value of 2s in line number 2. > > 1. ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr"); > 2. consumerHelper.SetAttribute ("LifeTime", StringValue ("2s")); > > rgd > -Xee > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From huyao0107 at gmail.com Thu Apr 18 07:07:31 2013 From: huyao0107 at gmail.com (yao hu) Date: Thu, 18 Apr 2013 23:07:31 +0900 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> Message-ID: Hi Alex, The scenario I tested in is just the 9-node grid topology. I think maybe it has something wrong with my modified algorithm, since it shows no problem with a certain interest frequency, while with larger interest frequency (generally speaking) , the missing interest packets become obvious. I will check it soon. Thanks for your reply about routingCost. I see. :) Regards, huyao 2013/4/18 Alex Afanasyev > Can you send out scenario (or link to scenario), so I can try to debug the > problem on my machine? > > routingCost is basically an aggregated cost for the specific path. If > you're using globalRoutingController, it sums up all the specified metrics > on the path. For example, if you have this topology > > node1 ------ node2 ------- node3 ------- node4 > > and all metrics for each link is 10, then routing cost on node1 to forward > towards node4 using the only available face would be 30. > > If you are using "EnableDefaultRoute" in ndn::StackHelper, then this value > doesn't really mean anything and suggests only that this "default" is the > least preferred option to forward interests. > > --- > Alex > > On Apr 17, 2013, at 8:36 AM, yao hu wrote: > > Hi Alex, > > I did not specify any randomization using Randomize parameter. I am not > sure whether all the interests are consumed at the first attempt, but if > that is a reason, the retransmitted Interest packets are not counted into > "Tx Packets"? Besides, I am not sure about the meaning of routingCost > column (2147483647) in FIB. Does it has something different from the > 'metric' which affects the forwarding strategy to select the BestRoute? > Could I specify it somewhere? > > Sorry for many questions. Thanks very much! > > Regards, > huyao > > > > 2013/4/17 Alex Afanasyev > >> Hi huyao, >> >> Did you specify any randomization for inter-interest gap using Randomize >> parameter (uniform, exponential)? Though, by default there is no >> randomization. >> >> Btw. Do all your interest are getting satisfied from the first attempt? >> If not, the difference can come from the interest retransmission, since >> those that needs to be retransmitted are sharing the same "cbr" constraints >> as new interests. >> >> --- >> Alex >> >> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >> >> > Hi Alex, >> > >> > Just now, in order to verify my modification I used CustomerCbr to >> produce a certain number of Interest from a specific consumer, however, I >> found that there is a little difference between expectation and simulation >> result. For example, I set the Interest frequency as 10 (packets per >> second) for 20 seconds, the result is the number of sent packets is 200 >> which is the same as theoretic value. But if I set the Interest frequency >> as 100 for 20 seconds, the simulation result is the number of sent packets >> is 1805 which is less than the theoretic value 2000. What is the possible >> reason for this phenomenon? (No packets are sent from other faces) >> > >> > Thanks for your reply! >> > >> > Regards, >> > huyao >> > _______________________________________________ >> > ndnSIM mailing list >> > ndnSIM at lists.cs.ucla.edu >> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Apr 18 11:39:36 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 18 Apr 2013 11:39:36 -0700 Subject: [ndnSIM] question In-Reply-To: References: Message-ID: I'm not quite sure what is the relation between ndn->GetNFaces() and new type of packet you created. Would it be possible if you post some code, so I can check what is going wrong? --- Alex On Apr 18, 2013, at 2:09 AM, ?? wrote: > hi?thank you for your answers . Since i define a new packet,so when i use 'ndn->GetNFaces ()' sending to all faces, when the node recevice the packet ,it cannot get the type of my new packet, i define the new packet in ndn-header-helper.cc ndn-header-helper.h , so what should i do ? > > > 2013/4/18 Alex Afanasyev > Is there a reason for not adding information about forwarding to the node's neighbor to the FIB? FIB suppose to be just a database for all available paths to where you can send Interests for specific (or all) prefixes, maintaining data plane performance characteristics for each face. > > If you really want to do that, it is still possible if you write a custom strategy (http://ndnsim.net/fw.html#writing-your-own-custom-strategy). You may also want to check this conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html with an example how to send out interests to faces not listed in the FIB. > > --- > Alex > > On Apr 17, 2013, at 6:27 AM, ?? wrote: > >> hi,i want to know if the node's neighbor is not in FIB,but i want to send interest to all neighbor. what should i do ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Apr 18 12:02:52 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 18 Apr 2013 12:02:52 -0700 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> Message-ID: Hi huyao, Hmm. I just run ndn-grid scenario with frequency 10, 100, and 1000 and in all of the cases I see that the consumer send out exactly the theoretical amount of interests within 20 seconds (200, 2000, and 20000), though the same consumer has received different number of Data packets back due to buffer overflows (199, 1989, 2342). How exactly did you measure number of Interests and I'm not very sure what is "Tx Packets" you were referring to? I obtained my data using ndn::L3RateTracer. I put the following before Simulation::Run() in ndn-grid scenario (assuming the total simulation time is 20 seconds): boost::tuple< boost::shared_ptr, std::list > > rateTracers = ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds (19.99999999)); (don't forget to include the header file: #include ) --- Alex On Apr 18, 2013, at 7:07 AM, yao hu wrote: > Hi Alex, > > The scenario I tested in is just the 9-node grid topology. I think maybe it has something wrong with my modified algorithm, since it shows no problem with a certain interest frequency, while with larger interest frequency (generally speaking) , the missing interest packets become obvious. I will check it soon. Thanks for your reply about routingCost. I see. :) > > Regards, > huyao > > > > 2013/4/18 Alex Afanasyev > Can you send out scenario (or link to scenario), so I can try to debug the problem on my machine? > > routingCost is basically an aggregated cost for the specific path. If you're using globalRoutingController, it sums up all the specified metrics on the path. For example, if you have this topology > > node1 ------ node2 ------- node3 ------- node4 > > and all metrics for each link is 10, then routing cost on node1 to forward towards node4 using the only available face would be 30. > > If you are using "EnableDefaultRoute" in ndn::StackHelper, then this value doesn't really mean anything and suggests only that this "default" is the least preferred option to forward interests. > > --- > Alex > > On Apr 17, 2013, at 8:36 AM, yao hu wrote: > >> Hi Alex, >> >> I did not specify any randomization using Randomize parameter. I am not sure whether all the interests are consumed at the first attempt, but if that is a reason, the retransmitted Interest packets are not counted into "Tx Packets"? Besides, I am not sure about the meaning of routingCost column (2147483647) in FIB. Does it has something different from the 'metric' which affects the forwarding strategy to select the BestRoute? Could I specify it somewhere? >> >> Sorry for many questions. Thanks very much! >> >> Regards, >> huyao >> >> >> >> 2013/4/17 Alex Afanasyev >> Hi huyao, >> >> Did you specify any randomization for inter-interest gap using Randomize parameter (uniform, exponential)? Though, by default there is no randomization. >> >> Btw. Do all your interest are getting satisfied from the first attempt? If not, the difference can come from the interest retransmission, since those that needs to be retransmitted are sharing the same "cbr" constraints as new interests. >> >> --- >> Alex >> >> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >> >> > Hi Alex, >> > >> > Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) >> > >> > Thanks for your reply! >> > >> > Regards, >> > huyao >> > _______________________________________________ >> > ndnSIM mailing list >> > ndnSIM at lists.cs.ucla.edu >> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Apr 18 20:52:57 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 18 Apr 2013 20:52:57 -0700 Subject: [ndnSIM] question In-Reply-To: References: Message-ID: Can you also post the actual error message? I have a small suspicion that including will solve the problem, but cannot be sure without a little bit more context. --- Alex On Apr 18, 2013, at 6:58 PM, ?? wrote: > the following is my code : > > 1. //generate CA_Packet > > ndn::CAHeader caheader; > NameComponents name=header->GetName(); > caheader.SetName(&name); > caheader.SetScope(0xFF); > caheader.SetCA_TTL(0); > caheader.SetNonce(0); > caheader.SetNack(0); > Ptrpacket = Create(); > packet->AddHeader (caheader); > NS_LOG_DEBUG ("Sending CA packet for"<
GetName()); > > 2.//send CA_PACKET > > Ptr ndn = this->GetObject (); > for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) > { > Ptr face = ndn->GetFace (faceNum); > face->Send(packet); > } > > > when i use the following code to send packet ,the packet type can be resolved: > > BOOST_FOREACH(const fib::FaceMetric &metricFace,pitEntry->GetFibEntry ()->m_faces.get ()) > { > metricFace.m_face->Send(packet); > } > > > > > 2013/4/19 Alex Afanasyev >> I'm not quite sure what is the relation between ndn->GetNFaces() and new type of packet you created. Would it be possible if you post some code, so I can check what is going wrong? >> >> --- >> Alex >> >> On Apr 18, 2013, at 2:09 AM, ?? wrote: >> >>> hi?thank you for your answers . Since i define a new packet,so when i use 'ndn->GetNFaces ()' sending to all faces, when the node recevice the packet ,it cannot get the type of my new packet, i define the new packet in ndn-header-helper.cc ndn-header-helper.h , so what should i do ? >>> >>> >>> 2013/4/18 Alex Afanasyev >>>> Is there a reason for not adding information about forwarding to the node's neighbor to the FIB? FIB suppose to be just a database for all available paths to where you can send Interests for specific (or all) prefixes, maintaining data plane performance characteristics for each face. >>>> >>>> If you really want to do that, it is still possible if you write a custom strategy (http://ndnsim.net/fw.html#writing-your-own-custom-strategy). You may also want to check this conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html with an example how to send out interests to faces not listed in the FIB. >>>> >>>> --- >>>> Alex >>>> >>>> On Apr 17, 2013, at 6:27 AM, ?? wrote: >>>> >>>>> hi,i want to know if the node's neighbor is not in FIB,but i want to send interest to all neighbor. what should i do ? > -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Fri Apr 19 08:16:22 2013 From: huyao0107 at gmail.com (yao hu) Date: Sat, 20 Apr 2013 00:16:22 +0900 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> Message-ID: Hi Alex, "Tx Packets" is from the "interface statistics" (right click the node from the ns3 visualizer) of the node0 which is the data requester in this grid scenario. Just now I tried it again by setting interest frequency as 100 (for 20 seconds), still the "Tx Packets" is 1805 (interface 0) and 22 (interface 1). The missing "Tx Packets" (around 200) are from the interest retransmission? I also used the L3RateTracer following your instruction (as follows). The "PacketRaw" column of 20 Node0 2 dev=local(2) InInterests refers the number of outgoing interest packets? Then what is the difference between this "2000" and that "1805"? Thanks very much for your time! Time Node FaceId FaceDescr Type Packets Kilobytes PacketRaw KilobytesRaw 20 Node0 0 dev[0]=net(0,0-1) InInterests 0 0 0 0 20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0 20 Node0 0 dev[0]=net(0,0-1) DropInterests 0 0 0 0 20 Node0 0 dev[0]=net(0,0-1) InNacks 0 0 0 0 20 Node0 0 dev[0]=net(0,0-1) OutNacks 0 0 0 0 20 Node0 0 dev[0]=net(0,0-1) DropNacks 0 0 0 0 20 Node0 0 dev[0]=net(0,0-1) InData 71.72 74.0581 1793 1851.45 20 Node0 0 dev[0]=net(0,0-1) OutData 0 0 0 0 20 Node0 0 dev[0]=net(0,0-1) DropData 0.12 0.12375 3 3.09375 20 Node0 1 dev[0]=net(1,0-3) InInterests 0.04 0.00105469 1 0.0263672 20 Node0 1 dev[0]=net(1,0-3) OutInterests 0 0 0 0 20 Node0 1 dev[0]=net(1,0-3) DropInterests 0.04 0.00105469 1 0.0263672 20 Node0 1 dev[0]=net(1,0-3) InNacks 0 0 0 0 20 Node0 1 dev[0]=net(1,0-3) OutNacks 0 0 0 0 20 Node0 1 dev[0]=net(1,0-3) DropNacks 0 0 0 0 20 Node0 1 dev[0]=net(1,0-3) InData 0.84 0.865859 21 21.6465 20 Node0 1 dev[0]=net(1,0-3) OutData 0.04 0.0412891 1 1.03223 20 Node0 1 dev[0]=net(1,0-3) DropData 0.72 0.742109 18 18.5527 20 Node0 2 dev=local(2) InInterests 80 2.12891 2000 53.2227 20 Node0 2 dev=local(2) OutInterests 0 0 0 0 20 Node0 2 dev=local(2) DropInterests 0.2 0.00507813 5 0.126953 20 Node0 2 dev=local(2) InNacks 0 0 0 0 20 Node0 2 dev=local(2) OutNacks 0 0 0 0 20 Node0 2 dev=local(2) DropNacks 0 0 0 0 20 Node0 2 dev=local(2) InData 0 0 0 0 20 Node0 2 dev=local(2) OutData 71.72 74.0581 1793 1851.45 20 Node0 2 dev=local(2) DropData 0 0 0 0 2013/4/19 Alex Afanasyev > Hi huyao, > > Hmm. I just run ndn-grid scenario with frequency 10, 100, and 1000 and in > all of the cases I see that the consumer send out exactly the theoretical > amount of interests within 20 seconds (200, 2000, and 20000), though the > same consumer has received different number of Data packets back due to > buffer overflows (199, 1989, 2342). > > How exactly did you measure number of Interests and I'm not very sure what > is "Tx Packets" you were referring to? I obtained my data > using ndn::L3RateTracer. I put the following before Simulation::Run() in > ndn-grid scenario (assuming the total simulation time is 20 seconds): > > boost::tuple< boost::shared_ptr, > std::list > > > rateTracers = ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds > (19.99999999)); > > (don't forget to include the header file: > #include > ) > > --- > Alex > > On Apr 18, 2013, at 7:07 AM, yao hu wrote: > > Hi Alex, > > The scenario I tested in is just the 9-node grid topology. I think maybe > it has something wrong with my modified algorithm, since it shows no > problem with a certain interest frequency, while with larger interest > frequency (generally speaking) , the missing interest packets become > obvious. I will check it soon. Thanks for your reply about routingCost. I > see. :) > > Regards, > huyao > > > > 2013/4/18 Alex Afanasyev > >> Can you send out scenario (or link to scenario), so I can try to debug >> the problem on my machine? >> >> routingCost is basically an aggregated cost for the specific path. If >> you're using globalRoutingController, it sums up all the specified metrics >> on the path. For example, if you have this topology >> >> node1 ------ node2 ------- node3 ------- node4 >> >> and all metrics for each link is 10, then routing cost on node1 to >> forward towards node4 using the only available face would be 30. >> >> If you are using "EnableDefaultRoute" in ndn::StackHelper, then this >> value doesn't really mean anything and suggests only that this "default" is >> the least preferred option to forward interests. >> >> --- >> Alex >> >> On Apr 17, 2013, at 8:36 AM, yao hu wrote: >> >> Hi Alex, >> >> I did not specify any randomization using Randomize parameter. I am not >> sure whether all the interests are consumed at the first attempt, but if >> that is a reason, the retransmitted Interest packets are not counted into >> "Tx Packets"? Besides, I am not sure about the meaning of routingCost >> column (2147483647) in FIB. Does it has something different from the >> 'metric' which affects the forwarding strategy to select the BestRoute? >> Could I specify it somewhere? >> >> Sorry for many questions. Thanks very much! >> >> Regards, >> huyao >> >> >> >> 2013/4/17 Alex Afanasyev >> >>> Hi huyao, >>> >>> Did you specify any randomization for inter-interest gap using Randomize >>> parameter (uniform, exponential)? Though, by default there is no >>> randomization. >>> >>> Btw. Do all your interest are getting satisfied from the first attempt? >>> If not, the difference can come from the interest retransmission, since >>> those that needs to be retransmitted are sharing the same "cbr" constraints >>> as new interests. >>> >>> --- >>> Alex >>> >>> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >>> >>> > Hi Alex, >>> > >>> > Just now, in order to verify my modification I used CustomerCbr to >>> produce a certain number of Interest from a specific consumer, however, I >>> found that there is a little difference between expectation and simulation >>> result. For example, I set the Interest frequency as 10 (packets per >>> second) for 20 seconds, the result is the number of sent packets is 200 >>> which is the same as theoretic value. But if I set the Interest frequency >>> as 100 for 20 seconds, the simulation result is the number of sent packets >>> is 1805 which is less than the theoretic value 2000. What is the possible >>> reason for this phenomenon? (No packets are sent from other faces) >>> > >>> > Thanks for your reply! >>> > >>> > Regards, >>> > huyao >>> > _______________________________________________ >>> > ndnSIM mailing list >>> > ndnSIM at lists.cs.ucla.edu >>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Apr 19 12:12:34 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 19 Apr 2013 12:12:34 -0700 Subject: [ndnSIM] car2car example In-Reply-To: <201304191736269759522@gmail.com> References: , <201304191736269759522@gmail.com> Message-ID: <06253EA0-123F-47FE-A6D0-C476271ABFB9@ucla.edu> The ./run.py command without any options will just attempt to build graph based on data obtained from previous simulations. To actually run simulations and then build graph, just add -s option, like this ./run.py -s figure-3-data-propagation-vs-time --- Alex On Apr 19, 2013, at 2:36 AM, "cheewii126 at gmail" wrote: > Hi Alex, > > After sloving the previous problems, I encounter a new error as follows: > root at ubuntu:/home/sally/ndnSIM/ndnSIM-nom-rapid-car2car# ./run.py figure-3-data-propagation-vs-time > Building graphs for the following scenarios: figure-3-data-propagation-vs-time > Error in bzfile(input, "r") : cannot open the connection > Calls: read.table -> bzfile > In addition: Warning message: > In bzfile(input, "r") : > cannot open bzip2-ed file 'results/figure-3-data-propagation-vs-time/car-relay-jump-distance.txt.bz2', probable reason 'No such file or directory' > Execution halted > root at ubuntu:/home/sally/ndnSIM/ndnSIM-nom-rapid-car2car# > > It seems that the program can not built the bz2 files. Is there any R-related source-bag I did not install? > > Best regards~ > > cheewii126 at gmail > > From: Alex Afanasyev > Date: 2013-04-18 09:37 > To: Milad Mahdian > CC: ndnsim > Subject: Re: [ndnSIM] car2car example > Hi Milad, > > I pushed a small update of ndnSIM-nom-rapid-car2car repository. I didn't change any code, just updated README instructions and fixed the directory structure: the scenarios and scripts assume that there is results/ and graphs/pdfs/ folders exist, but they were missing from the clone. > > I also checked on my ubuntu installation and ./run.py -s figure-5-retx-count succeeded and produced the graph. > > --- > Alex > > > On Apr 17, 2013, at 5:43 PM, Milad Mahdian wrote: > >> Alex, >> >> After running the commands, it starts building the graph and then I get this error: >> ... >> ./build/car-relay --run=8 --distance=170 >> ./build/car-relay --run=9 --distance=170 >> ./build/car-relay --run=10 --distance=170 >> Traceback (most recent call last): >> File "./run.py", line 139, in >> fig5.run () >> File "./run.py", line 74, in run >> self.postprocess () >> File "./run.py", line 107, in postprocess >> f_out = open ("%s-%s.txt" % (prefix_out, subtype), "w") >> IOError: [Errno 2] No such file or directory: 'results/figure-5-retx-count/car-relay-jump-distance.txt' >> >> I have installed R and ggplot2 previously. >> >> Regards, >> Milad >> >> On Wed, Apr 17, 2013 at 8:04 PM, Alex Afanasyev wrote: >> Hi Milad, >> >> Just run the following command, which will install the missing python library >> >> sudo easy_install workerpool >> >> If it complains that easy_install is not found, then just install it using: >> >> sudo apt-get install python-setuptools >> >> --- >> Alex >> >> On Apr 17, 2013, at 4:59 PM, Milad Mahdian wrote: >> >>> Hi Alex, >>> >>> I am trying to run the car2car example. After following the instructions on :http://ndnsim.net/getting-started.html#simulating-using-ndnsim, building the scenario, and running it successfully, I get : >>> >>> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf --run car-relay >>> Waf: Entering directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' >>> Waf: Leaving directory `/home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build' >>> 'build' finished successfully (0.017s) >>> >>> However, when I want it to show the results in a figure I get this error >>> >>> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py -s figure-4-data-propagation-vs-distance >>> Traceback (most recent call last): >>> File "./run.py", line 8, in >>> import workerpool >>> ImportError: No module named workerpool >>> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./run.py figure-5-retx-count >>> Traceback (most recent call last): >>> File "./run.py", line 8, in >>> import workerpool >>> ImportError: No module named workerpool >>> >>> And this is the waf configuration: >>> milad at ubuntu:~/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car$ ./waf configure >>> Setting top to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car >>> Setting out to : /home/milad/repos/ns-3-allinone/ns-3.16/ndnSIM/ns-3/ndnSIM/car/build >>> Checking for 'g++' (c++ compiler) : /usr/bin/g++ >>> Checking boost includes : 1_49 >>> Checking boost libs : ok >>> Checking for boost linkage : ok >>> Checking for program pkg-config : /usr/bin/pkg-config >>> Checking for pkg-config version >= '0.0.0' : yes >>> Checking for ns3-ndnSIM : yes >>> Checking for ns3-core : yes >>> Checking for ns3-network : yes >>> Checking for ns3-internet : yes >>> Checking for ns3-point-to-point : yes >>> Checking for ns3-topology-read : yes >>> Checking for ns3-applications : yes >>> Checking for ns3-mobility : yes >>> Checking for ns3-wifi : yes >>> Checking for ns3-visualizer : yes >>> 'configure' finished successfully (0.300s) >>> >>> can you please help me solve this problem? >>> >>> >>> Regards, >>> Milad >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Apr 19 12:49:47 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 19 Apr 2013 12:49:47 -0700 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> Message-ID: <335A1388-7EE5-43EC-8FA4-B4ABCF275555@ucla.edu> Hi huyao, I run the grid scenario in visualizer with displaying interface statistics and i got exactly 2000 for interface 0 and 0 for interface 1: Did you make any other modification to the scenario? I really wonder how can you get any traffic on interface 1 in this scenario, as there should not be anything at all... About L3RateTracer. The line "20 Node0 2 dev=local(2) InInterests" tells you rate/number of interests that were received by NDN stack from the application face. From the application point of view, these are outgoing interests, but from the NDN stack point of view (since L3 tracer presents NDN stack point of view), these are incoming. I still don't really understand why do you have traffic on both interfaces... I suppose this is something that your custom forwarding strategy is doing? Btw. If in your strategy you're not using "TrySendOutInterest" method of the base class, then to have proper L3 logging you need to call DidSendOutInterest after interest were successfully sent out. Right now I see inconsistencies in numbers reported by L3RateTracer: line "20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0" should be non-zero. --- Alex On Apr 19, 2013, at 8:16 AM, yao hu wrote: > Hi Alex, > > "Tx Packets" is from the "interface statistics" (right click the node from the ns3 visualizer) of the node0 which is the data requester in this grid scenario. Just now I tried it again by setting interest frequency as 100 (for 20 seconds), still the "Tx Packets" is 1805 (interface 0) and 22 (interface 1). The missing "Tx Packets" (around 200) are from the interest retransmission? I also used the L3RateTracer following your instruction (as follows). The "PacketRaw" column of > 20 Node0 2 dev=local(2) InInterests > refers the number of outgoing interest packets? Then what is the difference between this "2000" and that "1805"? > > Thanks very much for your time! > > Time Node FaceId FaceDescr Type Packets Kilobytes PacketRaw KilobytesRaw > 20 Node0 0 dev[0]=net(0,0-1) InInterests 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) DropInterests 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) InNacks 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) OutNacks 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) DropNacks 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) InData 71.72 74.0581 1793 1851.45 > 20 Node0 0 dev[0]=net(0,0-1) OutData 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) DropData 0.12 0.12375 3 3.09375 > 20 Node0 1 dev[0]=net(1,0-3) InInterests 0.04 0.00105469 1 0.0263672 > 20 Node0 1 dev[0]=net(1,0-3) OutInterests 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) DropInterests 0.04 0.00105469 1 0.0263672 > 20 Node0 1 dev[0]=net(1,0-3) InNacks 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) OutNacks 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) DropNacks 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) InData 0.84 0.865859 21 21.6465 > 20 Node0 1 dev[0]=net(1,0-3) OutData 0.04 0.0412891 1 1.03223 > 20 Node0 1 dev[0]=net(1,0-3) DropData 0.72 0.742109 18 18.5527 > 20 Node0 2 dev=local(2) InInterests 80 2.12891 2000 53.2227 > 20 Node0 2 dev=local(2) OutInterests 0 0 0 0 > 20 Node0 2 dev=local(2) DropInterests 0.2 0.00507813 5 0.126953 > 20 Node0 2 dev=local(2) InNacks 0 0 0 0 > 20 Node0 2 dev=local(2) OutNacks 0 0 0 0 > 20 Node0 2 dev=local(2) DropNacks 0 0 0 0 > 20 Node0 2 dev=local(2) InData 0 0 0 0 > 20 Node0 2 dev=local(2) OutData 71.72 74.0581 1793 1851.45 > 20 Node0 2 dev=local(2) DropData 0 0 0 0 > > > 2013/4/19 Alex Afanasyev > Hi huyao, > > Hmm. I just run ndn-grid scenario with frequency 10, 100, and 1000 and in all of the cases I see that the consumer send out exactly the theoretical amount of interests within 20 seconds (200, 2000, and 20000), though the same consumer has received different number of Data packets back due to buffer overflows (199, 1989, 2342). > > How exactly did you measure number of Interests and I'm not very sure what is "Tx Packets" you were referring to? I obtained my data using ndn::L3RateTracer. I put the following before Simulation::Run() in ndn-grid scenario (assuming the total simulation time is 20 seconds): > > boost::tuple< boost::shared_ptr, std::list > > > rateTracers = ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds (19.99999999)); > > (don't forget to include the header file: > #include > ) > > --- > Alex > > On Apr 18, 2013, at 7:07 AM, yao hu wrote: > >> Hi Alex, >> >> The scenario I tested in is just the 9-node grid topology. I think maybe it has something wrong with my modified algorithm, since it shows no problem with a certain interest frequency, while with larger interest frequency (generally speaking) , the missing interest packets become obvious. I will check it soon. Thanks for your reply about routingCost. I see. :) >> >> Regards, >> huyao >> >> >> >> 2013/4/18 Alex Afanasyev >> Can you send out scenario (or link to scenario), so I can try to debug the problem on my machine? >> >> routingCost is basically an aggregated cost for the specific path. If you're using globalRoutingController, it sums up all the specified metrics on the path. For example, if you have this topology >> >> node1 ------ node2 ------- node3 ------- node4 >> >> and all metrics for each link is 10, then routing cost on node1 to forward towards node4 using the only available face would be 30. >> >> If you are using "EnableDefaultRoute" in ndn::StackHelper, then this value doesn't really mean anything and suggests only that this "default" is the least preferred option to forward interests. >> >> --- >> Alex >> >> On Apr 17, 2013, at 8:36 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> I did not specify any randomization using Randomize parameter. I am not sure whether all the interests are consumed at the first attempt, but if that is a reason, the retransmitted Interest packets are not counted into "Tx Packets"? Besides, I am not sure about the meaning of routingCost column (2147483647) in FIB. Does it has something different from the 'metric' which affects the forwarding strategy to select the BestRoute? Could I specify it somewhere? >>> >>> Sorry for many questions. Thanks very much! >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/4/17 Alex Afanasyev >>> Hi huyao, >>> >>> Did you specify any randomization for inter-interest gap using Randomize parameter (uniform, exponential)? Though, by default there is no randomization. >>> >>> Btw. Do all your interest are getting satisfied from the first attempt? If not, the difference can come from the interest retransmission, since those that needs to be retransmitted are sharing the same "cbr" constraints as new interests. >>> >>> --- >>> Alex >>> >>> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >>> >>> > Hi Alex, >>> > >>> > Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) >>> > >>> > Thanks for your reply! >>> > >>> > Regards, >>> > huyao >>> > _______________________________________________ >>> > ndnSIM mailing list >>> > ndnSIM at lists.cs.ucla.edu >>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: stats.png Type: image/png Size: 36255 bytes Desc: not available URL: From alexander.afanasyev at ucla.edu Fri Apr 19 12:56:21 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 19 Apr 2013 12:56:21 -0700 Subject: [ndnSIM] question In-Reply-To: References: Message-ID: Oh. This is not a compilation error, so you don't need to include anything. You probably didn't completely handle your new packet format in ndn-header-helper.cc. The error telling you that there is an exception ndn::UnknownHeaderException, which is thrown by HeaderHelper::GetNdnHeaderType () method. And of course, you will have to properly handle your new packet format by ndn::L3Protocol and (if necessary) by ndn::AppFace. --- Alex On Apr 18, 2013, at 9:59 PM, ?? wrote: > the error code : > assert failed. cond="false", msg="Unknown NDN header. Should not happen", file=../src/ndnSIM/model/ndn-l3-protocol.cc, line=336 > terminate called after throwing an instance of 'ns3::ndn::UnknownHeaderException' > > i don't know including to which file? > > > > > > > 2013/4/19 Alex Afanasyev > Can you also post the actual error message? > > I have a small suspicion that including will solve the problem, but cannot be sure without a little bit more context. > > --- > Alex > > On Apr 18, 2013, at 6:58 PM, ?? wrote: > >> the following is my code : >> >> 1. //generate CA_Packet >> >> ndn::CAHeader caheader; >> NameComponents name=header->GetName(); >> caheader.SetName(&name); >> caheader.SetScope(0xFF); >> caheader.SetCA_TTL(0); >> caheader.SetNonce(0); >> caheader.SetNack(0); >> Ptrpacket = Create(); >> packet->AddHeader (caheader); >> NS_LOG_DEBUG ("Sending CA packet for"<
GetName()); >> >> 2.//send CA_PACKET >> >> Ptr ndn = this->GetObject (); >> for (uint32_t faceNum = 0; faceNum < ndn->GetNFaces (); faceNum++) >> { >> Ptr face = ndn->GetFace (faceNum); >> face->Send(packet); >> } >> >> >> when i use the following code to send packet ,the packet type can be resolved: >> >> BOOST_FOREACH(const fib::FaceMetric &metricFace,pitEntry->GetFibEntry ()->m_faces.get ()) >> { >> metricFace.m_face->Send(packet); >> } >> >> >> >> >> 2013/4/19 Alex Afanasyev >> I'm not quite sure what is the relation between ndn->GetNFaces() and new type of packet you created. Would it be possible if you post some code, so I can check what is going wrong? >> >> --- >> Alex >> >> On Apr 18, 2013, at 2:09 AM, ?? wrote: >> >>> hi?thank you for your answers . Since i define a new packet,so when i use 'ndn->GetNFaces ()' sending to all faces, when the node recevice the packet ,it cannot get the type of my new packet, i define the new packet in ndn-header-helper.cc ndn-header-helper.h , so what should i do ? >>> >>> >>> 2013/4/18 Alex Afanasyev >>> Is there a reason for not adding information about forwarding to the node's neighbor to the FIB? FIB suppose to be just a database for all available paths to where you can send Interests for specific (or all) prefixes, maintaining data plane performance characteristics for each face. >>> >>> If you really want to do that, it is still possible if you write a custom strategy (http://ndnsim.net/fw.html#writing-your-own-custom-strategy). You may also want to check this conversation http://www.lists.cs.ucla.edu/pipermail/ndnsim/2012-December/000030.html with an example how to send out interests to faces not listed in the FIB. >>> >>> --- >>> Alex >>> >>> On Apr 17, 2013, at 6:27 AM, ?? wrote: >>> >>>> hi,i want to know if the node's neighbor is not in FIB,but i want to send interest to all neighbor. what should i do ? >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Apr 20 05:09:31 2013 From: huyao0107 at gmail.com (yao hu) Date: Sat, 20 Apr 2013 21:09:31 +0900 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: <335A1388-7EE5-43EC-8FA4-B4ABCF275555@ucla.edu> References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> <335A1388-7EE5-43EC-8FA4-B4ABCF275555@ucla.edu> Message-ID: Hi Alex, Yes. In my scenario, the network configuration is the same as the example. I just applied my forwarding strategy into it making part of interests sent from face 0 and 1 simultaneously. So there is traffic on both interface 0 and 1. Thanks for your explanation about L3RateTracer. Just now I also found that the more I print logging information (including self-written logging information), the less "Tx Packets" in visualizer or "PacketRaw" of "OutInterests" in L3RateTracer is. As you said before, the missing Interests are from the Interest retransmission which is also deemed as new Interests in "Cbr". So is there a way to decrease the Interest retransmission (at best to 0) from the time viewpoint? Another question is about the value of "Packets" column in rate-trace.txt. Why its value is not an integer? It refers to the layer 1 (or layer 2) packets which is not a ndn packet? Thanks for your point-out for "DidSendOutInterest". I added m_outInterests() to my CustomStrategy::DidSendOutInterest. the OutInterests value works well. Regards, huyao 2013/4/20 Alex Afanasyev > Hi huyao, > > I run the grid scenario in visualizer with displaying interface statistics > and i got exactly 2000 for interface 0 and 0 for interface 1: > > > Did you make any other modification to the scenario? I really wonder how > can you get any traffic on interface 1 in this scenario, as there should > not be anything at all... > > About L3RateTracer. The line "20 Node0 2 dev=local(2) InInterests" tells > you rate/number of interests that were received by NDN stack from the > application face. From the application point of view, these are outgoing > interests, but from the NDN stack point of view (since L3 tracer presents > NDN stack point of view), these are incoming. I still don't really > understand why do you have traffic on both interfaces... I suppose this is > something that your custom forwarding strategy is doing? > > Btw. If in your strategy you're not using "TrySendOutInterest" method of > the base class, then to have proper L3 logging you need to > call DidSendOutInterest after interest were successfully sent out. Right > now I see inconsistencies in numbers reported by L3RateTracer: line "20 > Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0" should be non-zero. > > --- > Alex > > On Apr 19, 2013, at 8:16 AM, yao hu wrote: > > Hi Alex, > > "Tx Packets" is from the "interface statistics" (right click the node from > the ns3 visualizer) of the node0 which is the data requester in this grid > scenario. Just now I tried it again by setting interest frequency as 100 > (for 20 seconds), still the "Tx Packets" is 1805 (interface 0) and 22 > (interface 1). The missing "Tx Packets" (around 200) are from the interest > retransmission? I also used the L3RateTracer following your instruction (as > follows). The "PacketRaw" column of > 20 Node0 2 dev=local(2) InInterests > refers the number of outgoing interest packets? Then what is the > difference between this "2000" and that "1805"? > > Thanks very much for your time! > > Time Node FaceId FaceDescr Type Packets Kilobytes PacketRaw KilobytesRaw > 20 Node0 0 dev[0]=net(0,0-1) InInterests 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) DropInterests 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) InNacks 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) OutNacks 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) DropNacks 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) InData 71.72 74.0581 1793 1851.45 > 20 Node0 0 dev[0]=net(0,0-1) OutData 0 0 0 0 > 20 Node0 0 dev[0]=net(0,0-1) DropData 0.12 0.12375 3 3.09375 > 20 Node0 1 dev[0]=net(1,0-3) InInterests 0.04 0.00105469 1 0.0263672 > 20 Node0 1 dev[0]=net(1,0-3) OutInterests 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) DropInterests 0.04 0.00105469 1 0.0263672 > 20 Node0 1 dev[0]=net(1,0-3) InNacks 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) OutNacks 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) DropNacks 0 0 0 0 > 20 Node0 1 dev[0]=net(1,0-3) InData 0.84 0.865859 21 21.6465 > 20 Node0 1 dev[0]=net(1,0-3) OutData 0.04 0.0412891 1 1.03223 > 20 Node0 1 dev[0]=net(1,0-3) DropData 0.72 0.742109 18 18.5527 > 20 Node0 2 dev=local(2) InInterests 80 2.12891 2000 53.2227 > 20 Node0 2 dev=local(2) OutInterests 0 0 0 0 > 20 Node0 2 dev=local(2) DropInterests 0.2 0.00507813 5 0.126953 > 20 Node0 2 dev=local(2) InNacks 0 0 0 0 > 20 Node0 2 dev=local(2) OutNacks 0 0 0 0 > 20 Node0 2 dev=local(2) DropNacks 0 0 0 0 > 20 Node0 2 dev=local(2) InData 0 0 0 0 > 20 Node0 2 dev=local(2) OutData 71.72 74.0581 1793 1851.45 > 20 Node0 2 dev=local(2) DropData 0 0 0 0 > > > 2013/4/19 Alex Afanasyev > >> Hi huyao, >> >> Hmm. I just run ndn-grid scenario with frequency 10, 100, and 1000 and >> in all of the cases I see that the consumer send out exactly the >> theoretical amount of interests within 20 seconds (200, 2000, and 20000), >> though the same consumer has received different number of Data packets back >> due to buffer overflows (199, 1989, 2342). >> >> How exactly did you measure number of Interests and I'm not very sure >> what is "Tx Packets" you were referring to? I obtained my data >> using ndn::L3RateTracer. I put the following before Simulation::Run() in >> ndn-grid scenario (assuming the total simulation time is 20 seconds): >> >> boost::tuple< boost::shared_ptr, >> std::list > > >> rateTracers = ndn::L3RateTracer::InstallAll ("rate-trace.txt", >> Seconds (19.99999999)); >> >> (don't forget to include the header file: >> #include >> ) >> >> --- >> Alex >> >> On Apr 18, 2013, at 7:07 AM, yao hu wrote: >> >> Hi Alex, >> >> The scenario I tested in is just the 9-node grid topology. I think maybe >> it has something wrong with my modified algorithm, since it shows no >> problem with a certain interest frequency, while with larger interest >> frequency (generally speaking) , the missing interest packets become >> obvious. I will check it soon. Thanks for your reply about routingCost. I >> see. :) >> >> Regards, >> huyao >> >> >> >> 2013/4/18 Alex Afanasyev >> >>> Can you send out scenario (or link to scenario), so I can try to debug >>> the problem on my machine? >>> >>> routingCost is basically an aggregated cost for the specific path. If >>> you're using globalRoutingController, it sums up all the specified metrics >>> on the path. For example, if you have this topology >>> >>> node1 ------ node2 ------- node3 ------- node4 >>> >>> and all metrics for each link is 10, then routing cost on node1 to >>> forward towards node4 using the only available face would be 30. >>> >>> If you are using "EnableDefaultRoute" in ndn::StackHelper, then this >>> value doesn't really mean anything and suggests only that this "default" is >>> the least preferred option to forward interests. >>> >>> --- >>> Alex >>> >>> On Apr 17, 2013, at 8:36 AM, yao hu wrote: >>> >>> Hi Alex, >>> >>> I did not specify any randomization using Randomize parameter. I am not >>> sure whether all the interests are consumed at the first attempt, but if >>> that is a reason, the retransmitted Interest packets are not counted into >>> "Tx Packets"? Besides, I am not sure about the meaning of routingCost >>> column (2147483647) in FIB. Does it has something different from the >>> 'metric' which affects the forwarding strategy to select the BestRoute? >>> Could I specify it somewhere? >>> >>> Sorry for many questions. Thanks very much! >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/4/17 Alex Afanasyev >>> >>>> Hi huyao, >>>> >>>> Did you specify any randomization for inter-interest gap using >>>> Randomize parameter (uniform, exponential)? Though, by default there is no >>>> randomization. >>>> >>>> Btw. Do all your interest are getting satisfied from the first attempt? >>>> If not, the difference can come from the interest retransmission, since >>>> those that needs to be retransmitted are sharing the same "cbr" constraints >>>> as new interests. >>>> >>>> --- >>>> Alex >>>> >>>> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >>>> >>>> > Hi Alex, >>>> > >>>> > Just now, in order to verify my modification I used CustomerCbr to >>>> produce a certain number of Interest from a specific consumer, however, I >>>> found that there is a little difference between expectation and simulation >>>> result. For example, I set the Interest frequency as 10 (packets per >>>> second) for 20 seconds, the result is the number of sent packets is 200 >>>> which is the same as theoretic value. But if I set the Interest frequency >>>> as 100 for 20 seconds, the simulation result is the number of sent packets >>>> is 1805 which is less than the theoretic value 2000. What is the possible >>>> reason for this phenomenon? (No packets are sent from other faces) >>>> > >>>> > Thanks for your reply! >>>> > >>>> > Regards, >>>> > huyao >>>> > _______________________________________________ >>>> > ndnSIM mailing list >>>> > ndnSIM at lists.cs.ucla.edu >>>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: image/png Size: 36255 bytes Desc: not available URL: From huyao0107 at gmail.com Mon Apr 22 07:43:07 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 22 Apr 2013 23:43:07 +0900 Subject: [ndnSIM] How to simulate link failure at a specific run time? Message-ID: Hi Alex, Is it possible to simulate link failure at a specific run time? If It can be the following format if(Expression including Seconds(double)) { } -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Mon Apr 22 07:49:00 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 22 Apr 2013 23:49:00 +0900 Subject: [ndnSIM] How to simulate link failure at a specific run time? In-Reply-To: References: Message-ID: Hi Alex, (Sorry for my previous incomplete message..) Is it possible to simulate link failure at a specific run time? If It can be the following format if(Expression including Seconds(double)) { link failure; } Then, (1)How to write the expression meaning the specific run time (like at 10 seconds)? (2)To simulate link failure, can I set the attribute DataRate as 0? Thank you very much! Regards, huyao 2013/4/22 yao hu > Hi Alex, > > Is it possible to simulate link failure at a specific run time? > > If It can be the following format > if(Expression including Seconds(double)) > { > > } > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 22 10:29:09 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 22 Apr 2013 10:29:09 -0700 Subject: [ndnSIM] How to simulate link failure at a specific run time? In-Reply-To: References: Message-ID: <3BA6A653-8A9B-4388-A738-BAF5BB398014@ucla.edu> Hi huyao, You can always schedule an event (a function) at 10 seconds, where you can "fail" the link. I'm not sure about DataRate, since technically it is a "static" parameter. However, you can either set the link down on the nodes associated with the same channel, or change parameters of the error model. Something along these lines: void FailLink (Ptr nd) { Ptr error = CreateObject (); error->SetAttribute ("ErrorRate", DoubleValue (1.0)); nd->SetAttribute ("ReceiveErrorModel", PointerValue (error)); } ... Simulator::Schedule (Seconds (10.0), FailLink, device1); Simulator::Schedule (Seconds (10.0), FailLink, device2); --- Alex On Apr 22, 2013, at 7:49 AM, yao hu wrote: > Hi Alex, > > (Sorry for my previous incomplete message..) > > Is it possible to simulate link failure at a specific run time? > > If It can be the following format > if(Expression including Seconds(double)) > { > link failure; > } > > Then, > (1)How to write the expression meaning the specific run time (like at 10 seconds)? > (2)To simulate link failure, can I set the attribute DataRate as 0? > > Thank you very much! > > Regards, > huyao > > > > > 2013/4/22 yao hu > Hi Alex, > > Is it possible to simulate link failure at a specific run time? > > If It can be the following format > if(Expression including Seconds(double)) > { > > } > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 22 11:21:01 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 22 Apr 2013 11:21:01 -0700 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> <335A1388-7EE5-43EC-8FA4-B4ABCF275555@ucla.edu> Message-ID: <4BD6A0BE-A710-4E3C-95C5-63164BC9DBEA@ucla.edu> Hi again, If in your scenario you don't need retransmission at all, then you can write a simple requester app, similar to this one http://ndnsim.net/applications.html#dumb-requester. There is no way (at least as of right now) to disable retransmissions. Packets column in rate tracer refers to estimated rate in terms of packets. If you need actual number of packets within last period, then there is PacketsRaw column for that. --- Alex On Apr 20, 2013, at 5:09 AM, yao hu wrote: > Hi Alex, > > Yes. In my scenario, the network configuration is the same as the example. I just applied my forwarding strategy into it making part of interests sent from face 0 and 1 simultaneously. So there is traffic on both interface 0 and 1. > > Thanks for your explanation about L3RateTracer. Just now I also found that the more I print logging information (including self-written logging information), the less "Tx Packets" in visualizer or "PacketRaw" of "OutInterests" in L3RateTracer is. As you said before, the missing Interests are from the Interest retransmission which is also deemed as new Interests in "Cbr". So is there a way to decrease the Interest retransmission (at best to 0) from the time viewpoint? > > Another question is about the value of "Packets" column in rate-trace.txt. Why its value is not an integer? It refers to the layer 1 (or layer 2) packets which is not a ndn packet? > > Thanks for your point-out for "DidSendOutInterest". I added m_outInterests() to my CustomStrategy::DidSendOutInterest. the OutInterests value works well. > > Regards, > huyao > > > > 2013/4/20 Alex Afanasyev > Hi huyao, > > I run the grid scenario in visualizer with displaying interface statistics and i got exactly 2000 for interface 0 and 0 for interface 1: > > > > Did you make any other modification to the scenario? I really wonder how can you get any traffic on interface 1 in this scenario, as there should not be anything at all... > > About L3RateTracer. The line "20 Node0 2 dev=local(2) InInterests" tells you rate/number of interests that were received by NDN stack from the application face. From the application point of view, these are outgoing interests, but from the NDN stack point of view (since L3 tracer presents NDN stack point of view), these are incoming. I still don't really understand why do you have traffic on both interfaces... I suppose this is something that your custom forwarding strategy is doing? > > Btw. If in your strategy you're not using "TrySendOutInterest" method of the base class, then to have proper L3 logging you need to call DidSendOutInterest after interest were successfully sent out. Right now I see inconsistencies in numbers reported by L3RateTracer: line "20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0" should be non-zero. > > --- > Alex > > On Apr 19, 2013, at 8:16 AM, yao hu wrote: > >> Hi Alex, >> >> "Tx Packets" is from the "interface statistics" (right click the node from the ns3 visualizer) of the node0 which is the data requester in this grid scenario. Just now I tried it again by setting interest frequency as 100 (for 20 seconds), still the "Tx Packets" is 1805 (interface 0) and 22 (interface 1). The missing "Tx Packets" (around 200) are from the interest retransmission? I also used the L3RateTracer following your instruction (as follows). The "PacketRaw" column of >> 20 Node0 2 dev=local(2) InInterests >> refers the number of outgoing interest packets? Then what is the difference between this "2000" and that "1805"? >> >> Thanks very much for your time! >> >> Time Node FaceId FaceDescr Type Packets Kilobytes PacketRaw KilobytesRaw >> 20 Node0 0 dev[0]=net(0,0-1) InInterests 0 0 0 0 >> 20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0 >> 20 Node0 0 dev[0]=net(0,0-1) DropInterests 0 0 0 0 >> 20 Node0 0 dev[0]=net(0,0-1) InNacks 0 0 0 0 >> 20 Node0 0 dev[0]=net(0,0-1) OutNacks 0 0 0 0 >> 20 Node0 0 dev[0]=net(0,0-1) DropNacks 0 0 0 0 >> 20 Node0 0 dev[0]=net(0,0-1) InData 71.72 74.0581 1793 1851.45 >> 20 Node0 0 dev[0]=net(0,0-1) OutData 0 0 0 0 >> 20 Node0 0 dev[0]=net(0,0-1) DropData 0.12 0.12375 3 3.09375 >> 20 Node0 1 dev[0]=net(1,0-3) InInterests 0.04 0.00105469 1 0.0263672 >> 20 Node0 1 dev[0]=net(1,0-3) OutInterests 0 0 0 0 >> 20 Node0 1 dev[0]=net(1,0-3) DropInterests 0.04 0.00105469 1 0.0263672 >> 20 Node0 1 dev[0]=net(1,0-3) InNacks 0 0 0 0 >> 20 Node0 1 dev[0]=net(1,0-3) OutNacks 0 0 0 0 >> 20 Node0 1 dev[0]=net(1,0-3) DropNacks 0 0 0 0 >> 20 Node0 1 dev[0]=net(1,0-3) InData 0.84 0.865859 21 21.6465 >> 20 Node0 1 dev[0]=net(1,0-3) OutData 0.04 0.0412891 1 1.03223 >> 20 Node0 1 dev[0]=net(1,0-3) DropData 0.72 0.742109 18 18.5527 >> 20 Node0 2 dev=local(2) InInterests 80 2.12891 2000 53.2227 >> 20 Node0 2 dev=local(2) OutInterests 0 0 0 0 >> 20 Node0 2 dev=local(2) DropInterests 0.2 0.00507813 5 0.126953 >> 20 Node0 2 dev=local(2) InNacks 0 0 0 0 >> 20 Node0 2 dev=local(2) OutNacks 0 0 0 0 >> 20 Node0 2 dev=local(2) DropNacks 0 0 0 0 >> 20 Node0 2 dev=local(2) InData 0 0 0 0 >> 20 Node0 2 dev=local(2) OutData 71.72 74.0581 1793 1851.45 >> 20 Node0 2 dev=local(2) DropData 0 0 0 0 >> >> >> 2013/4/19 Alex Afanasyev >> Hi huyao, >> >> Hmm. I just run ndn-grid scenario with frequency 10, 100, and 1000 and in all of the cases I see that the consumer send out exactly the theoretical amount of interests within 20 seconds (200, 2000, and 20000), though the same consumer has received different number of Data packets back due to buffer overflows (199, 1989, 2342). >> >> How exactly did you measure number of Interests and I'm not very sure what is "Tx Packets" you were referring to? I obtained my data using ndn::L3RateTracer. I put the following before Simulation::Run() in ndn-grid scenario (assuming the total simulation time is 20 seconds): >> >> boost::tuple< boost::shared_ptr, std::list > > >> rateTracers = ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds (19.99999999)); >> >> (don't forget to include the header file: >> #include >> ) >> >> --- >> Alex >> >> On Apr 18, 2013, at 7:07 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> The scenario I tested in is just the 9-node grid topology. I think maybe it has something wrong with my modified algorithm, since it shows no problem with a certain interest frequency, while with larger interest frequency (generally speaking) , the missing interest packets become obvious. I will check it soon. Thanks for your reply about routingCost. I see. :) >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/4/18 Alex Afanasyev >>> Can you send out scenario (or link to scenario), so I can try to debug the problem on my machine? >>> >>> routingCost is basically an aggregated cost for the specific path. If you're using globalRoutingController, it sums up all the specified metrics on the path. For example, if you have this topology >>> >>> node1 ------ node2 ------- node3 ------- node4 >>> >>> and all metrics for each link is 10, then routing cost on node1 to forward towards node4 using the only available face would be 30. >>> >>> If you are using "EnableDefaultRoute" in ndn::StackHelper, then this value doesn't really mean anything and suggests only that this "default" is the least preferred option to forward interests. >>> >>> --- >>> Alex >>> >>> On Apr 17, 2013, at 8:36 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> I did not specify any randomization using Randomize parameter. I am not sure whether all the interests are consumed at the first attempt, but if that is a reason, the retransmitted Interest packets are not counted into "Tx Packets"? Besides, I am not sure about the meaning of routingCost column (2147483647) in FIB. Does it has something different from the 'metric' which affects the forwarding strategy to select the BestRoute? Could I specify it somewhere? >>>> >>>> Sorry for many questions. Thanks very much! >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> >>>> 2013/4/17 Alex Afanasyev >>>> Hi huyao, >>>> >>>> Did you specify any randomization for inter-interest gap using Randomize parameter (uniform, exponential)? Though, by default there is no randomization. >>>> >>>> Btw. Do all your interest are getting satisfied from the first attempt? If not, the difference can come from the interest retransmission, since those that needs to be retransmitted are sharing the same "cbr" constraints as new interests. >>>> >>>> --- >>>> Alex >>>> >>>> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >>>> >>>> > Hi Alex, >>>> > >>>> > Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) >>>> > >>>> > Thanks for your reply! >>>> > >>>> > Regards, >>>> > huyao >>>> > _______________________________________________ >>>> > ndnSIM mailing list >>>> > ndnSIM at lists.cs.ucla.edu >>>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Mon Apr 22 16:57:29 2013 From: huyao0107 at gmail.com (Smallcat) Date: Tue, 23 Apr 2013 08:57:29 +0900 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: <4BD6A0BE-A710-4E3C-95C5-63164BC9DBEA@ucla.edu> References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> <335A1388-7EE5-43EC-8FA4-B4ABCF275555@ucla.edu> <4BD6A0BE-A710-4E3C-95C5-63164BC9DBEA@ucla.edu> Message-ID: <3E6288AB-CC71-4E84-9267-A60C4749F277@gmail.com> Hi Alex, Thanks for explanation. One more question about the timeout of an interest before retransmission? How much is the time? Could I modify it easily in ndnsim? Regards, huyao ? 2013-4-23?3:21?Alex Afanasyev ??? > Hi again, > > If in your scenario you don't need retransmission at all, then you can write a simple requester app, similar to this one http://ndnsim.net/applications.html#dumb-requester. There is no way (at least as of right now) to disable retransmissions. > > Packets column in rate tracer refers to estimated rate in terms of packets. If you need actual number of packets within last period, then there is PacketsRaw column for that. > > --- > Alex > > On Apr 20, 2013, at 5:09 AM, yao hu wrote: > >> Hi Alex, >> >> Yes. In my scenario, the network configuration is the same as the example. I just applied my forwarding strategy into it making part of interests sent from face 0 and 1 simultaneously. So there is traffic on both interface 0 and 1. >> >> Thanks for your explanation about L3RateTracer. Just now I also found that the more I print logging information (including self-written logging information), the less "Tx Packets" in visualizer or "PacketRaw" of "OutInterests" in L3RateTracer is. As you said before, the missing Interests are from the Interest retransmission which is also deemed as new Interests in "Cbr". So is there a way to decrease the Interest retransmission (at best to 0) from the time viewpoint? >> >> Another question is about the value of "Packets" column in rate-trace.txt. Why its value is not an integer? It refers to the layer 1 (or layer 2) packets which is not a ndn packet? >> >> Thanks for your point-out for "DidSendOutInterest". I added m_outInterests() to my CustomStrategy::DidSendOutInterest. the OutInterests value works well. >> >> Regards, >> huyao >> >> >> >> 2013/4/20 Alex Afanasyev >> Hi huyao, >> >> I run the grid scenario in visualizer with displaying interface statistics and i got exactly 2000 for interface 0 and 0 for interface 1: >> >> >> >> Did you make any other modification to the scenario? I really wonder how can you get any traffic on interface 1 in this scenario, as there should not be anything at all... >> >> About L3RateTracer. The line "20 Node0 2 dev=local(2) InInterests" tells you rate/number of interests that were received by NDN stack from the application face. From the application point of view, these are outgoing interests, but from the NDN stack point of view (since L3 tracer presents NDN stack point of view), these are incoming. I still don't really understand why do you have traffic on both interfaces... I suppose this is something that your custom forwarding strategy is doing? >> >> Btw. If in your strategy you're not using "TrySendOutInterest" method of the base class, then to have proper L3 logging you need to call DidSendOutInterest after interest were successfully sent out. Right now I see inconsistencies in numbers reported by L3RateTracer: line "20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0" should be non-zero. >> >> --- >> Alex >> >> On Apr 19, 2013, at 8:16 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> "Tx Packets" is from the "interface statistics" (right click the node from the ns3 visualizer) of the node0 which is the data requester in this grid scenario. Just now I tried it again by setting interest frequency as 100 (for 20 seconds), still the "Tx Packets" is 1805 (interface 0) and 22 (interface 1). The missing "Tx Packets" (around 200) are from the interest retransmission? I also used the L3RateTracer following your instruction (as follows). The "PacketRaw" column of >>> 20 Node0 2 dev=local(2) InInterests >>> refers the number of outgoing interest packets? Then what is the difference between this "2000" and that "1805"? >>> >>> Thanks very much for your time! >>> >>> Time Node FaceId FaceDescr Type Packets Kilobytes PacketRaw KilobytesRaw >>> 20 Node0 0 dev[0]=net(0,0-1) InInterests 0 0 0 0 >>> 20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0 >>> 20 Node0 0 dev[0]=net(0,0-1) DropInterests 0 0 0 0 >>> 20 Node0 0 dev[0]=net(0,0-1) InNacks 0 0 0 0 >>> 20 Node0 0 dev[0]=net(0,0-1) OutNacks 0 0 0 0 >>> 20 Node0 0 dev[0]=net(0,0-1) DropNacks 0 0 0 0 >>> 20 Node0 0 dev[0]=net(0,0-1) InData 71.72 74.0581 1793 1851.45 >>> 20 Node0 0 dev[0]=net(0,0-1) OutData 0 0 0 0 >>> 20 Node0 0 dev[0]=net(0,0-1) DropData 0.12 0.12375 3 3.09375 >>> 20 Node0 1 dev[0]=net(1,0-3) InInterests 0.04 0.00105469 1 0.0263672 >>> 20 Node0 1 dev[0]=net(1,0-3) OutInterests 0 0 0 0 >>> 20 Node0 1 dev[0]=net(1,0-3) DropInterests 0.04 0.00105469 1 0.0263672 >>> 20 Node0 1 dev[0]=net(1,0-3) InNacks 0 0 0 0 >>> 20 Node0 1 dev[0]=net(1,0-3) OutNacks 0 0 0 0 >>> 20 Node0 1 dev[0]=net(1,0-3) DropNacks 0 0 0 0 >>> 20 Node0 1 dev[0]=net(1,0-3) InData 0.84 0.865859 21 21.6465 >>> 20 Node0 1 dev[0]=net(1,0-3) OutData 0.04 0.0412891 1 1.03223 >>> 20 Node0 1 dev[0]=net(1,0-3) DropData 0.72 0.742109 18 18.5527 >>> 20 Node0 2 dev=local(2) InInterests 80 2.12891 2000 53.2227 >>> 20 Node0 2 dev=local(2) OutInterests 0 0 0 0 >>> 20 Node0 2 dev=local(2) DropInterests 0.2 0.00507813 5 0.126953 >>> 20 Node0 2 dev=local(2) InNacks 0 0 0 0 >>> 20 Node0 2 dev=local(2) OutNacks 0 0 0 0 >>> 20 Node0 2 dev=local(2) DropNacks 0 0 0 0 >>> 20 Node0 2 dev=local(2) InData 0 0 0 0 >>> 20 Node0 2 dev=local(2) OutData 71.72 74.0581 1793 1851.45 >>> 20 Node0 2 dev=local(2) DropData 0 0 0 0 >>> >>> >>> 2013/4/19 Alex Afanasyev >>> Hi huyao, >>> >>> Hmm. I just run ndn-grid scenario with frequency 10, 100, and 1000 and in all of the cases I see that the consumer send out exactly the theoretical amount of interests within 20 seconds (200, 2000, and 20000), though the same consumer has received different number of Data packets back due to buffer overflows (199, 1989, 2342). >>> >>> How exactly did you measure number of Interests and I'm not very sure what is "Tx Packets" you were referring to? I obtained my data using ndn::L3RateTracer. I put the following before Simulation::Run() in ndn-grid scenario (assuming the total simulation time is 20 seconds): >>> >>> boost::tuple< boost::shared_ptr, std::list > > >>> rateTracers = ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds (19.99999999)); >>> >>> (don't forget to include the header file: >>> #include >>> ) >>> >>> --- >>> Alex >>> >>> On Apr 18, 2013, at 7:07 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> The scenario I tested in is just the 9-node grid topology. I think maybe it has something wrong with my modified algorithm, since it shows no problem with a certain interest frequency, while with larger interest frequency (generally speaking) , the missing interest packets become obvious. I will check it soon. Thanks for your reply about routingCost. I see. :) >>>> >>>> Regards, >>>> huyao >>>> >>>> >>>> >>>> 2013/4/18 Alex Afanasyev >>>> Can you send out scenario (or link to scenario), so I can try to debug the problem on my machine? >>>> >>>> routingCost is basically an aggregated cost for the specific path. If you're using globalRoutingController, it sums up all the specified metrics on the path. For example, if you have this topology >>>> >>>> node1 ------ node2 ------- node3 ------- node4 >>>> >>>> and all metrics for each link is 10, then routing cost on node1 to forward towards node4 using the only available face would be 30. >>>> >>>> If you are using "EnableDefaultRoute" in ndn::StackHelper, then this value doesn't really mean anything and suggests only that this "default" is the least preferred option to forward interests. >>>> >>>> --- >>>> Alex >>>> >>>> On Apr 17, 2013, at 8:36 AM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> I did not specify any randomization using Randomize parameter. I am not sure whether all the interests are consumed at the first attempt, but if that is a reason, the retransmitted Interest packets are not counted into "Tx Packets"? Besides, I am not sure about the meaning of routingCost column (2147483647) in FIB. Does it has something different from the 'metric' which affects the forwarding strategy to select the BestRoute? Could I specify it somewhere? >>>>> >>>>> Sorry for many questions. Thanks very much! >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> >>>>> >>>>> 2013/4/17 Alex Afanasyev >>>>> Hi huyao, >>>>> >>>>> Did you specify any randomization for inter-interest gap using Randomize parameter (uniform, exponential)? Though, by default there is no randomization. >>>>> >>>>> Btw. Do all your interest are getting satisfied from the first attempt? If not, the difference can come from the interest retransmission, since those that needs to be retransmitted are sharing the same "cbr" constraints as new interests. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >>>>> >>>>> > Hi Alex, >>>>> > >>>>> > Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) >>>>> > >>>>> > Thanks for your reply! >>>>> > >>>>> > Regards, >>>>> > huyao >>>>> > _______________________________________________ >>>>> > ndnSIM mailing list >>>>> > ndnSIM at lists.cs.ucla.edu >>>>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>>> >>>>> _______________________________________________ >>>>> ndnSIM mailing list >>>>> ndnSIM at lists.cs.ucla.edu >>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>> >>>> >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 22 17:04:32 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 22 Apr 2013 17:04:32 -0700 Subject: [ndnSIM] Inconsistent number of sent packets In-Reply-To: <3E6288AB-CC71-4E84-9267-A60C4749F277@gmail.com> References: <49C31411-B709-469E-9B51-B6CC5ED05C3C@ucla.edu> <2B4E5CC3-BA60-44FD-A7EA-4D5D510D844C@ucla.edu> <335A1388-7EE5-43EC-8FA4-B4ABCF275555@ucla.edu> <4BD6A0BE-A710-4E3C-95C5-63164BC9DBEA@ucla.edu> <3E6288AB-CC71-4E84-9267-A60C4749F277@gmail.com> Message-ID: Hi huyao, The retransmission timeout is automatically calculated based on the observed RTT samples similar, but not exactly, like TCP is doing. So, there is no direct control for that. If you want a quick and dirty solution to disable retransmissions, you can comment out lines 310-313 in ndn-consumer.cc (https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer.cc#L310). This way, timeouts would happen, but no action will be triggered. --- Alex On Apr 22, 2013, at 4:57 PM, Smallcat wrote: > Hi Alex, > > Thanks for explanation. One more question about the timeout of an interest before retransmission? How much is the time? Could I modify it easily in ndnsim? > > Regards, > huyao > > > > ? 2013-4-23?3:21?Alex Afanasyev ??? > >> Hi again, >> >> If in your scenario you don't need retransmission at all, then you can write a simple requester app, similar to this one http://ndnsim.net/applications.html#dumb-requester. There is no way (at least as of right now) to disable retransmissions. >> >> Packets column in rate tracer refers to estimated rate in terms of packets. If you need actual number of packets within last period, then there is PacketsRaw column for that. >> >> --- >> Alex >> >> On Apr 20, 2013, at 5:09 AM, yao hu wrote: >> >>> Hi Alex, >>> >>> Yes. In my scenario, the network configuration is the same as the example. I just applied my forwarding strategy into it making part of interests sent from face 0 and 1 simultaneously. So there is traffic on both interface 0 and 1. >>> >>> Thanks for your explanation about L3RateTracer. Just now I also found that the more I print logging information (including self-written logging information), the less "Tx Packets" in visualizer or "PacketRaw" of "OutInterests" in L3RateTracer is. As you said before, the missing Interests are from the Interest retransmission which is also deemed as new Interests in "Cbr". So is there a way to decrease the Interest retransmission (at best to 0) from the time viewpoint? >>> >>> Another question is about the value of "Packets" column in rate-trace.txt. Why its value is not an integer? It refers to the layer 1 (or layer 2) packets which is not a ndn packet? >>> >>> Thanks for your point-out for "DidSendOutInterest". I added m_outInterests() to my CustomStrategy::DidSendOutInterest. the OutInterests value works well. >>> >>> Regards, >>> huyao >>> >>> >>> >>> 2013/4/20 Alex Afanasyev >>> Hi huyao, >>> >>> I run the grid scenario in visualizer with displaying interface statistics and i got exactly 2000 for interface 0 and 0 for interface 1: >>> >>> >>> >>> Did you make any other modification to the scenario? I really wonder how can you get any traffic on interface 1 in this scenario, as there should not be anything at all... >>> >>> About L3RateTracer. The line "20 Node0 2 dev=local(2) InInterests" tells you rate/number of interests that were received by NDN stack from the application face. From the application point of view, these are outgoing interests, but from the NDN stack point of view (since L3 tracer presents NDN stack point of view), these are incoming. I still don't really understand why do you have traffic on both interfaces... I suppose this is something that your custom forwarding strategy is doing? >>> >>> Btw. If in your strategy you're not using "TrySendOutInterest" method of the base class, then to have proper L3 logging you need to call DidSendOutInterest after interest were successfully sent out. Right now I see inconsistencies in numbers reported by L3RateTracer: line "20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0" should be non-zero. >>> >>> --- >>> Alex >>> >>> On Apr 19, 2013, at 8:16 AM, yao hu wrote: >>> >>>> Hi Alex, >>>> >>>> "Tx Packets" is from the "interface statistics" (right click the node from the ns3 visualizer) of the node0 which is the data requester in this grid scenario. Just now I tried it again by setting interest frequency as 100 (for 20 seconds), still the "Tx Packets" is 1805 (interface 0) and 22 (interface 1). The missing "Tx Packets" (around 200) are from the interest retransmission? I also used the L3RateTracer following your instruction (as follows). The "PacketRaw" column of >>>> 20 Node0 2 dev=local(2) InInterests >>>> refers the number of outgoing interest packets? Then what is the difference between this "2000" and that "1805"? >>>> >>>> Thanks very much for your time! >>>> >>>> Time Node FaceId FaceDescr Type Packets Kilobytes PacketRaw KilobytesRaw >>>> 20 Node0 0 dev[0]=net(0,0-1) InInterests 0 0 0 0 >>>> 20 Node0 0 dev[0]=net(0,0-1) OutInterests 0 0 0 0 >>>> 20 Node0 0 dev[0]=net(0,0-1) DropInterests 0 0 0 0 >>>> 20 Node0 0 dev[0]=net(0,0-1) InNacks 0 0 0 0 >>>> 20 Node0 0 dev[0]=net(0,0-1) OutNacks 0 0 0 0 >>>> 20 Node0 0 dev[0]=net(0,0-1) DropNacks 0 0 0 0 >>>> 20 Node0 0 dev[0]=net(0,0-1) InData 71.72 74.0581 1793 1851.45 >>>> 20 Node0 0 dev[0]=net(0,0-1) OutData 0 0 0 0 >>>> 20 Node0 0 dev[0]=net(0,0-1) DropData 0.12 0.12375 3 3.09375 >>>> 20 Node0 1 dev[0]=net(1,0-3) InInterests 0.04 0.00105469 1 0.0263672 >>>> 20 Node0 1 dev[0]=net(1,0-3) OutInterests 0 0 0 0 >>>> 20 Node0 1 dev[0]=net(1,0-3) DropInterests 0.04 0.00105469 1 0.0263672 >>>> 20 Node0 1 dev[0]=net(1,0-3) InNacks 0 0 0 0 >>>> 20 Node0 1 dev[0]=net(1,0-3) OutNacks 0 0 0 0 >>>> 20 Node0 1 dev[0]=net(1,0-3) DropNacks 0 0 0 0 >>>> 20 Node0 1 dev[0]=net(1,0-3) InData 0.84 0.865859 21 21.6465 >>>> 20 Node0 1 dev[0]=net(1,0-3) OutData 0.04 0.0412891 1 1.03223 >>>> 20 Node0 1 dev[0]=net(1,0-3) DropData 0.72 0.742109 18 18.5527 >>>> 20 Node0 2 dev=local(2) InInterests 80 2.12891 2000 53.2227 >>>> 20 Node0 2 dev=local(2) OutInterests 0 0 0 0 >>>> 20 Node0 2 dev=local(2) DropInterests 0.2 0.00507813 5 0.126953 >>>> 20 Node0 2 dev=local(2) InNacks 0 0 0 0 >>>> 20 Node0 2 dev=local(2) OutNacks 0 0 0 0 >>>> 20 Node0 2 dev=local(2) DropNacks 0 0 0 0 >>>> 20 Node0 2 dev=local(2) InData 0 0 0 0 >>>> 20 Node0 2 dev=local(2) OutData 71.72 74.0581 1793 1851.45 >>>> 20 Node0 2 dev=local(2) DropData 0 0 0 0 >>>> >>>> >>>> 2013/4/19 Alex Afanasyev >>>> Hi huyao, >>>> >>>> Hmm. I just run ndn-grid scenario with frequency 10, 100, and 1000 and in all of the cases I see that the consumer send out exactly the theoretical amount of interests within 20 seconds (200, 2000, and 20000), though the same consumer has received different number of Data packets back due to buffer overflows (199, 1989, 2342). >>>> >>>> How exactly did you measure number of Interests and I'm not very sure what is "Tx Packets" you were referring to? I obtained my data using ndn::L3RateTracer. I put the following before Simulation::Run() in ndn-grid scenario (assuming the total simulation time is 20 seconds): >>>> >>>> boost::tuple< boost::shared_ptr, std::list > > >>>> rateTracers = ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds (19.99999999)); >>>> >>>> (don't forget to include the header file: >>>> #include >>>> ) >>>> >>>> --- >>>> Alex >>>> >>>> On Apr 18, 2013, at 7:07 AM, yao hu wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> The scenario I tested in is just the 9-node grid topology. I think maybe it has something wrong with my modified algorithm, since it shows no problem with a certain interest frequency, while with larger interest frequency (generally speaking) , the missing interest packets become obvious. I will check it soon. Thanks for your reply about routingCost. I see. :) >>>>> >>>>> Regards, >>>>> huyao >>>>> >>>>> >>>>> >>>>> 2013/4/18 Alex Afanasyev >>>>> Can you send out scenario (or link to scenario), so I can try to debug the problem on my machine? >>>>> >>>>> routingCost is basically an aggregated cost for the specific path. If you're using globalRoutingController, it sums up all the specified metrics on the path. For example, if you have this topology >>>>> >>>>> node1 ------ node2 ------- node3 ------- node4 >>>>> >>>>> and all metrics for each link is 10, then routing cost on node1 to forward towards node4 using the only available face would be 30. >>>>> >>>>> If you are using "EnableDefaultRoute" in ndn::StackHelper, then this value doesn't really mean anything and suggests only that this "default" is the least preferred option to forward interests. >>>>> >>>>> --- >>>>> Alex >>>>> >>>>> On Apr 17, 2013, at 8:36 AM, yao hu wrote: >>>>> >>>>>> Hi Alex, >>>>>> >>>>>> I did not specify any randomization using Randomize parameter. I am not sure whether all the interests are consumed at the first attempt, but if that is a reason, the retransmitted Interest packets are not counted into "Tx Packets"? Besides, I am not sure about the meaning of routingCost column (2147483647) in FIB. Does it has something different from the 'metric' which affects the forwarding strategy to select the BestRoute? Could I specify it somewhere? >>>>>> >>>>>> Sorry for many questions. Thanks very much! >>>>>> >>>>>> Regards, >>>>>> huyao >>>>>> >>>>>> >>>>>> >>>>>> 2013/4/17 Alex Afanasyev >>>>>> Hi huyao, >>>>>> >>>>>> Did you specify any randomization for inter-interest gap using Randomize parameter (uniform, exponential)? Though, by default there is no randomization. >>>>>> >>>>>> Btw. Do all your interest are getting satisfied from the first attempt? If not, the difference can come from the interest retransmission, since those that needs to be retransmitted are sharing the same "cbr" constraints as new interests. >>>>>> >>>>>> --- >>>>>> Alex >>>>>> >>>>>> On Apr 16, 2013, at 8:32 AM, yao hu wrote: >>>>>> >>>>>> > Hi Alex, >>>>>> > >>>>>> > Just now, in order to verify my modification I used CustomerCbr to produce a certain number of Interest from a specific consumer, however, I found that there is a little difference between expectation and simulation result. For example, I set the Interest frequency as 10 (packets per second) for 20 seconds, the result is the number of sent packets is 200 which is the same as theoretic value. But if I set the Interest frequency as 100 for 20 seconds, the simulation result is the number of sent packets is 1805 which is less than the theoretic value 2000. What is the possible reason for this phenomenon? (No packets are sent from other faces) >>>>>> > >>>>>> > Thanks for your reply! >>>>>> > >>>>>> > Regards, >>>>>> > huyao >>>>>> > _______________________________________________ >>>>>> > ndnSIM mailing list >>>>>> > ndnSIM at lists.cs.ucla.edu >>>>>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> ndnSIM mailing list >>>>>> ndnSIM at lists.cs.ucla.edu >>>>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>>>> >>>>> >>>> >>>> >>>> _______________________________________________ >>>> ndnSIM mailing list >>>> ndnSIM at lists.cs.ucla.edu >>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Mon Apr 22 20:15:46 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Tue, 23 Apr 2013 11:15:46 +0800 Subject: [ndnSIM] ns3 Energy module Message-ID: Hi Alex Thanks, I just update my ndnSIM from repository and it work for me :) rgd -Xee ------------------ Original ------------------ From: "Alex Afanasyev"; Date: Apr 11, 2013 To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] ns3 Energy module Hi Xee, Can you give me a scenario which uses energy and ndnSIM model and gives you a compilation error, so I can debug the error? Thanks, Alex On Apr 6, 2013, at 7:22 PM, Xee <1839750381 at qq.com> wrote: Hi Alex I want to simulate the energy consumption of nodes using ndn protocol, specifically to the evaluate impact of cache. rgd -Xee ------------------ Original ------------------ From: "Alex Afanasyev"; Date: Apr 7, 2013 To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] ns3 Energy module Hi Xee, I'm not sure what do you mean that you're trying to use energy module with ndnSIM. As far as I understand from what I have checked, energy module in NS-3 just gives a framework to simulate energy consumption parameters (http://www.nsnam.org/docs/release/3.16/models/html/energy.html). I'm not entirely sure what exactly you want to do and what kind of errors are you getting... If you can gives an example of the scenario you're working on, and some error messages you're getting, we would be able to better help you. --- Alex On Apr 6, 2013, at 2:21 AM, "Xee" <1839750381 at qq.com> wrote: Hi Alex I am trying to use ns3 energy module with ndnSIM but receiving error with red color. So difficult to trace out errors. I am new to ndnSIM. I would appreciate if you help me with example source code using energy module with ndn. Thanks. rgd -Xee _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim _______________________________________________ ndnSIM mailing list ndnSIM at lists.cs.ucla.edu http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Mon Apr 22 20:51:03 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Tue, 23 Apr 2013 11:51:03 +0800 Subject: [ndnSIM] Energy Model ns3 Message-ID: Hi Alex I am able to use the energy consumption model for ndn nodes, but it working only with the consumer nodes. When I try with producer nodes it terminates with error while compiling. Please advise to how I remove the error and get the energy consumption of all nodes in the topology. rgd -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 22 20:53:08 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 22 Apr 2013 20:53:08 -0700 Subject: [ndnSIM] Energy Model ns3 In-Reply-To: References: Message-ID: Hi Xee, You should give me more input to understand the problem. Can you give me a simple scenario to debug? --- Alex On Apr 22, 2013, at 8:51 PM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > I am able to use the energy consumption model for ndn nodes, but it working only with the consumer nodes. When I try with producer nodes it terminates with error while compiling. Please advise to how I remove the error and get the energy consumption of all nodes in the topology. > > rgd > -Xee > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From 1839750381 at qq.com Mon Apr 22 22:13:44 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Tue, 23 Apr 2013 13:13:44 +0800 Subject: [ndnSIM] Energy Model ns3 Message-ID: Hi Alex I am using the code below: Ptr basicSourcePtr = DynamicCast (sources.Get (1)); basicSourcePtr->TraceConnectWithoutContext ("RemainingEnergy", MakeCallback (&RemainingEnergy)); // device energy model Ptr basicRadioModelPtr = basicSourcePtr->FindDeviceEnergyModels ("ns3::WifiRadioEnergyModel").Get (0); NS_ASSERT (basicRadioModelPtr != NULL); basicRadioModelPtr->TraceConnectWithoutContext ("TotalEnergyConsumption", MakeCallback (&TotalEnergy)); The node number 0 and 1 both are consumer nodes in simulation, but for producers it give error when I run simulation. rgd -Xee ------------------ Original ------------------ From: "Alex Afanasyev"; Date: Apr 23, 2013 To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] Energy Model ns3 Hi Xee, You should give me more input to understand the problem. Can you give me a simple scenario to debug? --- Alex On Apr 22, 2013, at 8:51 PM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > I am able to use the energy consumption model for ndn nodes, but it working only with the consumer nodes. When I try with producer nodes it terminates with error while compiling. Please advise to how I remove the error and get the energy consumption of all nodes in the topology. > > rgd > -Xee > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From 1839750381 at qq.com Tue Apr 23 00:33:29 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Tue, 23 Apr 2013 15:33:29 +0800 Subject: [ndnSIM] NDN FIB Message-ID: Hi Alex I need to print FIB entries, how can I get that. Is there any tracer to print fib entries ? rgd, -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From xhbreezehu at gmail.com Tue Apr 23 07:40:09 2013 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Tue, 23 Apr 2013 22:40:09 +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: Hi Xiaoke and Alex, I used ndn-zipf-mandelbrot.cc as the consumer in my simulations. It is cool and thank you guys. But I found that the app generates exactly the same Interest traffic for different runs of the simulations. Would you please tell me if there is a way that some randomness can be added in each run of the generated Interest traffic? Thanks, Xiaoyan -------------- next part -------------- An HTML attachment was scrubbed... URL: From shock.jiang at gmail.com Tue Apr 23 07:42:42 2013 From: shock.jiang at gmail.com (Xiaoke Jiang) Date: Tue, 23 Apr 2013 22:42:42 +0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: References: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> Message-ID: I think you have to set different seed for in order to generate different traffic pattern. set seed: http://www.nsnam.org/docs/manual/html/random-variables.html have a try! thanks My Regards, Xiaoke Jiang ????? Ph.D Candidate, Dept. of Computer Science and Technology, Tsinghua University, P. R. China On Apr 23, 2013, at 10:40 PM, Xiao yan Hu wrote: > Hi Xiaoke and Alex, > > I used ndn-zipf-mandelbrot.cc as the consumer in my simulations. > It is cool and thank you guys. > But I found that the app generates exactly the same Interest traffic for different runs of the simulations. > Would you please tell me if there is a way that some randomness can be added in each run of the generated Interest traffic? > > Thanks, > Xiaoyan > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From xhbreezehu at gmail.com Tue Apr 23 08:15:27 2013 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Tue, 23 Apr 2013 23:15:27 +0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: References: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> Message-ID: Thank you. And I just found that if I call srand() in the main, some randomness generates as well. But your reference should be better. On Tue, Apr 23, 2013 at 10:42 PM, Xiaoke Jiang wrote: > I think you have to set different seed for in order to generate different > traffic pattern. > > set seed: http://www.nsnam.org/docs/manual/html/random-variables.html > have a try! > > thanks > > My Regards, > ------------------------------ > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Apr 23, 2013, at 10:40 PM, Xiao yan Hu wrote: > > Hi Xiaoke and Alex, > > I used ndn-zipf-mandelbrot.cc as the consumer in my simulations. > It is cool and thank you guys. > But I found that the app generates exactly the same Interest traffic for > different runs of the simulations. > Would you please tell me if there is a way that some randomness can be > added in each run of the generated Interest traffic? > > Thanks, > Xiaoyan > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 23 10:53:47 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 23 Apr 2013 10:53:47 -0700 Subject: [ndnSIM] Energy Model ns3 In-Reply-To: References: Message-ID: Hi Xee, Thanks for the code, but it still doesn't give me the full picture of what can go wrong. What is the error you're getting? My best guess is that you're using ns-3/example/energy/energy-model-example.cc as a base for your experiments. I modified this example to use NDN stack instead of IPv4, and ConsumerCbr and Producer apps to generate traffic. You can get the code here: http://pastebin.com/4XrmTaXC. I run the modified example code and it didn't produce any errors and showed me some energy numbers in console. --- Alex On Apr 22, 2013, at 10:13 PM, Xee <1839750381 at qq.com> wrote: > Hi Alex > > I am using the code below: > > Ptr basicSourcePtr = DynamicCast (sources.Get (1)); > basicSourcePtr->TraceConnectWithoutContext ("RemainingEnergy", MakeCallback (&RemainingEnergy)); > // device energy model > Ptr basicRadioModelPtr = > basicSourcePtr->FindDeviceEnergyModels ("ns3::WifiRadioEnergyModel").Get (0); > NS_ASSERT (basicRadioModelPtr != NULL); > basicRadioModelPtr->TraceConnectWithoutContext ("TotalEnergyConsumption", MakeCallback (&TotalEnergy)); > > The node number 0 and 1 both are consumer nodes in simulation, but for producers it give error when I run simulation. > > rgd > -Xee > ------------------ Original ------------------ > From: "Alex Afanasyev"; > Date: Apr 23, 2013 > To: "Xee"<1839750381 at qq.com>; > Cc: "ndnsim"; > Subject: Re: [ndnSIM] Energy Model ns3 > > Hi Xee, > > You should give me more input to understand the problem. Can you give me a simple scenario to debug? > > --- > Alex > > On Apr 22, 2013, at 8:51 PM, "Xee" <1839750381 at qq.com> wrote: > > > Hi Alex > > > > I am able to use the energy consumption model for ndn nodes, but it working only with the consumer nodes. When I try with producer nodes it terminates with error while compiling. Please advise to how I remove the error and get the energy consumption of all nodes in the topology. > > > > rgd > > -Xee > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 23 11:40:20 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 23 Apr 2013 11:40:20 -0700 Subject: [ndnSIM] NDN FIB In-Reply-To: References: Message-ID: <7898F1E0-4A31-4060-B1E5-EBBC0C8C42E5@ucla.edu> Hi again, There is no tracer for FIB content, since it is (it was) not intended to be dynamically modified. If you need to print out FIB contents (e.g., periodically, using Simulator::Schedule), there are a couple of ways. If you don't care about the format, you can do the following: input: Ptr node; std::cout << *node->GetObject () << std::endl; If you need more precise control over what is printed out, it is also possible, but a little bit more complicated: Ptr fib = node->GetObject (); for (Ptr entry = fib->Begin (); entry != fib->End (); entry = fib->Next (entry)) { std::cout << entry->GetPrefix () << std::endl; ... } --- Alex On Apr 23, 2013, at 12:33 AM, Xee <1839750381 at qq.com> wrote: > Hi Alex > > I need to print FIB entries, how can I get that. Is there any tracer to print fib entries ? > > rgd, > -Xee > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Tue Apr 23 11:49:46 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 23 Apr 2013 11:49:46 -0700 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: References: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> Message-ID: <9E3AB49F-A37E-49BB-99EC-1A2FDB298FE3@ucla.edu> Hi! Using srand is not an ideal way to produce different random results in the simulator, as the simulator suppose to produce exactly the same output based on input parameters, one of which is RngRun. The link that Xiaoke posted explains everything about randomization in NS-3. What I'm usually doing is adding a standard command line argument to the simulation run, e.g., --RngRun=2 for the second run and --RngRun=3 for the third and so on (RngRun is not exactly a seed and you don't need to "randomize" it, as you normally suppose to do with srand). To use this standard argument, you need to have "CommandLine cmd; ... cmd.Parse (argc, argv);" present in your code. --- Alex On Apr 23, 2013, at 8:15 AM, Xiao yan Hu wrote: > Thank you. And I just found that if I call srand() in the main, some randomness generates as well. But your reference should be better. > > > On Tue, Apr 23, 2013 at 10:42 PM, Xiaoke Jiang wrote: > I think you have to set different seed for in order to generate different traffic pattern. > > set seed: http://www.nsnam.org/docs/manual/html/random-variables.html > have a try! > > thanks > > My Regards, > Xiaoke Jiang ????? > > Ph.D Candidate, > Dept. of Computer Science and Technology, > Tsinghua University, P. R. China > > On Apr 23, 2013, at 10:40 PM, Xiao yan Hu wrote: > >> Hi Xiaoke and Alex, >> >> I used ndn-zipf-mandelbrot.cc as the consumer in my simulations. >> It is cool and thank you guys. >> But I found that the app generates exactly the same Interest traffic for different runs of the simulations. >> Would you please tell me if there is a way that some randomness can be added in each run of the generated Interest traffic? >> >> Thanks, >> Xiaoyan >> >> >> > > > _______________________________________________ > 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 xhbreezehu at gmail.com Tue Apr 23 21:08:26 2013 From: xhbreezehu at gmail.com (Xiao yan Hu) Date: Wed, 24 Apr 2013 12:08:26 +0800 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: <9E3AB49F-A37E-49BB-99EC-1A2FDB298FE3@ucla.edu> References: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> <9E3AB49F-A37E-49BB-99EC-1A2FDB298FE3@ucla.edu> Message-ID: Hi, Thanks for your reply. And would you pls answer me another question. What if I used several ns3::RandomVariable at different places of my simulation, e.g., Besides in consumer, one in forwarding strategy. Would that specifying --RngRun in command line works for all them? Thanks, Xiaoyan On Wed, Apr 24, 2013 at 2:49 AM, Alex Afanasyev < alexander.afanasyev at ucla.edu> wrote: > Hi! > > Using srand is not an ideal way to produce different random results in the > simulator, as the simulator suppose to produce exactly the same output > based on input parameters, one of which is RngRun. > > The link that Xiaoke posted explains everything about randomization in > NS-3. > > What I'm usually doing is adding a standard command line argument to the > simulation run, e.g., --RngRun=2 for the second run and --RngRun=3 for the > third and so on (RngRun is not exactly a seed and you don't need to > "randomize" it, as you normally suppose to do with srand). To use this > standard argument, you need to have "CommandLine cmd; ... cmd.Parse > (argc, argv);" present in your code. > > --- > Alex > > > On Apr 23, 2013, at 8:15 AM, Xiao yan Hu wrote: > > Thank you. And I just found that if I call srand() in the main, some > randomness generates as well. But your reference should be better. > > > On Tue, Apr 23, 2013 at 10:42 PM, Xiaoke Jiang wrote: > >> I think you have to set different seed for in order to generate different >> traffic pattern. >> >> set seed: http://www.nsnam.org/docs/manual/html/random-variables.html >> have a try! >> >> thanks >> >> My Regards, >> ------------------------------ >> Xiaoke Jiang ????? >> >> Ph.D Candidate, >> Dept. of Computer Science and Technology, >> Tsinghua University, P. R. China >> >> On Apr 23, 2013, at 10:40 PM, Xiao yan Hu wrote: >> >> Hi Xiaoke and Alex, >> >> I used ndn-zipf-mandelbrot.cc as the consumer in my simulations. >> It is cool and thank you guys. >> But I found that the app generates exactly the same Interest traffic for >> different runs of the simulations. >> Would you please tell me if there is a way that some randomness can be >> added in each run of the generated Interest traffic? >> >> Thanks, >> Xiaoyan >> >> >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Tue Apr 23 21:14:50 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Tue, 23 Apr 2013 21:14:50 -0700 Subject: [ndnSIM] Zipf-Mandelbrot Patch for ndnSIM In-Reply-To: References: <07B8A695-95C7-4E0C-A315-A56C149BD22F@gmail.com> <9E3AB49F-A37E-49BB-99EC-1A2FDB298FE3@ucla.edu> Message-ID: Yes, as long as you used random variables provided by NS-3, like the ones you mentioned, all of them are properly initialized via RngRun (technically, they all use the same underlying random stream, which is actually initialized by RngRun). --- Alex On Apr 23, 2013, at 9:08 PM, Xiao yan Hu wrote: > Hi, > > Thanks for your reply. > And would you pls answer me another question. > What if I used several ns3::RandomVariable at different places of my simulation, e.g., Besides in consumer, one in forwarding strategy. Would that specifying --RngRun in command line works for all them? > > Thanks, > Xiaoyan > > > On Wed, Apr 24, 2013 at 2:49 AM, Alex Afanasyev wrote: >> Hi! >> >> Using srand is not an ideal way to produce different random results in the simulator, as the simulator suppose to produce exactly the same output based on input parameters, one of which is RngRun. >> >> The link that Xiaoke posted explains everything about randomization in NS-3. >> >> What I'm usually doing is adding a standard command line argument to the simulation run, e.g., --RngRun=2 for the second run and --RngRun=3 for the third and so on (RngRun is not exactly a seed and you don't need to "randomize" it, as you normally suppose to do with srand). To use this standard argument, you need to have "CommandLine cmd; ... cmd.Parse (argc, argv);" present in your code. >> >> --- >> Alex >> >> >> On Apr 23, 2013, at 8:15 AM, Xiao yan Hu wrote: >> >>> Thank you. And I just found that if I call srand() in the main, some randomness generates as well. But your reference should be better. >>> >>> >>> On Tue, Apr 23, 2013 at 10:42 PM, Xiaoke Jiang wrote: >>>> I think you have to set different seed for in order to generate different traffic pattern. >>>> >>>> set seed: http://www.nsnam.org/docs/manual/html/random-variables.html >>>> have a try! >>>> >>>> thanks >>>> >>>> My Regards, >>>> Xiaoke Jiang ????? >>>> >>>> Ph.D Candidate, >>>> Dept. of Computer Science and Technology, >>>> Tsinghua University, P. R. China >>>> >>>> On Apr 23, 2013, at 10:40 PM, Xiao yan Hu wrote: >>>> >>>>> Hi Xiaoke and Alex, >>>>> >>>>> I used ndn-zipf-mandelbrot.cc as the consumer in my simulations. >>>>> It is cool and thank you guys. >>>>> But I found that the app generates exactly the same Interest traffic for different runs of the simulations. >>>>> Would you please tell me if there is a way that some randomness can be added in each run of the generated Interest traffic? >>>>> >>>>> Thanks, >>>>> Xiaoyan >>>>> >>>>> >>>>> >>>> >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Wed Apr 24 08:17:49 2013 From: huyao0107 at gmail.com (yao hu) Date: Thu, 25 Apr 2013 00:17:49 +0900 Subject: [ndnSIM] behavior of consumer and provider Message-ID: Hi Alex, I have two uncertain issues about the behavior of consumer and provider for confirmation. (1) Is there any record like PIT for consumer or requester to memorize past Interest transmission? Possibly for its future retransmission. (2) Say in a tree topology. If the root as the provider has satisfied the incoming Interest to send back its according Data. Is it possible to again forward the Interest to other branches (except the branch for the incoming Interest)? I am asking this because in my forwarding strategy, I saw some traffic in other branches, however I just modified DoPropagateInterest, no other basic ndn functions. Your reply will be really appreciated. Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 24 10:26:35 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 24 Apr 2013 10:26:35 -0700 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: References: Message-ID: Hi! 1) Yes. There is something like PIT in consumer, but in much more simplistic format. In consumer it is just a container, containing outstanding sequence number and last retransmission time (m_seqTimeouts variable in apps/ndn-consumer.h). The code uses boost::multi_index container to have separate indices by sequence number (to efficiently remove) and retransmission time (for retransmission detection). 2) Let me show you my understanding of your question with slightly different topology (NetDeviceFace) (NetDeviceFace) +--------+ /x +--------------+ /x +---------------+ | client | ---------- | producerNode | --------------- | someOtherNode | +--------+ +--------------+ +---------------+ | /x (AppFace) | | +-------------+ | producerApp | +-------------+ Let's say we have three nodes, one is client, one producer, and one is producerNode. Prefix /x (under which client will be sending interests) is routed: - on client: the only NetDeviceFace (towards producerNode) - on producerNode: to AppFace (to producer app), to NetDeviceFace (towards someOtherNode) When producerNode receives an interests from the client, the strategy may send interest towards application (and this interest will be satisfied) and towards some other node. Among the existing strategies, only ns3::ndn::fw::Flooding is doing this, since it is very simple and dumb strategy. BestRoute and SmartFlooding forward interest only to a "green" face (if available), which implies that they will forward only to the application (ndn::Producer marks the application face "green"). --- Alex On Apr 24, 2013, at 8:17 AM, yao hu wrote: > Hi Alex, > > I have two uncertain issues about the behavior of consumer and provider for confirmation. > > (1) Is there any record like PIT for consumer or requester to memorize past Interest transmission? Possibly for its future retransmission. > > (2) Say in a tree topology. If the root as the provider has satisfied the incoming Interest to send back its according Data. Is it possible to again forward the Interest to other branches (except the branch for the incoming Interest)? I am asking this because in my forwarding strategy, I saw some traffic in other branches, however I just modified DoPropagateInterest, no other basic ndn functions. > > Your reply will be really appreciated. > > Regards, > huyao > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From alexander.afanasyev at ucla.edu Wed Apr 24 10:51:16 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 24 Apr 2013 10:51:16 -0700 Subject: [ndnSIM] =?utf-8?q?How_to_record__interests=EF=BC=9F?= In-Reply-To: <1b15e08b.2ac15.13e3c310e9d.Coremail.blindeafer@163.com> References: <1b15e08b.2ac15.13e3c310e9d.Coremail.blindeafer@163.com> Message-ID: <90B2A4E4-09A7-406D-B076-162E5C8EA17D@ucla.edu> Hi Shenglan, There are many ways you can implement such a table. For example, you can write something similar to ndn-pit-impl.h, which internally uses a special ndnSIM hash-based trie-like data structure to facilitate entry lookup process. I made a very basic example, based on ndn-pit-impl, but without any complex logic. To actually add/update entries to your custom table, you would need to write a custom forwarding strategy (or modify the existing one) in the same way PIT is accessed and modified. --- Alex On Apr 24, 2013, at 6:17 AM, ??? wrote: > Hi Al > In my scenario, every intermediate node itself maintains a table that record the incoming interests' name, the corresponding FaceId,the arrival time and the total access number of every interest.The table is updated when an interest accessed. How can I creat the table. > Could you give me some suggestions or a template? > > Best regards, > Shenglan > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: custom-interest-table.cc Type: application/octet-stream Size: 3829 bytes Desc: not available URL: -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Wed Apr 24 17:24:43 2013 From: huyao0107 at gmail.com (yao hu) Date: Thu, 25 Apr 2013 09:24:43 +0900 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: References: Message-ID: Hi Alex, Thanks very much for your explicit explanation. Then, for my understanding, it depends on me to decide whether the satisfied interest will be forwarded again towards other nodes (someOtherNode in your example) or not. If I send it to both AppFace and NetDeviceFace which share FaceId, it will do this. And also, from my simple observance from L3RateTracer, if one node connects to two other nodes, face 0 and face 1 is the NetDeviceFace, while face 2 will be the AppFace. Is my understanding right? Regards, huyao 2013/4/25 Alex Afanasyev > Hi! > > 1) Yes. There is something like PIT in consumer, but in much more > simplistic format. In consumer it is just a container, containing > outstanding sequence number and last retransmission time (m_seqTimeouts > variable in apps/ndn-consumer.h). The code uses boost::multi_index > container to have separate indices by sequence number (to efficiently > remove) and retransmission time (for retransmission detection). > > 2) Let me show you my understanding of your question with slightly > different topology > > (NetDeviceFace) (NetDeviceFace) > +--------+ /x +--------------+ /x +---------------+ > | client | ---------- | producerNode | --------------- | someOtherNode | > +--------+ +--------------+ +---------------+ > | /x (AppFace) > | > | > +-------------+ > | producerApp | > +-------------+ > > Let's say we have three nodes, one is client, one producer, and one is > producerNode. Prefix /x (under which client will be sending interests) is > routed: > - on client: the only NetDeviceFace (towards producerNode) > - on producerNode: to AppFace (to producer app), to NetDeviceFace > (towards someOtherNode) > > When producerNode receives an interests from the client, the strategy may > send interest towards application (and this interest will be satisfied) and > towards some other node. > > Among the existing strategies, only ns3::ndn::fw::Flooding is doing this, > since it is very simple and dumb strategy. BestRoute and SmartFlooding > forward interest only to a "green" face (if available), which implies that > they will forward only to the application (ndn::Producer marks the > application face "green"). > > --- > Alex > > On Apr 24, 2013, at 8:17 AM, yao hu wrote: > > > Hi Alex, > > > > I have two uncertain issues about the behavior of consumer and provider > for confirmation. > > > > (1) Is there any record like PIT for consumer or requester to memorize > past Interest transmission? Possibly for its future retransmission. > > > > (2) Say in a tree topology. If the root as the provider has satisfied > the incoming Interest to send back its according Data. Is it possible to > again forward the Interest to other branches (except the branch for the > incoming Interest)? I am asking this because in my forwarding strategy, I > saw some traffic in other branches, however I just modified > DoPropagateInterest, no other basic ndn functions. > > > > Your reply will be really appreciated. > > > > Regards, > > huyao > > > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Wed Apr 24 19:53:52 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Wed, 24 Apr 2013 19:53:52 -0700 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: References: Message-ID: <31FE5786-290D-46AA-852D-F18F9C28E4B4@ucla.edu> Hi huyao, What do you mean by "AppFace and NetDeviceFace share FaceId"? Each face on the node has its own unique id, doesn't matter, NetDeviceFace of AppFace... Your observation about the current situation with face IDs is exactly right: application faces have IDs that are numerically larger than any other NetDevice face id. However, this happened completely by "accident" and you should not really rely on it in the forwarding strategy. If you want to determine if a specific Ptr is actually an application face, a much safer way is to do a DynamicCast or (better, but I'm not sure yet how it can be implemented) mark application faces somehow in FIB entries: Ptr someFace = ...; if (DynamicCast (someFace)) { // someFace is application face } else { // someFace is some other type of face } --- Alex On Apr 24, 2013, at 5:24 PM, yao hu wrote: > Hi Alex, > > Thanks very much for your explicit explanation. > Then, for my understanding, it depends on me to decide whether the satisfied interest will be forwarded again towards other nodes (someOtherNode in your example) or not. If I send it to both AppFace and NetDeviceFace which share FaceId, it will do this. And also, from my simple observance from L3RateTracer, if one node connects to two other nodes, face 0 and face 1 is the NetDeviceFace, while face 2 will be the AppFace. Is my understanding right? > > Regards, > huyao > > > > 2013/4/25 Alex Afanasyev > Hi! > > 1) Yes. There is something like PIT in consumer, but in much more simplistic format. In consumer it is just a container, containing outstanding sequence number and last retransmission time (m_seqTimeouts variable in apps/ndn-consumer.h). The code uses boost::multi_index container to have separate indices by sequence number (to efficiently remove) and retransmission time (for retransmission detection). > > 2) Let me show you my understanding of your question with slightly different topology > > (NetDeviceFace) (NetDeviceFace) > +--------+ /x +--------------+ /x +---------------+ > | client | ---------- | producerNode | --------------- | someOtherNode | > +--------+ +--------------+ +---------------+ > | /x (AppFace) > | > | > +-------------+ > | producerApp | > +-------------+ > > Let's say we have three nodes, one is client, one producer, and one is producerNode. Prefix /x (under which client will be sending interests) is routed: > - on client: the only NetDeviceFace (towards producerNode) > - on producerNode: to AppFace (to producer app), to NetDeviceFace (towards someOtherNode) > > When producerNode receives an interests from the client, the strategy may send interest towards application (and this interest will be satisfied) and towards some other node. > > Among the existing strategies, only ns3::ndn::fw::Flooding is doing this, since it is very simple and dumb strategy. BestRoute and SmartFlooding forward interest only to a "green" face (if available), which implies that they will forward only to the application (ndn::Producer marks the application face "green"). > > --- > Alex > > On Apr 24, 2013, at 8:17 AM, yao hu wrote: > > > Hi Alex, > > > > I have two uncertain issues about the behavior of consumer and provider for confirmation. > > > > (1) Is there any record like PIT for consumer or requester to memorize past Interest transmission? Possibly for its future retransmission. > > > > (2) Say in a tree topology. If the root as the provider has satisfied the incoming Interest to send back its according Data. Is it possible to again forward the Interest to other branches (except the branch for the incoming Interest)? I am asking this because in my forwarding strategy, I saw some traffic in other branches, however I just modified DoPropagateInterest, no other basic ndn functions. > > > > Your reply will be really appreciated. > > > > Regards, > > huyao > > > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Thu Apr 25 09:13:50 2013 From: huyao0107 at gmail.com (yao hu) Date: Fri, 26 Apr 2013 01:13:50 +0900 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: <31FE5786-290D-46AA-852D-F18F9C28E4B4@ucla.edu> References: <31FE5786-290D-46AA-852D-F18F9C28E4B4@ucla.edu> Message-ID: Hi Alex, Thanks for your explanation. (1) Saying "AppFace and NetDeviceFace share FaceId", I meant that if I want to write my own forwarding strategy in CustomStrategy::DoPropagateInterest, should I consider AppFace as one usual FaceId like NetDeviceFace? Especially, for a producer node, do I need to intentionally control the incoming interest not to forward towards some other node and meanwhile make it towards AppFace to be satisfied? That seems a little strange though. (2) Just for a confirmation. Intermediate nodes satisfy interest directly through cache (if possible), not through AppFace? While for producer node, it satisfies interest through AppFace? Regards, huyao 2013/4/25 Alex Afanasyev > Hi huyao, > > What do you mean by "AppFace and NetDeviceFace share FaceId"? Each face > on the node has its own unique id, doesn't matter, NetDeviceFace of > AppFace... > > Your observation about the current situation with face IDs is exactly > right: application faces have IDs that are numerically larger than any > other NetDevice face id. However, this happened completely by "accident" > and you should not really rely on it in the forwarding strategy. If you > want to determine if a specific Ptr is actually an application face, > a much safer way is to do a DynamicCast or (better, but I'm not sure yet > how it can be implemented) mark application faces somehow in FIB entries: > > Ptr someFace = ...; > > if (DynamicCast (someFace)) > { > // someFace is application face > } > else > { > // someFace is some other type of face > } > > --- > Alex > > On Apr 24, 2013, at 5:24 PM, yao hu wrote: > > Hi Alex, > > Thanks very much for your explicit explanation. > Then, for my understanding, it depends on me to decide whether the > satisfied interest will be forwarded again towards other nodes (someOtherNode > in your example) or not. If I send it to both AppFace and NetDeviceFace > which share FaceId, it will do this. And also, from my simple observance > from L3RateTracer, if one node connects to two other nodes, face 0 and face > 1 is the NetDeviceFace, while face 2 will be the AppFace. Is my > understanding right? > > Regards, > huyao > > > > 2013/4/25 Alex Afanasyev > >> Hi! >> >> 1) Yes. There is something like PIT in consumer, but in much more >> simplistic format. In consumer it is just a container, containing >> outstanding sequence number and last retransmission time (m_seqTimeouts >> variable in apps/ndn-consumer.h). The code uses boost::multi_index >> container to have separate indices by sequence number (to efficiently >> remove) and retransmission time (for retransmission detection). >> >> 2) Let me show you my understanding of your question with slightly >> different topology >> >> (NetDeviceFace) (NetDeviceFace) >> +--------+ /x +--------------+ /x +---------------+ >> | client | ---------- | producerNode | --------------- | someOtherNode | >> +--------+ +--------------+ +---------------+ >> | /x (AppFace) >> | >> | >> +-------------+ >> | producerApp | >> +-------------+ >> >> Let's say we have three nodes, one is client, one producer, and one is >> producerNode. Prefix /x (under which client will be sending interests) is >> routed: >> - on client: the only NetDeviceFace (towards producerNode) >> - on producerNode: to AppFace (to producer app), to NetDeviceFace >> (towards someOtherNode) >> >> When producerNode receives an interests from the client, the strategy may >> send interest towards application (and this interest will be satisfied) and >> towards some other node. >> >> Among the existing strategies, only ns3::ndn::fw::Flooding is doing this, >> since it is very simple and dumb strategy. BestRoute and SmartFlooding >> forward interest only to a "green" face (if available), which implies that >> they will forward only to the application (ndn::Producer marks the >> application face "green"). >> >> --- >> Alex >> >> On Apr 24, 2013, at 8:17 AM, yao hu wrote: >> >> > Hi Alex, >> > >> > I have two uncertain issues about the behavior of consumer and provider >> for confirmation. >> > >> > (1) Is there any record like PIT for consumer or requester to memorize >> past Interest transmission? Possibly for its future retransmission. >> > >> > (2) Say in a tree topology. If the root as the provider has satisfied >> the incoming Interest to send back its according Data. Is it possible to >> again forward the Interest to other branches (except the branch for the >> incoming Interest)? I am asking this because in my forwarding strategy, I >> saw some traffic in other branches, however I just modified >> DoPropagateInterest, no other basic ndn functions. >> > >> > Your reply will be really appreciated. >> > >> > Regards, >> > huyao >> > >> > _______________________________________________ >> > ndnSIM mailing list >> > ndnSIM at lists.cs.ucla.edu >> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Thu Apr 25 10:50:56 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Thu, 25 Apr 2013 10:50:56 -0700 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: References: <31FE5786-290D-46AA-852D-F18F9C28E4B4@ucla.edu> Message-ID: Hi huyao, Got it. Yes, ID has exactly the same meaning for any face type, regardless of its type. ndn::L3Protocol knows only about Face abstraction and doesn't care (should it care?) what type of face it. In the forwarding strategy, you can try to distinguish and prioritize application faces, but it should not be the only option to forward an interest, since applications not always can satisfy all interest under specific prefix. And another yes, when some interest can be satisfied from the cache, this interest doesn't go beyond ndn::l3Protcol and forwarding strategy, never having any exchange involving application and application face. --- Alex On Apr 25, 2013, at 9:13 AM, yao hu wrote: > Hi Alex, > > Thanks for your explanation. > > (1) Saying "AppFace and NetDeviceFace share FaceId", I meant that if I want to write my own forwarding strategy in CustomStrategy::DoPropagateInterest, should I consider AppFace as one usual FaceId like NetDeviceFace? Especially, for a producer node, do I need to intentionally control the incoming interest not to forward towards some other node and meanwhile make it towards AppFace to be satisfied? That seems a little strange though. > > (2) Just for a confirmation. Intermediate nodes satisfy interest directly through cache (if possible), not through AppFace? While for producer node, it satisfies interest through AppFace? > > Regards, > huyao > > > > 2013/4/25 Alex Afanasyev > Hi huyao, > > What do you mean by "AppFace and NetDeviceFace share FaceId"? Each face on the node has its own unique id, doesn't matter, NetDeviceFace of AppFace... > > Your observation about the current situation with face IDs is exactly right: application faces have IDs that are numerically larger than any other NetDevice face id. However, this happened completely by "accident" and you should not really rely on it in the forwarding strategy. If you want to determine if a specific Ptr is actually an application face, a much safer way is to do a DynamicCast or (better, but I'm not sure yet how it can be implemented) mark application faces somehow in FIB entries: > > Ptr someFace = ...; > > if (DynamicCast (someFace)) > { > // someFace is application face > } > else > { > // someFace is some other type of face > } > > --- > Alex > > On Apr 24, 2013, at 5:24 PM, yao hu wrote: > >> Hi Alex, >> >> Thanks very much for your explicit explanation. >> Then, for my understanding, it depends on me to decide whether the satisfied interest will be forwarded again towards other nodes (someOtherNode in your example) or not. If I send it to both AppFace and NetDeviceFace which share FaceId, it will do this. And also, from my simple observance from L3RateTracer, if one node connects to two other nodes, face 0 and face 1 is the NetDeviceFace, while face 2 will be the AppFace. Is my understanding right? >> >> Regards, >> huyao >> >> >> >> 2013/4/25 Alex Afanasyev >> Hi! >> >> 1) Yes. There is something like PIT in consumer, but in much more simplistic format. In consumer it is just a container, containing outstanding sequence number and last retransmission time (m_seqTimeouts variable in apps/ndn-consumer.h). The code uses boost::multi_index container to have separate indices by sequence number (to efficiently remove) and retransmission time (for retransmission detection). >> >> 2) Let me show you my understanding of your question with slightly different topology >> >> (NetDeviceFace) (NetDeviceFace) >> +--------+ /x +--------------+ /x +---------------+ >> | client | ---------- | producerNode | --------------- | someOtherNode | >> +--------+ +--------------+ +---------------+ >> | /x (AppFace) >> | >> | >> +-------------+ >> | producerApp | >> +-------------+ >> >> Let's say we have three nodes, one is client, one producer, and one is producerNode. Prefix /x (under which client will be sending interests) is routed: >> - on client: the only NetDeviceFace (towards producerNode) >> - on producerNode: to AppFace (to producer app), to NetDeviceFace (towards someOtherNode) >> >> When producerNode receives an interests from the client, the strategy may send interest towards application (and this interest will be satisfied) and towards some other node. >> >> Among the existing strategies, only ns3::ndn::fw::Flooding is doing this, since it is very simple and dumb strategy. BestRoute and SmartFlooding forward interest only to a "green" face (if available), which implies that they will forward only to the application (ndn::Producer marks the application face "green"). >> >> --- >> Alex >> >> On Apr 24, 2013, at 8:17 AM, yao hu wrote: >> >> > Hi Alex, >> > >> > I have two uncertain issues about the behavior of consumer and provider for confirmation. >> > >> > (1) Is there any record like PIT for consumer or requester to memorize past Interest transmission? Possibly for its future retransmission. >> > >> > (2) Say in a tree topology. If the root as the provider has satisfied the incoming Interest to send back its according Data. Is it possible to again forward the Interest to other branches (except the branch for the incoming Interest)? I am asking this because in my forwarding strategy, I saw some traffic in other branches, however I just modified DoPropagateInterest, no other basic ndn functions. >> > >> > Your reply will be really appreciated. >> > >> > Regards, >> > huyao >> > >> > _______________________________________________ >> > ndnSIM mailing list >> > ndnSIM at lists.cs.ucla.edu >> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Thu Apr 25 20:31:41 2013 From: huyao0107 at gmail.com (yao hu) Date: Fri, 26 Apr 2013 12:31:41 +0900 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: References: <31FE5786-290D-46AA-852D-F18F9C28E4B4@ucla.edu> Message-ID: Hi Alex, Thanks for your explanation. But I am still curious about why producer node needs to forward interest to NetDevice. Take the following simple topology for example. (NetDeviceFace) (NetDeviceFace) +--------+ /x +--------------+ /x +---------------+ | client | ---------- | producerNode | --------------- | someOtherNode | +--------+ +--------------+ +---------------+ | /x (AppFace) | | +-------------+ | producerApp | +-------------+ If the producerNode received the interest (under the prefix /x), it will send the interest to AppFace (the interest will be satisfied). That is very reasonable. However, does it need to forward the interest to someOtherNode through NetDeviceFace. As you said, applications not always can satisfy all interest under specific prefix, but from my observance to the prior experiments (I made some change in CustomStrategy::DoPropagateInterest), producerNode can satisfy each node under /x and send Data packet back to client. Besides, it still have a chance (not every time, just in a small possibility) to forward the interest to someOtherNode. Is my observance wrong? Or what is the cause for the producerNode to forward interest (that will be satisfied to AppFace) to someOtherNode? Thanks very much~ Regards, huyao 2013/4/26 Alex Afanasyev > Hi huyao, > > Got it. Yes, ID has exactly the same meaning for any face type, regardless > of its type. ndn::L3Protocol knows only about Face abstraction and doesn't > care (should it care?) what type of face it. In the forwarding strategy, > you can try to distinguish and prioritize application faces, but it should > not be the only option to forward an interest, since applications not > always can satisfy all interest under specific prefix. > > And another yes, when some interest can be satisfied from the cache, this > interest doesn't go beyond ndn::l3Protcol and forwarding strategy, never > having any exchange involving application and application face. > > --- > Alex > > > On Apr 25, 2013, at 9:13 AM, yao hu wrote: > > Hi Alex, > > Thanks for your explanation. > > (1) Saying "AppFace and NetDeviceFace share FaceId", I meant that if I > want to write my own forwarding strategy in CustomStrategy::DoPropagateInterest, > should I consider AppFace as one usual FaceId like NetDeviceFace? > Especially, for a producer node, do I need to intentionally control the > incoming interest not to forward towards some other node and meanwhile make > it towards AppFace to be satisfied? That seems a little strange though. > > (2) Just for a confirmation. Intermediate nodes satisfy interest directly > through cache (if possible), not through AppFace? While for producer node, > it satisfies interest through AppFace? > > Regards, > huyao > > > > 2013/4/25 Alex Afanasyev > >> Hi huyao, >> >> What do you mean by "AppFace and NetDeviceFace share FaceId"? Each face >> on the node has its own unique id, doesn't matter, NetDeviceFace of >> AppFace... >> >> Your observation about the current situation with face IDs is exactly >> right: application faces have IDs that are numerically larger than any >> other NetDevice face id. However, this happened completely by "accident" >> and you should not really rely on it in the forwarding strategy. If you >> want to determine if a specific Ptr is actually an application face, >> a much safer way is to do a DynamicCast or (better, but I'm not sure yet >> how it can be implemented) mark application faces somehow in FIB entries: >> >> Ptr someFace = ...; >> >> if (DynamicCast (someFace)) >> { >> // someFace is application face >> } >> else >> { >> // someFace is some other type of face >> } >> >> --- >> Alex >> >> On Apr 24, 2013, at 5:24 PM, yao hu wrote: >> >> Hi Alex, >> >> Thanks very much for your explicit explanation. >> Then, for my understanding, it depends on me to decide whether the >> satisfied interest will be forwarded again towards other nodes (someOtherNode >> in your example) or not. If I send it to both AppFace and NetDeviceFace >> which share FaceId, it will do this. And also, from my simple observance >> from L3RateTracer, if one node connects to two other nodes, face 0 and face >> 1 is the NetDeviceFace, while face 2 will be the AppFace. Is my >> understanding right? >> >> Regards, >> huyao >> >> >> >> 2013/4/25 Alex Afanasyev >> >>> Hi! >>> >>> 1) Yes. There is something like PIT in consumer, but in much more >>> simplistic format. In consumer it is just a container, containing >>> outstanding sequence number and last retransmission time (m_seqTimeouts >>> variable in apps/ndn-consumer.h). The code uses boost::multi_index >>> container to have separate indices by sequence number (to efficiently >>> remove) and retransmission time (for retransmission detection). >>> >>> 2) Let me show you my understanding of your question with slightly >>> different topology >>> >>> (NetDeviceFace) (NetDeviceFace) >>> +--------+ /x +--------------+ /x +---------------+ >>> | client | ---------- | producerNode | --------------- | someOtherNode | >>> +--------+ +--------------+ +---------------+ >>> | /x (AppFace) >>> | >>> | >>> +-------------+ >>> | producerApp | >>> +-------------+ >>> >>> Let's say we have three nodes, one is client, one producer, and one is >>> producerNode. Prefix /x (under which client will be sending interests) is >>> routed: >>> - on client: the only NetDeviceFace (towards producerNode) >>> - on producerNode: to AppFace (to producer app), to NetDeviceFace >>> (towards someOtherNode) >>> >>> When producerNode receives an interests from the client, the strategy >>> may send interest towards application (and this interest will be satisfied) >>> and towards some other node. >>> >>> Among the existing strategies, only ns3::ndn::fw::Flooding is doing >>> this, since it is very simple and dumb strategy. BestRoute and >>> SmartFlooding forward interest only to a "green" face (if available), which >>> implies that they will forward only to the application (ndn::Producer marks >>> the application face "green"). >>> >>> --- >>> Alex >>> >>> On Apr 24, 2013, at 8:17 AM, yao hu wrote: >>> >>> > Hi Alex, >>> > >>> > I have two uncertain issues about the behavior of consumer and >>> provider for confirmation. >>> > >>> > (1) Is there any record like PIT for consumer or requester to memorize >>> past Interest transmission? Possibly for its future retransmission. >>> > >>> > (2) Say in a tree topology. If the root as the provider has satisfied >>> the incoming Interest to send back its according Data. Is it possible to >>> again forward the Interest to other branches (except the branch for the >>> incoming Interest)? I am asking this because in my forwarding strategy, I >>> saw some traffic in other branches, however I just modified >>> DoPropagateInterest, no other basic ndn functions. >>> > >>> > Your reply will be really appreciated. >>> > >>> > Regards, >>> > huyao >>> > >>> > _______________________________________________ >>> > ndnSIM mailing list >>> > ndnSIM at lists.cs.ucla.edu >>> > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >>> >>> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> >> > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Fri Apr 26 00:34:03 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Fri, 26 Apr 2013 00:34:03 -0700 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: References: <31FE5786-290D-46AA-852D-F18F9C28E4B4@ucla.edu> Message-ID: Hi huyao, The forwarding strategy on producerNode doesn't really need to forward the interest to both faces, I was giving an example of what can happen. Yes, with the existing ndn::Producer app, all interests will be satisfied, but in general (some other producer), may only have partial information. In any case, it is totally up to the strategy's decision of what to do with interest. Ideally, the strategy should try available faces first (in some order), then learn from which face interests are getting satisfied (faster), and then primarily use this face to forward interest. Do I suspect correctly that you're implementing something along these lines? --- Alex On Apr 25, 2013, at 8:31 PM, yao hu wrote: > Hi Alex, > > Thanks for your explanation. But I am still curious about why producer node needs to forward interest to NetDevice. Take the following simple topology for example. > > (NetDeviceFace) (NetDeviceFace) > +--------+ /x +--------------+ /x +---------------+ > | client | ---------- | producerNode | --------------- | someOtherNode | > +--------+ +--------------+ +---------------+ > | /x (AppFace) > | > | > +-------------+ > | producerApp | > +-------------+ > > If the producerNode received the interest (under the prefix /x), it will send the interest to AppFace (the interest will be satisfied). That is very reasonable. However, does it need to forward the interest to someOtherNode through NetDeviceFace. As you said, applications not always can satisfy all interest under specific prefix, but from my observance to the prior experiments (I made some change in CustomStrategy::DoPropagateInterest), producerNode can satisfy each node under /x and send Data packet back to client. Besides, it still have a chance (not every time, just in a small possibility) to forward the interest to someOtherNode. Is my observance wrong? Or what is the cause for the producerNode to forward interest (that will be satisfied to AppFace) to someOtherNode? > > Thanks very much~ > > Regards, > huyao > From 1839750381 at qq.com Sat Apr 27 08:12:03 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Sat, 27 Apr 2013 23:12:03 +0800 Subject: [ndnSIM] Pending Interest Table Message-ID: Hi Alex I have need to change lifetime of interest packet based on PIT value, I have tried to the program code "ndn-simple-with-pit-count-stats" to process some PIT entries values. I am unable to process the PIT values from function to program main body, it may be because I am not strong in C++ language. I need your help me to do this. rgd -Xee -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sat Apr 27 08:44:35 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 28 Apr 2013 00:44:35 +0900 Subject: [ndnSIM] behavior of consumer and provider In-Reply-To: References: <31FE5786-290D-46AA-852D-F18F9C28E4B4@ucla.edu> Message-ID: Hi Alex, Yes. I just wonder why does producer node need to forward the interest to other node before or after it actually satisfies the interest, like in SmartFlooding as you said. I will move on. Thanks again for your explanation~ Regards, huyao 2013/4/26 Alex Afanasyev > Hi huyao, > > The forwarding strategy on producerNode doesn't really need to forward the > interest to both faces, I was giving an example of what can happen. Yes, > with the existing ndn::Producer app, all interests will be satisfied, but > in general (some other producer), may only have partial information. > > In any case, it is totally up to the strategy's decision of what to do > with interest. Ideally, the strategy should try available faces first (in > some order), then learn from which face interests are getting satisfied > (faster), and then primarily use this face to forward interest. Do I > suspect correctly that you're implementing something along these lines? > > --- > Alex > > On Apr 25, 2013, at 8:31 PM, yao hu wrote: > > > Hi Alex, > > > > Thanks for your explanation. But I am still curious about why producer > node needs to forward interest to NetDevice. Take the following simple > topology for example. > > > > (NetDeviceFace) (NetDeviceFace) > > +--------+ /x +--------------+ /x +---------------+ > > | client | ---------- | producerNode | --------------- | someOtherNode | > > +--------+ +--------------+ +---------------+ > > | /x (AppFace) > > | > > | > > +-------------+ > > | producerApp | > > +-------------+ > > > > If the producerNode received the interest (under the prefix /x), it will > send the interest to AppFace (the interest will be satisfied). That is very > reasonable. However, does it need to forward the interest to someOtherNode > through NetDeviceFace. As you said, applications not always can satisfy all > interest under specific prefix, but from my observance to the prior > experiments (I made some change in CustomStrategy::DoPropagateInterest), > producerNode can satisfy each node under /x and send Data packet back to > client. Besides, it still have a chance (not every time, just in a small > possibility) to forward the interest to someOtherNode. Is my observance > wrong? Or what is the cause for the producerNode to forward interest (that > will be satisfied to AppFace) to someOtherNode? > > > > Thanks very much~ > > > > Regards, > > huyao > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sat Apr 27 11:01:02 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 27 Apr 2013 11:01:02 -0700 Subject: [ndnSIM] Pending Interest Table In-Reply-To: References: Message-ID: Hi Xee, Can you explain in more detail what you want to achieve? What do you mean by PIT value? When you saying that you want to change lifetime of the interests, do you want to do that at the consumer side? or rewrite interest by the forwarding strategy? or just adjust time (NDN router is not really required to fully honor lifetime specified in the Interest) the interests are kept in PIT on a specific node? --- Alex On Apr 27, 2013, at 8:12 AM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > I have need to change lifetime of interest packet based on PIT value, I have tried to the program code "ndn-simple-with-pit-count-stats" to process some PIT entries values. I am unable to process the PIT values from function to program main body, it may be because I am not strong in C++ language. I need your help me to do this. > > rgd > -Xee > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From 1839750381 at qq.com Sat Apr 27 18:06:58 2013 From: 1839750381 at qq.com (=?ISO-8859-1?B?WGVl?=) Date: Sun, 28 Apr 2013 09:06:58 +0800 Subject: [ndnSIM] Pending Interest Table Message-ID: Hi Alex Thanks for your email, I want to change the lifetime of Interest packets both at the consumer and producer side. I need to change the lifetime value for interests packet in PIT, based on number of PIT entries of the available space in PIT. rgd, -Xee ------------------ Original ------------------ From: "Alex Afanasyev"; Date: Apr 28, 2013 To: "Xee"<1839750381 at qq.com>; Cc: "ndnsim"; Subject: Re: [ndnSIM] Pending Interest Table Hi Xee, Can you explain in more detail what you want to achieve? What do you mean by PIT value? When you saying that you want to change lifetime of the interests, do you want to do that at the consumer side? or rewrite interest by the forwarding strategy? or just adjust time (NDN router is not really required to fully honor lifetime specified in the Interest) the interests are kept in PIT on a specific node? --- Alex On Apr 27, 2013, at 8:12 AM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > I have need to change lifetime of interest packet based on PIT value, I have tried to the program code "ndn-simple-with-pit-count-stats" to process some PIT entries values. I am unable to process the PIT values from function to program main body, it may be because I am not strong in C++ language. I need your help me to do this. > > rgd > -Xee > _______________________________________________ > 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 xyhu at njnet.edu.cn Sat Apr 27 21:54:50 2013 From: xyhu at njnet.edu.cn (xyhu) Date: Sun, 28 Apr 2013 12:54:50 +0800 Subject: [ndnSIM] =?gb2312?b?o6jO3tb3zOKjqQ==?= Message-ID: Hi Alex, Sorry to bother you again. I found that in ForwardingStrategy::OnInterest(), you first check PIT (and get a PIT entry for the Interest anyway) and then CS, which is different from the description in Van's NDN paper. But if there is the matching data in CS, it is unnecessary to create a PIT entry for this Interest, right? So I am curious about that you may have special meaning for processing incoming interests in this way. Do you? Thanks, Xiaoyan From alexander.afanasyev at ucla.edu Sat Apr 27 22:03:24 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sat, 27 Apr 2013 22:03:24 -0700 Subject: [ndnSIM] =?utf-8?b?77yI5peg5Li76aKY77yJ?= In-Reply-To: References: Message-ID: <6195AC00-4E77-43D7-9F73-1D1C32F19A4F@ucla.edu> Hi Xiaoyan, The main reason for this processing is to properly calculate metrics for incoming interest/satisfied pending interests. Is there any problem? -- Alex On Apr 27, 2013, at 9:54 PM, "xyhu" wrote: > Hi Alex, > > Sorry to bother you again. > I found that in ForwardingStrategy::OnInterest(), > you first check PIT (and get a PIT entry for the Interest anyway) and then CS, which is > different from the description in Van's NDN paper. > But if there is the matching data in CS, it is unnecessary to create a PIT entry for this > Interest, right? > So I am curious about that you may have special meaning for processing incoming > interests in this way. Do you? > > Thanks, > Xiaoyan > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From xyhu at njnet.edu.cn Sat Apr 27 23:25:40 2013 From: xyhu at njnet.edu.cn (xyhu) Date: Sun, 28 Apr 2013 14:25:40 +0800 Subject: [ndnSIM] (no subject) In-Reply-To: <6195AC00-4E77-43D7-9F73-1D1C32F19A4F@ucla.edu> References: <6195AC00-4E77-43D7-9F73-1D1C32F19A4F@ucla.edu> Message-ID: <898d1f30023c405d79ba7200187a7694.squirrel@202.112.23.162> Hi Alex, No problem. It is just because that I did some modification about the forwarding strategy. For example, I want to express some information to the nodes in the delivery path about the hop count that the Interests for the content object has experienced. >From your process, when interest(s) get hits in content store, the returned object may for several Interests from different consumers and I can pick the hop count experienced by only one of the Interests to the content objects such that the hop count is not the actual value for the left interests. Hope that I describe it correctly. Thanks, Xiaoyan > Hi Xiaoyan, > > The main reason for this processing is to properly calculate metrics for incoming > interest/satisfied pending interests. > Is there any problem? > > -- > Alex > > On Apr 27, 2013, at 9:54 PM, "xyhu" wrote: > >> Hi Alex, >> >> Sorry to bother you again. >> I found that in ForwardingStrategy::OnInterest(), >> you first check PIT (and get a PIT entry for the Interest anyway) and then CS, which is >> different from the description in Van's NDN paper. >> But if there is the matching data in CS, it is unnecessary to create a PIT entry for this >> Interest, right? >> So I am curious about that you may have special meaning for processing incoming >> interests in this way. Do you? >> >> Thanks, >> Xiaoyan >> >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > XFilter-NENC-Signature: 517cadee00360d69 > From huyao0107 at gmail.com Sun Apr 28 07:06:24 2013 From: huyao0107 at gmail.com (yao hu) Date: Sun, 28 Apr 2013 23:06:24 +0900 Subject: [ndnSIM] how to modify nonce field in Interest packet Message-ID: Hi Alex, ndnsim documents says nonce field is filled with a value of uint32_t type. Could you please tell (1) what value is filled in nonce field in the current Interest packet implementation. (2) how to get the nonce value when receiving Interest packet? (3) is it possible to fill a self-defined value into nonce field? Thanks very much! Regards, huyao -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 28 13:24:35 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 28 Apr 2013 13:24:35 -0700 Subject: [ndnSIM] how to modify nonce field in Interest packet In-Reply-To: References: Message-ID: Hi huyao, (1) The application is fully responsible to put the nonce into the interests. ndn::Consumer-based applications put nonce from uniform distribution (https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer.cc#L206) (2) There is GetNonce() method for ndn::Interest class (3) If you write your own app, you just set nonce using SetNonce method. If you want to reuse existing consumers, then you probably need to change their implementation to some extent. --- Alex On Apr 28, 2013, at 7:06 AM, yao hu wrote: > Hi Alex, > > ndnsim documents says nonce field is filled with a value of uint32_t type. Could you please tell > > (1) what value is filled in nonce field in the current Interest packet implementation. > > (2) how to get the nonce value when receiving Interest packet? > > (3) is it possible to fill a self-defined value into nonce field? > > Thanks very much! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 28 13:27:27 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 28 Apr 2013 13:27:27 -0700 Subject: [ndnSIM] (no subject) In-Reply-To: <898d1f30023c405d79ba7200187a7694.squirrel@202.112.23.162> References: <6195AC00-4E77-43D7-9F73-1D1C32F19A4F@ucla.edu> <898d1f30023c405d79ba7200187a7694.squirrel@202.112.23.162> Message-ID: Hi Xiaoyan, I'm not sure that I can follow you completely. It doesn't really matter whether a "temporary" PIT entry is created or not. In any case, with the first interest that doesn't have a match in CS, you will get full hop count (i.e., towards data producer and back). For all other interest, hop count will be limited by the caching node. --- Alex On Apr 27, 2013, at 11:25 PM, "xyhu" wrote: > Hi Alex, > > No problem. It is just because that I did some modification about the forwarding > strategy. For example, I want to express some information to the nodes in the delivery > path about the hop count that the Interests for the content object has experienced. > From your process, when interest(s) get hits in content store, the returned object may > for several Interests from different consumers and I can pick the hop count experienced > by only one of the Interests to the content objects such that the hop count is not the > actual value for the left interests. > Hope that I describe it correctly. > > Thanks, > Xiaoyan > >> Hi Xiaoyan, >> >> The main reason for this processing is to properly calculate metrics for incoming >> interest/satisfied pending interests. >> Is there any problem? >> >> -- >> Alex >> >> On Apr 27, 2013, at 9:54 PM, "xyhu" wrote: >> >>> Hi Alex, >>> >>> Sorry to bother you again. >>> I found that in ForwardingStrategy::OnInterest(), >>> you first check PIT (and get a PIT entry for the Interest anyway) and then CS, which is >>> different from the description in Van's NDN paper. >>> But if there is the matching data in CS, it is unnecessary to create a PIT entry for this >>> Interest, right? >>> So I am curious about that you may have special meaning for processing incoming >>> interests in this way. Do you? >>> >>> Thanks, >>> Xiaoyan >>> >>> _______________________________________________ >>> ndnSIM mailing list >>> ndnSIM at lists.cs.ucla.edu >>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim >> >> XFilter-NENC-Signature: 517cadee00360d69 >> > > From alexander.afanasyev at ucla.edu Sun Apr 28 13:32:24 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 28 Apr 2013 13:32:24 -0700 Subject: [ndnSIM] Pending Interest Table In-Reply-To: References: Message-ID: Hi Xee, I'm not sure what do you mean by the producer side, since producers only satisfy interests, they don't deal with interest lifetime in any way... As for the consumer side. How are you expecting to know PIT sizes, and which PIT sizes are you thinking about? On the consumer node (kind of possible, but requires communicating between app and ndn::L3Protocol)? If you want something more, you will need to implement some additional protocol to exchange PIT sizes and communicate them back to the consumer, but I'm not sure how can that be implemented. Of course, in the simulator you can cheat in many ways and get hold of any node from any other node, but it still would require some deep hacking. As for changing interest lifetime, there is a call GetInterestLifetime and SetInterestLifetime in ndn::Interest class. You can use them to get/set lifetime of a specific interest. --- Alex On Apr 27, 2013, at 6:06 PM, "Xee" <1839750381 at qq.com> wrote: > Hi Alex > > Thanks for your email, I want to change the lifetime of Interest packets both at the consumer and producer side. I need to change the lifetime value for interests packet in PIT, based on number of PIT entries of the available space in PIT. > > rgd, > -Xee > > ------------------ Original ------------------ > From: "Alex Afanasyev"; > Date: Apr 28, 2013 > To: "Xee"<1839750381 at qq.com>; > Cc: "ndnsim"; > Subject: Re: [ndnSIM] Pending Interest Table > > Hi Xee, > > Can you explain in more detail what you want to achieve? What do you mean by PIT value? > > When you saying that you want to change lifetime of the interests, do you want to do that at the consumer side? or rewrite interest by the forwarding strategy? or just adjust time (NDN router is not really required to fully honor lifetime specified in the Interest) the interests are kept in PIT on a specific node? > > --- > Alex > > On Apr 27, 2013, at 8:12 AM, "Xee" <1839750381 at qq.com> wrote: > > > Hi Alex > > > > I have need to change lifetime of interest packet based on PIT value, I have tried to the program code "ndn-simple-with-pit-count-stats" to process some PIT entries values. I am unable to process the PIT values from function to program main body, it may be because I am not strong in C++ language. I need your help me to do this. > > > > rgd > > -Xee > > _______________________________________________ > > ndnSIM mailing list > > ndnSIM at lists.cs.ucla.edu > > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Sun Apr 28 19:12:04 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 29 Apr 2013 11:12:04 +0900 Subject: [ndnSIM] how to modify nonce field in Interest packet In-Reply-To: References: Message-ID: Hi Alex, Thanks for your reply. I see. One more question is about interest time out or retransmission. Is there a method or function to deal with Interest retransmission or retransmission queue in ndnsim? How about adding a new value to the nonce field in retransmission Interest packet to differentiate it from the orginal one? I assume that by default the original Interest and the retransmission Interest if timeout happens should be the same format, right? Thanks a lot ~ Regards, huyao 2013/4/29 Alex Afanasyev > Hi huyao, > > (1) The application is fully responsible to put the nonce into the > interests. ndn::Consumer-based applications put nonce from uniform > distribution ( > https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer.cc#L206 > ) > > (2) There is GetNonce() method for ndn::Interest class > > (3) If you write your own app, you just set nonce using SetNonce method. > If you want to reuse existing consumers, then you probably need to change > their implementation to some extent. > > --- > Alex > > On Apr 28, 2013, at 7:06 AM, yao hu wrote: > > Hi Alex, > > ndnsim documents says nonce field is filled with a value of uint32_t > type. Could you please tell > > (1) what value is filled in nonce field in the current Interest packet > implementation. > > (2) how to get the nonce value when receiving Interest packet? > > (3) is it possible to fill a self-defined value into nonce field? > > Thanks very much! > > Regards, > huyao > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Sun Apr 28 20:57:15 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Sun, 28 Apr 2013 20:57:15 -0700 Subject: [ndnSIM] how to modify nonce field in Interest packet In-Reply-To: References: Message-ID: Hi huyao, Actually, each retransmitted Interest by ndn::Consumer* application gets its own "unique" (random) nonce. Consumer::CheckRetxTimeout method (https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer.cc#L122) is responsible for detecting and scheduling retransmission of Interest. --- Alex On Apr 28, 2013, at 7:12 PM, yao hu wrote: > Hi Alex, > > Thanks for your reply. I see. > > One more question is about interest time out or retransmission. Is there a method or function to deal with Interest retransmission or retransmission queue in ndnsim? How about adding a new value to the nonce field in retransmission Interest packet to differentiate it from the orginal one? > > I assume that by default the original Interest and the retransmission Interest if timeout happens should be the same format, right? > > Thanks a lot ~ > > Regards, > huyao > > > > 2013/4/29 Alex Afanasyev > Hi huyao, > > (1) The application is fully responsible to put the nonce into the interests. ndn::Consumer-based applications put nonce from uniform distribution (https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer.cc#L206) > > (2) There is GetNonce() method for ndn::Interest class > > (3) If you write your own app, you just set nonce using SetNonce method. If you want to reuse existing consumers, then you probably need to change their implementation to some extent. > > --- > Alex > > On Apr 28, 2013, at 7:06 AM, yao hu wrote: > >> Hi Alex, >> >> ndnsim documents says nonce field is filled with a value of uint32_t type. Could you please tell >> >> (1) what value is filled in nonce field in the current Interest packet implementation. >> >> (2) how to get the nonce value when receiving Interest packet? >> >> (3) is it possible to fill a self-defined value into nonce field? >> >> Thanks very much! >> >> Regards, >> huyao >> _______________________________________________ >> ndnSIM mailing list >> ndnSIM at lists.cs.ucla.edu >> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim > > > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim -------------- next part -------------- An HTML attachment was scrubbed... URL: From huyao0107 at gmail.com Mon Apr 29 07:53:27 2013 From: huyao0107 at gmail.com (yao hu) Date: Mon, 29 Apr 2013 23:53:27 +0900 Subject: [ndnSIM] error when simulating link failure Message-ID: Hi Alex, I added the following code to simulate the link failure between node n1 and n2 at 10 seconds. But it is strange it produces the error " ?FailLink? was not declared in this scope" as follows.. ../src/ndnSIM/examples/ndn-linkfailure.cc: In function ?int main(int, char**)?: ../src/ndnSIM/examples/ndn-linkfailure.cc:160:40: error: ?FailLink? was not declared in this scope Thanks in advance! ---------------------------------- int main (int argc, char *argv[]) { ...... Ptr device1 = Names::Find ("n1"); Ptr device2 = Names::Find ("n2"); Simulator::Schedule (Seconds (10.0), FailLink, device1); Simulator::Schedule (Seconds (10.0), FailLink, device2); Simulator::Run (); Simulator::Destroy (); return 0; } void FailLink (Ptr nd) { Ptr error = CreateObject (); error->SetAttribute ("ErrorRate", DoubleValue (1.0)); nd->SetAttribute ("ReceiveErrorModel", PointerValue (error)); } -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.afanasyev at ucla.edu Mon Apr 29 10:37:40 2013 From: alexander.afanasyev at ucla.edu (Alex Afanasyev) Date: Mon, 29 Apr 2013 10:37:40 -0700 Subject: [ndnSIM] error when simulating link failure In-Reply-To: References: Message-ID: <5B96FB6C-EE73-49B5-8225-457626F800CE@ucla.edu> Just put the definition of the FailLink function before the main function. Or at least, put the prototype of FailLink before main: void FailLink (Ptr nd); --- Alex On Apr 29, 2013, at 7:53 AM, yao hu wrote: > Hi Alex, > > I added the following code to simulate the link failure between node n1 and n2 at 10 seconds. But it is strange it produces the error " ?FailLink? was not declared in this scope" as follows.. > > ../src/ndnSIM/examples/ndn-linkfailure.cc: In function ?int main(int, char**)?: > ../src/ndnSIM/examples/ndn-linkfailure.cc:160:40: error: ?FailLink? was not declared in this scope > > Thanks in advance! > > ---------------------------------- > > int > main (int argc, char *argv[]) > { > ...... > > Ptr device1 = Names::Find ("n1"); > Ptr device2 = Names::Find ("n2"); > > Simulator::Schedule (Seconds (10.0), FailLink, device1); > Simulator::Schedule (Seconds (10.0), FailLink, device2); > > Simulator::Run (); > Simulator::Destroy (); > > return 0; > } > > void > FailLink (Ptr nd) > { > Ptr error = CreateObject (); > error->SetAttribute ("ErrorRate", DoubleValue (1.0)); > > nd->SetAttribute ("ReceiveErrorModel", PointerValue (error)); > } > _______________________________________________ > ndnSIM mailing list > ndnSIM at lists.cs.ucla.edu > http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim From huyao0107 at gmail.com Tue Apr 30 08:19:36 2013 From: huyao0107 at gmail.com (yao hu) Date: Wed, 1 May 2013 00:19:36 +0900 Subject: [ndnSIM] error when simulating link failure In-Reply-To: <5B96FB6C-EE73-49B5-8225-457626F800CE@ucla.edu> References: <5B96FB6C-EE73-49B5-8225-457626F800CE@ucla.edu> Message-ID: Hi Alex, It works. Thanks. 2013/4/30 Alex Afanasyev > Just put the definition of the FailLink function before the main function. > Or at least, put the prototype of FailLink before main: > > void FailLink (Ptr nd); > > --- > Alex > > On Apr 29, 2013, at 7:53 AM, yao hu wrote: > > > Hi Alex, > > > > I added the following code to simulate the link failure between node n1 > and n2 at 10 seconds. But it is strange it produces the error " ?FailLink? > was not declared in this scope" as follows.. > > > > ../src/ndnSIM/examples/ndn-linkfailure.cc: In function ?int main(int, > char**)?: > > ../src/ndnSIM/examples/ndn-linkfailure.cc:160:40: error: ?FailLink? was > not declared in this scope > > > > Thanks in advance! > > > > ---------------------------------- > > > > int > > main (int argc, char *argv[]) > > { > > ...... > > > > Ptr device1 = Names::Find ("n1"); > > Ptr device2 = Names::Find ("n2"); > > > > Simulator::Schedule (Seconds (10.0), FailLink, device1); > > Simulator::Schedule (Seconds (10.0), FailLink, device2); > > > > Simulator::Run (); > > Simulator::Destroy (); > > > > return 0; > > } > > > > void > > FailLink (Ptr nd) > > { > > Ptr error = CreateObject (); > > error->SetAttribute ("ErrorRate", DoubleValue (1.0)); > > > > nd->SetAttribute ("ReceiveErrorModel", PointerValue (error)); > > } > > _______________________________________________ > > 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: