From mathieu.lacage at sophia.inria.fr Sun Mar 1 00:43:29 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Sun, 01 Mar 2009 09:43:29 +0100 Subject: [Ns-developers] Tracing Rework In-Reply-To: <39D40E947C8840CCA57BF4EE710826BB@CRAIGVAIO> References: <39D40E947C8840CCA57BF4EE710826BB@CRAIGVAIO> Message-ID: <1235897009.6001.45.camel@mathieu-laptop> One thing I forgot in my comments on the bug report: 'RxStart' + 'Rx' seem to be missing the obvious name symmetry: 'RxStart'+'RxEnd' (same goes for Tx events, of course). Mathieu On Sat, 2009-02-28 at 17:14 -0800, craigdo at ee.washington.edu wrote: > I just stuck an attachment in bugzilla showing what I've done for the > tracing rework to kill bug 443. > > See below > > Comments? > > -- Craig > > > -----Original Message----- > > From: ns-bugs-bounces at ISI.EDU > > [mailto:ns-bugs-bounces at ISI.EDU] On Behalf Of > > code at nsnam.ece.gatech.edu > > Sent: Saturday, February 28, 2009 4:37 PM > > To: ns-bugs at ISI.EDU > > Subject: [Ns-bugs] [Bug 443] Net device pcap traces arent > > consistent with what tcpdump would display > > > > http://www.nsnam.org/bugzilla/show_bug.cgi?id=443 > > > > --- Comment #2 from Craig Dowell > > 2009-02-28 19:37:06 EDT --- > > Created an attachment (id=393) > > --> (http://www.nsnam.org/bugzilla/attachment.cgi?id=393) > > Proposed Changes to Tracing in NetDevices > > > > Significant changes to tracing in all non-bridge net devices. > > > > 1) Splits tracing into MAC-level and PHY-level traces for all devices; > > 2) Adds missing drop traces; > > 3) Adds "Sniffer" and "PromiscSniffer" trace hooks to do > > tcpdump-like traces; > > 4) Sniffer hooks now fire at the correct times; > > 4) Updates helpers to hook new sources. > > > > Note: Most devices are simple enough that everything is > > available in one > > place. Wifi is different. The Sniffer hook in the wifi > > device provides > > Ethernet frames for simple tracing and lives in WifiMac with > > the rest of the > > MAC-level trace sources. Sniffer is available using Pcap calls in the > > WifiHelper. The PromiscSniffer hook in the wifi device > > provides all of the > > low-level wifi packets and lives in WifiPhy with all of the > > PHY-level trace > > sources. PromiscSniffer is available using Pcap calls in the > > YansWifiPhyHelper. > > > > > > -- > > Configure bugmail: > > http://www.nsnam.org/bugzilla/userprefs.cgi?tab=email > > ------- You are receiving this mail because: ------- > > You are on the CC list for the bug. > > _______________________________________________ > > > > From craigdo at ee.washington.edu Sun Mar 1 13:28:53 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Sun, 1 Mar 2009 13:28:53 -0800 Subject: [Ns-developers] Tracing Rework In-Reply-To: <1235897009.6001.45.camel@mathieu-laptop> References: <39D40E947C8840CCA57BF4EE710826BB@CRAIGVAIO> <1235897009.6001.45.camel@mathieu-laptop> Message-ID: I really prefer to have discussions of any length over email, so allow me to copy your comments from bugzilla to here. > Sorry for not sounding too enthusiastic. Well, I'm not very enthusiastic about this one either. I've thrown away a couple of iterations already. > 1) You can't just add a tx completed event in MacLow. The whole codebase > was designed to not use a tx completed event to 'optimize' that event. > If we find out that we really need to have a tx completed event for > tracing purposes, then, we have to restructure entirely the codebase > because a lot of code is there just to work without a tx completed > event so, if there is one, a lot of code must disappear. This was an attempt to try and make the sources across all of the devices return something reasonably consistent and similarly meaningful. I don't really think this is necessary, BTW. It's obvious that your code doesn't like the idea of a tx complete event, but I wanted to see how bad it would look to plumb in all of the traces in the worst case (wifi being the most complicated device we have). There are actually similar situations in other devices with solutions involving varying amounts of pain. My concern, which led me to trying to implement a tx complete event in the wifi code was the amount of user confusion that could be generated trying to figure out which trace sources are meaningful in what way in which driver. Another source of confusion is that different devices can quite easily pass back packets at different stages of assembly/disassembly when the sources in question are hit (you hit on this tangentially below). I really wanted to prove it; but I'm afraid that trying to realize a real consistency WRT generic traces in specialized devices may just be way more trouble than its worth -- as you are also observing. I believe similar statements have been made here before, BTW. I want to see some kind of structure, but I'm fine with having a set of "standard" trace sources defined -- that are defined to fire at given logical times; and leaving it up to each net device author to decide what subset of these source he or she wants to implement. This standard set would at least give a user a basis to find and use what is available (i.e., I know that I'll most likely find at least one of these standard sources and I know what they do). I'm perfectly fine with removing the tx completed hook from the wifi. I stuck it in, pretty much as a prototype to get a feel for how bad it would be. There is currently no rx start event in csma or point-to-point either, for example. > 2) In wifi-mac.h: please, don't make the traces protected: if you need > to trigger them from subclasses, use a protected Notify method. The same > goes for wifi-phy.h. Do you mean that you want the sources wrapped by a function -- as in, for example, NotifyRxDropTrace ()? That seems like A Good Thing (TM). > 3) WifiNetDevice::SniffPacket ?? You are making an extra copy of the packet > just for tracing, even if there are no connected trace sinks ? This really does > not look like a good idea because it is emulating something really stupid/bad > from linux (which, incidentely, I believe got fixed in recent wifi stacks) and > because its performance cost is a bit horrid. This actually happens all over our code. It is so that various trace sources return some relatively sane number of variations on packet contents. Even in the simplest cases, CSMA, for example could trace a complete packet, a packet without an ethernet trailer, a packet without an ethernet header, a packet with or without an LLC/SNAP header, etc., depending on when a trace is hit. Making a copy of the original packet that came in over the channel allows for only one main variation -- DIX or LLC/SNAP. If this is horrid and should be optimized, it should be done, well, everywhere. Somewhere in this mix we can reach a foolish consistency, but at some level we have to make this usable by mere mortals. > To summarize, 2) appears easily fixable, the part of 3) which makes use of an > ethernet header for tracing looks like a really, _really_ bad idea, and 1) > worries me because it would be a lot of work to adjust the current codebase to > the presence of a tx completed event. I think that the one area that we really want some kind of real consistency is with respect to the pcap traces. The current idea is that there are two main flavors, promiscuous and non-promiscuous. Promiscuous sniffer trace hooks let you do pcap tracing as if you did a tcpdump -i on a particular net device on a particular channel. This seems like a very useful thing and could reduce the number of pcap trace files that are generated all over our system. The other version, the non-promiscuous sniffer is a bit more problematic. Currently, pcap traces written by most of our devices look this way and so I think current users will expect to be able to see it. It can be convenient to see a filtered subset of the frames flowing through the device. This is mostly easy to do in simple net devices where everything is available in one place. Not so much for wifi where complexity issues keep things modularized, and modularity is the enemy of this particular trace source. This is especially visible in the wifi code. It seems very complicated, way more trouble than its worth, to make this work ... correctly. It breaks all kinds of modularity and spans layers. Really ugly. I do need a complete packet that will end up being written to a pcap file, though. The idea here was that this is a very high level thing in the device and that the user really doesn't want to see lots of underlying 802.11 stuff. In fact, the user probably doesn't care about Ethernet frames, really. I just needed some kind of framing to write a pcap file. I did what many implementations of raw packets do and cooked up an ethernet packet out of whole cloth. If you read raw packets from a packet socket on Linux, I believe you will get Ethernet frames, for example. Now, this may be another one of those things that is ugly and more trouble than its worth as well. One alternative is that we can just not support Sniffer tracing on wifi devices as part of a choice of subset of standard trace hooks. I would support this. It does mean that we would move toward making the PromiscSniffer trace the one official standard always-there trace option. This would align us with tcpdump -i, for example. I would resist removing Sniffer from all devices, at least initially, just because of the amount of work in the code and in the documentation to change all references to pcap trace contents. So, Perhaps we could make some policy statements: 1) There is a set of suggested trace sources for net devices. These are currently found in the repo I mentioned and should be documented in the manual. 2) Implementing the complete set of suggested trace sources in a net device is not a requirement. A device author may pick a subset of these sources to implement. 3) The net device author should document what trace sources are implemented and the state the packets are in when they come out of the trace source. For example, raw IP, ethernet header, llc/snap, dix, p2p, wifi, etc. 4) A net device author should implement a PromiscSniffer trace source to allow tcpdump-like functionality in helpers to be called a "standard" net device; but you are always allowed to do whatever you think is right on your own time. I can then 1) Remove the objectionable Sniffer (Ethernet frame) and tx complete trace sources from the wifi device; 2) Remove the unused rx start trace sources from the csma and point-to-point devices; 3) Remove the non-promiscuous sniffer helper code from the wifi-helper and leave yans-wifi-phy hooked to the promisc sniffer; 4) Write some words for the manual on this stuff. This would mean that devices are different with respect to tracing, and initially inconsistent with respect to promiscuous sniffing; so this isn't really a complete resolution of the bug in question for ns-3.4 (sigh). Future work on this subject would involve 1) Adding PromiscSniffer (tcpdump) functionality to the various net devices. 2) Documenting packet contents at the various hooks. 3) Changing the various examples and regressions to use promiscuous sniffers as if someone were doing tcpdump on a real net. 4) Optimizing the packet trace hooks to not copy packets whenever possible. -- Craig > -----Original Message----- > From: Mathieu Lacage [mailto:mathieu.lacage at sophia.inria.fr] > Sent: Sunday, March 01, 2009 12:43 AM > To: craigdo at u.washington.edu > Cc: ns-developers at ISI.EDU > Subject: Re: [Ns-developers] Tracing Rework > > One thing I forgot in my comments on the bug report: 'RxStart' + 'Rx' > seem to be missing the obvious name symmetry: 'RxStart'+'RxEnd' (same > goes for Tx events, of course). > > Mathieu > > On Sat, 2009-02-28 at 17:14 -0800, craigdo at ee.washington.edu wrote: > > I just stuck an attachment in bugzilla showing what I've > done for the > > tracing rework to kill bug 443. > > > > See below > > > > Comments? > > > > -- Craig > > > > > -----Original Message----- > > > From: ns-bugs-bounces at ISI.EDU > > > [mailto:ns-bugs-bounces at ISI.EDU] On Behalf Of > > > code at nsnam.ece.gatech.edu > > > Sent: Saturday, February 28, 2009 4:37 PM > > > To: ns-bugs at ISI.EDU > > > Subject: [Ns-bugs] [Bug 443] Net device pcap traces arent > > > consistent with what tcpdump would display > > > > > > http://www.nsnam.org/bugzilla/show_bug.cgi?id=443 > > > > > > --- Comment #2 from Craig Dowell > > > 2009-02-28 19:37:06 EDT --- > > > Created an attachment (id=393) > > > --> (http://www.nsnam.org/bugzilla/attachment.cgi?id=393) > > > Proposed Changes to Tracing in NetDevices > > > > > > Significant changes to tracing in all non-bridge net devices. > > > > > > 1) Splits tracing into MAC-level and PHY-level traces for > all devices; > > > 2) Adds missing drop traces; > > > 3) Adds "Sniffer" and "PromiscSniffer" trace hooks to do > > > tcpdump-like traces; > > > 4) Sniffer hooks now fire at the correct times; > > > 4) Updates helpers to hook new sources. > > > > > > Note: Most devices are simple enough that everything is > > > available in one > > > place. Wifi is different. The Sniffer hook in the wifi > > > device provides > > > Ethernet frames for simple tracing and lives in WifiMac with > > > the rest of the > > > MAC-level trace sources. Sniffer is available using Pcap > calls in the > > > WifiHelper. The PromiscSniffer hook in the wifi device > > > provides all of the > > > low-level wifi packets and lives in WifiPhy with all of the > > > PHY-level trace > > > sources. PromiscSniffer is available using Pcap calls in the > > > YansWifiPhyHelper. > > > > > > > > > -- > > > Configure bugmail: > > > http://www.nsnam.org/bugzilla/userprefs.cgi?tab=email > > > ------- You are receiving this mail because: ------- > > > You are on the CC list for the bug. > > > _______________________________________________ > > > > > > > > > From raj.b at gatech.edu Mon Mar 2 07:38:26 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 2 Mar 2009 10:38:26 -0500 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: References: Message-ID: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro wrote: > Hi Raj, I need your permission to commit the patch to fix the P2 bug. > This is a notification that Gustavo has the tree for pushing this fix. Everyone else please refrain from commits while Gustavo has the token. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Mon Mar 2 07:43:09 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 2 Mar 2009 15:43:09 +0000 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> Message-ID: 2009/3/2 Raj Bhattacharjea > On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro > wrote: > > Hi Raj, I need your permission to commit the patch to fix the P2 bug. > > > > This is a notification that Gustavo has the tree for pushing this fix. > Everyone else please refrain from commits while Gustavo has the > token. Oh, we are dealing with "tokens" now? I thought a DVCS was supposed to save as from this archaic nonsense of us doing work that should be done by computers... :-) Anyway, you can have your token back; I am done. > > > -- > Raj Bhattacharjea > Georgia Institute of Technology > School of Electrical and Computer Engineering > Ph.D. Candidate > Systems Analyst > 404.894.2955 > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From raj.b at gatech.edu Mon Mar 2 08:01:39 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 2 Mar 2009 11:01:39 -0500 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> Message-ID: <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> On Mon, Mar 2, 2009 at 10:43 AM, Gustavo Carneiro wrote: > > > 2009/3/2 Raj Bhattacharjea >> >> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro >> wrote: >> > Hi Raj, I need your permission to commit the patch to fix the P2 bug. >> > >> >> This is a notification that Gustavo has the tree for pushing this fix. >> ?Everyone else please refrain from commits while Gustavo has the >> token. > > Oh, we are dealing with "tokens" now?? I thought a DVCS was supposed to save > as from this archaic nonsense of us doing work that should be done by > computers... :-) > > Anyway, you can have your token back; I am done. > The logic behind this is testing. The full regression suite on ns-regression takes hours to run; if others commit changes while you are running the regression on your (now stale) copy of ns-3-dev, there is no guarantee that a merged branch (their changes + yours) will now ALSO pass the regression tests. So you would have to pull, merge, and run the test again for a few hours. When you are done, if someone else has pushed changes, you waste more hours waiting for the regression test to finish. It is archaic, but has utility. I don't think any VCS could solve this problem for us. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Mon Mar 2 08:07:06 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 2 Mar 2009 16:07:06 +0000 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> Message-ID: 2009/3/2 Raj Bhattacharjea > On Mon, Mar 2, 2009 at 10:43 AM, Gustavo Carneiro > wrote: > > > > > > 2009/3/2 Raj Bhattacharjea > >> > >> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro < > gjcarneiro at gmail.com> > >> wrote: > >> > Hi Raj, I need your permission to commit the patch to fix the P2 bug. > >> > > >> > >> This is a notification that Gustavo has the tree for pushing this fix. > >> Everyone else please refrain from commits while Gustavo has the > >> token. > > > > Oh, we are dealing with "tokens" now? I thought a DVCS was supposed to > save > > as from this archaic nonsense of us doing work that should be done by > > computers... :-) > > > > Anyway, you can have your token back; I am done. > > > > The logic behind this is testing. The full regression suite on > ns-regression takes hours to run; if others commit changes while you > are running the regression on your (now stale) copy of ns-3-dev, there > is no guarantee that a merged branch (their changes + yours) will now > ALSO pass the regression tests. So you would have to pull, merge, and > run the test again for a few hours. When you are done, if someone > else has pushed changes, you waste more hours waiting for the > regression test to finish. Surely running the regression tests on your own host would be enough? I never run regression tests on any remote host. It takes less than a minute on my laptop. > > > It is archaic, but has utility. I don't think any VCS could solve > this problem for us. > > -- > Raj Bhattacharjea > Georgia Institute of Technology > School of Electrical and Computer Engineering > Ph.D. Candidate > Systems Analyst > 404.894.2955 > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From raj.b at gatech.edu Mon Mar 2 08:15:48 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 2 Mar 2009 11:15:48 -0500 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> Message-ID: <12d69e490903020815xd922b8fkc781cf092ec01dfb@mail.gmail.com> On Mon, Mar 2, 2009 at 11:07 AM, Gustavo Carneiro wrote: > > > 2009/3/2 Raj Bhattacharjea >> >> On Mon, Mar 2, 2009 at 10:43 AM, Gustavo Carneiro >> wrote: >> > >> > >> > 2009/3/2 Raj Bhattacharjea >> >> >> >> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro >> >> >> >> wrote: >> >> > Hi Raj, I need your permission to commit the patch to fix the P2 bug. >> >> > >> >> >> >> This is a notification that Gustavo has the tree for pushing this fix. >> >> ?Everyone else please refrain from commits while Gustavo has the >> >> token. >> > >> > Oh, we are dealing with "tokens" now?? I thought a DVCS was supposed to >> > save >> > as from this archaic nonsense of us doing work that should be done by >> > computers... :-) >> > >> > Anyway, you can have your token back; I am done. >> > >> >> The logic behind this is testing. ?The full regression suite on >> ns-regression takes hours to run; if others commit changes while you >> are running the regression on your (now stale) copy of ns-3-dev, there >> is no guarantee that a merged branch (their changes + yours) will now >> ALSO pass the regression tests. ?So you would have to pull, merge, and >> run the test again for a few hours. ?When you are done, if someone >> else has pushed changes, you waste more hours waiting for the >> regression test to finish. > > Surely running the regression tests on your own host would be enough?? I > never run regression tests on any remote host.? It takes less than a minute > on my laptop. > No. You really should make sure you didn't break the build on the ns-regression farm of machines. We've certainly seen patches which break the build on some, but not all supported architectures. This isn't required during the "open phase" of a release, but during this "maintenance phase" when new features won't be merged but we aren't in a full code freeze, making sure the tree stays stable is the best practice. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Mon Mar 2 08:24:02 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 2 Mar 2009 16:24:02 +0000 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: <12d69e490903020815xd922b8fkc781cf092ec01dfb@mail.gmail.com> References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> <12d69e490903020815xd922b8fkc781cf092ec01dfb@mail.gmail.com> Message-ID: 2009/3/2 Raj Bhattacharjea > On Mon, Mar 2, 2009 at 11:07 AM, Gustavo Carneiro > wrote: > > > > > > 2009/3/2 Raj Bhattacharjea > >> > >> On Mon, Mar 2, 2009 at 10:43 AM, Gustavo Carneiro > > >> wrote: > >> > > >> > > >> > 2009/3/2 Raj Bhattacharjea > >> >> > >> >> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro > >> >> > >> >> wrote: > >> >> > Hi Raj, I need your permission to commit the patch to fix the P2 > bug. > >> >> > > >> >> > >> >> This is a notification that Gustavo has the tree for pushing this > fix. > >> >> Everyone else please refrain from commits while Gustavo has the > >> >> token. > >> > > >> > Oh, we are dealing with "tokens" now? I thought a DVCS was supposed > to > >> > save > >> > as from this archaic nonsense of us doing work that should be done by > >> > computers... :-) > >> > > >> > Anyway, you can have your token back; I am done. > >> > > >> > >> The logic behind this is testing. The full regression suite on > >> ns-regression takes hours to run; if others commit changes while you > >> are running the regression on your (now stale) copy of ns-3-dev, there > >> is no guarantee that a merged branch (their changes + yours) will now > >> ALSO pass the regression tests. So you would have to pull, merge, and > >> run the test again for a few hours. When you are done, if someone > >> else has pushed changes, you waste more hours waiting for the > >> regression test to finish. > > > > Surely running the regression tests on your own host would be enough? I > > never run regression tests on any remote host. It takes less than a > minute > > on my laptop. > > > > No. You really should make sure you didn't break the build on the > ns-regression farm of machines. We've certainly seen patches which > break the build on some, but not all supported architectures. > > This isn't required during the "open phase" of a release, but during > this "maintenance phase" when new features won't be merged but we > aren't in a full code freeze, making sure the tree stays stable is the > best practice. I think it's a bit overkill except in the final week until release or so. But ok. In any case, I wasn't even aware you could trigger the automated regression hosts to do regression testing _right now_. I always assumed you'd have to way up to 24 hours for the next time it runs by itself. I checked the "Developer FAQ" wiki, but didn't find this information there. We really should start adding information like this to the wiki. Just sending an email is _not_ ok; developers might miss the email, or forget the contents, and we have no time to keep searching email archives. Thanks. -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From raj.b at gatech.edu Mon Mar 2 08:25:21 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 2 Mar 2009 11:25:21 -0500 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> <12d69e490903020815xd922b8fkc781cf092ec01dfb@mail.gmail.com> Message-ID: <12d69e490903020825x62dc5ea0jbdc8c5d4d6f62316@mail.gmail.com> On Mon, Mar 2, 2009 at 11:24 AM, Gustavo Carneiro wrote: > > > 2009/3/2 Raj Bhattacharjea >> >> On Mon, Mar 2, 2009 at 11:07 AM, Gustavo Carneiro >> wrote: >> > >> > >> > 2009/3/2 Raj Bhattacharjea >> >> >> >> On Mon, Mar 2, 2009 at 10:43 AM, Gustavo Carneiro >> >> >> >> wrote: >> >> > >> >> > >> >> > 2009/3/2 Raj Bhattacharjea >> >> >> >> >> >> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro >> >> >> >> >> >> wrote: >> >> >> > Hi Raj, I need your permission to commit the patch to fix the P2 >> >> >> > bug. >> >> >> > >> >> >> >> >> >> This is a notification that Gustavo has the tree for pushing this >> >> >> fix. >> >> >> ?Everyone else please refrain from commits while Gustavo has the >> >> >> token. >> >> > >> >> > Oh, we are dealing with "tokens" now?? I thought a DVCS was supposed >> >> > to >> >> > save >> >> > as from this archaic nonsense of us doing work that should be done by >> >> > computers... :-) >> >> > >> >> > Anyway, you can have your token back; I am done. >> >> > >> >> >> >> The logic behind this is testing. ?The full regression suite on >> >> ns-regression takes hours to run; if others commit changes while you >> >> are running the regression on your (now stale) copy of ns-3-dev, there >> >> is no guarantee that a merged branch (their changes + yours) will now >> >> ALSO pass the regression tests. ?So you would have to pull, merge, and >> >> run the test again for a few hours. ?When you are done, if someone >> >> else has pushed changes, you waste more hours waiting for the >> >> regression test to finish. >> > >> > Surely running the regression tests on your own host would be enough?? I >> > never run regression tests on any remote host.? It takes less than a >> > minute >> > on my laptop. >> > >> >> No. ?You really should make sure you didn't break the build on the >> ns-regression farm of machines. ?We've certainly seen patches which >> break the build on some, but not all supported architectures. >> >> This isn't required during the "open phase" of a release, but during >> this "maintenance phase" when new features won't be merged but we >> aren't in a full code freeze, making sure the tree stays stable is the >> best practice. > > I think it's a bit overkill except in the final week until release or so. > But ok. > > In any case, I wasn't even aware you could trigger the automated regression > hosts to do regression testing _right now_.? I always assumed you'd have to > way up to 24 hours for the next time it runs by itself. > > I checked the "Developer FAQ" wiki, but didn't find this information there. > We really should start adding information like this to the wiki.? Just > sending an email is _not_ ok; developers might miss the email, or forget the > contents, and we have no time to keep searching email archives. I'll make sure to write up how to do this on the wiki. Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Mon Mar 2 08:26:45 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 2 Mar 2009 11:26:45 -0500 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: <12d69e490903020825x62dc5ea0jbdc8c5d4d6f62316@mail.gmail.com> References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> <12d69e490903020815xd922b8fkc781cf092ec01dfb@mail.gmail.com> <12d69e490903020825x62dc5ea0jbdc8c5d4d6f62316@mail.gmail.com> Message-ID: <12d69e490903020826o754b1a03p6bf7d5af47e0ff08@mail.gmail.com> On Mon, Mar 2, 2009 at 11:25 AM, Raj Bhattacharjea wrote: > On Mon, Mar 2, 2009 at 11:24 AM, Gustavo Carneiro wrote: >> >> >> 2009/3/2 Raj Bhattacharjea >>> >>> On Mon, Mar 2, 2009 at 11:07 AM, Gustavo Carneiro >>> wrote: >>> > >>> > >>> > 2009/3/2 Raj Bhattacharjea >>> >> >>> >> On Mon, Mar 2, 2009 at 10:43 AM, Gustavo Carneiro >>> >> >>> >> wrote: >>> >> > >>> >> > >>> >> > 2009/3/2 Raj Bhattacharjea >>> >> >> >>> >> >> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro >>> >> >> >>> >> >> wrote: >>> >> >> > Hi Raj, I need your permission to commit the patch to fix the P2 >>> >> >> > bug. >>> >> >> > >>> >> >> >>> >> >> This is a notification that Gustavo has the tree for pushing this >>> >> >> fix. >>> >> >> ?Everyone else please refrain from commits while Gustavo has the >>> >> >> token. >>> >> > >>> >> > Oh, we are dealing with "tokens" now?? I thought a DVCS was supposed >>> >> > to >>> >> > save >>> >> > as from this archaic nonsense of us doing work that should be done by >>> >> > computers... :-) >>> >> > >>> >> > Anyway, you can have your token back; I am done. >>> >> > >>> >> >>> >> The logic behind this is testing. ?The full regression suite on >>> >> ns-regression takes hours to run; if others commit changes while you >>> >> are running the regression on your (now stale) copy of ns-3-dev, there >>> >> is no guarantee that a merged branch (their changes + yours) will now >>> >> ALSO pass the regression tests. ?So you would have to pull, merge, and >>> >> run the test again for a few hours. ?When you are done, if someone >>> >> else has pushed changes, you waste more hours waiting for the >>> >> regression test to finish. >>> > >>> > Surely running the regression tests on your own host would be enough?? I >>> > never run regression tests on any remote host.? It takes less than a >>> > minute >>> > on my laptop. >>> > >>> >>> No. ?You really should make sure you didn't break the build on the >>> ns-regression farm of machines. ?We've certainly seen patches which >>> break the build on some, but not all supported architectures. >>> >>> This isn't required during the "open phase" of a release, but during >>> this "maintenance phase" when new features won't be merged but we >>> aren't in a full code freeze, making sure the tree stays stable is the >>> best practice. >> >> I think it's a bit overkill except in the final week until release or so. >> But ok. >> >> In any case, I wasn't even aware you could trigger the automated regression >> hosts to do regression testing _right now_.? I always assumed you'd have to >> way up to 24 hours for the next time it runs by itself. >> >> I checked the "Developer FAQ" wiki, but didn't find this information there. >> We really should start adding information like this to the wiki.? Just >> sending an email is _not_ ok; developers might miss the email, or forget the >> contents, and we have no time to keep searching email archives. > > I'll make sure to write up how to do this on the wiki. It was there, albeit not fleshed out: http://www.nsnam.org/wiki/index.php/Developer_FAQ#Testing_code_on_nsnam.org_hosts -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Mon Mar 2 08:59:19 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 2 Mar 2009 11:59:19 -0500 Subject: [Ns-developers] ns-3.4 release plans In-Reply-To: <12d69e490901071434g1024a72fgdc5dfb74b9184c72@mail.gmail.com> References: <12d69e490901071434g1024a72fgdc5dfb74b9184c72@mail.gmail.com> Message-ID: <12d69e490903020859i75806b65l975144697687affc@mail.gmail.com> I wanted to follow up on the status of the ns-3.4 release. I have included the original email below, and am going to comment inline about the status of the items we proposed for ns-3.4 back in January. On Wed, Jan 7, 2009 at 5:34 PM, Raj Bhattacharjea wrote: > I wish a happy new year to the ns-3 development community!? With the new > year comes new plans, namely those for releasing the next version of ns3, > version 3.4 .? This email is lengthy, so you can catch the short version on > the wiki: > > http://www.nsnam.org/wiki/index.php/Ns-3.4 > > Otherwise, read on. > > ==Release Schedule== > The plan is to have an early merge period through January 27th, during which > proposals for new APIs and features will be reviewed and merged into the > ns-3-dev trunk.? Any remaining features which have been proposed but not > fully reviewed, or for which there is no consensus, can be merged in up > until February 10th. We ended up holding for some issues I had with the random variables changes. In reality, we ended up merging the last new feature for ns-3.4 on February 24, two weeks behind schedule. > > The rest of the month of February will be for maintainance; during this > period only P1 bugs will be fixed, and no API will change.? Behavioral > changes to models not affecting API will be allowed. Looking at the work queue for bugs, it is looking like we will have to slip the schedule by about two weeks to accommodate bug fixes. I am suggesting that we target the end of the maintenance phase (for bug fixes) to March 18. > > From March 1st, release candidates will be released.? The bug count should > ideally be zero during this time, and any remaining bugs discovered will be > ironed out by the the 18th of March, when the final release of ns3.4 is > made. I suggest we push this back to March 19. We have adopted a policy of consider P1 bugs as those which are broken behavior, and will be true blockers which will hold up the _release candidates_; that is, there will be no P1 bugs in ns-3.4-RC1 (otherwise, how is it a candidate for release?). Any bugs found from beating on RC1 will be fixed and posted as RC2, etc. > > More details follow here: > http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule > This link has been updated to reflect the schedule I propose above. > ==New Features== > > The planned new features for 3.4 are as follows: > > A new tap net device which will allow ns-3 to create a Linux system network > interface through which ns-3 traffic can flow back and forth with the real > world.? It is being adapted by Craig from a prototype version Mathieu has > been utilizing in demonstrations of ns3. This work has been merged. > A system for assigning names to nodes.? Issues of accessing nodes by name, > utilizing names for accessing trace hooks, displaying the names in trace > output, and showing the names in logging output are still being resolved. > Craig is working on this. This work has also been merged. > An upgrade to the waf version used in ns-3, as well as a move to a so called > "allinone" build system.? The system will separate the downloading of > "optional" components (such as pybindgen and nsc) from the regular waf build > process of ns-3.? Gustavo has something in the works. The allinone branch works as promised. > New API for RandomVariables, adding new seeing API and new default seeding > behavior.? Raj is working with Michelle Weigle and Hadi Arbabi on this. This branch has been merged. > A refactoring of the IPv4 routing API.? Tom is working on this. > More support for IPv6 > (http://mailman.isi.edu/pipermail/ns-developers/2008-July/004358.html).? Tom > is working on this. These two items have been deferred to ns-3.5. > Behavioral changes in TCP to be RFC compliant in regards to closedown > behavior (correct FINs and RSTs).? Raj is working on this. > Consistency of trace hooks across NetDevice types. and true PCAP > compatibility (http://www.nsnam.org/bugzilla/show_bug.cgi?id=443).? Craig is > working on this. > Possible addition of some rigorous ns3 system tests which work without > comparing script output against known traces. The above qualify as bug fixes that are being resolved. Please see bugzilla or the bug list for more information: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Bug_List -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Mon Mar 2 09:29:31 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 2 Mar 2009 17:29:31 +0000 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: <12d69e490903020826o754b1a03p6bf7d5af47e0ff08@mail.gmail.com> References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> <12d69e490903020815xd922b8fkc781cf092ec01dfb@mail.gmail.com> <12d69e490903020825x62dc5ea0jbdc8c5d4d6f62316@mail.gmail.com> <12d69e490903020826o754b1a03p6bf7d5af47e0ff08@mail.gmail.com> Message-ID: 2009/3/2 Raj Bhattacharjea > On Mon, Mar 2, 2009 at 11:25 AM, Raj Bhattacharjea > wrote: > > On Mon, Mar 2, 2009 at 11:24 AM, Gustavo Carneiro > wrote: > >> > >> > >> 2009/3/2 Raj Bhattacharjea > >>> > >>> On Mon, Mar 2, 2009 at 11:07 AM, Gustavo Carneiro < > gjcarneiro at gmail.com> > >>> wrote: > >>> > > >>> > > >>> > 2009/3/2 Raj Bhattacharjea > >>> >> > >>> >> On Mon, Mar 2, 2009 at 10:43 AM, Gustavo Carneiro > >>> >> > >>> >> wrote: > >>> >> > > >>> >> > > >>> >> > 2009/3/2 Raj Bhattacharjea > >>> >> >> > >>> >> >> On Sat, Feb 28, 2009 at 10:04 AM, Gustavo Carneiro > >>> >> >> > >>> >> >> wrote: > >>> >> >> > Hi Raj, I need your permission to commit the patch to fix the > P2 > >>> >> >> > bug. > >>> >> >> > > >>> >> >> > >>> >> >> This is a notification that Gustavo has the tree for pushing this > >>> >> >> fix. > >>> >> >> Everyone else please refrain from commits while Gustavo has the > >>> >> >> token. > >>> >> > > >>> >> > Oh, we are dealing with "tokens" now? I thought a DVCS was > supposed > >>> >> > to > >>> >> > save > >>> >> > as from this archaic nonsense of us doing work that should be done > by > >>> >> > computers... :-) > >>> >> > > >>> >> > Anyway, you can have your token back; I am done. > >>> >> > > >>> >> > >>> >> The logic behind this is testing. The full regression suite on > >>> >> ns-regression takes hours to run; if others commit changes while you > >>> >> are running the regression on your (now stale) copy of ns-3-dev, > there > >>> >> is no guarantee that a merged branch (their changes + yours) will > now > >>> >> ALSO pass the regression tests. So you would have to pull, merge, > and > >>> >> run the test again for a few hours. When you are done, if someone > >>> >> else has pushed changes, you waste more hours waiting for the > >>> >> regression test to finish. > >>> > > >>> > Surely running the regression tests on your own host would be > enough? I > >>> > never run regression tests on any remote host. It takes less than a > >>> > minute > >>> > on my laptop. > >>> > > >>> > >>> No. You really should make sure you didn't break the build on the > >>> ns-regression farm of machines. We've certainly seen patches which > >>> break the build on some, but not all supported architectures. > >>> > >>> This isn't required during the "open phase" of a release, but during > >>> this "maintenance phase" when new features won't be merged but we > >>> aren't in a full code freeze, making sure the tree stays stable is the > >>> best practice. > >> > >> I think it's a bit overkill except in the final week until release or > so. > >> But ok. > >> > >> In any case, I wasn't even aware you could trigger the automated > regression > >> hosts to do regression testing _right now_. I always assumed you'd have > to > >> way up to 24 hours for the next time it runs by itself. > >> > >> I checked the "Developer FAQ" wiki, but didn't find this information > there. > >> We really should start adding information like this to the wiki. Just > >> sending an email is _not_ ok; developers might miss the email, or forget > the > >> contents, and we have no time to keep searching email archives. > > > > I'll make sure to write up how to do this on the wiki. > > It was there, albeit not fleshed out: > > > http://www.nsnam.org/wiki/index.php/Developer_FAQ#Testing_code_on_nsnam.org_hosts > One thing is not clear, however. If you have a patch to test, you have to commit it first, and only then can you test it, since the regression script takes a branch name, not a repository. Doesn't it kind of defeat the purpose? If a problem is detected in the patch, it will already be too late because it was already committed... I hope we are not supposed to create a new temporary branch for each patch we wish to test. If so, you can expect me to never commit a patch again during a maintenance period. No offense, but I simply don't have time or patience to jump through all these hoops in order to fix a bug. Regards, -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From raj.b at gatech.edu Mon Mar 2 11:14:08 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 2 Mar 2009 14:14:08 -0500 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> <12d69e490903020815xd922b8fkc781cf092ec01dfb@mail.gmail.com> <12d69e490903020825x62dc5ea0jbdc8c5d4d6f62316@mail.gmail.com> <12d69e490903020826o754b1a03p6bf7d5af47e0ff08@mail.gmail.com> Message-ID: <12d69e490903021114i3091c5f5he8756f09546763e8@mail.gmail.com> On Mon, Mar 2, 2009 at 12:29 PM, Gustavo Carneiro wrote: > > One thing is not clear, however.? If you have a patch to test, you have to > commit it first, and only then can you test it, since the regression script > takes a branch name, not a repository.? Doesn't it kind of defeat the > purpose?? If a problem is detected in the patch, it will already be too late > because it was already committed... > > I hope we are not supposed to create a new temporary branch for each patch > we wish to test.? If so, you can expect me to never commit a patch again > during a maintenance period.? No offense, but I simply don't have time or > patience to jump through all these hoops in order to fix a bug. > I see your concern; you've convinced me. I am willing to wait for the nightly test to run to see if someone broke the build on other platforms. Lets say it would be _nice_ if you could test on ns-regression, but it isn't mandatory to bugfix. This practice however will be strictly enforced in the week or so leading up to the release, as you suggest. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From ruturajmd at gmail.com Mon Mar 2 06:22:50 2009 From: ruturajmd at gmail.com (Ruturaj Dhekane) Date: Mon, 2 Mar 2009 19:52:50 +0530 Subject: [Ns-developers] Regarding 802.15 MAC Layer Message-ID: <955e31df0903020622l56a5ca1bj173e3e43889aba74@mail.gmail.com> Hi, I am working on a Wireless Sensor Networks based research project. I would like to simulate the WSN nodes. However 802.15.x MAC layer isnt currently available with NS-3. I would like to have some pointers from the developer community regarding writing our own MAC layer. (As in where do I begin, and How?) Would also like to know certain fields in which I might be able to contribute to NS-3 code in general. Thanking You Sincerely.. Ruturaj Final Year, Under-Graduate Computer Science And Engg. Visvesvaraya National Institute Of Technology India. -- [Geekru2] From mathieu.lacage at sophia.inria.fr Mon Mar 2 08:22:23 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 02 Mar 2009 17:22:23 +0100 Subject: [Ns-developers] [Bug 370] ipv4-interface.h is installed In-Reply-To: References: <12d69e490903020738u320195e2yeeb0e7362f93c1e0@mail.gmail.com> <12d69e490903020801i7de67402x6325e5a4dadb53f5@mail.gmail.com> Message-ID: <1236010943.10216.24.camel@mathieu-laptop> On Mon, 2009-03-02 at 16:07 +0000, Gustavo Carneiro wrote: > Surely running the regression tests on your own host would be enough? > I > never run regression tests on any remote host. It takes less than a > minute > on my laptop. Yes, I don't think normal development requires more than regression tests working on your machine: we have the daily email output of the regression test to tell us we have screwed up the system, and we can use it to be notified that we have to debug something serious. What I personally usually do is: 1) in normal development, build debug and optimized versions, run regressions for both 2) close to the release, build debug and optimized versions for a set of known compilers: 3.4.6, 4.0.x, 4.1.x, 4.2.x In my experience, the above is sufficient to cover 95% of portability problems (especially 3.4.6 and 4.0.x). For 2), I had some trivial scripts to do this for me at some point but I lost them. If there is interest in this, I can re-generate them. Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 2 08:12:26 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 02 Mar 2009 17:12:26 +0100 Subject: [Ns-developers] Tracing Rework In-Reply-To: References: <39D40E947C8840CCA57BF4EE710826BB@CRAIGVAIO> <1235897009.6001.45.camel@mathieu-laptop> Message-ID: <1236010346.10216.17.camel@mathieu-laptop> On Sun, 2009-03-01 at 13:28 -0800, craigdo at ee.washington.edu wrote: [snip] > > 2) In wifi-mac.h: please, don't make the traces protected: if you need > > to trigger them from subclasses, use a protected Notify method. The same > > goes for wifi-phy.h. > > Do you mean that you want the sources wrapped by a function -- as in, for > example, NotifyRxDropTrace ()? That seems like A Good Thing (TM). yes, indeed. > > 3) WifiNetDevice::SniffPacket ?? You are making an extra copy of the > packet > > just for tracing, even if there are no connected trace sinks ? This really > does > > not look like a good idea because it is emulating something really > stupid/bad > > from linux (which, incidentely, I believe got fixed in recent wifi stacks) > and > > because its performance cost is a bit horrid. > > This actually happens all over our code. It is so that various trace > sources return some relatively sane number of variations on packet contents. > Even in the simplest cases, CSMA, for example could trace a complete packet, > a packet without an ethernet trailer, a packet without an ethernet header, a > packet with or without an LLC/SNAP header, etc., depending on when a trace > is hit. Making a copy of the original packet that came in over the channel > allows for only one main variation -- DIX or LLC/SNAP. If this is horrid > and should be optimized, it should be done, well, everywhere. I don't mind the packet copy itself: I mind the following addition of an ethernet header because: 1) it's horrid to make a wifi device look like an ethernet device. A real bad linux idea, and, one I believe decent and recent linux drivers don't do anymore (I could be wrong here though). 2) it's horribly inefficient to add the ethernet header because it is the addition of the ethernet header which will trigger a deep copy. The previous call to Copy itself is really cheap so, it's not a big deal. What I would support is a Copy of the packet before the wifi header is removed because that would be both efficient and result in traces which do not contain an ethernet header but contain a wifi header (but, in this case, you would not need a copy anymore). It might be possible to partially implement this by replacing RemoveHeader by PeekHeader in MacLow::ReceiveOk and calling a trace hook in the right location in this function (to filter out some unwanted packets). That would not be all the filtering done by a real pcap trace on a real linux system, but, well... > The other version, the non-promiscuous sniffer is a bit more problematic. > Currently, pcap traces written by most of our devices look this way and so I > think current users will expect to be able to see it. It can be convenient > to see a filtered subset of the frames flowing through the device. This is > mostly easy to do in simple net devices where everything is available in one > place. Not so much for wifi where complexity issues keep things > modularized, and modularity is the enemy of this particular trace source. > This is especially visible in the wifi code. It seems very complicated, way > more trouble than its worth, to make this work ... correctly. It breaks all > kinds of modularity and spans layers. Really ugly. Agreed. > I can then > > 1) Remove the objectionable Sniffer (Ethernet frame) and tx complete trace > sources from the wifi device; > > 2) Remove the unused rx start trace sources from the csma and point-to-point > devices; > > 3) Remove the non-promiscuous sniffer helper code from the wifi-helper and > leave yans-wifi-phy hooked to the promisc sniffer; > > 4) Write some words for the manual on this stuff. I think that the above would be fine. > 4) Optimizing the packet trace hooks to not copy packets whenever possible. As I said before, calling Packet::Copy is not a big deal. Mathieu From gjcarneiro at gmail.com Tue Mar 3 03:32:32 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 3 Mar 2009 11:32:32 +0000 Subject: [Ns-developers] Regression testing (Was: [Bug 370] ipv4-interface.h is installed) Message-ID: 2009/3/2 Raj Bhattacharjea > On Mon, Mar 2, 2009 at 12:29 PM, Gustavo Carneiro > wrote: > > > > One thing is not clear, however. If you have a patch to test, you have > to > > commit it first, and only then can you test it, since the regression > script > > takes a branch name, not a repository. Doesn't it kind of defeat the > > purpose? If a problem is detected in the patch, it will already be too > late > > because it was already committed... > > > > I hope we are not supposed to create a new temporary branch for each > patch > > we wish to test. If so, you can expect me to never commit a patch again > > during a maintenance period. No offense, but I simply don't have time or > > patience to jump through all these hoops in order to fix a bug. > > > > I see your concern; you've convinced me. I am willing to wait for the > nightly test to run to see if someone broke the build on other > platforms. Lets say it would be _nice_ if you could test on > ns-regression, but it isn't mandatory to bugfix. > > This practice however will be strictly enforced in the week or so > leading up to the release, as you suggest. Thanks. But I am noticing a new problem now. I run the ns-3-run-tests.sh script with a -m option, to send email with the results, but the script still keeps running in the foreground. Since the wiki page says it can take several hours to complete, I need to be able to logout, but if I hit Ctrl-C the regression testing is aborted. nohup script & does not work because I have no write permission to the file system. I was expecting the tests to run in background when -m option is given. > > > -- > Raj Bhattacharjea > Georgia Institute of Technology > School of Electrical and Computer Engineering > Ph.D. Candidate > Systems Analyst > 404.894.2955 > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From tomh at tomh.org Tue Mar 3 05:53:43 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 03 Mar 2009 05:53:43 -0800 Subject: [Ns-developers] ns-3.4 release plans In-Reply-To: <12d69e490903020859i75806b65l975144697687affc@mail.gmail.com> References: <12d69e490901071434g1024a72fgdc5dfb74b9184c72@mail.gmail.com> <12d69e490903020859i75806b65l975144697687affc@mail.gmail.com> Message-ID: <49AD3667.6010800@tomh.org> Raj Bhattacharjea wrote: >> From March 1st, release candidates will be released. The bug count should >> ideally be zero during this time, and any remaining bugs discovered will be >> ironed out by the the 18th of March, when the final release of ns3.4 is >> made. > > I suggest we push this back to March 19. We have adopted a policy of > consider P1 bugs as those which are broken behavior, and will be true > blockers which will hold up the _release candidates_; that is, there > will be no P1 bugs in ns-3.4-RC1 (otherwise, how is it a candidate for > release?). Any bugs found from beating on RC1 will be fixed and > posted as RC2, etc. Raj, I'm OK with slipping the release two weeks if it means that we will get all of the outstanding P1 bugs in your list fixed. However, I think we should carefully consider whether additional bugs that come in will keep slipping the release further. There is another option to slipping, which is to list open bugs as "known issues", and perhaps even to later do a small maintenance release. So, I would suggest that we try not to slip the release further unless a major issue comes up that can't be fixed by April 1. - Tom From gjcarneiro at gmail.com Tue Mar 3 06:48:15 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 3 Mar 2009 14:48:15 +0000 Subject: [Ns-developers] Request to commit -fvisbility=hidden python bindings patch Message-ID: Hi Raj, May I commit the patch at [1] for ns 3.4? It decreases python bindings size (from 6 to 5 MB) and decreases its loading time (didn't measure, but the documentation [2] claims it to be so...). Regards, [1] http://www.nsnam.org/bugzilla/show_bug.cgi?id=515 [2] http://gcc.gnu.org/wiki/Visibility -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From vivekmrathod at gmail.com Tue Mar 3 06:12:04 2009 From: vivekmrathod at gmail.com (vivek rathod) Date: Tue, 3 Mar 2009 19:42:04 +0530 Subject: [Ns-developers] how to get involved in ns-3 Message-ID: <8be4676d0903030612o198bb026pb4d0017814cc784f@mail.gmail.com> Hello all, i am new to ns 2/ ns3 . i want to get to the development side of ns-3. i have good knowledge and implementations skills in c++ and python. could you please tell me where to start. if there is some detailed resource for new developers please send me the link. thank you vivek From tomh at tomh.org Tue Mar 3 08:18:48 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 03 Mar 2009 08:18:48 -0800 Subject: [Ns-developers] how to get involved in ns-3 In-Reply-To: <8be4676d0903030612o198bb026pb4d0017814cc784f@mail.gmail.com> References: <8be4676d0903030612o198bb026pb4d0017814cc784f@mail.gmail.com> Message-ID: <49AD5868.2030000@tomh.org> vivek rathod wrote: > Hello all, > > i am new to ns 2/ ns3 . i want to get to the development side of ns-3. i > have good knowledge and implementations skills in c++ and python. > > could you please tell me where to start. if there is some detailed resource > for new developers please send me the link. > > thank you > > vivek Vivek, For starters, you can browse this page: http://www.nsnam.org/contributing.html and also our wiki, tutorial, and manual. If you are looking for a project idea, we have listed several on our GSOC page: http://www.nsnam.org/wiki/index.php/Gsoc2009 - Tom From tomh at tomh.org Tue Mar 3 10:15:39 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 03 Mar 2009 10:15:39 -0800 Subject: [Ns-developers] Tracing Rework In-Reply-To: <1236010346.10216.17.camel@mathieu-laptop> References: <39D40E947C8840CCA57BF4EE710826BB@CRAIGVAIO> <1235897009.6001.45.camel@mathieu-laptop> <1236010346.10216.17.camel@mathieu-laptop> Message-ID: <49AD73CB.9060609@tomh.org> > >> I can then >> >> 1) Remove the objectionable Sniffer (Ethernet frame) and tx complete trace >> sources from the wifi device; >> >> 2) Remove the unused rx start trace sources from the csma and point-to-point >> devices; >> >> 3) Remove the non-promiscuous sniffer helper code from the wifi-helper and >> leave yans-wifi-phy hooked to the promisc sniffer; >> >> 4) Write some words for the manual on this stuff. > > I think that the above would be fine. I agree with the above and with just documenting that there is a preferred list of trace sources for net devices but some devices only support a subset of the recommended sources. For the wifi promiscuous trace, it would be helpful to document that what is being traced corresponds to tcpdump "monitor" mode; namely, control and management frames are being captured. I think what you were trying to do with the ethernet header may be equivalent to the default "non-monitor" mode when tcpdump is run on a wireless interface. I think it is fine to just support monitor mode because there is much more information and because wireshark and tcpdump can display these extra frame traces. It would be useful to test, before you are done, that wireshark and tcpdump can still handle the promiscuous packet traces generated. Also, + .AddTraceSource ("PhyTxBackoff", + "Trace source indicating a packet has been delayed by the CSMA backoff process", + MakeTraceSourceAccessor (&CsmaNetDevice::m_phyTxBackoffTrace)) I thought you previously agreed that this trace source should be a mac level source? - Tom From tomh at tomh.org Tue Mar 3 10:21:16 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 03 Mar 2009 10:21:16 -0800 Subject: [Ns-developers] Regarding 802.15 MAC Layer In-Reply-To: <955e31df0903020622l56a5ca1bj173e3e43889aba74@mail.gmail.com> References: <955e31df0903020622l56a5ca1bj173e3e43889aba74@mail.gmail.com> Message-ID: <49AD751C.6070801@tomh.org> Ruturaj Dhekane wrote: > Hi, > > I am working on a Wireless Sensor Networks based research project. I would > like to simulate the WSN nodes. However 802.15.x MAC layer isnt currently > available with NS-3. > > I would like to have some pointers from the developer community regarding > writing our own MAC layer. (As in where do I begin, and How?) This is a piece of documentation that needs to be written. For starters, I would recommend starting by cloning the SimpleNetDevice and SimpleChannel found in src/node directory, and rename it to something else. This net device and channel simply pass packets between nodes. The next step might be to add a new header. A new header class needs to be written. the UDP header implementation (src/internet-node/ directory) probably is a simple-enough example of this. After some semblance of a header is being serialized to and from the packets, you can start to think of adding more logic and detail to the models; perhaps add a Phy class. For wireless channels, however, you will probably want to study the structure of the wifi netdevice before too long. > > Would also like to know certain fields in which I might be able to > contribute to NS-3 code in general. > > WPAN would be helpful since there seems to be a lot of interest. There is an ns-2 implementation from CUNY that might be portable. Also, see the earlier mail about GSOC project ideas. Tom From tomh at tomh.org Tue Mar 3 10:29:22 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 03 Mar 2009 10:29:22 -0800 Subject: [Ns-developers] how to get involved in ns-3 In-Reply-To: References: <8be4676d0903030612o198bb026pb4d0017814cc784f@mail.gmail.com> <49AD5868.2030000@tomh.org> Message-ID: <49AD7702.10000@tomh.org> > Hi Tom, > > on the contribution page, i found 3 tutorials, > > > * Marc Greis's tutorial > * Pedro Vale Estrela's help page > > * ns-3 for beginners > These were listed as examples of "user contributed" tutorials. I will update this web page shortly to avoid any confusion. In short, you probably want to look at the tutorials listed below. We have a project tutorial and manual available at: http://www.nsnam.org/tutorials.html Gustavo also contributed a tutorial recently (posted on the same page). Also, Mathieu and I just completed a tutorial yesterday that we will link from that page. Hope that helps, Tom From raj.b at gatech.edu Tue Mar 3 10:32:07 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 3 Mar 2009 13:32:07 -0500 Subject: [Ns-developers] Regression testing (Was: [Bug 370] ipv4-interface.h is installed) In-Reply-To: References: Message-ID: <12d69e490903031032y360ed9fawa80e3dc0eadb3b74@mail.gmail.com> On Tue, Mar 3, 2009 at 6:32 AM, Gustavo Carneiro wrote: > > > 2009/3/2 Raj Bhattacharjea >> >> On Mon, Mar 2, 2009 at 12:29 PM, Gustavo Carneiro >> wrote: >> > >> > One thing is not clear, however.? If you have a patch to test, you have >> > to >> > commit it first, and only then can you test it, since the regression >> > script >> > takes a branch name, not a repository.? Doesn't it kind of defeat the >> > purpose?? If a problem is detected in the patch, it will already be too >> > late >> > because it was already committed... >> > >> > I hope we are not supposed to create a new temporary branch for each >> > patch >> > we wish to test.? If so, you can expect me to never commit a patch again >> > during a maintenance period.? No offense, but I simply don't have time >> > or >> > patience to jump through all these hoops in order to fix a bug. >> > >> >> I see your concern; you've convinced me. ?I am willing to wait for the >> nightly test to run to see if someone broke the build on other >> platforms. ?Lets say it would be _nice_ if you could test on >> ns-regression, but it isn't mandatory to bugfix. >> >> This practice however will be strictly enforced in the week or so >> leading up to the release, as you suggest. > > Thanks. > > But I am noticing a new problem now.? I run the ns-3-run-tests.sh script > with a -m option, to send email with the results, but the script still keeps > running in the foreground.? Since the wiki page says it can take several > hours to complete, I need to be able to logout, but if I hit Ctrl-C the > regression testing is aborted.? nohup script & does not work because I have > no write permission to the file system.? I was expecting the tests to run in > background when -m option is given. > If you want to use nohup, I believe everyone has write permissions in the /tmp directory: cd /tmp nohup /usr/local/bin/ns-3-run-tests.sh -r ... -m ... & I think you can also use screen instead of nohup to accomplish this, but I am not very well versed in using that tool. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Tue Mar 3 10:43:12 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 3 Mar 2009 13:43:12 -0500 Subject: [Ns-developers] ns-3.4 release plans In-Reply-To: <49AD3667.6010800@tomh.org> References: <12d69e490901071434g1024a72fgdc5dfb74b9184c72@mail.gmail.com> <12d69e490903020859i75806b65l975144697687affc@mail.gmail.com> <49AD3667.6010800@tomh.org> Message-ID: <12d69e490903031043i4a21b86fq34d11b1835bae53b@mail.gmail.com> On Tue, Mar 3, 2009 at 8:53 AM, Tom Henderson wrote: > Raj Bhattacharjea wrote: > >>> From March 1st, release candidates will be released. ?The bug count >>> should >>> ideally be zero during this time, and any remaining bugs discovered will >>> be >>> ironed out by the the 18th of March, when the final release of ns3.4 is >>> made. >> >> I suggest we push this back to March 19. ?We have adopted a policy of >> consider P1 bugs as those which are broken behavior, and will be true >> blockers which will hold up the _release candidates_; ?that is, there >> will be no P1 bugs in ns-3.4-RC1 (otherwise, how is it a candidate for >> release?). ?Any bugs found from beating on RC1 will be fixed and >> posted as RC2, etc. > > Raj, > I'm OK with slipping the release two weeks if it means that we will get all > of the outstanding P1 bugs in your list fixed. ?However, I think we should > carefully consider whether additional bugs that come in will keep slipping > the release further. ?There is another option to slipping, which is to list > open bugs as "known issues", and perhaps even to later do a small > maintenance release. ?So, I would suggest that we try not to slip the > release further unless a major issue comes up that can't be fixed by April > 1. I like this idea. We should triage bugs that keep coming in, and at some point we'll have to draw a line and acknowledge that there are known issues in the release, but make the release anyway, since we can't hold up forever. A maintenance release like ns-3.2.1 sounds like a good idea. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Tue Mar 3 10:46:24 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 3 Mar 2009 13:46:24 -0500 Subject: [Ns-developers] Request to commit -fvisbility=hidden python bindings patch In-Reply-To: References: Message-ID: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> On Tue, Mar 3, 2009 at 9:48 AM, Gustavo Carneiro wrote: > Hi Raj, > > May I commit the patch at [1] for ns 3.4?? It decreases python bindings size > (from 6 to 5 MB) and decreases its loading time (didn't measure, but the > documentation [2] claims it to be so...). Looks good, go ahead. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Tue Mar 3 10:50:22 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 3 Mar 2009 13:50:22 -0500 Subject: [Ns-developers] Request to commit -fvisbility=hidden python bindings patch In-Reply-To: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> Message-ID: <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> On Tue, Mar 3, 2009 at 1:46 PM, Raj Bhattacharjea wrote: > On Tue, Mar 3, 2009 at 9:48 AM, Gustavo Carneiro wrote: >> Hi Raj, >> >> May I commit the patch at [1] for ns 3.4?? It decreases python bindings size >> (from 6 to 5 MB) and decreases its loading time (didn't measure, but the >> documentation [2] claims it to be so...). > > Looks good, go ahead. BTW, I guess the result of yesterday's discussion regarding regression testing / bug 370 is that maintainers DON'T need permission to push changes during this phase. We will however, transition to that mode of operation at some point in the future, say the last week or two of this month -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From craigdo at ee.washington.edu Tue Mar 3 11:10:22 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Tue, 3 Mar 2009 11:10:22 -0800 Subject: [Ns-developers] Request to commit -fvisbility=hidden pythonbindings patch In-Reply-To: <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> Message-ID: <92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> > BTW, I guess the result of yesterday's discussion regarding regression > testing / bug 370 is that maintainers DON'T need permission to push > changes during this phase. We will however, transition to that mode > of operation at some point in the future, say the last week or two of > this month I found there were two periods when it was extremely helpful to lock down the dev repo and run *all* the tests before continuing. It's not as critical at other times ... 1) When major merges were happening -- I called this merge week. We really want to demonstrate that a new feature is going run on all of our supported platforms (yes, including Cygwin and osx ppc, not just on a subset of compilers). We want to make sure that new bits will run properly and not break existing code. It's really impossible to determine this against a moving target. I had times in which virtually everyone was committing changes to this or that module while we were trying to merge something new in. It's extremely painful at a minimum. I believe you have had the pleasure of experiencing this kind of thing, Raj :-) 2) During the code freeze/RC period. We are really striving for stability here. It is a really, really bad sign for the system to be broken in any way during this time. It would be bad for RC-n to come due and to have the release manager run the tests and discover that the system was broken the week before by a "bug fix." I think the release manager really needs help from the developers to make sure this doesn't happen; and I think we should start helping out perhaps a week before RC1 by starting to run all of these tests when we make changes. More testing eyes make for less catastrophic problems, so to speak. FWIW -- Craig From gjcarneiro at gmail.com Tue Mar 3 11:16:55 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 3 Mar 2009 19:16:55 +0000 Subject: [Ns-developers] Request to commit -fvisbility=hidden pythonbindings patch In-Reply-To: <92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> <92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> Message-ID: 2009/3/3 > > > BTW, I guess the result of yesterday's discussion regarding regression > > testing / bug 370 is that maintainers DON'T need permission to push > > changes during this phase. We will however, transition to that mode > > of operation at some point in the future, say the last week or two of > > this month > > I found there were two periods when it was extremely helpful to lock down > the dev repo and run *all* the tests before continuing. It's not as > critical at other times ... Craig, I don't understand what you mean by "*all* the tests". We have automated regression testing on several platforms and compilers. What more can we do manually, and why can't that manual work be done automatically by the build farm? > > > 1) When major merges were happening -- I called this merge week. We really > want to demonstrate that a new feature is going run on all of our supported > platforms (yes, including Cygwin and osx ppc, not just on a subset of > compilers). We want to make sure that new bits will run properly and not > break existing code. It's really impossible to determine this against a > moving target. I had times in which virtually everyone was committing > changes to this or that module while we were trying to merge something new > in. It's extremely painful at a minimum. I believe you have had the > pleasure of experiencing this kind of thing, Raj :-) > > 2) During the code freeze/RC period. We are really striving for stability > here. It is a really, really bad sign for the system to be broken in any > way during this time. It would be bad for RC-n to come due and to have the > release manager run the tests and discover that the system was broken the > week before by a "bug fix." I think the release manager really needs help > from the developers to make sure this doesn't happen; and I think we should > start helping out perhaps a week before RC1 by starting to run all of these > tests when we make changes. More testing eyes make for less catastrophic > problems, so to speak. Since we have regression testing, perhaps what we need is just to add more regression tests, as needed, not manually test things before releases. The main advantage of nightly regression tests is that you find out the next day if your commit broke something. If you only test for releases then it becomes much harder to determine what commit broke things, and how to fix. -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From ruben at net.t-labs.tu-berlin.de Tue Mar 3 11:35:41 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Tue, 03 Mar 2009 20:35:41 +0100 Subject: [Ns-developers] Request to commit -fvisbility=hidden pythonbindings patch In-Reply-To: <92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> <92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> Message-ID: <49AD868D.2010708@net.t-labs.tu-berlin.de> craigdo at ee.washington.edu wrote: >> BTW, I guess the result of yesterday's discussion regarding regression >> testing / bug 370 is that maintainers DON'T need permission to push >> changes during this phase. We will however, transition to that mode >> of operation at some point in the future, say the last week or two of >> this month > > I found there were two periods when it was extremely helpful to lock down > the dev repo and run *all* the tests before continuing. It's not as > critical at other times ... > > 1) When major merges were happening -- I called this merge week. We really > want to demonstrate that a new feature is going run on all of our supported > platforms (yes, including Cygwin and osx ppc, not just on a subset of > compilers). We want to make sure that new bits will run properly and not > break existing code. It's really impossible to determine this against a > moving target. I had times in which virtually everyone was committing > changes to this or that module while we were trying to merge something new > in. It's extremely painful at a minimum. I believe you have had the > pleasure of experiencing this kind of thing, Raj :-) I don't have lots of experience with this kind of issues, so maybe there is something I'm missing... Why don't you use a separate branch when this kind of merge happens? I.e. having a merge branch where you selectively apply and test each new feature separately? Best, Ruben > 2) During the code freeze/RC period. We are really striving for stability > here. It is a really, really bad sign for the system to be broken in any > way during this time. It would be bad for RC-n to come due and to have the > release manager run the tests and discover that the system was broken the > week before by a "bug fix." I think the release manager really needs help > from the developers to make sure this doesn't happen; and I think we should > start helping out perhaps a week before RC1 by starting to run all of these > tests when we make changes. More testing eyes make for less catastrophic > problems, so to speak. > > FWIW > > -- Craig > > From gjcarneiro at gmail.com Tue Mar 3 12:05:31 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 3 Mar 2009 20:05:31 +0000 Subject: [Ns-developers] Request to commit -fvisbility=hidden pythonbindings patch In-Reply-To: <49AD868D.2010708@net.t-labs.tu-berlin.de> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> <92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> <49AD868D.2010708@net.t-labs.tu-berlin.de> Message-ID: 2009/3/3 Ruben Merz > > craigdo at ee.washington.edu wrote: > >> BTW, I guess the result of yesterday's discussion regarding regression > >> testing / bug 370 is that maintainers DON'T need permission to push > >> changes during this phase. We will however, transition to that mode > >> of operation at some point in the future, say the last week or two of > >> this month > > > > I found there were two periods when it was extremely helpful to lock down > > the dev repo and run *all* the tests before continuing. It's not as > > critical at other times ... > > > > 1) When major merges were happening -- I called this merge week. We > really > > want to demonstrate that a new feature is going run on all of our > supported > > platforms (yes, including Cygwin and osx ppc, not just on a subset of > > compilers). We want to make sure that new bits will run properly and > not > > break existing code. It's really impossible to determine this against a > > moving target. I had times in which virtually everyone was committing > > changes to this or that module while we were trying to merge something > new > > in. It's extremely painful at a minimum. I believe you have had the > > pleasure of experiencing this kind of thing, Raj :-) > > I don't have lots of experience with this kind of issues, so maybe there > is something I'm missing... Why don't you use a separate branch when > this kind of merge happens? I.e. having a merge branch where you > selectively apply and test each new feature separately? That is a great idea if: 1) the branch is common for all developers to-be-merged patches 2) nightly regression tests also test that branch > > > Best, > Ruben > > > 2) During the code freeze/RC period. We are really striving for > stability > > here. It is a really, really bad sign for the system to be broken in any > > way during this time. It would be bad for RC-n to come due and to have > the > > release manager run the tests and discover that the system was broken the > > week before by a "bug fix." I think the release manager really needs > help > > from the developers to make sure this doesn't happen; and I think we > should > > start helping out perhaps a week before RC1 by starting to run all of > these > > tests when we make changes. More testing eyes make for less catastrophic > > problems, so to speak. > > > > FWIW > > > > -- Craig > > > > > > > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From raj.b at gatech.edu Tue Mar 3 13:41:02 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 3 Mar 2009 16:41:02 -0500 Subject: [Ns-developers] Request to commit -fvisbility=hidden python bindings patch In-Reply-To: References: Message-ID: <12d69e490903031341y7a6e3389n646b0ba373227397@mail.gmail.com> On Tue, Mar 3, 2009 at 9:48 AM, Gustavo Carneiro wrote: > Hi Raj, > > May I commit the patch at [1] for ns 3.4?? It decreases python bindings size > (from 6 to 5 MB) and decreases its loading time (didn't measure, but the > documentation [2] claims it to be so...). > > Regards, > > [1] http://www.nsnam.org/bugzilla/show_bug.cgi?id=515 > [2] http://gcc.gnu.org/wiki/Visibility Do the python bindings need a rescan following this change? I am getting cryptic errors out of a fresh copy of ns-3-dev that seem to go away after I run ./waf --python-scan . -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From craigdo at ee.washington.edu Tue Mar 3 14:37:11 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Tue, 3 Mar 2009 14:37:11 -0800 Subject: [Ns-developers] Request to commit -fvisbility=hidden pythonbindings patch In-Reply-To: <49AD868D.2010708@net.t-labs.tu-berlin.de> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> <92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> <49AD868D.2010708@net.t-labs.tu-berlin.de> Message-ID: <2FD1445B51AC41F79B620AAA2B7A2435@CRAIGVAIO> > I don't have lots of experience with this kind of issues, so > maybe there > is something I'm missing... Why don't you use a separate branch when > this kind of merge happens? I.e. having a merge branch where you > selectively apply and test each new feature separately? We are merging private branches into the main development branch, which then becomes a release candidate, which then becomes a release. It is the main development branch we want to make sure works. It's hard to test a moving target, so during the time when lots of things are being merged into ns-3-dev, it is useful to have some controls in place regarding who is doing what. Now, you could take a snapshot of the development branch and call it a pre-release branch, but then you run into coherency problems, with bug fixes applied to one branch and not the other, or bug fixes in one branch depending on other things not applied to the other. It's up to the release manager how he wants to deal with this. I chose to have one real working branch named ns-3-dev. -- Craig From craigdo at ee.washington.edu Tue Mar 3 14:41:05 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Tue, 3 Mar 2009 14:41:05 -0800 Subject: [Ns-developers] Request to commit -fvisbility=hiddenpythonbindings patch In-Reply-To: References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com><12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com><92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> Message-ID: > Craig, I don't understand what you mean by "*all* the tests". We have > automated regression testing on several platforms and > compilers. What more > can we do manually, and why can't that manual work be done > automatically by > the build farm? Cygwin is a supported platform but there is no way to test it since there is no VM. There are examples that are not part of the main regression test suite since manual configuration or intervention is required (emu, tap). There are contrib pieces that need to be run and output interpreted (Joe's statistics stuff). There is the wifi-ad-hoc experiment stuff that needs to be run to make sure it didn't get broken. I'm sure there are more, but this is just off the top of my head. Tom is really good at finding stuff like this :-) We should have fully automated tests, but we just aren't there yet. -- Craig From ruben at net.t-labs.tu-berlin.de Tue Mar 3 14:59:08 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Tue, 03 Mar 2009 23:59:08 +0100 Subject: [Ns-developers] Request to commit -fvisbility=hiddenpythonbindings patch In-Reply-To: References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com><12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com><92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> Message-ID: <49ADB63C.7010301@net.t-labs.tu-berlin.de> craigdo at ee.washington.edu wrote: >> Craig, I don't understand what you mean by "*all* the tests". We have >> automated regression testing on several platforms and >> compilers. What more >> can we do manually, and why can't that manual work be done >> automatically by >> the build farm? > > Cygwin is a supported platform but there is no way to test it since there is > no VM. There are examples that are not part of the main regression test > suite since manual configuration or intervention is required (emu, tap). > There are contrib pieces that need to be run and output interpreted (Joe's > statistics stuff). There is the wifi-ad-hoc experiment stuff that needs to > be run to make sure it didn't get broken. I'm sure there are more, but this > is just off the top of my head. Tom is really good at finding stuff like > this :-) What is the wifi-ad-hoc experiment stuff? Ruben > We should have fully automated tests, but we just aren't there yet. > > -- Craig > > From craigdo at ee.washington.edu Tue Mar 3 16:24:51 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Tue, 3 Mar 2009 16:24:51 -0800 Subject: [Ns-developers] Request to commit -fvisbility=hiddenpythonbindings patch In-Reply-To: <49ADB63C.7010301@net.t-labs.tu-berlin.de> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com><12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com><92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> <49ADB63C.7010301@net.t-labs.tu-berlin.de> Message-ID: <5CE778835A754628895372FB13FE4A63@CRAIGVAIO> > What is the wifi-ad-hoc experiment stuff? examples/wifi-adhoc.cc Questions about why it takes so long to run, or whether it is broken or not pop up on the list every once in a while. -- Craig From ruben at net.t-labs.tu-berlin.de Wed Mar 4 01:35:36 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Wed, 04 Mar 2009 10:35:36 +0100 Subject: [Ns-developers] wifi-adhoc.cc (was Re: Request to commit -fvisbility=hiddenpythonbindings patch) In-Reply-To: <5CE778835A754628895372FB13FE4A63@CRAIGVAIO> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com><12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com><92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> <49ADB63C.7010301@net.t-labs.tu-berlin.de> <5CE778835A754628895372FB13FE4A63@CRAIGVAIO> Message-ID: <49AE4B68.1000309@net.t-labs.tu-berlin.de> craigdo at ee.washington.edu wrote: >> What is the wifi-ad-hoc experiment stuff? > > examples/wifi-adhoc.cc > > Questions about why it takes so long to run, or whether it is broken or not > pop up on the list every once in a while. So, is there anything that could/should be done about it: documentation? more explicit logging? a test to check it is not broken? a rewrite? Any other suggestion? Ruben > -- Craig > > -- Ruben Merz Deutsche Telekom Laboratories http://www.net.t-labs.tu-berlin.de/people/ruben_merz.shtml From timo.bingmann at student.kit.edu Wed Mar 4 02:43:49 2009 From: timo.bingmann at student.kit.edu (Timo Bingmann) Date: Wed, 4 Mar 2009 11:43:49 +0100 Subject: [Ns-developers] Tracing Rework In-Reply-To: References: <1235897009.6001.45.camel@mathieu-laptop> Message-ID: <200903041143.49266.timo.bingmann@student.kit.edu> Hello guys, am I correct that these trace sources are supposed to provide a common interface for all net devices? And this common interface is then used to create different types of tcpdump files. I noticed that you added a phyRxDropTrace to YansWifiPhy. I did the same in my testing code, but obviously I was more interested in the reason why the packet was dropped. The reason is indicated to the callback via an enum parameter. Beyond the drop reason there is a lot of interesting information that should also be passed to the trace callback. So how does this match up with your work on a common trace interface? Does that mean there are two subsequent trace sources calls: m_phyRxDropTrace(packet); m_phyRxDropTraceDetailed(packet, reason, rxPower, snr, ...); ? I for my part believe that there should be a common set of (optional) relative trace paths / names: MacTxStart, MacRxEnd, PhyRxDrop, PhyRxEnd. However the parameters must be adaptable to whatever interesting information the device has to export. These parameters must then be reconciled (i.e. dropped) in the helper module implementing the tcpdump output callback. Greetings Timo From gjcarneiro at gmail.com Wed Mar 4 02:55:47 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Wed, 4 Mar 2009 10:55:47 +0000 Subject: [Ns-developers] Request to commit -fvisbility=hidden python bindings patch In-Reply-To: <12d69e490903031341y7a6e3389n646b0ba373227397@mail.gmail.com> References: <12d69e490903031341y7a6e3389n646b0ba373227397@mail.gmail.com> Message-ID: 2009/3/3 Raj Bhattacharjea > On Tue, Mar 3, 2009 at 9:48 AM, Gustavo Carneiro > wrote: > > Hi Raj, > > > > May I commit the patch at [1] for ns 3.4? It decreases python bindings > size > > (from 6 to 5 MB) and decreases its loading time (didn't measure, but the > > documentation [2] claims it to be so...). > > > > Regards, > > > > [1] http://www.nsnam.org/bugzilla/show_bug.cgi?id=515 > > [2] http://gcc.gnu.org/wiki/Visibility > > Do the python bindings need a rescan following this change? I am > getting cryptic errors out of a fresh copy of ns-3-dev that seem to go > away after I run ./waf --python-scan . No re-scanning is needed, but the bindings .cc files need to be regenerated. Unfortunately the build system does not trigger a rebuild of the bindings when the required pybindgen version changes. As a work around, just rm -rf build/debug/bindings. Sorry about that. -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From gjcarneiro at gmail.com Wed Mar 4 06:54:22 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Wed, 4 Mar 2009 14:54:22 +0000 Subject: [Ns-developers] Request to commit -fvisbility=hidden python bindings patch In-Reply-To: References: <12d69e490903031341y7a6e3389n646b0ba373227397@mail.gmail.com> Message-ID: 2009/3/4 Gustavo Carneiro > > > 2009/3/3 Raj Bhattacharjea > >> On Tue, Mar 3, 2009 at 9:48 AM, Gustavo Carneiro >> wrote: >> > Hi Raj, >> > >> > May I commit the patch at [1] for ns 3.4? It decreases python bindings >> size >> > (from 6 to 5 MB) and decreases its loading time (didn't measure, but the >> > documentation [2] claims it to be so...). >> > >> > Regards, >> > >> > [1] http://www.nsnam.org/bugzilla/show_bug.cgi?id=515 >> > [2] http://gcc.gnu.org/wiki/Visibility >> >> Do the python bindings need a rescan following this change? I am >> getting cryptic errors out of a fresh copy of ns-3-dev that seem to go >> away after I run ./waf --python-scan . > > > No re-scanning is needed, but the bindings .cc files need to be > regenerated. Unfortunately the build system does not trigger a rebuild of > the bindings when the required pybindgen version changes. As a work around, > just rm -rf build/debug/bindings. Sorry about that. > regression build farm showed it was a different problem. Apparently, gcc 4.x doesn't always support -fvisibility=hidden. Maybe it's a platform specific flag. In any case, should be fixed now, although I'm still waiting for confirmation from the build farm. > > > -- > Gustavo J. A. M. Carneiro > INESC Porto, Telecommunications and Multimedia Unit > "The universe is always one step beyond logic." -- Frank Herbert > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mathieu.lacage at sophia.inria.fr Wed Mar 4 07:36:23 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 04 Mar 2009 16:36:23 +0100 Subject: [Ns-developers] api breakage: bug 482 In-Reply-To: <1235562457.11372.18.camel@diese.inria.fr> References: <1235562457.11372.18.camel@diese.inria.fr> Message-ID: <1236180983.15903.15.camel@diese.inria.fr> it appears that we have most votes for: - StaticMobilityModel -> ConstantPositionMobilityModel - StaticSpeedMobilityModel -> ConstantVelocityMobilityModel - ConstantAccelerationMobilityModel Raj: are you ok if I push this fairly safe but potentially painful (for users) change sometime this week or next week ? Is there someone who is going to hate me for breaking their application code ? Mathieu On Wed, 2009-02-25 at 12:47 +0100, Mathieu Lacage wrote: > hi, > > This is an email asking for input on how to fix bug 482. Two options: > > 1) rename existing classes and add a new one: > - StaticMobilityModel -> ConstantPositionMobilityModel > - StaticSpeedMobilityModel -> ConstantSpeedMobilityModel > - ConstantAccelerationMobilityModel > > 2) add a new class: > - StaticAccelerationMobilityModel > > I don't care at all which option should be chosen but gustavo seems to > like 1) better which will break API while 2) won't break any API. Unless > there are dissenting voices, I would tend to follow him. Opinions ? Dear > RM ? > > Mathieu > From mathieu.lacage at sophia.inria.fr Wed Mar 4 08:01:37 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 04 Mar 2009 17:01:37 +0100 Subject: [Ns-developers] creating mercurial repos on code.nsnam.org Message-ID: <1236182497.15903.19.camel@diese.inria.fr> hi, I just noticed that recent versions of mercurial now support ssh-based remote repository creation: -bash-3.2$ hg init ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml -bash-3.2$ hg push ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml pushing to ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml searching for changes alternatively the following also would work: -bash-3.2$ hg clone . ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml regards, Mathieu From mathieu.lacage at sophia.inria.fr Wed Mar 4 08:09:46 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 04 Mar 2009 17:09:46 +0100 Subject: [Ns-developers] xml config store Message-ID: <1236182986.15903.28.camel@diese.inria.fr> hi, By popular demand, I hacked together support for global and default values, and xml input and output in ConfigStore: http://code.nsnam.org/mathieu/ns-3-xml The API: int main (...) { CommandLine cmd; cmd.Parse (...); ConfigStore config; config.ConfigureEarly (); ... topology creation config.ConfigureLate (); Simulator::Run (); } The above can be controlled from the command-line: ./build/debug/examples/csma-broadcast --ns3::ConfigStore::FileFormat=Xml --ns3::ConfigStore::Mode=Save --ns3::ConfigStore::Filename=config.txt ./build/debug/examples/csma-broadcast --ns3::ConfigStore::FileFormat=Xml --ns3::ConfigStore::Mode=Load --ns3::ConfigStore::Filename=config.txt and the file looks like this (full example attached to this email): ... ... Of course, you can write your own configuration file to specify only a subset of the above in any order, of course. I don't really have enough time to add the necessary code to GtkConfigStore to display the global and default values from ConfigureEarly and to add a dtd/xml schema so, I would tend to leave these as an exercise for interested users/developers. Mathieu -------------- next part -------------- From gjcarneiro at gmail.com Wed Mar 4 08:16:46 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Wed, 4 Mar 2009 16:16:46 +0000 Subject: [Ns-developers] creating mercurial repos on code.nsnam.org In-Reply-To: <1236182497.15903.19.camel@diese.inria.fr> References: <1236182497.15903.19.camel@diese.inria.fr> Message-ID: 2009/3/4 Mathieu Lacage > hi, > > I just noticed that recent versions of mercurial now support ssh-based > remote repository creation: > > -bash-3.2$ hg init > ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml > -bash-3.2$hg push > ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml > pushing to ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml > searching for changes > > > alternatively the following also would work: > -bash-3.2$ hg clone . > ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml Personally, I already knew this for a long time [1], but doesn't doing this trigger that huge email to the commits list with all the changesets? [1] the reason was that when I complained that it was bad that mercurial incompatibly changed repository file storage format in a micro version upgrade, I was told I should have been doing the hg clone . remote-url trick instead of manually copying the files, to avoid the problem. -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mathieu.lacage at sophia.inria.fr Wed Mar 4 08:26:47 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 04 Mar 2009 17:26:47 +0100 Subject: [Ns-developers] creating mercurial repos on code.nsnam.org In-Reply-To: References: <1236182497.15903.19.camel@diese.inria.fr> Message-ID: <1236184007.26232.2.camel@diese.inria.fr> On Wed, 2009-03-04 at 16:16 +0000, Gustavo Carneiro wrote: > > alternatively the following also would work: > -bash-3.2$ hg clone . > ssh://mathieu at code.nsnam.org/repositories/mathieu/ns-3-xml > > Personally, I already knew this for a long time [1], but doesn't doing > this trigger that huge email to the commits list with all the > changesets? yes, but, is that a problem (it's not for me) ? > > [1] the reason was that when I complained that it was bad that > mercurial incompatibly changed repository file storage format in a > micro version upgrade, I was told I should have been doing the hg > clone . remote-url trick instead of manually copying the files, to > avoid the problem. yes, copying mercurial repos _across_ machines is a tricky business. > Mathieu From craigdo at ee.washington.edu Wed Mar 4 09:30:51 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Wed, 4 Mar 2009 09:30:51 -0800 Subject: [Ns-developers] wifi-adhoc.cc In-Reply-To: <49AE4B68.1000309@net.t-labs.tu-berlin.de> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com><12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com><92AC04275A0F4B71A641CFF2CED17415@CRAIGVAIO> <49ADB63C.7010301@net.t-labs.tu-berlin.de> <5CE778835A754628895372FB13FE4A63@CRAIGVAIO> <49AE4B68.1000309@net.t-labs.tu-berlin.de> Message-ID: > >> What is the wifi-ad-hoc experiment stuff? > > > > examples/wifi-adhoc.cc > > > > Questions about why it takes so long to run, or whether it > is broken or not > > pop up on the list every once in a while. > > So, is there anything that could/should be done about it: > documentation? > more explicit logging? a test to check it is not broken? a > rewrite? Any > other suggestion? There are a few issues here that I think run much deeper than adding a few lines of code, or even writing some words. - We are using most of the example programs to do double-duty as regression tests. This is not a good long-term solution for testing. We need a "real" test strategy, test harness and test programs to fully exercise our system. The examples should be treated as examples. - There really isn't any strategy for what kind of examples should be present to lead users through the system. IMO, ideally, the example programs should be tied to a tutorial and documentation system; and what the examples do and how they behave should be very thoroughly explained. - If I remember correctly, only three of those example programs have any kind of documentation associated with them and this is all in the single tutorial. Many of the examples are really mostly smoke-test programs that show a little about how to use a facility. - There should be some kind of "directory" documentation pointing to examples indexed by common tasks. For example, if someone wants to learn how to do real experiments on a wifi network, they should be able to go to our documentation and look up wifi. There, they should find tutorials on how to understand some simple examples, and find a path that progresses them to eventually work with something like wifi-adhoc and explain what it does, why it may take a long time to run, and how they can make a few simple changes. So, in order to sort this out I think we need to work on defining a test strategy and stop using examples as test programs. Then I think this becomes primarily a documentation issue. We need some consistent kind of documentation structure in which to document and "tutorialize" the resulting examples, with some real strategy on what kind of examples we need and how they tie into a larger picture. The problem, of course, is that I just described dedicated an ns-3 world with test and documentation organizations filled with test engineers and writers. We don't have these people. Perhaps the best thing to do is to find fairly dedicated maintainers for a test system and documentation. A couple of us have been trying to keep some level of dox and tests in place, but we are very wanting in those departments. Regards, -- Craig From craigdo at ee.washington.edu Wed Mar 4 09:59:02 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Wed, 4 Mar 2009 09:59:02 -0800 Subject: [Ns-developers] Tracing Rework In-Reply-To: <200903041143.49266.timo.bingmann@student.kit.edu> References: <1235897009.6001.45.camel@mathieu-laptop> <200903041143.49266.timo.bingmann@student.kit.edu> Message-ID: <4E6A1A63A4BD4CAF990C96544981A03C@CRAIGVAIO> > am I correct that these trace sources are supposed to provide > a common interface for all net devices? And this common > interface is then used to create different types of tcpdump files. I think we just decided that there should be a set of standard trace source names across net devices. It is up to the net device author which of these trace sources he or she wants to implement. Two of these trace sources are used for pcap tracing: Sniffer and PromiscSniffer. "Sniffer" has some problems, so "PromiscSniffer" is the "standard" and corresponds to what kinds of packets would be displayed in a tcpdump. Helpers turn the sniffed packets into pcap files as they currently do. > I noticed that you added a phyRxDropTrace to YansWifiPhy. I > did the same in my testing code, but obviously I was more > interested in the reason why the packet was dropped. The > reason is indicated to the callback via an enum parameter. > Beyond the drop reason there is a lot of interesting > information that should also be passed to the trace callback. This touches on one of the issues I've been wrestling with: what it is that actually comes over the callback. There are conflicting goals. On one hand, the whole point of the tracing system is to allow you to trace whatever it is you feel is appropriate, and pass whatever information in whatever form you need in the callback. The other is usability. In many of our devices, we've been trying to make the common trace hooks behave similarly. The tricky part is to get the balance between usability and usefulness right :-) The previous incarnation of the tracing hooks clearly didn't provide enough information. There were hooks called, "Drop" that were sometimes called in the tx path, sometimes called in the rx path and sometimes not called at all. There clearly was a need to do more. So the 64,000 euro question is: how far can we take this today. I've come to the conclusion that a statement of basic policy and the definition and implementation of a reasonable set of the trace hooks is about as much as I can do in the next couple of days. > So how does this match up with your work on a common trace > interface? Does that mean there are two subsequent trace > sources calls: > m_phyRxDropTrace(packet); > m_phyRxDropTraceDetailed(packet, reason, rxPower, snr, ...); > ? This lines up with what I was thinking. The name "PhyRxDrop" is a standard name indicating rough enough semantics that a user of a net device might suspect this trace source is implemented and of interest to her. Since, as I mentioned in another email, the contents of the packet passed back may be in various states of assembly and disassembly, you cannot just blindly use this trace source. You have got to figure out what passed to you in the callback. This could just as easily mean, "what list of parameters with what contents" as it could mean, "packets with llc/snap header and no Ethernet header." For example, I think it would be okay to see (pseudocode): CsmaNetDevice::m_phyRxDropTrace (packet); // with some implied reason for dropping a packet and YansWifiPhy::m_phyRxDropTrace (packet, SOME_WIFI_REASON, rxPower, ...); It's just that I really don't have the time to think through each trace source in the system and figure out what the useful set of parameters should be. > I for my part believe that there should be a common set of > (optional) relative trace paths / names: MacTxStart, > MacRxEnd, PhyRxDrop, PhyRxEnd. Sounds good. > However the parameters must be adaptable to whatever > interesting information the device has to export. > These parameters must then be reconciled (i.e. dropped) in > the helper module implementing the tcpdump output callback. I think this is in the spirit of the ns-3 tracing system. Regards, -- Craig From tjkopena at cs.drexel.edu Wed Mar 4 10:10:08 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 4 Mar 2009 13:10:08 -0500 Subject: [Ns-developers] NAT model for ns3--Gsoc2009 idea In-Reply-To: References: Message-ID: <13786f330903041010w7fafc968hb99acd6a78f5178c@mail.gmail.com> On Wed, Mar 4, 2009 at 3:31 AM, kaushik saurabh wrote: > *ns-3 reference manual > *ns-3 tutorial > *doxygen documentation > *linux networking > *and trying to parse the source code of ns-3, which i hv downloaded from > mercurial. > > I need some some help that is > Do u think, i should add some more things to my ToDo list?? > > If u think, there is something else i should go through, > and u would like to suggest me some more readings, > please do so! Hi Kaushik, Those all look like good places to start with ns-3. Getting a good handle on writing scripts and developing applications or other components will help a lot when it comes time to come up with technical ideas and a plan to include in your GSOC application. On that note though, I want to note for everyone that GOSC organizations will not be announced for a few weeks yet, and we won't know until then whether or not we will have funding for any students. Of course, either way, we are always happy to have more and more people continue to use and develop ns-3. Thx! -- - joe kopena right here and now From nbaldo at cttc.es Wed Mar 4 01:46:51 2009 From: nbaldo at cttc.es (Nicola Baldo) Date: Wed, 04 Mar 2009 10:46:51 +0100 Subject: [Ns-developers] EURASIP Journal: Special Issue on Simulators and Experimental Test-beds Design and Development for Wireless Networks Message-ID: <49AE4E0B.7080407@cttc.es> Given all the discussions we had at WNS3, I think that some of you might be interested in the following CFP... Regards, Nicola -------------------------------------------------------------------------------------------------/ Our apologies if you receive multiple copies of this CFP. -------------------------------------------------------------------------------------------------/ EURASIP JOURNAL ON WIRELESS COMMUNICATIONS AND NETWORKING (WCN) SIMULATORS AND EXPERIMENTAL TESTBEDS DESIGN AND DEVELOPMENT FOR WIRELESS NETWORKS The manuscripts are due June 1st, 2009 The CFP can be found directly at: http://www.hindawi.com/journals/wcn/si/setb.html ---------------------------------------------------------------------------------------------------------------------------------- Call for Papers In the context of wireless networking, performance evaluation of protocols and distributed applications is generally conducted through simulation or experimentation campaigns. An efficient and accurate simulation of wireless networks raises various issues which generally need to be addressed from several research domains simultaneously. As examples, we can consider the wireless physical layer modeling and simulation, the support of large-scale networks, the simulation of complex RF systems such as MIMO ones, the emulation of wireless nodes or the interconnection of simulators, experimental testbeds, and so forth. The aim of this Special Issue is to bring together academic and industry researchers and practitioners from both the wireless networking and the simulation communities to discuss current and future trends in simulation or experimentation techniques, models, and practices for the future communication system and to foster interdisciplinary collaborative research in this area. The guest editors seek high-quality papers on aspects of wireless network simulation, and value both theoretical and practical research contributions. Topics of interest include, but are not limited to: * Radio medium modeling and cross-layer simulation * Scalability, large-scale networks support * Validation of simulators and simulation results * Simulators benchmarking and comparisons * Fluid-flow simulation for assessing QoS in large-scale networks * Support of new emerging technologies (WiMax, 3.5G, Wireless Mesh Networks, 802.11x, etc.) in simulators * Support of advanced RF systems (Multi-carrier schemes, MIMO, smart-antenna) in simulators * Wireless node simulation or emulation * Interoperability of simulators, emulators, and experiments * Support of distributed physical layer schemes (distributed signal processing; cooperative schemes) * Distributed simulation, and scalability of simulators * Implementation of simulators * Experimental testbeds for wireless networks * Methodology for protocol and distributed application performance evaluation * SDR techniques, cognitive radio approaches, dynamic spectrum access testbeds, and simulators as well as modeling * Simulation and testbeds for cooperative communication protocols Before submission, authors should carefully read over the journal's Author Guidelines, which are located at http://www.hindawi.com/journals/wcn/guidelines.html. Prospective authors should submit an electronic copy of their complete manuscript through the journal Manuscript Tracking System at http://mts.hindawi.com/, according to the following timetable: Manuscript Due: June 1, 2009 First Round of Reviews: September 1, 2009 Publication Date: December 1, 2009 Lead Guest Editor * Faouzi Bader , Centre Tecnol?gico de Telecomunicaciones de Cataluya (CTTC), PMT, Spain Guest Editors * Guillame Chelius , Institut National de Recherche en Informatique et en Automatique (INRA), France * Christian Ibars , Centre Tecnol?gico de Telecomunicaciones de Cataluya (CTTC), PMT, Spain * Mohamed Ibnkahla , Department of Electrical and Computer Engineering, Queen's University, Canada * Nikos Passas , Department of Informatics and Telecommunications, University of Athens, Greece * Arnd-Ragnar Rhiemeier , Defence Electronics, EADS Deutschland GmbH, Germany From tjkopena at cs.drexel.edu Wed Mar 4 11:21:22 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 4 Mar 2009 14:21:22 -0500 Subject: [Ns-developers] NAT model for ns3--Gsoc2009 idea In-Reply-To: References: <13786f330903041010w7fafc968hb99acd6a78f5178c@mail.gmail.com> Message-ID: <13786f330903041121o228f3c8em11a78a774c7ac969@mail.gmail.com> On Wed, Mar 4, 2009 at 1:35 PM, kaushik saurabh wrote: > can u just tell me little more on >>Getting a good handle on writing scripts >>developing applications or other components > > Is it that i should also focus on how to write good scripts as well..??? Hi Kaushik, I mean scripts in the sense of ns-3 simulations, which you can setup & run from either C++ or python. An important foundation for understanding the whole system and thinking about a project is simply being comfortable with creating new simulations---varying network topologies & devices, applications, etc. A simple point perhaps, but an important one. -- - joe kopena right here and now From roideuniverse at gmail.com Tue Mar 3 10:14:00 2009 From: roideuniverse at gmail.com (kaushik saurabh) Date: Tue, 3 Mar 2009 23:44:00 +0530 Subject: [Ns-developers] how to get involved in ns-3 In-Reply-To: <49AD5868.2030000@tomh.org> References: <8be4676d0903030612o198bb026pb4d0017814cc784f@mail.gmail.com> <49AD5868.2030000@tomh.org> Message-ID: On Tue, Mar 3, 2009 at 9:48 PM, Tom Henderson wrote: > vivek rathod wrote: > >> Hello all, >> >> i am new to ns 2/ ns3 . i want to get to the development side of ns-3. i >> have good knowledge and implementations skills in c++ and python. >> >> could you please tell me where to start. if there is some detailed >> resource >> for new developers please send me the link. >> >> thank you >> >> vivek >> > > Vivek, > For starters, you can browse this page: > http://www.nsnam.org/contributing.html > and also our wiki, tutorial, and manual. > > If you are looking for a project idea, we have listed several on our GSOC > page: > http://www.nsnam.org/wiki/index.php/Gsoc2009 > > - Tom > Hi Tom, on the contribution page, i found 3 tutorials, - Marc Greis's tutorial - Pedro Vale Estrela's help page - ns-3 for beginners if i dont read all the 3, and go with ns-3 for beginers, wiki and manual, i will be missing some important points , mentioned in the other 2 of them? -- Greetings, roide :) From roideuniverse at gmail.com Tue Mar 3 10:49:26 2009 From: roideuniverse at gmail.com (kaushik saurabh) Date: Wed, 4 Mar 2009 00:19:26 +0530 Subject: [Ns-developers] how to get involved in ns-3 In-Reply-To: <49AD7702.10000@tomh.org> References: <8be4676d0903030612o198bb026pb4d0017814cc784f@mail.gmail.com> <49AD5868.2030000@tomh.org> <49AD7702.10000@tomh.org> Message-ID: On Tue, Mar 3, 2009 at 11:59 PM, Tom Henderson wrote: > > Hi Tom, >> >> on the contribution page, i found 3 tutorials, >> >> * Marc Greis's tutorial >> * Pedro Vale Estrela's help page >> >> * ns-3 for beginners >> < >> http://www-sop.inria.fr/mistral/personnel/Eitan.Altman/COURS-NS/n3.pdf> >> > > These were listed as examples of "user contributed" tutorials. I will > update this web page shortly to avoid any confusion. In short, you probably > want to look at the tutorials listed below. > > We have a project tutorial and manual available at: > http://www.nsnam.org/tutorials.html > > Gustavo also contributed a tutorial recently (posted on the same page). > Also, Mathieu and I just completed a tutorial yesterday that we will link > from that page. > > Hope that helps, > Tom > hi, obviously that will help.i will go through all of them. There is one particular question i wanted to ask. i was thinking about the gsoc-2009 idea of NAT ipv4 implementation, and then extend it. As the idea states there is no support for NAT in ns-3, and i think there should be some kind of NAT support.! Can u just point me, which areas i should focus on while goint through the tutorials, and manuals, and exactly what area of code i should hit, when going through the source code of ns-3. Just a small hint would be enough for me! -- Greetings, roide :) From roideuniverse at gmail.com Wed Mar 4 00:31:09 2009 From: roideuniverse at gmail.com (kaushik saurabh) Date: Wed, 4 Mar 2009 14:01:09 +0530 Subject: [Ns-developers] NAT model for ns3--Gsoc2009 idea Message-ID: hi to ns-3 developers, i was interested in this idea of developing Nat model for ns-3. In order to write my application on this topic /* i m still in very early stages, and this is what i hv planned to do. */ i m going through *ns-3 reference manual *ns-3 tutorial *doxygen documentation *linux networking *and trying to parse the source code of ns-3, which i hv downloaded from mercurial. I need some some help that is Do u think, i should add some more things to my ToDo list?? If u think, there is something else i should go through, and u would like to suggest me some more readings, please do so! thanx. -- Greetings, roide From roideuniverse at gmail.com Wed Mar 4 11:29:01 2009 From: roideuniverse at gmail.com (kaushik saurabh) Date: Thu, 5 Mar 2009 00:59:01 +0530 Subject: [Ns-developers] NAT model for ns3--Gsoc2009 idea In-Reply-To: <13786f330903041121o228f3c8em11a78a774c7ac969@mail.gmail.com> References: <13786f330903041010w7fafc968hb99acd6a78f5178c@mail.gmail.com> <13786f330903041121o228f3c8em11a78a774c7ac969@mail.gmail.com> Message-ID: On Thu, Mar 5, 2009 at 12:51 AM, Joseph Kopena wrote: > On Wed, Mar 4, 2009 at 1:35 PM, kaushik saurabh > wrote: > > can u just tell me little more on > >>Getting a good handle on writing scripts > >>developing applications or other components > > > > Is it that i should also focus on how to write good scripts as well..??? > > Hi Kaushik, > > I mean scripts in the sense of ns-3 simulations, which you can setup & > run from either C++ or python. An important foundation for > understanding the whole system and thinking about a project is simply > being comfortable with creating new simulations---varying network > topologies & devices, applications, etc. A simple point perhaps, but > an important one. > > -- > - joe kopena > right here and now > yes. from where i see, this looks like a important one! :) -- Greetings, roide From roideuniverse at gmail.com Wed Mar 4 10:35:57 2009 From: roideuniverse at gmail.com (kaushik saurabh) Date: Thu, 5 Mar 2009 00:05:57 +0530 Subject: [Ns-developers] NAT model for ns3--Gsoc2009 idea In-Reply-To: <13786f330903041010w7fafc968hb99acd6a78f5178c@mail.gmail.com> References: <13786f330903041010w7fafc968hb99acd6a78f5178c@mail.gmail.com> Message-ID: On Wed, Mar 4, 2009 at 11:40 PM, Joseph Kopena wrote: > On Wed, Mar 4, 2009 at 3:31 AM, kaushik saurabh > wrote: > > *ns-3 reference manual > > *ns-3 tutorial > > *doxygen documentation > > *linux networking > > *and trying to parse the source code of ns-3, which i hv downloaded from > > mercurial. > > > > I need some some help that is > > Do u think, i should add some more things to my ToDo list?? > > > > If u think, there is something else i should go through, > > and u would like to suggest me some more readings, > > please do so! > > Hi Kaushik, > > Those all look like good places to start with ns-3. Getting a good > handle on writing scripts and developing applications or other > components will help a lot when it comes time to come up with > technical ideas and a plan to include in your GSOC application. > > On that note though, I want to note for everyone that GOSC > organizations will not be announced for a few weeks yet, and we won't > know until then whether or not we will have funding for any students. > Of course, either way, we are always happy to have more and more > people continue to use and develop ns-3. > > Thx! > > -- > - joe kopena > right here and now > hi joe, can u just tell me little more on >Getting a good handle on writing scripts >developing applications or other components Is it that i should also focus on how to write good scripts as well..??? -- Greetings, roide From rbhattacharjea at gmail.com Thu Mar 5 08:25:33 2009 From: rbhattacharjea at gmail.com (raj bhattacharjea) Date: Thu, 5 Mar 2009 11:25:33 -0500 Subject: [Ns-developers] api breakage: bug 482 In-Reply-To: <1236180983.15903.15.camel@diese.inria.fr> References: <1235562457.11372.18.camel@diese.inria.fr> <1236180983.15903.15.camel@diese.inria.fr> Message-ID: <12d69e490903050825l16cb0283h12ffe2904b71870f@mail.gmail.com> On Wed, Mar 4, 2009 at 10:36 AM, Mathieu Lacage wrote: > it appears that we have most votes for: > > ?- StaticMobilityModel -> ConstantPositionMobilityModel > ?- StaticSpeedMobilityModel -> ConstantVelocityMobilityModel > ?- ConstantAccelerationMobilityModel > > Raj: are you ok if I push this fairly safe but potentially painful (for > users) change sometime this week or next week ? Is there someone who is > going to hate me for breaking their application code ? > > Mathieu > Yes; please also make sure to check in something about the renaming in the CHANGES.html file. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From mk.banchi at gmail.com Thu Mar 5 15:07:57 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Fri, 06 Mar 2009 00:07:57 +0100 Subject: [Ns-developers] Problems with ObjectFactory Message-ID: <49B05B4D.3050609@gmail.com> Hi all, i have some problems with ObjectFactory. I'm using it in a new Helper class to set a MSDU aggregator: MsduAggregatorHelper::SetAggregatorType (std::string aggregatorType, ...) { ... m_aggregator.SetTypeId (aggregatorType); ... } MsduAggregatorHelper::Install (...) { ... Ptr aggregator = m_aggregator.Create (); ... } If i try to use this helper from a script an error occurs: Requested constructor for ns3::Node but it does not have one. The error is originated in IidManager::GetConstructor () method. I have verified that m_aggregator.SetTypeId ("ns3::MsduStandardAggregator"); doens't fail. The method ObjectFactory::Create instead fails. That's strange...even if i call ObjectFactory::SetTypeId () with "ns3::MsduStandardAggregator" as parameter, it's looking for a constructor for ns3::Node. Any idea? Thanks, Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090306/169eb5dc/smime.bin From mathieu.lacage at sophia.inria.fr Fri Mar 6 00:00:34 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Fri, 06 Mar 2009 09:00:34 +0100 Subject: [Ns-developers] Problems with ObjectFactory In-Reply-To: <49B05B4D.3050609@gmail.com> References: <49B05B4D.3050609@gmail.com> Message-ID: <1236326434.3381.0.camel@diese.inria.fr> On Fri, 2009-03-06 at 00:07 +0100, Mirko Banchi wrote: > Hi all, > > i have some problems with ObjectFactory. I'm using it in a new Helper > class to set a MSDU aggregator: > > MsduAggregatorHelper::SetAggregatorType (std::string aggregatorType, ...) > { > ... > m_aggregator.SetTypeId (aggregatorType); > ... > } > > MsduAggregatorHelper::Install (...) > { > ... > > Ptr aggregator = m_aggregator.Create (); > ... > > } > > If i try to use this helper from a script an error occurs: > > Requested constructor for ns3::Node but it does not have one. > > The error is originated in IidManager::GetConstructor () method. > > I have verified that > > m_aggregator.SetTypeId ("ns3::MsduStandardAggregator"); > > doens't fail. The method ObjectFactory::Create instead fails. > > That's strange...even if i call ObjectFactory::SetTypeId () with > "ns3::MsduStandardAggregator" as parameter, it's looking for a > constructor for ns3::Node. > > Any idea? yes, it's an easy one :) You need to add a call to AddConstructor () in MsduStandardAggregator::GetTypeId > > Thanks, > Mirko > From gjcarneiro at gmail.com Fri Mar 6 03:48:15 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Fri, 6 Mar 2009 11:48:15 +0000 Subject: [Ns-developers] no space left on device Message-ID: Heads up: "no space left on device" means lack of disk space on one of the regression testing hosts, not a bug in ns-3-dev... 2009/3/6 > Fri Mar 6 02:50:08 PST 2009 > > download.py success > Regression testing for machine: ns-regression > Linux 2.6.24-19-server x86_64 > g++ (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3) > ----------------------------- > SUCCESS: waf -d debug configure; ./waf --valgrind --regression passed on > ns-3-dev > SUCCESS: waf -d optimized configure; ./waf --valgrind --regression passed > on ns-3-dev > > Regression testing for machine: ns-regression > Linux 2.6.24-19-server x86_64 > g++-3.4 (GCC) 3.4.6 (Ubuntu 3.4.6-6ubuntu5) > ----------------------------- > SUCCESS: waf -d debug configure; ./waf --regression passed on ns-3-dev > > Regression testing for machine: ns-ubuntu-intrepid > Linux 2.6.27-2-generic i686 > g++ (Ubuntu 4.3.2-1ubuntu11) 4.3.2 > ----------------------------- > [632/654] regression-test (test-csma-bridge) > [633/654] regression-test (test-csma-broadcast) > [634/654] regression-test (test-csma-multicast) > [635/654] regression-test (test-csma-one-subnet) > [636/654] regression-test (test-csma-packet-socket) > [637/654] regression-test (test-csma-ping) > [638/654] regression-test (test-csma-raw-ip-socket) > [639/654] regression-test (test-csma-star) > [640/654] regression-test (test-dynamic-global-routing) > Entering directory `/tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/build' > PASS test-csma-bridge > PASS test-csma-broadcast > PASS test-csma-multicast > PASS test-csma-one-subnet > PASS test-csma-packet-socket > PASS test-csma-ping > PASS test-csma-raw-ip-socket > ---------- > Traces differ in test: test-csma-star > Reference traces in directory: > /tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev-ref-traces/csma-star.ref > Traces in directory: > /tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/build/debug/regression/traces/csma-star.ref > Run the following command for details: > diff -u > /tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev-ref-traces/csma-star.ref > /tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/build/debug/regression/traces/csma-star.ref > Or re-run regression testing with option -v > ---------- > FAIL test-csma-star > Traceback (most recent call last): > File "/tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/waf", line 127, in > > Scripting.prepare(t, cwd, VERSION, wafdir) > File > "/tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/.waf-1.5.3-ee19efc5fb177979684a69740de63fc8/wafadmin/Scripting.py", > line 123, in prepare > prepare_impl(t,cwd,ver,wafdir) > File > "/tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/.waf-1.5.3-ee19efc5fb177979684a69740de63fc8/wafadmin/Scripting.py", > line 116, in prepare_impl > main() > File > "/tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/.waf-1.5.3-ee19efc5fb177979684a69740de63fc8/wafadmin/Scripting.py", > line 186, in main > bld.compile() > File > "/tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/.waf-1.5.3-ee19efc5fb177979684a69740de63fc8/wafadmin/Build.py", > line 149, in compile > self.save() > File > "/tmp/ns-commits/tests/tmp/ns-3-allinone/ns-3-dev/.waf-1.5.3-ee19efc5fb177979684a69740de63fc8/wafadmin/Build.py", > line 94, in save > cPickle.dump(data,file,-1) > IOError: [Errno 28] No space left on device > FAILURE: waf -d debug configure; ./waf --regression failed on > ns-ubuntu-intrepid > _______________________________________________ > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mk.banchi at gmail.com Fri Mar 6 04:15:16 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Fri, 06 Mar 2009 13:15:16 +0100 Subject: [Ns-developers] Problems with ObjectFactory In-Reply-To: <1236326434.3381.0.camel@diese.inria.fr> References: <49B05B4D.3050609@gmail.com> <1236326434.3381.0.camel@diese.inria.fr> Message-ID: <49B113D4.6000001@gmail.com> > yes, it's an easy one :) > > You need to add a call to AddConstructor () in > MsduStandardAggregator::GetTypeId > I have already this...:( MsduStandardAggregator::GetTypeId appears like this: TypeId MsduStandardAggregator::GetTypeId (void) { static TypeId tid = TypeId ("ns3::MsduStandardAggregator") .SetParent () .AddConstructor () .AddAttribute ("MaxAmsduSize", "Max length in byte of an A-MSDU", UintegerValue (7935), MakeUintegerAccessor (&MsduStandardAggregator::m_maxAmsduLength), MakeUintegerChecker ()) ; return tid; } I don't know the reason but seems that m_tid field in ObjectFactory (returned by TypeId::LookupByName method) contains an uid referring to ns3::Node. Regards, Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090306/3ae7e2d6/smime.bin From mathieu.lacage at sophia.inria.fr Fri Mar 6 04:23:44 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Fri, 06 Mar 2009 13:23:44 +0100 Subject: [Ns-developers] Problems with ObjectFactory In-Reply-To: <49B113D4.6000001@gmail.com> References: <49B05B4D.3050609@gmail.com> <1236326434.3381.0.camel@diese.inria.fr> <49B113D4.6000001@gmail.com> Message-ID: <1236342224.3381.4.camel@diese.inria.fr> On Fri, 2009-03-06 at 13:15 +0100, Mirko Banchi wrote: > > yes, it's an easy one :) > > > > You need to add a call to AddConstructor () in > > MsduStandardAggregator::GetTypeId > > > > I have already this...:( > MsduStandardAggregator::GetTypeId appears like this: > > TypeId > MsduStandardAggregator::GetTypeId (void) > { > static TypeId tid = TypeId ("ns3::MsduStandardAggregator") > .SetParent () > .AddConstructor () > .AddAttribute ("MaxAmsduSize", "Max length in byte of an A-MSDU", > UintegerValue (7935), > MakeUintegerAccessor > (&MsduStandardAggregator::m_maxAmsduLength), > MakeUintegerChecker ()) > ; > return tid; > } > > I don't know the reason but seems that m_tid field in ObjectFactory > (returned by TypeId::LookupByName method) contains an uid referring to > ns3::Node. uh, weird. You are saying that: TypeId::LookupByName ("ns3::MsduStandardAggregator").GetName () returns "ns3::Node" ? Maybe you should try to add NS_OBJECT_ENSURE_REGISTERED (MsduStandardAggregator) in msdu-standard-aggregator.cc Are you sure that GetTypeId is declared a static member of MsduStandardAggregator ? Mathieu From tazaki at sfc.wide.ad.jp Thu Mar 5 22:50:21 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Fri, 06 Mar 2009 15:50:21 +0900 Subject: [Ns-developers] About real-world application integration Message-ID: Hi All, Now I'm working GNU Zebra bridge function to ns-3. #Note that not for Quagga, but I believe that quagga also works. Is there anyone who works on this topic? First of all, I tried to use the following branch [1] http://code.nsnam.org/lj/quagga-porting/ but it seems not to be worked. So I integrate [1,2,3,4] based on [2] branch. Although there is a lot of issues to fix, such as - Focusing on only my software (modified zebra) which use only ICMP6 and UDP6. - IP{v4,v6} construction can be reorganized as doing in "tomh/ns-3-ip" - routing table in ns3 can handle longest match prefix - performance is not so good (max node is 100?) - make patches for HEAD branch - and, etc... but current snapshot of this work is available at http://www.sfc.wide.ad.jp/~tazaki/hg/hgwebdir.cgi/ns-3-simu_zebra_ipv6/ Currently I can run simulation about 50nodes with Tree Discovery procotol(draft-thubert-tree-discovery) and OLSRv1 with IPv6 extension with this repo. Any comments and suggestions are appreciate. [2] http://code.nsnam.org/mathieu/ns-3-simu/ [3] https://svnet.u-strasbg.fr/hg/ns-3-ipv6/ [4] http://code.nsnam.org/gjc/ns-3-pyviz regards, hajime From tomh at tomh.org Sun Mar 8 22:10:19 2009 From: tomh at tomh.org (Tom Henderson) Date: Sun, 08 Mar 2009 22:10:19 -0700 Subject: [Ns-developers] About real-world application integration In-Reply-To: References: Message-ID: <49B4A4BB.8010302@tomh.org> > > [1] http://code.nsnam.org/lj/quagga-porting/ > [2] http://code.nsnam.org/mathieu/ns-3-simu/ > [3] https://svnet.u-strasbg.fr/hg/ns-3-ipv6/ > [4] http://code.nsnam.org/gjc/ns-3-pyviz > Hajime, My goal is to support this entire combination that you cite ([1]-[4]), and support quagga via the process API under development in [2]. My understanding of the status of this is that the loader in [2] must be finished, and then the netlink extensions begun in [1] must next be completed. Presently, my main focus in March will be the ipv4 rework and also then the IPv6 merge [3]. Then, once item [2] is finished, I will prioritize finishing [1]. > http://www.sfc.wide.ad.jp/~tazaki/hg/hgwebdir.cgi/ns-3-simu_zebra_ipv6/ > > Currently I can run simulation about 50nodes with Tree > Discovery procotol(draft-thubert-tree-discovery) and OLSRv1 > with IPv6 extension with this repo. > > Any comments and suggestions are appreciate. I will try to review this later this week. Perhaps you can also review the proposed IPv4 rework (planned for ns-3.5) when the time comes later this month? Regards, Tom From tomh at tomh.org Sun Mar 8 22:19:52 2009 From: tomh at tomh.org (Tom Henderson) Date: Sun, 08 Mar 2009 22:19:52 -0700 Subject: [Ns-developers] xml config store In-Reply-To: <1236182986.15903.28.camel@diese.inria.fr> References: <1236182986.15903.28.camel@diese.inria.fr> Message-ID: <49B4A6F8.1000301@tomh.org> Mathieu Lacage wrote: > hi, > > By popular demand, I hacked together support for global and default > values, and xml input and output in ConfigStore: > > http://code.nsnam.org/mathieu/ns-3-xml > > The API: > > int main (...) > { > CommandLine cmd; > cmd.Parse (...); > > ConfigStore config; > config.ConfigureEarly (); > > ... topology creation > > config.ConfigureLate (); > > Simulator::Run (); > } > > The above can be controlled from the command-line: > > ./build/debug/examples/csma-broadcast --ns3::ConfigStore::FileFormat=Xml > --ns3::ConfigStore::Mode=Save --ns3::ConfigStore::Filename=config.txt > ./build/debug/examples/csma-broadcast --ns3::ConfigStore::FileFormat=Xml > --ns3::ConfigStore::Mode=Load --ns3::ConfigStore::Filename=config.txt > > and the file looks like this (full example attached to this email): > > > > > value="wifia-6mbs"/> > ... > value="ns3::DefaultSimulatorImpl"/> > > > > > ... > path="/$ns3::NodeListPriv/NodeList/2/$ns3::Node/$ns3::ArpL3Protocol/CacheList/0/$ns3::ArpCache/MaxRetries" value="3"/> > path="/$ns3::NodeListPriv/NodeList/2/$ns3::Node/$ns3::ArpL3Protocol/CacheList/0/$ns3::ArpCache/PendingQueueSize" value > ="3"/> > > > Of course, you can write your own configuration file to specify only a > subset of the above in any order, of course. > > I don't really have enough time to add the necessary code to > GtkConfigStore to display the global and default values from > ConfigureEarly and to add a dtd/xml schema so, I would tend to leave > these as an exercise for interested users/developers. > > Mathieu > Mathieu, Thanks for this extension, which seemed to be a popular suggestion at Simutools last week. I would be in favor of merging this for ns-3.4 (if review and testing works out), and then moving this feature out of contrib/ into the main tree for ns-3.5 (plus, updating GtkConfigStore at that time). Suggested name changes: - config.ConfigureEarly (); + config.ConfigureDefaults (); - config.ConfigureLate (); + config.ConfigureAttributes (); From tazaki at sfc.wide.ad.jp Mon Mar 9 05:26:41 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Mon, 09 Mar 2009 21:26:41 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <49B4A4BB.8010302@tomh.org> References: <49B4A4BB.8010302@tomh.org> Message-ID: Hi Tom, Thanks for the response. At Sun, 08 Mar 2009 22:10:19 -0700, Tom Henderson wrote: > > http://www.sfc.wide.ad.jp/~tazaki/hg/hgwebdir.cgi/ns-3-simu_zebra_ipv6/ > > > > Currently I can run simulation about 50nodes with Tree > > Discovery procotol(draft-thubert-tree-discovery) and OLSRv1 > > with IPv6 extension with this repo. > > > > Any comments and suggestions are appreciate. > >I will try to review this later this week. Perhaps you can also review >the proposed IPv4 rework (planned for ns-3.5) when the time comes later >this month? Okay, I'll try to review too. regards, hajime From mathieu.lacage at sophia.inria.fr Mon Mar 9 11:59:08 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 09 Mar 2009 19:59:08 +0100 Subject: [Ns-developers] xml config store In-Reply-To: <49B4A6F8.1000301@tomh.org> References: <1236182986.15903.28.camel@diese.inria.fr> <49B4A6F8.1000301@tomh.org> Message-ID: <1236625148.7523.13.camel@mathieu-laptop> On Sun, 2009-03-08 at 22:19 -0700, Tom Henderson wrote: > Simutools last week. I would be in favor of merging this for ns-3.4 (if > review and testing works out), and then moving this feature out of testing done. > contrib/ into the main tree for ns-3.5 (plus, updating GtkConfigStore at > that time). ok. > > Suggested name changes: > > - config.ConfigureEarly (); > + config.ConfigureDefaults (); > > - config.ConfigureLate (); > + config.ConfigureAttributes (); done. Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 9 12:04:01 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 09 Mar 2009 20:04:01 +0100 Subject: [Ns-developers] how to get involved in ns-3 In-Reply-To: References: <8be4676d0903030612o198bb026pb4d0017814cc784f@mail.gmail.com> <49AD5868.2030000@tomh.org> <49AD7702.10000@tomh.org> Message-ID: <1236625441.7523.16.camel@mathieu-laptop> On Wed, 2009-03-04 at 00:19 +0530, kaushik saurabh wrote: > On Tue, Mar 3 > Can u just point me, which areas i should focus on while goint through the > tutorials, and manuals, > and exactly what area of code i should hit, when going through the source > code of ns-3. > > Just a small hint would be enough for me! The IPv4 stack is implemented in src/internet-stack/ipv4-l3-protocol.cc in case you have not figured it out already. (sorry for this very late answer) Mathieu From mathieu.lacage at sophia.inria.fr Tue Mar 10 06:57:05 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 10 Mar 2009 14:57:05 +0100 Subject: [Ns-developers] api breakage: bug 482 In-Reply-To: <12d69e490903050825l16cb0283h12ffe2904b71870f@mail.gmail.com> References: <1235562457.11372.18.camel@diese.inria.fr> <1236180983.15903.15.camel@diese.inria.fr> <12d69e490903050825l16cb0283h12ffe2904b71870f@mail.gmail.com> Message-ID: <1236693425.18078.10.camel@mathieu-laptop> On Thu, 2009-03-05 at 11:25 -0500, raj bhattacharjea wrote: > > it appears that we have most votes for: > > > > - StaticMobilityModel -> ConstantPositionMobilityModel > > - StaticSpeedMobilityModel -> ConstantVelocityMobilityModel > > - ConstantAccelerationMobilityModel > Yes; please also make sure to check in something about the renaming > in the CHANGES.html file. done Mathieu From tomh at tomh.org Tue Mar 10 09:59:10 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 10 Mar 2009 16:59:10 +0000 Subject: [Ns-developers] request for GSOC mentors Message-ID: We're seeing a lot of student interest already in the Google Summer of Code program, to which we're reapplying this month. I've also been adding lots of ideas for possible student projects to the wiki: http://www.nsnam.org/wiki/index.php/Gsoc2009 However, we really need some more mentors to step forward at this time, either to agree to mentor one of the project ideas listed, or to contribute other ideas for which you'd be willing to mentor a student. We need to understand how many projects, and what types of projects, we can mentor. If you have some expertise in some aspect of networking, and familiarity with ns-3, please consider volunteering as a mentor, and contact Joe Kopena. Thanks, Tom From craigdo at ee.washington.edu Wed Mar 11 00:10:28 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Wed, 11 Mar 2009 00:10:28 -0700 Subject: [Ns-developers] Request to push tracing changes In-Reply-To: <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> References: <12d69e490903031046j15c96051y7c43ced585f31cf9@mail.gmail.com> <12d69e490903031050heffe7fbkbc0507b2edd733c0@mail.gmail.com> Message-ID: <299EBCCCB3D04526B6AAF86101C45C7D@CRAIGVAIO> Hi All, Regarding the never-ending bug 443, I have queued up a new version of the tracing rework in http://code.nsnam.org/craigdo/ns-3-tracing for your perusal. >From previous list mail, we seemed to agree on a policy: 1) There is a set of suggested trace sources for net devices. 2) Implementing the complete set of suggested trace sources in a net device is not a requirement. A device author may pick a subset of these sources to implement. 3) The net device author should document what trace sources are implemented and the state the packets are in when they come out of the trace source. For example, raw IP, Ethernet header, llc/snap, dix, p2p, wifi, etc. 4) A net device author should implement a PromiscSniffer trace source to allow tcpdump-like functionality in helpers to be called a "standard" net device; but you are always allowed to do whatever you think is right on your own time. In furtherance of this policy I did the following to the tracing code: 1) Removed the objectionable Sniffer (Ethernet framed) and tx complete trace sources from the wifi device; 2) Removed the unused rx start trace sources from the csma and point-to-point devices; 3) Removed the non-promiscuous sniffer helper code from the wifi-helper and left yans-wifi-phy hooked to the promisc sniffer; 4) Added PromiscSniffer (tcpdump) functionality to the various net devices. 5) Changed helpers very slightly to make life a little easier as a result of the above. 6) Changed the documented examples (second, third) to use promiscuous sniffers as if someone were doing tcpdump on a real net device These changes are queued for review/push in http://craigdo/ns-3-tracing I am asking for permission to push these changes into ns-3-dev, and the resulting updated (verified) reference traces into ns-3-dev-ref-traces. This will introduce required documentation changes which I will address before ns-3.4 is out the door. Regards, -- Craig From mathieu.lacage at sophia.inria.fr Wed Mar 11 08:30:36 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 11 Mar 2009 16:30:36 +0100 Subject: [Ns-developers] request for GSOC mentors In-Reply-To: References: Message-ID: <1236785436.658.13.camel@mathieu-laptop> I wanted to add a couple of FAQ entries about this: 1) What is a mentor supposed to do ? A mentor is supposed to do daily management and mentoring of a student. This means, helping with technical and planning problems. For ns-3, mentors are expected to provide expertise in the field which is directly related to the student's project. Expertise in core ns-3 development is not required since the ns-developers mailing-list is there to helper answer potentially problematic questions and problems but familiarity with ns-3 concepts would probably be necessary. 2) How is a mentor supposed to manage a student ? Students are expected to work from home: students from all over the world apply for gsoc so, you can't expect them to move over to where you live/work for 3 or 4 months. Of course, you, as a mentor, are responsible for picking the students you are willing to mentor and a location criterion is perfectly acceptable if there are multiple qualified students and if you wish to pick one who is located closest to your timezone, or your geographical area or your city or your office. 3) What is the daily overhead of being a mentor for a student ? It really depends on the student, the mentor, and the project, of course, but 1 hour a day is generally considered the minimum realistic cost of mentoring a student. 4) What do you get from this, as a mentor ? gsoc will pay to the ns-3 project 500 USD per mentor. Generally, part of that money is given back to each mentor (only part because there are some tax issues) but the ns-3 project has still been unable to actually get the money from google from last year's gsoc I think (tom, please, correct me if I am wrong). Money is thus unlikely to be a deciding factor for a mentor. What is more motivating is usually that the mentor has vested interest in seeing a specific feature being developed and integrated so, mentors usually get a new feature they really want. The ns-3 project, on the other hand, is focused on convincing new contributors to work on the project, long term. Success is thus usually defined as seeing a student and/or mentor stay around after the completion of the gsoc project. On Tue, 2009-03-10 at 16:59 +0000, Tom Henderson wrote: > We're seeing a lot of student interest already in the Google Summer of > Code program, to which we're reapplying this month. I've also been > adding lots of ideas for possible student projects to the wiki: > http://www.nsnam.org/wiki/index.php/Gsoc2009 > > However, we really need some more mentors to step forward at this > time, either to agree to mentor one of the project ideas listed, or to > contribute other ideas for which you'd be willing to mentor a student. > We need to understand how many projects, and what types of projects, > we can mentor. > > If you have some expertise in some aspect of networking, and > familiarity with ns-3, please consider volunteering as a mentor, and > contact Joe Kopena. > > Thanks, > Tom > > > From mathieu.lacage at sophia.inria.fr Wed Mar 11 09:54:59 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 11 Mar 2009 17:54:59 +0100 Subject: [Ns-developers] About real-world application integration In-Reply-To: References: Message-ID: <1236790499.658.31.camel@mathieu-laptop> hi, On Fri, 2009-03-06 at 15:50 +0900, Hajime Tazaki wrote: > Hi All, > > Now I'm working GNU Zebra bridge function to ns-3. > #Note that not for Quagga, but I believe that quagga also > works. This sounds really cool ! > > Is there anyone who works on this topic? I work on this when I have time. More below. > > First of all, I tried to use the following branch > > [1] http://code.nsnam.org/lj/quagga-porting/ > > but it seems not to be worked. So I integrate [1,2,3,4] > based on [2] branch. ok. > > > Although there is a lot of issues to fix, such as > - Focusing on only my software (modified zebra) which use > only ICMP6 and UDP6. > - IP{v4,v6} construction can be reorganized as doing in > "tomh/ns-3-ip" > - routing table in ns3 can handle longest match prefix > - performance is not so good (max node is 100?) > - make patches for HEAD branch > - and, etc... > > but current snapshot of this work is available at > > http://www.sfc.wide.ad.jp/~tazaki/hg/hgwebdir.cgi/ns-3-simu_zebra_ipv6/ > > Currently I can run simulation about 50nodes with Tree > Discovery procotol(draft-thubert-tree-discovery) and OLSRv1 > with IPv6 extension with this repo. > > Any comments and suggestions are appreciate. The bad news is that the ns-3-simu branch can't be merged in ns-3-dev as-is because it has many problems and because ns-3-dev has many problems so, your work can't be merged in ns-3-dev today. The good news is that we have plans to address all these issues: 1) First, we need to complete the ipv4 API/implementation rework. 2) Then, we need to merge the ipv6 work 3) Then, we need to fix some fundamental issues in the ELF loader in ns-3-simu 4) Then, we need to merge the netlink code 5) Finally, we can merge the missing pieces to make quagga and zebra work. 1) is current planned for the second half of march (i.e., starting next week). My hope is that tom and myself can complete a mergeable version just after we release 3.4 so that we can merge this in early may. 2) would, ideally, be worked on after 1) is completed but I don't plan to work on it myself other than review code from sebastien. 3) is something I have been working on since december in my spare time. It is basically a re-implementation of an ELF loader for i386 and x86-64 linux. This should fix a number of very hard to track bugs in the current implementation which can be seen by very-hard-to-reproduce random segfaults. 4) and 5) seem to be mostly what you have started doing. I glanced at your tree and it seems that you have started doing 4) and 5) which is great because no one is working on it so, if you can keep improving the libc implementation located in src/process-manager, this will help us move fast once I have completed 3. So, my initial reaction is that what you are doing is great, I think that there is no real overlap with other people if you work only on the src/process-manager code, and I will do a more thorough review of your code sometime next week (I am supposed to be away from email this week :). thanks a lot for working on this, and for sharing your efforts with us, Mathieu From tazaki at sfc.wide.ad.jp Wed Mar 11 22:34:38 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Thu, 12 Mar 2009 14:34:38 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1236790499.658.31.camel@mathieu-laptop> References: <1236790499.658.31.camel@mathieu-laptop> Message-ID: Hi Mathieu, At Wed, 11 Mar 2009 17:54:59 +0100, Mathieu Lacage wrote: >The bad news is that the ns-3-simu branch can't be merged in ns-3-dev >as-is because it has many problems and because ns-3-dev has many >problems so, your work can't be merged in ns-3-dev today. Not so bad. >The good news is that we have plans to address all these issues: > >1) First, we need to complete the ipv4 API/implementation rework. >2) Then, we need to merge the ipv6 work >3) Then, we need to fix some fundamental issues in the ELF loader in >ns-3-simu >4) Then, we need to merge the netlink code >5) Finally, we can merge the missing pieces to make quagga and zebra >work. > >1) is current planned for the second half of march (i.e., starting next >week). My hope is that tom and myself can complete a mergeable version >just after we release 3.4 so that we can merge this in early may. > >2) would, ideally, be worked on after 1) is completed but I don't plan >to work on it myself other than review code from sebastien. > >3) is something I have been working on since december in my spare time. >It is basically a re-implementation of an ELF loader for i386 and x86-64 >linux. This should fix a number of very hard to track bugs in the >current implementation which can be seen by very-hard-to-reproduce >random segfaults. > >4) and 5) seem to be mostly what you have started doing. > >I glanced at your tree and it seems that you have started doing 4) and >5) which is great because no one is working on it so, if you can keep >improving the libc implementation located in src/process-manager, this >will help us move fast once I have completed 3. So, my initial reaction >is that what you are doing is great, I think that there is no real >overlap with other people if you work only on the src/process-manager >code, and I will do a more thorough review of your code sometime next >week (I am supposed to be away from email this week :). Okay, thanks. First of all, I can review 1)'s work from the 4) 5)'s point of view. Most of this work has already done by him, Liu Jian. I've just added some function into this. regards, hajime From raj.b at gatech.edu Fri Mar 13 08:58:08 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 13 Mar 2009 11:58:08 -0400 Subject: [Ns-developers] ns-3.4 : Final Steps Message-ID: <12d69e490903130858s62eabaf9y138d697da12f79aa@mail.gmail.com> Alright everyone, we are down to less than a week before we plan on making release candidates for ns-3.4! There are currently still 10 "blocker" level bugs in the tracker. I think we can successfully get these knocked out by Wednesday, since it is my intention to not make a release candidate until there are no broken behavior bugs that we know of in ns-3.4. I want to summarize and coordinate this last round of "blocker" level bug fixing briefly here on the list. They break down into the following categories: =====TCP====== These make up a whopping 6 out of 10 of the remaining bugs (bugs 198, 424, 425, 426, 427, 499). I have set up a repository to track the fixes: http://code.nsnam.org/raj/ns-3-tcp So far, the tree takes care of 198 and 499. There is a patch that will probably go in unmodified for 425 in the tracker. The rest of the bugs will be fixed by Monday, when I'll merge my changes from the temporary raj/ns-3-tcp branch. I have a handle on all of the bugs and am confident there will be no slipping. ======Documentation====== There is 1 bug about the tutorial going stale (504). I suspect that Craig will get to updating this during the code freeze which starts Wednesday. I am fine with documentation fixes during the code-freeze and RC process. ======Tracing====== There are 2 bugs related to tracing (443 and 505). The main one is the trace source rework of bug 443. It is queued up for merge at: http://code.nsnam.org/craigdo/ns-3-tracing This needs a little review, and I have not seen any further comments from others. I will be taking a look at the changes today, and providing feedback to Craig. I suspect the changes should be ready for merge as-is, probably Monday. The one linger question I have is about bug 505, which is blocked on the rework; I am not sure we can converge on a solution quickly enough after the tracing work is put in. ======Wifi Model / Tap Interaction====== There is one bug (510) concerning contradictory behavior in one of Mathieu's Wifi MAC model. There was some lengthy discussion about how the behavior might need to change to support the emu/ Tap bridging use cases. The final consensus seems to be simply to fix the contradictory behavior, and then worry about how to make Tap work later. If this is the case, we'll merge this one liner on Monday (replacing one "true" with "false"). In summary, the TCP fixes are being worked on, and will be merged Monday. The main tracing rework and the Wifi inconsistency look like they can be merged as well on Monday. This would leave the auxiliary tracing issue (505) and the tutorial update work to be completed. The tracing issue will have to be solved quickly before Wednesday, while documentation / tutorial / etc fixes can be checked in throughout the RC process. I hope this roadmap to ns-3.4 RC1 makes sense to everyone. If we are not on the same page, lets get some discussion going on the matter. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From tomh at tomh.org Fri Mar 13 16:22:24 2009 From: tomh at tomh.org (Tom Henderson) Date: Fri, 13 Mar 2009 16:22:24 -0700 Subject: [Ns-developers] ns-3.4 : Final Steps In-Reply-To: <12d69e490903130858s62eabaf9y138d697da12f79aa@mail.gmail.com> References: <12d69e490903130858s62eabaf9y138d697da12f79aa@mail.gmail.com> Message-ID: <49BAEAB0.2050900@tomh.org> Raj Bhattacharjea wrote: > ======Tracing====== > There are 2 bugs related to tracing (443 and 505). The main one is > the trace source rework of bug 443. It is queued up for merge at: > http://code.nsnam.org/craigdo/ns-3-tracing > This needs a little review, and I have not seen any further comments > from others. I will be taking a look at the changes today, and > providing feedback to Craig. I suspect the changes should be ready > for merge as-is, probably Monday. The one linger question I have is > about bug 505, which is blocked on the rework; I am not sure we can > converge on a solution quickly enough after the tracing work is put > in. I reviewed this again and have a few comments, which I discussed with Craig: - try to provide the trace source that George wanted for the NetAnim animator - look at bug 505; see if it is resolved - update CHANGES.html before the RC Otherwise, it seems ready to me. > > ======Wifi Model / Tap Interaction====== > There is one bug (510) concerning contradictory behavior in one of > Mathieu's Wifi MAC model. There was some lengthy discussion about how > the behavior might need to change to support the emu/ Tap bridging use > cases. The final consensus seems to be simply to fix the > contradictory behavior agree >, and then worry about how to make Tap work > later. Regarding this part, I've asked Craig to also try to address bug 520 (a P2 bug) before the RC. Several users including myself are blocked by this. Tom From mk.banchi at gmail.com Sat Mar 14 05:42:23 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Sat, 14 Mar 2009 13:42:23 +0100 Subject: [Ns-developers] How to maintain a repository for merge Message-ID: <49BBA62F.9020201@gmail.com> Hi all, i'm working to 802.11e/n support and i'd like to know how you prefer i maintain my mercurial repository in order to make a possible future merge easier than possible. Could a tag for every milestone be enough? Or do you prefer a single repository for each feature? at http://code.nsnam.org/mirko/ns-3-80211n/ you can find the code. Thank you all, Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090314/9c7f76a6/smime.bin From tomh at tomh.org Sat Mar 14 08:36:21 2009 From: tomh at tomh.org (Tom Henderson) Date: Sat, 14 Mar 2009 08:36:21 -0700 Subject: [Ns-developers] How to maintain a repository for merge In-Reply-To: <49BBA62F.9020201@gmail.com> References: <49BBA62F.9020201@gmail.com> Message-ID: <49BBCEF5.5090303@tomh.org> Mirko Banchi wrote: > Hi all, > > i'm working to 802.11e/n support and i'd like to know how you prefer i > maintain my mercurial repository in order to make a possible future > merge easier than possible. Could a tag for every milestone be enough? > Or do you prefer a single repository for each feature? > > at http://code.nsnam.org/mirko/ns-3-80211n/ > you can find the code. > > Thank you all, > > Mirko > I would suggest the following: - try to keep your repository in sync with ns-3-dev - work with the maintainer to ask how he or she would like to proceed. For instance, do you agree on features, API, and general design? Can you define some merge points or milestones? The maintainer should be able to help with overall schedule and merge considerations, deciding on whether separate repos are needed for each mergeable chunk, etc. In your case, are you at the "agree on features, API, and general design stage" still? I recall that you had asked some questions in your earlier post: http://mailman.isi.edu/pipermail/ns-developers/2008-December/004973.html and I am not sure what discussions you may have had at wns3 about some of these issues. Can you suggest some natural milestones in the development that might make smaller and earlier merges possible? - Tom From mk.banchi at gmail.com Sat Mar 14 10:21:07 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Sat, 14 Mar 2009 18:21:07 +0100 Subject: [Ns-developers] How to maintain a repository for merge In-Reply-To: <49BBCEF5.5090303@tomh.org> References: <49BBA62F.9020201@gmail.com> <49BBCEF5.5090303@tomh.org> Message-ID: <49BBE783.1000703@gmail.com> Tom Henderson ha scritto: > Mirko Banchi wrote: >> Hi all, >> >> i'm working to 802.11e/n support and i'd like to know how you prefer i >> maintain my mercurial repository in order to make a possible future >> merge easier than possible. Could a tag for every milestone be enough? >> Or do you prefer a single repository for each feature? >> >> at http://code.nsnam.org/mirko/ns-3-80211n/ >> you can find the code. >> >> Thank you all, >> >> Mirko >> > > I would suggest the following: > > - try to keep your repository in sync with ns-3-dev > > - work with the maintainer to ask how he or she would like to proceed. > For instance, do you agree on features, API, and general design? Can you > define some merge points or milestones? The maintainer should be able > to help with overall schedule and merge considerations, deciding on > whether separate repos are needed for each mergeable chunk, etc. > > In your case, are you at the "agree on features, API, and general design > stage" still? I recall that you had asked some questions in your > earlier post: > http://mailman.isi.edu/pipermail/ns-developers/2008-December/004973.html > and I am not sure what discussions you may have had at wns3 about some > of these issues. > > Can you suggest some natural milestones in the development that might > make smaller and earlier merges possible? > > - Tom > At the moment my repository includes these new features: Edca mechanism Frame aggregation (A-MSDU) Clearly some examples and docs will be added. For now i could suggest this possible milestones: 1. Edca mechanism and Frame Aggregation (A-MSDU) (current) 2. Block ack mechanism 3. Frame aggregation (A-MPDU) 4. Support for transmission of multiple frames in the same txop. What do you think about? Regards, Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090314/973d97ec/smime.bin From mk.banchi at gmail.com Sun Mar 15 12:19:47 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Sun, 15 Mar 2009 20:19:47 +0100 Subject: [Ns-developers] How to maintain a repository for merge In-Reply-To: <1237141616.6391.1.camel@mathieu-laptop> References: <49BBA62F.9020201@gmail.com> <1237141616.6391.1.camel@mathieu-laptop> Message-ID: <49BD54D3.2050701@gmail.com> Mathieu Lacage ha scritto: > it would be really helpul for review if you could send the list of files > you have modified, and the list of files you have added. > > Mathieu > Added files: src/devices/wifi/qsta-wifi-mac.h src/devices/wifi/qsta-wifi-mac.cc src/devices/wifi/qap-wifi-mac.h src/devices/wifi/qap-wifi-mac.cc src/devices/wifi/edca-txop-n.h src/devices/wifi/edca-txop-n.cc src/devices/wifi/edca-parameter-set.h src/devices/wifi/edca-parameter-set.cc src/devices/wifi/msdu-aggregator.h src/devices/wifi/msdu-aggregator.cc src/devices/wifi/msdu-standard-aggregator.h src/devices/wifi/msdu-standard-aggregator.cc src/devices/wifi/amsdu-subframe-header.h src/devices/wifi/amsdu-subframe-header.cc src/helper/msdu-aggregator-helper.h src/helper/msdu-aggregator-helper.cc Modified files: src/devices/wifi/wifi-mac-header.h src/devices/wifi/wifi-mac-header.cc src/devices/wifi/mac-tx-middle.h src/devices/wifi/mac-tx-middle.cc src/devices/wifi/wifi-mac-queue.h src/devices/wifi/wifi-mac-queue.cc In a short time i'll add also examples and docs. This about milestone "MsduAggregation" that includes: Edca mechanism Frame aggregation (only A-MSDU) I'll add for each milestone in my repository http://code.nsnam.org/mirko/ns-3-80211n one tag. If you prefer other ways to make merging easier feel free to tell me. Planned milestones are: -Frame aggregation (A-MSDU). -Block ack mechanism. -Frame aggregation (A-MPDU). -Transmission of multiple frames in the same Txop. Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090315/b6e00835/smime.bin From boyko at iitp.ru Sun Mar 15 05:34:38 2009 From: boyko at iitp.ru (Pavel Boyko) Date: Sun, 15 Mar 2009 15:34:38 +0300 Subject: [Ns-developers] Mac48Address operator < cosmetics Message-ID: <200903151534.39042.boyko@iitp.ru> Hi all, First 4 lines of this method (node/mac48-address.cc by Mathieu) seem to be meaningless: bool operator < (const Mac48Address &a, const Mac48Address &b) { uint8_t aP[6]; uint8_t bP[6]; a.CopyTo (aP); b.CopyTo (bP); for (uint8_t i = 0; i < 6; i++) { if (a.m_address[i] < b.m_address[i]) { return true; } else if (a.m_address[i] > b.m_address[i]) { return false; } } return false; } Mathieu, if you agree, please remove CopyTo (or remove friend in class declaration and use copy). Thanks, Pavel Boyko researcher IITP RAS From mathieu.lacage at sophia.inria.fr Mon Mar 16 00:15:22 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 08:15:22 +0100 Subject: [Ns-developers] Mac48Address operator < cosmetics In-Reply-To: <200903151534.39042.boyko@iitp.ru> References: <200903151534.39042.boyko@iitp.ru> Message-ID: <1237187722.31135.8.camel@diese.inria.fr> On Sun, 2009-03-15 at 15:34 +0300, Pavel Boyko wrote: > Hi all, > > First 4 lines of this method (node/mac48-address.cc by Mathieu) seem to be > meaningless: the internal buffer of the Mac48Address class is not public, hence the need for the two copies. If you really wish to avoid them (can you actually see this code in a real performance profile ?), you would need to make operator < a friend of Mac48Address and modify the code to access the internal buffer. Feel free to send a patch and, if you do, please, attach it to www.nsnam.org/bugzilla regards, Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 16 00:24:46 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 08:24:46 +0100 Subject: [Ns-developers] ns-3.4 : Final Steps In-Reply-To: <12d69e490903130858s62eabaf9y138d697da12f79aa@mail.gmail.com> References: <12d69e490903130858s62eabaf9y138d697da12f79aa@mail.gmail.com> Message-ID: <1237188286.31135.13.camel@diese.inria.fr> On Fri, 2009-03-13 at 11:58 -0400, Raj Bhattacharjea wrote: > ======Tracing====== > There are 2 bugs related to tracing (443 and 505). The main one is > the trace source rework of bug 443. It is queued up for merge at: > http://code.nsnam.org/craigdo/ns-3-tracing > This needs a little review, and I have not seen any further comments > from others. I will be taking a look at the changes today, and > providing feedback to Craig. I suspect the changes should be ready > for merge as-is, probably Monday. The one linger question I have is > about bug 505, which is blocked on the rework; I am not sure we can > converge on a solution quickly enough after the tracing work is put > in. I reviewed the src/devices/wifi part of the last version: there are a couple of uneeded changes: and wifi-net-device.h: void SniffPacket (Ptr packet, Mac48Address to, Mac48Address from, uint16_t type); wifi-net-device.cc: +#include "ns3/ethernet-header.h" +#include "ns3/ethernet-trailer.h" and, in wifi-net-device.cc: are you sure you need the copy below ? - m_promiscRx (this, packet, llc.GetType (), from, to, type); + m_promiscRx (this, packet->Copy (), llc.GetType (), from, to, type); Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 16 01:48:51 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 09:48:51 +0100 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1236790499.658.31.camel@mathieu-laptop> References: <1236790499.658.31.camel@mathieu-laptop> Message-ID: <1237193331.31135.36.camel@diese.inria.fr> hi, On Wed, 2009-03-11 at 17:54 +0100, Mathieu Lacage wrote: > code, and I will do a more thorough review of your code sometime next > week (I am supposed to be away from email this week :). So, I did look at your code :) A couple of random comments: 1) you checked in a couple of emacs-generated files: /scratch/process-zebra.cc~, scratch/process-zebra.py~ 2) I see a couple of patches to the ipv6 code: it would be nice if you could contribute these back to sebastien separately. 3) In src/node/node.cc, what is the use of this extra tag ? Where is it used ? + SocketRecvIfTag tag; + tag.SetRecvIf (device->GetIfIndex()); + packet->AddTag (tag); + 4) I see a couple of patches to src/process-manager/* which could be merged in ns-3-simu right now, so, it would be nice if you could try to split them from the rest to try to minimize the number of differences between your tree and ns-3-simu. For example, the following looks like a good idea and I would be happy to take patches to add them to http://code.nsnam.org/mathieu/ns-3-simu diff -r 89718962b257 -r 6066282751f1 src/process-manager/alloc.cc --- a/src/process-manager/alloc.cc Fri Feb 27 23:57:07 2009 +0900 +++ b/src/process-manager/alloc.cc Wed Mar 11 15:03:07 2009 +0900 @@ -54,6 +54,7 @@ : m_defaultMmapSize (1<<15) { NS_LOG_FUNCTION (this); + memset(m_buckets, 0, sizeof(m_buckets)); } KingsleyAlloc::~KingsleyAlloc () { this too: diff -r cc696412ba7e -r 9bd77de2052c src/process-manager/unix-datagram-socket-fd.cc --- a/src/process-manager/unix-datagram-socket-fd.cc Fri Feb 27 23:58:01 2009 +0900 +++ b/src/process-manager/unix-datagram-socket-fd.cc Fri Mar 06 13:25:32 2009 +0900 @@ -181,7 +181,7 @@ Thread *current = Current (); NS_LOG_FUNCTION (this << current); NS_ASSERT (current != 0); - uint32_t old_ifindex; + uint32_t old_ifindex = 0; as well as: - process->alloc = new StupidAlloc (); - // process->alloc = new KingsleyAlloc (); + process->alloc = new KingsleyAlloc (); and, I assume that this made a bit difference for you: - std::vector > > openFiles; + __gnu_cxx::hash_map > openFiles; but, oh, look at src/internet-stack/sgi-hashmap.h: would you mind move it to src/core and use this one instead ? The following looks a bit gratuituous: diff -r 89718962b257 -r 6066282751f1 src/process-manager/process-manager.cc --- a/src/process-manager/process-manager.cc Fri Feb 27 23:57:07 2009 +0900 +++ b/src/process-manager/process-manager.cc Wed Mar 11 15:03:07 2009 +0900 @@ -109,12 +109,12 @@ { NS_LOG_FUNCTION (this); GarbageCollectDeadProcessesAndThreads (); - for (std::vector::iterator i = m_processes.begin (); i != m_processes.end (); ++i) + for (std::vector::iterator i = m_processes.begin (); i != m_processes.end ();) { struct Process *process = *i; DeleteProcess (process); + i = m_processes.erase (i); } - m_processes.clear (); This would be nice rewritten with the coding style in mind: + if(current->process->openFiles.find(fd) != current->process->openFiles.end()) + return fd; i.e.: if () { // do stuff } again, thanks for your work, Mathieu From tazaki at sfc.wide.ad.jp Mon Mar 16 02:59:56 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Mon, 16 Mar 2009 18:59:56 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1237193331.31135.36.camel@diese.inria.fr> References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> Message-ID: Hi, Thanks for your valuable comments. #even though my source is nasty, a lot of hard coding... Please find my comments in line. At Mon, 16 Mar 2009 09:48:51 +0100, Mathieu Lacage wrote: >> code, and I will do a more thorough review of your code sometime next >> week (I am supposed to be away from email this week :). > >So, I did look at your code :) A couple of random comments: > >1) you checked in a couple of emacs-generated >files: /scratch/process-zebra.cc~, scratch/process-zebra.py~ Thanks. Already fixed and pushed at my repo. >2) I see a couple of patches to the ipv6 code: it would be nice if you >could contribute these back to sebastien separately. Okay. I'll try to. >3) In src/node/node.cc, what is the use of this extra tag ? Where is it >used ? > >+ SocketRecvIfTag tag; >+ tag.SetRecvIf (device->GetIfIndex()); >+ packet->AddTag (tag); >+ This tag is used in unix-datagram-socket.cc to emulate "IPV6_RECVPKTINFO" sockopt. + if(msg->msg_controllen > 0){ + Cmsg cmsg = Cmsg (msg); + if (IsRecvPktInfo ()) + { + struct in6_pktinfo pkt; + + SocketRecvIfTag tag; + bool found; + found = packet->FindFirstMatchingTag (tag); + NS_ASSERT (found); + + pkt.ipi6_ifindex = tag.GetRecvIf (); + memcpy(&pkt.ipi6_addr, msg->msg_name, sizeof(pkt.ipi6_addr)); + cmsg.Add (SOL_IPV6, IPV6_PKTINFO, sizeof (struct in6_pktinfo), (const uint8_t*)&pkt); + } + cmsg.Finish (); + } Modifying in node.cc isn't good idea, but I can't find any other suitable place to do it. Do you have any good idea? >4) I see a couple of patches to src/process-manager/* which could be >merged in ns-3-simu right now, so, it would be nice if you could try to >split them from the rest to try to minimize the number of differences >between your tree and ns-3-simu. For example, the following looks like a >good idea and I would be happy to take patches to add them to >http://code.nsnam.org/mathieu/ns-3-simu Okay, I'll try it later. Do you mind if I'll send patches for this modification? Or using bugzilla is better? >diff -r 89718962b257 -r 6066282751f1 src/process-manager/alloc.cc >--- a/src/process-manager/alloc.cc Fri Feb 27 23:57:07 2009 +0900 >+++ b/src/process-manager/alloc.cc Wed Mar 11 15:03:07 2009 +0900 >@@ -54,6 +54,7 @@ > : m_defaultMmapSize (1<<15) > { > NS_LOG_FUNCTION (this); >+ memset(m_buckets, 0, sizeof(m_buckets)); > } > KingsleyAlloc::~KingsleyAlloc () > { I can make a patch. >this too: >diff -r cc696412ba7e -r 9bd77de2052c >src/process-manager/unix-datagram-socket-fd.cc >--- a/src/process-manager/unix-datagram-socket-fd.cc Fri Feb 27 >23:58:01 2009 +0900 >+++ b/src/process-manager/unix-datagram-socket-fd.cc Fri Mar 06 >13:25:32 2009 +0900 >@@ -181,7 +181,7 @@ > Thread *current = Current (); > NS_LOG_FUNCTION (this << current); > NS_ASSERT (current != 0); >- uint32_t old_ifindex; >+ uint32_t old_ifindex = 0; I can make a patch, too. >as well as: > >- process->alloc = new StupidAlloc (); >- // process->alloc = new KingsleyAlloc (); >+ process->alloc = new KingsleyAlloc (); > >and, I assume that this made a bit difference for you: > >- std::vector > > openFiles; >+ __gnu_cxx::hash_map > openFiles; > >but, oh, look at src/internet-stack/sgi-hashmap.h: would you mind move >it to src/core and use this one instead ? I don't mind, I just wanna use hash_map, but I wasn't sure how I can do it, so just trid to do same as src/internet-cache/arp-cache.h. BTW, using hash_map comes from oprofile output to improve performance, but it makes not so big differences. >The following looks a bit gratuituous: > >diff -r 89718962b257 -r 6066282751f1 >src/process-manager/process-manager.cc >--- a/src/process-manager/process-manager.cc Fri Feb 27 23:57:07 2009 >+0900 >+++ b/src/process-manager/process-manager.cc Wed Mar 11 15:03:07 2009 >+0900 >@@ -109,12 +109,12 @@ > { > NS_LOG_FUNCTION (this); > GarbageCollectDeadProcessesAndThreads (); >- for (std::vector::iterator i = m_processes.begin >(); i != m_processes.end (); ++i) >+ for (std::vector::iterator i = m_processes.begin >(); i != m_processes.end ();) > { > struct Process *process = *i; > DeleteProcess (process); >+ i = m_processes.erase (i); > } >- m_processes.clear (); I can make a patch, too. >This would be nice rewritten with the coding style in mind: > >+ if(current->process->openFiles.find(fd) != >current->process->openFiles.end()) >+ return fd; > >i.e.: >if () > { > // do stuff > } Okay, I read http://www.nsnam.org/codingstyle.html right now. Is "indent -gnu {all files}" good enough? regards, hajime From mathieu.lacage at sophia.inria.fr Mon Mar 16 03:11:09 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 11:11:09 +0100 Subject: [Ns-developers] About real-world application integration In-Reply-To: References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> Message-ID: <1237198269.31135.121.camel@diese.inria.fr> On Mon, 2009-03-16 at 18:59 +0900, Hajime Tazaki wrote: > >3) In src/node/node.cc, what is the use of this extra tag ? Where is it > >used ? > > > >+ SocketRecvIfTag tag; > >+ tag.SetRecvIf (device->GetIfIndex()); > >+ packet->AddTag (tag); > >+ > > This tag is used in unix-datagram-socket.cc to emulate > "IPV6_RECVPKTINFO" sockopt. > > + if(msg->msg_controllen > 0){ > + Cmsg cmsg = Cmsg (msg); > + if (IsRecvPktInfo ()) > + { > + struct in6_pktinfo pkt; > + > + SocketRecvIfTag tag; > + bool found; > + found = packet->FindFirstMatchingTag (tag); > + NS_ASSERT (found); > + > + pkt.ipi6_ifindex = tag.GetRecvIf (); > + memcpy(&pkt.ipi6_addr, msg->msg_name, sizeof(pkt.ipi6_addr)); > + cmsg.Add (SOL_IPV6, IPV6_PKTINFO, sizeof (struct in6_pktinfo), (const uint8_t*)&pkt); > + } > + cmsg.Finish (); > + } > > Modifying in node.cc isn't good idea, but I can't find any > other suitable place to do it. Do you have any good idea? I see: it's weird that I did not see the ipv6 part of the patch. To make sure I don't forget anything, would you mind send me a list of files you have modified and files you have added ? Anyway, I think you can leave this in for now: the tagging code is going to undergo changes for the ipv4 rework so, this will probably be solved during in the ipv4 rework. > >4) I see a couple of patches to src/process-manager/* which could be > >merged in ns-3-simu right now, so, it would be nice if you could try to > >split them from the rest to try to minimize the number of differences > >between your tree and ns-3-simu. For example, the following looks like a > >good idea and I would be happy to take patches to add them to > >http://code.nsnam.org/mathieu/ns-3-simu > > Okay, I'll try it later. > Do you mind if I'll send patches for this modification? > Or using bugzilla is better? you can: - create a mercurial repo with only the patches you want to send me and I will pull from this repo, review, and push in mathieu/ns-3-simu - or send me raw patches by email (mercurial has a patchbomb extension: http://www.selenic.com/mercurial/wiki/index.cgi/PatchbombExtension) > >and, I assume that this made a bit difference for you: > > > >- std::vector > > openFiles; > >+ __gnu_cxx::hash_map > openFiles; > > > >but, oh, look at src/internet-stack/sgi-hashmap.h: would you mind move > >it to src/core and use this one instead ? > > I don't mind, I just wanna use hash_map, but I wasn't sure > how I can do it, so just trid to do same as > src/internet-cache/arp-cache.h. > > BTW, using hash_map comes from oprofile output to improve > performance, but it makes not so big differences. If it makes no real difference, then, maybe we can drop this ? I really have never tried to profile the behavior of the process-manager code so, I have no idea how it behaves: I would tend to trust you if you did profile it and if you think it is worth being done :) > >The following looks a bit gratuituous: > > > >diff -r 89718962b257 -r 6066282751f1 > >src/process-manager/process-manager.cc > >--- a/src/process-manager/process-manager.cc Fri Feb 27 23:57:07 2009 > >+0900 > >+++ b/src/process-manager/process-manager.cc Wed Mar 11 15:03:07 2009 > >+0900 > >@@ -109,12 +109,12 @@ > > { > > NS_LOG_FUNCTION (this); > > GarbageCollectDeadProcessesAndThreads (); > >- for (std::vector::iterator i = m_processes.begin > >(); i != m_processes.end (); ++i) > >+ for (std::vector::iterator i = m_processes.begin > >(); i != m_processes.end ();) > > { > > struct Process *process = *i; > > DeleteProcess (process); > >+ i = m_processes.erase (i); > > } > >- m_processes.clear (); > > I can make a patch, too. I meant that I don't really understand what this patch is doing: it seems that it's really doing the same thing as before, only differently. > >This would be nice rewritten with the coding style in mind: > > > >+ if(current->process->openFiles.find(fd) != > >current->process->openFiles.end()) > >+ return fd; > > > >i.e.: > >if () > > { > > // do stuff > > } > > Okay, > I read http://www.nsnam.org/codingstyle.html right now. > > Is "indent -gnu {all files}" good enough? I honestly have no idea. I usually do all the coding style formatting by hand. The emacs gnu mode helps but it does not do everything. Mathieu From tazaki at sfc.wide.ad.jp Mon Mar 16 03:40:13 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Mon, 16 Mar 2009 19:40:13 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1237198269.31135.121.camel@diese.inria.fr> References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> Message-ID: At Mon, 16 Mar 2009 11:11:09 +0100, Mathieu Lacage wrote: >Anyway, I think you can leave this in for now: the tagging code is going >to undergo changes for the ipv4 rework so, this will probably be solved >during in the ipv4 rework. I see. >> >4) I see a couple of patches to src/process-manager/* which could be >> >merged in ns-3-simu right now, so, it would be nice if you could try to >> >split them from the rest to try to minimize the number of differences >> >between your tree and ns-3-simu. For example, the following looks like a >> >good idea and I would be happy to take patches to add them to >> >http://code.nsnam.org/mathieu/ns-3-simu >> >> Okay, I'll try it later. >> Do you mind if I'll send patches for this modification? >> Or using bugzilla is better? > >you can: > - create a mercurial repo with only the patches you want to send me >and I will pull from this repo, review, and push in mathieu/ns-3-simu > > - or send me raw patches by email (mercurial has a patchbomb >extension: >http://www.selenic.com/mercurial/wiki/index.cgi/PatchbombExtension) Okay, thanks. I'll tell you when I can prepare it. >> >and, I assume that this made a bit difference for you: >> > >> >- std::vector > > openFiles; >> >+ __gnu_cxx::hash_map > openFiles; >> > >> >but, oh, look at src/internet-stack/sgi-hashmap.h: would you mind move >> >it to src/core and use this one instead ? >> >> I don't mind, I just wanna use hash_map, but I wasn't sure >> how I can do it, so just trid to do same as >> src/internet-cache/arp-cache.h. >> >> BTW, using hash_map comes from oprofile output to improve >> performance, but it makes not so big differences. > >If it makes no real difference, then, maybe we can drop this ? I really >have never tried to profile the behavior of the process-manager code so, >I have no idea how it behaves: I would tend to trust you if you did >profile it and if you think it is worth being done :) I agree. Although this modification makes efficiency, I will drop this. >> >The following looks a bit gratuituous: >> > >> >diff -r 89718962b257 -r 6066282751f1 >> >src/process-manager/process-manager.cc >> >--- a/src/process-manager/process-manager.cc Fri Feb 27 23:57:07 2009 >> >+0900 >> >+++ b/src/process-manager/process-manager.cc Wed Mar 11 15:03:07 2009 >> >+0900 >> >@@ -109,12 +109,12 @@ >> > { >> > NS_LOG_FUNCTION (this); >> > GarbageCollectDeadProcessesAndThreads (); >> >- for (std::vector::iterator i = m_processes.begin >> >(); i != m_processes.end (); ++i) >> >+ for (std::vector::iterator i = m_processes.begin >> >(); i != m_processes.end ();) >> > { >> > struct Process *process = *i; >> > DeleteProcess (process); >> >+ i = m_processes.erase (i); >> > } >> >- m_processes.clear (); >> >> I can make a patch, too. > >I meant that I don't really understand what this patch is doing: it >seems that it's really doing the same thing as before, only differently. Ah, sorry. When DeleteProcess is called, and threads is not empty, DeleteProcess hook SIGKILL in the context of DoDispose(), and delivered to simu_exit(). Then process is removed from m_processes before returning DeleteProcess(). So if there is multiple processes in m_processes, it might be problem. This patch try to fix this. >> Is "indent -gnu {all files}" good enough? > >I honestly have no idea. I usually do all the coding style formatting by >hand. The emacs gnu mode helps but it does not do everything. Okay, thanks. regards, hajime From mathieu.lacage at sophia.inria.fr Mon Mar 16 04:46:08 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 12:46:08 +0100 Subject: [Ns-developers] How to maintain a repository for merge In-Reply-To: <49BD54D3.2050701@gmail.com> References: <49BBA62F.9020201@gmail.com> <1237141616.6391.1.camel@mathieu-laptop> <49BD54D3.2050701@gmail.com> Message-ID: <1237203968.31135.266.camel@diese.inria.fr> On Sun, 2009-03-15 at 20:19 +0100, Mirko Banchi wrote: > Added files: All the code looks great ! Comments below. > > src/devices/wifi/qsta-wifi-mac.h > src/devices/wifi/qsta-wifi-mac.cc The above looks good: do you think you could come up with a way of sharing the common code between nqsta-wifi-mac and qsta-wifi-mac ? It seems that the association state handling is fairly similar: maybe it could be pushed in a common base class StaWifiMac which delegates some work to the two subclasses NqstaWifiMac and QstaWifiMac ? The same would also hold for NqapWifiMac and QapWifiMac. Note that I am not saying that you _must_ do this because I suspect that there are some very subtle differences which might make this very painful so, I am just asking that you try to see if it is feasible without making the code unreadable. > src/devices/wifi/qap-wifi-mac.h > src/devices/wifi/qap-wifi-mac.cc This signature does not make me very happy: void ForwardDown (Ptr packet, Mac48Address from, Mac48Address to, WifiMacHeader const *qosHeader = 0); In the past, we have had a lot of debates about function arguments with default values: I know that some disagree with me, but, please, don't use them here: I find that they make it harder for me to follow which methods are called. In this case, I think that you should add two extra arguments to ForwardDown: a tid and a qospolicy and just make them unconditional and make the callers pass the right values. Also, the following can't possibly work: + if (qosHeader != 0) + { ... + } + else + { + uint8_t tid = GetTidForPacket (packet); + if (tid < 8) + { + hdr.SetQosTid (tid); + uint8_t ac = MapTidToAc (qosHeader->GetQosTid ()); ooh, qosHeader is 0... The two functions uint8_t GetTidForPacket (Ptr packet) and uint8_t MapTidToAc (uint8_t tid) could be moved to src/devices/wifi/qos-utils.h or something similar, although, really, not a big deal. > src/devices/wifi/edca-txop-n.h > src/devices/wifi/edca-txop-n.cc Although I see that you use this only for debugging, the m_accessClass field looked pretty bad: ideally, EdcaTxopN would not need to know which class it belongs to. The other thing I am a bit nervous about is m_typeOfStation which I see is used in MapSrcAddress and MapDstAddress. Clearly, using a string comparison against a magic string value here looks fairly bad. If you really must parameterize behavior based on a parameter value, please, use an enum instead of a string here. Anyway, I would be mostly curious to know what other behaviors MapSrcAddress and MapDstAddress could implement. > src/devices/wifi/edca-parameter-set.h > src/devices/wifi/edca-parameter-set.cc The two files above don't look quite right: serializing all these integer arguments in a single string blob looks a bit horrible. It seems to me that each of these parameter could be changed directly as an attribute of the EdcaTxopN class and, then, QstaWifiMac and QapWifiMac could export a set of attributes such as VO_EdcaTxopN, VI_EdcaTxopN, etc. This would allow you to kill the whole EdcaParameterSet class as well as make it easier for users to specify a new value for these attributes (they would not have to learn your serialization format). > src/devices/wifi/msdu-aggregator.h > src/devices/wifi/msdu-aggregator.cc I can't really comment on your aggregation API but, MsgAggregator::Deaggregate: + //a new packet is created + Packet *deaggregatedPacket = new Packet (buffer, hdr.GetLength ()); + Ptr p (deaggregatedPacket); Use Create (buffer, ...) instead of operator new which will get the reference counting right. The above is leaking a count so, you are leaking a packet each time you get there. (for reference, look at Create<> in src/core/ptr.h to see the critical bit you missed :) > src/devices/wifi/msdu-standard-aggregator.h > src/devices/wifi/msdu-standard-aggregator.cc nothing to say here. > src/devices/wifi/amsdu-subframe-header.h > src/devices/wifi/amsdu-subframe-header.cc both look good. > src/helper/msdu-aggregator-helper.h > src/helper/msdu-aggregator-helper.cc I have to confess that I am, again, uneasy about the string-based AC control in this API, but the real issue here is the DynamicCast in Install. It would be really nice to be able to avoid it and one way to do this would be to do what we do for the PHY layer where the creation of the PHY object is delated to a WifiPhyHelper class in src/helper/wifi-helper.h. I think that you could create a similar WifiMacHelper class with a set of subclasses, some of which could export extra information to build the msdu aggregators for the Qos MACs. i.e., class WifiMacHelper { public: virtual Ptr *Create (void); }; class WifiHelper { public: NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const; ... }; and: class NqapWifiMacHelper : public WifiMacHelper { void SetDcaAttribute (name, value, ...); }; class NqstaWifiMacHelper : public WifiMacHelper { ... }; class AdhocWifiMacHelper : public WifiMacHelper { ... }; class QapWifiMacHelper : public WifiMacHelper { void SetMsduAggregator (...); void SetEdcaAttribute (type, name, value, ...); }; class QstaWifiMacHelper : public WifiMacHelper { void SetMsduAggregator (...); void SetEdcaAttribute (type, name, value, ...); }; Of course, you could decrease the number of subclasses with this: class NqosWifiMacHelper : public WifiMacHelper { void SetType (std::string typeid); ... }; class QosWifiMacHelper : public WifiMacHelper { void SetType (std::string typeid); ... }; (either of these option would be fine with me) Ideally, you would also pass an enum-based AC to SetMsduAggregator instead of the string-based AC. > Modified files: > src/devices/wifi/wifi-mac-header.h > src/devices/wifi/wifi-mac-header.cc both look ok to me as-is. > src/devices/wifi/mac-tx-middle.h > src/devices/wifi/mac-tx-middle.cc looks good to me modulo coding style (http://www.nsnam.org/codingstyle.html). For example: + for (; i != m_qosSequences.end (); i++) + delete [] i->second; should be written as: for () { // XXX } + else + { also, wrong indentation: + retval = 0; + std::pair newSeq (hdr->GetAddr1 (), new uint16_t[16]); > src/devices/wifi/wifi-mac-queue.h > src/devices/wifi/wifi-mac-queue.cc the above looks good to me modulo: + Ptr Dequeue (WifiMacHeader *hdr, uint8_t index, Mac48Address addr); the index argument should probably be an enum instead and the documentation for this function should probably try to explain why it is needed. this is really cool: keep up the good work ! Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 16 04:49:19 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 12:49:19 +0100 Subject: [Ns-developers] About real-world application integration In-Reply-To: References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> Message-ID: <1237204159.31135.268.camel@diese.inria.fr> On Mon, 2009-03-16 at 19:40 +0900, Hajime Tazaki wrote: > >> > { > >> > NS_LOG_FUNCTION (this); > >> > GarbageCollectDeadProcessesAndThreads (); > >> >- for (std::vector::iterator i = m_processes.begin > >> >(); i != m_processes.end (); ++i) > >> >+ for (std::vector::iterator i = m_processes.begin > >> >(); i != m_processes.end ();) > >> > { > >> > struct Process *process = *i; > >> > DeleteProcess (process); > >> >+ i = m_processes.erase (i); > >> > } > >> >- m_processes.clear (); > >> > >> I can make a patch, too. > > > >I meant that I don't really understand what this patch is doing: it > >seems that it's really doing the same thing as before, only differently. > > Ah, sorry. > > When DeleteProcess is called, and threads is not empty, > DeleteProcess hook SIGKILL in the context of DoDispose(), > and delivered to simu_exit(). Then process is removed from > m_processes before returning DeleteProcess(). > > So if there is multiple processes in m_processes, it might > be problem. This patch try to fix this. I am really very sorry but I don't understand the problem this patch is solving. Could you try to outline for me the exact scenario which is problematic with the previous version ? Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 16 06:53:24 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 14:53:24 +0100 Subject: [Ns-developers] 802.11s code review Message-ID: <1237211604.31135.393.camel@diese.inria.fr> hi, 2 weeks ago, at the ns-3 workshop (http://www.nsnam.org/wiki/index.php/Wns3-2009), Kirill Andreev presented a 802.11s implementation for ns-3 (http://forge.wenos.ru/hgprojects/ns3dev/). There is really a _lot_ of new code here so, I have done a relatively high-level first review and did not look at very many details. I have explicitely CCed gustavo because I think he could helpfully comment on the code and my own comments below (more specifically, comment 3): 1) I found routing-table-test.cc which, I think, is awesome. It would make sense to make it a test just like src/devices/wifi/wifi-test.cc which is run in an automated way with "./waf check". 2) There are a bunch of coding style issues: http://www.nsnam.org/codingstyle.html summarizes some (but not all) constraints: the goal is really to try to make all of the ns-3 code look the same and make it impossible to figure out who wrote the code by just looking at its indentation and layout. A few quick examples: uint32_t L2RoutingNetDevice::GetIfIndex() const { NS_LOG_FUNCTION_NOARGS (); return m_ifIndex; } should be left-aligned: uint32_t L2RoutingNetDevice::GetIfIndex() const { NS_LOG_FUNCTION_NOARGS (); return m_ifIndex; } this if statement: if (!Mac48Address::IsMatchingType (routingPort->GetAddress ())) NS_FATAL_ERROR ("Device does not support eui 48 addresses: cannot be added to bridge."); should use braces, even for a single-line statement: if (!Mac48Address::IsMatchingType (routingPort->GetAddress ())) { NS_FATAL_ERROR ("Device does not support eui 48 addresses: cannot be added to bridge."); } This inline method declaration (WifiBeaconTimingElement): uint16_t TIMESTAMP_TO_U16(Time x) { return ((uint16_t)((x.GetMicroSeconds() >> 8)&0xffff)); }; should not be inline. i.e., it should be declared here and the implementation moved to the .cc file to maximize the readability of the header. (Of course, its name should follow the MixedCamel convention rather than ALL_UPPER_CASE). enum dot11sPathSelectionProtocol is declared in src/devices/wifi/mesh-configuration-element.h which is a bit un-intuitive: it would be nice if the name of the enum had at least some sort of relationship as to which header it is defined in. The same goes for DestinationAddressUnit defined in mesh-wifi-preq-information-element.h: maybe making it an inner class of the outer WifiPreqInformationElement class would help. I know some people will think I am way too anal about this but, well, that's fine: it's just my job to make everyone miserable :) 3) src/devices/l2-routing/l2-routing-main/l2-routing-net-device.h looks like a more generic version of src/devices/bridge-net-device.cc which delegates l2 forwarding decisions to another class. I wonder if it would be possible to, instead, delegate the forwarding/routing decisions to a subclass through a virtual method from a base class: class L2RoutingNetDevice : public NetDevice { // check device capabilities, register receive callback, // manage associated BridgeChannel, call DoAddPort to notify subclass void AddPort (...); uint32_t GetNPorts (void) const; // Note: it might make sense to add EnablePort and Disable port, just like Hwmp::EnablePort and Hwmp::DisablePort. If so, AddPort should return a port index and Enable and Disable port should take that index. private: // called by ::AddPort virtual void DoAddPort (Ptr dev) = 0; virtual uint32_t DoGetNPorts (void) = 0; // called by ::ReceiveFromDevice and ::Send virtual void DoRoute (Ptr from, Mac48Address src, Mac48Address dst, Ptr p, uint8_t protocol) = 0; }; class HwmpNetDevice : public L2RoutingNetDevice { private: // implement all these methods. virtual void DoAddPort (Ptr dev); virtual uint32_t DoGetNPorts (void); virtual void DoRoute (Ptr from, Mac48Address src, Mac48Address dst, Ptr p, uint8_t protocol); // keep track of the port list. std::vector > m_ports; }; class LearningBridgeNetDevice : L2RoutingNetDevice { private: // implement all these methods. virtual void DoAddPort (Ptr dev); virtual uint32_t DoGetNPorts (void); virtual void DoRoute (Ptr from, Mac48Address src, Mac48Address dst, Ptr p, uint8_t protocol); // keep track of the port list. std::vector > m_ports; }; 4) I remember one of the questions during the wns3 workshop was related to tags and how to remove them. I can see that, in hwmp.cc, they are removed with RemoveAllTags which could be problematic. I don't think we have a better way to handle this for now but the plan is to solve this problem as part of the ipv4-rework over the next 2 weeks (so, as soon as I am done with this review, I will work on fixing this issue to solve your problem here :) 5) Why are MeshWifiMac::SetPrepReceivedCallback, SetPerrReceivedCallback, SetPeerStatusCallback, etc. virtual ? Do you have subclasses of MeshWifiMac ? 6) What happens in MeshWifiMac if one of the packets to forward does not have an HwmpTag ? Is this tag mandatory to make MeshWifiMac work ? If so, maybe it should be renamed MeshWifiMacTag. 7) What is a WifiPeerManager ? What is the purpose of WifiPeerManager::AttachPorts ? I don't see this method being called from anywhere so, I wonder what it's used for. Mathieu From gjcarneiro at gmail.com Mon Mar 16 08:07:57 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 16 Mar 2009 15:07:57 +0000 Subject: [Ns-developers] 802.11s code review In-Reply-To: <1237211604.31135.393.camel@diese.inria.fr> References: <1237211604.31135.393.camel@diese.inria.fr> Message-ID: 2009/3/16 Mathieu Lacage > hi, > > 2 weeks ago, at the ns-3 workshop > (http://www.nsnam.org/wiki/index.php/Wns3-2009), Kirill Andreev > presented a 802.11s implementation for ns-3 > (http://forge.wenos.ru/hgprojects/ns3dev/). > > There is really a _lot_ of new code here so, I have done a relatively > high-level first review and did not look at very many details. I have > explicitely CCed gustavo because I think he could helpfully comment on > the code and my own comments below (more specifically, comment 3): > > 1) I found routing-table-test.cc which, I think, is awesome. It would > make sense to make it a test just like src/devices/wifi/wifi-test.cc > which is run in an automated way with "./waf check". > > 2) There are a bunch of coding style issues: > http://www.nsnam.org/codingstyle.html summarizes some (but not all) > constraints: the goal is really to try to make all of the ns-3 code look > the same and make it impossible to figure out who wrote the code by just > looking at its indentation and layout. A few quick examples: > > uint32_t > L2RoutingNetDevice::GetIfIndex() const > { > NS_LOG_FUNCTION_NOARGS (); > return m_ifIndex; > } > > should be left-aligned: > > uint32_t > L2RoutingNetDevice::GetIfIndex() const > { > NS_LOG_FUNCTION_NOARGS (); > return m_ifIndex; > } > > this if statement: > > if (!Mac48Address::IsMatchingType (routingPort->GetAddress ())) > NS_FATAL_ERROR ("Device does not support eui 48 addresses: cannot be > added to bridge."); > > should use braces, even for a single-line statement: > > if (!Mac48Address::IsMatchingType (routingPort->GetAddress ())) > { > NS_FATAL_ERROR ("Device does not support eui 48 addresses: cannot > be added to bridge."); > } > > This inline method declaration (WifiBeaconTimingElement): > > uint16_t TIMESTAMP_TO_U16(Time x) > { > return ((uint16_t)((x.GetMicroSeconds() >> 8)&0xffff)); > }; > > should not be inline. i.e., it should be declared here and the > implementation moved to the .cc file to maximize the readability of the > header. (Of course, its name should follow the MixedCamel convention > rather than ALL_UPPER_CASE). > > enum dot11sPathSelectionProtocol is declared in > src/devices/wifi/mesh-configuration-element.h which is a bit > un-intuitive: it would be nice if the name of the enum had at least some > sort of relationship as to which header it is defined in. The same goes > for DestinationAddressUnit defined in > mesh-wifi-preq-information-element.h: maybe making it an inner class of > the outer WifiPreqInformationElement class would help. > > I know some people will think I am way too anal about this but, well, > that's fine: it's just my job to make everyone miserable :) > > 3) src/devices/l2-routing/l2-routing-main/l2-routing-net-device.h looks > like a more generic version of src/devices/bridge-net-device.cc which > delegates l2 forwarding decisions to another class. I wonder if it would > be possible to, instead, delegate the forwarding/routing decisions to a > subclass through a virtual method from a base class: > > class L2RoutingNetDevice : public NetDevice > { > // check device capabilities, register receive callback, > // manage associated BridgeChannel, call DoAddPort to notify subclass > void AddPort (...); > uint32_t GetNPorts (void) const; > > // Note: it might make sense to add EnablePort and Disable port, just > like Hwmp::EnablePort and Hwmp::DisablePort. If so, AddPort should > return a port index and Enable and Disable port should take that index. > private: > // called by ::AddPort > virtual void DoAddPort (Ptr dev) = 0; > virtual uint32_t DoGetNPorts (void) = 0; > // called by ::ReceiveFromDevice and ::Send > virtual void DoRoute (Ptr from, Mac48Address src, > Mac48Address dst, Ptr p, uint8_t protocol) = 0; > }; > > class HwmpNetDevice : public L2RoutingNetDevice > { > private: > // implement all these methods. > virtual void DoAddPort (Ptr dev); > virtual uint32_t DoGetNPorts (void); > virtual void DoRoute (Ptr from, Mac48Address src, > Mac48Address dst, Ptr p, uint8_t protocol); > > // keep track of the port list. > std::vector > m_ports; > }; > > class LearningBridgeNetDevice : L2RoutingNetDevice > { > private: > // implement all these methods. > virtual void DoAddPort (Ptr dev); > virtual uint32_t DoGetNPorts (void); > virtual void DoRoute (Ptr from, Mac48Address src, > Mac48Address dst, Ptr p, uint8_t protocol); > > // keep track of the port list. > std::vector > m_ports; > }; OK, here's my first superficial comment. First of all, I was not present at the NS conference, so I am really out of context, looking at this for the first time. I really do not understand why you need an inner learning bridge inside a .11s mesh point netdevice. I do not understand what the concept of "port" inside a netdevice means. Last time I saw a .11s draft (a couple of years ago), I saw nothing of this sort; all I saw was a tree formed by mesh portal announcements, and routing was either "send to the mesh portal" or "discover route using AODV-like or OLSR-like protocol", nothing at all like learning bridge was used for intra-mesh forwarding. So without understanding this "port" concept, I really cannot comment on this. Perhaps the 802.11s standard has evolved, but I wouldn't know because I am not following... One major comment I would have is, stop calling classes L2This and L2That. Layer 2 is too broad a term to be used in this context. Maybe Ieee802Xxx, or MeshXxx. Another major comment on style is that the "design patterns" guys usually say it is bad to design too much inheritance-oriented. Here I see LearningBridgeNetDevice --> L2RoutingNetDevice --> NetDevice. The design patterns gurus often say you should use aggregation instead of inheritance when possible. So ask yourselves, could the same problem be solved via aggregation instead of inheritance without noticeably complicating things? > > 4) I remember one of the questions during the wns3 workshop was related > to tags and how to remove them. I can see that, in hwmp.cc, they are > removed with RemoveAllTags which could be problematic. I don't think we > have a better way to handle this for now but the plan is to solve this > problem as part of the ipv4-rework over the next 2 weeks (so, as soon as > I am done with this review, I will work on fixing this issue to solve > your problem here :) > > 5) Why are MeshWifiMac::SetPrepReceivedCallback, > SetPerrReceivedCallback, SetPeerStatusCallback, etc. virtual ? Do you > have subclasses of MeshWifiMac ? > > 6) What happens in MeshWifiMac if one of the packets to forward does not > have an HwmpTag ? Is this tag mandatory to make MeshWifiMac work ? If > so, maybe it should be renamed MeshWifiMacTag. > > 7) What is a WifiPeerManager ? What is the purpose of > WifiPeerManager::AttachPorts ? I don't see this method being called from > anywhere so, I wonder what it's used for. > > Mathieu > > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From boyko at iitp.ru Mon Mar 16 08:39:01 2009 From: boyko at iitp.ru (Pavel Boyko) Date: Mon, 16 Mar 2009 18:39:01 +0300 Subject: [Ns-developers] 802.11s code review In-Reply-To: <1237211604.31135.393.camel@diese.inria.fr> References: <1237211604.31135.393.camel@diese.inria.fr> Message-ID: <200903161839.02116.boyko@iitp.ru> Mathieu, Gustavo, thank you very much for reviewing our code. All your comments seem reasonable, some of them are already fixed. The others are added to our bug tracker. Just now we are making major refactoring of the architecture and code (don't panic, most of the code remains the same), so I kindly ask you to pause review for 1-2 weeks. By the end of this week I will send you the module architecture description (can I do this on nsnam wiki?) for review. I hope it will answer your questions about bridging, ports, peer management, etc. Best regards, Pavel Boyko, researcher at IITP RAS On Monday 16 March 2009 16:53:24 Mathieu Lacage wrote: > hi, > > 2 weeks ago, at the ns-3 workshop > (http://www.nsnam.org/wiki/index.php/Wns3-2009), Kirill Andreev > presented a 802.11s implementation for ns-3 > (http://forge.wenos.ru/hgprojects/ns3dev/). > > There is really a _lot_ of new code here so, I have done a relatively > high-level first review and did not look at very many details. I have > explicitely CCed gustavo because I think he could helpfully comment on > the code and my own comments below (more specifically, comment 3): > > 1) I found routing-table-test.cc which, I think, is awesome. It would > make sense to make it a test just like src/devices/wifi/wifi-test.cc > which is run in an automated way with "./waf check". > > 2) There are a bunch of coding style issues: > http://www.nsnam.org/codingstyle.html summarizes some (but not all) > constraints: the goal is really to try to make all of the ns-3 code look > the same and make it impossible to figure out who wrote the code by just > looking at its indentation and layout. A few quick examples: > > uint32_t > L2RoutingNetDevice::GetIfIndex() const > { > NS_LOG_FUNCTION_NOARGS (); > return m_ifIndex; > } > > should be left-aligned: > > uint32_t > L2RoutingNetDevice::GetIfIndex() const > { > NS_LOG_FUNCTION_NOARGS (); > return m_ifIndex; > } > > this if statement: > > if (!Mac48Address::IsMatchingType (routingPort->GetAddress ())) > NS_FATAL_ERROR ("Device does not support eui 48 addresses: cannot be > added to bridge."); > > should use braces, even for a single-line statement: > > if (!Mac48Address::IsMatchingType (routingPort->GetAddress ())) > { > NS_FATAL_ERROR ("Device does not support eui 48 addresses: cannot > be added to bridge."); > } > > This inline method declaration (WifiBeaconTimingElement): > > uint16_t TIMESTAMP_TO_U16(Time x) > { > return ((uint16_t)((x.GetMicroSeconds() >> 8)&0xffff)); > }; > > should not be inline. i.e., it should be declared here and the > implementation moved to the .cc file to maximize the readability of the > header. (Of course, its name should follow the MixedCamel convention > rather than ALL_UPPER_CASE). > > enum dot11sPathSelectionProtocol is declared in > src/devices/wifi/mesh-configuration-element.h which is a bit > un-intuitive: it would be nice if the name of the enum had at least some > sort of relationship as to which header it is defined in. The same goes > for DestinationAddressUnit defined in > mesh-wifi-preq-information-element.h: maybe making it an inner class of > the outer WifiPreqInformationElement class would help. > > I know some people will think I am way too anal about this but, well, > that's fine: it's just my job to make everyone miserable :) > > 3) src/devices/l2-routing/l2-routing-main/l2-routing-net-device.h looks > like a more generic version of src/devices/bridge-net-device.cc which > delegates l2 forwarding decisions to another class. I wonder if it would > be possible to, instead, delegate the forwarding/routing decisions to a > subclass through a virtual method from a base class: > > class L2RoutingNetDevice : public NetDevice > { > // check device capabilities, register receive callback, > // manage associated BridgeChannel, call DoAddPort to notify subclass > void AddPort (...); > uint32_t GetNPorts (void) const; > > // Note: it might make sense to add EnablePort and Disable port, just > like Hwmp::EnablePort and Hwmp::DisablePort. If so, AddPort should > return a port index and Enable and Disable port should take that index. > private: > // called by ::AddPort > virtual void DoAddPort (Ptr dev) = 0; > virtual uint32_t DoGetNPorts (void) = 0; > // called by ::ReceiveFromDevice and ::Send > virtual void DoRoute (Ptr from, Mac48Address src, > Mac48Address dst, Ptr p, uint8_t protocol) = 0; > }; > > class HwmpNetDevice : public L2RoutingNetDevice > { > private: > // implement all these methods. > virtual void DoAddPort (Ptr dev); > virtual uint32_t DoGetNPorts (void); > virtual void DoRoute (Ptr from, Mac48Address src, > Mac48Address dst, Ptr p, uint8_t protocol); > > // keep track of the port list. > std::vector > m_ports; > }; > > class LearningBridgeNetDevice : L2RoutingNetDevice > { > private: > // implement all these methods. > virtual void DoAddPort (Ptr dev); > virtual uint32_t DoGetNPorts (void); > virtual void DoRoute (Ptr from, Mac48Address src, > Mac48Address dst, Ptr p, uint8_t protocol); > > // keep track of the port list. > std::vector > m_ports; > }; > > 4) I remember one of the questions during the wns3 workshop was related > to tags and how to remove them. I can see that, in hwmp.cc, they are > removed with RemoveAllTags which could be problematic. I don't think we > have a better way to handle this for now but the plan is to solve this > problem as part of the ipv4-rework over the next 2 weeks (so, as soon as > I am done with this review, I will work on fixing this issue to solve > your problem here :) > > 5) Why are MeshWifiMac::SetPrepReceivedCallback, > SetPerrReceivedCallback, SetPeerStatusCallback, etc. virtual ? Do you > have subclasses of MeshWifiMac ? > > 6) What happens in MeshWifiMac if one of the packets to forward does not > have an HwmpTag ? Is this tag mandatory to make MeshWifiMac work ? If > so, maybe it should be renamed MeshWifiMacTag. > > 7) What is a WifiPeerManager ? What is the purpose of > WifiPeerManager::AttachPorts ? I don't see this method being called from > anywhere so, I wonder what it's used for. > > Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 16 08:50:13 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 16:50:13 +0100 Subject: [Ns-developers] 802.11s code review In-Reply-To: References: <1237211604.31135.393.camel@diese.inria.fr> Message-ID: <1237218613.31135.416.camel@diese.inria.fr> On Mon, 2009-03-16 at 15:07 +0000, Gustavo Carneiro wrote: > > > 2009/3/16 Mathieu Lacage > I really do not understand why you need an inner learning bridge > inside a .11s mesh point netdevice. I do not understand what the The idea would not be to have an inner learning bridge within a mesh device: it would be to reuse the glue between a node and the forwarding/learning function of a learning bridge and move that common/reused clue in a NetDevice intermediate base class such that both the learning bridge and the routing device share this code. > concept of "port" inside a netdevice means. Last time I saw a .11s > draft (a couple of years ago), I saw nothing of this sort; all I saw > was a tree formed by mesh portal announcements, and routing was either > "send to the mesh portal" or "discover route using AODV-like or > OLSR-like protocol", nothing at all like learning bridge was used for > intra-mesh forwarding. So without understanding this "port" concept, > I really cannot comment on this. Perhaps the 802.11s standard has > evolved, but I wouldn't know because I am not following... I believe, that within the context of this code, a 'port' is merely a network card which the layer-2 routing protocol will manage. What is central to this code seems to be the idea that you don't have to run the same layer-2 routing protocol over all network cards. Note, that, of course, you could chose to implement the routing protocol on top of the netdevices, at a layer logically equivalent to ip and arp, instead of within one of the netdevices. I am not sure what would be the pros and cons of this solution. Well, I can see that it would be simpler to understand the code but, I don't understand enough about this to know what would be the cons. Well, actually, you probably know why the BridgeNetDevice is a NetDevice subclass instead of being an aggregate to the Node which manages all incoming packets and devices, right ? Would you mind spell this out for me ? (yes, I am asking because I can't remember) > > One major comment I would have is, stop calling classes L2This and > L2That. Layer 2 is too broad a term to be used in this context. > Maybe Ieee802Xxx, or MeshXxx. Yes, the current naming is somewhat confusing. > > Another major comment on style is that the "design patterns" guys > usually say it is bad to design too much inheritance-oriented. Here I > see LearningBridgeNetDevice --> L2RoutingNetDevice --> NetDevice. The > design patterns gurus often say you should use aggregation instead of > inheritance when possible. So ask yourselves, could the same problem > be solved via aggregation instead of inheritance without noticeably > complicating things? Well, I sort of already asked myself this question: the current code is really not very trivial to follow and I can see a lot of duplication with the bridge code/API so, I would see value in avoiding both the code duplication and simplifying a bit the code paths to avoid another level of indirection. Right now, the l2routingnetdevice duplicates code from bridgenetdevice and duplicates information from its associated l2routingprotocol: an l2routingprotocol can't really exist without an associated l2routingnetdevice. Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 16 08:51:32 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 16 Mar 2009 16:51:32 +0100 Subject: [Ns-developers] 802.11s code review In-Reply-To: <200903161839.02116.boyko@iitp.ru> References: <1237211604.31135.393.camel@diese.inria.fr> <200903161839.02116.boyko@iitp.ru> Message-ID: <1237218692.31135.417.camel@diese.inria.fr> On Mon, 2009-03-16 at 18:39 +0300, Pavel Boyko wrote: > Just now we are making major refactoring of the architecture and code > (don't panic, most of the code remains the same), so I kindly ask you to pause > review for 1-2 weeks. By the end of this week I will send you the module Ok. > architecture description (can I do this on nsnam wiki?) for review. I hope it Yes, of course. > will answer your questions about bridging, ports, peer management, etc. Great ! Mathieu From gjcarneiro at gmail.com Mon Mar 16 09:07:25 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 16 Mar 2009 16:07:25 +0000 Subject: [Ns-developers] 802.11s code review In-Reply-To: <1237218613.31135.416.camel@diese.inria.fr> References: <1237211604.31135.393.camel@diese.inria.fr> <1237218613.31135.416.camel@diese.inria.fr> Message-ID: 2009/3/16 Mathieu Lacage > On Mon, 2009-03-16 at 15:07 +0000, Gustavo Carneiro wrote: > > > > > > 2009/3/16 Mathieu Lacage > > > I really do not understand why you need an inner learning bridge > > inside a .11s mesh point netdevice. I do not understand what the > > The idea would not be to have an inner learning bridge within a mesh > device: it would be to reuse the glue between a node and the > forwarding/learning function of a learning bridge and move that > common/reused clue in a NetDevice intermediate base class such that both > the learning bridge and the routing device share this code. > > > concept of "port" inside a netdevice means. Last time I saw a .11s > > draft (a couple of years ago), I saw nothing of this sort; all I saw > > was a tree formed by mesh portal announcements, and routing was either > > "send to the mesh portal" or "discover route using AODV-like or > > OLSR-like protocol", nothing at all like learning bridge was used for > > intra-mesh forwarding. So without understanding this "port" concept, > > I really cannot comment on this. Perhaps the 802.11s standard has > > evolved, but I wouldn't know because I am not following... > > I believe, that within the context of this code, a 'port' is merely a > network card which the layer-2 routing protocol will manage. What is > central to this code seems to be the idea that you don't have to run the > same layer-2 routing protocol over all network cards. I am still no following. I thought a .11s MAC layer would have its own private instance of a routing agent. Why would you have one routing agent managing more than one .11s card? Is that described in the .11s draft, or any other standard? > > > Note, that, of course, you could chose to implement the routing protocol > on top of the netdevices, at a layer logically equivalent to ip and arp, > instead of within one of the netdevices. I am not sure what would be the > pros and cons of this solution. Well, I can see that it would be simpler > to understand the code but, I don't understand enough about this to know > what would be the cons. > Well, actually, you probably know why the > BridgeNetDevice is a NetDevice subclass instead of being an aggregate to > the Node which manages all incoming packets and devices, right ? Would > you mind spell this out for me ? (yes, I am asking because I can't > remember) The BridgeNetDevice is a (virtual) netdevice because it makes interaction with IPv4 much simpler. You can assign a single IPv4 address to this virtual interface. When IP sends packets to BridgeNetDevice, the packet is flooded to the entire bridged network, and IP routing works correctly because there is only one interface representing the entire bridged network segment. The alternative would be to define a new API to tell IPv4 something like "look, this, this, and that netdevice all are on the same L2 network, so when you send packets send to all of them, not just one". I think a BridgeNetDevice is a simpler approach to the problem. That this is the approach followed by Linux [1] lends weight to this opinion. [1] http://www.linuxfoundation.org/en/Net:Bridge > > > > One major comment I would have is, stop calling classes L2This and > > L2That. Layer 2 is too broad a term to be used in this context. > > Maybe Ieee802Xxx, or MeshXxx. > > Yes, the current naming is somewhat confusing. > > > > Another major comment on style is that the "design patterns" guys > > usually say it is bad to design too much inheritance-oriented. Here I > > see LearningBridgeNetDevice --> L2RoutingNetDevice --> NetDevice. The > > design patterns gurus often say you should use aggregation instead of > > inheritance when possible. So ask yourselves, could the same problem > > be solved via aggregation instead of inheritance without noticeably > > complicating things? > > Well, I sort of already asked myself this question: the current code is > really not very trivial to follow and I can see a lot of duplication > with the bridge code/API so, I would see value in avoiding both the code > duplication and simplifying a bit the code paths to avoid another level > of indirection. Right now, the l2routingnetdevice duplicates code from > bridgenetdevice and duplicates information from its associated > l2routingprotocol: an l2routingprotocol can't really exist without an > associated l2routingnetdevice. > > Mathieu > > > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From tazaki at sfc.wide.ad.jp Mon Mar 16 09:15:56 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Tue, 17 Mar 2009 01:15:56 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1237198269.31135.121.camel@diese.inria.fr> References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> Message-ID: At Mon, 16 Mar 2009 11:11:09 +0100, Mathieu Lacage wrote: >I see: it's weird that I did not see the ipv6 part of the patch. To make >sure I don't forget anything, would you mind send me a list of files you >have modified and files you have added ? Followings are modified/added files in my repository. Diff is based on rev 4583 of code.nsnam.org/mathieu/ns-3-simu changeset: 4583:ed8a51921025 tag: tip user: Mathieu Lacage date: Wed Dec 03 07:38:46 2008 +0100 summary: typo .hgignore bindings/python/ns3_module_helper.py bindings/python/ns3_module_node.py examples/process-quagga.cc examples/third.cc examples/wifi-wired-bridging.cc examples/wscript scratch/process-zebra.cc scratch/process-zebra.py src/applications/icmpv6-test-error/icmpv6-test-error.cc src/applications/icmpv6-test-error/icmpv6-test-error.h src/applications/icmpv6-test-error/waf src/applications/icmpv6-test-error/wscript src/applications/ping6/ping6.cc src/applications/ping6/ping6.h src/applications/ping6/waf src/applications/ping6/wscript src/applications/radvd/config-interface.cc src/applications/radvd/config-interface.h src/applications/radvd/radvd.cc src/applications/radvd/radvd.h src/applications/radvd/wscript src/applications/tcp-echo6/tcp-echo6-client.cc src/applications/tcp-echo6/tcp-echo6-client.h src/applications/tcp-echo6/tcp-echo6-server.cc src/applications/tcp-echo6/tcp-echo6-server.h src/applications/tcp-echo6/waf src/applications/tcp-echo6/wscript src/applications/udp-echo6/udp-echo6-client.cc src/applications/udp-echo6/udp-echo6-client.h src/applications/udp-echo6/udp-echo6-server.cc src/applications/udp-echo6/udp-echo6-server.h src/applications/udp-echo6/waf src/applications/udp-echo6/wscript src/contrib/nam-helper.cc src/contrib/nam-helper.h src/contrib/visualizer/core.py src/contrib/wscript src/devices/bridge/bridge-net-device.cc src/devices/bridge/bridge-net-device.h src/devices/csma/csma-net-device.cc src/devices/csma/csma-net-device.h src/devices/emu/emu-net-device.cc src/devices/emu/emu-net-device.h src/devices/point-to-point/point-to-point-net-device.cc src/devices/point-to-point/point-to-point-net-device.h src/devices/tap/host-tap-net-device.cc src/devices/tap/host-tap-net-device.h src/devices/tap/tap-net-device.cc src/devices/tap/tap-net-device.h src/devices/wifi/dca-txop.cc src/devices/wifi/mac-low.cc src/devices/wifi/mac-rx-middle.cc src/devices/wifi/mac-tx-middle.cc src/devices/wifi/nqap-wifi-mac.cc src/devices/wifi/nqsta-wifi-mac.cc src/devices/wifi/wifi-net-device.cc src/devices/wifi/wifi-net-device.h src/devices/wifi/wifi-phy-state-helper.cc src/devices/wifi/wifi-remote-station-manager.cc src/devices/wifi/yans-wifi-channel.cc src/devices/wifi/yans-wifi-phy.cc src/helper/icmpv6-test-error-helper.cc src/helper/icmpv6-test-error-helper.h src/helper/internet-stackv6-helper.cc src/helper/internet-stackv6-helper.h src/helper/ipv6-address-helper.cc src/helper/ipv6-address-helper.h src/helper/ipv6-interface-container.cc src/helper/ipv6-interface-container.h src/helper/netlink-socket-helper.cc src/helper/netlink-socket-helper.h src/helper/ping6-helper.cc src/helper/ping6-helper.h src/helper/radvd-helper.cc src/helper/radvd-helper.h src/helper/tcp-echo6-helper.cc src/helper/tcp-echo6-helper.h src/helper/udp-echo6-helper.cc src/helper/udp-echo6-helper.h src/helper/wscript src/internet-stack/arp-cache.cc src/internet-stack/arp-cache.h src/internet-stack/icmpv6-header.cc src/internet-stack/icmpv6-header.h src/internet-stack/icmpv6-l4-protocol.cc src/internet-stack/icmpv6-l4-protocol.h src/internet-stack/icmpv6-socket-factory-impl.cc src/internet-stack/icmpv6-socket-factory-impl.h src/internet-stack/icmpv6-socket-impl.cc src/internet-stack/icmpv6-socket-impl.h src/internet-stack/internet-stackv6.cc src/internet-stack/internet-stackv6.h src/internet-stack/ipv6-end-point-demux.cc src/internet-stack/ipv6-end-point-demux.h src/internet-stack/ipv6-end-point.cc src/internet-stack/ipv6-end-point.h src/internet-stack/ipv6-extension-demux.cc src/internet-stack/ipv6-extension-demux.h src/internet-stack/ipv6-extension-header.cc src/internet-stack/ipv6-extension-header.h src/internet-stack/ipv6-extension.cc src/internet-stack/ipv6-extension.h src/internet-stack/ipv6-impl.cc src/internet-stack/ipv6-impl.h src/internet-stack/ipv6-interface.cc src/internet-stack/ipv6-interface.h src/internet-stack/ipv6-l3-protocol.cc src/internet-stack/ipv6-l3-protocol.h src/internet-stack/ipv6-l4-protocol.cc src/internet-stack/ipv6-l4-protocol.h src/internet-stack/ipv6-loopback-interface.cc src/internet-stack/ipv6-loopback-interface.h src/internet-stack/ipv6-option-demux.cc src/internet-stack/ipv6-option-demux.h src/internet-stack/ipv6-option-header.cc src/internet-stack/ipv6-option-header.h src/internet-stack/ipv6-option.cc src/internet-stack/ipv6-option.h src/internet-stack/ipv6-socket-impl.cc src/internet-stack/ipv6-socket-impl.h src/internet-stack/ipv6-static-routing.cc src/internet-stack/ipv6-static-routing.h src/internet-stack/ndisc-cache.cc src/internet-stack/ndisc-cache.h src/internet-stack/ndisc-ipv6-interface.cc src/internet-stack/ndisc-ipv6-interface.h src/internet-stack/router-prefix.cc src/internet-stack/router-prefix.h src/internet-stack/tcp-header.cc src/internet-stack/tcp-header.h src/internet-stack/tcp-socket-impl.cc src/internet-stack/tcp6-l4-protocol.cc src/internet-stack/tcp6-l4-protocol.h src/internet-stack/tcp6-socket-factory-impl.cc src/internet-stack/tcp6-socket-factory-impl.h src/internet-stack/tcp6-socket-impl.cc src/internet-stack/tcp6-socket-impl.h src/internet-stack/udp-header.cc src/internet-stack/udp-header.h src/internet-stack/udp6-l4-protocol.cc src/internet-stack/udp6-l4-protocol.h src/internet-stack/udp6-socket-factory-impl.cc src/internet-stack/udp6-socket-factory-impl.h src/internet-stack/udp6-socket-impl.cc src/internet-stack/udp6-socket-impl.h src/internet-stack/wscript src/mobility/wscript src/node/icmp-socket.cc src/node/icmp-socket.h src/node/icmpv6-socket-factory.cc src/node/icmpv6-socket-factory.h src/node/ipv6-address.cc src/node/ipv6-address.h src/node/ipv6-route.cc src/node/ipv6-route.h src/node/ipv6.cc src/node/ipv6.h src/node/mac48-address.cc src/node/mac48-address.h src/node/net-device.h src/node/netlink-attribute.cc src/node/netlink-attribute.h src/node/netlink-ipv6-routing-table.cc src/node/netlink-ipv6-routing-table.h src/node/netlink-message-route.cc src/node/netlink-message-route.h src/node/netlink-message.cc src/node/netlink-message.h src/node/netlink-socket-address.cc src/node/netlink-socket-address.h src/node/netlink-socket-factory.cc src/node/netlink-socket-factory.h src/node/netlink-socket-test.cc src/node/netlink-socket.cc src/node/netlink-socket.h src/node/node.cc src/node/simple-net-device.cc src/node/simple-net-device.h src/node/socket.cc src/node/socket.h src/node/tcp6-socket-factory.cc src/node/tcp6-socket-factory.h src/node/udp6-socket-factory.cc src/node/udp6-socket-factory.h src/node/wscript src/process-manager/alloc.cc src/process-manager/cmsg.cc src/process-manager/cmsg.h src/process-manager/fiber-context-pthread.c src/process-manager/fiber-context-ucontext.c src/process-manager/libc-global-variables.c src/process-manager/libc-simu.c src/process-manager/libc.c src/process-manager/libc.h src/process-manager/process-manager.cc src/process-manager/process.h src/process-manager/simu-fcntl.h src/process-manager/simu-fd.cc src/process-manager/simu-stdio.cc src/process-manager/simu-stdio.h src/process-manager/simu-unistd.h src/process-manager/simu.cc src/process-manager/unix-datagram-socket-fd.cc src/process-manager/unix-socket-fd.cc src/process-manager/unix-socket-fd.h src/process-manager/unix-stream-socket-fd.cc src/process-manager/utils.cc src/process-manager/waiter.cc src/wscript wscript wutils.py Currently, there is a lot of nonsense diff in this modification (e.g. only diff comment paragraph), sorry. regards, hajime From tazaki at sfc.wide.ad.jp Mon Mar 16 09:45:19 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Tue, 17 Mar 2009 01:45:19 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1237204159.31135.268.camel@diese.inria.fr> References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> <1237204159.31135.268.camel@diese.inria.fr> Message-ID: At Mon, 16 Mar 2009 12:49:19 +0100, Mathieu Lacage wrote: > >On Mon, 2009-03-16 at 19:40 +0900, Hajime Tazaki wrote: > >> >> > { >> >> > NS_LOG_FUNCTION (this); >> >> > GarbageCollectDeadProcessesAndThreads (); >> >> >- for (std::vector::iterator i = m_processes.begin >> >> >(); i != m_processes.end (); ++i) >> >> >+ for (std::vector::iterator i = m_processes.begin >> >> >(); i != m_processes.end ();) >> >> > { >> >> > struct Process *process = *i; >> >> > DeleteProcess (process); >> >> >+ i = m_processes.erase (i); >> >> > } >> >> >- m_processes.clear (); >> >> >> >> I can make a patch, too. >> > >> >I meant that I don't really understand what this patch is doing: it >> >seems that it's really doing the same thing as before, only differently. >> >> Ah, sorry. >> >> When DeleteProcess is called, and threads is not empty, >> DeleteProcess hook SIGKILL in the context of DoDispose(), >> and delivered to simu_exit(). Then process is removed from >> m_processes before returning DeleteProcess(). >> >> So if there is multiple processes in m_processes, it might >> be problem. This patch try to fix this. > >I am really very sorry but I don't understand the problem this patch is >solving. Could you try to outline for me the exact scenario which is >problematic with the previous version ? Let me show you gdb stack of this problem. This stack was reproduced by previous version. #12 0xb7b4c630 in ns3::ProcessManager::DeleteProcess (this=0x80add28, process=0x87d5e10) #13 0xb7b4cab7 in ns3::ProcessManager::GarbageCollectDeadProcessesAndThreads (this=0x80add28) #14 0xb7b4f0ff in ns3::ProcessManager::Schedule (this=0x80add28) #15 0xb7b4fa52 in ns3::ProcessManager::ScheduleFromInterrupt (this=0x80add28, thread=0x87d8ab8) #16 0xb7b77e98 in ns3::UtilsSendSignal (process=0x87d8520, signum=9) #17 0xb7b4c564 in ns3::ProcessManager::DeleteProcess (this=0x80add28, process=0x87d8520) #18 0xb7b4fc14 in ns3::ProcessManager::DoDispose (this=0x80add28) #19 0xb77d28ed in ns3::Object::Dispose (this=0x80839f8) #20 0xb7936757 in ~NodeListPriv (this=0x80839b8) #21 0xb77d2187 in ns3::Object::MaybeDelete (this=0x80839b8) #22 0x0805f102 in ns3::Object::Unref (this=0x80839b8) #23 0xb7938f0e in ns3::Ptr::operator= (this=0xb7f195a0, o=@0xbfd3a040) #24 0xb793818c in ns3::NodeListPriv::Delete () #25 0xb7885592 in Notify (this=0x8083888) #26 0xb786038a in ns3::EventImpl::Invoke (this=0x8083888) #27 0xb788d3f7 in ns3::RealtimeSimulatorImpl::Destroy (this=0x8083a38) When the destroy event of simulator is happened, DeleteProcess is called twice for each process. and DeleteProcess in GarbageCollectDeadProcessesAndThreads() remove process entry from m_processes even though it was called from DoDispose(). So after one loop in DoDispose(), contents of m_processes would be changed. In that case, single process in a node made no problem. OTOH, when we install multiple processes into single node, as ApplicationContainer apps = process.Install (node); ApplicationContainer apps2 = process2.Install (node); #this is a typical case when we use zebra m_processes becomes to have a 2 entry in vector. But..... I become to think that this modification doesn't solve fundamentals. Should it avoid call DeleteProcee() twice? What do you think? regards, hajime From boyko at iitp.ru Mon Mar 16 09:51:46 2009 From: boyko at iitp.ru (Pavel Boyko) Date: Mon, 16 Mar 2009 19:51:46 +0300 Subject: [Ns-developers] 802.11s code review In-Reply-To: References: <1237211604.31135.393.camel@diese.inria.fr> <1237218613.31135.416.camel@diese.inria.fr> Message-ID: <200903161951.47130.boyko@iitp.ru> Gustavo, On Monday 16 March 2009 19:07:25 Gustavo Carneiro wrote: > I am still no following. I thought a .11s MAC layer would have its own > private instance of a routing agent. Why would you have one routing agent > managing more than one .11s card? Is that described in the .11s draft, or > any other standard? No, unfortunately 11s draft doesn't describe coordinated operation of the several wireless interfaces on the single mesh point. However, single interface mesh points don't look promising for our needs, you can find some very basic discussion even here: http://en.wikipedia.org/wiki/History_of_wireless_mesh_networking So we have decided to extend 11s draft model from the very start. One can obviously use single interface configuration in your simulation if you wish to exactly follow 11s. The way we propose to model multi-interface mesh point is really very similar to 'plain' bridging. The main difference is that our virtual mesh point device can (and do) _change_ packets it forwards from/to its interfaces, e.g. adding routing information. We don't subclass (and even use) BridgeNetDevice for this reason (using, however, BridgeChannel class). Regards, Pavel From craigdo at ee.washington.edu Mon Mar 16 10:05:13 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Mon, 16 Mar 2009 10:05:13 -0700 Subject: [Ns-developers] ns-3.4 : Final Steps In-Reply-To: <1237188286.31135.13.camel@diese.inria.fr> References: <12d69e490903130858s62eabaf9y138d697da12f79aa@mail.gmail.com> <1237188286.31135.13.camel@diese.inria.fr> Message-ID: > > ======Tracing====== > > There are 2 bugs related to tracing (443 and 505). The main one is > > the trace source rework of bug 443. It is queued up for merge at: > > http://code.nsnam.org/craigdo/ns-3-tracing > > This needs a little review, and I have not seen any further comments > > from others. > > I reviewed the src/devices/wifi part of the last version: Thanks for getting to this so quickly, Mathieu. > there are a > couple of uneeded changes: > > and wifi-net-device.h: > void SniffPacket (Ptr packet, Mac48Address to, > Mac48Address from, uint16_t type); > > wifi-net-device.cc: > +#include "ns3/ethernet-header.h" > +#include "ns3/ethernet-trailer.h" Done and done. > and, in wifi-net-device.cc: are you sure you need the copy below ? > > - m_promiscRx (this, packet, llc.GetType (), from, to, type); > + m_promiscRx (this, packet->Copy (), llc.GetType (), from, to, > type); This was not necessary. It prompted me to do a sweep through the devices looking for packet copies and I found a few other instances and fixed them as well. I updated CHANGES.html, so ... Raj, how do you want to proceed with merging this. There will be massive trace file changes, so it is probably best if you just let me have ns-3-dev for a couple of hours and let me get everything tested, consistent and then plugged back together. Sound good? -- Craig From gjcarneiro at gmail.com Mon Mar 16 10:34:59 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 16 Mar 2009 17:34:59 +0000 Subject: [Ns-developers] 802.11s code review In-Reply-To: <200903161951.47130.boyko@iitp.ru> References: <1237211604.31135.393.camel@diese.inria.fr> <1237218613.31135.416.camel@diese.inria.fr> <200903161951.47130.boyko@iitp.ru> Message-ID: 2009/3/16 Pavel Boyko > Gustavo, > > On Monday 16 March 2009 19:07:25 Gustavo Carneiro wrote: > > I am still no following. I thought a .11s MAC layer would have its own > > private instance of a routing agent. Why would you have one routing > agent > > managing more than one .11s card? Is that described in the .11s draft, > or > > any other standard? > > No, unfortunately 11s draft doesn't describe coordinated operation of the > several wireless interfaces on the single mesh point. However, single > interface mesh points don't look promising for our needs, you can find some > very basic discussion even here: > http://en.wikipedia.org/wiki/History_of_wireless_mesh_networking > > So we have decided to extend 11s draft model from the very start. One can > obviously use single interface configuration in your simulation if you wish > to > exactly follow 11s. > > The way we propose to model multi-interface mesh point is really very > similar > to 'plain' bridging. The main difference is that our virtual mesh point > device > can (and do) _change_ packets it forwards from/to its interfaces, e.g. > adding > routing information. We don't subclass (and even use) BridgeNetDevice for > this > reason (using, however, BridgeChannel class). Not saying what you are doing is wrong, but in my opinion we shouldn't indistinctly mix code implementing a standard with code implementing a research architecture. Maybe it's just me, but I find it just too confusing (as evidenced by the number of emails I had to send to clear my doubts). In my humble opinion, it would be much better if multi-interface support was completely separate from .11s, and be conceptually "above" the netdevice. In a different module, even. Refactoring the 'src/devices/bridge' module to support mesh bridging could be an option, I think. At least I don't see anything wrong with it in principle... Regards, -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From rbhattacharjea at gmail.com Mon Mar 16 11:26:45 2009 From: rbhattacharjea at gmail.com (raj bhattacharjea) Date: Mon, 16 Mar 2009 14:26:45 -0400 Subject: [Ns-developers] ns-3.4 : Final Steps In-Reply-To: References: <12d69e490903130858s62eabaf9y138d697da12f79aa@mail.gmail.com> <1237188286.31135.13.camel@diese.inria.fr> Message-ID: <12d69e490903161126g7e0b0204yaa82c45edb36e26@mail.gmail.com> On Mon, Mar 16, 2009 at 1:05 PM, wrote: > > Raj, how do you want to proceed with merging this. ?There will be massive > trace file changes, so it is probably best if you just let me have ns-3-dev > for a couple of hours and let me get everything tested, consistent and then > plugged back together. ?Sound good? > Go ahead. I'll stay out of your way with the TCP changes until you are done. Thanks! -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From ruben at net.t-labs.tu-berlin.de Mon Mar 16 11:31:45 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Mon, 16 Mar 2009 19:31:45 +0100 Subject: [Ns-developers] 802.11s code review In-Reply-To: References: <1237211604.31135.393.camel@diese.inria.fr> <1237218613.31135.416.camel@diese.inria.fr> <200903161951.47130.boyko@iitp.ru> Message-ID: <49BE9B11.4020101@net.t-labs.tu-berlin.de> Dear Pavel, Gustavo On 3/16/09 6:34 PM, Gustavo Carneiro wrote: > 2009/3/16 Pavel Boyko > >> Gustavo, >> >> On Monday 16 March 2009 19:07:25 Gustavo Carneiro wrote: >>> I am still no following. I thought a .11s MAC layer would have its own >>> private instance of a routing agent. Why would you have one routing >> agent >>> managing more than one .11s card? Is that described in the .11s draft, >> or >>> any other standard? >> No, unfortunately 11s draft doesn't describe coordinated operation of the >> several wireless interfaces on the single mesh point. However, single >> interface mesh points don't look promising for our needs, you can find some >> very basic discussion even here: >> http://en.wikipedia.org/wiki/History_of_wireless_mesh_networking >> >> So we have decided to extend 11s draft model from the very start. One can >> obviously use single interface configuration in your simulation if you wish >> to >> exactly follow 11s. >> >> The way we propose to model multi-interface mesh point is really very >> similar >> to 'plain' bridging. The main difference is that our virtual mesh point >> device >> can (and do) _change_ packets it forwards from/to its interfaces, e.g. >> adding >> routing information. We don't subclass (and even use) BridgeNetDevice for >> this >> reason (using, however, BridgeChannel class). > > > Not saying what you are doing is wrong, but in my opinion we shouldn't > indistinctly mix code implementing a standard with code implementing a > research architecture. Maybe it's just me, but I find it just too confusing > (as evidenced by the number of emails I had to send to clear my doubts). Yep, I agree too. There should be a clear distinction between what is really standard compliant (i.e. defined in the standard) and what is (a) inferred from the standard because it was not clearly defined in the standard (b) research stuff. From my point of view, this distinction should be made clear in the code (though I don't have a clear idea how) and in the documentation. Ruben > In my humble opinion, it would be much better if multi-interface support was > completely separate from .11s, and be conceptually "above" the netdevice. > In a different module, even. Refactoring the 'src/devices/bridge' module to > support mesh bridging could be an option, I think. At least I don't see > anything wrong with it in principle... > > Regards, > From Amine.Ismail at sophia.inria.fr Mon Mar 16 01:56:17 2009 From: Amine.Ismail at sophia.inria.fr (Mohamed Amine Ismail) Date: Mon, 16 Mar 2009 09:56:17 +0100 Subject: [Ns-developers] Wimax compile error Message-ID: <200903160956.17808.Amine.Ismail@sophia.inria.fr> Dear Dan, Our WiMAX module for ns-3 has been successfully compiled using the gcc-4.2 and gcc-3.4. We have some problem with other compiler version. you can use the following command to compile the code with a particular version of gcc: CXX="gcc path" ./waf configure; ./waf example: CXX="/usr/bin/gcc-4.2" ./waf configure; ./waf Best Regards, Amine >Dear Mathieu, >I try to compile wimax from ns-3 development tree. >I got the compile error that confused me. >I guess it could be class constructor initialization >error. but I don't find where this error is. >Could you please help me to say why wimax-ss-net-device.cc >is not compilable? >The error message is below. >Looking forward to hearing from you soon, >Best Regards, >Dan From raj.b at gatech.edu Mon Mar 16 13:31:51 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 16 Mar 2009 16:31:51 -0400 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <6955346121364463167@unknownmsgid> References: <6955346121364463167@unknownmsgid> Message-ID: <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> I am moving the discussion onto the developer's list, so please "reply all" for further correspondence. See my comments inline below. On Thu, Mar 12, 2009 at 9:41 AM, Pascal Kesseli wrote: > Dear Mr Bhattacharjea > > > > Currently, we are developing a RTP traffic generator for NS3 as our > bachelor?s thesis. While programming, we encountered the issue that some > classes, e.g. ns3::RandomVariable, are not derived from ns3::Object. Thus, > they cannot be used with ns3::Ptr, as the required Ref- and Unref-methods The current design does something like what ns3::Ptr does, just "under the covers" and without using Ptr objects. Let me try and explain: There are the publicly visible RandomVariable subclasses which you know and interact with regularly to get numbers from a certain distribution. If you look at the code however, you will see that these classes are just wrappers for underlying "Impl" classes. That is, e.g. UniformVariable forwards its relevant calls to UniformVariableImpl. The wrapper class, in addition to forwarding calls, knows how to copy the underlying Impl, so that the user experiences value semantics. This was done so that anonymous temporary RandomVariables could be passed around as parameters: DoSomething(UniformVariable(1,3)); In summary, the user visible classes, i.e. RandomVariable subclasses, are in some sense pointers that manage an underlying Impl. > are not present. Doing so would be necessary for our project, as we want our > traffic generator to be configured with various RandomVariable parameters, > preferably passed as ns3::Ptr references (and stored polymorphically in an > ns3::Ptr reference). The classes in fact already have polymorphic semantics, just without the explicit "Ptr": RandomVariable x = UniformVariable(1,2); RandomVariable y = ParetoVariable(...); etc... I know this looks weird (you may be wondering "where is the * or Ptr on the LHS and the new or Create<> on the RHS"), but it is what we have in ns-3, in the specific case of the RNGs. Note that none of our other classes really use these semantics. The RandomVariable class is kind of a pointer already, able to hold any of the Impl classes, and the whole effect provides this slightly odd value semantic. > > > > Can you suggest a possible solution for this situation? And, by the way, how You should be able to achieve exactly what you desire using ns-3 as-is; for an example of a traffic generator which takes RandomVariable subclasses as parameters (without using Ptr), see the OnOff application. It achieves the effect by using the ns-3 attributes/TypeId system, but you could just as easily have methods like: MyApplication::SetRNG(RandomVariable x) And then call this like: Ptr app; RandomVariable ranvar = ExponentialVariable(10); app->SetRNG(ranvar); > do you feel about using third party (header-only) libraries, as e.g. Boost > and its shared_ptr in such situations? > I think there was some discussion about using Boost or other ready-made smart pointer solutions a long time ago. Personally, I think our Ptr solution keeps out an additional external build dependency, and it is tailored to do exactly what we require in ns-3. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Mon Mar 16 15:13:42 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Mon, 16 Mar 2009 22:13:42 +0000 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> Message-ID: 2009/3/16 Raj Bhattacharjea > I am moving the discussion onto the developer's list, so please "reply > all" for further correspondence. See my comments inline below. > > On Thu, Mar 12, 2009 at 9:41 AM, Pascal Kesseli > wrote: > > Dear Mr Bhattacharjea > > > > > > > > Currently, we are developing a RTP traffic generator for NS3 as our > > bachelor?s thesis. While programming, we encountered the issue that some > > classes, e.g. ns3::RandomVariable, are not derived from ns3::Object. > Thus, > > they cannot be used with ns3::Ptr, as the required Ref- and Unref-methods > > The current design does something like what ns3::Ptr does, just "under > the covers" and without using Ptr objects. Let me try and explain: I should point out that there is a fundamental difference between Ptr and the RandomVariable classes. With Ptr, when you copy a pointer variable the original object is not copied. With a RandomVariable variable, copying the variable will trigger a under-the-hood copy of the underlying XxxImpl. Mathieu, correct me if I'm wrong (possible :) But perhaps the difference does not matter in this case. After all, a RandomVariable object is supposed to generate a series random numbers, and they are supposed to be independent. So it should not matter whether you generate two random numbers from a single RandomVariable object or one number from one RandomVariable A and another one from a RandomVariable B, where B is a copy of A. > > > There are the publicly visible RandomVariable subclasses which you > know and interact with regularly to get numbers from a certain > distribution. If you look at the code however, you will see that > these classes are just wrappers for underlying "Impl" classes. That > is, e.g. UniformVariable forwards its relevant calls to > UniformVariableImpl. The wrapper class, in addition to forwarding > calls, knows how to copy the underlying Impl, so that the user > experiences value semantics. This was done so that anonymous > temporary RandomVariables could be passed around as parameters: > > DoSomething(UniformVariable(1,3)); > > In summary, the user visible classes, i.e. RandomVariable subclasses, > are in some sense pointers that manage an underlying Impl. > > > are not present. Doing so would be necessary for our project, as we want > our > > traffic generator to be configured with various RandomVariable > parameters, > > preferably passed as ns3::Ptr references (and stored polymorphically in > an > > ns3::Ptr reference). > > The classes in fact already have polymorphic semantics, just without > the explicit "Ptr": > > RandomVariable x = UniformVariable(1,2); > RandomVariable y = ParetoVariable(...); > etc... > > I know this looks weird (you may be wondering "where is the * or Ptr > on the LHS and the new or Create<> on the RHS"), but it is what we > have in ns-3, in the specific case of the RNGs. Note that none of our > other classes really use these semantics. > > The RandomVariable class is kind of a pointer already, able to hold > any of the Impl classes, and the whole effect provides this slightly > odd value semantic. > > > > > > > > > Can you suggest a possible solution for this situation? And, by the way, > how > > You should be able to achieve exactly what you desire using ns-3 > as-is; for an example of a traffic generator which takes > RandomVariable subclasses as parameters (without using Ptr), see the > OnOff application. It achieves the effect by using the ns-3 > attributes/TypeId system, but you could just as easily have methods > like: > > MyApplication::SetRNG(RandomVariable x) > > And then call this like: > > Ptr app; > RandomVariable ranvar = ExponentialVariable(10); > app->SetRNG(ranvar); > > > > do you feel about using third party (header-only) libraries, as e.g. > Boost > > and its shared_ptr in such situations? > > > > I think there was some discussion about using Boost or other > ready-made smart pointer solutions a long time ago. Personally, I > think our Ptr solution keeps out an additional external build > dependency, and it is tailored to do exactly what we require in ns-3. Absolutely! /me loves ns3/ptr.h :-) -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From Guangyu.Pei at boeing.com Mon Mar 16 17:25:18 2009 From: Guangyu.Pei at boeing.com (Pei, Guangyu) Date: Mon, 16 Mar 2009 17:25:18 -0700 Subject: [Ns-developers] Allow GNU Scientific Library (GSL) in ns-3? Message-ID: Hi, I am wondering what is the preferred way of linking other libraries such as GNU Scientific Library (GSL) http://www.gnu.org/software/gsl/ in ns-3? I encountered a case in which I need more math tools than standard functions defined in math.h. In particular, I try to implement theoretical 802.11b CCK symbol error probabilities defined in equation (18) and (17) of paper by Pursley and Royster: "Properties and Performance of the IEEE 802.11b Complementary-Code-Key Signal Sets", IEEE Transactions on Communications, vol, 57, No.2, Feb. 2009. To evaluate these equation numerically, more advanced math library such as GSL becomes handy. What will be the ns-3 policy for linking non-standard library such as GSL? I really appreciate your help and comments, Thanks, Gary From raj.b at gatech.edu Mon Mar 16 18:00:31 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 16 Mar 2009 21:00:31 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Monday, March 16, 2008 Message-ID: <12d69e490903161800i7bb7f7d7o2348103c08ea8b30@mail.gmail.com> Dear All, I am going to start doing these daily updates regarding the upcoming release. The bulk of the information will be kept up-to-date here: http://www.nsnam.org/wiki/index.php/Ns-3.4 I will keep emailing out this link along with status changes. News: ===== None. Bugs: ===== There are 10 P1 bugs in the tracker, and 5 lower priority P2 bugs: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Bug_List Progress / Closed Bugs: ======================= Since the last email, no additional bugs have been closed. http://mailman.isi.edu/pipermail/ns-developers/2009-March/005455.html Craig is however, merging the tracing work (and a one line fix for bug 510), I expect by early tomorrow (Tuesday), and as soon as he is done, I will be merging the TCP fixes. There is still one critical bug that will remain after that, that will hopefully be resolved quickly. New Bugs: ========= None. Next Steps: =========== The first release candidate will be posted on Thursday, March 19. A full schedule of upcoming milestones can be found here: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From tjkopena at cs.drexel.edu Mon Mar 16 19:52:18 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Mon, 16 Mar 2009 22:52:18 -0400 Subject: [Ns-developers] Allow GNU Scientific Library (GSL) in ns-3? In-Reply-To: References: Message-ID: <13786f330903161952k701b6095od307d63640c1f005@mail.gmail.com> On Mon, Mar 16, 2009 at 8:25 PM, Pei, Guangyu wrote: > I am wondering what is the preferred way of linking other libraries such > as GNU Scientific Library (GSL) http://www.gnu.org/software/gsl/ in > ns-3? Gary, If you mean how to do this within the build system, there was a thread on the ns-3-users list a little while ago that talked about it. Search for "link a library." It's from November 2008. You can also look in the contributed and examples wscript files, e.g. for the configurator or DB support in the stats package for examples. [1] http://groups.google.com/group/ns-3-users -- - joe kopena right here and now From Guangyu.Pei at boeing.com Mon Mar 16 21:32:36 2009 From: Guangyu.Pei at boeing.com (Pei, Guangyu) Date: Mon, 16 Mar 2009 21:32:36 -0700 Subject: [Ns-developers] Allow GNU Scientific Library (GSL) in ns-3? In-Reply-To: <13786f330903161952k701b6095od307d63640c1f005@mail.gmail.com> References: <13786f330903161952k701b6095od307d63640c1f005@mail.gmail.com> Message-ID: > -----Original Message----- > From: Joseph Kopena [mailto:tjkopena at cs.drexel.edu] > Sent: Monday, March 16, 2009 7:52 PM > To: Pei, Guangyu > Cc: ns-developers at isi.edu > Subject: Re: [Ns-developers] Allow GNU Scientific Library > (GSL) in ns-3? > > On Mon, Mar 16, 2009 at 8:25 PM, Pei, Guangyu > wrote: > > I am wondering what is the preferred way of linking other libraries > > such as GNU Scientific Library (GSL) > http://www.gnu.org/software/gsl/ > > in ns-3? > > Gary, > > If you mean how to do this within the build system, there was > a thread on the ns-3-users list a little while ago that > talked about it. > Search for "link a library." It's from November 2008. > > You can also look in the contributed and examples wscript files, e.g. > for the configurator or DB support in the stats package for examples. > > [1] http://groups.google.com/group/ns-3-users Thanks for the pointers. I found the example of linking libxml2. I assume this is the preferred approach. Gary From mathieu.lacage at sophia.inria.fr Tue Mar 17 00:13:08 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 17 Mar 2009 08:13:08 +0100 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> Message-ID: <1237273988.26000.10.camel@diese.inria.fr> On Mon, 2009-03-16 at 22:13 +0000, Gustavo Carneiro wrote: > > > Currently, we are developing a RTP traffic generator for NS3 as our > > > bachelor?s thesis. While programming, we encountered the issue that some > > > classes, e.g. ns3::RandomVariable, are not derived from ns3::Object. > > Thus, > > > they cannot be used with ns3::Ptr, as the required Ref- and Unref-methods > > > > The current design does something like what ns3::Ptr does, just "under > > the covers" and without using Ptr objects. Let me try and explain: > > > I should point out that there is a fundamental difference between Ptr and > the RandomVariable classes. With Ptr, when you copy a pointer variable the > original object is not copied. With a RandomVariable variable, copying the > variable will trigger a under-the-hood copy of the underlying XxxImpl. > Mathieu, correct me if I'm wrong (possible :) It is a bit more subtle. An example will make this clearer: // in this example, the two random variables share the same // distribution parameters but not the same seed so, they // will generate independent streams of random values which // share the same statistical properties RandomVariable a = UniformVariable (...); RandomVariable b = a; a.GetValue (); b.GetValue (); // in this example, the two random variables share the same // distribution parameters and the same seed so they will // generate the same random values all the time RandomVariable a = UniformVariable (...); a.GetValue (); RandomVariable b = a; b.GetValue (); This is not very pretty and intuitive but, given all the constraints we have already, this is the best we could do I think. > But perhaps the difference does not matter in this case. After all, a > RandomVariable object is supposed to generate a series random numbers, and > they are supposed to be independent. So it should not matter whether you > generate two random numbers from a single RandomVariable object or one > number from one RandomVariable A and another one from a RandomVariable B, > where B is a copy of A. I can't claim I know much about this but I think that the two cases you describe here are different from a statistical perspective: two random values coming from the same RandomVariable are independent but two random values coming from different RandomVariable objects are not necessarily independent which is bad. Mathieu From boyko at iitp.ru Tue Mar 17 03:11:56 2009 From: boyko at iitp.ru (Pavel Boyko) Date: Tue, 17 Mar 2009 13:11:56 +0300 Subject: [Ns-developers] 802.11s code review Message-ID: <200903171311.57623.boyko@iitp.ru> Dear Gustavo and Ruben, On Monday 16 March 2009 21:31:45 you wrote: > Yep, I agree too. There should be a clear distinction between what is > really standard compliant (i.e. defined in the standard) and what is (a) > inferred from the standard because it was not clearly defined in the > standard (b) research stuff. Right, this is exactly what keeps us busy now, I am sorry for confusing you. After refactoring we'll have 'devices/mesh' module with a protocol independent framework for level 2 mesh and 'devices/mesh/802.11s' module implementing .11s draft protocols. Our research stuff (and this _is_ the thing we are really interested in :) is supposed to appear then as 'devices/mesh/foo', 'devices/mesh/bar', etc. modules. Is that ok? Regards, Pavel From gjcarneiro at gmail.com Tue Mar 17 03:36:55 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 17 Mar 2009 10:36:55 +0000 Subject: [Ns-developers] 802.11s code review In-Reply-To: <200903171311.57623.boyko@iitp.ru> References: <200903171311.57623.boyko@iitp.ru> Message-ID: 2009/3/17 Pavel Boyko > > Dear Gustavo and Ruben, > > On Monday 16 March 2009 21:31:45 you wrote: > > Yep, I agree too. There should be a clear distinction between what is > > really standard compliant (i.e. defined in the standard) and what is (a) > > inferred from the standard because it was not clearly defined in the > > standard (b) research stuff. > > Right, this is exactly what keeps us busy now, I am sorry for confusing > you. > After refactoring we'll have 'devices/mesh' module with a protocol > independent > framework for level 2 mesh and 'devices/mesh/802.11s' module implementing > .11s > draft protocols. Our research stuff (and this _is_ the thing we are really > interested in :) is supposed to appear then as 'devices/mesh/foo', > 'devices/mesh/bar', etc. modules. Is that ok? That sounds good. Also don't forget to rename the L2Xxx stuff to something more specific. I mean, for instance UMTS is L2 too, and I don't suppose your framework applies to UMTS networks... ;-) And, I forgot to answer one of Mathieu's questions, to share or not to share the LearningBridge functionality. In my humble opinion, the LearningBridge forwarding algorithm is rather trivial to code, and is probably not worth the trouble of refactoring to reuse it in different contexts. In my opinion, some times copy-paste is not evil, sometimes it simplifies things, makes the code easier to follow because you don't have to jump so much around into different classes/functions. Thanks. -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mathieu.lacage at sophia.inria.fr Tue Mar 17 08:45:04 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 17 Mar 2009 16:45:04 +0100 Subject: [Ns-developers] About real-world application integration In-Reply-To: References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> Message-ID: <1237304704.4276.1.camel@diese.inria.fr> On Tue, 2009-03-17 at 01:15 +0900, Hajime Tazaki wrote: > >I see: it's weird that I did not see the ipv6 part of the patch. To make > >sure I don't forget anything, would you mind send me a list of files you > >have modified and files you have added ? > > Followings are modified/added files in my repository. [...] > Currently, there is a lot of nonsense diff in this > modification (e.g. only diff comment paragraph), sorry. I understand that you have merged multiple repositories, so, mercurial gives you a lot of changes unrelated to yours, but, I can't go through all these files to figure out what you have changed. What I really want to know is what changes you have made yourself to your repository, beyond the more or less mechanical merging of other repositories. Mathieu From mathieu.lacage at sophia.inria.fr Tue Mar 17 08:49:22 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 17 Mar 2009 16:49:22 +0100 Subject: [Ns-developers] About real-world application integration In-Reply-To: References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> <1237204159.31135.268.camel@diese.inria.fr> Message-ID: <1237304962.4276.4.camel@diese.inria.fr> On Tue, 2009-03-17 at 01:45 +0900, Hajime Tazaki wrote: > Let me show you gdb stack of this problem. This stack was > reproduced by previous version. > > #12 0xb7b4c630 in ns3::ProcessManager::DeleteProcess (this=0x80add28, process=0x87d5e10) > #13 0xb7b4cab7 in ns3::ProcessManager::GarbageCollectDeadProcessesAndThreads (this=0x80add28) > #14 0xb7b4f0ff in ns3::ProcessManager::Schedule (this=0x80add28) > #15 0xb7b4fa52 in ns3::ProcessManager::ScheduleFromInterrupt (this=0x80add28, thread=0x87d8ab8) > #16 0xb7b77e98 in ns3::UtilsSendSignal (process=0x87d8520, signum=9) > #17 0xb7b4c564 in ns3::ProcessManager::DeleteProcess (this=0x80add28, process=0x87d8520) > #18 0xb7b4fc14 in ns3::ProcessManager::DoDispose (this=0x80add28) > #19 0xb77d28ed in ns3::Object::Dispose (this=0x80839f8) > #20 0xb7936757 in ~NodeListPriv (this=0x80839b8) > #21 0xb77d2187 in ns3::Object::MaybeDelete (this=0x80839b8) > #22 0x0805f102 in ns3::Object::Unref (this=0x80839b8) > #23 0xb7938f0e in ns3::Ptr::operator= (this=0xb7f195a0, o=@0xbfd3a040) > #24 0xb793818c in ns3::NodeListPriv::Delete () > #25 0xb7885592 in Notify (this=0x8083888) > #26 0xb786038a in ns3::EventImpl::Invoke (this=0x8083888) > #27 0xb788d3f7 in ns3::RealtimeSimulatorImpl::Destroy (this=0x8083a38) > > When the destroy event of simulator is happened, > DeleteProcess is called twice for each process. > > and DeleteProcess in GarbageCollectDeadProcessesAndThreads() > remove process entry from m_processes even though it was > called from DoDispose(). > > So after one loop in DoDispose(), contents of m_processes > would be changed. In that case, single process in a node > made no problem. > > > OTOH, when we install multiple processes into single node, as > > ApplicationContainer apps = process.Install (node); > ApplicationContainer apps2 = process2.Install (node); > > #this is a typical case when we use zebra > m_processes becomes to have a 2 entry in vector. > ok. > > But..... > > > I become to think that this modification doesn't solve > fundamentals. Should it avoid call DeleteProcee() twice? > > What do you think? How about moving the call to erase just after the assignment to the local variable 'process' and before the call to DeleteProcess ? Something like this: > { > NS_LOG_FUNCTION (this); > GarbageCollectDeadProcessesAndThreads (); >- for (std::vector::iterator i = m_processes.begin >(); i != m_processes.end (); ++i) >+ for (std::vector::iterator i = m_processes.begin >(); i != m_processes.end ();) > { > struct Process *process = *i; >+ i = m_processes.erase (i); > DeleteProcess (process); > } >- m_processes.clear (); Mathieu From gjcarneiro at gmail.com Tue Mar 17 08:55:13 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 17 Mar 2009 15:55:13 +0000 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <1237273988.26000.10.camel@diese.inria.fr> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> Message-ID: 2009/3/17 Mathieu Lacage > On Mon, 2009-03-16 at 22:13 +0000, Gustavo Carneiro wrote: > > > > > Currently, we are developing a RTP traffic generator for NS3 as our > > > > bachelor?s thesis. While programming, we encountered the issue that > some > > > > classes, e.g. ns3::RandomVariable, are not derived from ns3::Object. > > > Thus, > > > > they cannot be used with ns3::Ptr, as the required Ref- and > Unref-methods > > > > > > The current design does something like what ns3::Ptr does, just "under > > > the covers" and without using Ptr objects. Let me try and explain: > > > > > > I should point out that there is a fundamental difference between Ptr and > > the RandomVariable classes. With Ptr, when you copy a pointer variable > the > > original object is not copied. With a RandomVariable variable, copying > the > > variable will trigger a under-the-hood copy of the underlying XxxImpl. > > Mathieu, correct me if I'm wrong (possible :) > > It is a bit more subtle. An example will make this clearer: > > // in this example, the two random variables share the same > // distribution parameters but not the same seed so, they > // will generate independent streams of random values which > // share the same statistical properties > RandomVariable a = UniformVariable (...); > RandomVariable b = a; > a.GetValue (); > b.GetValue (); > > // in this example, the two random variables share the same > // distribution parameters and the same seed so they will > // generate the same random values all the time > RandomVariable a = UniformVariable (...); > a.GetValue (); > RandomVariable b = a; > b.GetValue (); > > This is not very pretty and intuitive but, given all the constraints we > have already, this is the best we could do I think. I see. So we should avoid calling GetValue () at all costs during initial scenario configuration... > > > > > But perhaps the difference does not matter in this case. After all, a > > RandomVariable object is supposed to generate a series random numbers, > and > > they are supposed to be independent. So it should not matter whether you > > generate two random numbers from a single RandomVariable object or one > > number from one RandomVariable A and another one from a RandomVariable B, > > where B is a copy of A. > > I can't claim I know much about this but I think that the two cases you > describe here are different from a statistical perspective: two random > values coming from the same RandomVariable are independent but two > random values coming from different RandomVariable objects are not > necessarily independent which is bad. Experiment does not confirm what you say, that values coming different RV are no independent: -------------- import ns3 ns3.RandomVariable.UseGlobalSeed(1,2,3,4,5,6) A = ns3.NormalVariable(10, 5) B = ns3.NormalVariable(10, 5) print A.GetValue() #print B.GetValue() print A.GetValue() ----------- $ python test.py 8.60002591724 7.26575189265 Uncommenting the B.GetValue() line: $ python test.py 8.60002591724 12.1591665241 7.26575189265 The values from A are unchanged whether B is used or not, so it seems that A is independent from B. -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mathieu.lacage at sophia.inria.fr Tue Mar 17 11:58:25 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 17 Mar 2009 19:58:25 +0100 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> Message-ID: <1237316305.28134.14.camel@mathieu-laptop> On Tue, 2009-03-17 at 15:55 +0000, Gustavo Carneiro wrote: > // in this example, the two random variables share the same > // distribution parameters but not the same seed so, they > // will generate independent streams of random values which > // share the same statistical properties > RandomVariable a = UniformVariable (...); > RandomVariable b = a; > a.GetValue (); > b.GetValue (); > > // in this example, the two random variables share the same > // distribution parameters and the same seed so they will > // generate the same random values all the time > RandomVariable a = UniformVariable (...); > a.GetValue (); > RandomVariable b = a; > b.GetValue (); > > This is not very pretty and intuitive but, given all the > constraints we > have already, this is the best we could do I think. > > I see. So we should avoid calling GetValue () at all costs during > initial scenario configuration... yes, it would be a good idea. > > But perhaps the difference does not matter in this case. > After all, a > > RandomVariable object is supposed to generate a series > random numbers, and > > they are supposed to be independent. So it should not > matter whether you > > generate two random numbers from a single RandomVariable > object or one > > number from one RandomVariable A and another one from a > RandomVariable B, > > where B is a copy of A. > > > I can't claim I know much about this but I think that the two > cases you > describe here are different from a statistical perspective: > two random > values coming from the same RandomVariable are independent but > two > random values coming from different RandomVariable objects are > not > necessarily independent which is bad. > > Experiment does not confirm what you say, that values coming different > RV are no independent: I meant independent in a statistical sense, that is, they are not statistically correlated. I am sure other more mathematical-savvy developers could explain this better than me or correct me. Mathieu From raj.b at gatech.edu Tue Mar 17 15:22:21 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 17 Mar 2009 18:22:21 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Tuesday, March 17, 2008 Message-ID: <12d69e490903171522o2fdf20b0y243895cce1dacceb@mail.gmail.com> Dear All, Here is your daily updates regarding the upcoming release. ?The bulk of the information will be kept up-to-date here: http://www.nsnam.org/wiki/index.php/Ns-3.4 I will keep emailing out this link along with status changes. News: ===== ns-3.4-RC1 is planned for Thursday, March 19. It will be feature complete and will have no known "broken behavior" bugs. We are on course to making the release schedule. Bugs: ===== There are now 4 P1 bugs in the tracker, and 6 lower priority P2 bugs: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Bug_List Bug 424 is awaiting some minimal feedback (introduces a new API). 426 and 427 will be closed out tomorrow. Bug 505 status is unknown; Mathieu, please update the tracker at your convenience. Progress / Closed Bugs: ======================= Since yesterday, bugs regarding tracing consistency (443) and the wifi SupportsSendFrom issue (510) have been closed; one bug regarding documentation (504) has been bumped down in priority; one bug regarding tracing (505) is no longer blocked on bug 443; and three TCP issues regarding when to set the ACK flag have had their patches pushed (198, 425, 499); New Bugs: ========= None. Next Steps: =========== The first release candidate will be posted on Thursday, March 19. ?A full schedule of upcoming milestones can be found here: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule The final four blockers need to get fixed before this time. There is also some documentation work / cleanup to be done before the actual release day, but this is what the code freeze period is for. I suspect we will have to do a careful update of CHANGES.html, and make sure the tutorial, doxygen, etc. aren't stale before April 1st. I'll propose how to move forward on this during the code freeze. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Tue Mar 17 15:32:04 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 17 Mar 2009 18:32:04 -0400 Subject: [Ns-developers] New ns3 API: socket close callback Message-ID: <12d69e490903171532w62b237dfwc09dc9a47f8700@mail.gmail.com> Here is a last minute API addition for ns-3.4, in order to close out a P1 bug: http://code.nsnam.org/raj/ns-3-tcp/rev/83ccf9c5afa8 Are there any thoughts, questions, comments, or concerns? If so, please reply here or on the bug entry for this issue: http://www.nsnam.org/bugzilla/show_bug.cgi?id=424 It is new API, so its only fair that everyone gets a crack at picking the names of the new methods. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From tazaki at sfc.wide.ad.jp Tue Mar 17 19:34:07 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Wed, 18 Mar 2009 11:34:07 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1237304962.4276.4.camel@diese.inria.fr> References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> <1237204159.31135.268.camel@diese.inria.fr> <1237304962.4276.4.camel@diese.inria.fr> Message-ID: At Tue, 17 Mar 2009 16:49:22 +0100, Mathieu Lacage wrote: >> I become to think that this modification doesn't solve >> fundamentals. Should it avoid call DeleteProcee() twice? >> >> What do you think? > >How about moving the call to erase just after the assignment to the >local variable 'process' and before the call to DeleteProcess ? >Something like this: > >> { >> NS_LOG_FUNCTION (this); >> GarbageCollectDeadProcessesAndThreads (); >>- for (std::vector::iterator i = m_processes.begin >>(); i != m_processes.end (); ++i) >>+ for (std::vector::iterator i = m_processes.begin >>(); i != m_processes.end ();) >> { >> struct Process *process = *i; >>+ i = m_processes.erase (i); >> DeleteProcess (process); >> } >>- m_processes.clear (); Sounds good. I think that it can modify in GarbageCollectDeadProcessesAndThreads as well? struct Process *process = *i; if (process->threads.empty ()) { + i = m_processes.erase (i); DeleteProcess (process); - i = m_processes.erase (i); } hajime From tazaki at sfc.wide.ad.jp Tue Mar 17 20:06:09 2009 From: tazaki at sfc.wide.ad.jp (Hajime Tazaki) Date: Wed, 18 Mar 2009 12:06:09 +0900 Subject: [Ns-developers] About real-world application integration In-Reply-To: <1237304704.4276.1.camel@diese.inria.fr> References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> <1237304704.4276.1.camel@diese.inria.fr> Message-ID: At Tue, 17 Mar 2009 16:45:04 +0100, Mathieu Lacage wrote: >> Currently, there is a lot of nonsense diff in this >> modification (e.g. only diff comment paragraph), sorry. > >I understand that you have merged multiple repositories, so, mercurial >gives you a lot of changes unrelated to yours, but, I can't go through >all these files to figure out what you have changed. What I really want >to know is what changes you have made yourself to your repository, >beyond the more or less mechanical merging of other repositories. I see, this is a list that I made by myself. * src/devices/wifi/yans-wifi-channel.cc * src/node/node.cc * src/node/socket.cc * src/node/socket.h * src/node/wscript * src/process-manager/alloc.cc * src/process-manager/cmsg.cc * src/process-manager/cmsg.h * src/process-manager/libc-global-variables.c * src/process-manager/libc-simu.c * src/process-manager/libc.c * src/process-manager/libc.h * src/process-manager/process-manager.cc * src/process-manager/process.h * src/process-manager/simu-fcntl.h * src/process-manager/simu-fd.cc * src/process-manager/simu-stdio.cc * src/process-manager/simu-stdio.h * src/process-manager/simu-unistd.h * src/process-manager/simu.cc * src/process-manager/unix-datagram-socket-fd.cc * src/process-manager/unix-socket-fd.cc * src/process-manager/unix-socket-fd.h Maybe I have to summarize my self modification with sets of patches. so, Stay tuned. regards, hajime From tomh at tomh.org Tue Mar 17 23:34:48 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 17 Mar 2009 23:34:48 -0700 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <1237273988.26000.10.camel@diese.inria.fr> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> Message-ID: <49C09608.1020808@tomh.org> >> >> I should point out that there is a fundamental difference between Ptr and >> the RandomVariable classes. With Ptr, when you copy a pointer variable the >> original object is not copied. With a RandomVariable variable, copying the >> variable will trigger a under-the-hood copy of the underlying XxxImpl. >> Mathieu, correct me if I'm wrong (possible :) > > It is a bit more subtle. An example will make this clearer: > > // in this example, the two random variables share the same > // distribution parameters but not the same seed so, they > // will generate independent streams of random values which > // share the same statistical properties > RandomVariable a = UniformVariable (...); > RandomVariable b = a; > a.GetValue (); > b.GetValue (); I am not seeing the above subtle behavior; a and b appear to be sharing the same substream, just as in the below. > > // in this example, the two random variables share the same > // distribution parameters and the same seed so they will > // generate the same random values all the time > RandomVariable a = UniformVariable (...); > a.GetValue (); > RandomVariable b = a; > b.GetValue (); > From mathieu.lacage at sophia.inria.fr Wed Mar 18 00:09:41 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 18 Mar 2009 08:09:41 +0100 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <49C09608.1020808@tomh.org> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> <49C09608.1020808@tomh.org> Message-ID: <1237360181.20399.3.camel@diese.inria.fr> On Tue, 2009-03-17 at 23:34 -0700, Tom Henderson wrote: > >> > >> I should point out that there is a fundamental difference between Ptr and > >> the RandomVariable classes. With Ptr, when you copy a pointer variable the > >> original object is not copied. With a RandomVariable variable, copying the > >> variable will trigger a under-the-hood copy of the underlying XxxImpl. > >> Mathieu, correct me if I'm wrong (possible :) > > > > It is a bit more subtle. An example will make this clearer: > > > > // in this example, the two random variables share the same > > // distribution parameters but not the same seed so, they > > // will generate independent streams of random values which > > // share the same statistical properties > > RandomVariable a = UniformVariable (...); > > RandomVariable b = a; > > a.GetValue (); > > b.GetValue (); > > I am not seeing the above subtle behavior; a and b appear to be sharing > the same substream, just as in the below. I assume that you ran a python test program: python variable assignments do not perform a deep copy: they merely copy a reference so, if you wrote a naive python test program which matches this example, you won't see what I explained. The attached test program will show the behavior I allude to. Alternatively, the correct python idiom to trigger a deep copy is 'copy': http://docs.python.org/library/copy.html > > > > > // in this example, the two random variables share the same > > // distribution parameters and the same seed so they will > > // generate the same random values all the time > > RandomVariable a = UniformVariable (...); > > a.GetValue (); > > RandomVariable b = a; > > b.GetValue (); > > -------------- next part -------------- A non-text attachment was scrubbed... Name: rng.cc Type: text/x-c++src Size: 264 bytes Desc: not available Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090318/4513f0c3/rng.bin From mathieu.lacage at sophia.inria.fr Wed Mar 18 01:18:04 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 18 Mar 2009 09:18:04 +0100 Subject: [Ns-developers] About real-world application integration In-Reply-To: References: <1236790499.658.31.camel@mathieu-laptop> <1237193331.31135.36.camel@diese.inria.fr> <1237198269.31135.121.camel@diese.inria.fr> <1237204159.31135.268.camel@diese.inria.fr> <1237304962.4276.4.camel@diese.inria.fr> Message-ID: <1237364284.20399.5.camel@diese.inria.fr> On Wed, 2009-03-18 at 11:34 +0900, Hajime Tazaki wrote: > >How about moving the call to erase just after the assignment to the > >local variable 'process' and before the call to DeleteProcess ? > >Something like this: > > > >> { > >> NS_LOG_FUNCTION (this); > >> GarbageCollectDeadProcessesAndThreads (); > >>- for (std::vector::iterator i = m_processes.begin > >>(); i != m_processes.end (); ++i) > >>+ for (std::vector::iterator i = m_processes.begin > >>(); i != m_processes.end ();) > >> { > >> struct Process *process = *i; > >>+ i = m_processes.erase (i); > >> DeleteProcess (process); > >> } > >>- m_processes.clear (); > > Sounds good. > I think that it can modify in > GarbageCollectDeadProcessesAndThreads as well? yes, probably. > > struct Process *process = *i; > if (process->threads.empty ()) > { > + i = m_processes.erase (i); > DeleteProcess (process); > - i = m_processes.erase (i); > } From gjcarneiro at gmail.com Wed Mar 18 04:53:32 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Wed, 18 Mar 2009 11:53:32 +0000 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <1237360181.20399.3.camel@diese.inria.fr> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> <49C09608.1020808@tomh.org> <1237360181.20399.3.camel@diese.inria.fr> Message-ID: 2009/3/18 Mathieu Lacage > On Tue, 2009-03-17 at 23:34 -0700, Tom Henderson wrote: > > >> > > >> I should point out that there is a fundamental difference between Ptr > and > > >> the RandomVariable classes. With Ptr, when you copy a pointer > variable the > > >> original object is not copied. With a RandomVariable variable, > copying the > > >> variable will trigger a under-the-hood copy of the underlying XxxImpl. > > >> Mathieu, correct me if I'm wrong (possible :) > > > > > > It is a bit more subtle. An example will make this clearer: > > > > > > // in this example, the two random variables share the same > > > // distribution parameters but not the same seed so, they > > > // will generate independent streams of random values which > > > // share the same statistical properties > > > RandomVariable a = UniformVariable (...); > > > RandomVariable b = a; > > > a.GetValue (); > > > b.GetValue (); > > > > I am not seeing the above subtle behavior; a and b appear to be sharing > > the same substream, just as in the below. > > I assume that you ran a python test program: python variable assignments > do not perform a deep copy: they merely copy a reference so, if you > wrote a naive python test program which matches this example, you won't > see what I explained. The attached test program will show the behavior I > allude to. > > Alternatively, the correct python idiom to trigger a deep copy is > 'copy': http://docs.python.org/library/copy.html Correct. With pybindgen bindings you can do a value copy in one of three ways (for C++ classes that have a copy constructor): 1. b = RandomVariable(a) 2. b = a.__copy__() 3. b = copy.copy(a) # copy.deepcopy is equivalent in this case -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From tomh at tomh.org Wed Mar 18 06:53:35 2009 From: tomh at tomh.org (Tom Henderson) Date: Wed, 18 Mar 2009 06:53:35 -0700 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <1237360181.20399.3.camel@diese.inria.fr> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> <49C09608.1020808@tomh.org> <1237360181.20399.3.camel@diese.inria.fr> Message-ID: <49C0FCDF.5090009@tomh.org> Mathieu Lacage wrote: > On Tue, 2009-03-17 at 23:34 -0700, Tom Henderson wrote: >>>> I should point out that there is a fundamental difference between Ptr and >>>> the RandomVariable classes. With Ptr, when you copy a pointer variable the >>>> original object is not copied. With a RandomVariable variable, copying the >>>> variable will trigger a under-the-hood copy of the underlying XxxImpl. >>>> Mathieu, correct me if I'm wrong (possible :) >>> It is a bit more subtle. An example will make this clearer: >>> >>> // in this example, the two random variables share the same >>> // distribution parameters but not the same seed so, they >>> // will generate independent streams of random values which >>> // share the same statistical properties >>> RandomVariable a = UniformVariable (...); >>> RandomVariable b = a; >>> a.GetValue (); >>> b.GetValue (); >> I am not seeing the above subtle behavior; a and b appear to be sharing >> the same substream, just as in the below. > > I assume that you ran a python test program: python variable assignments > do not perform a deep copy: they merely copy a reference so, if you > wrote a naive python test program which matches this example, you won't > see what I explained. yes, I used a python test program > The attached test program will show the behavior I > allude to. > > Alternatively, the correct python idiom to trigger a deep copy is > 'copy': http://docs.python.org/library/copy.html > >>> // in this example, the two random variables share the same >>> // distribution parameters and the same seed so they will >>> // generate the same random values all the time >>> RandomVariable a = UniformVariable (...); >>> a.GetValue (); >>> RandomVariable b = a; >>> b.GetValue (); >>> What options are available to get consistent behavior in this case (including disallowing assignment)? It seems ambiguous what is desired for b in the above; copy a's distribution, or make b an alias for a. Tom From mathieu.lacage at sophia.inria.fr Wed Mar 18 07:09:41 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 18 Mar 2009 15:09:41 +0100 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <49C0FCDF.5090009@tomh.org> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> <49C09608.1020808@tomh.org> <1237360181.20399.3.camel@diese.inria.fr> <49C0FCDF.5090009@tomh.org> Message-ID: <1237385381.5962.2.camel@mathieu-laptop> On Wed, 2009-03-18 at 06:53 -0700, Tom Henderson wrote: > What options are available to get consistent behavior in this case > (including disallowing assignment)? It seems ambiguous what is desired > for b in the above; copy a's distribution, or make b an alias for a. Yes, it's ambiguous if you are not familiar with python but these are the python semantics and there is no real way around it. If you use python, you have to know that copies are shallow by default. Mathieu From tomh at tomh.org Wed Mar 18 07:29:56 2009 From: tomh at tomh.org (Tom Henderson) Date: Wed, 18 Mar 2009 07:29:56 -0700 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <1237385381.5962.2.camel@mathieu-laptop> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> <49C09608.1020808@tomh.org> <1237360181.20399.3.camel@diese.inria.fr> <49C0FCDF.5090009@tomh.org> <1237385381.5962.2.camel@mathieu-laptop> Message-ID: <49C10564.2030909@tomh.org> Mathieu Lacage wrote: > On Wed, 2009-03-18 at 06:53 -0700, Tom Henderson wrote: > >> What options are available to get consistent behavior in this case >> (including disallowing assignment)? It seems ambiguous what is desired >> for b in the above; copy a's distribution, or make b an alias for a. > > Yes, it's ambiguous if you are not familiar with python but these are > the python semantics and there is no real way around it. If you use > python, you have to know that copies are shallow by default. > I meant more the ambiguity in C++ of whether RandomVariable b = a; performs a shallow or deep copy, depending on whether a.GetValue() has previously been called. From mathieu.lacage at sophia.inria.fr Wed Mar 18 07:57:23 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 18 Mar 2009 15:57:23 +0100 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <49C10564.2030909@tomh.org> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> <49C09608.1020808@tomh.org> <1237360181.20399.3.camel@diese.inria.fr> <49C0FCDF.5090009@tomh.org> <1237385381.5962.2.camel@mathieu-laptop> <49C10564.2030909@tomh.org> Message-ID: <1237388243.5962.8.camel@mathieu-laptop> On Wed, 2009-03-18 at 07:29 -0700, Tom Henderson wrote: > Mathieu Lacage wrote: > > On Wed, 2009-03-18 at 06:53 -0700, Tom Henderson wrote: > > > >> What options are available to get consistent behavior in this case > >> (including disallowing assignment)? It seems ambiguous what is desired > >> for b in the above; copy a's distribution, or make b an alias for a. > > > > Yes, it's ambiguous if you are not familiar with python but these are > > the python semantics and there is no real way around it. If you use > > python, you have to know that copies are shallow by default. > > > > I meant more the ambiguity in C++ of whether > RandomVariable b = a; > performs a shallow or deep copy, depending on whether a.GetValue() has > previously been called. If you want to avoid the ambiguity and, thus, remove the code raj added to create RngStream objects only when the first call to GetValue is made, you would make all RandomVariable objects created before CommandLine::Parse is called use a different seed from the one specified by the user with --RngSeed and --RngRun which, really, I can't see as being very desirable. Mathieu From tjkopena at cs.drexel.edu Wed Mar 18 15:17:38 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 18 Mar 2009 18:17:38 -0400 Subject: [Ns-developers] Google Summer of Code 2009 Message-ID: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> Hi folks, Just a heads up that ns-3 has been accepted for the 2009 Google Summer of Code program. We do not yet know exactly how many slots we have received, but this is great news. For all of the potential students out there, a brief project description is up at [1], and an updated ideas list at [2]. We will be making some updates in the next week or so based on a few new mentors coming on board, but applications are due April 3rd so it is worth starting to think about your proposal now. Special thanks for this goes to Tom, Mathieu, and everyone that has offered to help mentor this year! [1] http://socghop.appspot.com/org_app/show/google/gsoc2009/ns3 [2] http://www.nsnam.org/wiki/index.php/GSOC2009Projects -- - joe kopena right here and now From raj.b at gatech.edu Wed Mar 18 15:25:00 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Wed, 18 Mar 2009 18:25:00 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Wednesday, March 18, 2009 Message-ID: <12d69e490903181525g6f0f35a2g78a4dd1890789030@mail.gmail.com> Dear All, I've just realized that the last two emails have had the wrong year in the subject line,and for that I apologize. It is indeed 2009, not 2008. Here is your daily update regarding the upcoming release. The bulk of the information will be kept up-to-date here: http://www.nsnam.org/wiki/index.php/Ns-3.4 I will keep emailing out this link along with status changes. News: ===== ns-3.4-RC1 is planned for Thursday, March 19. It will be feature complete and will have no known "broken behavior" bugs. We are on course to making the release schedule. Bugs: ===== There are now 4 P1 bugs in the tracker, and 6 lower priority P2 bugs: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Bug_List The TCP bugs are being worked on; I hope to have fixes checked in by tomorrow morning. Progress / Closed Bugs: ======================= None. New Bugs: ========= None. Next Steps: =========== The first release candidate will be posted on Thursday, March 19. A full schedule of upcoming milestones can be found here: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule The final four blockers need to get fixed or reassigned in priority before this time. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Wed Mar 18 15:25:54 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Wed, 18 Mar 2009 18:25:54 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Wednesday, March 18, 2009 In-Reply-To: <12d69e490903181525g6f0f35a2g78a4dd1890789030@mail.gmail.com> References: <12d69e490903181525g6f0f35a2g78a4dd1890789030@mail.gmail.com> Message-ID: <12d69e490903181525t6ab9c82i8d4b6837c3e1d64c@mail.gmail.com> In the Bugs section, also note that Craig has committed to fixing bug 505 before tomorrow. On Wed, Mar 18, 2009 at 6:25 PM, Raj Bhattacharjea wrote: > Dear All, > > > I've just realized that the last two emails have had the wrong year in > the subject line,and for that I apologize. ?It is indeed 2009, not 2008. > > Here is your daily update regarding the upcoming release. ?The bulk > of the information will be kept up-to-date here: > > http://www.nsnam.org/wiki/index.php/Ns-3.4 > > I will keep emailing out this link along with status changes. > > > News: > ===== > > ns-3.4-RC1 is planned for Thursday, March 19. ?It will be feature > complete and will have no known "broken behavior" bugs. ?We are on > course to making the release schedule. > > Bugs: > ===== > > There are now 4 P1 bugs in the tracker, and 6 lower priority P2 bugs: > http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Bug_List > > The TCP bugs are being worked on; I hope to have fixes checked in by > tomorrow morning. > > Progress / Closed Bugs: > ======================= > > None. > > New Bugs: > ========= > > None. > > Next Steps: > =========== > > The first release candidate will be posted on Thursday, March 19. ?A > full schedule of upcoming milestones can be found here: > http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule > > The final four blockers need to get fixed or reassigned in priority > before this time. > > -- > Raj Bhattacharjea > Georgia Institute of Technology > School of Electrical and Computer Engineering > Ph.D. Candidate > Systems Analyst > 404.894.2955 > -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From tomh at tomh.org Wed Mar 18 21:29:54 2009 From: tomh at tomh.org (Tom Henderson) Date: Wed, 18 Mar 2009 21:29:54 -0700 Subject: [Ns-developers] ns-3.4 Daily Status for Wednesday, March 18, 2009 In-Reply-To: <12d69e490903181525g6f0f35a2g78a4dd1890789030@mail.gmail.com> References: <12d69e490903181525g6f0f35a2g78a4dd1890789030@mail.gmail.com> Message-ID: <49C1CA42.3030101@tomh.org> Raj, There were two contrib/ related modules that were proposed for ns-3.4: - support for George's animator - xml-based config store (and support for default values) Do you have merges for those on your schedule? - Tom From tomh at tomh.org Wed Mar 18 21:55:34 2009 From: tomh at tomh.org (Tom Henderson) Date: Wed, 18 Mar 2009 21:55:34 -0700 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> Message-ID: <49C1D046.3060001@tomh.org> Gustavo Carneiro wrote: > 2009/3/17 Mathieu Lacage > >> On Mon, 2009-03-16 at 22:13 +0000, Gustavo Carneiro wrote: >> >>>>> Currently, we are developing a RTP traffic generator for NS3 as our >>>>> bachelor?s thesis. While programming, we encountered the issue that >> some >>>>> classes, e.g. ns3::RandomVariable, are not derived from ns3::Object. >>>> Thus, >>>>> they cannot be used with ns3::Ptr, as the required Ref- and >> Unref-methods >>>> The current design does something like what ns3::Ptr does, just "under >>>> the covers" and without using Ptr objects. Let me try and explain: >>> >>> I should point out that there is a fundamental difference between Ptr and >>> the RandomVariable classes. With Ptr, when you copy a pointer variable >> the >>> original object is not copied. With a RandomVariable variable, copying >> the >>> variable will trigger a under-the-hood copy of the underlying XxxImpl. >>> Mathieu, correct me if I'm wrong (possible :) >> It is a bit more subtle. An example will make this clearer: >> >> // in this example, the two random variables share the same >> // distribution parameters but not the same seed so, they >> // will generate independent streams of random values which >> // share the same statistical properties >> RandomVariable a = UniformVariable (...); >> RandomVariable b = a; >> a.GetValue (); >> b.GetValue (); >> >> // in this example, the two random variables share the same >> // distribution parameters and the same seed so they will >> // generate the same random values all the time >> RandomVariable a = UniformVariable (...); >> a.GetValue (); >> RandomVariable b = a; >> b.GetValue (); >> >> This is not very pretty and intuitive but, given all the constraints we >> have already, this is the best we could do I think. > > > I see. So we should avoid calling GetValue () at all costs during initial > scenario configuration... Should we instead deprecate declaration and assignment statements such as: RandomVariable b = a; because the behavior depends on the state of a (which may not be known)? That seems a bit safer to me since I doubt people will reliably keep track of whether GetValue() has been called or not. I don't see how we can disallow the copy constructor and assignment since these objects are passed around by value. Tom From mathieu.lacage at sophia.inria.fr Thu Mar 19 01:42:28 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 19 Mar 2009 09:42:28 +0100 Subject: [Ns-developers] ns3::RandomVariable In-Reply-To: <49C1D046.3060001@tomh.org> References: <6955346121364463167@unknownmsgid> <12d69e490903161331l699e3fb4x4b81c9379cba117e@mail.gmail.com> <1237273988.26000.10.camel@diese.inria.fr> <49C1D046.3060001@tomh.org> Message-ID: <1237452148.16761.1.camel@diese.inria.fr> On Wed, 2009-03-18 at 21:55 -0700, Tom Henderson wrote: > Gustavo Carneiro wrote: > > 2009/3/17 Mathieu Lacage > > > >> On Mon, 2009-03-16 at 22:13 +0000, Gustavo Carneiro wrote: > >> > >>>>> Currently, we are developing a RTP traffic generator for NS3 as our > >>>>> bachelor?s thesis. While programming, we encountered the issue that > >> some > >>>>> classes, e.g. ns3::RandomVariable, are not derived from ns3::Object. > >>>> Thus, > >>>>> they cannot be used with ns3::Ptr, as the required Ref- and > >> Unref-methods > >>>> The current design does something like what ns3::Ptr does, just "under > >>>> the covers" and without using Ptr objects. Let me try and explain: > >>> > >>> I should point out that there is a fundamental difference between Ptr and > >>> the RandomVariable classes. With Ptr, when you copy a pointer variable > >> the > >>> original object is not copied. With a RandomVariable variable, copying > >> the > >>> variable will trigger a under-the-hood copy of the underlying XxxImpl. > >>> Mathieu, correct me if I'm wrong (possible :) > >> It is a bit more subtle. An example will make this clearer: > >> > >> // in this example, the two random variables share the same > >> // distribution parameters but not the same seed so, they > >> // will generate independent streams of random values which > >> // share the same statistical properties > >> RandomVariable a = UniformVariable (...); > >> RandomVariable b = a; > >> a.GetValue (); > >> b.GetValue (); > >> > >> // in this example, the two random variables share the same > >> // distribution parameters and the same seed so they will > >> // generate the same random values all the time > >> RandomVariable a = UniformVariable (...); > >> a.GetValue (); > >> RandomVariable b = a; > >> b.GetValue (); > >> > >> This is not very pretty and intuitive but, given all the constraints we > >> have already, this is the best we could do I think. > > > > > > I see. So we should avoid calling GetValue () at all costs during initial > > scenario configuration... > > Should we instead deprecate declaration and assignment statements such as: > RandomVariable b = a; > because the behavior depends on the state of a (which may not be known)? > That seems a bit safer to me since I doubt people will reliably keep > track of whether GetValue() has been called or not. I don't think we can deprecate this construct. What we could potentially do is detect calls to GetValue before the user is given an opportunity to set the seed in the seed manager. i.e., the seed manager could try to keep track of some extra state to detect this. > I don't see how we can disallow the copy constructor and assignment > since these objects are passed around by value. exactly. Mathieu From tjkopena at cs.drexel.edu Thu Mar 19 07:22:46 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Thu, 19 Mar 2009 10:22:46 -0400 Subject: [Ns-developers] [Idea] How about implementing a P2P protocol such as kademlia? Re: Google Summer of Code 2009 In-Reply-To: References: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> Message-ID: <13786f330903190722i7ff66a33te415d22bbbc213b4@mail.gmail.com> 2009/3/19 swark2006 at gmail.com : > ????I?was wondering if I could have a change to implementing a P2P protocol > such as Kademlia,?Chord, Pastry,etc?in NS-3. > ????As I am doing research in P2P?streaming field. As we know,?P2P protocols > such as Kademlia, are widely used in P2P applications such as Bittorrent, > emule,etc.?Our prototype system is also using Kademlia,?I am very > interesting in implementing Kademlia in NS-3 for further simulation for P2P > applications. Hi, Anyone is free to propose any relevant idea for this year's GSoC, and we will certainly consider all quality proposals. We will give some priority to the topics in which our mentors are most interested (mostly revolving around router internals this year), but applicants are free to propose any topic. Thx -- - joe kopena right here and now From tjkopena at cs.drexel.edu Thu Mar 19 08:18:38 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Thu, 19 Mar 2009 11:18:38 -0400 Subject: [Ns-developers] [Idea] How about implementing a P2P protocol such as kademlia? Re: Google Summer of Code 2009 In-Reply-To: References: <13786f330903190722i7ff66a33te415d22bbbc213b4@mail.gmail.com> Message-ID: <13786f330903190818u14786152h99908c8629d3926c@mail.gmail.com> 2009/3/19 swark2006 at gmail.com : > ? ?Does that mean this idea is not so interested by mentors? ?How can I know whether a new proposed idea attracts mentors' attention? How can I know the detail aspects our mentors intrest in? To some extent, yes. Our mentors for this year have several areas in which they are most interested, largely based on projects that compliment their existing research. We have some room to support outstanding applications in other areas, but will be prioritizing those topics our mentors are most interested in. To help identify those areas, we've just edited the project ideas page [1] to make clear what has been identified as a priority for this year's projects. We encourage everyone to take a look and start bringing some discussion on those or any topic to the mailing list. Such discussion may also raise interest in new areas among our mentor pool, so it is well worth doing so even for new topics. Thx! [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects -- - joe kopena right here and now From tjkopena at cs.drexel.edu Thu Mar 19 08:32:10 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Thu, 19 Mar 2009 11:32:10 -0400 Subject: [Ns-developers] Google Summer of Code 2009 In-Reply-To: <3cd643f90903190817i44f2a8e8x104f9f3f6c5e15fe@mail.gmail.com> References: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> <3cd643f90903190817i44f2a8e8x104f9f3f6c5e15fe@mail.gmail.com> Message-ID: <13786f330903190832n621f9aafrc6dc936e6c3aff80@mail.gmail.com> On Thu, Mar 19, 2009 at 11:17 AM, Juliana Freitag Borin wrote: > ?? any plans to include a project related to the WiMAX implementation? Hi Juliana, If you (or anyone) is interested in overseeing such a project, we could definitely highlight that project as a priority as well. Our current group of mentors is very routing oriented, but there's clearly interest in WiMAX implementation so it would be great to include. If you are interested I would be happy to talk off-list about what's involved in mentoring the projects. It's a non-trivial commitment but not overbearing, particularly if the project is well aligned with your existing interests. Thx! -- - joe kopena right here and now From mathieu.lacage at sophia.inria.fr Thu Mar 19 08:42:07 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 19 Mar 2009 16:42:07 +0100 Subject: [Ns-developers] [Idea] How about implementing a P2P protocol such as kademlia? Re: Google Summer of Code 2009 In-Reply-To: <13786f330903190722i7ff66a33te415d22bbbc213b4@mail.gmail.com> References: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> <13786f330903190722i7ff66a33te415d22bbbc213b4@mail.gmail.com> Message-ID: <1237477327.17653.14.camel@diese.inria.fr> On Thu, 2009-03-19 at 10:22 -0400, Joseph Kopena wrote: > Anyone is free to propose any relevant idea for this year's GSoC, and > we will certainly consider all quality proposals. We will give some > priority to the topics in which our mentors are most interested > (mostly revolving around router internals this year), but applicants > are free to propose any topic. And, of course, if a student proposes a new topic and finds a mentor willing to mentor him (inside or outside of the current list of mentors), that will increase his chances of seeing his application accepted. Mathieu From marcello.caleffi at unina.it Thu Mar 19 09:08:30 2009 From: marcello.caleffi at unina.it (Marcello Caleffi) Date: Thu, 19 Mar 2009 17:08:30 +0100 Subject: [Ns-developers] [Idea] How about implementing a P2P protocol such as kademlia? Re: Google Summer of Code 2009 In-Reply-To: <13786f330903190818u14786152h99908c8629d3926c@mail.gmail.com> References: <13786f330903190722i7ff66a33te415d22bbbc213b4@mail.gmail.com> <13786f330903190818u14786152h99908c8629d3926c@mail.gmail.com> Message-ID: <71A33FB4-0072-41D0-8223-1ADDB039F691@unina.it> Hello everyone, another question: how can I propose myself as mentor for a porting of a ns2 DHT-based routing protocol which implements P2P functionalities as well? Regards, Marcello Il giorno 19/mar/09, alle ore 16:18, Joseph Kopena ha scritto: > 2009/3/19 swark2006 at gmail.com : >> Does that mean this idea is not so interested by mentors? How >> can I know whether a new proposed idea attracts mentors' >> attention? How can I know the detail aspects our mentors intrest in? > > To some extent, yes. Our mentors for this year have several areas in > which they are most interested, largely based on projects that > compliment their existing research. We have some room to support > outstanding applications in other areas, but will be prioritizing > those topics our mentors are most interested in. > > To help identify those areas, we've just edited the project ideas page > [1] to make clear what has been identified as a priority for this > year's projects. We encourage everyone to take a look and start > bringing some discussion on those or any topic to the mailing list. > Such discussion may also raise interest in new areas among our mentor > pool, so it is well worth doing so even for new topics. > > Thx! > > [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects > > -- > - joe kopena > right here and now > From tjkopena at cs.drexel.edu Thu Mar 19 09:15:04 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Thu, 19 Mar 2009 12:15:04 -0400 Subject: [Ns-developers] [Idea] How about implementing a P2P protocol such as kademlia? Re: Google Summer of Code 2009 In-Reply-To: <71A33FB4-0072-41D0-8223-1ADDB039F691@unina.it> References: <13786f330903190722i7ff66a33te415d22bbbc213b4@mail.gmail.com> <13786f330903190818u14786152h99908c8629d3926c@mail.gmail.com> <71A33FB4-0072-41D0-8223-1ADDB039F691@unina.it> Message-ID: <13786f330903190915u57a0ca49he2b85bfa05a7da75@mail.gmail.com> On Thu, Mar 19, 2009 at 12:08 PM, Marcello Caleffi wrote: > another question: how can I propose myself as mentor for a porting of a ns2 > DHT-based routing protocol which implements P2P functionalities as well? Hi Marcello, You pretty much just did. If you send me a short blurb in the same vein as the others on the ideas page [1], I will add it to the list of highlighted topics. I'll also send you some mail off list later today about mentoring & some simple sign up stuff. Thx! [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects -- - joe kopena right here and now From raj.b at gatech.edu Thu Mar 19 10:10:44 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Thu, 19 Mar 2009 13:10:44 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Wednesday, March 18, 2009 In-Reply-To: <49C1CA42.3030101@tomh.org> References: <12d69e490903181525g6f0f35a2g78a4dd1890789030@mail.gmail.com> <49C1CA42.3030101@tomh.org> Message-ID: <12d69e490903191010i20f4d4c9i9f1bf69372d6ae81@mail.gmail.com> On Thu, Mar 19, 2009 at 12:29 AM, Tom Henderson wrote: > Raj, > There were two contrib/ related modules that were proposed for ns-3.4: > - support for George's animator > - xml-based config store (and support for default values) > > Do you have merges for those on your schedule? > I didn't, but will merge those in tomorrow, post RC1. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From swark2006 at gmail.com Thu Mar 19 07:07:25 2009 From: swark2006 at gmail.com (swark2006@gmail.com) Date: Thu, 19 Mar 2009 22:07:25 +0800 Subject: [Ns-developers] [Idea] How about implementing a P2P protocol such as kademlia? Re: Google Summer of Code 2009 References: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> Message-ID: Hi, I was wondering if I could have a change to implementing a P2P protocol such as Kademlia, Chord, Pastry,etc in NS-3. As I am doing research in P2P streaming field. As we know, P2P protocols such as Kademlia, are widely used in P2P applications such as Bittorrent, emule,etc. Our prototype system is also using Kademlia, I am very interesting in implementing Kademlia in NS-3 for further simulation for P2P applications. Any one who has a better idea please feel free to discuss it. Many thanks. Catalog: Applications and Systems P2P Protocols. Best Regards, swark swark2006 at gmail.com 2009-03-19 MSN: wark.su at msn.com ======= 2009-03-19, 06:17:38 2009-03-19, 06:17:38 ÄãÔÚÀ´ÐÅÖÐдµÀ£º======= >Hi folks, > >Just a heads up that ns-3 has been accepted for the 2009 Google Summer >of Code program. We do not yet know exactly how many slots we have >received, but this is great news. For all of the potential students >out there, a brief project description is up at [1], and an updated >ideas list at [2]. We will be making some updates in the next week or >so based on a few new mentors coming on board, but applications are >due April 3rd so it is worth starting to think about your proposal >now. > >Special thanks for this goes to Tom, Mathieu, and everyone that has >offered to help mentor this year! > >[1] http://socghop.appspot.com/org_app/show/google/gsoc2009/ns3 >[2] http://www.nsnam.org/wiki/index.php/GSOC2009Projects > >-- >- joe kopena >right here and now = = = = = = = = = = = = = = = = = = = = From swark2006 at gmail.com Thu Mar 19 08:10:18 2009 From: swark2006 at gmail.com (swark2006@gmail.com) Date: Thu, 19 Mar 2009 23:10:18 +0800 Subject: [Ns-developers] [Idea] How about implementing a P2P protocol such as kademlia? Re: Google Summer of Code 2009 References: <13786f330903190722i7ff66a33te415d22bbbc213b4@mail.gmail.com> Message-ID: Hi, Does that mean this idea is not so interested by mentors? How can I know whether a new proposed idea attracts mentors' attention? How can I know the detail aspects our mentors intrest in? Thank you very much. Best Regards, swark swark2006 at gmail.com 2009-03-19 ======= 2009-03-19, 22:22:46 2009-03-19, 22:22:46 ======= >2009/3/19 swark2006 at gmail.com : >>     I was wondering if I could have a change to implementing a P2P protocol >> such as Kademlia, Chord, Pastry,etc in NS-3. >>     As I am doing research in P2P streaming field. As we know, P2P protocols >> such as Kademlia, are widely used in P2P applications such as Bittorrent, >> emule,etc. Our prototype system is also using Kademlia, I am very >> interesting in implementing Kademlia in NS-3 for further simulation for P2P >> applications. > >Hi, > >Anyone is free to propose any relevant idea for this year's GSoC, and >we will certainly consider all quality proposals. We will give some >priority to the topics in which our mentors are most interested >(mostly revolving around router internals this year), but applicants >are free to propose any topic. > >Thx > >-- >- joe kopena >right here and now = = = = = = = = = = = = = = = = = = = = From juliana at ic.unicamp.br Thu Mar 19 08:17:58 2009 From: juliana at ic.unicamp.br (Juliana Freitag Borin) Date: Thu, 19 Mar 2009 08:17:58 -0700 Subject: [Ns-developers] Google Summer of Code 2009 In-Reply-To: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> References: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> Message-ID: <3cd643f90903190817i44f2a8e8x104f9f3f6c5e15fe@mail.gmail.com> Hi Joseph, any plans to include a project related to the WiMAX implementation? Juliana. 2009/3/18 Joseph Kopena > Hi folks, > > Just a heads up that ns-3 has been accepted for the 2009 Google Summer > of Code program. We do not yet know exactly how many slots we have > received, but this is great news. For all of the potential students > out there, a brief project description is up at [1], and an updated > ideas list at [2]. We will be making some updates in the next week or > so based on a few new mentors coming on board, but applications are > due April 3rd so it is worth starting to think about your proposal > now. > > Special thanks for this goes to Tom, Mathieu, and everyone that has > offered to help mentor this year! > > [1] http://socghop.appspot.com/org_app/show/google/gsoc2009/ns3 > [2] http://www.nsnam.org/wiki/index.php/GSOC2009Projects > > -- > - joe kopena > right here and now > From raj.b at gatech.edu Thu Mar 19 12:51:19 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Thu, 19 Mar 2009 15:51:19 -0400 Subject: [Ns-developers] ns-3-netanim for ns-3.4? and RC1 status Message-ID: <12d69e490903191251r3b72b9ednfa522c596a0dead9@mail.gmail.com> Tom reminds me that part of some code George has written for animation was scheduled for ns-3.4. For reference, the thread started here; http://mailman.isi.edu/pipermail/ns-developers/2009-January/005183.html George's modifications to ns-3 include additional trace hooks (in PointToPointChannel and PointToPointNetDevice), a dumbell topology object that works on PointToPoint, an animation-interface which allows users to specify how/if they want these animations, and some generic fixes/enhancements to the Ipv4 and PointToPoint helpers/containers. I did another review of the tree, and it seems that there are some extraneous traces added to the PointToPointNetDevice which are never called; these probably need to be removed. Also, the fixes to the helpers and containers have seen no discussion, so I can't in good faith merge these. So, I'll try and clean up these issues and get just the bare bones stuff required to make George's animator working into contrib prior to RC2. Stay tuned for RC1; your daily status update will be together with that later today. The regression farm is chugging away at the release candidate right now, so whenever that is done (in several hours) I will make a release. In my experience, the regression farm takes about 6 hours to complete one full testing cycle, so don't expect anything before about 9PM EDT. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Thu Mar 19 20:01:08 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Thu, 19 Mar 2009 23:01:08 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Thursday, March 19, 2009 Message-ID: <12d69e490903192001o2df70259r93b31bffd61da9cd@mail.gmail.com> Dear All, Here is your daily update regarding the upcoming release. The bulk of the information will be kept up-to-date here: http://www.nsnam.org/wiki/index.php/Ns-3.4 I will keep emailing out this link along with status changes. News: ===== ns-3.4-RC1 has been postponed until tomorrow, Friday, March 20, 2009. This has been done due to a bug that just popped up that breaks the build on machines without GTK+. It seems to be a configuration / wscript bug due to a last minute merge of the XML config store. It will be feature complete and will have no known "broken behavior" bugs. We are on course to making the release schedule; this setback will not shift the April 1st release date for ns-3.4 Bugs: ===== There are now 3 P1 bugs in the tracker, and 6 lower priority P2 bugs: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Bug_List The TCP bugs are STILL being worked on; they will likely be bumped down to P2 and fixed during the RC process. Craig has additionally made some progress on bug 458, and that patch will probably be applied soon. Progress / Closed Bugs: ======================= Bug 505 has been closed by Craig by adding an additional trace source. New Bugs: ========= None. Next Steps: =========== The first release candidate will be posted on Friday, March 20. A full schedule of upcoming milestones can be found here: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule The final three blockers will get fixed or reassigned in priority before this time. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Thu Mar 19 20:11:13 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Thu, 19 Mar 2009 23:11:13 -0400 Subject: [Ns-developers] fixing src/contrib/wscript for xml-gtkconfig store Message-ID: <12d69e490903192011q569a2364g525710f7bf6f262b@mail.gmail.com> On systems without GTK+, but on which libxml is found by waf, the xml config store (which has been merged to ns-3-dev) wscript code screws things up: if bld.env['ENABLE_GTK_CONFIG_STORE']: headers.source.append ('gtk-config-store.h') module.source.append ('gtk-config-store.cc') module.uselib = 'GTK_CONFIG_STORE' if bld.env['ENABLE_LIBXML2']: module.source.append ('xml-config.cc') module.uselib = module.uselib + ' LIBXML2' The issue is that module.uselib won't not exist as an rvalue in the second "if" block if the first one didn't execute. The first thing I think of is: if bld.env['ENABLE_LIBXML2']: module.source.append ('xml-config.cc') - module.uselib = module.uselib + ' LIBXML2' + if bld.env['ENABLE_GTK_CONFIG_STORE']: + module.uselib = module.uselib + ' LIBXML2' + else: + module.uselib =' LIBXML2' But I'm not sure this is right. Mathieu, what is the desired behavior if GTK is not present but libxml is? How can we fix this? -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From mathieu.lacage at sophia.inria.fr Thu Mar 19 23:57:58 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Fri, 20 Mar 2009 07:57:58 +0100 Subject: [Ns-developers] fixing src/contrib/wscript for xml-gtkconfig store In-Reply-To: <12d69e490903192011q569a2364g525710f7bf6f262b@mail.gmail.com> References: <12d69e490903192011q569a2364g525710f7bf6f262b@mail.gmail.com> Message-ID: <1237532278.10615.0.camel@diese.inria.fr> just define module.uselib separately to '' before both ifs: the gtk config store and the xml backend of the config store are independent. Mathieu On Thu, 2009-03-19 at 23:11 -0400, Raj Bhattacharjea wrote: > On systems without GTK+, but on which libxml is found by waf, the xml > config store (which has been merged to ns-3-dev) wscript code screws > things up: > > if bld.env['ENABLE_GTK_CONFIG_STORE']: > headers.source.append ('gtk-config-store.h') > module.source.append ('gtk-config-store.cc') > module.uselib = 'GTK_CONFIG_STORE' > > if bld.env['ENABLE_LIBXML2']: > module.source.append ('xml-config.cc') > module.uselib = module.uselib + ' LIBXML2' > > The issue is that module.uselib won't not exist as an rvalue in the > second "if" block if the first one didn't execute. The first thing I > think of is: > > if bld.env['ENABLE_LIBXML2']: > module.source.append ('xml-config.cc') > - module.uselib = module.uselib + ' LIBXML2' > + if bld.env['ENABLE_GTK_CONFIG_STORE']: > + module.uselib = module.uselib + ' LIBXML2' > + else: > + module.uselib =' LIBXML2' > > But I'm not sure this is right. Mathieu, what is the desired behavior > if GTK is not present but libxml is? How can we fix this? > From mk.banchi at gmail.com Fri Mar 20 05:59:40 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Fri, 20 Mar 2009 13:59:40 +0100 Subject: [Ns-developers] How to maintain a repository for merge In-Reply-To: <1237203968.31135.266.camel@diese.inria.fr> References: <49BBA62F.9020201@gmail.com> <1237141616.6391.1.camel@mathieu-laptop> <49BD54D3.2050701@gmail.com> <1237203968.31135.266.camel@diese.inria.fr> Message-ID: <49C3933C.1070302@gmail.com> Mathieu Lacage ha scritto: > On Sun, 2009-03-15 at 20:19 +0100, Mirko Banchi wrote: > >> Added files: > > All the code looks great ! Comments below. > >> src/devices/wifi/qsta-wifi-mac.h >> src/devices/wifi/qsta-wifi-mac.cc > > The above looks good: do you think you could come up with a way of > sharing the common code between nqsta-wifi-mac and qsta-wifi-mac ? It > seems that the association state handling is fairly similar: maybe it > could be pushed in a common base class StaWifiMac which delegates some > work to the two subclasses NqstaWifiMac and QstaWifiMac ? The same would > also hold for NqapWifiMac and QapWifiMac. Note that I am not saying that > you _must_ do this because I suspect that there are some very subtle > differences which might make this very painful so, I am just asking that > you try to see if it is feasible without making the code unreadable. > >> src/devices/wifi/qap-wifi-mac.h >> src/devices/wifi/qap-wifi-mac.cc > > This signature does not make me very happy: > > void ForwardDown (Ptr packet, Mac48Address from, > Mac48Address to, > WifiMacHeader const *qosHeader = 0); > > In the past, we have had a lot of debates about function arguments with > default values: I know that some disagree with me, but, please, don't > use them here: I find that they make it harder for me to follow which > methods are called. > > In this case, I think that you should add two extra arguments to > ForwardDown: a tid and a qospolicy and just make them unconditional and > make the callers pass the right values. > > > Also, the following can't possibly work: > > + if (qosHeader != 0) > + { > ... > + } > + else > + { > + uint8_t tid = GetTidForPacket (packet); > + if (tid < 8) > + { > + hdr.SetQosTid (tid); > + uint8_t ac = MapTidToAc (qosHeader->GetQosTid ()); > > ooh, qosHeader is 0... > Yes :) You're right! I have to change this method signature... > The two functions uint8_t GetTidForPacket (Ptr packet) > and uint8_t MapTidToAc (uint8_t tid) could be moved to > src/devices/wifi/qos-utils.h or something similar, although, really, not > a big deal. > qos-utils.h seems to make sense...we could move also qos-tag (Which currently is defined in src/contrib/qos-tag.h and src/contrib/qos-tag.cc in this unit. >> src/devices/wifi/edca-txop-n.h >> src/devices/wifi/edca-txop-n.cc > > Although I see that you use this only for debugging, the m_accessClass > field looked pretty bad: ideally, EdcaTxopN would not need to know which > class it belongs to. > The other thing I am a bit nervous about is m_typeOfStation which I see > is used in MapSrcAddress and MapDstAddress. Clearly, using a string > comparison against a magic string value here looks fairly bad. If you > really must parameterize behavior based on a parameter value, please, > use an enum instead of a string here. Anyway, I would be mostly curious > to know what other behaviors MapSrcAddress and MapDstAddress could > implement. > These two functions are used only to sets correctly sourceAddr and DestAddr in an A-MSDU subframe header. If the A-MSDU is for an ap all MSDUs forming the aggregated packet must have the correct destination address (address 3 in this case) otherwise ap will not able to forward each single MSDU to correct station. On the other hand, if the A-MSDU is for a station, destination address in each single A-MSDU subframe header must be setted to address 1. >> src/devices/wifi/edca-parameter-set.h >> src/devices/wifi/edca-parameter-set.cc > > The two files above don't look quite right: serializing all these > integer arguments in a single string blob looks a bit horrible. It seems > to me that each of these parameter could be changed directly as an > attribute of the EdcaTxopN class and, then, QstaWifiMac and QapWifiMac > could export a set of attributes such as VO_EdcaTxopN, VI_EdcaTxopN, > etc. This would allow you to kill the whole EdcaParameterSet class as > well as make it easier for users to specify a new value for these > attributes (they would not have to learn your serialization format). > If i'm understanding, should be there four new classes: VO_EdcaTxopN VI_EdcaTxopN BE_EdcaTxopN BK_EdcaTxopN ? >> src/devices/wifi/msdu-aggregator.h >> src/devices/wifi/msdu-aggregator.cc > > I can't really comment on your aggregation API but, > MsgAggregator::Deaggregate: > > + //a new packet is created > + Packet *deaggregatedPacket = new Packet (buffer, hdr.GetLength > ()); > + Ptr p (deaggregatedPacket); > > Use Create (buffer, ...) instead of operator new which will get > the reference counting right. The above is leaking a count so, you are > leaking a packet each time you get there. (for reference, look at > Create<> in src/core/ptr.h to see the critical bit you missed :) > template Ptr Create (T1 a1, T2 a2) { return Ptr (new T (a1, a2), false); } Is there a real difference between: Packet *deaggregatedPacket = new Packet (buffer, hdr.GetLength()); Ptr p (deaggregatedPacket); and Ptr p = Create (buffer, hdr.GetLength()); ? >From the above method definition two options seems to operate in the same manner. However no problems...i can use Create instead of operator new. >> src/devices/wifi/msdu-standard-aggregator.h >> src/devices/wifi/msdu-standard-aggregator.cc > > nothing to say here. > >> src/devices/wifi/amsdu-subframe-header.h >> src/devices/wifi/amsdu-subframe-header.cc > > both look good. > >> src/helper/msdu-aggregator-helper.h >> src/helper/msdu-aggregator-helper.cc > > I have to confess that I am, again, uneasy about the string-based AC > control in this API, but the real issue here is the DynamicCast in > Install. It would be really nice to be able to avoid it and one way to > do this would be to do what we do for the PHY layer where the creation > of the PHY object is delated to a WifiPhyHelper class in > src/helper/wifi-helper.h. I think that you could create a similar > WifiMacHelper class with a set of subclasses, some of which could export > extra information to build the msdu aggregators for the Qos MACs. > > i.e., > > class WifiMacHelper > { > public: > virtual Ptr *Create (void); > }; > > class WifiHelper > { > public: > NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const; > ... > }; > > and: > > class NqapWifiMacHelper : public WifiMacHelper > { > void SetDcaAttribute (name, value, ...); > }; > > class NqstaWifiMacHelper : public WifiMacHelper > { > ... > }; > > class AdhocWifiMacHelper : public WifiMacHelper > { > ... > }; > > class QapWifiMacHelper : public WifiMacHelper > { > void SetMsduAggregator (...); > void SetEdcaAttribute (type, name, value, ...); > }; > > class QstaWifiMacHelper : public WifiMacHelper > { > void SetMsduAggregator (...); > void SetEdcaAttribute (type, name, value, ...); > }; > > Of course, you could decrease the number of subclasses with this: > class NqosWifiMacHelper : public WifiMacHelper > { > void SetType (std::string typeid); > ... > }; > class QosWifiMacHelper : public WifiMacHelper > { > void SetType (std::string typeid); > ... > }; > > (either of these option would be fine with me) > > Ideally, you would also pass an enum-based AC to SetMsduAggregator > instead of the string-based AC. > > Ok. A new class WifiMacHelper seems good. I think that the second is better. >> Modified files: > >> src/devices/wifi/wifi-mac-header.h >> src/devices/wifi/wifi-mac-header.cc > > both look ok to me as-is. > >> src/devices/wifi/mac-tx-middle.h >> src/devices/wifi/mac-tx-middle.cc > > looks good to me modulo coding style > (http://www.nsnam.org/codingstyle.html). > > For example: > > + for (; i != m_qosSequences.end (); i++) > + delete [] i->second; > > should be written as: > for () > { > // XXX > } > > + else > + { > > also, wrong indentation: > > + retval = 0; > + std::pair newSeq (hdr->GetAddr1 (), > new uint16_t[16]); > > Yes, sorry...a tab character is present there...:( I did't see it > >> src/devices/wifi/wifi-mac-queue.h >> src/devices/wifi/wifi-mac-queue.cc > > the above looks good to me modulo: > + Ptr Dequeue (WifiMacHeader *hdr, uint8_t index, > Mac48Address addr); > > the index argument should probably be an enum instead and the > documentation for this function should probably try to explain why it is > needed. Ok. > > this is really cool: keep up the good work ! > Thank you very much and sorry for the late answer. Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090320/4f1d4dea/smime.bin From mathieu.lacage at sophia.inria.fr Fri Mar 20 07:04:39 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Fri, 20 Mar 2009 15:04:39 +0100 Subject: [Ns-developers] How to maintain a repository for merge In-Reply-To: <49C3933C.1070302@gmail.com> References: <49BBA62F.9020201@gmail.com> <1237141616.6391.1.camel@mathieu-laptop> <49BD54D3.2050701@gmail.com> <1237203968.31135.266.camel@diese.inria.fr> <49C3933C.1070302@gmail.com> Message-ID: <1237557879.10615.32.camel@diese.inria.fr> On Fri, 2009-03-20 at 13:59 +0100, Mirko Banchi wrote: > > The two functions uint8_t GetTidForPacket (Ptr packet) > > and uint8_t MapTidToAc (uint8_t tid) could be moved to > > src/devices/wifi/qos-utils.h or something similar, although, really, not > > a big deal. > > > > qos-utils.h seems to make sense...we could move also qos-tag (Which > currently is defined in src/contrib/qos-tag.h and src/contrib/qos-tag.cc > in this unit. I would be fine with this if you make sure that all the functions and classes defined in qos-utils.h are prefixed with QosUtils to make it possible to figure out in which header these functions/classes are defined. > > >> src/devices/wifi/edca-txop-n.h > >> src/devices/wifi/edca-txop-n.cc > > > > Although I see that you use this only for debugging, the m_accessClass > > field looked pretty bad: ideally, EdcaTxopN would not need to know which > > class it belongs to. > > > The other thing I am a bit nervous about is m_typeOfStation which I see > > is used in MapSrcAddress and MapDstAddress. Clearly, using a string > > comparison against a magic string value here looks fairly bad. If you > > really must parameterize behavior based on a parameter value, please, > > use an enum instead of a string here. Anyway, I would be mostly curious > > to know what other behaviors MapSrcAddress and MapDstAddress could > > implement. > > > > These two functions are used only to sets correctly sourceAddr and > DestAddr in an A-MSDU subframe header. If the A-MSDU is for an ap > all MSDUs forming the aggregated packet must have the correct > destination address (address 3 in this case) otherwise ap will not able > to forward each single MSDU to correct station. > On the other hand, if the A-MSDU is for a station, destination address > in each single A-MSDU subframe header must be setted to address 1. What I am mostly annoyed about is that you use a string to store an enum value. This is horribly evil: use a real enum instead. > >> src/devices/wifi/edca-parameter-set.h > >> src/devices/wifi/edca-parameter-set.cc > > > > The two files above don't look quite right: serializing all these > > integer arguments in a single string blob looks a bit horrible. It seems > > to me that each of these parameter could be changed directly as an > > attribute of the EdcaTxopN class and, then, QstaWifiMac and QapWifiMac > > could export a set of attributes such as VO_EdcaTxopN, VI_EdcaTxopN, > > etc. This would allow you to kill the whole EdcaParameterSet class as > > well as make it easier for users to specify a new value for these > > attributes (they would not have to learn your serialization format). > > > If i'm understanding, should be there four new classes: > > VO_EdcaTxopN > VI_EdcaTxopN > BE_EdcaTxopN > BK_EdcaTxopN No: class QstaWifiMac { private: Ptr m_voEdcaTxopN; Ptr m_viEdcaTxopN; ... ... }; QstaWifiMac::GetTypeId (void) { static TypeId tid = ... ... AddAttribute ("VO_EdcaTxopN", ... MakePointerAccessor (&QstaWifiMac::GetVOEdcaTxopN) ...); AddAttribute ("VI_EdcaTxopN", ... MakePointerAccessor (&QstaWifiMac::GetVIEdcaTxopN) ...); } and: TypeId EdcaTxopN::GetTypeId (void) { static TypeId tid = TypeId ("ns3::EdcaTxopN") .SetParent () .AddConstructor () .AddAttribute ("CwMin", ...); .AddAttribute ("CwMax", ...); .AddAttribute ("Aifsn", ...); ... ; return tid; } > > I can't really comment on your aggregation API but, > > MsgAggregator::Deaggregate: > > > > + //a new packet is created > > + Packet *deaggregatedPacket = new Packet (buffer, hdr.GetLength > > ()); > > + Ptr p (deaggregatedPacket); > > > > Use Create (buffer, ...) instead of operator new which will get > > the reference counting right. The above is leaking a count so, you are > > leaking a packet each time you get there. (for reference, look at > > Create<> in src/core/ptr.h to see the critical bit you missed :) > > > > template > Ptr Create (T1 a1, T2 a2) > { > return Ptr (new T (a1, a2), false); ^ a magic boolean argument > } > > Is there a real difference between: > > Packet *deaggregatedPacket = new Packet (buffer, hdr.GetLength()); > Ptr p (deaggregatedPacket); > > and > > Ptr p = Create (buffer, hdr.GetLength()); > > ? yes, there is a difference: please, read carefully the template implementation or run your code in a memory leak checker to witness all the packets you lose during a simulation. Mathieu From raj.b at gatech.edu Fri Mar 20 08:57:54 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 20 Mar 2009 11:57:54 -0400 Subject: [Ns-developers] Python Bindings for optional ns-3 features Message-ID: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> We ship a set of the bindings definition files along with ns-3, and keep these files updated and in the trunk of ns-3-dev by using ./waf --python-scan. However, there are some subtle issues that are creeping up. Namely, there are some optional components in ns-3, that might cause some code to be #IFDEFed out depending on whether or not certain libraries are detected by ./waf configure. So, for example, if "waf configure" detects GTK+ on my system, the bindings I generate and check in might not compile on another system where GTK+ is not installed. We need to define a minimum set of features for which we'll ship bindings code. We then also need a way to configure ns-3 with all of those optional features turned off, which I don't know how to do at present; for example, if waf configure finds GTK+, it enables the featues that depend on it; I'd like to force waf configure to _disable_ those features (or any optional features for that matter) using something like ./waf configure --no-gtk Then for python-scanning, it needs to go something like this: ./waf configure --no-gtk --no-xml --no-threads --no-rt ... ./waf --python-scan And then check in this set of bindings code which is common to ALL ns-3 users. If users want to enable the optional APIs on their end system, they will have to install gccxml, pygccxml, pybindgen, etc. to get the full set of bindings code. Gustavo, ideas? -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Fri Mar 20 10:07:09 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Fri, 20 Mar 2009 17:07:09 +0000 Subject: [Ns-developers] Python Bindings for optional ns-3 features In-Reply-To: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: 2009/3/20 Raj Bhattacharjea > We ship a set of the bindings definition files along with ns-3, and > keep these files updated and in the trunk of ns-3-dev by using ./waf > --python-scan. However, there are some subtle issues that are > creeping up. Namely, there are some optional components in ns-3, that > might cause some code to be #IFDEFed out depending on whether or not > certain libraries are detected by ./waf configure. So, for example, > if "waf configure" detects GTK+ on my system, the bindings I generate > and check in might not compile on another system where GTK+ is not > installed. You are not supposed to ship generated bindings to another system. Let each system generate its own python bindings using pybindgen (but no gccxml or pygccxml needed). Therefore, I see no problem here. > > > We need to define a minimum set of features for which we'll ship > bindings code. We then also need a way to configure ns-3 with all of > those optional features turned off, which I don't know how to do at > present; for example, if waf configure finds GTK+, it enables the > featues that depend on it; I'd like to force waf configure to > _disable_ those features (or any optional features for that matter) > using something like ./waf configure --no-gtk > > Then for python-scanning, it needs to go something like this: > > ./waf configure --no-gtk --no-xml --no-threads --no-rt ... > ./waf --python-scan > > And then check in this set of bindings code which is common to ALL > ns-3 users. If users want to enable the optional APIs on their end > system, they will have to install gccxml, pygccxml, pybindgen, etc. to > get the full set of bindings code. It seems to me you are trying to solve a false problem?... -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From craigdo at ee.washington.edu Fri Mar 20 10:26:58 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Fri, 20 Mar 2009 10:26:58 -0700 Subject: [Ns-developers] Python Bindings for optional ns-3 features In-Reply-To: References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: > You are not supposed to ship generated bindings to another > system. Let each system generate its own python bindings > using pybindgen (but no gccxml or pygccxml needed). > Therefore, I see no problem here. This is not how I remember the bindings story unfolding. This is also not how things have worked since July 8, 2008 when the first Python bindings were checked into ns-3-dev. I believe that ever since then bindings were generated on one system and distributed along with everything else. So I think we have a problem that needs to be fixed one way or the other (either stop checking in bindings or start filtering them). I don't recall ever making bindings without using --python-scan (which does use gccxml, right?). What are you suggesting doing? I don't get it. -- Craig From raj.b at gatech.edu Fri Mar 20 10:27:20 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 20 Mar 2009 13:27:20 -0400 Subject: [Ns-developers] Python Bindings for optional ns-3 features In-Reply-To: References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: <12d69e490903201027m1a28426gd51142f814829dbe@mail.gmail.com> On Fri, Mar 20, 2009 at 1:07 PM, Gustavo Carneiro wrote: > 2009/3/20 Raj Bhattacharjea >> >> We ship a set of the bindings definition files along with ns-3, and >> keep these files updated and in the trunk of ns-3-dev by using ./waf >> --python-scan. ?However, there are some subtle issues that are >> creeping up. ?Namely, there are some optional components in ns-3, that >> might cause some code to be #IFDEFed out depending on whether or not >> certain libraries are detected by ./waf configure. ?So, for example, >> if "waf configure" detects GTK+ on my system, the bindings I generate >> and check in might not compile on another system where GTK+ is not >> installed. > > You are not supposed to ship generated bindings to another system.? Let each > system generate its own python bindings using pybindgen (but no gccxml or > pygccxml needed).? Therefore, I see no problem here. > >> >> We need to define a minimum set of features for which we'll ship >> bindings code. ?We then also need a way to configure ns-3 with all of >> those optional features turned off, which I don't know how to do at >> present; for example, if waf configure finds GTK+, it enables the >> featues that depend on it; I'd like to force waf configure to >> _disable_ those features (or any optional features for that matter) >> using something like ./waf configure --no-gtk >> >> Then for python-scanning, it needs to go something like this: >> >> ./waf configure --no-gtk --no-xml --no-threads --no-rt ... >> ./waf --python-scan >> >> And then check in this set of bindings code which is common to ALL >> ns-3 users. ?If users want to enable the optional APIs on their end >> system, they will have to install gccxml, pygccxml, pybindgen, etc. to >> get the full set of bindings code. > > It seems to me you are trying to solve a false problem?... I WAS trying to solve a very specific problem in ns-3-dev regarding the python bindings....which I can't replicate anymore! Sorry for the noise. In any case, it still might be desireable to selectively turn off each optional feature. Is this possible? Gustavo, I might be mailing you privately if I run into some more snags... -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From raj.b at gatech.edu Fri Mar 20 10:30:47 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 20 Mar 2009 13:30:47 -0400 Subject: [Ns-developers] Python Bindings for optional ns-3 features In-Reply-To: References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: <12d69e490903201030s6ac9a04dt72ba89fedcdcad08@mail.gmail.com> On Fri, Mar 20, 2009 at 1:26 PM, wrote: > >> You are not supposed to ship generated bindings to another >> system. ?Let each system generate its own python bindings >> using pybindgen (but no gccxml or pygccxml needed). >> Therefore, I see no problem here. > > This is not how I remember the bindings story unfolding. ?This is also not > how things have worked since July 8, 2008 when the first Python bindings > were checked into ns-3-dev. ?I believe that ever since then bindings were > generated on one system and distributed along with everything else. > > So I think we have a problem that needs to be fixed one way or the other > (either stop checking in bindings or start filtering them). > > I don't recall ever making bindings without using --python-scan (which does > use gccxml, right?). ?What are you suggesting doing? ?I don't get it. I have a sense that this is terminology issue. Perhaps Gustavo will clear it up? We certainly ship a bunch of py files in bindings/python/, and these change when our C++ API changes (and a developer runs python-scan and checks in the resulting changes to these py files). This is what Craig and I are talking about, but we're probably calling it the wrong thing. It still seems to me as if the updates to these files might be dependent on how your system and ns-3 were configured. Is this not true? -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Fri Mar 20 10:35:09 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Fri, 20 Mar 2009 17:35:09 +0000 Subject: [Ns-developers] Python Bindings for optional ns-3 features In-Reply-To: References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: 2009/3/20 > > > You are not supposed to ship generated bindings to another > > system. Let each system generate its own python bindings > > using pybindgen (but no gccxml or pygccxml needed). > > Therefore, I see no problem here. > > This is not how I remember the bindings story unfolding. This is also not > how things have worked since July 8, 2008 when the first Python bindings > were checked into ns-3-dev. I believe that ever since then bindings were > generated on one system and distributed along with everything else. > > So I think we have a problem that needs to be fixed one way or the other > (either stop checking in bindings or start filtering them). > > I don't recall ever making bindings without using --python-scan (which does > use gccxml, right?). What are you suggesting doing? I don't get it. OK, maybe this is a confusion with terminology. There three stages in creating bindings: 1. "scanning": waf --python-scan uses pybindgen+pygccxml+gccxml to scan header files and generate the files bindings/python/ns3_module_*.py 2. "generation": during build, the bindings/python/ns3_module_*.py are read and files build//bindings/python/ns3_module_*.cc are generated 3. "compiling": the build//bindings/python/ns3_module_*.cc are compile into a .so file Right now, and for a long time, the result of 1 is shipped in tarballs (and mercurial repos). But not the "generated" .cc files; those were never shipped. When generating the .cc files, the bindings generated scripts already take into account which features are enabled or disabled. Of course for new added features some python code to do this disabling of bindings for disabled features needs to be added. See bindings/python/ns3modulegen.py. -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From raj.b at gatech.edu Fri Mar 20 10:44:22 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 20 Mar 2009 13:44:22 -0400 Subject: [Ns-developers] Python Bindings for optional ns-3 features In-Reply-To: References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: <12d69e490903201044m23e3a764n75837f8df6845ae@mail.gmail.com> On Fri, Mar 20, 2009 at 1:35 PM, Gustavo Carneiro wrote: > > OK, maybe this is a confusion with terminology.? There three stages in > creating bindings: > > 1. "scanning": waf --python-scan uses pybindgen+pygccxml+gccxml to scan > header files and generate the files bindings/python/ns3_module_*.py > > 2. "generation": during build, the bindings/python/ns3_module_*.py are read > and files build//bindings/python/ns3_module_*.cc are generated > > 3. "compiling": the build//bindings/python/ns3_module_*.cc are > compile into a .so file > > Right now, and for a long time, the result of 1 is shipped in tarballs (and > mercurial repos).? But not the "generated" .cc files; those were never > shipped. > > When generating the .cc files, the bindings generated scripts already take > into account which features are enabled or disabled.? Of course for new > added features some python code to do this disabling of bindings for > disabled features needs to be added.? See bindings/python/ns3modulegen.py. > Mathieu, does anything need to be disabled like this for the XML config store? -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From Guangyu.Pei at boeing.com Fri Mar 20 15:14:28 2009 From: Guangyu.Pei at boeing.com (Pei, Guangyu) Date: Fri, 20 Mar 2009 15:14:28 -0700 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: Mathieu, I have some questions about adding additional PHY models (such as 802.11b/g) in ns-3. Currently, there is a YansWifiPhy, which aligns with 802.11a PHY. It works together with interference-helper, yans-error-rate-model and yans-wifi-channel. It seems to me that Yans model is generic and can be used as the bases for the other PHY models. How about the following approach for adding additional PHY model? (1) generalize interference-helper based on PHY standard type: Instead of assuming 802.11a parameter, add a member variable "enum WifiPhyStandard m_80211_standard". In InterferenceHelper::CalculateTxDuration(), the TxDuration is calculated based on m_80211_standard. For each standard type x, there should be a "Configure80211xParameters" function. (2) add new PHY modes in wifi-phy (e.g., Get1mbb for 802.11b 1Mbps etc) (3) Add Chunk success rate functions in yans-error-rate-model based on new modes added in WifiPhy. (4) In YansWifiPhy, the only thing need is to add Configure80211x() to support YansWifiPhy::SetStandard for new 802.11x mode added. Is this approach acceptable? The pros of this approach is that new modes can leverage Yans model heavily. As you can see only minor changes needed for YansWifiPhy class. The cons of this approach may be that it is not modular since it directly add new PHY models on top of Yans model. Another approach is that each additional PHY mode is standalone module, which has its own error-rate-model, interference-helper etc. But I see a lot of overlapping codes for this approach. What are your thoughts for this type of approach? Since Yans model seems to align with 802.11a well, what is the reason not to call it 802.11a and set default parameters such as receiver sensitivity more closely to the standard? What is your vision and plan for adding other 802.11 PHY models within your current framework. Thanks, Gary From raj.b at gatech.edu Fri Mar 20 20:23:17 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 20 Mar 2009 23:23:17 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Friday, March 20, 2009 Message-ID: <12d69e490903202023w2aabee05sfe6b5004420300d7@mail.gmail.com> Dear All, Here is your daily update regarding the upcoming release. The bulk of the information will be kept up-to-date here: http://www.nsnam.org/wiki/index.php/Ns-3.4 I will keep emailing out this link along with status changes. News: ===== ns-3.4-RC1 has been made! It is available at the following locations: All-in-one Tarball: http://www.nsnam.org/releases/ns-allinone-3.4-RC1.tar.bz2 Mercurial: http://code.nsnam.org/ns-3.4-RC1/ We are on course to making the release schedule; the slated date is April 1st. Bugs: ===== There are now 6 P1 bugs in the tracker, and 6 lower priority P2 bugs. Note that the wiki buglist is not up to date, so I won't include it here. Three of the remaining bugs were found at the last minute, and they involve the Cygwin build being broken. That said, RC1 appears to build on Linux and Mac OS X. Please beat on RC1 to make sure things work, and then file bugs in the tracker if you find any errors. The three TCP bugs are still P1, and being worked on through the RC process. I have decided to leave them this way and make the RC anyway, with minimal P1 bugs in the tracker. Progress / Closed Bugs: ======================= None. New Bugs: ========= Bugs against the release candidate's behavior on Cygwin have been filed. Next Steps: =========== The next release candidate is slated for Monday; A full schedule of upcoming milestones can be found here: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule The TCP bugs and Cygwin issues need to be resolved before the final release can be made. Thanks everyone! -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From timo.bingmann at student.kit.edu Sat Mar 21 04:10:15 2009 From: timo.bingmann at student.kit.edu (Timo Bingmann) Date: Sat, 21 Mar 2009 12:10:15 +0100 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: <200903211210.16060.timo.bingmann@student.kit.edu> On Friday 20 March 2009 23:14:28 Pei, Guangyu wrote: > Mathieu, Hi there, I'm currently writing my diploma thesis and it will contain a ton of info on the PHY layers in ns-3. In my private repo I cloned YansWifiPhy to create Ns2ExtWifiPhy for ns-2-similar or equal reception. > I have some questions about adding additional PHY models (such as > 802.11b/g) in ns-3. I believe you are wanting to add new WifiModes, not actually a new PHY model. > Currently, there is a YansWifiPhy, which aligns with 802.11a PHY. It > works together with interference-helper, yans-error-rate-model and > yans-wifi-channel. > > It seems to me that Yans model is generic and can be used as the bases > for the other PHY models. > > How about the following approach for adding additional PHY model? > > (1) generalize interference-helper based on PHY standard type: As you have already figured out, the YansWifiPhy does a BER/PER calculation based on the SINR value. The SINR contains cumulative interference as expected from a AWGN model. The cumulation is calculated by the interference helper. Then after SINR calculation, the InterferenceHelper uses ErrorRateModel to calculate the BER/PER for each packet chuck with time-invariant SINR. I guess this is the place to add BER formulas to add b/g modes. See YansErrorRateModel::GetChunkSuccessRate(). The rest below is about organization of the WifiMode class and what it is for. I did some work on that, but never finished as more important things intervened. Here the idea on that work: My perception is that WifiMode is used for two separate purposes: once by MAC layer to tell the PHY which transmission schema it should use. And once to indicate the PHY modulation mode. These are not identical as even the simpler 802.11a OFDM modes show: the preamble and header are differently modulated than the payload. Currently this is modeled by setting InterferenceHelper::m_longPlcpHeaderMode and using it at the right places. For my part i believe there should be two classes: WifiMode and WifiModulation WifiMode encompasses all parameters of a transmission schema. Including: header modulation(s), payload modulation, preamble length, bandwidth, maybe even frequency (that's a separate discussion). WifiModulation is only about calculating the BER for one chunk. Hence it is not used by upper layers. > Instead of assuming 802.11a parameter, add a member variable "enum > WifiPhyStandard m_80211_standard". In > InterferenceHelper::CalculateTxDuration(), the TxDuration is calculated > based on m_80211_standard. For each standard type x, there should be a > "Configure80211xParameters" function. For my part: all these methods don't belong into an interference helper. However if CalcTxDuration is a method of a WifiMode or of a WifiPhy is an open issue. This depends on how tightly a WifiMode is bound to a specific WifiPhy, in my opinion very tightly. In that case TxDuration is fully defined by the WifiMode. > (2) add new PHY modes in wifi-phy (e.g., Get1mbb for 802.11b 1Mbps etc) Definitely. Interesting issue is how many to actually list. Especially with 10 MHz bandwidth and whether to include the frequency in the WifiMode. That would yield lots of modes. I mean of course only one frequency per band. The main advantage of also listing frequencies is for answering user questions like "does ns-3 support 802.11p in 5.9GHz ?". Nothing changes, only the frequency. But listing them as extra modes forestalls user questions :) > (3) Add Chunk success rate functions in yans-error-rate-model based on > new modes added in WifiPhy. Ah :) > (4) In YansWifiPhy, the only thing need is to add Configure80211x() to > support YansWifiPhy::SetStandard for new 802.11x mode added. > > Is this approach acceptable? The pros of this approach is that new modes > can leverage Yans model heavily. As you can see only minor changes > needed for YansWifiPhy class. The cons of this approach may be that it > is not modular since it directly add new PHY models on top of Yans > model. > > Another approach is that each additional PHY mode is standalone module, > which has its own error-rate-model, interference-helper etc. But I see a > lot of overlapping codes for this approach. What are your thoughts for > this type of approach? > > Since Yans model seems to align with 802.11a well, what is the reason > not to call it 802.11a and set default parameters such as receiver > sensitivity more closely to the standard? What is your vision and plan > for adding other 802.11 PHY models within your current framework. > > Thanks, > > Gary I did some test coding some time ago: https://idlebox.net/2008/ns-3-wifi/code/ns-3-wifimode/ And created WifiModulation and changed all code accordingly. It all works ok. However more important things stalled that branch. I manged to remove WifiPreamble from all higher MAC layers (Yay!) Greetings Timo From craigdo at ee.washington.edu Sat Mar 21 10:24:10 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Sat, 21 Mar 2009 10:24:10 -0700 Subject: [Ns-developers] ns-3.4 Daily Status for Friday, March 20, 2009 In-Reply-To: <12d69e490903202023w2aabee05sfe6b5004420300d7@mail.gmail.com> References: <12d69e490903202023w2aabee05sfe6b5004420300d7@mail.gmail.com> Message-ID: <89C50B6AF19E400FBC2542A2C546BB0B@CRAIGVAIO> > Three of the remaining bugs were found at the last minute, > and they involve the Cygwin build being broken. Well, it's not quite that bad. Cygwin only *appears* to be broken. The bugs are filed against the "appearance of fatal errors" problem. It is possible to build a working ns-3 system although it may not appear that way in the middle of the download and build process. I can build and run ns-3 on ~ > unnamed -a CYGWIN_NT-5.1 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin ~ > So, for people who want to use Cygwin now it is not hopeless ... hg clone http://code.nsnam.org/ns-3-allinone cod ns-3-allinone ./download.py # # Get NS-3 # Works fine. # # Get the regression traces # Works fine. # # Get PyBindGen # bzr: ERROR: [Errno 13] Permission denied *** Problem fetching pybindgen; python bindings will not work. Ignore this error. Python bindings are not supported on Cygwin platforms anyway. # # Get NSC # abort: case-folding collision between linux-2.6.18/include/linux/netfilter/xt_mark.h and linux-2.6.18/include/linux/netfilter/xt_MARK.h *** Problem fetching NSC; NSC will not be available. Ignore this abort. NSC is not supported on Cygwin platforms anyway. ./build.py Entering directory `./ns-3-dev' Note: configuring ns-3 without pybindgen Note: configuring ns-3 without NSC This is the right thing to do because of the download errors. However, you will see lots of apparent errors like the following [234/588] cxx: src/core/log.cc -> build/debug/src/core/log_1.o g++: unrecognized option `-pthread' g++: unrecognized option `-pthread' Ignore these errors as it will eventually sort itself out later during linking. Then during linking you will see apparent errors that look like, g++: unrecognized option `-pthread' /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: warning: auto-importing has been activated without --enable -auto-import specified on the command line. This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.Info: resolving vtable for ns3::PointerValueby linking to __imp___ZTVN3ns312PointerValueE (auto-import) Info: resolving vtable for ns3::EmptyAttributeValueby linking to __imp___ZTVN3ns319EmptyAttributeValueE (auto-import) Info: resolving vtable for ns3::UintegerValueby linking to __imp___ZTVN3ns313UintegerValueE (auto-import) Info: resolving vtable for ns3::StringValueby linking to __imp___ZTVN3ns311StringValueE (auto-import) Ignore the g++ unrecognized option Ignore the informational vtable messages. cd ns-3-dev ./waf --regression Regression testing summary: SKIP: 3 of 22 tests have been skipped (test-csma-bridge, test-realtime-udp-echo, test-tcp-nsc-lfn) PASS: 19 of 22 tests passed So, it actually works if you ignore all the errors. -- Craig From craigdo at ee.washington.edu Sat Mar 21 10:30:35 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Sat, 21 Mar 2009 10:30:35 -0700 Subject: [Ns-developers] ns-3.4 Daily Status for Friday, March 20, 2009 In-Reply-To: <89C50B6AF19E400FBC2542A2C546BB0B@CRAIGVAIO> References: <12d69e490903202023w2aabee05sfe6b5004420300d7@mail.gmail.com> <89C50B6AF19E400FBC2542A2C546BB0B@CRAIGVAIO> Message-ID: <66F4E636D7A1450F96F64D146023BD83@CRAIGVAIO> Argh. The spell checker got hold of uname in my message. To check the cygwin version, you don't run the unnamed command ~ > unnamed -a you should should do ~ > uname -a of course. > -----Original Message----- > From: ns-developers-bounces at ISI.EDU > [mailto:ns-developers-bounces at ISI.EDU] On Behalf Of > craigdo at ee.washington.edu > Sent: Saturday, March 21, 2009 10:24 AM > To: 'Raj Bhattacharjea'; ns-developers at ISI.EDU > Subject: Re: [Ns-developers] ns-3.4 Daily Status for Friday, > March 20, 2009 > > > > Three of the remaining bugs were found at the last minute, > > and they involve the Cygwin build being broken. > > Well, it's not quite that bad. Cygwin only *appears* to be > broken. The > bugs are filed against the "appearance of fatal errors" > problem. It is > possible to build a working ns-3 system although it may not > appear that way > in the middle of the download and build process. > > I can build and run ns-3 on > > ~ > unnamed -a > CYGWIN_NT-5.1 1.5.25(0.156/4/2) > 2008-06-12 19:34 i686 > Cygwin > ~ > > > So, for people who want to use Cygwin now it is not hopeless ... > > hg clone http://code.nsnam.org/ns-3-allinone > cod ns-3-allinone > ./download.py > > # > # Get NS-3 > # > > Works fine. > > # > # Get the regression traces > # > > Works fine. > > # > # Get PyBindGen > # > > bzr: ERROR: [Errno 13] Permission denied > *** Problem fetching pybindgen; python bindings will not work. > > Ignore this error. Python bindings are not supported on > Cygwin platforms > anyway. > > # > # Get NSC > # > > abort: case-folding collision between > linux-2.6.18/include/linux/netfilter/xt_mark.h and > linux-2.6.18/include/linux/netfilter/xt_MARK.h > *** Problem fetching NSC; NSC will not be available. > > Ignore this abort. NSC is not supported on Cygwin platforms anyway. > > ./build.py > > Entering directory `./ns-3-dev' > Note: configuring ns-3 without pybindgen > Note: configuring ns-3 without NSC > > This is the right thing to do because of the download errors. > However, you > will see lots of apparent errors like the following > > [234/588] cxx: src/core/log.cc -> build/debug/src/core/log_1.o > g++: unrecognized option `-pthread' > g++: unrecognized option `-pthread' > > Ignore these errors as it will eventually sort itself out later during > linking. > > Then during linking you will see apparent errors that look like, > > g++: unrecognized option `-pthread' > > /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: > warning: auto-importing has been activated without --enable > -auto-import specified on the command line. > This should work unless it involves constant data > structures referencing > symbols from auto-imported DLLs.Info: resolving vtable > for ns3::PointerValueby linking to __imp___ZTVN3ns312PointerValueE > (auto-import) > Info: resolving vtable for ns3::EmptyAttributeValueby linking to > __imp___ZTVN3ns319EmptyAttributeValueE (auto-import) > Info: resolving vtable for ns3::UintegerValueby linking to > __imp___ZTVN3ns313UintegerValueE (auto-import) > Info: resolving vtable for ns3::StringValueby linking to > __imp___ZTVN3ns311StringValueE (auto-import) > > Ignore the g++ unrecognized option > Ignore the informational vtable messages. > > cd ns-3-dev > ./waf --regression > > Regression testing summary: > SKIP: 3 of 22 tests have been skipped (test-csma-bridge, > test-realtime-udp-echo, test-tcp-nsc-lfn) > PASS: 19 of 22 tests passed > > So, it actually works if you ignore all the errors. > > -- Craig > > > > From mathieu.lacage at sophia.inria.fr Sun Mar 22 00:26:36 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Sun, 22 Mar 2009 08:26:36 +0100 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> Message-ID: <1237706796.4874.6.camel@mathieu-laptop> On Fri, 2009-03-20 at 15:14 -0700, Pei, Guangyu wrote: > Mathieu, > > I have some questions about adding additional PHY models (such as > 802.11b/g) in ns-3. > > Currently, there is a YansWifiPhy, which aligns with 802.11a PHY. It > works together with interference-helper, yans-error-rate-model and > yans-wifi-channel. > > It seems to me that Yans model is generic and can be used as the bases > for the other PHY models. > > How about the following approach for adding additional PHY model? > > (1) generalize interference-helper based on PHY standard type: > > Instead of assuming 802.11a parameter, add a member variable "enum > WifiPhyStandard m_80211_standard". In > InterferenceHelper::CalculateTxDuration(), the TxDuration is calculated > based on m_80211_standard. For each standard type x, there should be a > "Configure80211xParameters" function. > > (2) add new PHY modes in wifi-phy (e.g., Get1mbb for 802.11b 1Mbps etc) > > (3) Add Chunk success rate functions in yans-error-rate-model based on > new modes added in WifiPhy. > > (4) In YansWifiPhy, the only thing need is to add Configure80211x() to > support YansWifiPhy::SetStandard for new 802.11x mode added. > > Is this approach acceptable? The pros of this approach is that new modes I think that this looks great. > can leverage Yans model heavily. As you can see only minor changes > needed for YansWifiPhy class. The cons of this approach may be that it > is not modular since it directly add new PHY models on top of Yans > model. It's ok in this case I think. > > Another approach is that each additional PHY mode is standalone module, > which has its own error-rate-model, interference-helper etc. But I see a > lot of overlapping codes for this approach. What are your thoughts for > this type of approach? > > Since Yans model seems to align with 802.11a well, what is the reason > not to call it 802.11a and set default parameters such as receiver > sensitivity more closely to the standard? What is your vision and plan > for adding other 802.11 PHY models within your current framework. I think that if all you want to do is add new models of the SNIR <-> PER calculation, either extending YansErrorRateModel or creating new subclasses of ErrorRateModel is fine. I originally envisioned that some people might want _very_ different models for a PHY model which do not require the use of an SNIR so, for these people, it would have made sense to derive from WifiPhy directly and re-implement everything. Mathieu From mathieu.lacage at sophia.inria.fr Sun Mar 22 00:36:01 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Sun, 22 Mar 2009 08:36:01 +0100 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: <200903211210.16060.timo.bingmann@student.kit.edu> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> <200903211210.16060.timo.bingmann@student.kit.edu> Message-ID: <1237707361.4874.16.camel@mathieu-laptop> On Sat, 2009-03-21 at 12:10 +0100, Timo Bingmann wrote: > On Friday 20 March 2009 23:14:28 Pei, Guangyu wrote: > > Mathieu, > > Hi there, I'm currently writing my diploma thesis and it will contain > a ton of info on the PHY layers in ns-3. In my private repo I cloned > YansWifiPhy to create Ns2ExtWifiPhy for ns-2-similar or equal > reception. Oh, this is cool. It would be nice to see this code to try to see if we can merge it at some point. > > I have some questions about adding additional PHY models (such as > > 802.11b/g) in ns-3. > > I believe you are wanting to add new WifiModes, not actually a new PHY > model. yes, I think so. > I guess this is the place to add BER formulas to add b/g modes. See > YansErrorRateModel::GetChunkSuccessRate(). yes. > > The rest below is about organization of the WifiMode class and what it > is for. I did some work on that, but never finished as more important > things intervened. Here the idea on that work: > > My perception is that WifiMode is used for two separate purposes: once > by MAC layer to tell the PHY which transmission schema it should use. > And once to indicate the PHY modulation mode. > > These are not identical as even the simpler 802.11a OFDM modes show: > the preamble and header are differently modulated than the payload. > Currently this is modeled by setting > InterferenceHelper::m_longPlcpHeaderMode and using it at the right > places. I was expecting that the MAC layer would pass two different mode arguments to set this on a per-transmission basis if it was needed. > For my part: all these methods don't belong into an interference > helper. > > However if CalcTxDuration is a method of a WifiMode or of a WifiPhy is > an open issue. This depends on how tightly a WifiMode is bound to a > specific WifiPhy, in my opinion very tightly. In that case TxDuration > is fully defined by the WifiMode. There are naming issues here but, what matters is that the MAC layer can specify tx parameters in a way which is as abstracted as possible from the PHY layer because the goal is to be able to replace the PHY layer. > > (2) add new PHY modes in wifi-phy (e.g., Get1mbb for 802.11b 1Mbps > etc) > > Definitely. Interesting issue is how many to actually list. Especially > with 10 MHz bandwidth and whether to include the frequency in the > WifiMode. That would yield lots of modes. I mean of course only one > frequency per band. Yes, this is a good question. > The main advantage of also listing frequencies is for answering user > questions like "does ns-3 support 802.11p in 5.9GHz ?". Nothing > changes, only the frequency. But listing them as extra modes > forestalls user questions :) Yes, we need a way for users to specify the frequency band but I thought that WifiPhy::SetFrequency would be enough because I can't imagine any hardware which is able to change the frequency band on a per-packet basis. If there is such hardware around or if the goal is to modelize such hypothetical hardware, then, you need to add an extra parameter to WifiPhy::StartTransmission and, if you want to encapsulate all of the tx parameters in a single object, that would be fine with me, but you need to pick a good name for this object/structure. > I did some test coding some time ago: > https://idlebox.net/2008/ns-3-wifi/code/ns-3-wifimode/ > > And created WifiModulation and changed all code accordingly. It all > works ok. > However more important things stalled that branch. > I manged to remove WifiPreamble from all higher MAC layers (Yay!) I will try to review this at some point: sorry for not getting to this in time. Mathieu From nbaldo at cttc.es Sun Mar 22 09:14:45 2009 From: nbaldo at cttc.es (Nicola Baldo) Date: Sun, 22 Mar 2009 17:14:45 +0100 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: <1237707361.4874.16.camel@mathieu-laptop> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> <200903211210.16060.timo.bingmann@student.kit.edu> <1237707361.4874.16.camel@mathieu-laptop> Message-ID: <49C663F5.40402@cttc.es> Hi all, >> However if CalcTxDuration is a method of a WifiMode or of a WifiPhy is >> an open issue. This depends on how tightly a WifiMode is bound to a >> specific WifiPhy, in my opinion very tightly. In that case TxDuration >> is fully defined by the WifiMode. I think it is interesting to see how things are in real devices. I have some familiarity with the old intersil HFA3863 chipset, which implements the baseband part of the 802.11b PHY. You can find the datasheet here: http://www.datasheetcatalog.org/datasheets2/31/312321_1.pdf The way the MAC and the PHY interact with each other for TX is summarized on page 10, right column, where the Configuration Register involved in the TX phase are described. Basically, the MAC is required to have some prior knowledge of the PHY modes which are available, and of the duration of the transmission for each mode. I think that this type of shared knowledge between MAC and PHY would be better modeled if CalcTxDuration() were a member of WifiMode. > > There are naming issues here but, what matters is that the MAC layer can > specify tx parameters in a way which is as abstracted as possible from > the PHY layer because the goal is to be able to replace the PHY layer. > I absolutely agree and strongly support this approach. >>> (2) add new PHY modes in wifi-phy (e.g., Get1mbb for 802.11b 1Mbps >> etc) >> >> Definitely. Interesting issue is how many to actually list. Especially >> with 10 MHz bandwidth and whether to include the frequency in the >> WifiMode. That would yield lots of modes. I mean of course only one >> frequency per band. > > Yes, this is a good question. > >> The main advantage of also listing frequencies is for answering user >> questions like "does ns-3 support 802.11p in 5.9GHz ?". Nothing >> changes, only the frequency. But listing them as extra modes >> forestalls user questions :) > > Yes, we need a way for users to specify the frequency band but I thought > that WifiPhy::SetFrequency would be enough because I can't imagine any > hardware which is able to change the frequency band on a per-packet > basis. If there is such hardware around or if the goal is to modelize > such hypothetical hardware, then, you need to add an extra parameter to > WifiPhy::StartTransmission and, if you want to encapsulate all of the tx > parameters in a single object, that would be fine with me, but you need > to pick a good name for this object/structure. > Such a hardware is for instance Calradio: http://calradio.calit2.net/calradio1a.htm For those who are not familiar with it, Calradio is an experimental platform with a 802.11b PHY and a fully customizable MAC layer written in C code which runs on a DSP. The PHY in particular is based on two components: the baseband module (the Intersil HFA3863 chipset I mentioned earlier) and the RF module (based on the Maxim MAX2820 chipset). In Calradio, the setting of the PHY mode belongs to the baseband module, whereas the setting of the frequency to be used belongs to the RF module. Both these settings are performed by writing to appropriate configuration registers when desired. As a consequence, per-packet frequency selection can be implemented by setting a new frequency just prior to transmission. I would like to point out that in this case the baseband module, which is responsible for handling the PHY mode (i.e., preamble, modulation and coding) is completely unaware of the frequency that will be used for transmission. I think that for ns3 too we should keep these two issues separate. In other words, I do not agree that adding a frequency attribute to WifiMode is a good idea. WifiMode is used to calculate TX duration, and for error modeling purposes. The frequency setting does not play any role into these issues. Regards, Nicola From mathieu.lacage at sophia.inria.fr Sun Mar 22 09:36:51 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Sun, 22 Mar 2009 17:36:51 +0100 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: <49C663F5.40402@cttc.es> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> <200903211210.16060.timo.bingmann@student.kit.edu> <1237707361.4874.16.camel@mathieu-laptop> <49C663F5.40402@cttc.es> Message-ID: <1237739811.6923.6.camel@mathieu-laptop> On Sun, 2009-03-22 at 17:14 +0100, Nicola Baldo wrote: > Such a hardware is for instance Calradio: > http://calradio.calit2.net/calradio1a.htm > > For those who are not familiar with it, Calradio is an experimental > platform with a 802.11b PHY and a fully customizable MAC layer written > in C code which runs on a DSP. The PHY in particular is based on two > components: the baseband module (the Intersil HFA3863 chipset I > mentioned earlier) and the RF module (based on the Maxim MAX2820 chipset). Not that I don't care about this kind of hardware but, really, the goal of the ns-3 PHY module is to modelize real hardware :) (more on this below) > In Calradio, the setting of the PHY mode belongs to the baseband module, > whereas the setting of the frequency to be used belongs to the RF > module. Both these settings are performed by writing to appropriate > configuration registers when desired. As a consequence, per-packet > frequency selection can be implemented by setting a new frequency just > prior to transmission. I would be curious to know how much time it takes to make the RF baseband actually perform the frequency switch. I suspect that this delay is sufficiently long that frequency switches on a per-packet basis are not practical and I suspect that this is also the case in real hardware and I also suspect that the cost of building hardware which can do this for 802.11 is sufficiently high that it would prohibit any real deployment. But, well, the real issue here is that the goal of the current codebase is to modelize real 802.11 systems where per-packet frequency switches are simply not feasible so, I would tend to happily ignore this possibility for now. Mathieu From lentracy at u.washington.edu Sun Mar 22 13:55:15 2009 From: lentracy at u.washington.edu (Leonard Tracy) Date: Sun, 22 Mar 2009 13:55:15 -0700 Subject: [Ns-developers] Underwater acoustic module for NS-3 In-Reply-To: <1237739881.6923.7.camel@mathieu-laptop> References: <6c14d5550810131948x6272d17ap11af76cc9074733@mail.gmail.com> <1225180259.715.126.camel@localhost.localdomain> <6c14d5550903220117v54a259c0u2a83578bfad1ffcc@mail.gmail.com> <1237739881.6923.7.camel@mathieu-laptop> Message-ID: <6c14d5550903221355t755ea845ncdbdb9e9c26ab299@mail.gmail.com> Hi Everybody, I've been working on an NS3 model for simulation of wireless underwater acoustic network simulation. My ultimate goal is to develop a general framework that can be used to model a variety of different underwaterscenarios (e.g. research new MAC layers with various underlying PHY/channel models). To this end, I've followed the design model of the wifi module included in current NS3 releases (with some pointers from Mathieu) with some modifications to account for the difference in intended purpose. Although this work is still ongoing, I'd like to submit my progress thus far for design review. I still have several tasks on my todo list including a doxygen writeup of the model, and improving the commenting of several recently added classes. I also plan on simplifying the implementation of the Bellhop propagation model (UanPropModelBh) as I more or less copied this from some previous ns2 work I did, and I plan to implement a PER model which makes use of the detailed propagation information for the WHOI micromodem. Comments on the code and/or the model design would be greatly appreciated. The code repository is available at http://freehg.org/u/ltracy/ns3-uan Thanks, Leonard Tracy From ruben at net.t-labs.tu-berlin.de Sun Mar 22 15:11:06 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Sun, 22 Mar 2009 23:11:06 +0100 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: <1237739811.6923.6.camel@mathieu-laptop> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> <200903211210.16060.timo.bingmann@student.kit.edu> <1237707361.4874.16.camel@mathieu-laptop> <49C663F5.40402@cttc.es> <1237739811.6923.6.camel@mathieu-laptop> Message-ID: <49C6B77A.2020409@net.t-labs.tu-berlin.de> Hi, Comments below, On 3/22/09 5:36 PM, Mathieu Lacage wrote: > On Sun, 2009-03-22 at 17:14 +0100, Nicola Baldo wrote: > >> Such a hardware is for instance Calradio: >> http://calradio.calit2.net/calradio1a.htm >> >> For those who are not familiar with it, Calradio is an experimental >> platform with a 802.11b PHY and a fully customizable MAC layer written >> in C code which runs on a DSP. The PHY in particular is based on two >> components: the baseband module (the Intersil HFA3863 chipset I >> mentioned earlier) and the RF module (based on the Maxim MAX2820 chipset). > > Not that I don't care about this kind of hardware but, really, the goal > of the ns-3 PHY module is to modelize real hardware :) (more on this > below) > >> In Calradio, the setting of the PHY mode belongs to the baseband module, >> whereas the setting of the frequency to be used belongs to the RF >> module. Both these settings are performed by writing to appropriate >> configuration registers when desired. As a consequence, per-packet >> frequency selection can be implemented by setting a new frequency just >> prior to transmission. > > I would be curious to know how much time it takes to make the RF > baseband actually perform the frequency switch. I suspect that this > delay is sufficiently long that frequency switches on a per-packet basis > are not practical and I suspect that this is also the case in real > hardware and I also suspect that the cost of building hardware which can > do this for 802.11 is sufficiently high that it would prohibit any real > deployment. Erm, I would not be so sure, The following paper, "Understanding and mitigating the impact of RF interference on 802.11 networks" at http://www.intel-research.net/Publications/Seattle/020520071626_397.pdf claims a 250 us channel hopping time and it appears from Section 6.1 that they actually implemented the scheme. So, I believe per-packet frequency switches are feasible. Ruben > But, well, the real issue here is that the goal of the current codebase > is to modelize real 802.11 systems where per-packet frequency switches > are simply not feasible so, I would tend to happily ignore this > possibility for now. > > Mathieu > From wangm624 at gmail.com Sun Mar 22 21:03:05 2009 From: wangm624 at gmail.com (Miao Wang) Date: Sun, 22 Mar 2009 23:03:05 -0500 Subject: [Ns-developers] Question of Google Summer of Code 2009 Message-ID: Hi Admins, I have read the idea list of the summer code 2009 and found that there was an idea of implementing P2P protocols. I have developed my own P2P streaming simulator, which is event-driven and packet-level. So I plan to implement the most popular P2P streaming protocols for NS-3. But I did not find any requirement of P2P protocols in NS-3. Can you provide me some requirements or any related information for me to compose my proposal for summer code 2009? Thanks! Miao From boyko at iitp.ru Mon Mar 23 03:49:32 2009 From: boyko at iitp.ru (Pavel Boyko) Date: Mon, 23 Mar 2009 13:49:32 +0300 Subject: [Ns-developers] 802.11s code review In-Reply-To: <1237218692.31135.417.camel@diese.inria.fr> References: <1237211604.31135.393.camel@diese.inria.fr> <200903161839.02116.boyko@iitp.ru> <1237218692.31135.417.camel@diese.inria.fr> Message-ID: <200903231349.33864.boyko@iitp.ru> Hi, On Monday 16 March 2009 18:51:32 Mathieu Lacage wrote: > > architecture description (can I do this on nsnam wiki?) for review. I > > hope it > > Yes, of course. > > > will answer your questions about bridging, ports, peer management, etc. > > Great ! Please approve my wiki login, Pavlo, and I'll publish architecture for review. Regards, Pavel Boyko From mathieu.lacage at sophia.inria.fr Mon Mar 23 07:12:35 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 23 Mar 2009 15:12:35 +0100 Subject: [Ns-developers] olsr rework Message-ID: <1237817555.23686.33.camel@diese.inria.fr> hi, As a preparation for the ipv4 rework for next release, I did a first set of changes to olsr to move the call to Ipv4::AddRoutingProtocol from the olsr-agent-impl.cc file to olsr-helper.cc. What has changed: 1) removed olsr::Agent 2) renamed olsr::AgentImpl to olsr::RoutingProtocol 3) made olsr::RoutingProtocol derive from Ipv4RoutingProtocol instead of olsr::Agent There was an ipv4 memory management bug to fix to make the above simple file shuffling work which I pushed to ns-3-dev earlier today. This tree (http://code.nsnam.org/mathieu/ns-3-olsr) passes all regression tests and is API compatible. I am not really looking forward merging this now because I don't really want to handle any potential fallouts (although I am convinced there won't be any) but, I would like feedback to be ready to merge this as soon as our next release ships. Gustavo ? Mathieu From ruturajmd at gmail.com Mon Mar 23 08:59:37 2009 From: ruturajmd at gmail.com (Ruturaj Dhekane) Date: Mon, 23 Mar 2009 21:29:37 +0530 Subject: [Ns-developers] GSoc-Projects. Message-ID: <955e31df0903230859u7b455b99k502ec49882e9a5f1@mail.gmail.com> Hi, I am Ruturaj Dhekane Final yr. Under Grad. Computer Sci. and Engg. National Institute Of Technology. India. I am aiming to apply for the projects 1.RealTime Distributed Simulation (RTDS) 2.Fragmentation and MTU, path Discovery support. I would like to know the exact specifications/requirements of RTDS project. As I see it, We have part instances of a deployment running on each node of a network. The system must be synchronized real time. and each part of network interact with the other in real time to provide results. The Computation is hence reduced per node. The requirements are to implement a layer to encapsulate the Distributed System, thus making the working transparent to the programmer. Followed by RPC based communication interface using RPyC for the system to synchronize. Fragmentation/MTU path Discovery would need implementation of a layer to extract packet, find the MTU for the following network, fragmentation if necessary. MTU requires similar approach except the use of ICMP's to check the path MTU. I would like to have a little more specification, as in what the mentors expect from me. (guidelies sorta) , so as to plan out my milestones/timeline. Also some information regarding framing of the Application will be helpful. I am good at C/C++ python, with a good experience. Presently I am working on research project at Bachelor level, on Wireless Sensor Networks, which required simulation. During this I played with NS-3, initially. Presently the simulation is being carried out in Ptolemy. Regards Ruturaj. -- [Geekru2] From raj.b at gatech.edu Mon Mar 23 11:12:06 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 23 Mar 2009 14:12:06 -0400 Subject: [Ns-developers] George's netanim changes Message-ID: <12d69e490903231112g1b9b9790l621db7bca1c0de3a@mail.gmail.com> George's initial animation code required changes to the core of ns-3 to support the kind of traces he needed for PointToPoint animation. Since then, the trace sources have changed drastically thanks to Craig's tracing rework. So, it looks like the new trace sources provide all of the information needed by George's animator to perform animation. I refactored George's tree, such that no modifications to the rest of ns-3 were required: http://code.nsnam.org/raj/ns-3-netanim/ Pushing this was planned for ns-3.4. Is there any feedback on the changes? It basically provides another pcap tracing like interface for making NetAnim trace files, which can be animated by George's standalone animator. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From mathieu.lacage at sophia.inria.fr Mon Mar 23 11:51:25 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 23 Mar 2009 19:51:25 +0100 Subject: [Ns-developers] George's netanim changes In-Reply-To: <12d69e490903231112g1b9b9790l621db7bca1c0de3a@mail.gmail.com> References: <12d69e490903231112g1b9b9790l621db7bca1c0de3a@mail.gmail.com> Message-ID: <1237834285.5907.3.camel@mathieu-laptop> Although it's not a requirement for merges in src/contrib, it would be nice to follow the ns-3 coding style: 1) one statement per line: if (foo) x should be rewritten as: if (foo) { x } 2) proper indent: if (foo) { } should be: if (foo) { // } On Mon, 2009-03-23 at 14:12 -0400, Raj Bhattacharjea wrote: > George's initial animation code required changes to the core of ns-3 > to support the kind of traces he needed for PointToPoint animation. > Since then, the trace sources have changed drastically thanks to > Craig's tracing rework. So, it looks like the new trace sources > provide all of the information needed by George's animator to perform > animation. I refactored George's tree, such that no modifications to > the rest of ns-3 were required: > > http://code.nsnam.org/raj/ns-3-netanim/ > > Pushing this was planned for ns-3.4. Is there any feedback on the > changes? It basically provides another pcap tracing like interface > for making NetAnim trace files, which can be animated by George's > standalone animator. > From riley at ece.gatech.edu Mon Mar 23 12:18:01 2009 From: riley at ece.gatech.edu (George Riley) Date: Mon, 23 Mar 2009 15:18:01 -0400 Subject: [Ns-developers] George's netanim changes In-Reply-To: <1237834285.5907.3.camel@mathieu-laptop> References: <12d69e490903231112g1b9b9790l621db7bca1c0de3a@mail.gmail.com> <1237834285.5907.3.camel@mathieu-laptop> Message-ID: > Although it's not a requirement for merges in src/contrib, it would be > nice to follow the ns-3 coding style: > > 1) one statement per line: > if (foo) x > should be rewritten as: > if (foo) > { > x > } The coding standard specifically allows the single statement "IF" statement as above. > > > 2) proper indent: > if (foo) > { > } > should be: > if (foo) > { > // > } Yes, it should be indented as you say; don't know what happened there because my emacs always indents properly. George > > > > > On Mon, 2009-03-23 at 14:12 -0400, Raj Bhattacharjea wrote: >> George's initial animation code required changes to the core of ns-3 >> to support the kind of traces he needed for PointToPoint animation. >> Since then, the trace sources have changed drastically thanks to >> Craig's tracing rework. So, it looks like the new trace sources >> provide all of the information needed by George's animator to perform >> animation. I refactored George's tree, such that no modifications to >> the rest of ns-3 were required: >> >> http://code.nsnam.org/raj/ns-3-netanim/ >> >> Pushing this was planned for ns-3.4. Is there any feedback on the >> changes? It basically provides another pcap tracing like interface >> for making NetAnim trace files, which can be animated by George's >> standalone animator. >> > From mathieu.lacage at sophia.inria.fr Mon Mar 23 12:34:42 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 23 Mar 2009 20:34:42 +0100 Subject: [Ns-developers] George's netanim changes In-Reply-To: References: <12d69e490903231112g1b9b9790l621db7bca1c0de3a@mail.gmail.com> <1237834285.5907.3.camel@mathieu-laptop> Message-ID: <1237836882.5907.30.camel@mathieu-laptop> On Mon, 2009-03-23 at 15:18 -0400, George Riley wrote: > > Although it's not a requirement for merges in src/contrib, it would be > > nice to follow the ns-3 coding style: > > > > 1) one statement per line: > > if (foo) x > > should be rewritten as: > > if (foo) > > { > > x > > } > The coding standard specifically allows the single statement > "IF" statement as above. The document indeed allows specifically this construct and I was not aware of this special rule: thanks for pointing it out to me. I would like to suggest that the document be updated to match the state of 90% of the existing codebase to increase consistency rather than decrease it. Mathieu From mathieu.lacage at sophia.inria.fr Mon Mar 23 13:32:27 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Mon, 23 Mar 2009 21:32:27 +0100 Subject: [Ns-developers] tag rework for next release Message-ID: <1237840347.5907.60.camel@mathieu-laptop> hi, code: http://code.nsnam.org/mathieu/ns-3-tags As a preparation for the ipv4 rework for next release, I finally spent some time to try to deal with some of the issues around the tag API: there are now two types of tags for each packet: 'packet' tags vs 'byte' tags. Their semantics are slightly different to try to solve two different use-cases: 1) byte tags could be typically used for flow ids: they will be preserved across packet fragmentation and aggregation. byte tags can be added to a packet but they can't be removed piecemeal: you have to remove them all all at once or not at all. 2) packet tags will typically be used for cross-layer interactions (they are presently used, for example, to convey the ipv4 ttl from the udp layer to the ipv4 layer). They could be used to convey qos tids from applications to a wifi layer. They can be removed one by one. The implementation is optimized to be really efficient when the tag removed is the last tag added (just like a stack). API is all in src/common/packet.h: void AddPacketTag (const Tag &tag) const; bool RemovePacketTag (Tag &tag); bool PeekPacketTag (Tag &tag) const; void RemoveAllPacketTags (void); void PrintPacketTags (std::ostream &os) const; PacketTagIterator GetPacketTagIterator (void) const; void AddByteTag (const Tag &tag) const; bool FindFirstMatchingByteTag (Tag &tag) const; void RemoveAllByteTags (void); void PrintByteTags (std::ostream &os) const; ByteTagIterator GetByteTagIterator (void) const; Comments would be welcome, Mathieu From craigdo at ee.washington.edu Mon Mar 23 15:15:07 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Mon, 23 Mar 2009 15:15:07 -0700 Subject: [Ns-developers] George's netanim changes In-Reply-To: <1237836882.5907.30.camel@mathieu-laptop> References: <12d69e490903231112g1b9b9790l621db7bca1c0de3a@mail.gmail.com><1237834285.5907.3.camel@mathieu-laptop> <1237836882.5907.30.camel@mathieu-laptop> Message-ID: <004f01c9ac04$d2cc49a0$a3d75f80@ee.washington.edu> > -----Original Message----- > From: ns-developers-bounces at ISI.EDU > [mailto:ns-developers-bounces at ISI.EDU] On Behalf Of Mathieu Lacage > Sent: Monday, March 23, 2009 12:35 PM > To: George Riley > Cc: ns-developers at ISI.EDU > Subject: Re: [Ns-developers] George's netanim changes > > On Mon, 2009-03-23 at 15:18 -0400, George Riley wrote: > > > Although it's not a requirement for merges in > src/contrib, it would be > > > nice to follow the ns-3 coding style: > > > > > > 1) one statement per line: > > > if (foo) x > > > should be rewritten as: > > > if (foo) > > > { > > > x > > > } > > The coding standard specifically allows the single statement > > "IF" statement as above. > > The document indeed allows specifically this construct and I was not > aware of this special rule: thanks for pointing it out to me. We went over this some time ago and agreed that we should brace-ize the if. However we also agreed that the most evil thing to prevent is the following: if (foo) x; which leads to people (especially if they've been corrupted by python :-) wandering by and doing: if (foo) x; y; > I would like to suggest that the document be updated to match > the state > of 90% of the existing codebase to increase consistency rather than > decrease it. +1 I already do the full brace deal always, even though it is sometimes very verbose. -- Craig From tjkopena at cs.drexel.edu Mon Mar 23 18:39:26 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Mon, 23 Mar 2009 21:39:26 -0400 Subject: [Ns-developers] GSoc-Projects. In-Reply-To: <955e31df0903230859u7b455b99k502ec49882e9a5f1@mail.gmail.com> References: <955e31df0903230859u7b455b99k502ec49882e9a5f1@mail.gmail.com> Message-ID: <13786f330903231839x5351435atc1356a16dc770a30@mail.gmail.com> On Mon, Mar 23, 2009 at 11:59 AM, Ruturaj Dhekane wrote: > I would like to know the exact specifications/requirements of RTDS project. Hi Ruturaj, This is the initial sketch for that project idea, which has a little more information: ------- Description: run multiple instances of ns-3 on multiple physical machines interconnected by an ip network, each instance is running a realtime simulation, and they can all send and receive packets to each other through UDP-based tunnels over the physical interconnection between each machine. This project requires the implementation of a UDP-based (a TCP option would be nice) tunneling mechanism implemented in a RtTunnelNetDevice which performs UDP encapsulation of outgoing packets and UDP decapsulation of incoming packets. Each simulator instance will require a map from simulated IP addresses to physical IP+port numbers. Simulation setup, initialization, and configuration should be done with RPYC (http://rpyc.wikidot.com/). The initial implementation should be able to run on a single physical host with multiple instances of the RPYC daemon to control the multiple instances of the simulator on this single host. The student will be given access to a cluster to test and implement deployment on multiple physical hosts. ------- As I understand it, one key idea here is to develop some parallel computation abilities, but in a simpler fashion than parallelizing the core scheduler. I.e., there's a much more distinct and simpler division of the processing along the simulated nodes and the real-world exchange happening at the packet level, rather than arbitrary parallelization and scheduler level exchange. Developing a good plan for this would require thinking about how the simulation will be divided and what components will be required to connect those divisions, as well as where those components will be plugged in to the existing code. It will also require looking at RPYC to get a handle on how the simulation will be managed. > Fragmentation/MTU path Discovery would need implementation of a layer to > extract packet, find the MTU for the following network, fragmentation if > necessary. MTU requires similar approach except the use of ICMP's to check > the path MTU. There are three parts here: - Extend the core packet handling if necessary to better support fragmentation (most of that is there already). - Extend the IPv4 stack to support max transfer unit limits and actually implement fragmentation along the path and reassembly at the end. - As time allows, look at IPv6 support, which requires probing the entire path for MTU limits as all fragmentation and reassembly happens at the end points. This is in contrast to IPv4, where fragmentation may occur along the path. Developing a good plan for this would require first looking at what support is there (e.g., in Packet) and what is not (e.g., IP reassembly). > Also some information regarding framing of the Application will be helpful. I'm not sure quite what you mean here, but there are notes about the application template---what information it should include---on the project ideas page [1]. Thx [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects -- - joe kopena right here and now From tjkopena at cs.drexel.edu Mon Mar 23 18:44:22 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Mon, 23 Mar 2009 21:44:22 -0400 Subject: [Ns-developers] Question of Google Summer of Code 2009 In-Reply-To: References: Message-ID: <13786f330903231844o1bc6577fy385910e74ad7e4de@mail.gmail.com> On Mon, Mar 23, 2009 at 12:03 AM, Miao Wang wrote: > I have read the idea list of the summer code 2009 and found that there was > an idea of implementing P2P protocols. > > I have developed my own P2P streaming simulator, which is event-driven and > packet-level. So I plan to implement the most popular P2P streaming > protocols for NS-3. But I did not find any requirement of P2P protocols in > NS-3. > > Can you provide me some requirements or any related information for me to > compose my proposal for summer code 2009? Hi Miao, We are currently working on potentially lining up a mentor particularly interested in P2P issues, and more concrete project ideas. Either way, you are free to submit a proposal for a P2P project, with the caveat that without a mentor particularly interested in that area the proposal would have to be stellar to be a compelling selection. In any event, any P2P oriented project would have to be of interest to a wide variety of potential users and have broad appeal. Implementing commonly cited and studied protocols or porting some of the well known frameworks or implementations would fall under that category. Implementing more niche protocols or working on new research topics would not be a primary goal of the GSoC efforts, though clearly any success should feed directly into that sort of work. -- - joe kopena right here and now From tjkopena at cs.drexel.edu Mon Mar 23 19:00:52 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Mon, 23 Mar 2009 22:00:52 -0400 Subject: [Ns-developers] Application for Click Modular Router Integration Re: Google Summer of Code 2009 In-Reply-To: References: <13786f330903181517r3a492340v3de224f670dc6763@mail.gmail.com> Message-ID: <13786f330903231900l1022c282va884105fc234d23a@mail.gmail.com> 2009/3/23 swark : > ????The following is my application. I am eager to participate in > GoSC2009?of NS-3.?Would you please give me some advices and help? Hi Shaowei, My initial impression, especially given the discussion last week, is that you're trying to morph the Click topic to support work on P2P, which is really not the intent. I believe there will be sufficient work involved in porting Click to make this project challenging without trying to additionally incorporate more focus on P2P work. While large scale P2P simulation and protocols are of interest to the group, they don't fit well with this topic. Beyond that, and for anyone else following along, a truly well developed application will incorporate some notion of the technical approach required. Noting that a module will be developed to connect Click and ns-3 really does nothing more than restate the very basic project idea. A very solid proposal in this area will outline some key components in ns-3 and Click, identify what has to be connected where, and some idea on how that might be done. All of us are very willing to work on the list to develop those ideas, but the applicants really need to start and drive that discussion and show that they are engaged and thinking about how they will implement the project. That kind of plan is also critical for developing a realistic, feasible development plan that has more meaning than arbitrarily and unrealistically allocating weeks to high level goals. Thx! -- - joe kopena right here and now From raj.b at gatech.edu Mon Mar 23 20:02:09 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 23 Mar 2009 23:02:09 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Monday, March 23, 2009 Message-ID: <12d69e490903232002n88e0a7cp9af4a05f93d460ba@mail.gmail.com> Dear All, Here is your daily update regarding the upcoming release. ?The bulk of the information will be kept up-to-date here: http://www.nsnam.org/wiki/index.php/Ns-3.4 I will keep emailing out this link along with status changes. Note that this link might be a little stale right now. I'll update it tomorrow. This email, however, will be accurate to the best of my knowledge. News: ===== ns-3.4-RC2 has been made! ?It is available at the following locations: All-in-one Tarball: http://www.nsnam.org/releases/ns-allinone-3.4-RC2.tar.bz2 Mercurial: http://code.nsnam.org/ns-3.4-RC2/ We are on course to making the release schedule; the slated date is April 1st. Bugs: ===== There are now 6 P1 bugs in the tracker, and 5 lower priority P2 bugs. ?Note that the wiki buglist is not up to date, so I won't include it here. ?Three of the remaining involve the Cygwin build; these are (according to Craig) non-fatal errors for the build, i.e. ns-3.4 builds on Cygwin, BUT it spits out error messages. Please beat on RC2 to make sure things work, and then file bugs in the tracker if you find any errors. The three TCP bugs are still P1, and being worked on through the RC process. I have decided to leave them this way and make the RC anyway, with minimal P1 bugs in the tracker. Progress / Closed Bugs: ======================= One P2 bug was closed out (458 socket attributes not hooked into the config namespace). A P1 bug was found in the Craig's new trace sources (526), and also fixed. New Bugs: ========= Bug 526 was filed, fixed, and closed already. Also, an non-reproducible bug (527) was filed, but closed out as INVALID. Next Steps: =========== The next release candidate is slated for Thursday; A full schedule of upcoming milestones can be found here: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule The TCP bugs and Cygwin issues need to be resolved before the final release can be made. Thanks everyone! -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From mathieu.lacage at sophia.inria.fr Tue Mar 24 00:42:35 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 24 Mar 2009 08:42:35 +0100 Subject: [Ns-developers] GSoc-Projects. In-Reply-To: <955e31df0903230859u7b455b99k502ec49882e9a5f1@mail.gmail.com> References: <955e31df0903230859u7b455b99k502ec49882e9a5f1@mail.gmail.com> Message-ID: <1237880555.21524.13.camel@diese.inria.fr> On Mon, 2009-03-23 at 21:29 +0530, Ruturaj Dhekane wrote: > I would like to know the exact specifications/requirements of RTDS project. A good way to figure out how to start on this project would be to look at a simple case first: you want to run a simulation with two simulated nodes interconnected by a single link. Each simulated node should run a separate physical machine. Assume that each physical machine is connected to the internet, that each of them has a routable ip address. All packets going out of simulated node A should go through the internet to simulated node B. Effectively, the internet connection between the two physical machines will be the single link between the two simulated nodes. The idea in this project is to: 1) run both simulated nodes using the real time event scheduler 2) encapsulate all packets from one simulated node to the other through a udp or tcp connection to send them across the internet. Once you have figured out how to make this work for two simulated nodes connected with a single link, you need to extend the solution to 3 simulated nodes with 2 links ( A -- B -- C) and 2 physical machines (A+B on one physical machine, C on another physical machine). Mathieu From boyko at iitp.ru Tue Mar 24 00:46:49 2009 From: boyko at iitp.ru (Pavel Boyko) Date: Tue, 24 Mar 2009 10:46:49 +0300 Subject: [Ns-developers] Mesh module arch review Message-ID: <200903241046.49884.boyko@iitp.ru> Hi! As I've promised, our NS-3 L2 mesh effort (including 802.11s) architecture is ready for your captious review on wiki: http://www.nsnam.org/wiki/index.php/Mesh I will be very grateful for any critics, comments, questions, corrections and suggestions. The arch described is implemented, now we are refactoring 802.11s protocols according to it. Regards, Pavel Boyko, IITP RAS From akshay.kashyap at gatech.edu Mon Mar 23 18:23:18 2009 From: akshay.kashyap at gatech.edu (Akshay Kashyap) Date: Mon, 23 Mar 2009 21:23:18 -0400 Subject: [Ns-developers] Google Summer - Routing Queues Project Message-ID: <49C83606.9070402@gatech.edu> Hi everybody, I was looking through the project specifications for nsnam, and I'm thinking of applying for the advanced routing queues project. I've worked with network simulators before (ns-2, Emulab, Click), so I was interested in porting and extending ns-2 capabilities to ns-3. I had a few quick questions regarding some of the project details; any feedback would be much appreciated. >From what I gathered, the current ns-3 implementation only implements the DropTail queueing aspect of ns-2. Other than the modules from ns-2 and the Linux kernel implementations, what other routing queues would need to be implemented? Would this also require extending support for ECN? An extension to the project could be adding support for deep packet inspection, perhaps useful in the context of rate-limiting studies of certain traffic (P2P, as is sometimes done). I'm not sure how feasible this might be, it seemed an interesting addition. :-) Does this seem like a worthy sub-project (if it isn't already implemented)? Thanks for your time and consideration. Best regards, Akshay From wangm624 at gmail.com Mon Mar 23 23:40:43 2009 From: wangm624 at gmail.com (Miao Wang) Date: Tue, 24 Mar 2009 01:40:43 -0500 Subject: [Ns-developers] Question of Google Summer of Code 2009 In-Reply-To: <13786f330903231844o1bc6577fy385910e74ad7e4de@mail.gmail.com> References: <13786f330903231844o1bc6577fy385910e74ad7e4de@mail.gmail.com> Message-ID: Hi Joseph: Thanks for your reply! In the past two years, I focused on the P2P Live Streaming System design and analysis. I developed several versions of P2P simulators, which implement many of the most popular protocols and some of my designed protocols. As you mentioned, the goal of NS-3 is to implement the well known protocols; thus my plan for the summer code is: Implementing the pull-based P2P live streaming framework with a Mesh Overlay, which is widely implemented in real streaming systems like UUSee, PPLive and PPStream. It includes several modules: 1. the overlay construction method (neighbor selection); 2. buffer level modeling and buffer map exchanging (simulate the buffer and buffer map in real system); 3. block scheduling algorithms, random, rarest first and one of the optimal block scheduling algorithms recognized by the community; 4. video coding interface for simulations with linear random network coding, layered coding etc. To sum up, I will implement the whole P2P streaming framework, which takes advantage of physical topology construction and network and transport layer protocols of NS-3. My work will be an integrated packet-level P2P streaming simulator with NS-3. I have most of the codes implemented with C++ and STL on hand. The only thing that I have to do is to figure out how to use the IP/TCP protocol in NS-3 to simulate the real packet transmission, since in my own simulators these transmissions are pointer passing with random time delay. I think all people who are interested in P2P streaming will benefit with my work. Some of the questions from beginners in P2P streaming research and my answers can be found: http://groups.google.com/group/p2framework. I appreciate any comments and suggestions and hope to finish this part during summer. After summer, I would like to add more protocols are widely cited to NS-3, such as PRIME etc. Thanks! Miao On Mon, Mar 23, 2009 at 8:44 PM, Joseph Kopena wrote: > On Mon, Mar 23, 2009 at 12:03 AM, Miao Wang wrote: > > I have read the idea list of the summer code 2009 and found that there > was > > an idea of implementing P2P protocols. > > > > I have developed my own P2P streaming simulator, which is event-driven > and > > packet-level. So I plan to implement the most popular P2P streaming > > protocols for NS-3. But I did not find any requirement of P2P protocols > in > > NS-3. > > > > Can you provide me some requirements or any related information for me to > > compose my proposal for summer code 2009? > > Hi Miao, > > We are currently working on potentially lining up a mentor > particularly interested in P2P issues, and more concrete project > ideas. Either way, you are free to submit a proposal for a P2P > project, with the caveat that without a mentor particularly interested > in that area the proposal would have to be stellar to be a compelling > selection. > > In any event, any P2P oriented project would have to be of interest to > a wide variety of potential users and have broad appeal. Implementing > commonly cited and studied protocols or porting some of the well known > frameworks or implementations would fall under that category. > Implementing more niche protocols or working on new research topics > would not be a primary goal of the GSoC efforts, though clearly any > success should feed directly into that sort of work. > > -- > - joe kopena > right here and now > From hrashk at yandex.ru Tue Mar 24 01:45:18 2009 From: hrashk at yandex.ru (Vaagn Khachatryan) Date: Tue, 24 Mar 2009 11:45:18 +0300 Subject: [Ns-developers] particpation in a GSOC 2009 project Message-ID: <7881237884318@webmail48.yandex.ru> Hello everyone, I've come across your project in my student's subject guide on networking and became very interested in it. The thing is that test software for living, and specifically I'm doing test automation among other things. For over a year my team is testing a rather complex back-end with lots of web services and relational databases. The more we test it, the more I have the feeling that many, if not most, of the issues could have been avoided had the system been implemented as a simulation model. I came across the notion of discrete event simulation in a book on UML a couple of months ago as part of my second year BSc studies. I have the feeling in my guts that this is what I'm looking for. The subject is interesting to me both from the perspective of my day-time job and from purely academic point of view. There is this idea to try and simulate complex corporate back-ends like those I'm testing at several levels. At a higher level the simulation helps make sense of the wild terrarium of design documents and UML diagrams. At a medium/lower level, which is closest to hand-on testing, the system can be simulated as a set of machines talking to each other via http/soap/jdbc/etc. The first thing that can be done is sniffing the network traffic of a typical flow through the system, feed the pcap files to NS and replay it in nam to get a better understanding of what's going on under the hood and test if it corresponds to the design documents. OK, enough of talk of testing ideas :-) A couple of days ago I stumbled upon the GSOC wiki and had a look at the list of ideas described there. I liked the Routing section most, especially the click modular router integration, and would like to participate in an NS-3 project to get the feeling of what the simulator is capable of and perhaps suggest/drive further improvements/additions to it. Geographically, I'm located in Moscow, Russia (GMT+3 timezone). I'm employed full time and realistically will able to dedicate 10-15 hours a week for a project. I'm also studying by correspondence at University of London, UK (there will be no studies in summer, of course). I'm open to discussion as to what project to work on if you will consider involving me in the GSOC program. I'd also be happy to contribute GSOC if you think the amount of time I'll be able to allocate will not be enough and/or my experience is inadequate. Cheers, Vaagn. From tjkopena at cs.drexel.edu Tue Mar 24 09:28:58 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Tue, 24 Mar 2009 12:28:58 -0400 Subject: [Ns-developers] GSoc: P2P Projects Message-ID: <13786f330903240928w6b1da28bt832e6924258b434c@mail.gmail.com> Hi folks, Marcello Caleffi has stepped forward to mentor a project on P2P systems, moving that into our priority project topics along with (in no particular order): Click integration, NSC, emulation, router models, MAC and PHY models. A project blurb has been added to the ideas page at [1]. Again, we stress that this project would focus on implementing or porting commonly used or cited work, protocols, and implementations. This is not an opening for a P2P research project, this is an opening to develop a toolset supporting a wide variety of P2P research projects. Thx again to Marcello! [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects -- - joe kopena right here and now From imadjm at yahoo.com Mon Mar 23 03:22:02 2009 From: imadjm at yahoo.com (Imad Mohamad) Date: Mon, 23 Mar 2009 03:22:02 -0700 (PDT) Subject: [Ns-developers] IP Header size Message-ID: <279015.48271.qm@web35503.mail.mud.yahoo.com> Dear Developers, ? I have two questions, It would be appreciated if you can advice (in ns-2.33):: 1. Is? there a possibility to change header size of IP-header during the run time(not during compilation time)? when sending IP/UDP/CBR packets (is here any conflict of any change in header size with setting of packetsize_ variable in TCL)? 2-There is tcpip_base_hdr_size_? variable ? in tcl/lib/ns-default , where is no equivalent field to setAny /change? IP/UDP header size, any explanatition please? Regards I.J MahD ?? From karan.verma86 at gmail.com Tue Mar 24 10:33:22 2009 From: karan.verma86 at gmail.com (karan verma) Date: Tue, 24 Mar 2009 23:03:22 +0530 Subject: [Ns-developers] GSoC 09: Reactive Routing Protocols Message-ID: <993601c10903241033h3436c58cxfb89003a2c9ec3a@mail.gmail.com> Hi I read the ideas list and found the project idea to implement reactive routing protocols for ns-3 very relevant to my interests and experience. Previously I have worked on glomosim to implement a fault tolerant routing protocol for manets, which involved learning from and modification of existing routing protocols like aodv and dsr. I request the mentors to highlight the challanges one would face while going through with the project; this would greatly help me make a good proposal. -- thanks & regards Karan Verma From mk.banchi at gmail.com Tue Mar 24 12:54:37 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Tue, 24 Mar 2009 20:54:37 +0100 Subject: [Ns-developers] Extending WifiHelper object Message-ID: <49C93A7D.7090206@gmail.com> Hi Mathieu, As you told me, i'm extending WifiHelper class in order to make easy setting of Msdu aggregators and also Edca parameters (minCw, maxCW ...) for each Qos station's queue. The discussed solution is the following: class WifiMacHelper { public: virtual Ptr Create (void) const = 0; }; class NqosWifiMacHelper : public WifiMacHelper { virtual Ptr Create (void) const; void SetType (std::string, std::string n0, const AttributeValue &v0, ...); void SetDcaParameter (?); }; class QosWifiMacHelper : public WifiMacHelper { virtual Ptr Create (void) const; void SetType (std::string, std::string n0, const AttributeValue &v0, ...); void SetMsduAggregatorForAc (AccessClass ac, std::string type, std::string n0, const AttributeValue &v0 ,...); void SetEdcaParameterForAc (?); }; class WifiHelper { ... NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const; }; As you can see the main problems are with parameter list of NqosWifiMacHelper::SetDcaParameter QosWifiMacHelper::SetEdcaParameter Which kind of parameter we should use? Even if ns3::EdcaTxopN has attributes like "MinCw", "MaxCw" etc, when SetEdcaParameter is called i haven't in hand the pointer to the specific queue yet. The problem is how to map a value to a specific attribute Thank you Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090324/a3ce610a/smime.bin From mathieu.lacage at sophia.inria.fr Wed Mar 25 00:56:32 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 25 Mar 2009 08:56:32 +0100 Subject: [Ns-developers] Extending WifiHelper object In-Reply-To: <49C93A7D.7090206@gmail.com> References: <49C93A7D.7090206@gmail.com> Message-ID: <1237967792.17312.5.camel@diese.inria.fr> On Tue, 2009-03-24 at 20:54 +0100, Mirko Banchi wrote: > Hi Mathieu, > > As you told me, i'm extending WifiHelper class in order to make easy > setting of Msdu aggregators and also Edca parameters (minCw, maxCW ...) > for each Qos station's queue. The discussed solution is the following: looks good. > class QosWifiMacHelper : public WifiMacHelper > { > virtual Ptr Create (void) const; > void SetType (std::string, > std::string n0, const AttributeValue &v0, > ...); > void SetMsduAggregatorForAc (AccessClass ac, std::string type, > std::string n0, const AttributeValue &v0 > ,...); > void SetEdcaParameterForAc (?); > }; > As you can see the main problems are with parameter list of > > NqosWifiMacHelper::SetDcaParameter > QosWifiMacHelper::SetEdcaParameter > > Which kind of parameter we should use? > > Even if ns3::EdcaTxopN has attributes like "MinCw", "MaxCw" etc, when > SetEdcaParameter is called i haven't in hand the pointer to the specific > queue yet. Can you do what you do already for SetMsduAggregatorForAc with a factory and create the EdcaTxop object from the helper rather than from the WifiMac object ? Mathieu From mk.banchi at gmail.com Wed Mar 25 03:15:46 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Wed, 25 Mar 2009 11:15:46 +0100 Subject: [Ns-developers] Extending WifiHelper object In-Reply-To: <1237967792.17312.5.camel@diese.inria.fr> References: <49C93A7D.7090206@gmail.com> <1237967792.17312.5.camel@diese.inria.fr> Message-ID: <49CA0452.1090106@gmail.com> Mathieu Lacage ha scritto: > On Tue, 2009-03-24 at 20:54 +0100, Mirko Banchi wrote: >> Hi Mathieu, >> >> As you told me, i'm extending WifiHelper class in order to make easy >> setting of Msdu aggregators and also Edca parameters (minCw, maxCW ...) >> for each Qos station's queue. The discussed solution is the following: > > looks good. > >> class QosWifiMacHelper : public WifiMacHelper >> { >> virtual Ptr Create (void) const; >> void SetType (std::string, >> std::string n0, const AttributeValue &v0, >> ...); >> void SetMsduAggregatorForAc (AccessClass ac, std::string type, >> std::string n0, const AttributeValue &v0 >> ,...); >> void SetEdcaParameterForAc (?); >> }; > >> As you can see the main problems are with parameter list of >> >> NqosWifiMacHelper::SetDcaParameter >> QosWifiMacHelper::SetEdcaParameter >> >> Which kind of parameter we should use? >> >> Even if ns3::EdcaTxopN has attributes like "MinCw", "MaxCw" etc, when >> SetEdcaParameter is called i haven't in hand the pointer to the specific >> queue yet. > > Can you do what you do already for SetMsduAggregatorForAc with a factory > and create the EdcaTxop object from the helper rather than from the > WifiMac object ? > It's a problem :( Because EdcaTxopN needs to know for which type of WifiMac objects is created. For example in QapWifiMac constructor: QapWifiMac::QapWifiMac () { ... m_voEdcaTxopN->SetTxOkCallback (MakeCallback (&QapWifiMac::TxOk, this)); m_voEdcaTxopN->SetTypeOfStation (AP); .... } Could be a solution define a constructor like this? QapWifiMac::QapWifiMac (Ptr voEdcaTxopN, Ptr viEdcaTxopN Ptr beEdcaTxopN Ptr bkEdcaTxopN) { ... m_voEdcaTxopN = voEdcaTxopN; m_viEdcaTxopN = viEdcaTxopN; m_beEdcaTxopN = beEdcaTxopN; m_bkEdcaTxopN = bkEdcaTxopN; ... } The same for QstaWifiMac, NqapWifiMac, NqstaWifiMac, AdhocWifiMac, QadhocWifiMac do you agree with this solution? Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090325/653868bf/smime.bin From mathieu.lacage at sophia.inria.fr Wed Mar 25 03:44:50 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Wed, 25 Mar 2009 11:44:50 +0100 Subject: [Ns-developers] Extending WifiHelper object In-Reply-To: <49CA0452.1090106@gmail.com> References: <49C93A7D.7090206@gmail.com> <1237967792.17312.5.camel@diese.inria.fr> <49CA0452.1090106@gmail.com> Message-ID: <1237977890.17312.24.camel@diese.inria.fr> On Wed, 2009-03-25 at 11:15 +0100, Mirko Banchi wrote: > >> As you can see the main problems are with parameter list of > >> > >> NqosWifiMacHelper::SetDcaParameter > >> QosWifiMacHelper::SetEdcaParameter > >> > >> Which kind of parameter we should use? > >> > >> Even if ns3::EdcaTxopN has attributes like "MinCw", "MaxCw" etc, when > >> SetEdcaParameter is called i haven't in hand the pointer to the specific > >> queue yet. > > > > Can you do what you do already for SetMsduAggregatorForAc with a factory > > and create the EdcaTxop object from the helper rather than from the > > WifiMac object ? > > > > It's a problem :( Because EdcaTxopN needs to know for which type of > WifiMac objects is created. For example in QapWifiMac constructor: None of the below seem to be problematic: why can't you do this: class QosWifiMacHelper { public: void SetEdcaParameter (AccessClass ac, std::string n0, const AttributeValue &v0, ...) { if (ac == VO) { m_voEdcaFactory.Set (n0, v0); } } ... Install (...) { vo_edca = m_voEdcaFactory.Create... (); mac->SetVoEdca (vo_edca); // or mac->SetAttribute (..., PointerValue (vo_edca); } private: ObjectFactory m_voEdcaFactory; }; > > QapWifiMac::QapWifiMac () > { > ... > m_voEdcaTxopN->SetTxOkCallback (MakeCallback (&QapWifiMac::TxOk, > this)); > m_voEdcaTxopN->SetTypeOfStation (AP); > .... > } From mk.banchi at gmail.com Wed Mar 25 04:13:56 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Wed, 25 Mar 2009 12:13:56 +0100 Subject: [Ns-developers] Extending WifiHelper object In-Reply-To: <1237977890.17312.24.camel@diese.inria.fr> References: <49C93A7D.7090206@gmail.com> <1237967792.17312.5.camel@diese.inria.fr> <49CA0452.1090106@gmail.com> <1237977890.17312.24.camel@diese.inria.fr> Message-ID: <49CA11F4.6010109@gmail.com> Mathieu Lacage ha scritto: > On Wed, 2009-03-25 at 11:15 +0100, Mirko Banchi wrote: > >>>> As you can see the main problems are with parameter list of >>>> >>>> NqosWifiMacHelper::SetDcaParameter >>>> QosWifiMacHelper::SetEdcaParameter >>>> >>>> Which kind of parameter we should use? >>>> >>>> Even if ns3::EdcaTxopN has attributes like "MinCw", "MaxCw" etc, when >>>> SetEdcaParameter is called i haven't in hand the pointer to the specific >>>> queue yet. >>> Can you do what you do already for SetMsduAggregatorForAc with a factory >>> and create the EdcaTxop object from the helper rather than from the >>> WifiMac object ? >>> >> It's a problem :( Because EdcaTxopN needs to know for which type of >> WifiMac objects is created. For example in QapWifiMac constructor: > > None of the below seem to be problematic: why can't you do this: > > class QosWifiMacHelper > { > public: > void SetEdcaParameter (AccessClass ac, > std::string n0, const AttributeValue &v0, > ...) { > if (ac == VO) { > m_voEdcaFactory.Set (n0, v0); > } > } > ... Install (...) { > vo_edca = m_voEdcaFactory.Create... (); > mac->SetVoEdca (vo_edca); // or mac->SetAttribute (..., PointerValue > (vo_edca); > } > private: > ObjectFactory m_voEdcaFactory; > }; Ah ok!So we can now call all methods that before was called in contructor, in setVoEdca, setViEdca... methods. Ok, thanks :) Mirko >> QapWifiMac::QapWifiMac () >> { >> ... >> m_voEdcaTxopN->SetTxOkCallback (MakeCallback (&QapWifiMac::TxOk, >> this)); >> m_voEdcaTxopN->SetTypeOfStation (AP); >> .... >> } > > > -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090325/6892f63f/smime.bin From ese.mike at gmail.com Tue Mar 24 18:42:47 2009 From: ese.mike at gmail.com (Miguel Angel Palomera =?UTF-8?B?UMOpcmV6?=) Date: Tue, 24 Mar 2009 19:42:47 -0600 Subject: [Ns-developers] MANET Project to GSOC2009 Message-ID: <20090324194247.110961aa@tux> Hi everyone! I'm Miguel Palomera. I'm interesting in participate in the ns3 project through GSOC2009. Especifically, I would like to work in the simulation of routing protocols in MANET networks. Searching your doxygen site I found that you have already implement some mobile models. However there is a lack of routing protocols. Moreover, in the next future (one year or least) as part of my PhD research I should test a routing protocol based on link attributes. My project idea is to develop a framework that make easy to test new protocols. I have already check the click router, but I don't know if I'm able to port such "monster" to ns3. My question is, a routing framework is viable inside of the ns3 simulator? I mean, in the ns2 simulator you have to make a lot of changes to make a new routing protocol. In this moment, I dont know how to deploy a routing protocol in ns3 but I would like that the routing protocol was more like a plugin. Also I would like test this idea implemting a simple AODV. So, what do you think? Is it a viable idea? Any suggestion? From swark2006 at gmail.com Tue Mar 24 17:52:09 2009 From: swark2006 at gmail.com (swark) Date: Wed, 25 Mar 2009 08:52:09 +0800 Subject: [Ns-developers] GSoc: P2P Projects References: <13786f330903240928w6b1da28bt832e6924258b434c@mail.gmail.com> Message-ID: Dear Marcello,Joseph, I am very interesting in this project. My current research is focus on P2P streaming area and I am implementing Kademlia on FALPS. Is there any detail requirements for this project besides the brief induction on the http://www.nsnam.org/wiki/index.php/GSOC2009Projects ? Thank you very much. Regards, swark swark2006 at gmail.com 2009-03-25 ----- Original Message ----- From: Joseph Kopena To: ns-developers,ns-3-users Sent: 2009-03-25, 00:28:58 Subject: [Ns-developers] GSoc: P2P Projects >Hi folks, > >Marcello Caleffi has stepped forward to mentor a project on P2P >systems, moving that into our priority project topics along with (in >no particular order): Click integration, NSC, emulation, router >models, MAC and PHY models. A project blurb has been added to the >ideas page at [1]. Again, we stress that this project would focus on >implementing or porting commonly used or cited work, protocols, and >implementations. This is not an opening for a P2P research project, >this is an opening to develop a toolset supporting a wide variety of >P2P research projects. > >Thx again to Marcello! > >[1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects > >-- >- joe kopena >right here and now From tjkopena at cs.drexel.edu Wed Mar 25 11:23:41 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 25 Mar 2009 14:23:41 -0400 Subject: [Ns-developers] GSoC: WiMAX Projects Message-ID: <13786f330903251123v26376c0dk3f7b277be427b8bb@mail.gmail.com> Hi folks, Juliana Freitag Borin has agreed to potentially mentor a GSoC project on further development of the ns-3 WiMAX model(s). A project blurb has been posted to the ideas list at [1]. This would be great for this interested in the MAC layer, and increasing the number of models available to ns-3 users. Thanks again to Juliana for stepping up to support this! [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects -- - joe kopena right here and now From tjkopena at cs.drexel.edu Wed Mar 25 15:28:25 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 25 Mar 2009 18:28:25 -0400 Subject: [Ns-developers] Google Summer - Routing Queues Project In-Reply-To: <49C83606.9070402@gatech.edu> References: <49C83606.9070402@gatech.edu> Message-ID: <13786f330903251528g7844017fh64af7a24d65947d9@mail.gmail.com> On Mon, Mar 23, 2009 at 9:23 PM, Akshay Kashyap wrote: >> From what I gathered, the current ns-3 implementation only implements > > the DropTail queueing aspect of ns-2. Other than the modules from ns-2 and > the Linux kernel implementations, what other routing queues would need to be > implemented? Would this also require extending support for ECN? Hi Akshay, There is no hard and fast requirement as yet on what queues would have to be implemented for this project. A useful part of a proposal in this area would help identify queue models of interest, why they're of interest, and notes on implementation (i.e., paper references, existing implementations, studies, etc). You are more than welcome to discuss that further here. Notably, I think part of this project will be creating examples and studies demonstrating and evaluating the different queues, e.g., potentially repeating published research to verify and demonstrate the developed models. > An extension to the project could be adding support for deep packet > inspection, perhaps useful in the context of rate-limiting studies of > certain traffic (P2P, as is sometimes done). I'm not sure how feasible this > might be, it seemed an interesting addition. :-) Does this seem like a > worthy sub-project (if it isn't already implemented)? Somewhat similarly to creating demonstrations using the developed models, I think looking into ECN, DPI, and QoS as part of the larger framework within which the queues exist could most definitely be a worthwhile extension to the basic project idea. The key thing here is to identify concrete, achievable, generally useful goals, and balancing that with the core goal of improving the set of basic components (the queue models) available. -- - joe kopena right here and now From tjkopena at cs.drexel.edu Wed Mar 25 15:35:15 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 25 Mar 2009 18:35:15 -0400 Subject: [Ns-developers] GSoC 09: Reactive Routing Protocols In-Reply-To: <993601c10903241033h3436c58cxfb89003a2c9ec3a@mail.gmail.com> References: <993601c10903241033h3436c58cxfb89003a2c9ec3a@mail.gmail.com> Message-ID: <13786f330903251535i49481e91of88cb55b27db2999@mail.gmail.com> On Tue, Mar 24, 2009 at 1:33 PM, karan verma wrote: > ? ? ?I read the ideas list and found the project idea to implement reactive > routing protocols for ns-3 very relevant to my interests and experience. > Previously I have worked on glomosim to implement a fault tolerant routing > protocol for manets, which involved learning from and modification of > existing routing protocols like aodv and dsr. > > I request the mentors to highlight the challanges one would face while going > through with the project; this would greatly help me make a good proposal. Hi Karan, In some respects this is a relatively straightforward project, with clearly definable goals. The basic goal is to extend the library of routing protocols available within ns-3. They should be relatively stand alone, and much can be learned quickly from the existing OLSR implementation. A good proposal in this area will include: - Identifying a set of protocols to implement, with brief rational why, and some demonstration of at least minimal familiarity of the protocols and routing in general. - Notes on components required to implement those protocols. An interesting element here that might complement other work is identifying common sub-components required by different protocols that could be developed and re-used. Showing some conception of what is required to implement such protocols in ns-3, i.e., where the connections are to the core system, is also important. - Some plan for demonstrating the developed protocols, e.g., repeating published comparisons. -- - joe kopena right here and now From tjkopena at cs.drexel.edu Wed Mar 25 15:52:40 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 25 Mar 2009 18:52:40 -0400 Subject: [Ns-developers] MANET Project to GSOC2009 In-Reply-To: <20090324194247.110961aa@tux> References: <20090324194247.110961aa@tux> Message-ID: <13786f330903251552w5e491c3aw8788731628c45736@mail.gmail.com> 2009/3/24 Miguel Angel Palomera P?rez : > My question is, a routing framework is viable inside of the ns3 simulator? I mean, in the ns2 simulator you have to make a lot of changes to make a new routing protocol. In this moment, I dont know how to deploy a routing protocol in ns3 but I would like that the routing protocol was more like a plugin. Also I would like test this idea implemting a simple AODV. > > So, what do you think? Is it a viable idea? ?Any suggestion? Hi Miguel, I think one of the key features of ns-3, as compared to ns-2, is that it is very easy to develop and use new routing protocols, applications, etc. The whole structure and implementation of the codebase has been built around that goal. If you would like to get more of a feel for that, you should look at the existing OLSR implementation. The notion of a plugin doesn't really make sense in ns-3 because there is no ns-3 "application," but the routing and application structures definitely meet the key plugin goals of being easily swapped in and out with limited and clear interactions with the rest of the codebase. Right now we have two project blurbs posted which relate to what you're talking about: Click porting, and general router model development. The latter includes many of the elements you're talking about, identifying common router components, the connections between them, etc. The focus is slightly different in the currently envisioned project, focusing on internal capabilities, delays, etc, but clearly there's a relationship there. -- - joe kopena right here and now From tjkopena at cs.drexel.edu Wed Mar 25 15:58:03 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 25 Mar 2009 18:58:03 -0400 Subject: [Ns-developers] particpation in a GSOC 2009 project In-Reply-To: <7881237884318@webmail48.yandex.ru> References: <7881237884318@webmail48.yandex.ru> Message-ID: <13786f330903251558v4c3ad53fwc6f24d7b31682e62@mail.gmail.com> On Tue, Mar 24, 2009 at 4:45 AM, Vaagn Khachatryan wrote: > OK, enough of talk of testing ideas :-) A couple of days ago I stumbled upon the GSOC wiki and had a look at the list of ideas described there. I liked the Routing section most, especially the click modular router integration, and would like to participate in an NS-3 project to get the feeling of what the simulator is capable of and perhaps suggest/drive further improvements/additions to it. Hi Vaagn, Notably, being able to test and evaluate developed software is a key goal of ns-3, and there's several lines of work in that direction. One is the work on manipulating linux programs (ELF code) to work directly in ns-3 without modification. Another is the proposed work porting agent-j or otherwise providing Java support. There is also much interest and work on running ns-3 in realtime to provide an emulation capability, as well as tying ns-3 into emulators such as CORE and EMANE. All of these are related to the kinds of things you talk about. For GSoC specifically, we are looking for students available to make a full time commitment to the program. Everyone here would be happy to help you use ns-3 in your work though, and to get you involved in the team. One of the places to start with that is by looking at what your needs are and where a simulation/emulation engine could be used to support them, then starting a discussion here about ns-3 could provide that support, either currently or in the future. -- - joe kopena right here and now From tjkopena at cs.drexel.edu Wed Mar 25 16:03:44 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 25 Mar 2009 19:03:44 -0400 Subject: [Ns-developers] Question of Google Summer of Code 2009 In-Reply-To: References: <13786f330903231844o1bc6577fy385910e74ad7e4de@mail.gmail.com> Message-ID: <13786f330903251603v62434d77p1d815e1349407aa6@mail.gmail.com> On Tue, Mar 24, 2009 at 2:40 AM, Miao Wang wrote: > To sum up, I will implement the whole P2P streaming framework, which takes > advantage of physical topology construction and network and transport layer > protocols of NS-3. My work will be an integrated packet-level P2P streaming > simulator with NS-3. > > I have most of the codes implemented with C++ and STL on hand. The only > thing that I have to do is to figure out how to use the IP/TCP protocol in > NS-3 to simulate the real packet transmission, since ?in my own simulators > these transmissions are pointer passing with random time delay. I think all Hi Miao, A couple comments: It's not exactly clear what you are proposing. It sounds like you're talking about constructing a P2P framework, but then it seems you have already constructed that. If that is the case and it is reasonably packet oriented, porting to ns-3 should be relatively straight matter: It just needs to be wrapped as an application and work with ns-3's socket API much like any normal BSD style program. In general, I think we all also need to be clear what we're all talking about in discussing P2P. Some of the issue is admittedly my modest familiarity with the area, but for example you seem to be talking much more about (video) streaming while others are talking more about DHTs & key based routing. -- - joe kopena right here and now From tjkopena at cs.drexel.edu Wed Mar 25 16:08:32 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Wed, 25 Mar 2009 19:08:32 -0400 Subject: [Ns-developers] GSoc: P2P Projects In-Reply-To: References: <13786f330903240928w6b1da28bt832e6924258b434c@mail.gmail.com> Message-ID: <13786f330903251608qc27c6d1yfa265fbef8081afc@mail.gmail.com> 2009/3/24 swark : > ? ?I am very interesting in this project. My current research is focus on P2P streaming area and I am implementing Kademlia on FALPS. Is there any detail requirements for this project besides the brief induction on the http://www.nsnam.org/wiki/index.php/GSOC2009Projects ? Hi swark, Much like the routing protocols thread, in some ways this could be a very straightforward project topic. A reasonable proposal in this area could be founded upon: - Identifying a set of protocols which would be useful to have in ns-3, i.e., that many researchers would conceivably use. Showing some familiarity with these protocols and background research would be important. - Discussing how these protocols would be implemented in ns-3. Very interesting would be discussing common components, and a little bit of a framework that might be used in constructing other P2P protocols. - Noting some contextual work, e.g. simulations and studies demonstrating and evaluating the implementations. Repeating existing comparative studies would be an excellent example. -- - joe kopena right here and now From craigdo at ee.washington.edu Wed Mar 25 18:51:42 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Wed, 25 Mar 2009 18:51:42 -0700 Subject: [Ns-developers] ns-3.4 Tutorial In-Reply-To: <20090324194247.110961aa@tux> References: <20090324194247.110961aa@tux> Message-ID: Hi All, You may have noticed that I recently checked in some fairly significant rework of the ns-3 tutorial. Recent additions such as ns-3-allinone and the tracing system rework have made these changes mandatory. I think the tutorial is now back in sync with the ns-3.4 codebase and is ready to ship. I would appreciate it if some of you folks could take the time to go through the tutorial, double-check that it all makes sense and still hangs together, and that all of the example bits are consistent with what you get in your environment. The ns-3.4 release is now winding down, so having more sets of eyes look at this in the next few days will be very helpful. You can find the HTML version of the tutorial at http://www.nsnam.org/docs/tutorial.html (off of the project website). If you find errors you can either email me privately, post it to the list or file a bug -- any one of those reporting methods works for me. Please consider spending some time looking this over as a public service. Regards, -- Craig From lorenzo at cs.wisc.edu Wed Mar 25 15:40:45 2009 From: lorenzo at cs.wisc.edu (Lorenzo De Carli) Date: Wed, 25 Mar 2009 17:40:45 -0500 Subject: [Ns-developers] Google SoC 2009 - Modeling routers Message-ID: <49CAB2ED.2030007@cs.wisc.edu> Hi developers, I am a master student in computer sciences and I am preparing my application for GSoC 2009. I went through the ideas list on the ns-3 GSoC page and I would be particularly interested in working on the new router model. Since this is the first time I approach ns-3, I went through the tutorial and skimmed the source code to get a basic idea of how the simulator works. Then, I read the paper ("A device-independet router model") cited in the project description. From what I understand now, a router should consist of a Node with a proper NetDevice implementing the routing logic (much as a bridge is implemented as a Node with a BridgeNetDevice attached). Therefore, the core part of the work will be to derive a new class from the base NetDevice and implementing the router model inside. Is this the correct way to look at the problem? If this is correct, I would like to know if there is any code and/or documentation I should read to gather more detailed information. Also, I have noticed that the model described in the paper has some inaccuracies (it does not consider interferences from control traffic, it does not accurately model losses from backplane contention, etc.). I expect that one of the requirements will be to "tweak" the model during the implementation to improve some of its weaknesses. Are there already some ideas about possible improvements or alternative models? Thanks in advance, Lorenzo From dnlove at gmail.com Wed Mar 25 17:33:00 2009 From: dnlove at gmail.com (Duy Nguyen) Date: Wed, 25 Mar 2009 17:33:00 -0700 Subject: [Ns-developers] WifiMode.... Message-ID: <70f6a1ed0903251733m60dc324dua78666f57851dc5d@mail.gmail.com> Hi Ns developers and Mathieu, I have a few questions regarding WifiMode in amrr implementation below WifiMode AmrrWifiRemoteStation::DoGetDataMode (uint32_t size) { .... return GetSupportedMode (rateIndex); } It seems to me that this function is called when node is getting ready to send Data what does it mean by returning m_modes[rateIndex] WifiMode AmrrWifiRemoteStation::DoGetRtsMode (void) { UpdateMode (); // XXX: can we implement something smarter ? return GetSupportedMode (0); } It seems to me that this function is called when node is getting ready to transmit an RTS and what does it mean by always returning m_modes[0]? >From what I see m_modes is an array of rates, but why always picking rate at index 0 I've looked into WifiMode, but still have no clues, hope you can shed some lights, or point me to some other files so I can understand them. Duy From flaviokubota at gmail.com Wed Mar 25 18:21:11 2009 From: flaviokubota at gmail.com (Flavio Kubota) Date: Wed, 25 Mar 2009 22:21:11 -0300 Subject: [Ns-developers] GSoC: WiMAX Projects In-Reply-To: <13786f330903251123v26376c0dk3f7b277be427b8bb@mail.gmail.com> References: <13786f330903251123v26376c0dk3f7b277be427b8bb@mail.gmail.com> Message-ID: Hi all, I have studied the IEEE 802.16 standard for my master's thesis and I am currently working on scheduling in WiMAX networks. I am working with the WiMAX module for ns-2 developed by NIST. I'd like to develop the WiMAX module for ns-3, adding a scheduler based on priorities of queues based on their QoS requirements. The module will support grants and bandwidth allocation. I also plan to include propagation and error models. I have studied the models of ERCEG and COST 231 for the propagation. This two models were recommended by the document WiMAX System Evaluation Methodology of WiMAX Forum. I still don't know which error model to implement, but with the SNR, we can get the BER, and derive the PER. With the propagation model and error model, the packet loss would be more realistic. Another thing I would like to code is the change of modulation and coding(AMC) according to the channel quality or loss rate. I'm still studing WiMAX module for ns-3[ http://code.nsnam.org/iamine/ns-3-wimax/summary], but couldn't find these features implemented. I would like a feedback about these ideas. Is it good? Can I improve it? Best regards, Flavio Kubota On Wed, Mar 25, 2009 at 3:23 PM, Joseph Kopena wrote: > Hi folks, > > Juliana Freitag Borin has agreed to potentially mentor a GSoC project > on further development of the ns-3 WiMAX model(s). A project blurb > has been posted to the ideas list at [1]. This would be great for > this interested in the MAC layer, and increasing the number of models > available to ns-3 users. > > Thanks again to Juliana for stepping up to support this! > > [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects > > -- > - joe kopena > right here and now > From bmazumd at g.clemson.edu Wed Mar 25 19:44:27 2009 From: bmazumd at g.clemson.edu (Biswajit Mazumder) Date: Wed, 25 Mar 2009 22:44:27 -0400 Subject: [Ns-developers] GSoC: WiMAX Projects: Uplink Scheduler for WiMAX Message-ID: Hi Everyone, I am interested in working on the Uplink Scheduler for WiMAX for the GSoC. The website mentions that this might be accomplished by porting from an available ns-2 WiMAX module. Which would be the best WiMAX module implementation for ns-2 which I can take a look at? Thanks and Regards, Biswajit Mazumder From mathieu.lacage at sophia.inria.fr Thu Mar 26 00:17:58 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 26 Mar 2009 08:17:58 +0100 Subject: [Ns-developers] WifiMode.... In-Reply-To: <70f6a1ed0903251733m60dc324dua78666f57851dc5d@mail.gmail.com> References: <70f6a1ed0903251733m60dc324dua78666f57851dc5d@mail.gmail.com> Message-ID: <1238051878.5963.5.camel@mathieu-laptop> On Wed, 2009-03-25 at 17:33 -0700, Duy Nguyen wrote: > Hi Ns developers and Mathieu, I have a few questions regarding > WifiMode in amrr implementation below > > WifiMode > AmrrWifiRemoteStation::DoGetDataMode (uint32_t size) > { > .... > return GetSupportedMode (rateIndex); > > } > It seems to me that this function is called when node is getting ready > to send Data > what does it mean by returning m_modes[rateIndex] It is just returning a specific transmission mode selected for this transmission by this rate control algorithm. If you want to know how it builds the m_modes array, you could look at the functions which actually add things to this array and dump its content yourself. Generally, this array is an array of transmission modes sorted by increasing physical transmission rate. > > WifiMode > AmrrWifiRemoteStation::DoGetRtsMode (void) > { > UpdateMode (); > // XXX: can we implement something smarter ? > return GetSupportedMode (0); > } > It seems to me that this function is called when node is getting > ready to transmit an RTS > and what does it mean by always returning m_modes[0]? Here, it means rate 6mbs. > From what I see m_modes is an array of rates, but why always picking > rate at index 0 rts packets are always sent with 6mbs rate. As you can see, the XXX says that we could be smarter. The 802.11 spec spefically allows using the lowest rate from the BSSRateSet which could be a higher rate than 6mbs. Mathieu From nbaldo at cttc.es Thu Mar 26 02:51:54 2009 From: nbaldo at cttc.es (Nicola Baldo) Date: Thu, 26 Mar 2009 10:51:54 +0100 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: <1237739811.6923.6.camel@mathieu-laptop> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> <200903211210.16060.timo.bingmann@student.kit.edu> <1237707361.4874.16.camel@mathieu-laptop> <49C663F5.40402@cttc.es> <1237739811.6923.6.camel@mathieu-laptop> Message-ID: <49CB503A.6060907@cttc.es> Hi, sorry for the late reply. Some comments below... Mathieu Lacage wrote: > On Sun, 2009-03-22 at 17:14 +0100, Nicola Baldo wrote: > >> Such a hardware is for instance Calradio: >> http://calradio.calit2.net/calradio1a.htm >> >> For those who are not familiar with it, Calradio is an experimental >> platform with a 802.11b PHY and a fully customizable MAC layer written >> in C code which runs on a DSP. The PHY in particular is based on two >> components: the baseband module (the Intersil HFA3863 chipset I >> mentioned earlier) and the RF module (based on the Maxim MAX2820 chipset). > > Not that I don't care about this kind of hardware but, really, the goal > of the ns-3 PHY module is to modelize real hardware :) (more on this > below) > >> In Calradio, the setting of the PHY mode belongs to the baseband module, >> whereas the setting of the frequency to be used belongs to the RF >> module. Both these settings are performed by writing to appropriate >> configuration registers when desired. As a consequence, per-packet >> frequency selection can be implemented by setting a new frequency just >> prior to transmission. > > I would be curious to know how much time it takes to make the RF > baseband actually perform the frequency switch. I suspect that this > delay is sufficiently long that frequency switches on a per-packet basis > are not practical and I suspect that this is also the case in real > hardware and I also suspect that the cost of building hardware which can > do this for 802.11 is sufficiently high that it would prohibit any real > deployment. > > But, well, the real issue here is that the goal of the current codebase > is to modelize real 802.11 systems where per-packet frequency switches > are simply not feasible so, I would tend to happily ignore this > possibility for now. > The switch latency of Calradio is limited by the channel switch latency of the RF chipset (average 150 us, maximum 200 us, according to the MAX2820 datasheet). The additional latencies associated with having the MAC requesting the channel switch operation are negligible (less than 4 microseconds). I think that implementing a per-packet channel switch strategy with these latencies is feasible, even if of course a faster switching would be desirable. Actually, the MAX2820 chipset is several years old, so I wonder if faster switching RF chipsets have become available in the market in the meanwhile. Overall, Calradio is not using any exotic and expensive hardware. Basically it is using the same PHY hardware as the old PRISM-based wifi devices. The difference is that the MAC is implemented as a fully customizable C code runnig on a DSP, rather than being implemented as a proprietary firmware. I would say that any solution which can be implemented on Calradio could be easily manufactured and sold for a price similar to that of currently available commercial devices. Regards, Nicola From nbaldo at cttc.es Thu Mar 26 03:05:19 2009 From: nbaldo at cttc.es (Nicola Baldo) Date: Thu, 26 Mar 2009 11:05:19 +0100 Subject: [Ns-developers] tag rework for next release In-Reply-To: <1237840347.5907.60.camel@mathieu-laptop> References: <1237840347.5907.60.camel@mathieu-laptop> Message-ID: <49CB535F.9050505@cttc.es> Hi Mathieu, Mathieu Lacage wrote: > As a preparation for the ipv4 rework for next release, I finally spent > some time to try to deal with some of the issues around the tag API: > there are now two types of tags for each packet: 'packet' tags vs 'byte' > tags. Their semantics are slightly different to try to solve two > different use-cases: > > 1) byte tags could be typically used for flow ids: they will be > preserved across packet fragmentation and aggregation. byte tags can be > added to a packet but they can't be removed piecemeal: you have to > remove them all all at once or not at all. > > 2) packet tags will typically be used for cross-layer interactions (they > are presently used, for example, to convey the ipv4 ttl from the udp > layer to the ipv4 layer). They could be used to convey qos tids from > applications to a wifi layer. They can be removed one by one. The > implementation is optimized to be really efficient when the tag removed > is the last tag added (just like a stack). Are the new "packet tags" suitable for handling PHY layer metadata? I am thinking of all the parameters which are currently passed as parameters to WifiPhy::SendPacket(). Can we put those parameters in a packet tag instead? Regards, Nicola From boyko at iitp.ru Thu Mar 26 03:52:00 2009 From: boyko at iitp.ru (Pavel Boyko) Date: Thu, 26 Mar 2009 13:52:00 +0300 Subject: [Ns-developers] Adding Wifi Phy models In-Reply-To: <49CB503A.6060907@cttc.es> References: <12d69e490903200857x65bb2f4cxdd2830731ee7eb1d@mail.gmail.com> <1237739811.6923.6.camel@mathieu-laptop> <49CB503A.6060907@cttc.es> Message-ID: <200903261352.01093.boyko@iitp.ru> Hi! Nicola, Mathieu, On Thursday 26 March 2009 12:51:54 Nicola Baldo wrote: > The switch latency of Calradio is limited by the channel switch latency > of the RF chipset (average 150 us, maximum 200 us, according to the > MAX2820 datasheet). The additional latencies associated with having the > MAC requesting the channel switch operation are negligible (less than 4 > microseconds). I think that implementing a per-packet channel switch > strategy with these latencies is feasible, even if of course a faster > switching would be desirable. Actually, the MAX2820 chipset is several > years old, so I wonder if faster switching RF chipsets have become > available in the market in the meanwhile. We have measured 200-250 us between two frames transmitted on different frequencies using atheros chipset with madwifi driver. I've implemented "dirty" channel switch in yans-wifi-{phy/channel}, you can take a look on attached diff. Mathieu -- please comment if you see there any mistakes. To implement clean channel switch one must also implement MAC level SwitchChannelId() to 1. Down interface 2. Wait for all Tx queues to empty 3. Switch PHY channel 4. reset NAV 5. Up interface Regards, Pavel -------------- next part -------------- A non-text attachment was scrubbed... Name: switch_channel_id.diff Type: text/x-patch Size: 4519 bytes Desc: not available Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090326/b10b0b0c/switch_channel_id-0001.bin From mk.banchi at gmail.com Thu Mar 26 04:28:20 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Thu, 26 Mar 2009 12:28:20 +0100 Subject: [Ns-developers] New wifi helper and MSDU aggregation Message-ID: <49CB66D4.3030902@gmail.com> Hi all, i have extended WifiHelper in order to make easy setting of some attributes like Msdu aggregators for 802.11n stas and edca parameters (minCw, maxCw, Aifsn) for 802.11e/n stas. code: http://code.nsnam.org/mirko/ns-3-80211n I have also made some changes to code's style as Mathieu requested. added file: src/helper/qos-wifi-mac-helper.h src/helper/qos-wifi-mac-helper.cc src/helper/nqos-wifi-mac-helper.h src/helper/nqos-wifi-mac-helper.cc src/devices/wifi/qos-utils.h modified files: src/helper/wifi-helper.h src/helper/wifi-helper.cc src/devices/wifi/qsta-wifi-mac.h src/devices/wifi/qsta-wifi-mac.cc src/devices/wifi/qap-wifi-mac.h src/devices/wifi/qap-wifi-mac.cc src/devices/wifi/nqsta-wifi-mac.h src/devices/wifi/nqsta-wifi-mac.cc src/devices/wifi/nqap-wifi-mac.h src/devices/wifi/nqap-wifi-mac.cc src/devices/wifi/adhoc-wifi-mac.h src/devices/wifi/adhoc-wifi-mac.cc src/devices/wifi/wifi-mac-queue.h src/devices/wifi/wifi-mac-queue.cc src/devices/wifi/wifi-mac-header.h src/devices/wifi/wifi-mac-header.cc src/devices/wifi/edca-txop-n.h src/devices/wifi/edca-txop-n.cc Clearly i have modified all (i hope :)) wifi examples in order to use new helpers. Known lacks: -src/devices/wifi/qadhoc-wifi-mac.h src/devices/wifi/qadhoc-wifi-mac.cc -Examples (in a short time will be there) I think that about MSDU aggregation it's all. Currently i'm working on Block ack mechanism. I hope that within three week i'll publish some code. Comments and advices would be welcome. Regards, Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090326/6b979eac/smime.bin From mathieu.lacage at sophia.inria.fr Thu Mar 26 04:40:24 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 26 Mar 2009 12:40:24 +0100 Subject: [Ns-developers] tag rework for next release In-Reply-To: <49CB535F.9050505@cttc.es> References: <1237840347.5907.60.camel@mathieu-laptop> <49CB535F.9050505@cttc.es> Message-ID: <1238067624.17312.28.camel@diese.inria.fr> On Thu, 2009-03-26 at 11:05 +0100, Nicola Baldo wrote: > Hi Mathieu, > > Mathieu Lacage wrote: > > As a preparation for the ipv4 rework for next release, I finally spent > > some time to try to deal with some of the issues around the tag API: > > there are now two types of tags for each packet: 'packet' tags vs 'byte' > > tags. Their semantics are slightly different to try to solve two > > different use-cases: > > > > 1) byte tags could be typically used for flow ids: they will be > > preserved across packet fragmentation and aggregation. byte tags can be > > added to a packet but they can't be removed piecemeal: you have to > > remove them all all at once or not at all. > > > > 2) packet tags will typically be used for cross-layer interactions (they > > are presently used, for example, to convey the ipv4 ttl from the udp > > layer to the ipv4 layer). They could be used to convey qos tids from > > applications to a wifi layer. They can be removed one by one. The > > implementation is optimized to be really efficient when the tag removed > > is the last tag added (just like a stack). > > Are the new "packet tags" suitable for handling PHY layer metadata? I am > thinking of all the parameters which are currently passed as parameters > to WifiPhy::SendPacket(). Can we put those parameters in a packet tag > instead? You could, but really, I can't see why you would do this. How would hiding all the parameters be an improvement over making them explicit ? Mathieu From nbaldo at cttc.es Thu Mar 26 05:01:11 2009 From: nbaldo at cttc.es (Nicola Baldo) Date: Thu, 26 Mar 2009 13:01:11 +0100 Subject: [Ns-developers] tag rework for next release In-Reply-To: <1238067624.17312.28.camel@diese.inria.fr> References: <1237840347.5907.60.camel@mathieu-laptop> <49CB535F.9050505@cttc.es> <1238067624.17312.28.camel@diese.inria.fr> Message-ID: <49CB6E87.8090300@cttc.es> Hi, >> Are the new "packet tags" suitable for handling PHY layer metadata? I am >> thinking of all the parameters which are currently passed as parameters >> to WifiPhy::SendPacket(). Can we put those parameters in a packet tag >> instead? > > You could, but really, I can't see why you would do this. How would > hiding all the parameters be an improvement over making them explicit ? > I am trying to develop a technology-independent channel. Passing explicitly to the channel parameters such as WifiMode and WifiPreamble make the channel technology-specific, and I think that the channel has no real reason to be technology-specific. Only the PHY needs that information, that's why I like the idea of not letting it mess up the API between Channel and PHY. By the way, if we had a PHY header as per the 802.11 standard, then we wouldn't need to pass WifiMode and WifiPreamble explicitly. Nicola From mathieu.lacage at sophia.inria.fr Thu Mar 26 05:21:22 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 26 Mar 2009 13:21:22 +0100 Subject: [Ns-developers] tag rework for next release In-Reply-To: <49CB6E87.8090300@cttc.es> References: <1237840347.5907.60.camel@mathieu-laptop> <49CB535F.9050505@cttc.es> <1238067624.17312.28.camel@diese.inria.fr> <49CB6E87.8090300@cttc.es> Message-ID: <1238070082.17312.43.camel@diese.inria.fr> On Thu, 2009-03-26 at 13:01 +0100, Nicola Baldo wrote: > >> Are the new "packet tags" suitable for handling PHY layer metadata? I am > >> thinking of all the parameters which are currently passed as parameters > >> to WifiPhy::SendPacket(). Can we put those parameters in a packet tag > >> instead? > > > > You could, but really, I can't see why you would do this. How would > > hiding all the parameters be an improvement over making them explicit ? > > > > I am trying to develop a technology-independent channel. Passing Making the channel technology-independent would not require using a tag for WifiPhy::SendPacket: it would require a tag for Channel::Send. > explicitly to the channel parameters such as WifiMode and WifiPreamble > make the channel technology-specific, and I think that the channel has > no real reason to be technology-specific. Only the PHY needs that > information, that's why I like the idea of not letting it mess up the > API between Channel and PHY. You are really trying to re-use the 100 trivial LOCs of WifiChannel and YansWifiChannel but, we don't care. The more tricky reusable parts are the propagation loss models and these don't need this modification. > By the way, if we had a PHY header as per the 802.11 standard, then we > wouldn't need to pass WifiMode and WifiPreamble explicitly. Sure, but you would have to pass around other things like the tx power or, the tx antenna position and orientation, etc. Mathieu From timo.bingmann at student.kit.edu Thu Mar 26 05:26:29 2009 From: timo.bingmann at student.kit.edu (Timo Bingmann) Date: Thu, 26 Mar 2009 13:26:29 +0100 Subject: [Ns-developers] tag rework for next release In-Reply-To: <49CB6E87.8090300@cttc.es> References: <1237840347.5907.60.camel@mathieu-laptop> <1238067624.17312.28.camel@diese.inria.fr> <49CB6E87.8090300@cttc.es> Message-ID: <200903261326.29450.timo.bingmann@student.kit.edu> On Thursday 26 March 2009 13:01:11 Nicola Baldo wrote: > Hi, > > > >> Are the new "packet tags" suitable for handling PHY layer metadata? I am > >> thinking of all the parameters which are currently passed as parameters > >> to WifiPhy::SendPacket(). Can we put those parameters in a packet tag > >> instead? > > > > You could, but really, I can't see why you would do this. How would > > hiding all the parameters be an improvement over making them explicit ? > > > > I am trying to develop a technology-independent channel. Passing > explicitly to the channel parameters such as WifiMode and WifiPreamble > make the channel technology-specific, and I think that the channel has > no real reason to be technology-specific. Only the PHY needs that > information, that's why I like the idea of not letting it mess up the > API between Channel and PHY. > > By the way, if we had a PHY header as per the 802.11 standard, then we > wouldn't need to pass WifiMode and WifiPreamble explicitly. > > Nicola Hello guys, I've had similar thoughts before: virtual void SendPacket (Ptr packet, WifiMode mode, enum WifiPreamble preamble, uint8_t txPowerLevel) = 0; just doesnt look right, because it is very 802.11 specific, and ugly at best. This writing out of parameters continues further in the WifiPhy interfaces: typedef Callback, double, WifiMode, enum WifiPreamble> SyncOkCallback; And culminates in YansWifiPhy::StartReceivePacket (Ptr packet, double rxPowerDbm, WifiMode txMode, enum WifiPreamble preamble) First observation: WifiPhy is (supposed to be) independent of a PHY, but the SendPacket is not. I believe we need an abstract class class WifiPhySendParameters {}; class YansWifiPhySendParameters : public WifiPhySendParameters { WifiMode mode; int powerLevel; }; virtual void SendPacket (Ptr packet, const WifiPhySendParameters& params) = 0; However that would lead to a dynamic_cast<> somewhere. The alternative is to use a packet Tag similar to the SendParameters above. However I guess the non-Tag is better, because only the MAC layer should set the parameters, and not upper layer. A related issue is then how to pass "WifiPhyReceiveParameters" back upwards to MacLow and company. I have experimented in my wifiex repository with a "WifiPhyTag", which contains all send and receive parameters a packet gets as it travels through the PHY. It could also be used to specify SendParameters as above. Base idea was to derive WifiPhyTag for different PHYs and each can add data specific to it's calculations. However I myself have some doubts as to whether this structure actually deserves to be a Tag, and not just a simple refcounted object passed between functions. Big highlight of the WifiPhyTag is the simple signature of trace callbacks: PhyRxOkTrace (std::string context, Ptr packet, Ptr phytag) { std::cout << "snr: " << phytag.GetRxSnrDb() << "dB, phytag={" << *phytag << "};\n"; } Changeset of WifiPhyTag is http://code.nsnam.org/timob/ns-3-wifiex/rev/90cc8f2ed1e8 However reading WifiPhy.h is easier. http://code.nsnam.org/timob/ns-3-wifiex/file/90cc8f2ed1e8/src/devices/wifi/wifi-phy.h So any ideas on these interfacing issues? Greetings Timo From mathieu.lacage at sophia.inria.fr Thu Mar 26 05:50:46 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 26 Mar 2009 13:50:46 +0100 Subject: [Ns-developers] tag rework for next release In-Reply-To: <200903261326.29450.timo.bingmann@student.kit.edu> References: <1237840347.5907.60.camel@mathieu-laptop> <1238067624.17312.28.camel@diese.inria.fr> <49CB6E87.8090300@cttc.es> <200903261326.29450.timo.bingmann@student.kit.edu> Message-ID: <1238071846.17312.60.camel@diese.inria.fr> On Thu, 2009-03-26 at 13:26 +0100, Timo Bingmann wrote: > I've had similar thoughts before: > virtual void SendPacket (Ptr packet, WifiMode mode, enum > WifiPreamble preamble, uint8_t txPowerLevel) = 0; > > just doesnt look right, because it is very 802.11 specific, and ugly > at best. This writing out of parameters continues further in the > WifiPhy interfaces: > typedef Callback, double, WifiMode, enum > WifiPreamble> SyncOkCallback; > And culminates in > YansWifiPhy::StartReceivePacket (Ptr packet, double > rxPowerDbm, WifiMode txMode, enum WifiPreamble preamble) > > First observation: WifiPhy is (supposed to be) independent of a PHY, It is not supposed to be. Its name is very clear: 'WifiPhy' is 802.11-specific and it was designed to be as such. > but the SendPacket is not. I believe we need an abstract class > class WifiPhySendParameters {}; > class YansWifiPhySendParameters : public WifiPhySendParameters > { WifiMode mode; int powerLevel; }; > > virtual void SendPacket (Ptr packet, const > WifiPhySendParameters& params) = 0; > > However that would lead to a dynamic_cast<> somewhere. > The alternative is to use a packet Tag similar to the SendParameters > above. However I guess the non-Tag is better, because only the MAC > layer should set the parameters, and not upper layer. yes. > > A related issue is then how to pass "WifiPhyReceiveParameters" back > upwards to MacLow and company. I have experimented in my wifiex > repository with a "WifiPhyTag", which contains all send and receive > parameters a packet gets as it travels through the PHY. It could also > be used to specify SendParameters as above. > > Base idea was to derive WifiPhyTag for different PHYs and each can add > data specific to it's calculations. > However I myself have some doubts as to whether this structure > actually deserves to be a Tag, and not just a simple refcounted object > passed between functions. > > Big highlight of the WifiPhyTag is the simple signature of trace > callbacks: > PhyRxOkTrace (std::string context, Ptr packet, Ptr WifiPhyTag> phytag) > { > std::cout << "snr: " << phytag.GetRxSnrDb() << "dB, phytag={" << > *phytag << "};\n"; > } There are separate issues here: a) it might make sense to move all tx parameters in a single structure b) you are trying to give polymorphic powers to this single structure: passing it around by pointer or storing it in a tag is more or less doing the same (the pointer version is, at least, more explicit) a) might make sense and you make a good point about improving the readability of the code but b) is outside the scope of the design of the current WifiPhy API. What nicola is trying to do is slightly more subtle: he is trying to make the _channel_ be multi-technology aware, not the WifiPhy API and that is fairly different because it means that the wifi MAC layer is not impacted by nicola's proposal. > > Changeset of WifiPhyTag is > http://code.nsnam.org/timob/ns-3-wifiex/rev/90cc8f2ed1e8 > However reading WifiPhy.h is easier. > http://code.nsnam.org/timob/ns-3-wifiex/file/90cc8f2ed1e8/src/devices/wifi/wifi-phy.h > > So any ideas on these interfacing issues? I can see your good point about storing all tx parameters in a single structure. I think that passing such a structure around by value would be enough to improve the code readability. Giving polymorphic powers to this structure at the WifiPhy API level is misleaded I think because: - it is not enough to make that API really technology-independent (think, radio devices which can't control tx power, those which can control it in a very fine-grained way, those which can listen to multiple rx channels at the same time, frequency hoping, etc.) - the MAC layer still needs to set all the tx parameters in a way or another (using tags or something else) so, it still needs to know what kind of PHY technology it is talking to so, the MAC layer can't ignore the PHY technology, so, you have added all this complexity to have a beautiful abstract API but it does not allow you to write abstracted client code. I know that this is a bit unintuitive but moving the wifi keyword from the WifiPhy class to the WifiPhySendParameters class is not magically making the MAC abstracted from the PHY layer. Mathieu From mathieu.lacage at sophia.inria.fr Thu Mar 26 05:55:35 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 26 Mar 2009 13:55:35 +0100 Subject: [Ns-developers] [Fwd: Re: tag rework for next release] Message-ID: <1238072135.17312.66.camel@diese.inria.fr> oops, forgot to CC ns-dev -------------- next part -------------- An embedded message was scrubbed... From: Mathieu Lacage Subject: Re: [Ns-developers] tag rework for next release Date: Thu, 26 Mar 2009 13:55:12 +0100 Size: 1561 Url: http://mailman.isi.edu/pipermail/ns-developers/attachments/20090326/5e5c978e/attachment.mht From adrian at ieaa.org Thu Mar 26 08:50:55 2009 From: adrian at ieaa.org (Adrian Sai-Wah TAM) Date: Thu, 26 Mar 2009 11:50:55 -0400 Subject: [Ns-developers] Google SoC 2009 - Modeling routers In-Reply-To: <49CAB2ED.2030007@cs.wisc.edu> References: <49CAB2ED.2030007@cs.wisc.edu> Message-ID: On Wed, Mar 25, 2009 at 6:40 PM, Lorenzo De Carli wrote: > From what I understand now, a router should consist of a Node with a proper > NetDevice implementing the routing logic (much as a bridge is implemented as > a Node with a BridgeNetDevice attached). Therefore, the core part of the > work will be to derive a new class from the base NetDevice and implementing > the router model inside. Is this the correct way to look at the problem? Partially correct. But this is not sufficient to make a router. There are several issues cannot be addressed solely by the NetDevice, for example, routing logic is not in a NetDevice because a NetDevice is virtually connected to a physical link, which means a packet there is in post-routing stage. Also, because a NetDevice is a L2 device, suppose the routing is in L3, which means it is not appropriate to do there. For a router, some of the features that current NS3 lacks are (1) delay in route processing. Only queueing delay is modelled in NS3 but processing delay is not. (2) input buffering. Currently, when a packet arrive at a router, it is immediately routed and put into an output buffer. But sometimes, having input buffer is easier to do some functions. An example is the Ethernet PAUSE mechanism. When a Ethernet NetDevice want to pause its uplink to cease it from sending more packets/frames, it is not trivial to do in output buffering. You can find more issues if you compare a physical router and a NS3 node in detail. > If this is correct, I would like to know if there is any code and/or > documentation I should read to gather more detailed information. Also, I > have noticed that the model described in the paper has some inaccuracies (it > does not consider interferences from control traffic, it does not accurately > model losses from backplane contention, etc.). I expect that one of the > requirements will be to "tweak" the model during the implementation to > improve some of its weaknesses. Are there already some ideas about possible > improvements or alternative models? Besides the paper you mentioned, I think the paper about "Click" by Kohler et al can also give an overview of what shall be done by a router. Of course, if you are familiar with Cisco routers, you can think about what they do can't be done by NS3. Some starting point might be: 1. Can we route IP packets in parallel with MPLS frames? 2. Can we reassemble fragments in the middle of a route (for use in, e.g. firewall node)? 3. Can we do packet filtering, or QoS in NS3? 4. Can we do RED/ECN in NS3? My point is not to ask you to implement these, but whether the current architecture allows one to easily do these. Cheers, Adrian. From marcello.caleffi at unina.it Thu Mar 26 08:51:16 2009 From: marcello.caleffi at unina.it (Marcello Caleffi) Date: Thu, 26 Mar 2009 16:51:16 +0100 Subject: [Ns-developers] GSoc: P2P Projects In-Reply-To: References: <13786f330903240928w6b1da28bt832e6924258b434c@mail.gmail.com> Message-ID: <8E5822E7-1091-4C82-B0DB-13BD9B62417B@unina.it> Dear Swark, I'm giving you an overview of the research topic with a copy&paste, and as you can see, MP2P (mobile peer-to-peer) systems are related both with MANET routing and traditional P2P systems. From an operational point of view, the project requires to the student the implementation of a MP2P protocol, which means the implementation of the routing procedures as well as of the info dissemination & discovery functionalities. All the cited protocols are good candidates for the implementation. However, I think that it is more reasonable asking the student to implement a protocol which is already available as ns-2 code (often the papers give just an overview of all the stuffs needed to make an working protocol, and it is very hard to deduce the lacking parts). More questions and suggestions are ALWAYS welcome :-) << Peer-To-Peer (P2P) and Mobile Ad hoc NETworks (MANETs) share the same key concepts of self-organization and distributing computing, and both aim to provide connectivity in a completely decentralized environment [1], [2]. Moreover, both lack central entities to which delegate the management and the coordination of the network and relay on a time-variant topology. In fact, in P2P networks the time variability is due to joining/leaving peers, while in MANET ones it is due to both node mobility and propagation condition instability. Despite these similarities, the adoption of the P2P paradigm to disseminate and discover information in a MANET scenario rises to new and challenging problems [1], [3]. The main issue concerns the layer where they operate: P2Ps build and maintain overlay networks at the application-layer, assuming the presence of an underlying network routing which assures connectivity among nodes, while MANETs focus on providing a multi-hop wireless connectivity among nodes. This issue is a major problem in trying to couple a P2P overlay network over a MANET: in [4], [5] it has been proved that simply deploying P2P over MANETs may cause poor performances due to the lack of cooperation and communication between the two layers, causing so significant message overhead and redundancy. For these reasons, different cross-layer approaches have been presented and they can be classified according to the adopted solution for the resource discovery procedure. More specifically, in unstructured P2Ps, peers are unaware of the resources that neighboring peers in the overlay network maintain [6], [7]. So, they typically resolve search requests by means of flooding techniques and rely on resource replication to improve the lookup performance and reliability. Differently, in structured P2P networks peers have knowledge about the resources offered by overlay neighbors, usually by resorting to the Distributed Hash Table (DHT) paradigm and, therefore, the search requests are forwarded by means of unicast communications. Clearly, the scenarios where MANETS operate make unsuitable both flooding and replication mechanisms, except for small networks and/or high joining/leaving peer rates. In the last years structured P2P networks have gained attention: EKTA [8] and DPSR [9] integrate a Pastry-like [10] structured P2P protocol with the DSR routing algorithm, while CROSSRoad [11] integrates a Pastry-like DHT over the OLSR routing algorithm, and VRR [12] proposes a routing algorithm which provides indirect routing by resorting to a Pastry-like structure too. ITR (ATR) [13] shares several similarity with Kademlia [14] and MADPastry [15], [16] integrates the Pastry protocol with the AODV routing algorithm. [1] R. Schollmeier, I. Gruber, and M. Finkenzeller, ?Routing in mobile adhoc and peer-to-peer networks a comparison,? in Revised Papers from the NETWORKING 2002 Workshops on Web Engineering and Peer- to-Peer Computing. London, UK: Springer-Verlag, 2002, pp. 172?186. [2] A. Oram, Peer-to-Peer - Harnessing the power of disruptive technologies. O?Reillt, 2001. [3] A. C. Viana, M. D. de Amorim, S. Fdida, and J. F. de Rezende, ?Selforganization in spontaneous networks: the approach of dht-based routing protocols,? Ad Hoc Networks, vol. 3, no. 5, pp. 589?606, September 2005. [4] G. Ding and B. Bhargava, ?Peer-to-peer file-sharing over mobile ad hoc networks,? in PERCOMW ?04: Proceedings of the Second IEEE Annual Conference on Pervasive Computing and Communications Workshops. IEEE Computer Society, October 2004, pp. 104?108. [5] L. B. Oliveira, I. G. Siqueira, and A. A. F. Loureiro, ?On the performance of ad hoc routing protocols under a peer-to-peer application,? Journal of Parallel and Distributed Computing, vol. 65, no. 11, pp. 1337?1347, 2005. [6] M. Conti, E. Gregori, and G. Turi, ?A cross-layer optimization of gnutella for mobile ad hoc networks,? in MobiHoc ?05: Proceedings of the 6th ACM international symposium on Mobile ad hoc networking and computing, 2005, pp. 343?354. [7] B. Tang, Z. Zhou, A. Kashyap, and T. cker Chiueh, ?An integrated approach for p2p file sharing on multi-hop wireless networks,? in WiMob?2005: IEEE International Conference on Wireless And Mobile Computing, Networking And Communications, vol. 3, August 2005, pp. 268? 274. [8] H. Pucha, S. M. Das, and Y. C. Hu, ?Ekta: an efficient dht substrate for distributed applications in mobile ad hoc networks,? in WMCSA 2004: Sixth IEEE Workshop on Mobile Computing Systems and Applications, 2004, pp. 163?173. [9] H. Pucha, S. M. Das, and Y. Hu, ?Imposed route reuse in ad hoc network routing protocols using structured peer-to-peer overlay routing,? IEEE Transactions on Parallel and Distributed Systems, vol. 17, no. 12, pp. 1452?1467, 2006. [10] A. Rowstron and P. Druschel, ?Pastry: Scalable, decentralized object location and routing for large-scale peer-to-peer systems,? in IFIP/ACM International Conference on Distributed Systems Platforms (Middleware), Nov. 2001, pp. 329?350. [11] F. Delmastro, ?From pastry to crossroad: Cross-layer ring overlay for ad hoc networks,? in IEEE International Conference on Pervasive Computing and Communications Workshops, 2005, pp. 60?64. [12] M. Caesar, M. Castro, E. Nightingale, G. O?Shea, and A. Rowstron, ?Virtual ring routing: network routing inspired by dhts,? in SIGCOMM ?06: Proceedings of the 2006 conference on Applications, technologies, architectures, and protocols for computer communications, 2006, pp. 351?362. [13] M. Caleffi, L. Paura "P2P over MANET: Indirect Tree-based Routing" Proc. of IEEE PerCom '09: Seventh Annual IEEE International Conference on Pervasive Computing and Communications, Galveston TX (USA), March 9-13 2009. [14] P. Maymounkov and D. Mazi`eres, ?Kademlia: A peer-to-peer information system based on the xor metric,? in IPTPS: 1st International workshop on Peer-To-Peer Systems, 2002, pp. 53?65. [15] T. Zahn and J. Schiller, ?MADPastry: A DHT Substrate for Practicably Sized MANETs,? in Proc. of 5th Workshop on Applications and Services in Wireless Networks (ASWN2005), June 2005. [16] K. Takeshita, M. Sasabe, and H. Nakano, ?Mobile p2p networks for highly dynamic environments,? in PERCOM ?08: Proceedings of the 2008 Sixth Annual IEEE International Conference on Pervasive Computing and Communications, 2008, pp. 453?457. >> Il giorno 25/mar/09, alle ore 01:52, swark ha scritto: > Dear Marcello,Joseph, > I am very interesting in this project. My current research is > focus on P2P streaming area and I am implementing Kademlia on > FALPS. Is there any detail requirements for this project besides > the brief induction on the http://www.nsnam.org/wiki/index.php/ > GSOC2009Projects ? > Thank you very much. > > > Regards, > swark > swark2006 at gmail.com > 2009-03-25 > > ----- Original Message ----- > From: Joseph Kopena > To: ns-developers,ns-3-users > Sent: 2009-03-25, 00:28:58 > Subject: [Ns-developers] GSoc: P2P Projects > > > >> Hi folks, >> >> Marcello Caleffi has stepped forward to mentor a project on P2P >> systems, moving that into our priority project topics along with (in >> no particular order): Click integration, NSC, emulation, router >> models, MAC and PHY models. A project blurb has been added to the >> ideas page at [1]. Again, we stress that this project would focus on >> implementing or porting commonly used or cited work, protocols, and >> implementations. This is not an opening for a P2P research project, >> this is an opening to develop a toolset supporting a wide variety of >> P2P research projects. >> >> Thx again to Marcello! >> >> [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects >> >> -- >> - joe kopena >> right here and now From flaviokubota at gmail.com Thu Mar 26 04:56:46 2009 From: flaviokubota at gmail.com (Flavio Kubota) Date: Thu, 26 Mar 2009 08:56:46 -0300 Subject: [Ns-developers] GSoC: WiMAX Projects In-Reply-To: <13786f330903251123v26376c0dk3f7b277be427b8bb@mail.gmail.com> References: <13786f330903251123v26376c0dk3f7b277be427b8bb@mail.gmail.com> Message-ID: Hi all, I have studied the IEEE 802.16 standard for my master's thesis and I am currently working on scheduling in WiMAX networks. I am working with the WiMAX module for ns-2 developed by NIST. I'd like to develop the WiMAX module for ns-3, adding a scheduler based on priorities of queues based on their QoS requirements. The module will support grants and bandwidth allocation. I also plan to include propagation and error models. I have studied the models of ERCEG and COST 231 for the propagation. This two models were recommended by the document WiMAX System Evaluation Methodology of WiMAX Forum. I still don't know which error model to implement, but with the SNR, we can get the BER, and derive the PER. With the propagation model and error model, the packet loss would be more realistic. Another thing I would like to code is the change of modulation and coding(AMC) according to the channel quality or loss rate. I'm still studing WiMAX module for ns-3[ http://code.nsnam.org/iamine/ns-3-wimax/summary], but couldn't find these features implemented. I would like a feedback about these ideas. Is it good? Can I improve it? Best regards, Flavio Kubota On Wed, Mar 25, 2009 at 3:23 PM, Joseph Kopena wrote: > Hi folks, > > Juliana Freitag Borin has agreed to potentially mentor a GSoC project > on further development of the ns-3 WiMAX model(s). A project blurb > has been posted to the ideas list at [1]. This would be great for > this interested in the MAC layer, and increasing the number of models > available to ns-3 users. > > Thanks again to Juliana for stepping up to support this! > > [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects > > -- > - joe kopena > right here and now > From juliana at ic.unicamp.br Thu Mar 26 08:59:25 2009 From: juliana at ic.unicamp.br (Juliana Freitag Borin) Date: Thu, 26 Mar 2009 08:59:25 -0700 Subject: [Ns-developers] GSoC: WiMAX Projects: Uplink Scheduler for WiMAX In-Reply-To: References: Message-ID: <3cd643f90903260859v148873b2t5b921d9c40018ecc@mail.gmail.com> Hi Biswajit, you can take a look in this module http://www.lrc.ic.unicamp.br/wimax_ns2/ which implements a QoS uplink scheduler for the BS. Juliana. 2009/3/25 Biswajit Mazumder > Hi Everyone, > > I am interested in working on the Uplink Scheduler for WiMAX for the GSoC. > The website mentions that this might be accomplished by porting from an > available ns-2 WiMAX module. Which would be the best WiMAX module > implementation for ns-2 which I can take a look at? > Thanks and Regards, > Biswajit Mazumder > From ese.mike at gmail.com Thu Mar 26 09:24:12 2009 From: ese.mike at gmail.com (Miguel Angel Palomera =?UTF-8?B?UMOpcmV6?=) Date: Thu, 26 Mar 2009 10:24:12 -0600 Subject: [Ns-developers] GSoc: P2P Projects In-Reply-To: <8E5822E7-1091-4C82-B0DB-13BD9B62417B@unina.it> References: <13786f330903240928w6b1da28bt832e6924258b434c@mail.gmail.com> <8E5822E7-1091-4C82-B0DB-13BD9B62417B@unina.it> Message-ID: <20090326102412.44969a78@tux> Hi, I'm Miguel Palomera I only want to say thanks Marcello. You overview is exactly the match of my PhD research. A convergence between P2P and MANET networks. During the past mounths I have been trying to design a middleware based on services to MANET networks that also includes the packages routing as another service. Now more that ever I would like to participate in the Summer of Code. From juliana at ic.unicamp.br Thu Mar 26 09:38:56 2009 From: juliana at ic.unicamp.br (Juliana Freitag Borin) Date: Thu, 26 Mar 2009 09:38:56 -0700 Subject: [Ns-developers] GSoC: WiMAX Projects In-Reply-To: References: <13786f330903251123v26376c0dk3f7b277be427b8bb@mail.gmail.com> Message-ID: <3cd643f90903260938v27cfa8e5p682c7bb04d111b38@mail.gmail.com> Hi Flavio, > I'd like to develop the WiMAX module for ns-3, adding a scheduler based on > priorities of queues based on their QoS requirements. The module will > support grants and bandwidth allocation. > Just to make it clear, the resource allocation in the 802.16 standard is done by 3 schedulers, the uplink scheduler and the downlink scheduler at the BS, and the scheduler at the SSs. The idea in this project is to implement the uplink scheduler at the BS. There are many proposals in the literature, but I would suggest the one in [1], which is already implemented in [2], a WiMAX module for ns-2. [1] http://dx.doi.org/10.1109/GLOCOM.2007.476 [2] http://www.lrc.ic.unicamp.br/wimax_ns2/ > I also plan to include propagation and error models. I have studied the > models of ERCEG and COST 231 for the propagation. This two models were > recommended by the document WiMAX System Evaluation Methodology of WiMAX > Forum. I still don't know which error model to implement, but with the SNR, > we can get the BER, and derive the PER. With the propagation model and > error > model, the packet loss would be more realistic. > > Another thing I would like to code is the change of modulation and > coding(AMC) according to the channel quality or loss rate. > The propagation and error models as well as the AMC are very important features to make the simulation more realistic. But I think that considering the project timeline you could concentrate in one of them. One idea is to choose one of the propagation models you have already studied and describe how you would implement it. > > I'm still studing WiMAX module for ns-3[ > http://code.nsnam.org/iamine/ns-3-wimax/summary], but couldn't find these > features implemented. The paper in [3] can help you understand which features are already implemented. [3] ftp://ftp-sop.inria.fr/rodeo/turletti/simutools09.pdf Regards, Juliana. From ruturajmd at gmail.com Thu Mar 26 09:58:07 2009 From: ruturajmd at gmail.com (Ruturaj Dhekane) Date: Thu, 26 Mar 2009 22:28:07 +0530 Subject: [Ns-developers] GSoc: RTDS Message-ID: <955e31df0903260958j2020e329oa16ec3c6bfde321f@mail.gmail.com> Hi, I have certain doubts regarding the operation of RealTimeScheduler, and the Events. What constitutes an 'event' ? Does only packet transfer actions such as "send" and "recv" register as an event in the Queue? Who registers an event into the "queue"? As in, after my "sendTo" function call in an application, what is the process by which a event will be registered and what kind will it be? Is it of delivery time of the packet to next node? What is the "time stamping" procedure for an event? Do all the events with same timestamp get processed at the same time in ns-3 scheduling? What is the timestamp synchronised with, is the time stamping a "virtual time" process, as in counting seq Number or, is it the system clock based time stamping? The scheduler sleeps if the event is yet to be reached. suppose an application takes more time to process during an event step, and we cross the boundary of beginning of the next event, how is the clock resynchronised? What is the basis for routing? Who detects existence of a node, and a path to it? How is the channel to a particular node determined? Present assumptions before I discuss the initial ideas of RTDS proposal for GSoc 1. Only Send Recv commands are registering events. 2. All events with same time stamp will be executed together. Creation of a distributed simulation can have two approaches. 1. To transparently port all ns-3 simulations to a real time Distributed simulations. Hence no new changes to an existing code will be required. 2. To write a new simulator class providing the facilities as required by the project guidelines. Thus the application coder selects a choice of RTDS or normal Simulation. Task two, Is to divide the network among each system (shall call it as CNodes:computing nodes) that will run the simulation. This is to reduce the processing complexity at each CNode. This has two ways. 1. Upon execution of a simulation instance on a CNode, we pass command line parameters to the simulator so as to which ip addresses to activate on that CNode. 2.The simulator registers a group of IP according to its choice. The choice may be according to the design, such as first K IPs per node or grouping them according to addresses , say in groups of 8. Task 3 is to develop a global event scheduler, which will direct each CNode wake up and to carry on its processing. Assume two nodes A and B. Assume timestamping is based on each CNodes system clock. That means if a event is scheduled at time 0+4 secs on A, and 0+5 secs on B, it may or may not be causal. (am I right ?) There needs to be a method for causal execution of events in each CNode. This can be achieved using variations of vectored clocks. The RPyC based Back end shall interact with the Simulator module to 1. Take messages for nodes activated on other CNodes map them in their table to find which CNode it belongs to. 2. Make causal arrangements of messages. 3. Make causal sheduling of events. The RPyC service will boot before a simulation begins and register its components by broadcasting specific messages to each CNode. The service will need to elect an initiator to begin simulation. It shall take messages from heading outside and route them to the right CNode along the Internet path. Thus an understanding of routing is important, that is how simulator detects if the message can be delivered from A to B. Since there will be a base class handling these operations, The next step would be to route the packet to the RPyC service. Here it determines where the node B lies, whether on same CNode or a different CNode. and take necessary action. Each action will require it to continuously broadcast its virtual time, so as to be in Sync with the other CNodes and establish causal execution. (I am working on the method to achieve this without many complications, however, knowledge of timestamping is necessary for me to clearly define my algorithm, and hence the answers to the questions in begining are very important) The there will require considerable change in the simulator code. Creation of the RPyC based service, implementation of ordering protocol. A detailed architecture will be designed to make the work simpler. I have tried to put a rough sketch of my Idea regarding the project. Please feel free to query me so that I too understand it better and be able to frame clearer goals. Opinions suggestions and feedback is most important. (A very long mail :) ) Thanking you for your time, Regards Ruturaj. On Tue, Mar 24, 2009 at 1:12 PM, Mathieu Lacage < mathieu.lacage at sophia.inria.fr> wrote: > On Mon, 2009-03-23 at 21:29 +0530, Ruturaj Dhekane wrote: > > > I would like to know the exact specifications/requirements of RTDS > project. > > > A good way to figure out how to start on this project would be to look > at a simple case first: you want to run a simulation with two simulated > nodes interconnected by a single link. Each simulated node should run a > separate physical machine. Assume that each physical machine is > connected to the internet, that each of them has a routable ip address. > All packets going out of simulated node A should go through the internet > to simulated node B. Effectively, the internet connection between the > two physical machines will be the single link between the two simulated > nodes. The idea in this project is to: > 1) run both simulated nodes using the real time event scheduler > 2) encapsulate all packets from one simulated node to the other through > a udp or tcp connection to send them across the internet. > > Once you have figured out how to make this work for two simulated nodes > connected with a single link, you need to extend the solution to 3 > simulated nodes with 2 links ( A -- B -- C) and 2 physical machines (A+B > on one physical machine, C on another physical machine). > > Mathieu > > -- [Geekru2] From fakhriev at iitp.ru Thu Mar 26 06:04:14 2009 From: fakhriev at iitp.ru (Denis Fakhriev) Date: Thu, 26 Mar 2009 16:04:14 +0300 Subject: [Ns-developers] CS mechanism Message-ID: Hi! I'm doing research on the implementation of csma/cs mechanism in ns3 and I have a question about it. According to IEEE 802.11 standard, station can initiate packet transmission only if Phy State have been detected as IDLE. But what I've found is just comment > //NS_ASSERT (m_phy->IsStateIdle ()); in MacLow::StartTransmission. Has this rule been implemented in ns3 and if it has, please tell me where. Regards, Denis Fakhriev, IITP RAS From mathieu.lacage at sophia.inria.fr Thu Mar 26 11:15:28 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Thu, 26 Mar 2009 19:15:28 +0100 Subject: [Ns-developers] GSoc: RTDS In-Reply-To: <955e31df0903260958j2020e329oa16ec3c6bfde321f@mail.gmail.com> References: <955e31df0903260958j2020e329oa16ec3c6bfde321f@mail.gmail.com> Message-ID: <1238091328.7317.58.camel@mathieu-laptop> On Thu, 2009-03-26 at 22:28 +0530, Ruturaj Dhekane wrote: > Hi, > > I have certain doubts regarding the operation of RealTimeScheduler, > and the Events. > > What constitutes an 'event' ? see samples/main-simulator.cc for example code > Does only packet transfer actions such as "send" and "recv" register > as an event in the Queue? no. Many other kinds of events happen. 802.11 backoff events for example, etc. > Who registers an event into the "queue"? As in, after my "sendTo" > function call in an application, what is the process by which a event > will be registered and what kind will it be? Is it of delivery time of > the packet to next node? It depends on what protocols process the packet down the stack. The tcp layer could process outgoing packets only later. The 802.11 mac layer might need to wait until a backoff completes to send the packet, etc. > > What is the "time stamping" procedure for an event? Each event is assigned a unique expiration time made of a 32bit uid and a 64bit time. See src/simulator/default-simulator-impl.cc > Do all the events with same timestamp get processed at the same time > in ns-3 scheduling? Two events cannot share the exact same timestamp because the 32bit uid of an event is always unique. Two events could have the same time field of their timestamp in which case, they will be executed _at the same simulation time_. > What is the timestamp synchronised with, is the time stamping a > "virtual time" process, as in counting seq Number or, is it the system > clock based time stamping? I think you should read a bit the code in src/simulator/default-simulator.cc and src/simulator/realtime-simulator-impl.cc > The scheduler sleeps if the event is yet to be reached. suppose an > application takes more time to process during an event step, and we > cross the boundary of beginning of the next event, how is the clock > resynchronised? > > What is the basis for routing? There are currently 2 IP routing implementations: olsr and global. > Who detects existence of a node, and a path to it? this, of course, depends on the routing protocol. > > How is the channel to a particular node determined? both routing protocols are queried by the ip layer when packets must be forwarded. > Present assumptions before I discuss the initial ideas of RTDS > proposal for GSoc > 1. Only Send Recv commands are registering events. > 2. All events with same time stamp will be executed together. > > Creation of a distributed simulation can have two approaches. > 1. To transparently port all ns-3 simulations to a real time > Distributed simulations. Hence no new changes to an existing code will > be required. > > 2. To write a new simulator class providing the facilities as required > by the project guidelines. Thus the application coder selects a choice > of RTDS or normal Simulation. There is already a real time scheduler. You don't need to implement a new one. > > Task two, > Is to divide the network among each system (shall call it as > CNodes:computing nodes) that will run the simulation. This is to > reduce the processing complexity at each CNode. > > This has two ways. > 1. Upon execution of a simulation instance on a CNode, we pass command > line parameters to the simulator so as to which ip addresses to > activate on that CNode. > > 2.The simulator registers a group of IP according to its choice. The > choice may be according to the design, such as first K IPs per node or > grouping them according to addresses , say in groups of 8. > > Task 3 is to develop a global event scheduler, which will direct each > CNode wake up and to carry on its processing. This is not part of the scope of this project: this is project is about building a distributed realtime simulation which, by definition, is not deterministic and does not need a global event scheduler. > Assume two nodes A and B. > Assume timestamping is based on each CNodes system clock. > > That means if a event is scheduled at time 0+4 secs on A, and 0+5 secs > on B, it may or may not be causal. (am I right ?) > There needs to be a method for causal execution of events in each > CNode. RTDS simulations are not deterministic and are not fully reproducible. > This can be achieved using variations of vectored clocks. > > The RPyC based Back end shall interact with the Simulator module to > > 1. Take messages for nodes activated on other CNodes > map them in their table to find which CNode it belongs to. > 2. Make causal arrangements of messages. > 3. Make causal sheduling of events. No: the RPyC backend is there just to setup and start the overall simulation. packet communications are handled through a normal udp or tcp socket. > The RPyC service will boot before a simulation begins and register its > components by broadcasting specific messages to each CNode. > The service will need to elect an initiator to begin simulation. > > It shall take messages from heading outside and route them to the > right CNode along the Internet path. > > Thus an understanding of routing is important, that is how simulator > detects if the message can be delivered from A to B. > Since there will be a base class handling these operations, The next > step would be to route the packet to the RPyC service. > Here it determines where the node B lies, whether on same CNode or a > different CNode. and take necessary action. > > Each action will require it to continuously broadcast its virtual > time, so as to be in Sync with the other CNodes and establish causal > execution. There is no need for computing-node synchronization: we don't care if the simulation is not deterministic. > (I am working on the method to achieve this without many > complications, however, knowledge of timestamping is necessary for me > to clearly define my algorithm, and hence the answers to the questions > in begining are very important) > > The there will require considerable change in the simulator code. > Creation of the RPyC based service, implementation of ordering > protocol. > A detailed architecture will be designed to make the work simpler. This project does not need considerable changes in the simulator code: it is just about using existing components (the realtime scheduler), implementing a simple udp/tcp tunnel across physical machines, and forwarding packets to and from physical machines. As I said before, it will help if you actually take a simple example and try to figure out how it is expected to work. I mentionned a simple example: A - B where A is running on physical machine C and B is running on physical machine D. You must implement a tunneling NetDevice which will take packets going out of A and send them to another tunneling NetDevice in B through the physical link which interconnects C and D. Of course, a good application will consider other more complex examples. Mathieu From tjkopena at cs.drexel.edu Thu Mar 26 15:36:53 2009 From: tjkopena at cs.drexel.edu (Joseph Kopena) Date: Thu, 26 Mar 2009 18:36:53 -0400 Subject: [Ns-developers] Application & Protocol Visualization Message-ID: <13786f330903261536tdcf0a1eha5fc981cb11ab50a@mail.gmail.com> Hi folks, I've pushed up some code that may be useful or of interest to others, providing a very simple visualization tool for ns-3 simulations. There are two parts: - The logging API [1] - The (Gtk) playback program [2] A few usage notes are below. Some differences with previously posted ns-3 visualization tools include: - It's based around playback, rather than live display. Simulations produce an event log which is then run through a viewer program. - It supports mobility; more to the point, it's required---the display is entirely based around having coordinates for the nodes. - It's based around generic states that may be attributed to nodes and "links", which are then styled by the viewer. Those states are not tied to any particular meaning, layer, etc; the representation is based entirely on what states the simulation reports and how they have been styled. Links in particular have no intrinsic meaning, they're just a device the simulation can use to report information. For example, suppose I have a simulation running some neighbor discovery process and forwarding some data via aggregation nodes. I could log that information by: + Reporting links for discovered neighbors. + Using one link state for bidirectional links. + Using another link state for unidirectional links. + Attributing one state to nodes that are aggregation nodes. + Attributing one state to nodes that have received the data. In the style files I could then make bidirectional links bigger or a different color. Aggregation nodes could be square, and nodes that have received the data double bordered. As another example, MAC transmissions could be visualized by binding a function to a start TX tracepoint that sets a state on the node. Another function bound to a finish TX tracepoint or timeout could remove the state. Those states could then be associated with double bordering or coloring the node, etc. The main goal here is to support annotating and visualizing application and protocol events, rather than necessarily focusing on network traffic display. Other notes: - In general, tracepoints are the mechanism by which to visualize internals and/or to develop modules that can be visualized but should not be directly tied into the visualizer. - I expect at some point to add a "fade" style command to automatically remove states after a period of time, allowing them to be used more as event notifications than states. - There is support in the basic code for pausing, rewinding, etc; expect that to be connected up to the GUI sometime soon. This code is very much of a prototype nature. In particular, the parsing, style file formats, etc, are pretty trivial and quickly concocted. However, we're using this a bit here (Penn/Drexel), so it's under active development and I'll be happy to answer questions or try to fix problems. I also expect to add some small features here and there in the coming weeks, and would be happy to hear what people might find useful. Thx! [1] http://code.nsnam.org/tjkopena/ns-3-decorator3-api/ [2] http://code.nsnam.org/tjkopena/ns-3-decorator3/ ---------------------------------------------------------------- [ Logging ] - Download or clone the repository at [2]. It should build as usual. You should be able to simply pull the repository into your existing work repositories. There are no changes to the core code, just some additional files and slight additions to the wscript files. - The repository includes the (trivial) logging API, and an example program. API is in src/contrib/decorator-frontend.(cc|h). Example is in examples/decorator-adhoc.cc. The example creates some mobile nodes and then flips nodes and links back and forth between different states, with no connection to network or app events. - Once compiled, use the following to run the example program: ./waf --run "decorator-adhoc -nodes=16 -duration=120" It will produce a file 'decorator.log' which is the input to the visualization program. [ Visualization ] - Download or clone the visualizer from [1]. You will need the gtkmm development libraries to build the program (using make). - Run the following as a sample demonstration: ./bin/test-gui-playback -nodestyles tests/node-styles010 \ -linkstyles tests/link-styles010 \ tests/decorator.log The program has two optional parameters: -nodestyles tells the program to apply the given style file to node states. -linkstyles tells the program to apply the given style file to link states. The final command line parameter must be the log file to use. Details of the style files are commented on in the example files. ---------------------------------------------------------------- -- - joe kopena right here and now From raj.b at gatech.edu Thu Mar 26 22:15:28 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 27 Mar 2009 01:15:28 -0400 Subject: [Ns-developers] ns-3.4 Daily Status for Thursday, March 26, 2009 Message-ID: <12d69e490903262215y15365f00rf76e61ede2e1667c@mail.gmail.com> Dear All, Here is your daily update regarding the upcoming release. The bulk of the information will be kept up-to-date here: http://www.nsnam.org/wiki/index.php/Ns-3.4 I will keep emailing out this link along with status changes. News: ===== A release candidate was scheduled for today, but I am seeing local regression failure and am therefore unable to produce a release candidate. I am going to wait to see if the nightly regression tests pass, and if so, investigate more andmake the release candidate Friday morning, EDT. I believe we are on course to making the release schedule; the slated date is April 1st. Bugs: ===== There are now 6 P1 bugs in the tracker, and 4 lower priority P2 bugs. http://www.nsnam.org/wiki/index.php/Ns-3.4#Open_Blockers Three of the remaining involve the Cygwin build; these are (according to Craig) non-fatal errors for the build, i.e. ns-3.4 builds on Cygwin, BUT it spits out error messages. I think we could bump these down to P2 (i.e. they won't block the release and we can note in the release notes that there is a non-fatal issue in Cygwin). The three TCP bugs are still P1, and being worked on through the RC process. As of yet, I still do not believe these will cause the release to slip. Progress / Closed Bugs: ======================= One P2 bug regarding the tap bridge and virtual machines was closed out since the last email (bug 520). New Bugs: ========= A P2 bug has been filed. It is an enhancement to Wifi: http://www.nsnam.org/bugzilla/show_bug.cgi?id=531 Next Steps: =========== Since RC3 has slipped today, the plan is to release it tomorrow, pending fixing the regression issue. A full schedule of upcoming milestones can be found here: http://www.nsnam.org/wiki/index.php/Ns-3.4#The_ns-3.4_Release_Schedule The TCP bugs probably need to be resolved before the final release can be made. Thanks everyone! -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From ruben at net.t-labs.tu-berlin.de Thu Mar 26 23:53:10 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Fri, 27 Mar 2009 07:53:10 +0100 Subject: [Ns-developers] [Fwd: Re: tag rework for next release] In-Reply-To: <1238072135.17312.66.camel@diese.inria.fr> References: <1238072135.17312.66.camel@diese.inria.fr> Message-ID: <49CC77D6.700@net.t-labs.tu-berlin.de> If we start from Mathieu's proposal to have a RadioChannel class, then we would have the following, right? MAC class | PHY class | RadioChannel class Actually, we could even have the following MAC class | PHY class | RF class | RadioChannel class The RF class could contain the antenna radiation pattern and other weird stuff that could be implemented at some point. A MAC, PHY and RF class could be technology specific with an 80211MAC, an 80211PHY or a BluetoothMAC and BluetoothPHY. Now, for setting the parameters, say the transmission power or frequency, why not calling a setTxPower or setTxFrequency from the MAC before a call to send()? Instead of a send() with lots of parameters. For instance, at the transmitter side, before sending a packet to the lower layer, you set the parameters first. Of course, you still need a way at the receiver side to get the parameters with which the packet was sent. But, IMHO, having the MAC setting the parameters of the PHY and letting the receiver have a way to know what were the transmission parameters of a packet are two different things. Ruben On 3/26/09 1:55 PM, Mathieu Lacage wrote: > oops, forgot to CC ns-dev From mathieu.lacage at sophia.inria.fr Fri Mar 27 00:38:06 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Fri, 27 Mar 2009 08:38:06 +0100 Subject: [Ns-developers] CS mechanism In-Reply-To: References: Message-ID: <1238139486.4974.13.camel@diese.inria.fr> On Thu, 2009-03-26 at 16:04 +0300, Denis Fakhriev wrote: > I'm doing research on the implementation of csma/cs > mechanism in ns3 and I have a question about it. > According to IEEE 802.11 standard, station can initiate > packet transmission only if Phy > State have been detected as IDLE. But what I've found is > just comment > > //NS_ASSERT (m_phy->IsStateIdle ()); > in MacLow::StartTransmission. > Has this rule been implemented in ns3 and if it has, > please tell me where. See dcf-manager.cc Mathieu From Amine.Ismail at sophia.inria.fr Fri Mar 27 02:15:39 2009 From: Amine.Ismail at sophia.inria.fr (Mohamed Amine Ismail) Date: Fri, 27 Mar 2009 10:15:39 +0100 Subject: [Ns-developers] GSoC: WiMAX Projects In-Reply-To: <3cd643f90903260938v27cfa8e5p682c7bb04d111b38@mail.gmail.com> References: <13786f330903251123v26376c0dk3f7b277be427b8bb@mail.gmail.com> <3cd643f90903260938v27cfa8e5p682c7bb04d111b38@mail.gmail.com> Message-ID: <200903271015.39149.Amine.Ismail@sophia.inria.fr> Hi, I'am Mohamed Amine ISMAIL a Ph.D student at the INRIA. Actually I am working on the wimax module for ns-3. The current WiMAX module provides the main functionalities of the WiMAX standard. The core part of the MAC layer includes the generation of the MAC frames (in TDD mode) and the construction and transmission of the key MAC control messages (DL-MAP, UL-MAP, DCD, UCD, RNG-REQ and RNG-RSP). The Link Manager component at the SS and BS side handles the network entry and initialisation procedure that a new SS follows upon entering the WiMAX network. This procedure includes the scanning process and the initial ranging process. Once the network entry process is successful, the SS is assigned with a set of connections. This includes two connections for the management messages and a number of transport connections for the data traffic. Both SS and BS maintain their own connection managers. For the BS the connection manager handles the creation and management of all the connections associated to SSs registered with the BS. For SS the connection manager manages connection associated to the SS. The SS Manager component is maintained by the BS to access all the SSs currently registered to BS. The service flows are set up during the installation of the application. Once registered with BS the SS then requests for creation of an already set up service flow from BS, and BS then creates the service flow, registers the QoS parameters associated to it, and allocates service flow to SS. This whole process is done through the exchange of DSA (DSA-REQ, DSA-RSP and DSA-ACK) messages. The module supports all four scheduling services. Each service flow is associated to exactly one transport connection and one scheduling service. The QoS parameters associated to a service flow actually define the scheduling service it belongs to. Standard QoS parameters for UGS, rtPS, nrtPS and BE services, as specified in Tables 111a to 111d of the 802.16e amendment, are supported. The current WiMAX module provides two different versions of the PHY layer. The first one is a basic PHY implementation which simply forwards bursts received by the MAC layer ignoring any underlying PHY layer details. The second one is a more complete OFDM PHY layer, it uses external mathematics and signal processing library IT++ together with the LAPACK, BLAS and FFTW libraries. no propagation/error model has been considered, hence one of the future works is also to add support for a propagation/error model. Actually we are working on an IPCS classifier. The classifier is used to map the incoming packet to the appropriate service flow based on a set of criteria. The service flows are created at the scenarios setup and a bind function is developed to associate an IP traffic to a service flow based on the IP src,IP dst, protocol, port src, and port dst. The IPCS analyses the headers of the incoming IP packets from the upper layer and map them to the appropriate connexion. An other ongoing work is the development of the pcap tracing function for the wimax packets. The module currently lacks the implementations of : - fragmentation/defragmentation of PDU(s) - dynamic burst profile management - Propagation/error model - more sophisticated algorithm for the scheduler - more efficient algorithm for the bandwidth management mechanism Regards Amine From raj.b at gatech.edu Fri Mar 27 07:27:34 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 27 Mar 2009 10:27:34 -0400 Subject: [Ns-developers] ns-3.4 regression - RC3 postponed Message-ID: <12d69e490903270727q796f10dfy8305a88dfbf96a24@mail.gmail.com> Like the subject says, the overnight tests confirmed the regression failure I was seeing. ns-3.4 RC3 is postponed until we figure out this issue and get things building on darwin-ppc again. I am hopeful we get it sorted out today. Stay tuned. -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From gjcarneiro at gmail.com Fri Mar 27 07:33:22 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Fri, 27 Mar 2009 14:33:22 +0000 Subject: [Ns-developers] ns-3.4 regression - RC3 postponed In-Reply-To: <12d69e490903270727q796f10dfy8305a88dfbf96a24@mail.gmail.com> References: <12d69e490903270727q796f10dfy8305a88dfbf96a24@mail.gmail.com> Message-ID: I think the python bindings problem on mac osx should be fixed. I was fixing it more or less at the same time as the regression script was running, so I think the regression suite did not pick up my patch in time. 2009/3/27 Raj Bhattacharjea > Like the subject says, the overnight tests confirmed the regression > failure I was seeing. ns-3.4 RC3 is postponed until we figure out > this issue and get things building on darwin-ppc again. I am hopeful > we get it sorted out today. Stay tuned. > > -- > Raj Bhattacharjea > Georgia Institute of Technology > School of Electrical and Computer Engineering > Ph.D. Candidate > Systems Analyst > 404.894.2955 > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From raj.b at gatech.edu Fri Mar 27 07:45:52 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Fri, 27 Mar 2009 10:45:52 -0400 Subject: [Ns-developers] ns-3.4 regression - RC3 postponed In-Reply-To: References: <12d69e490903270727q796f10dfy8305a88dfbf96a24@mail.gmail.com> Message-ID: <12d69e490903270745y217b8d6tb251bb3accf8c40@mail.gmail.com> On Fri, Mar 27, 2009 at 10:33 AM, Gustavo Carneiro wrote: > I think the python bindings problem on mac osx should be fixed.? I was > fixing it more or less at the same time as the regression script was > running, so I think the regression suite did not pick up my patch in time. > Right then; I'll manually run the regression suite to make sure, and if so, here comes RC3! -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From swark2006 at gmail.com Fri Mar 27 08:36:07 2009 From: swark2006 at gmail.com (swark) Date: Fri, 27 Mar 2009 23:36:07 +0800 Subject: [Ns-developers] GSoc: P2P Projects References: <8E5822E7-1091-4C82-B0DB-13BD9B62417B@unina.it> Message-ID: Dear marcello, Thank you for your kindly guiding. I have a question: Which protocol should be implemented to the NS-3? ATR or MADPastry or some other protocol designated? Or even a protocol in the papers you listed? If the protocol is prearranged I can pull a focus on the protocol in advance and make it more suitable for the NS-3. More over, I think it is not a big problem to just implement a certain existing protocol to the NS-3. What I think more is what about implementing a simulation environment: There is a P2P creating helper which let the user set the number of the peer nodes, the type of P2P protocol (such as Chord, Pastry, etc) to use, and the probability distribution of nodes¡¯ joining and leaving activities, and a log tracer which could easily trace the activities of nodes in P2P layer. If this environment could be implemented, I think it can bring more convenience to all researchers in the P2P field and can also be conducive to the promotion of the NS-3. What do you think? Thank you very much. Regards, swark swark2006 at gmail.com 2009-03-27 ----- Original Message ----- From: Marcello Caleffi To: swark2006 Sent: 2009-03-26, 23:51:16 Subject: Re: [Ns-developers] GSoc: P2P Projects >Dear Swark, >I'm giving you an overview of the research topic with a copy&paste, >and as you can see, MP2P (mobile peer-to-peer) systems are related >both with MANET routing and traditional P2P systems. > From an operational point of view, the project requires to the >student the implementation of a MP2P protocol, which means the >implementation of the routing procedures as well as of the info >dissemination & discovery functionalities. >All the cited protocols are good candidates for the implementation. >However, I think that it is more reasonable asking the student to >implement a protocol which is already available as ns-2 code (often >the papers give just an overview of all the stuffs needed to make an >working protocol, and it is very hard to deduce the lacking parts). > >More questions and suggestions are ALWAYS welcome :-) > ><< >Peer-To-Peer (P2P) and Mobile Ad hoc NETworks (MANETs) share the same >key concepts of self-organization and distributing computing, and >both aim to provide connectivity in a completely decentralized >environment [1], [2]. >Moreover, both lack central entities to which delegate the management >and the coordination of the network and relay on a time-variant >topology. In fact, in P2P networks the time variability is due to >joining/leaving peers, while in MANET ones it is due to both node >mobility and propagation condition instability. >Despite these similarities, the adoption of the P2P paradigm to >disseminate and discover information in a MANET scenario rises to new >and challenging problems [1], [3]. The main issue concerns the layer >where they operate: P2Ps build and maintain overlay networks at the >application-layer, assuming the presence of an underlying network >routing which assures connectivity among nodes, while MANETs focus on >providing a multi-hop wireless connectivity among nodes. >This issue is a major problem in trying to couple a P2P overlay >network over a MANET: in [4], [5] it has been proved that simply >deploying P2P over MANETs may cause poor performances due to the lack >of cooperation and communication between the two layers, causing so >significant message overhead and redundancy. For these reasons, >different cross-layer approaches have been presented and they can be >classified according to the adopted solution for the resource >discovery procedure. >More specifically, in unstructured P2Ps, peers are unaware of the >resources that neighboring peers in the overlay network maintain [6], >[7]. So, they typically resolve search requests by means of flooding >techniques and rely on resource replication to improve the lookup >performance and reliability. Differently, in structured P2P networks >peers have knowledge about the resources offered by overlay >neighbors, usually by resorting to the Distributed Hash Table (DHT) >paradigm and, therefore, the search requests are forwarded by means >of unicast communications. >Clearly, the scenarios where MANETS operate make unsuitable both >flooding and replication mechanisms, except for small networks and/or >high joining/leaving peer rates. In the last years structured P2P >networks have gained attention: EKTA [8] and DPSR [9] integrate a >Pastry-like [10] structured P2P protocol with the DSR routing >algorithm, while CROSSRoad [11] integrates a Pastry-like DHT over the >OLSR routing algorithm, and VRR [12] proposes a routing algorithm >which provides indirect routing by resorting to a Pastry-like structure >too. ITR (ATR) [13] shares several similarity with Kademlia [14] and >MADPastry [15], [16] integrates the Pastry protocol with the AODV >routing algorithm. > >[1] R. Schollmeier, I. Gruber, and M. Finkenzeller, outing in >mobile adhoc and peer-to-peer networks a comparison,?in Revised >Papers from the NETWORKING 2002 Workshops on Web Engineering and Peer- >to-Peer Computing. London, UK: Springer-Verlag, 2002, pp. 172?86. >[2] A. Oram, Peer-to-Peer - Harnessing the power of disruptive >technologies. Oïúeillt, 2001. >[3] A. C. Viana, M. D. de Amorim, S. Fdida, and J. F. de Rezende, > elforganization in spontaneous networks: the approach of dht-based >routing protocols,?Ad Hoc Networks, vol. 3, no. 5, pp. 589?06, >September 2005. >[4] G. Ding and B. Bhargava, eer-to-peer file-sharing over mobile >ad hoc networks,?in PERCOMW ?4: Proceedings of the Second IEEE >Annual Conference on Pervasive Computing and Communications >Workshops. IEEE Computer Society, October 2004, pp. 104?08. >[5] L. B. Oliveira, I. G. Siqueira, and A. A. F. Loureiro, n the >performance of ad hoc routing protocols under a peer-to-peer >application,?Journal of Parallel and Distributed Computing, vol. 65, >no. 11, pp. 1337?347, 2005. >[6] M. Conti, E. Gregori, and G. Turi, ù› cross-layer optimization of >gnutella for mobile ad hoc networks,?in MobiHoc ?5: Proceedings of >the 6th ACM international symposium on Mobile ad hoc networking and >computing, 2005, pp. 343?54. >[7] B. Tang, Z. Zhou, A. Kashyap, and T. cker Chiueh, ù›n integrated >approach for p2p file sharing on multi-hop wireless networks,?in >WiMob?005: IEEE International Conference on Wireless And Mobile >Computing, Networking And Communications, vol. 3, August 2005, pp. >268?274. >[8] H. Pucha, S. M. Das, and Y. C. Hu, ùŸkta: an efficient dht >substrate for distributed applications in mobile ad hoc networks,?in >WMCSA 2004: Sixth IEEE Workshop on Mobile Computing Systems and >Applications, 2004, pp. 163?73. >[9] H. Pucha, S. M. Das, and Y. Hu, mposed route reuse in ad hoc >network routing protocols using structured peer-to-peer overlay >routing,?IEEE Transactions on Parallel and Distributed Systems, vol. >17, no. 12, pp. 1452?467, 2006. >[10] A. Rowstron and P. Druschel, astry: Scalable, decentralized >object location and routing for large-scale peer-to-peer systems,?in >IFIP/ACM International Conference on Distributed Systems Platforms >(Middleware), Nov. 2001, pp. 329?50. >[11] F. Delmastro, ù rom pastry to crossroad: Cross-layer ring >overlay for ad hoc networks,?in IEEE International Conference on >Pervasive Computing and Communications Workshops, 2005, pp. 60?4. >[12] M. Caesar, M. Castro, E. Nightingale, G. Oùnhea, and A. >Rowstron, irtual ring routing: network routing inspired by dhts,? >in SIGCOMM ?6: Proceedings of the 2006 conference on Applications, >technologies, >architectures, and protocols for computer communications, 2006, pp. >351?62. >[13] M. Caleffi, L. Paura "P2P over MANET: Indirect Tree-based >Routing" Proc. of IEEE PerCom '09: Seventh Annual IEEE International >Conference on Pervasive Computing and Communications, Galveston TX >(USA), March 9-13 2009. >[14] P. Maymounkov and D. Mazi`eres, ademlia: A peer-to-peer >information system based on the xor metric,?in IPTPS: 1st >International workshop on Peer-To-Peer Systems, 2002, pp. 53?5. >[15] T. Zahn and J. Schiller, ADPastry: A DHT Substrate for >Practicably Sized MANETs,?in Proc. of 5th Workshop on Applications >and Services in Wireless Networks (ASWN2005), June 2005. >[16] K. Takeshita, M. Sasabe, and H. Nakano, obile p2p networks for >highly dynamic environments,?in PERCOM ?8: Proceedings of the 2008 >Sixth Annual IEEE International Conference on Pervasive Computing and >Communications, 2008, pp. 453?57. > >> > > > >Il giorno 25/mar/09, alle ore 01:52, swark ha scritto: > >> Dear Marcello,Joseph, >> I am very interesting in this project. My current research is >> focus on P2P streaming area and I am implementing Kademlia on >> FALPS. Is there any detail requirements for this project besides >> the brief induction on the http://www.nsnam.org/wiki/index.php/ >> GSOC2009Projects ? >> Thank you very much. >> >> >> Regards, >> swark >> swark2006 at gmail.com >> 2009-03-25 >> >> ----- Original Message ----- >> From: Joseph Kopena >> To: ns-developers,ns-3-users >> Sent: 2009-03-25, 00:28:58 >> Subject: [Ns-developers] GSoc: P2P Projects >> >> >> >>> Hi folks, >>> >>> Marcello Caleffi has stepped forward to mentor a project on P2P >>> systems, moving that into our priority project topics along with (in >>> no particular order): Click integration, NSC, emulation, router >>> models, MAC and PHY models. A project blurb has been added to the >>> ideas page at [1]. Again, we stress that this project would focus on >>> implementing or porting commonly used or cited work, protocols, and >>> implementations. This is not an opening for a P2P research project, >>> this is an opening to develop a toolset supporting a wide variety of >>> P2P research projects. >>> >>> Thx again to Marcello! >>> >>> [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects >>> >>> -- >>> - joe kopena >>> right here and now > From adrian at ieaa.org Fri Mar 27 11:04:25 2009 From: adrian at ieaa.org (Adrian Sai-Wah TAM) Date: Fri, 27 Mar 2009 14:04:25 -0400 Subject: [Ns-developers] Google SoC 2009 - Modeling routers In-Reply-To: <49CD0974.7000104@cs.wisc.edu> References: <49CAB2ED.2030007@cs.wisc.edu> <49CD0974.7000104@cs.wisc.edu> Message-ID: Hi Lorenzo, > Thanks for the clarification. So, currently the IPv4 infrastructure is > implemented in IPv4L3Protocol, but queues are implemented in NetDevices > (layer II). Maybe the best way to approach this problem would be to extend > NetDevice adding input queues, and then to create a new Router object > sitting between NetDevice and Ipv4L3Protocol. This object could then add > custom delays (depending on the router model) before and after the routing > decision is made, decide which input packets are to be serviced first, > etc... As for queuing algorithms, I think they will be easily integrated in > this model. Since they are implemented by extending the Queue class, it > should be enough to configure the NetDevices to use a particular kind of > queue instead of another (e.g. RED instead of the basic FIFO). > > I hope all this makes sense... please stop me if I am going in the wrong > direction :-) I don't mind if you try this but personally I prefer not to change the NetDevice-Ipv4L3Protocol connection because this will break a lot of existing codes, Given that the Ipv4L3Protocol is currently doing the routing job, a possibility would be to make a delay over there instead of let the packet directly pass through. In NS3, we can make a function as a call-back of a event expiration, my raw thought is to do this in Ipv4L3Protocol: 1. A packet comes in to NetDevice 2. NetDevice pass on the Ipv4L3Protocol 3. Ipv4L3Protocol get the packet, schedule for a processing event at time t+delta 4. Upon t+delta, timer expire, Ipv4L3Protocol is called again to finish the processing 5. Route the packet as the consequence of the timer expiration I am not sure I have the best design, but at lease, this seems to me that we don't break the object-object interaction interface. > Summarizing what you said, I think there are two possible directions for a > GSoC project: > > 1) Given the current NS-3 architecture, provide support for implementing > detailed models of routers and other devices. I say "other devices" because, > for example, the PAUSE mechanism that you mentioned works at layer II and > could be useful not only for routers but also for switches. Another issue is > input queue management: as I said before, I think the best place to > implement those would be the NetDevice object. However, if QoS is needed the > layer III should be able to "peek" into the input queues and choose the next > best packet to forward. So maybe there is need for a more complex interface > between layer II and III. I agree with you. However, one issue to bear in mind is that, different people have different objectives for simulation. Some of them might not interested in those very detail and they prefer to have the simulation run faster. In that case, I would expect that we have a simple router module, which doesn't do much detail, and a detailed router module, which simulation more details. And these two are swappable and transparent to upper and lower layers. In that case, everyone would be happy. Of course, this seems to be (slightly) more work. > 2) Another possible GSoC project would be to implement a detailed router > model. The multi-server/multi-queue model from Infocom 2008 is nice but > lacks some features. Besides implementing the model, it would be interesting > to try to extend it, for example adding diffserv support. > > Ok, that's a lot of stuff :-D. My question now is: what is more useful for > ns-3 right now? Working on the architecture in general on a specific router > model? Maybe there is enough time to work on both aspects... but I think I > need some advice on this point. In other words, what would it be a realistic > goal for the GSoC project? > > Another doubt I have is the level of detail needed for the proposal. For > example, are some general idea about which model to implement, and how to do > it, enough? Or do I have to go more into details? What is more useful for NS-3? How much detail? I don't know. I have my own agenda and others have theirs. I am not sure about the preference. To the elegance, I think building a generic architecture first and base on the generic architecture to build something specific as an useful example looks more welcomed (e.g. to NS3 learners, because this looks more homogeneous and easier to understand). - Adrian. From raj.b at gatech.edu Fri Mar 27 21:01:35 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Sat, 28 Mar 2009 00:01:35 -0400 Subject: [Ns-developers] ns-3.4-RC3 Message-ID: <12d69e490903272101i72f7550x222ef764c4dbf606@mail.gmail.com> Its available at the regular locations. Via mercurial: http://code.nsnam.org/ns-3.4-RC3 Or via an all-in-one tarball: http://www.nsnam.org/releases/ns-allinone-3.4-RC3.tar.bz2 I'll be sending some email about the outstanding issues for making the final ns-3.4 release over the weekend. Enjoy! -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From lorenzo at cs.wisc.edu Fri Mar 27 10:14:28 2009 From: lorenzo at cs.wisc.edu (Lorenzo De Carli) Date: Fri, 27 Mar 2009 12:14:28 -0500 Subject: [Ns-developers] Google SoC 2009 - Modeling routers In-Reply-To: References: <49CAB2ED.2030007@cs.wisc.edu> Message-ID: <49CD0974.7000104@cs.wisc.edu> Adrian, thanks for your quick reply. I still have a couple more doubt... > Partially correct. But this is not sufficient to make a router. There > are several issues cannot be addressed solely by the NetDevice, for > example, routing logic is not in a NetDevice because a NetDevice is > virtually connected to a physical link, which means a packet there is > in post-routing stage. Also, because a NetDevice is a L2 device, > suppose the routing is in L3, which means it is not appropriate to do > there. Thanks for the clarification. So, currently the IPv4 infrastructure is implemented in IPv4L3Protocol, but queues are implemented in NetDevices (layer II). Maybe the best way to approach this problem would be to extend NetDevice adding input queues, and then to create a new Router object sitting between NetDevice and Ipv4L3Protocol. This object could then add custom delays (depending on the router model) before and after the routing decision is made, decide which input packets are to be serviced first, etc... As for queuing algorithms, I think they will be easily integrated in this model. Since they are implemented by extending the Queue class, it should be enough to configure the NetDevices to use a particular kind of queue instead of another (e.g. RED instead of the basic FIFO). I hope all this makes sense... please stop me if I am going in the wrong direction :-) > For a router, some of the features that current NS3 lacks are (1) > delay in route processing. Only queueing delay is modelled in NS3 but > processing delay is not. (2) input buffering. Currently, when a packet > arrive at a router, it is immediately routed and put into an output > buffer. But sometimes, having input buffer is easier to do some > functions. An example is the Ethernet PAUSE mechanism. When a Ethernet > NetDevice want to pause its uplink to cease it from sending more > packets/frames, it is not trivial to do in output buffering. > > Besides the paper you mentioned, I think the paper about "Click" by > Kohler et al can also give an overview of what shall be done by a > router. Of course, if you are familiar with Cisco routers, you can > think about what they do can't be done by NS3. Some starting point > might be: 1. Can we route IP packets in parallel with MPLS frames? 2. > Can we reassemble fragments in the middle of a route (for use in, e.g. > firewall node)? 3. Can we do packet filtering, or QoS in NS3? 4. Can > we do RED/ECN in NS3? > > My point is not to ask you to implement these, but whether the current > architecture allows one to easily do these. Summarizing what you said, I think there are two possible directions for a GSoC project: 1) Given the current NS-3 architecture, provide support for implementing detailed models of routers and other devices. I say "other devices" because, for example, the PAUSE mechanism that you mentioned works at layer II and could be useful not only for routers but also for switches. Another issue is input queue management: as I said before, I think the best place to implement those would be the NetDevice object. However, if QoS is needed the layer III should be able to "peek" into the input queues and choose the next best packet to forward. So maybe there is need for a more complex interface between layer II and III. 2) Another possible GSoC project would be to implement a detailed router model. The multi-server/multi-queue model from Infocom 2008 is nice but lacks some features. Besides implementing the model, it would be interesting to try to extend it, for example adding diffserv support. Ok, that's a lot of stuff :-D. My question now is: what is more useful for ns-3 right now? Working on the architecture in general on a specific router model? Maybe there is enough time to work on both aspects... but I think I need some advice on this point. In other words, what would it be a realistic goal for the GSoC project? Another doubt I have is the level of detail needed for the proposal. For example, are some general idea about which model to implement, and how to do it, enough? Or do I have to go more into details? Thanks in advance, Lorenzo From gucas.charley at gmail.com Sat Mar 28 08:06:33 2009 From: gucas.charley at gmail.com (charley liu) Date: Sat, 28 Mar 2009 23:06:33 +0800 Subject: [Ns-developers] GSOC2009-Generalized Router Models/Structure Message-ID: Hi,Nicola Baldo, Manuel Requena, Adrian Sai-wah Tam, Ruben Merz and Florian Westphal I am Charley(Chinese name: Zehua Liu),Instituteof Software Chinese Academy of Sciences under the leadship of Graduate University of Chinese Academy of Sciences. I looked through the project specifications for ns-3 and gathered some useful information about it in the past several days,I am thinking of apply for the generalized roter model/structure and network simulation cradle for IPv4* *project. I graduated from the computer science and technology department of Central South University in July, 2008. I become a graduate student of Graduate University of Chinese Academy of Sciences focus on data networking in the same year. After getting a good knowledge of the mainstream devices on network of Cisco and Huawei, I acquired the Intermediate Level Network Engineer Accreditation of Ministry of Information Industry of the People's Republic of China. I have a good command of C and C++ language. In spite of no usage of Python, I believe it is an easy thing for me to be familiar with it after usage of other object-oriented explanation of computer programming languages such as C++ and Java. In the later half of 2007, I did some research on a subject, which is focus on the changing of environment covered by mobile signal of Changsha, and provided a detect model to solve some exiting problems, giving a performance analysis to show its validity and high efficiency. I have an internship in a computer software development company for four months based on C++ and Java in the summer of 2008, one of the projects is AOL IM expressions. Since the second half of 2008 to now, I having doing some research on Train Communication Network based on IEC61375. I maintain a lot about TCP/IP and other protocol development, data networking, high fidelity simulation based on OPNET. Just because of this, I have prepared much about queuing theory, stochastic* *process, data networking, network design and performance analysis, so on and so forth. I am eager to participate in ns-3.To me, it is a golden opportunity to learn theory and practice in this subject. Except of that, developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends offer me new learning technology and experience sharing opportunities. Would you please give me some advices or a little more specification about generalized roter model/structure or network simulation cradle for IPv4,which the mentors expect for me?I believe I can implement the project in your kind help and useful advices. Thanks for your time. Best regards, Charley ** From fw at strlen.de Sat Mar 28 10:52:06 2009 From: fw at strlen.de (Florian Westphal) Date: Sat, 28 Mar 2009 18:52:06 +0100 Subject: [Ns-developers] GSOC2009-Generalized Router Models/Structure In-Reply-To: References: Message-ID: <20090328175206.GD21913@Chamillionaire.breakpoint.cc> charley liu wrote: > Would you please give me some advices or a little more specification > about generalized roter model/structure or network simulation cradle for > IPv4,which the mentors expect for me? For network simulation cradle, the first task would be to extend the glue code so one can assign routes to interfaces. (Essentially providing a replacement for linux-2.6.26/nsc/support.c:nsc_add_default_gw() in the nsc source). The IPv4 code itself is already there, creating a 2nd, 3rd, .. interface also works. The 2nd step is therefore to make this functionality available to the network simulator. This is probably more difficult than its sounds, because at the moment, NSC hooks into ns-3 in src/internet-stack/nsc-tcp-l4-protocol.cc, i.e. as a layer 4 protocol. This is outright wrong, as nsc is not a tcp stack; its not even limited to IP. How nsc should be made to fit into ns-3 specifically I do not know (yet -- maybe as a "nsc node"?). But I am sure we'll figure that out. In any case, routing is done by ns-3, which of course must not be the case once we can set up proper routes in NSC. There is also no relation between an ns-3 network interface and the nsc network interface(s). Other things that could be done in NSC itself: - add back support for traffic shapping/active queue management. You'd have to add the glue code needed to provide a kind of "tc" utility (ie. an API that allows to add qdiscs, etc.) Would make more sense to wait with this until nsc can be set up to do routing/packet forwarding,though). - add support to create "specific" interface types. nsc creates a dummy network device, i.e. a device that receives "complete" IP (or whatever L3 protocol) packets. This packet is then handed over to the network simulator. You could figure out how we can create eg. "Ethernet" interfaces so the NSC network stack does handle ARP for us. - add support for netfilter (e.g. NAT). Doesn't make sense at this time though, because we're limited to one network interface 8-) If you have specific questions, do not hesitate to ask. From marcello.caleffi at unina.it Sun Mar 29 03:20:04 2009 From: marcello.caleffi at unina.it (Marcello Caleffi) Date: Sun, 29 Mar 2009 12:20:04 +0200 Subject: [Ns-developers] GSoc: P2P Projects In-Reply-To: References: <8E5822E7-1091-4C82-B0DB-13BD9B62417B@unina.it> Message-ID: <871B6B16-1308-4C6F-8467-F54E4D1ACED1@unina.it> Dear Swark, it seems to me that you have very good experience in P2P systems, and clearly this is very useful in developing a MP2P routing protocol. However, it seems too that you are neglecting a lot of routing aspects, i.e. discovering the neighbors, estimating the link qualities from and to those neighbors, building the routing tables, disseminating the routing infos toward the networks, selecting the best route according to a certain metric which has to take into account the link qualities, and so on. My personal experience about implementing a routing protocol from just a research paper description, is one year of hard work about figuring how the protocol has to work. And my experience as research paper writer is too little space to explain in detail how things work. For these reasons I suggest (it is a suggestion, not a constraint) to implement a MP2P protocol which is already available as source code. ATR and MADPastry are. Clearly, this suggestion depends on the candidate experience: if he is a graduate or a Ph.D. student, if he has strong ability in C++ programming, if he has already designed a routing protocol or a P2P protocol, etc. IMHO PS Chord and Pastry are P2P applications, not MP2P protocols since they assume the presence of a routing underlay. PSS Ns-3 is the simulation environment. You don't need another one to manage such activities. Marcello Il giorno 27/mar/09, alle ore 16:36, swark ha scritto: > Dear marcello, > Thank you for your kindly guiding. I have a question: Which > protocol should be implemented to the NS-3? ATR or MADPastry or > some other protocol designated? Or even a protocol in the papers > you listed? If the protocol is prearranged I can pull a focus on > the protocol in advance and make it more suitable for the NS-3. > More over, I think it is not a big problem to just implement a > certain existing protocol to the NS-3. What I think more is what > about implementing a simulation environment: There is a P2P > creating helper which let the user set the number of the peer > nodes, the type of P2P protocol (such as Chord, Pastry, etc) to > use, and the probability distribution of nodes? joining and > leaving activities, and a log tracer which could easily trace the > activities of nodes in P2P layer. > If this environment could be implemented, I think it can bring > more convenience to all researchers in the P2P field and can also > be conducive to the promotion of the NS-3. > What do you think? > Thank you very much. > > Regards, > swark > swark2006 at gmail.com > 2009-03-27 > > > ----- Original Message ----- > From: Marcello Caleffi > To: swark2006 > Sent: 2009-03-26, 23:51:16 > Subject: Re: [Ns-developers] GSoc: P2P Projects > > > > >Dear Swark, > >I'm giving you an overview of the research topic with a copy&paste, > >and as you can see, MP2P (mobile peer-to-peer) systems are related > >both with MANET routing and traditional P2P systems. > > From an operational point of view, the project requires to the > >student the implementation of a MP2P protocol, which means the > >implementation of the routing procedures as well as of the info > >dissemination & discovery functionalities. > >All the cited protocols are good candidates for the implementation. > >However, I think that it is more reasonable asking the student to > >implement a protocol which is already available as ns-2 code (often > >the papers give just an overview of all the stuffs needed to make an > >working protocol, and it is very hard to deduce the lacking parts). > > > >More questions and suggestions are ALWAYS welcome :-) > > > ><< > >Peer-To-Peer (P2P) and Mobile Ad hoc NETworks (MANETs) share the same > >key concepts of self-organization and distributing computing, and > >both aim to provide connectivity in a completely decentralized > >environment [1], [2]. > >Moreover, both lack central entities to which delegate the management > >and the coordination of the network and relay on a time-variant > >topology. In fact, in P2P networks the time variability is due to > >joining/leaving peers, while in MANET ones it is due to both node > >mobility and propagation condition instability. > >Despite these similarities, the adoption of the P2P paradigm to > >disseminate and discover information in a MANET scenario rises to new > >and challenging problems [1], [3]. The main issue concerns the layer > >where they operate: P2Ps build and maintain overlay networks at the > >application-layer, assuming the presence of an underlying network > >routing which assures connectivity among nodes, while MANETs focus on > >providing a multi-hop wireless connectivity among nodes. > >This issue is a major problem in trying to couple a P2P overlay > >network over a MANET: in [4], [5] it has been proved that simply > >deploying P2P over MANETs may cause poor performances due to the lack > >of cooperation and communication between the two layers, causing so > >significant message overhead and redundancy. For these reasons, > >different cross-layer approaches have been presented and they can be > >classified according to the adopted solution for the resource > >discovery procedure. > >More specifically, in unstructured P2Ps, peers are unaware of the > >resources that neighboring peers in the overlay network maintain [6], > >[7]. So, they typically resolve search requests by means of flooding > >techniques and rely on resource replication to improve the lookup > >performance and reliability. Differently, in structured P2P networks > >peers have knowledge about the resources offered by overlay > >neighbors, usually by resorting to the Distributed Hash Table (DHT) > >paradigm and, therefore, the search requests are forwarded by means > >of unicast communications. > >Clearly, the scenarios where MANETS operate make unsuitable both > >flooding and replication mechanisms, except for small networks and/or > >high joining/leaving peer rates. In the last years structured P2P > >networks have gained attention: EKTA [8] and DPSR [9] integrate a > >Pastry-like [10] structured P2P protocol with the DSR routing > >algorithm, while CROSSRoad [11] integrates a Pastry-like DHT over the > >OLSR routing algorithm, and VRR [12] proposes a routing algorithm > >which provides indirect routing by resorting to a Pastry-like > structure > >too. ITR (ATR) [13] shares several similarity with Kademlia [14] and > >MADPastry [15], [16] integrates the Pastry protocol with the AODV > >routing algorithm. > > > >[1] R. Schollmeier, I. Gruber, and M. Finkenzeller, outing in > >mobile adhoc and peer-to-peer networks a comparison,?in Revised > >Papers from the NETWORKING 2002 Workshops on Web Engineering and > Peer- > >to-Peer Computing. London, UK: Springer-Verlag, 2002, pp. 172?86. > >[2] A. Oram, Peer-to-Peer - Harnessing the power of disruptive > >technologies. O?eillt, 2001. > >[3] A. C. Viana, M. D. de Amorim, S. Fdida, and J. F. de Rezende, > > elforganization in spontaneous networks: the approach of dht-based > >routing protocols,?Ad Hoc Networks, vol. 3, no. 5, pp. 589?06, > >September 2005. > >[4] G. Ding and B. Bhargava, eer-to-peer file-sharing over mobile > >ad hoc networks,?in PERCOMW ?4: Proceedings of the Second IEEE > >Annual Conference on Pervasive Computing and Communications > >Workshops. IEEE Computer Society, October 2004, pp. 104?08. > >[5] L. B. Oliveira, I. G. Siqueira, and A. A. F. Loureiro, n the > >performance of ad hoc routing protocols under a peer-to-peer > >application,?Journal of Parallel and Distributed Computing, vol. 65, > >no. 11, pp. 1337?347, 2005. > >[6] M. Conti, E. Gregori, and G. Turi, ? cross-layer optimization > of > >gnutella for mobile ad hoc networks,?in MobiHoc ?5: Proceedings of > >the 6th ACM international symposium on Mobile ad hoc networking and > >computing, 2005, pp. 343?54. > >[7] B. Tang, Z. Zhou, A. Kashyap, and T. cker Chiueh, ?n integrated > >approach for p2p file sharing on multi-hop wireless networks,?in > >WiMob?005: IEEE International Conference on Wireless And Mobile > >Computing, Networking And Communications, vol. 3, August 2005, pp. > >268?274. > >[8] H. Pucha, S. M. Das, and Y. C. Hu, ?kta: an efficient dht > >substrate for distributed applications in mobile ad hoc networks,?in > >WMCSA 2004: Sixth IEEE Workshop on Mobile Computing Systems and > >Applications, 2004, pp. 163?73. > >[9] H. Pucha, S. M. Das, and Y. Hu, mposed route reuse in ad hoc > >network routing protocols using structured peer-to-peer overlay > >routing,?IEEE Transactions on Parallel and Distributed Systems, vol. > >17, no. 12, pp. 1452?467, 2006. > >[10] A. Rowstron and P. Druschel, astry: Scalable, decentralized > >object location and routing for large-scale peer-to-peer systems,?in > >IFIP/ACM International Conference on Distributed Systems Platforms > >(Middleware), Nov. 2001, pp. 329?50. > >[11] F. Delmastro, ?rom pastry to crossroad: Cross-layer ring > >overlay for ad hoc networks,?in IEEE International Conference on > >Pervasive Computing and Communications Workshops, 2005, pp. 60?4. > >[12] M. Caesar, M. Castro, E. Nightingale, G. O?hea, and A. > >Rowstron, irtual ring routing: network routing inspired by dhts,? > >in SIGCOMM ?6: Proceedings of the 2006 conference on Applications, > >technologies, > >architectures, and protocols for computer communications, 2006, pp. > >351?62. > >[13] M. Caleffi, L. Paura "P2P over MANET: Indirect Tree-based > >Routing" Proc. of IEEE PerCom '09: Seventh Annual IEEE International > >Conference on Pervasive Computing and Communications, Galveston TX > >(USA), March 9-13 2009. > >[14] P. Maymounkov and D. Mazi`eres, ademlia: A peer-to-peer > >information system based on the xor metric,?in IPTPS: 1st > >International workshop on Peer-To-Peer Systems, 2002, pp. 53?5. > >[15] T. Zahn and J. Schiller, ADPastry: A DHT Substrate for > >Practicably Sized MANETs,?in Proc. of 5th Workshop on Applications > >and Services in Wireless Networks (ASWN2005), June 2005. > >[16] K. Takeshita, M. Sasabe, and H. Nakano, obile p2p networks for > >highly dynamic environments,?in PERCOM ?8: Proceedings of the 2008 > >Sixth Annual IEEE International Conference on Pervasive Computing and > >Communications, 2008, pp. 453?57. > > >> > > > > > > > >Il giorno 25/mar/09, alle ore 01:52, swark ha scritto: > > > >> Dear Marcello,Joseph, > >> I am very interesting in this project. My current research is > >> focus on P2P streaming area and I am implementing Kademlia on > >> FALPS. Is there any detail requirements for this project besides > >> the brief induction on the http://www.nsnam.org/wiki/index.php/ > >> GSOC2009Projects ? > >> Thank you very much. > >> > >> > >> Regards, > >> swark > >> swark2006 at gmail.com > >> 2009-03-25 > >> > >> ----- Original Message ----- > >> From: Joseph Kopena > >> To: ns-developers,ns-3-users > >> Sent: 2009-03-25, 00:28:58 > >> Subject: [Ns-developers] GSoc: P2P Projects > >> > >> > >> > >>> Hi folks, > >>> > >>> Marcello Caleffi has stepped forward to mentor a project on P2P > >>> systems, moving that into our priority project topics along > with (in > >>> no particular order): Click integration, NSC, emulation, router > >>> models, MAC and PHY models. A project blurb has been added to the > >>> ideas page at [1]. Again, we stress that this project would > focus on > >>> implementing or porting commonly used or cited work, protocols, > and > >>> implementations. This is not an opening for a P2P research > project, > >>> this is an opening to develop a toolset supporting a wide > variety of > >>> P2P research projects. > >>> > >>> Thx again to Marcello! > >>> > >>> [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects > >>> > >>> -- > >>> - joe kopena > >>> right here and now > > From swark2006 at gmail.com Sun Mar 29 08:32:45 2009 From: swark2006 at gmail.com (swark) Date: Sun, 29 Mar 2009 23:32:45 +0800 Subject: [Ns-developers] GSoc: P2P Projects References: <871B6B16-1308-4C6F-8467-F54E4D1ACED1@unina.it> Message-ID: Dear Marcello, As the key points did not lie on the routing aspect, so I do not mention it in the last mail. I know the differences between MP2P protocols and Chord etc. In that case, I would like to implement MADPastry in the NS-3 firstly since it is more popular than ATR and I am more familiar with it than ATR. Is this suitable for the goal of the project? Moreover, should I implement a stander MADPastry protocol or I could make some additional change to the protocol? As we know, the routing in MADPastry contains two layers: Overlay Routing and Underlay Routing. In Overlay Routing, the nodes in MANETs are divided into several clusters according to the distance. A landmark node is chosen in each cluster. A degenerate Pastry protocol is applied between the landmark nodes. In Underlay Routing, if the physical route for an overlay hop is unknown, if the destination of the packet is in the cluster of the current dealing node, a cluster-broadcast packet is sent to get the address of next hop, otherwise, the AODV route discovery is used. In this case, may I use other route discovery method if I could find some suitable and efficient method? PS. I am familiar with MANETs as I once wrote a proposal about implementing a P2P file share system in MANETs. Hope for your further guidances in doing the project. Thank you very much. Regards, swark 2009-03-29 ----- Original Message ----- From: Marcello Caleffi To: swark2006 Sent: 2009-03-29, 18:20:04 Subject: Re: [Ns-developers] GSoc: P2P Projects >Dear Swark, >it seems to me that you have very good experience in P2P systems, and >clearly this is very useful in developing a MP2P routing protocol. >However, it seems too that you are neglecting a lot of routing >aspects, i.e. discovering the neighbors, estimating the link >qualities from and to those neighbors, building the routing tables, >disseminating the routing infos toward the networks, selecting the >best route according to a certain metric which has to take into >account the link qualities, and so on. >My personal experience about implementing a routing protocol from >just a research paper description, is one year of hard work about >figuring how the protocol has to work. And my experience as research >paper writer is too little space to explain in detail how things >work. For these reasons I suggest (it is a suggestion, not a >constraint) to implement a MP2P protocol which is already available >as source code. ATR and MADPastry are. >Clearly, this suggestion depends on the candidate experience: if he >is a graduate or a Ph.D. student, if he has strong ability in C++ >programming, if he has already designed a routing protocol or a P2P >protocol, etc. > >IMHO > >PS Chord and Pastry are P2P applications, not MP2P protocols since >they assume the presence of a routing underlay. >PSS Ns-3 is the simulation environment. You don't need another one to >manage such activities. > >Marcello > >Il giorno 27/mar/09, alle ore 16:36, swark ha scritto: > >> Dear marcello, >> Thank you for your kindly guiding. I have a question: Which >> protocol should be implemented to the NS-3? ATR or MADPastry or >> some other protocol designated? Or even a protocol in the papers >> you listed? If the protocol is prearranged I can pull a focus on >> the protocol in advance and make it more suitable for the NS-3. >> More over, I think it is not a big problem to just implement a >> certain existing protocol to the NS-3. What I think more is what >> about implementing a simulation environment: There is a P2P >> creating helper which let the user set the number of the peer >> nodes, the type of P2P protocol (such as Chord, Pastry, etc) to >> use, and the probability distribution of nodes¡¯ joining and >> leaving activities, and a log tracer which could easily trace the >> activities of nodes in P2P layer. >> If this environment could be implemented, I think it can bring >> more convenience to all researchers in the P2P field and can also >> be conducive to the promotion of the NS-3. >> What do you think? >> Thank you very much. >> >> Regards, >> swark >> swark2006 at gmail.com >> 2009-03-27 >> >> >> ----- Original Message ----- >> From: Marcello Caleffi >> To: swark2006 >> Sent: 2009-03-26, 23:51:16 >> Subject: Re: [Ns-developers] GSoc: P2P Projects >> >> >> >> >Dear Swark, >> >I'm giving you an overview of the research topic with a copy&paste, >> >and as you can see, MP2P (mobile peer-to-peer) systems are related >> >both with MANET routing and traditional P2P systems. >> > From an operational point of view, the project requires to the >> >student the implementation of a MP2P protocol, which means the >> >implementation of the routing procedures as well as of the info >> >dissemination & discovery functionalities. >> >All the cited protocols are good candidates for the implementation. >> >However, I think that it is more reasonable asking the student to >> >implement a protocol which is already available as ns-2 code (often >> >the papers give just an overview of all the stuffs needed to make an >> >working protocol, and it is very hard to deduce the lacking parts). >> > >> >More questions and suggestions are ALWAYS welcome :-) >> > >> ><< >> >Peer-To-Peer (P2P) and Mobile Ad hoc NETworks (MANETs) share the same >> >key concepts of self-organization and distributing computing, and >> >both aim to provide connectivity in a completely decentralized >> >environment [1], [2]. >> >Moreover, both lack central entities to which delegate the management >> >and the coordination of the network and relay on a time-variant >> >topology. In fact, in P2P networks the time variability is due to >> >joining/leaving peers, while in MANET ones it is due to both node >> >mobility and propagation condition instability. >> >Despite these similarities, the adoption of the P2P paradigm to >> >disseminate and discover information in a MANET scenario rises to new >> >and challenging problems [1], [3]. The main issue concerns the layer >> >where they operate: P2Ps build and maintain overlay networks at the >> >application-layer, assuming the presence of an underlying network >> >routing which assures connectivity among nodes, while MANETs focus on >> >providing a multi-hop wireless connectivity among nodes. >> >This issue is a major problem in trying to couple a P2P overlay >> >network over a MANET: in [4], [5] it has been proved that simply >> >deploying P2P over MANETs may cause poor performances due to the lack >> >of cooperation and communication between the two layers, causing so >> >significant message overhead and redundancy. For these reasons, >> >different cross-layer approaches have been presented and they can be >> >classified according to the adopted solution for the resource >> >discovery procedure. >> >More specifically, in unstructured P2Ps, peers are unaware of the >> >resources that neighboring peers in the overlay network maintain [6], >> >[7]. So, they typically resolve search requests by means of flooding >> >techniques and rely on resource replication to improve the lookup >> >performance and reliability. Differently, in structured P2P networks >> >peers have knowledge about the resources offered by overlay >> >neighbors, usually by resorting to the Distributed Hash Table (DHT) >> >paradigm and, therefore, the search requests are forwarded by means >> >of unicast communications. >> >Clearly, the scenarios where MANETS operate make unsuitable both >> >flooding and replication mechanisms, except for small networks and/or >> >high joining/leaving peer rates. In the last years structured P2P >> >networks have gained attention: EKTA [8] and DPSR [9] integrate a >> >Pastry-like [10] structured P2P protocol with the DSR routing >> >algorithm, while CROSSRoad [11] integrates a Pastry-like DHT over the >> >OLSR routing algorithm, and VRR [12] proposes a routing algorithm >> >which provides indirect routing by resorting to a Pastry-like >> structure >> >too. ITR (ATR) [13] shares several similarity with Kademlia [14] and >> >MADPastry [15], [16] integrates the Pastry protocol with the AODV >> >routing algorithm. >> > >> >[1] R. Schollmeier, I. Gruber, and M. Finkenzeller, outing in >> >mobile adhoc and peer-to-peer networks a comparison,?in Revised >> >Papers from the NETWORKING 2002 Workshops on Web Engineering and >> Peer- >> >to-Peer Computing. London, UK: Springer-Verlag, 2002, pp. 172?86. >> >[2] A. Oram, Peer-to-Peer - Harnessing the power of disruptive >> >technologies. Oïúeillt, 2001. >> >[3] A. C. Viana, M. D. de Amorim, S. Fdida, and J. F. de Rezende, >> > elforganization in spontaneous networks: the approach of dht-based >> >routing protocols,?Ad Hoc Networks, vol. 3, no. 5, pp. 589?06, >> >September 2005. >> >[4] G. Ding and B. Bhargava, eer-to-peer file-sharing over mobile >> >ad hoc networks,?in PERCOMW ?4: Proceedings of the Second IEEE >> >Annual Conference on Pervasive Computing and Communications >> >Workshops. IEEE Computer Society, October 2004, pp. 104?08. >> >[5] L. B. Oliveira, I. G. Siqueira, and A. A. F. Loureiro, n the >> >performance of ad hoc routing protocols under a peer-to-peer >> >application,?Journal of Parallel and Distributed Computing, vol. 65, >> >no. 11, pp. 1337?347, 2005. >> >[6] M. Conti, E. Gregori, and G. Turi, ù› cross-layer optimization >> of >> >gnutella for mobile ad hoc networks,?in MobiHoc ?5: Proceedings of >> >the 6th ACM international symposium on Mobile ad hoc networking and >> >computing, 2005, pp. 343?54. >> >[7] B. Tang, Z. Zhou, A. Kashyap, and T. cker Chiueh, ù›n integrated >> >approach for p2p file sharing on multi-hop wireless networks,?in >> >WiMob?005: IEEE International Conference on Wireless And Mobile >> >Computing, Networking And Communications, vol. 3, August 2005, pp. >> >268?274. >> >[8] H. Pucha, S. M. Das, and Y. C. Hu, ùŸkta: an efficient dht >> >substrate for distributed applications in mobile ad hoc networks,?in >> >WMCSA 2004: Sixth IEEE Workshop on Mobile Computing Systems and >> >Applications, 2004, pp. 163?73. >> >[9] H. Pucha, S. M. Das, and Y. Hu, mposed route reuse in ad hoc >> >network routing protocols using structured peer-to-peer overlay >> >routing,?IEEE Transactions on Parallel and Distributed Systems, vol. >> >17, no. 12, pp. 1452?467, 2006. >> >[10] A. Rowstron and P. Druschel, astry: Scalable, decentralized >> >object location and routing for large-scale peer-to-peer systems,?in >> >IFIP/ACM International Conference on Distributed Systems Platforms >> >(Middleware), Nov. 2001, pp. 329?50. >> >[11] F. Delmastro, ù rom pastry to crossroad: Cross-layer ring >> >overlay for ad hoc networks,?in IEEE International Conference on >> >Pervasive Computing and Communications Workshops, 2005, pp. 60?4. >> >[12] M. Caesar, M. Castro, E. Nightingale, G. Oùnhea, and A. >> >Rowstron, irtual ring routing: network routing inspired by dhts,? >> >in SIGCOMM ?6: Proceedings of the 2006 conference on Applications, >> >technologies, >> >architectures, and protocols for computer communications, 2006, pp. >> >351?62. >> >[13] M. Caleffi, L. Paura "P2P over MANET: Indirect Tree-based >> >Routing" Proc. of IEEE PerCom '09: Seventh Annual IEEE International >> >Conference on Pervasive Computing and Communications, Galveston TX >> >(USA), March 9-13 2009. >> >[14] P. Maymounkov and D. Mazi`eres, ademlia: A peer-to-peer >> >information system based on the xor metric,?in IPTPS: 1st >> >International workshop on Peer-To-Peer Systems, 2002, pp. 53?5. >> >[15] T. Zahn and J. Schiller, ADPastry: A DHT Substrate for >> >Practicably Sized MANETs,?in Proc. of 5th Workshop on Applications >> >and Services in Wireless Networks (ASWN2005), June 2005. >> >[16] K. Takeshita, M. Sasabe, and H. Nakano, obile p2p networks for >> >highly dynamic environments,?in PERCOM ?8: Proceedings of the 2008 >> >Sixth Annual IEEE International Conference on Pervasive Computing and >> >Communications, 2008, pp. 453?57. >> > >> >> > >> > >> > >> >Il giorno 25/mar/09, alle ore 01:52, swark ha scritto: >> > >> >> Dear Marcello,Joseph, >> >> I am very interesting in this project. My current research is >> >> focus on P2P streaming area and I am implementing Kademlia on >> >> FALPS. Is there any detail requirements for this project besides >> >> the brief induction on the http://www.nsnam.org/wiki/index.php/ >> >> GSOC2009Projects ? >> >> Thank you very much. >> >> >> >> >> >> Regards, >> >> swark >> >> swark2006 at gmail.com >> >> 2009-03-25 >> >> >> >> ----- Original Message ----- >> >> From: Joseph Kopena >> >> To: ns-developers,ns-3-users >> >> Sent: 2009-03-25, 00:28:58 >> >> Subject: [Ns-developers] GSoc: P2P Projects >> >> >> >> >> >> >> >>> Hi folks, >> >>> >> >>> Marcello Caleffi has stepped forward to mentor a project on P2P >> >>> systems, moving that into our priority project topics along >> with (in >> >>> no particular order): Click integration, NSC, emulation, router >> >>> models, MAC and PHY models. A project blurb has been added to the >> >>> ideas page at [1]. Again, we stress that this project would >> focus on >> >>> implementing or porting commonly used or cited work, protocols, >> and >> >>> implementations. This is not an opening for a P2P research >> project, >> >>> this is an opening to develop a toolset supporting a wide >> variety of >> >>> P2P research projects. >> >>> >> >>> Thx again to Marcello! >> >>> >> >>> [1] http://www.nsnam.org/wiki/index.php/GSOC2009Projects >> >>> >> >>> -- >> >>> - joe kopena >> >>> right here and now >> > > From paolo.pilia at telecompress.net Sun Mar 29 09:18:43 2009 From: paolo.pilia at telecompress.net (paolo.pilia@telecompress.net) Date: Sun, 29 Mar 2009 18:18:43 +0200 Subject: [Ns-developers] GSoC + WiPreSS Message-ID: <20090329181843.3w9mfsk7l0kwosws@webmail.telecompress.net> Dear NS3 developers, I want inform ns-3 developers about the new project WiPreSS ( Wireless Prediction and Simulation Software - info on telecompress dot net). I'm working to integrate ns-3 for simulation. At this moment the radio propagation tool of ns3 is so poor. I'm going to register in socghop and present my candidature as student for GSoC on antennas module. Regards, Paolo Pilia From renhao2008 at gmail.com Sun Mar 29 19:47:57 2009 From: renhao2008 at gmail.com (Tomren) Date: Mon, 30 Mar 2009 10:47:57 +0800 Subject: [Ns-developers] can't find NS3 List when I am going to submit my proposal Message-ID: <86d2e8120903291947j340f6219sb324fa20c34c96e3@mail.gmail.com> Hi,all: I want to send proposal to NS3 project, but I can't find in GSoC List when I am going to write my idea. I don't know why, can anybody help me? Thank you! From gucas.charley at gmail.com Sun Mar 29 21:57:10 2009 From: gucas.charley at gmail.com (charley liu) Date: Mon, 30 Mar 2009 12:57:10 +0800 Subject: [Ns-developers] Gsoc2009:Network Simulation Cradle for IPv4 Message-ID: Dear Florian Thanks for your specification in detail.I have already submit my student proposal for the project network simulation cradle for IPv4.Based on your kind reply and several related literature,I have a much clearer direction for this project.In order to make SNC functionality available to the network simulator,do you think whether the method provided an agent between NSC and ns-3 is practicable?The agent as a bridge to build a relation between NSC and ns-3 so as to realize that NSC is made to fit into ns-3. Do you think there is something else I should go through and you would like to suggest me some more readings? Best regards, Charley liu from China From fw at strlen.de Mon Mar 30 02:47:27 2009 From: fw at strlen.de (Florian Westphal) Date: Mon, 30 Mar 2009 11:47:27 +0200 Subject: [Ns-developers] Gsoc2009:Network Simulation Cradle for IPv4 In-Reply-To: References: Message-ID: <20090330094727.GF21913@Chamillionaire.breakpoint.cc> charley liu wrote: > for this project.In order to make SNC functionality available to the network > simulator,do you think whether the method provided an agent between NSC and > ns-3 is practicable?The agent as a bridge to build a relation between NSC > and ns-3 so as to realize that NSC is made to fit into ns-3. I'm not sure how that would look like. Imagine you're setting up a node with two interfaces, configure it to use NSC/Linux-2.6.26, and do IPv4 forwarding. To make this work, NSC will have to be told about those interfaces, and their IP addresses (and routes). So, you need a 1:1 mapping of "ns-3" and "nsc" interfaces, i.e. your agent needs to know what an ns-3 interface is, and nsc will have to be able to tell your agent that "packet X left the nsc stack via device 'nsc1'" (or whatever the interface identifier is). This is already done for sockets, i.e. every ns-3 socket object of a nsc-enabled node maps to a NSC socket of that particular stack (basically the file descriptor). I believe that the implementation of a new node class is the best approach to deal with interface mapping, but maybe someone else has a better idea. > Do you think there is something else I should go through and you would like > to suggest me some more readings? Did you take a look at the nsc page on the nsnam wiki? It has some docs on how NSC currently interfaces with ns3. Also, I suspect its useful to see of nodes/interfaces and the ip-stack are connected together in ns-3. From karan.verma86 at gmail.com Sun Mar 29 10:19:41 2009 From: karan.verma86 at gmail.com (karan verma) Date: Sun, 29 Mar 2009 22:49:41 +0530 Subject: [Ns-developers] GSoC 09: Reactive Routing Protocols In-Reply-To: <13786f330903251535i49481e91of88cb55b27db2999@mail.gmail.com> References: <993601c10903241033h3436c58cxfb89003a2c9ec3a@mail.gmail.com> <13786f330903251535i49481e91of88cb55b27db2999@mail.gmail.com> Message-ID: <993601c10903291019i2c4d3100qaeb9cc8eed2b341c@mail.gmail.com> Hi Joseph Thank you for the valuable advice. I have submitted my proposal keeping in mind the points that you highlighted. Yet this is only my first draft, please give your comments so that I can edit it before April 3rd and make it a competitive one. I also wanted to know that has any mentor been assigned to this particular project. On Thu, Mar 26, 2009 at 4:05 AM, Joseph Kopena wrote: > On Tue, Mar 24, 2009 at 1:33 PM, karan verma > wrote: > > I read the ideas list and found the project idea to implement > reactive > > routing protocols for ns-3 very relevant to my interests and experience. > > Previously I have worked on glomosim to implement a fault tolerant > routing > > protocol for manets, which involved learning from and modification of > > existing routing protocols like aodv and dsr. > > > > I request the mentors to highlight the challanges one would face while > going > > through with the project; this would greatly help me make a good > proposal. > > Hi Karan, > > In some respects this is a relatively straightforward project, with > clearly definable goals. The basic goal is to extend the library of > routing protocols available within ns-3. They should be relatively > stand alone, and much can be learned quickly from the existing OLSR > implementation. > > A good proposal in this area will include: > > - Identifying a set of protocols to implement, with brief rational > why, and some demonstration of at least minimal familiarity of the > protocols and routing in general. > > - Notes on components required to implement those protocols. An > interesting element here that might complement other work is > identifying common sub-components required by different protocols that > could be developed and re-used. Showing some conception of what is > required to implement such protocols in ns-3, i.e., where the > connections are to the core system, is also important. > > - Some plan for demonstrating the developed protocols, e.g., repeating > published comparisons. > > -- > - joe kopena > right here and now > -- thanks & regards Karan Verma From young.lauyoung at gmail.com Sun Mar 29 19:36:31 2009 From: young.lauyoung at gmail.com (yang liu) Date: Mon, 30 Mar 2009 10:36:31 +0800 Subject: [Ns-developers] GSoC:P2P Group Message-ID: <42b4c3ff0903291936j5f796cdeqf601c429e89f0301@mail.gmail.com> Dear All, I want to apply for a position in the P2P group. I want to state my proposal briefly in the following, any suggestion is welcomed. 1. As mentioned in my background (at the below), I want to add the VoIP over P2P part into the P2P system; The most promising protocol which is adapted by AOL and MSN that I want to add into the NS3 is SIP; 2. Second, I want to enhance the communication security of the P2P network; as the security problem becomes more and more significant for VANETs (actually, the VANETs are built up for security concern), the simulation in this environment becomes more and more important. The first protocol jump into my mind to modify the NS3 is IPsec or some other VPN implementations; 3. Third, I want to develop and add in an efficient collision avoidance mechanism. An improvement in MAC layer collision avoidance in P2P system is very significant for improving the throughput and clients? service efficiency. As my major is mostly about computer communication, I have developed my interets in wireless communication when I was on my exchange to Hong Kong University. Then I attend the wireless lab under the guidance of Dr.Lam and my focus is VoIP over P2P. This experience really sparks my passion and creativity on wireless networks. After I get back from HK, I joined my home department?s wireless laboratory doing some research and simulation on VANETs to futher my interest. This is also what I?m doing right now. After read your project?s proposal, I was really excited about your project. Actually, I?m making a simulation platform with several other research students; this project will emphasize on the security concerns of this new model; and right now I?m focusing on the physical and MAC layer?s building. And after reading some materials, we decide to choose a combination of NS2 and SUMO as our base model. In order to finish and refine the project what I?m doing, I have read some source code about NS2, and off course many materials related with NS2, VANETs, IEEE 802.11 standards and the 1609 serials, etc. I?m sure I have good knowledge in all these related areas. I believe what I?m doing now and what I?m going to do in the near futher have a lot to do with your project. This will be a win-win result for us. I?m confident that I?m qualified for this position and just the person you?re looking for. Regards, Young Lau -- Young Lau School of Information Security Engineering Shanghai Jiao Tong University Dongchuan Road 800, Minhang From ljerezchaves at gmail.com Sun Mar 29 20:16:07 2009 From: ljerezchaves at gmail.com (Luciano Jerez Chaves) Date: Mon, 30 Mar 2009 00:16:07 -0300 Subject: [Ns-developers] GSoC 2009 - Minstrel rate control algorithm Message-ID: Hi Ns-developers, My name is Luciano and I am a MSc Computer Science student at University of Campinas, Brazil. I'm working with Rate Adaptation solutions to wireless networks in my master's thesis and I'm interested in participating in Google Summer of Code this year. I've been looking for an idea in ns-3 wiki page and I found a interesting project to implement Minstrel rate control algorithm in ns-3. I believe it would be very motivating and helpful to me, since I'm evaluating my proposed algorithm based on simulations in ns-2. I've implemented two other different rate adaptations solutions in ns-2, using the dei802mr (develop by Nicola Baldo, and his team, at DEI) to compare my algorithm with. I think that a good implementation in ns-3 will contribute to my project and to many other people. I am still not familiar with the ns-3 code, but I figured out that there many others rate control algorithms implemented on it. I have good knowledge in C++ programming and about rate control in wireless networks. I'm currently studding the Minstrel algorithm, and I think that will be possible to sucssefully implement it in ns-3 during the GSoc program. I would like a feedback about these project, and any suggestion that may arise. I would be happy with a mentor' contact. Best regards, -- Luciano J. Chaves MSc Computer Science Student University of Campinas From Amine.Ismail at sophia.inria.fr Mon Mar 30 08:56:55 2009 From: Amine.Ismail at sophia.inria.fr (Mohamed Amine Ismail) Date: Mon, 30 Mar 2009 17:56:55 +0200 Subject: [Ns-developers] GSoC: WiMAX Projects Message-ID: <200903301756.55467.Amine.Ismail@sophia.inria.fr> Dear ns-3 developers, In my previous message, I forgot to emphasize the most essential part :-). We very welcome contributions in the current WiMAX module and are open for any proposal to enhance it. As it is important to coordinate the different works in the community, please keep us informed about any current/future work you are interested in or planning to investigate, to avoid developing similar things. Here are further details regarding the status of the WiMAX module. Concerning the implementation of the IPCS classifier, it is almost finished and we are in the bug fixing phase. The code should be available soon at http://code.nsnam.org/iamine/ns-3-wimax/ . We intend to implement the tracing function in the next few weeks. In May, a master student is expected to start an internship on the development of scheduling algorithms (for both uplink and downlink). For this task in particular, a coordination with other groups is crucial. Regarding the 2nd implementation of the PHY layer based on itpp, I would like to mention that this module currently requires a huge computation time since it encodes and modulates the bursts provided by the upper layer. Basically, this implementation is far to be real-time... So if anyone is interested in designing a more sophisticated PHY layer with propagation/error model, he/she would be very welcome. Thank you very much Amine & Thierry From ruben at net.t-labs.tu-berlin.de Mon Mar 30 13:06:12 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Mon, 30 Mar 2009 22:06:12 +0200 Subject: [Ns-developers] GSoC + WiPreSS In-Reply-To: <20090329181843.3w9mfsk7l0kwosws@webmail.telecompress.net> References: <20090329181843.3w9mfsk7l0kwosws@webmail.telecompress.net> Message-ID: <49D12634.6050904@net.t-labs.tu-berlin.de> Dear Paolo On 3/29/09 6:18 PM, paolo.pilia at telecompress.net wrote: > Dear NS3 developers, > > I want inform ns-3 developers about the new project WiPreSS ( Wireless > Prediction and Simulation Software - info on telecompress dot net). > I'm working to integrate ns-3 for simulation. Would you give us a bit more details than what is on http://telecompress.net/ ? How does really ns-3 relate to it? Which parts of ns-3 do you want to use? > At this moment the radio propagation tool of ns3 is so poor. I'm going > to register in socghop and present my candidature as student for GSoC on > antennas module. Could you please elaborate on how you would work on this project. What kind of antenna radiation pattern model would you implement? How would you implement it? Maybe even validate it? Best Ruben > Regards, > Paolo Pilia From ruben at net.t-labs.tu-berlin.de Mon Mar 30 13:36:32 2009 From: ruben at net.t-labs.tu-berlin.de (Ruben Merz) Date: Mon, 30 Mar 2009 22:36:32 +0200 Subject: [Ns-developers] GSoC 2009 - Minstrel rate control algorithm In-Reply-To: References: Message-ID: <49D12D50.2030003@net.t-labs.tu-berlin.de> Hi Luciano On 3/30/09 5:16 AM, Luciano Jerez Chaves wrote: > Hi Ns-developers, > > My name is Luciano and I am a MSc Computer Science student at > University of Campinas, Brazil. > > I'm working with Rate Adaptation solutions to wireless networks in > my master's thesis and I'm interested in participating in Google > Summer of Code this year. > > I've been looking for an idea in ns-3 wiki page and I found a interesting > project to implement Minstrel rate control algorithm in ns-3. > > I believe it would be very motivating and helpful to me, since I'm > evaluating my proposed algorithm based on simulations in ns-2. > I've implemented two other different rate adaptations solutions in > ns-2, using the dei802mr (develop by Nicola Baldo, and his team, > at DEI) to compare my algorithm with. Do you plan to also port these algorithms in ns-3? > I think that a good implementation in ns-3 will contribute to my > project and to many other people. > > I am still not familiar with the ns-3 code, but I figured out that > there many others rate control algorithms implemented on it. > I have good knowledge in C++ programming and about rate > control in wireless networks. I'm currently studding the Minstrel > algorithm, and I think that will be possible to sucssefully implement > it in ns-3 during the GSoc program. The rate control algorithms are all in src/devices/wifi. You can also go in the example directory and grep for calls to SetRemoteStationManager. > I would like a feedback about these project, and any suggestion > that may arise. I would be happy with a mentor' contact. Let me know if you have questions. Best Ruben > Best regards, > > -- > Luciano J. Chaves > MSc Computer Science Student > University of Campinas -- Ruben Merz Deutsche Telekom Laboratories http://www.net.t-labs.tu-berlin.de/people/ruben_merz.shtml From raj.b at gatech.edu Mon Mar 30 14:28:48 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Mon, 30 Mar 2009 17:28:48 -0400 Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down Message-ID: <12d69e490903301428y5f1cd36cn50ee85e3ff1a715b@mail.gmail.com> There have been no changes checked in since RC3 landed on Friday; therefore, I am suggesting that we do NOT release an RC today! This is mostly good, since it means that ns-3.4 is converging and has been stable for 3 days. To keep everyone up to speed, the 3 P1 bugs (TCP close related) have been reduced in priority, meaning that they will no longer block the release. I think it is best to make the release of ns-3.4 on the promised date of April 1, without fixing these bugs. The current work in progress is mostly related to documenting the changes between ns-3.3 and ns-3.4; things like CHANGES.html and the release notes are being updated. Let's keep ns-3-dev stable during the process, i.e. NO code check-ins to ns-3-dev until Wednesday. Please maintain your check-ins locally, or in a private repo posted on the code server. On Wednesday morning, I'll put out the release of ns-3.4. Thanks to everyone who has contributed to ns-3 for your hard work so far! -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From tomh at tomh.org Mon Mar 30 15:03:38 2009 From: tomh at tomh.org (Tom Henderson) Date: Mon, 30 Mar 2009 22:03:38 +0000 Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down Message-ID: >-----Original Message----- >From: Raj Bhattacharjea [mailto:raj.b at gatech.edu] >Sent: Monday, March 30, 2009 01:28 PM >To: ns-developers at ISI.EDU >Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down > >There have been no changes checked in since RC3 landed on Friday; >therefore, I am suggesting that we do NOT release an RC today! This >is mostly good, since it means that ns-3.4 is converging and has been >stable for 3 days. > >To keep everyone up to speed, the 3 P1 bugs (TCP close related) have >been reduced in priority, meaning that they will no longer block the >release. I think it is best to make the release of ns-3.4 on the >promised date of April 1, without fixing these bugs. > >The current work in progress is mostly related to documenting the >changes between ns-3.3 and ns-3.4; things like CHANGES.html and the >release notes are being updated. Let's keep ns-3-dev stable during >the process, i.e. NO code check-ins to ns-3-dev until Wednesday. >Please maintain your check-ins locally, or in a private repo posted on >the code server. Raj, given that you are planning to update some things, I think it would be helpful to put out another release candidate that is final from your perspective. Are there going to be any more code checkins on your part? Are you going to socialize release notes and CHANGES.html beforehand? - Tom From nbaldo at cttc.es Tue Mar 31 03:20:39 2009 From: nbaldo at cttc.es (Nicola Baldo) Date: Tue, 31 Mar 2009 12:20:39 +0200 Subject: [Ns-developers] emacs indentation innamespace Message-ID: <49D1EE77.5010703@cttc.es> Hi all, as many of you, I am using emacs for editing ns3 code. The "gnu" indentation style mostly conforms to the ns3 coding guidelines, but has a few quirks. One of these is that code after "namespace ns3 {" is indented, while the ns3 coding style says it should not. This is annoying. Does anybody out there have a solution to this problem? My experience is: 1) with a ns3 source file already opened, you can type 'C-c C-o innamespace 0 ' and get the desired behavior 2) I tried to make the setting permanent by adding the following code to my ~/.emacs: (defun my-c-mode-common-hook () (c-set-offset 'innamespace 0)) (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) this works for normal C source files, but doesn't work when opening a ns3 source code file. I think this is due to the option 'c-file-style: "gnu";' in the emacs modeline at the beginning of the source code file: I get the impression that it overrides the innamespace setting in .emacs. In fact, if I remove 'c-file-style: "gnu";' from the modeline, the next time I open the file I get the desired behavior. Any hints? It's annoying to do procedure 1) for every file you open... Regards, Nicola From gjcarneiro at gmail.com Tue Mar 31 04:37:44 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 31 Mar 2009 12:37:44 +0100 Subject: [Ns-developers] emacs indentation innamespace In-Reply-To: <49D1EE77.5010703@cttc.es> References: <49D1EE77.5010703@cttc.es> Message-ID: 2009/3/31 Nicola Baldo > Hi all, > > as many of you, I am using emacs for editing ns3 code. The "gnu" > indentation style mostly conforms to the ns3 coding guidelines, but has a > few quirks. One of these is that code after "namespace ns3 {" is indented, > while the ns3 coding style says it should not. This is annoying. Does > anybody out there have a solution to this problem? > > My experience is: > > 1) with a ns3 source file already opened, you can type 'C-c C-o innamespace > 0 ' and get the desired behavior > > 2) I tried to make the setting permanent by adding the following code to my > ~/.emacs: > > (defun my-c-mode-common-hook () > (c-set-offset 'innamespace 0)) > (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) > > this works for normal C source files, but doesn't work when opening a ns3 > source code file. I think this is due to the option 'c-file-style: "gnu";' > in the emacs modeline at the beginning of the source code file: I get the > impression that it overrides the innamespace setting in .emacs. In fact, if > I remove 'c-file-style: "gnu";' from the modeline, the next time I open the > file I get the desired behavior. > > Any hints? It's annoying to do procedure 1) for every file you open... One option would be to define a new 'ns3' indentation style, adding this to .emacs: (c-add-style "ns3" '("gnu" (c-offsets-alist . ((innamespace . 0))))) But then we would have to agree to change all ns-3 source files modelines, from "gnu" to "ns3"... -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mathieu.lacage at sophia.inria.fr Tue Mar 31 04:46:07 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 31 Mar 2009 13:46:07 +0200 Subject: [Ns-developers] emacs indentation innamespace In-Reply-To: References: <49D1EE77.5010703@cttc.es> Message-ID: <1238499967.18589.88.camel@diese.inria.fr> On Tue, 2009-03-31 at 12:37 +0100, Gustavo Carneiro wrote: > > Any hints? It's annoying to do procedure 1) for every file you open... > > > One option would be to define a new 'ns3' indentation style, adding this to > .emacs: > > (c-add-style "ns3" > '("gnu" (c-offsets-alist . ((innamespace . 0))))) > > > But then we would have to agree to change all ns-3 source files modelines, > from "gnu" to "ns3"... There would also be the option of doing the following in every file and I would support this: /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; c-set-offset 'innamespace 0; -*- */ mainly because it would save all our emacs users from having to change their emacs configuration Mathieu From paolo.pilia at telecompress.net Tue Mar 31 04:50:04 2009 From: paolo.pilia at telecompress.net (paolo.pilia@telecompress.net) Date: Tue, 31 Mar 2009 13:50:04 +0200 Subject: [Ns-developers] GSoC + WiPreSS Message-ID: <20090331135004.m744tc8fnoggwog4@webmail.telecompress.net> Quoting Ruben Merz : > Dear Paolo > > On 3/29/09 6:18 PM, paolo.pilia at telecompress.net wrote: >> Dear NS3 developers, >> >> I want inform ns-3 developers about the new project WiPreSS ( Wireless >> Prediction and Simulation Software - info on telecompress dot net). >> I'm working to integrate ns-3 for simulation. > > Would you give us a bit more details than what is on > http://telecompress.net/ ? How does really ns-3 relate to it? Which > parts of ns-3 do you want to use? > WiPreSS is a free solution for wireless network design and testing. Basically it will be a really-free alternative to Radio Mobile, with some additional features. It calculate the radio propagation in a real scenario. Importing data of terrain (altitude) from DEM repositories and combine it with builds-data from shapefile. Ns3 is the best candidate for testing a wireless application after the design. I'm working also to develop another kind of simulation based on it++ for custom trasmission channel ( p2p radio link) with definition of modulation, coding, filter. >> At this moment the radio propagation tool of ns3 is so poor. I'm going >> to register in socghop and present my candidature as student for GSoC on >> antennas module. > > Could you please elaborate on how you would work on this project. What > kind of antenna radiation pattern model would you implement? How would > you implement it? Maybe even validate it? > The innovation (confronting with actual ns3) in an antenna class that compute the 3d pattern of antenna reading the specifications file (MSI or ANT). These files are used by the antennas vendor. It make possible to test a radio connection with a chosen antennas (for example select a Kathrein specific model). 3D pattern is result of horizontal and vertical diagram combination. I've an implementation of this class for WiPreSS. I'm going to add the function for elements combination in array. It's simple implementable with defined elements, positions and phases. About propagation model I'm going to write the code. Validation is planned (Wipress is a thesis project). On side of propagation model I'm working to combine multi-path propagation model (it++) with ray tracing. Actually the realization it's related to the critical aspect of processing environment. The goals are simple defined in the equation: Antennas::3dpattern + environment::raytracing + channel::multipath = diversity simulation > Best > Ruben > >> Regards, >> Paolo Pilia From gjcarneiro at gmail.com Tue Mar 31 05:01:12 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 31 Mar 2009 13:01:12 +0100 Subject: [Ns-developers] Fwd: emacs indentation innamespace In-Reply-To: References: <49D1EE77.5010703@cttc.es> <1238499967.18589.88.camel@diese.inria.fr> Message-ID: Forgot the list. ---------- Forwarded message ---------- From: Gustavo Carneiro Date: 2009/3/31 Subject: Re: [Ns-developers] emacs indentation innamespace To: Mathieu Lacage 2009/3/31 Mathieu Lacage > On Tue, 2009-03-31 at 12:37 +0100, Gustavo Carneiro wrote: > > > > Any hints? It's annoying to do procedure 1) for every file you open... > > > > > > One option would be to define a new 'ns3' indentation style, adding this > to > > .emacs: > > > > (c-add-style "ns3" > > '("gnu" (c-offsets-alist . ((innamespace . 0))))) > > > > > > But then we would have to agree to change all ns-3 source files > modelines, > > from "gnu" to "ns3"... > > There would also be the option of doing the following in every file and > I would support this: > > /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; c-set-offset > 'innamespace 0; -*- */ +1 if it worked, but I get a "Malformed -*- line" emacs (22) error. > > > mainly because it would save all our emacs users from having to change > their emacs configuration Yes, but at least it would save us from ever having to change the mode line again. We could adjust the style settings globally in the future without touching the source files. But your option is good too, if only we could get it to work reliably. > > > Mathieu > > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mathieu.lacage at sophia.inria.fr Tue Mar 31 06:37:57 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 31 Mar 2009 15:37:57 +0200 Subject: [Ns-developers] CS mechanism In-Reply-To: References: <1238139486.4974.13.camel@diese.inria.fr> Message-ID: <1238506677.18589.197.camel@diese.inria.fr> On Tue, 2009-03-31 at 16:35 +0400, Denis Fakhriev wrote: > I've looked thorough dcf-manager.cc and I have two > questions about it: > 1. in DcfManager::IsBusy we assume that medium is busy, if > station > receive/transmit packet (PHY busy) or it is NAV busy. > Does it is means that > station can transmit not only in IDLE state, but also > in CcaBusy state? Yes, I believe that there are cases where the specification explicitely allows transmitting when ccabusy. > 2. for what reason we declare variable > accessGrantStart = GetAccessGrantStart (); > in DcfManager::DoGrantAccess? I can't found where > this variable is used. yes, it appears that you could delete this statement without changing the behavior of the code. I have no idea why this code is there. Mathieu From adrian at ieaa.org Tue Mar 31 06:37:30 2009 From: adrian at ieaa.org (Adrian Sai-Wah TAM) Date: Tue, 31 Mar 2009 09:37:30 -0400 Subject: [Ns-developers] Fwd: emacs indentation innamespace In-Reply-To: References: <49D1EE77.5010703@cttc.es> <1238499967.18589.88.camel@diese.inria.fr> Message-ID: I know, this is going to be religious, but I wonder what is the best setting for vi/vim users.... On Tue, Mar 31, 2009 at 8:01 AM, Gustavo Carneiro wrote: > Forgot the list. > > ---------- Forwarded message ---------- > From: Gustavo Carneiro > Date: 2009/3/31 > Subject: Re: [Ns-developers] emacs indentation innamespace > To: Mathieu Lacage > > > > > 2009/3/31 Mathieu Lacage > >> On Tue, 2009-03-31 at 12:37 +0100, Gustavo Carneiro wrote: >> >> > > Any hints? It's annoying to do procedure 1) for every file you open... >> > >> > >> > One option would be to define a new 'ns3' indentation style, adding this >> to >> > .emacs: >> > >> > (c-add-style "ns3" >> > ? ? ? ? ? ? ?'("gnu" (c-offsets-alist . ((innamespace . 0))))) >> > >> > >> > But then we would have to agree to change all ns-3 source files >> modelines, >> > from "gnu" to "ns3"... >> >> There would also be the option of doing the following in every file and >> I would support this: >> >> /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; c-set-offset >> 'innamespace 0; -*- */ > > > +1 if it worked, but I get a "Malformed -*- line" emacs (22) error. > > >> >> >> mainly because it would save all our emacs users from having to change >> their emacs configuration > > > Yes, but at least it would save us from ever having to change the mode line > again. ?We could adjust the style settings globally in the future without > touching the source files. > > But your option is good too, if only we could get it to work reliably. > > >> >> >> Mathieu >> >> > > > -- > Gustavo J. A. M. Carneiro > INESC Porto, Telecommunications and Multimedia Unit > "The universe is always one step beyond logic." -- Frank Herbert > > > > -- > Gustavo J. A. M. Carneiro > INESC Porto, Telecommunications and Multimedia Unit > "The universe is always one step beyond logic." -- Frank Herbert > From gjcarneiro at gmail.com Tue Mar 31 06:41:16 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 31 Mar 2009 14:41:16 +0100 Subject: [Ns-developers] emacs indentation innamespace In-Reply-To: <1238506358.18589.191.camel@diese.inria.fr> References: <49D1EE77.5010703@cttc.es> <1238499967.18589.88.camel@diese.inria.fr> <1238506358.18589.191.camel@diese.inria.fr> Message-ID: 2009/3/31 Mathieu Lacage > On Tue, 2009-03-31 at 13:00 +0100, Gustavo Carneiro wrote: > > > /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; > > c-set-offset > > 'innamespace 0; -*- */ > > > > +1 if it worked, but I get a "Malformed -*- line" emacs (22) error. > > worksforme: did you make sure it was on a _single_ line ? (i.e., not > split) Yes, I am sure. Wrote /home/gjc/projects/ns/ns-3-wmrp/src/contrib/flow-monitor.h File local-variables error: (error "Malformed -*- line") Plus I tried other combinations, trial and error, but could never reach a working solution. What Emacs version do you use? > > > > > > > > > > mainly because it would save all our emacs users from having > > to change > > their emacs configuration > > > > Yes, but at least it would save us from ever having to change the mode > > line again. We could adjust the style settings globally in the future > > without touching the source files. > > Agreed. I could go with this too. > > Mathieu > > > > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From mathieu.lacage at sophia.inria.fr Tue Mar 31 06:43:16 2009 From: mathieu.lacage at sophia.inria.fr (Mathieu Lacage) Date: Tue, 31 Mar 2009 15:43:16 +0200 Subject: [Ns-developers] emacs indentation innamespace In-Reply-To: References: <49D1EE77.5010703@cttc.es> <1238499967.18589.88.camel@diese.inria.fr> <1238506358.18589.191.camel@diese.inria.fr> Message-ID: <1238506996.18589.201.camel@diese.inria.fr> On Tue, 2009-03-31 at 14:41 +0100, Gustavo Carneiro wrote: > 2009/3/31 Mathieu Lacage > On Tue, 2009-03-31 at 13:00 +0100, Gustavo Carneiro wrote: > > > /* -*- Mode:C++; c-file-style:"gnu"; > indent-tabs-mode:nil; > > c-set-offset > > 'innamespace 0; -*- */ > > > > +1 if it worked, but I get a "Malformed -*- line" emacs (22) > error. > > > worksforme: did you make sure it was on a _single_ line ? > (i.e., not > split) > > Yes, I am sure. > > Wrote /home/gjc/projects/ns/ns-3-wmrp/src/contrib/flow-monitor.h > File local-variables error: (error "Malformed -*- line") > > Plus I tried other combinations, trial and error, but could never > reach a working solution. > > What Emacs version do you use? fedora 10 default: [mlacage at diese ns-3-dev]$ emacs --version GNU Emacs 22.3.1 Copyright (C) 2008 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. [mlacage at diese ns-3-dev]$ If this is really version-dependent, it would be better to make an ns-3 emacs style. Mathieu From riley at ece.gatech.edu Tue Mar 31 06:50:44 2009 From: riley at ece.gatech.edu (George Riley) Date: Tue, 31 Mar 2009 09:50:44 -0400 Subject: [Ns-developers] emacs indentation innamespace In-Reply-To: References: <49D1EE77.5010703@cttc.es> <1238499967.18589.88.camel@diese.inria.fr> <1238506358.18589.191.camel@diese.inria.fr> Message-ID: <097ACC04-6679-4DCE-BC33-4453AEFCA85B@ece.gatech.edu> FWIW, I get the same erroneous behavior that Gustavo reports. GNU Emacs 22.1.1, on Mac OSX. George -------------------------------------------------- George Riley Associate Professor Georgia Tech Electrical and Computer Engineering riley at ece.gatech.edu 404-894-4767 Klaus Advanced Computing Building Room 3360 266 Ferst Drive Atlanta, Georgia 30332-0765 ECE4110 Web page: http://users.ece.gatech.edu/~riley/ece4110/ ECE4112 Web page: http://users.ece.gatech.edu/~riley/ece4112/ On Mar 31, 2009, at 9:41 AM, Gustavo Carneiro wrote: > 2009/3/31 Mathieu Lacage > >> On Tue, 2009-03-31 at 13:00 +0100, Gustavo Carneiro wrote: >> >>> /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; >>> c-set-offset >>> 'innamespace 0; -*- */ >>> >>> +1 if it worked, but I get a "Malformed -*- line" emacs (22) error. >> >> worksforme: did you make sure it was on a _single_ line ? (i.e., not >> split) > > > Yes, I am sure. > > Wrote /home/gjc/projects/ns/ns-3-wmrp/src/contrib/flow-monitor.h > File local-variables error: (error "Malformed -*- line") > > Plus I tried other combinations, trial and error, but could never > reach a > working solution. > > What Emacs version do you use? > > >> >> >>> >>> >>> >>> mainly because it would save all our emacs users from having >>> to change >>> their emacs configuration >>> >>> Yes, but at least it would save us from ever having to change the >>> mode >>> line again. We could adjust the style settings globally in the >>> future >>> without touching the source files. >> >> Agreed. I could go with this too. >> >> Mathieu >>> >> >> > > > -- > Gustavo J. A. M. Carneiro > INESC Porto, Telecommunications and Multimedia Unit > "The universe is always one step beyond logic." -- Frank Herbert From gjcarneiro at gmail.com Tue Mar 31 06:53:20 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 31 Mar 2009 14:53:20 +0100 Subject: [Ns-developers] emacs indentation innamespace In-Reply-To: <1238506996.18589.201.camel@diese.inria.fr> References: <49D1EE77.5010703@cttc.es> <1238499967.18589.88.camel@diese.inria.fr> <1238506358.18589.191.camel@diese.inria.fr> <1238506996.18589.201.camel@diese.inria.fr> Message-ID: 2009/3/31 Mathieu Lacage > On Tue, 2009-03-31 at 14:41 +0100, Gustavo Carneiro wrote: > > 2009/3/31 Mathieu Lacage > > On Tue, 2009-03-31 at 13:00 +0100, Gustavo Carneiro wrote: > > > > > /* -*- Mode:C++; c-file-style:"gnu"; > > indent-tabs-mode:nil; > > > c-set-offset > > > 'innamespace 0; -*- */ > > > > > > +1 if it worked, but I get a "Malformed -*- line" emacs (22) > > error. > > > > > > worksforme: did you make sure it was on a _single_ line ? > > (i.e., not > > split) > > > > Yes, I am sure. > > > > Wrote /home/gjc/projects/ns/ns-3-wmrp/src/contrib/flow-monitor.h > > File local-variables error: (error "Malformed -*- line") > > > > Plus I tried other combinations, trial and error, but could never > > reach a working solution. > > > > What Emacs version do you use? > > fedora 10 default: > > [mlacage at diese ns-3-dev]$ emacs --version > GNU Emacs 22.3.1 My version in Ubuntu 8.10 is GNU Emacs 22.2.1. Ubuntu 9.04 still has that same version. The function c-add-style works at least as far as GNU Emacs 20.3 [1]. [1] At least it is documented in 20.3 manual I found at http://www.phys.ufl.edu/docs/emacs/emacs_254.html -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From gjcarneiro at gmail.com Tue Mar 31 06:59:00 2009 From: gjcarneiro at gmail.com (Gustavo Carneiro) Date: Tue, 31 Mar 2009 14:59:00 +0100 Subject: [Ns-developers] emacs indentation innamespace In-Reply-To: References: <49D1EE77.5010703@cttc.es> <1238499967.18589.88.camel@diese.inria.fr> <1238506358.18589.191.camel@diese.inria.fr> <1238506996.18589.201.camel@diese.inria.fr> Message-ID: 2009/3/31 Gustavo Carneiro > > > 2009/3/31 Mathieu Lacage > >> On Tue, 2009-03-31 at 14:41 +0100, Gustavo Carneiro wrote: >> > 2009/3/31 Mathieu Lacage >> > On Tue, 2009-03-31 at 13:00 +0100, Gustavo Carneiro wrote: >> > >> > > /* -*- Mode:C++; c-file-style:"gnu"; >> > indent-tabs-mode:nil; >> > > c-set-offset >> > > 'innamespace 0; -*- */ >> > > >> > > +1 if it worked, but I get a "Malformed -*- line" emacs (22) >> > error. >> > >> > >> > worksforme: did you make sure it was on a _single_ line ? >> > (i.e., not >> > split) >> > >> > Yes, I am sure. >> > >> > Wrote /home/gjc/projects/ns/ns-3-wmrp/src/contrib/flow-monitor.h >> > File local-variables error: (error "Malformed -*- line") >> > >> > Plus I tried other combinations, trial and error, but could never >> > reach a working solution. >> > >> > What Emacs version do you use? >> >> fedora 10 default: >> >> [mlacage at diese ns-3-dev]$ emacs --version >> GNU Emacs 22.3.1 > > > My version in Ubuntu 8.10 is GNU Emacs 22.2.1. Ubuntu 9.04 still has that > same version. > > The function c-add-style works at least as far as GNU Emacs 20.3 [1]. > > [1] At least it is documented in 20.3 manual I found at > http://www.phys.ufl.edu/docs/emacs/emacs_254.html > Here's a mode line that works in my emacs version: /* -*- Mode:C++; indent-tabs-mode:nil; eval: (c-add-style "ns3" '("gnu" (c-offsets-alist . ((innamespace . 0)))) 't) ; -*- */ More verbose, but it does work ;-) OK, now I need to get back to work and stop wasting time on Emacs :P -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert From fakhriev at iitp.ru Tue Mar 31 05:35:30 2009 From: fakhriev at iitp.ru (Denis Fakhriev) Date: Tue, 31 Mar 2009 16:35:30 +0400 Subject: [Ns-developers] CS mechanism In-Reply-To: <1238139486.4974.13.camel@diese.inria.fr> References: <1238139486.4974.13.camel@diese.inria.fr> Message-ID: On Fri, 27 Mar 2009 08:38:06 +0100 Mathieu Lacage wrote: > On Thu, 2009-03-26 at 16:04 +0300, Denis Fakhriev wrote: > >> I'm doing research on the implementation of csma/cs >> mechanism in ns3 and I have a question about it. >> According to IEEE 802.11 standard, station can initiate >> packet transmission only if Phy >> State have been detected as IDLE. But what I've found is >> just comment >> > //NS_ASSERT (m_phy->IsStateIdle ()); >> in MacLow::StartTransmission. >> Has this rule been implemented in ns3 and if it has, >> please tell me where. > > See dcf-manager.cc > > Mathieu > Hi, Mathieu. Thank you for your help. I've looked thorough dcf-manager.cc and I have two questions about it: 1. in DcfManager::IsBusy we assume that medium is busy, if station receive/transmit packet (PHY busy) or it is NAV busy. Does it is means that station can transmit not only in IDLE state, but also in CcaBusy state? 2. for what reason we declare variable accessGrantStart = GetAccessGrantStart (); in DcfManager::DoGrantAccess? I can't found where this variable is used. Regards, Denis Fakhriev, IITP RAS From n.dua at iitg.ernet.in Mon Mar 30 10:48:24 2009 From: n.dua at iitg.ernet.in (Nitin Dua, IIT G) Date: Mon, 30 Mar 2009 23:18:24 +0530 (IST) Subject: [Ns-developers] GSoC: WiMAX Projects In-Reply-To: <200903301756.55467.Amine.Ismail@sophia.inria.fr> References: <200903301756.55467.Amine.Ismail@sophia.inria.fr> Message-ID: <50302.10.1.2.18.1238435304.squirrel@webmail.iitg.ernet.in> Dear ns-3 developers, Firstly I would like to inform all that I am an undergraduate student from Indian Institute of Technology Guwahati India and I am a new addition to the group. Its great to be among you! I am greatly interested in WiMAX networks and also well acquainted to its standards, protocol stack and performance. I was interested in the idea of implementing a uplink scheduling algorithm as a part of GSoC 2009. As suggested to me by Juliana Freitag Borin, I would like to port the scheduler presented here http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4411386 in the WiMAX module. In the best of my knowledge this scheduler is not implemented in ns-3 WiMAX module. I would want to know if anyone is already taking up the implementation of the particular scheduler talked about in the paper. If not, then I would readily like to do so. Any kind of guidance would be welcome. Thanks & Regards, Nitin Dua > Dear ns-3 developers, > > > In my previous message, I forgot to emphasize the most essential part > :-). > We very welcome contributions in the current WiMAX module and are open > for any proposal to enhance it. > As it is important to coordinate the different works in the community, > please > keep us informed about any current/future work you are interested in or > planning to investigate, to avoid developing similar things. > > Here are further details regarding the status of the WiMAX module. > > Concerning the implementation of the IPCS classifier, it is almost > finished > and we are in the bug fixing phase. The code should be available soon at > http://code.nsnam.org/iamine/ns-3-wimax/ . > > > We intend to implement the tracing function in the next few weeks. > In May, a master student is expected to start an internship on the > development of scheduling algorithms (for both uplink and downlink). > For this task in particular, a coordination with other groups is crucial. > > Regarding the 2nd implementation of the PHY layer based on itpp, I would > like to mention that this module currently requires a huge computation > time > since it encodes and modulates the bursts provided by the upper layer. > Basically, this implementation is far to be real-time... So if anyone is > interested in designing a more sophisticated PHY layer with > propagation/error > model, he/she would be very welcome. > > > Thank you very much > > Amine & Thierry > From ljerezchaves at gmail.com Tue Mar 31 07:32:00 2009 From: ljerezchaves at gmail.com (Luciano Jerez Chaves) Date: Tue, 31 Mar 2009 11:32:00 -0300 Subject: [Ns-developers] GSoC 2009 - Minstrel rate control algorithm In-Reply-To: <49D12D50.2030003@net.t-labs.tu-berlin.de> References: <49D12D50.2030003@net.t-labs.tu-berlin.de> Message-ID: Hi Ruben, On Mon, Mar 30, 2009 at 17:36, Ruben Merz wrote: > > Hi Luciano > > On 3/30/09 5:16 AM, Luciano Jerez Chaves wrote: >> >> Hi Ns-developers, >> >> My name is Luciano and I am a MSc Computer Science student at >> University of Campinas, Brazil. >> >> I'm working with Rate Adaptation solutions to wireless networks in >> my master's thesis and I'm interested in participating in Google >> Summer of Code this year. >> >> I've been looking for an idea in ns-3 wiki page and I found a interesting >> project to implement Minstrel rate control algorithm in ns-3. >> >> I believe it would be very motivating and helpful to me, since I'm >> evaluating my proposed algorithm based on simulations in ns-2. >> I've implemented two other different rate adaptations solutions in >> ns-2, using the dei802mr (develop by Nicola Baldo, and his team, >> at DEI) to compare my algorithm with. > > Do you plan to also port these algorithms in ns-3? The algorithms that I implemented in ns-2 are the AARF (an extension of the original ARF), CARA, and my own solution, that I didn't finish yet. The initial idea was to port CARA and AARF to ns-3 in order to fairly compare my solution with all available implementations, but I figured out that the AARF is already implemented on it. Although, we still have CARA, and there are other solutions in the literature that could be incorporated into the ns-3 as far as possible. > >> I think that a good implementation in ns-3 will contribute to my >> project and to many other people. >> >> I am still not familiar with the ns-3 code, but I figured out that >> there many others rate control algorithms implemented on it. >> I have good knowledge in C++ programming and about rate >> control in wireless networks. I'm currently studding the Minstrel >> algorithm, and I think that will be possible to successfully implement >> it in ns-3 during the GSoc program. > > The rate control algorithms are all in src/devices/wifi. You can also go in > the example directory and grep for calls to SetRemoteStationManager. Looking in the suggested directory and in some rate control solutions there, it doesn't seem very difficult to implement a new rate control algorithm, since the code structure is well defined. I believe that it's possible to implement the Minstrel algorithms in something like five weeks or so. Since the Minstrel solution is based solely in statistical measured performance with minimum of assumptions, the coding difficulty is linked to create a data structure that will be used by the algorithm (a table to store values for each destiny) and to obtain, from the simulated code, the performance metrics evaluated. After that, with the experience obtained with ns-3 programming, the code style, simulator structure and many other things, it will be possible to introduce other solutions. > >> I would like a feedback about these project, and any suggestion >> that may arise. I would be happy with a mentor' contact. > > Let me know if you have questions. I'm looking forward to hearing from you in order to improve my GSoC application. > > Best > Ruben > >> Best regards, >> >> -- >> Luciano J. Chaves >> MSc Computer Science Student >> University of Campinas > > -- > Ruben Merz Deutsche Telekom Laboratories > http://www.net.t-labs.tu-berlin.de/people/ruben_merz.shtml > Regards -- Luciano J. Chaves MSc Computer Science Student University of Campinas From Amine.Ismail at sophia.inria.fr Tue Mar 31 08:51:22 2009 From: Amine.Ismail at sophia.inria.fr (Mohamed Amine Ismail) Date: Tue, 31 Mar 2009 17:51:22 +0200 Subject: [Ns-developers] GSoC: WiMAX Projects In-Reply-To: <50302.10.1.2.18.1238435304.squirrel@webmail.iitg.ernet.in> References: <200903301756.55467.Amine.Ismail@sophia.inria.fr> <50302.10.1.2.18.1238435304.squirrel@webmail.iitg.ernet.in> Message-ID: <200903311751.23169.Amine.Ismail@sophia.inria.fr> Hi Nitin, > In the best of my knowledge this scheduler is not implemented in ns-3 > WiMAX module. I would want to know if anyone is already taking up the > implementation of the particular scheduler talked about in the paper. If > not, then I would readily like to do so. Yes, this scheduler is not implemented in the current version of the WiMAX module and nobody is working on its implementation. You can GO :). For further details on the existing code and API please do not hesitate to contact us. Regards Amine On Monday 30 March 2009 19:48:24 Nitin Dua, IIT G wrote: > Dear ns-3 developers, > > Firstly I would like to inform all that I am an undergraduate student from > Indian Institute of Technology Guwahati India and I am a new addition to > the group. Its great to be among you! > > I am greatly interested in WiMAX networks and also well acquainted to its > standards, protocol stack and performance. I was interested in the idea of > implementing a uplink scheduling algorithm as a part of GSoC 2009. As > suggested to me by Juliana Freitag Borin, I would like to port the > scheduler presented here > http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4411386 > in the WiMAX module. > > In the best of my knowledge this scheduler is not implemented in ns-3 > WiMAX module. I would want to know if anyone is already taking up the > implementation of the particular scheduler talked about in the paper. If > not, then I would readily like to do so. > > Any kind of guidance would be welcome. > > Thanks & Regards, > Nitin Dua > > > Dear ns-3 developers, > > > > > > In my previous message, I forgot to emphasize the most essential part > > > > :-). > > > > We very welcome contributions in the current WiMAX module and are open > > for any proposal to enhance it. > > As it is important to coordinate the different works in the community, > > please > > keep us informed about any current/future work you are interested in or > > planning to investigate, to avoid developing similar things. > > > > Here are further details regarding the status of the WiMAX module. > > > > Concerning the implementation of the IPCS classifier, it is almost > > finished > > and we are in the bug fixing phase. The code should be available soon at > > http://code.nsnam.org/iamine/ns-3-wimax/ . > > > > > > We intend to implement the tracing function in the next few weeks. > > In May, a master student is expected to start an internship on the > > development of scheduling algorithms (for both uplink and downlink). > > For this task in particular, a coordination with other groups is crucial. > > > > Regarding the 2nd implementation of the PHY layer based on itpp, I would > > like to mention that this module currently requires a huge computation > > time > > since it encodes and modulates the bursts provided by the upper layer. > > Basically, this implementation is far to be real-time... So if anyone is > > interested in designing a more sophisticated PHY layer with > > propagation/error > > model, he/she would be very welcome. > > > > > > Thank you very much > > > > Amine & Thierry From raj.b at gatech.edu Tue Mar 31 08:53:31 2009 From: raj.b at gatech.edu (Raj Bhattacharjea) Date: Tue, 31 Mar 2009 11:53:31 -0400 Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down In-Reply-To: References: Message-ID: <12d69e490903310853h2ddf5672g4ee6c0bee0810088@mail.gmail.com> On Mon, Mar 30, 2009 at 6:03 PM, Tom Henderson wrote: > >>-----Original Message----- >>From: Raj Bhattacharjea [mailto:raj.b at gatech.edu] >>Sent: Monday, March 30, 2009 01:28 PM >>To: ns-developers at ISI.EDU >>Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down >> >>There have been no changes checked in since RC3 landed on Friday; >>therefore, I am suggesting that we do NOT release an RC today! ?This >>is mostly good, since it means that ns-3.4 is converging and has been >>stable for 3 days. >> >>To keep everyone up to speed, the 3 P1 bugs (TCP close related) have >>been reduced in priority, meaning that they will no longer block the >>release. ?I think it is best to make the release of ns-3.4 on the >>promised date of April 1, without fixing these bugs. >> >>The current work in progress is mostly related to documenting the >>changes between ns-3.3 and ns-3.4; things like CHANGES.html and the >>release notes are being updated. ?Let's keep ns-3-dev stable during >>the process, i.e. NO code check-ins to ns-3-dev until Wednesday. >>Please maintain your check-ins locally, or in a private repo posted on >>the code server. > > Raj, given that you are planning to update some things, I think it would be helpful to put out another release candidate that is final from your perspective. ?Are there going to be any more code checkins on your part? ?Are you going to socialize release notes and CHANGES.html beforehand? > RC3 is complete as far as code is concerned, from my perspective. I don't plan on making making any other fixes to ns-3-dev until after the release. This means punting on TCP fixes and packaging George's animator. I will put some effort into pointing people to this code and other contributions via the contrib page on the wiki. I got the sense from talking with George that everyone was comfortable with making the release in its current state; if I am mistaken, please, let me know about any reservations with releasing the current ns-3-dev as ns-3.4 The only thing that has changed since RC3 is documentation, i.e. the release notes and changes have been updated, thanks to Craig. If people wish to comment on them, the files can be found here: http://code.nsnam.org/ns-3-dev/raw-file/9da5383b0c87/CHANGES.html http://code.nsnam.org/ns-3-dev/raw-file/9da5383b0c87/RELEASE_NOTES -- Raj Bhattacharjea Georgia Institute of Technology School of Electrical and Computer Engineering Ph.D. Candidate Systems Analyst 404.894.2955 From tomh at tomh.org Tue Mar 31 09:44:45 2009 From: tomh at tomh.org (Tom Henderson) Date: Tue, 31 Mar 2009 16:44:45 +0000 Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down Message-ID: >-----Original Message----- >From: Raj Bhattacharjea [mailto:raj.b at gatech.edu] >Sent: Tuesday, March 31, 2009 07:53 AM >To: 'Tom Henderson' >Cc: ns-developers at isi.edu >Subject: Re: [Ns-developers] ns-3.4 : Release Procedure Winding Down > >On Mon, Mar 30, 2009 at 6:03 PM, Tom Henderson wrote: >> >>>-----Original Message----- >>>From: Raj Bhattacharjea [mailto:raj.b at gatech.edu] >>>Sent: Monday, March 30, 2009 01:28 PM >>>To: ns-developers at ISI.EDU >>>Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down >>> >>>There have been no changes checked in since RC3 landed on Friday; >>>therefore, I am suggesting that we do NOT release an RC today! ?This >>>is mostly good, since it means that ns-3.4 is converging and has been >>>stable for 3 days. >>> >>>To keep everyone up to speed, the 3 P1 bugs (TCP close related) have >>>been reduced in priority, meaning that they will no longer block the >>>release. ?I think it is best to make the release of ns-3.4 on the >>>promised date of April 1, without fixing these bugs. >>> >>>The current work in progress is mostly related to documenting the >>>changes between ns-3.3 and ns-3.4; things like CHANGES.html and the >>>release notes are being updated. ?Let's keep ns-3-dev stable during >>>the process, i.e. NO code check-ins to ns-3-dev until Wednesday. >>>Please maintain your check-ins locally, or in a private repo posted on >>>the code server. >> >> Raj, given that you are planning to update some things, I think it would be helpful to put out another release candidate that is final from your perspective. ?Are there going to be any more code checkins on your part? ?Are you going to socialize release notes and CHANGES.html beforehand? >> > >RC3 is complete as far as code is concerned, from my perspective. I >don't plan on making making any other fixes to ns-3-dev until after >the release. This means punting on TCP fixes and packaging George's >animator. I will put some effort into pointing people to this code >and other contributions via the contrib page on the wiki. > >I got the sense from talking with George that everyone was comfortable >with making the release in its current state; if I am mistaken, >please, let me know about any reservations with releasing the current >ns-3-dev as ns-3.4 I'm OK with this; please try to merge these TCP fixes to the close/RST behavior later this week, in that case. I also suggest starting a wiki page to document how to get and use the animator, and perhaps the other animators that people are developing. > >The only thing that has changed since RC3 is documentation, i.e. the >release notes and changes have been updated, thanks to Craig. If >people wish to comment on them, the files can be found here: >http://code.nsnam.org/ns-3-dev/raw-file/9da5383b0c87/CHANGES.html >http://code.nsnam.org/ns-3-dev/raw-file/9da5383b0c87/RELEASE_NOTES > A few comments on these: - please update the authors file - changes.html has some formatting problems; line breaks have been turned into bullets in the most recent additions. - please review and update the additional installation notes at: http://www.nsnam.org/wiki/index.php/Installation From craigdo at ee.washington.edu Tue Mar 31 10:37:58 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Tue, 31 Mar 2009 10:37:58 -0700 Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down In-Reply-To: References: Message-ID: <311BAE20F0BA45C1BA0349FB380E07F3@CRAIGVAIO> > - changes.html has some formatting problems; line breaks have > been turned into bullets in the most recent additions. I just fixed these. Sometimes I love emacs macros too much. > - please review and update the additional installation notes at: > http://www.nsnam.org/wiki/index.php/Installation This is completely out of date. I will pull material from the tutorial into this page to make it current (uless you feel the need to edit wikis, Raj :-) From gucas.charley at gmail.com Tue Mar 31 11:00:48 2009 From: gucas.charley at gmail.com (charley liu) Date: Wed, 1 Apr 2009 02:00:48 +0800 Subject: [Ns-developers] Gsoc2009:Network Simulation Cradle for IPv4 (Florian Westphal) Message-ID: Dear Florian Thanks for your reply and earnest explanation. I have read some paper recently. I will have a look at the nsc page on the nsnam wiki. The docs on how NSC currently interfaces with ns3 will give me a way to approach the goal and make sense. I will work hard and stride ahead. Best regards, charley liu** From craigdo at ee.washington.edu Tue Mar 31 11:18:58 2009 From: craigdo at ee.washington.edu (craigdo@ee.washington.edu) Date: Tue, 31 Mar 2009 11:18:58 -0700 Subject: [Ns-developers] ns-3.4 : Release Procedure Winding Down In-Reply-To: <311BAE20F0BA45C1BA0349FB380E07F3@CRAIGVAIO> References: <311BAE20F0BA45C1BA0349FB380E07F3@CRAIGVAIO> Message-ID: <727E62C5DBF04EADAC4F69201E7405E6@CRAIGVAIO> > > - please review and update the additional installation notes at: > > http://www.nsnam.org/wiki/index.php/Installation > > This is completely out of date. Fixed. From mk.banchi at gmail.com Tue Mar 31 13:33:17 2009 From: mk.banchi at gmail.com (Mirko Banchi) Date: Tue, 31 Mar 2009 22:33:17 +0200 Subject: [Ns-developers] Wifi management frames Message-ID: <49D27E0D.5040407@gmail.com> Hi all, i have some questions about 802.11 management frames i'd like to discuss with you. For now all management frames are handled in NqstaWifiMac, NqapWifiMac, AdhocWifiMac, QapWifiMac, QstaWifiMac objects. This type of frames are stored in the same queues where are stored data frames. -First question: Should be there a specific queue for management frames ? What will happen if a station becomes disassociated (so a probeReq or a associationReq are needed) and have other packets in queue? See: src/devices/wifi/nqsta-wifi-mac.cc NqstaWifiMac::Enqueue NstaWifiMac::TryToEnsureAssociated NqstaWifiMac::SendProbeRequest -Second question: Working with block ack there is need to send action frames (management frames) in order to setup block ack. I think that the exchange of this frames between two station must be accomplished with high priority. I used a method WifiMacQueue::PushFront (Ptr packet, const WifiMacHeader &hdr) that pushes packets in queue's head but it's very horrible: the expiration of MsduLifeTime doesn't work :( I think that a dedicated queue (like m_beaconDca in NqapWifiMac) could resolve this problems. Regards, Mirko -- Mirko Banchi e-mail: mk.banchi at gmail.com e-mail: mk.banchi at virgilio.it id-jabber: mk.banchi at jabber.org id-msn: mb11684 at hotmail.com PGP key fingerprint: 308F BFB1 4E67 2522 C88E DC69 7631 52ED 32A5 6456 -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3410 bytes Desc: S/MIME Cryptographic Signature Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090331/5aa375a8/smime-0001.bin From adrian at ieaa.org Tue Mar 31 15:55:21 2009 From: adrian at ieaa.org (Adrian Sai-Wah TAM) Date: Tue, 31 Mar 2009 18:55:21 -0400 Subject: [Ns-developers] GSoC: Submit Your Proposals via the 2009 site *now* Message-ID: Dear Potential Candidates for GSoC: I am sending this email in response to the appeal by Leslie Hawthorn. In case you didn't, please submit your proposals to GSoC. Don't miss the deadline or otherwise, no one on this list can help you. Cheers, Adrian. ---------- Forwarded message ---------- From: LH (Leslie Hawthorn) Date: Tue, Mar 31, 2009 at 4:30 PM Subject: ***Very Important***: Get Your Students to Submit their Proposals via the 2009 site *now* To: Google Summer of Code Mentors List Hello everyone, Right now, we have about 2x the students registered on the site as we do number of proposals submitted. No doubt some of these student registrations are "spam" from folks who won't be submitting proposals. However, I am also hearing things like "We have six applications submitted to the GSoC 2009 site but we're discussing another 20 or so in our forums." I realize that many organizations are working with students to refine their proposal ideas on their mailing lists, wikis, etc. However, a proposal on a wiki, mailing list, etc. does not constitute an actual application for the program; the proposal must be submitted to the GSoC 2009 site. While doing review and refinement outside of http://socghop.appspot.com is a useful exercise, it doesn't allow us to accurately gauge the number of student proposals we're receiving for GSoC 2009. Please help us get an accurate sense of how many proposals will be submitted for GSoC 2009 by asking your students to submit their proposals to the GSoC 2009 site *now*. They are welcome to link to the wiki page, mailing list thread, forum topic, etc. where their proposals are under discussion and refinement as part of the proposal submission process.[0] In case folks are wondering, we want to get this data so we can decide if it's worthwhile to extend the student application deadline. We're pretty much set on "no, we won't be extending the deadline," but we need better data so we can assess if a deadline extension would be a good thing to do. We're still anticipating the usual "near to deadline application submission rush" that we see every year but we'd like to get a more accurate proposal count sooner rather than later. Cheers, LH [0] - http://socghop.appspot.com/document/show/program/google/gsoc2009/userguide#depth_studentapply --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Summer of Code Mentors List" group. To post to this group, send email to google-summer-of-code-mentors-list at googlegroups.com To unsubscribe from this group, send email to google-summer-of-code-mentors-list+unsubscribe at googlegroups.com For more options, visit this group at http://groups.google.com/group/google-summer-of-code-mentors-list?hl=en -~----------~----~----~----~------~----~------~--~--- From flaviokubota at gmail.com Tue Mar 31 19:26:57 2009 From: flaviokubota at gmail.com (Flavio Kubota) Date: Tue, 31 Mar 2009 23:26:57 -0300 Subject: [Ns-developers] GSoC: WiMAX Projects In-Reply-To: <200903301756.55467.Amine.Ismail@sophia.inria.fr> References: <200903301756.55467.Amine.Ismail@sophia.inria.fr> Message-ID: Hi Amine and Thierry, Thanks for reply. > > In my previous message, I forgot to emphasize the most essential part :-). > We very welcome contributions in the current WiMAX module and are open > for any proposal to enhance it. > As it is important to coordinate the different works in the community, > please > keep us informed about any current/future work you are interested in or > planning to investigate, to avoid developing similar things. I am currently implementing Propagation and Error model in WiMAX module developed by NIST. I am also coding the scheduler developed by LRC [ http://www.lrc.ic.unicamp.br/wimax_ns2] into this NIST module. I intend to investigate a channel-aware scheduler, and I'm very motiveted to implement this features in WiMAX module for ns-3. > > > Here are further details regarding the status of the WiMAX module. > > Concerning the implementation of the IPCS classifier, it is almost finished > and we are in the bug fixing phase. The code should be available soon at > http://code.nsnam.org/iamine/ns-3-wimax/ . > > > We intend to implement the tracing function in the next few weeks. > In May, a master student is expected to start an internship on the > development of scheduling algorithms (for both uplink and downlink). > For this task in particular, a coordination with other groups is crucial. > > Regarding the 2nd implementation of the PHY layer based on itpp, I would > like to mention that this module currently requires a huge computation time > since it encodes and modulates the bursts provided by the upper layer. > Basically, this implementation is far to be real-time... So if anyone is > interested in designing a more sophisticated PHY layer with > propagation/error > model, he/she would be very welcome. For suburbans WiMAX environments, WiMAX Forum recommends SUI or COST231 model for propagation. For error model, I read some people finding PER or BER throught AWGN curves with the SNR. Do you recommend some specific error model for 802.16? I looked wi-fi error model code in ns-3 but I don't know which model is. Thank you a lot, Flavio From dnlove at gmail.com Tue Mar 31 16:40:12 2009 From: dnlove at gmail.com (Duy Nguyen) Date: Tue, 31 Mar 2009 16:40:12 -0700 Subject: [Ns-developers] GSoC: Submit Your Proposals via the 2009 site *now* In-Reply-To: References: Message-ID: <70f6a1ed0903311640u334eb912u4d6b57c9680b9dff@mail.gmail.com> isn't the deadline this friday? Duy 2009/3/31 Adrian Sai-Wah TAM > Dear Potential Candidates for GSoC: > > I am sending this email in response to the appeal by Leslie Hawthorn. > > In case you didn't, please submit your proposals to GSoC. Don't miss > the deadline or otherwise, no one on this list can help you. > > Cheers, > Adrian. > > ---------- Forwarded message ---------- > From: LH (Leslie Hawthorn) > Date: Tue, Mar 31, 2009 at 4:30 PM > Subject: ***Very Important***: Get Your Students to Submit their > Proposals via the 2009 site *now* > To: Google Summer of Code Mentors List > > > > > Hello everyone, > > Right now, we have about 2x the students registered on the site as we > do number of proposals submitted. No doubt some of these student > registrations are "spam" from folks who won't be submitting proposals. > However, I am also hearing things like "We have six applications > submitted to the GSoC 2009 site but we're discussing another 20 or so > in our forums." > > I realize that many organizations are working with students to refine > their proposal ideas on their mailing lists, wikis, etc. However, a > proposal on a wiki, mailing list, etc. does not constitute an actual > application for the program; the proposal must be submitted to the > GSoC 2009 site. While doing review and refinement outside of > http://socghop.appspot.com is a useful exercise, it doesn't allow us > to accurately gauge the number of student proposals we're receiving > for GSoC 2009. > > Please help us get an accurate sense of how many proposals will be > submitted for GSoC 2009 by asking your students to submit their > proposals to the GSoC 2009 site *now*. They are welcome to link to the > wiki page, mailing list thread, forum topic, etc. where their > proposals are under discussion and refinement as part of the proposal > submission process.[0] > > In case folks are wondering, we want to get this data so we can decide > if it's worthwhile to extend the student application deadline. We're > pretty much set on "no, we won't be extending the deadline," but we > need better data so we can assess if a deadline extension would be a > good thing to do. We're still anticipating the usual "near to deadline > application submission rush" that we see every year but we'd like to > get a more accurate proposal count sooner rather than later. > > Cheers, > LH > > [0] - > http://socghop.appspot.com/document/show/program/google/gsoc2009/userguide#depth_studentapply > > > --~--~---------~--~----~------------~-------~--~----~ > You received this message because you are subscribed to the Google > Groups "Google Summer of Code Mentors List" group. > To post to this group, send email to > google-summer-of-code-mentors-list at googlegroups.com > To unsubscribe from this group, send email to > google-summer-of-code-mentors-list+unsubscribe at googlegroups.com > For more options, visit this group at > http://groups.google.com/group/google-summer-of-code-mentors-list?hl=en > -~----------~----~----~----~------~----~------~--~--- > From securityfusion at gmail.com Tue Mar 31 12:08:19 2009 From: securityfusion at gmail.com (Richardson Lima) Date: Tue, 31 Mar 2009 16:08:19 -0300 Subject: [Ns-developers] [released] Ns-2.33 compiled with Antnet implemented Message-ID: <3a835c350903311208n55ee2185mb6fa8ca07777f905@mail.gmail.com> Dears, Currently many researchers are sending me emails reporting problems in the implementation antnet,so I am put the tarball ns2.33_and_AntNet1.0_compiled.tar.gz ,this package contains the Ns-2.33 compiled with Antnet implemented, the link for download is http://antnet.wordpress.com , the space on the FTP server was provided by Li Amoos. Amoos Lin is Ph.D candidate on Department of Electronic Engineering in National Taiwan University of Science and Technology,Taiwan. To solve some problems in the implementation I am writing a second version of the manual for implementation of antnet in ns-2.33, I report some ?tricks?. Hope that I have helped. Regards, -- -- ----------------------------------------------- Richardson Lima http://antnet.wordpress.com http://securityfusion.sourceforge.net (Security Fusion intrusion detection system) Position: Security System Administrator Location: Networking and Telecommuncations Research Group Federal University of Pernambuco Informatics Center, Brazil P.O. Box: 7851, ZIP: 50732-970 Phone: +55-81-2126-8954 Fax:+55-81-2126-8955 Gsm Mobile: +55 81 88725173 Este e-mail ? confidencial e de uso exclusivo do destinat?rio. Seu conte?do n?o deve ser revelado a terceiros. Caso voc? n?o seja o destinat?rio, por favor notifique o remetente e elimine esta mensagem imediatamente. Alerto que esta mensagem transitou por rede p?blica de comunica??o, estando, portanto, sujeita aos riscos inerentes a essa forma de comunica??o. This e-mail is private and confidential, and of exclusive use of the addressee only. Its contents should not be revealed to third parties. If you are not the intended addressee, please notify the sender and promptly delete this message. It should be advised that this correspondence has been transmitted through a public communication channel, being, therefore, subject to the inherent risks of such kind of communication.