[Ns-developers] Requesting help for csma promiscuous mode

Tom Henderson tomh at tomh.org
Mon Jul 7 05:56:34 PDT 2008


Gustavo Carneiro wrote:
> 
> 
> 2008/7/5 Tom Henderson <tomh at tomh.org <mailto:tomh at tomh.org>>:
> 
>     craigdo at ee.washington.edu <mailto:craigdo at ee.washington.edu> wrote:
> 
> 
>         I want to point out that we seem to be operating in a mode where
>         API changes
>         are a non-issue.  That surprises me.
> 
> 
> 
>     It is not a non-issue, but at issue also is the long-term integrity
>     of what we are building.  Now that we are past 3.1 release, we are
>     going to be faced with questions like this repeatedly.
> 
>     I expect that in 3.2 release (and probably a few more), we will have
>     to have release notes that call out a few changes; e.g.
> 
>     "API changes from 3.1 to 3.2
>     ============================
>     1. CsmaChannel::Send(); now takes an extra NetDevice parameter
>     2. ...
>     "
> 
>     I would hope that this would decline in frequency with each release,
>     as we get more and more usage.
> 
>     I think the API stability we want in this project is stability that,
>     first of all, doesn't cause subtle undetected errors when using the
>     API across simulator versions, and second, doesn't present a serious
>     impediment to upgrading and usability.  If someone's build breaks
>     but the fix is easy and well documented, that doesn't concern me too
>     much at this stage of ns-3 development.
> 
> 
> I think that is a reasonable rule.  On that note:
> 
>   1- NetDevice callbacks have to change signature;
> 
>   2- Node protocol handlers have to change callback signature;
> 

ah, I see now.  I was wrong to previously suggest that it could be 
folded in without API breakage, because of this callback signature point.

>   3- Protocol handlers have to be prepared to ignore packets "not for 
> me".  From my experience looking at the code, figuring this out is far 
> from trivial (different address types, dealing with L2 multicast groups, 
> etc.), so the extra packet type parameter is needed if we want to keep 
> developers' mental sanity.
> 
>   4- I really think it makes no sense in NS-3 to have a "promiscuous 
> mode" if we have a single receive callback in netdevices.  Might as well 
> _always_ receive in promiscuous mode because a) simplifies API, and b) 
> allows subtle bugs of a protocol handler not being prepared for 
> promiscuous mode, due to a bug, and suddenly another handler activates 
> the promiscuous mode and triggers a bug in the first handler, until then 
> undiscovered.  "Modes" in general are usually evil because of the way 
> they attract bugs when multiple independent code modules are brought 
> together into the same system.
> 
> That means breaking the API :(  But ok, if it makes Mathieu happy, and 
> at least adapting to the new API wouldn't be so difficult.
> 

I think you are convincing me now to keep this handler separate, for all 
of the above reasons.

Tom




More information about the Ns-developers mailing list