[Click] Patch for nanosecond scheduling precision in ns-3-click

Lalith Suresh suresh.lalith at gmail.com
Fri Feb 17 04:37:38 EST 2012


Hi Sascha,

On Fri, Feb 17, 2012 at 10:33 AM, Sascha Alexander Jopen
<jopen at informatik.uni-bonn.de> wrote:
> Hey,
>
> those patches are meant for ns3, sorry. I posted them here, because
> Lalith announce his changes here on this mailing list. I will post
> them on the ns3 mailing list.
>
> I will have a look at your changes later on.
>

I'll look into the patches soon. Been kind of busy lately.

> Sascha
>
> On 02/17/12 01:54, Eddie Kohler wrote:
>> Hi Sascha,
>>
>> Both of these patches are for ns, so I can't apply them. Did you
>> mean to send them elsewhere?
>>
>> I just checked in a change that you should look at...
>>
>> Eddie
>>
>>
>> On 2/11/12 3:18 PM, Sascha Alexander Jopen wrote:
>>> Hey,
>>>
>>> finally i've got some time to run simulations with the
>>> nanosecond precision changes. Well, they run with nanosecond
>>> precision.
>>>
>>> However, this does only work, when running the simulator with
>>> nanosecond or finer resolution. With lower resolution, the
>>> timestamp at which the event is scheduled is rounded down by the
>>> NS3 Time class. Because this depends on the resolution of NS3,
>>> this has to be fixed in HandleScheduleFromClick to the next
>>> matching timestamp. This is essentially the same as we did in
>>> click routerthread.cc to fix problems with nano-/microsecond
>>> precision. See the attached patch for a quick fix. This has to be
>>> applied to ns-3-dev as well, removing the microsecond part of
>>> it. Using other resolutions but the default resolution in ns3 has
>>> some disadvantages. Some models simply do not work with other
>>> resolutions, like the wifi dcf manager, which relies on us
>>> slottimes, for example.
>>>
>>> By the way, the last patch i submitted, which calls
>>> simclick_click_kill leads to segfaults when ns3 terminates with
>>> uninitialized click routers. The second patch fixes this (against
>>> ns-3-dev)
>>>
>>> Sascha
>>>
>>> On 01/25/12 21:41, Lalith Suresh wrote:
>>>> On Wed, Jan 25, 2012 at 9:40 PM, Eddie
>>>> Kohler<ekohler at gmail.com>  wrote:
>>>>> Hi Lalith,
>>>>>
>>>>> This is fair enough. But we could add a sim-command that
>>>>> returned 0 if the current timestamp is a timespec. On Ns-2
>>>>> this command would return -1. Then we could do what's
>>>>> appropriate within click.
>>>>>
>>>>
>>>> Alright. I'll have an update ready soon.
>>>>
>>>>> Eddie
>>>>>
>>>>>
>>>>>
>>>>> On 1/9/12 3:33 PM, Lalith Suresh wrote:
>>>>>>
>>>>>> Hi Eddy,
>>>>>>
>>>>>> On Mon, Jan 9, 2012 at 7:05 PM, Eddie
>>>>>> Kohler<ekohler at gmail.com> wrote:
>>>>>>>
>>>>>>> Hi Lalith,
>>>>>>>
>>>>>>> This change looks generally good, but surely ns defines
>>>>>>> some version variables that we can use to detect whether
>>>>>>> "cursimnode->curtime" is a timespec or a timeval. If it
>>>>>>> doesn't, then please add one: #define
>>>>>>> NS_CURTIME_IS_TIMESPEC 1. Then Click can be made to work
>>>>>>> cleanly with either, for instance:
>>>>>>>
>>>>>>> #if NS_CURTIME_IS_TIMESPEC *ts = cursimnode->curtime;
>>>>>>> #else ts->tv_sec = cursimnode->curtime.tv_sec;
>>>>>>> ts->tv_nsec = cursimnode->curtime.tv_usec * 1000; #endif
>>>>>>>
>>>>>>> The timer scheduling code in routerthread.cc would also
>>>>>>> need a fork: #if CLICK_NS&&   NS_CURTIME_IS_TIMESPEC
>>>>>>> /timespec-code/ #elif CLICK_NS /timeval-code/ #endif.
>>>>>>>
>>>>>>> Make sense?
>>>>>>>
>>>>>>
>>>>>> Nopes (or I'm way too tired). :)
>>>>>>
>>>>>> I don't think a #define in ns-3 will help here. ns-3 links
>>>>>> with libnsclick.so dynamically, and "cursimnode->curtime"
>>>>>> comes from include/click/simclick.h (struct simclick_node).
>>>>>> If we are to use the preprocessor to fork the code
>>>>>> appropriately, then we'd need to know
>>>>>> NS_CURTIME_IS_TIMESPEC during Click's compile time. Right?
>>>>>>
>>>>>>> Sascha, did you end up trying this? Eddie
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 12/31/11 7:46 AM, Lalith Suresh wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> Hello all,
>>>>>>>>
>>>>>>>> After Sascha raised this issue on the ns-3-users list
>>>>>>>> [1], I tried making a quick patch to make Click's NS
>>>>>>>> code use timespec, and make the corresponding changes
>>>>>>>> on the ns-3 side as well.
>>>>>>>>
>>>>>>>> I've pushed the changes to my ns-3-click [2] and Click
>>>>>>>> [3] repositories. Kindly review. I'll push to ns-3-dev
>>>>>>>> once the Click side changes are applied. Note that this
>>>>>>>> will probably break the ns-2 patches for nsclick.
>>>>>>>>
>>>>>>>>
>>>>>>>> [1]
>>>>>>>>
>>>>>>>> http://groups.google.com/group/ns-3-users/browse_thread/thread/2be8d60531bd82a8
>>>>>>>>
>>>>>>>>
>>>>>>>>
> [2] http://code.nsnam.org/lalith/ns-3-click-dev
>>>>>>>> [3] https://github.com/lalithsuresh/click
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> _______________________________________________ click mailing
>>> list click at amsterdam.lcs.mit.edu
>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>



-- 
Lalith Suresh
www.lalith.in



More information about the click mailing list