[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NS doesn't write CBR and rtProtoDV events in the same simulation



Thanks to Guo Liang, Cheng Tak Cheung, and Lloyd Wood for this thread of
conversation. The patches are applied and the DV routing seems to be
working fine. 

CVS is updated and the changes will take effect tomorrow PST.

There's in fact a test on DV in the test-suite-greis.tcl, but somehow the
output isn't correct (containing only the routing msg exchanges).  This
has also been fixed.

Cheers,
-Polly

On Mon, 14 Feb 2000, Lloyd Wood wrote:

> On Mon, 14 Feb 2000, Joseph Cheng Tak Cheung (CE) wrote:
> 
> > > 	I have made the changes according to what Guo Liang described and
> > > I could finally make CBR and rtProtoDV work together. Do you want to give
> > > it a try? Attached you can find the diffs. You can patch the files by:
> > > 
> > > 	patch rtProtoDV.cc rtProtoDV.diff
> > > 	patch route-proto.tcl route-proto.diff
> 
> well, under Solaris for me it's
> 
> patch -i rtProtoDV.diff rtProtoDV.cc
> patch -i route-proto.diff route-proto.tcl
> 
> and this has fixed DV routing in a 6-November-99 snapshot for me;
> looks good. Thankyou, Joseph - you've restored my faith in ns. (I can
> actually think about getting back to running just the one
> recent version of ns now...)
> 
> ns-maintainers - can you please:
> 
> 1. examine these patches (appended as text below at end) and
>    apply them in CVS if suitable? (I noticed slight changes in the
>    ordering of simultaneous rtProto events at time 4e-06 in tracefiles
>    between my snapshot and ns 2.1b5 using heap; presumably that's
>    nothing to do with DV per se, and multipath results look identical)
>  
> 2. come up with a validation test for DV routing, also testing out
>    cost and multipath?
> 
> 3. have CVS versioning version #s written into the comments of all .tcl
>    files, so we know what version of each we're using, just as is done
>    for .cc files? rtglib/* files (and anything but tcl/lib/*) are
>    missing this. Too useful to leave out - even for example code.
> 
> thanks,
> 
> L.
> 
> back to snoop being snoop.
> 
> > > > DV routing is broken in ns 2.1b6, and has been for some time before
> > > > that; it broke between snapshots of 9 September and 4 November 1999.
> > > > 
> > > > DV routing is the 'snoop' of ns 2.1b6. Actually, no; _snoop_ is the
> > > > 'snoop' of ns 2.1b?, and this is _another_ _new_ snoop.
> > > > 
> > > > See:
> > > > 
> > > > http://www-mash.cs.berkeley.edu/dist/archive/ns-users/9912/0039.html
> > > > 
> > > > and thread. Guo Liang claims to have fixed this for himself, but I was
> > > > unable to duplicate his fixes to provide a patch. I think DV routing
> > > > needs both fixing and a validation test; it is, after all, the only
> > > > full implementation of a routing protocol included in the
> > > > distribution.
> > > > 
> > > > L.
> > > > 
> > > > eventually, everything will change and break in ns - except TCP.
> 
> <[email protected]>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>
> 
> patches below, in PRE tags so it looks readable in mail archive:
> 
> <PRE>
> 
> diff to rtProtoDV.cc:
> 
> 55,57c55,57
> < 		dst.port_ = 0;
> < 		u_int32_t mtvar = atoi(argv[3]);
> < 		u_int32_t size  = atoi(argv[4]);
> ---
> > 		dst.port_ = atoi(argv[3]);
> > 		u_int32_t mtvar = atoi(argv[4]);
> > 		u_int32_t size  = atoi(argv[5]);
> 
> diff to route-proto.tcl:
> 
> 284c284
> < rtPeer instproc init {addr cls} {
> ---
> > rtPeer instproc init {addr port cls} {
> 286c286
> <     $self instvar addr_ metric_ rtpref_
> ---
> >     $self instvar addr_ port_ metric_ rtpref_
> 287a288
> >     set port_ $port
> 298a300,304
> > rtPeer instproc port? {} {
> >     $self instvar port_
> >     return $port_
> > }
> > 
> 456c462
> < 		    $proto($node) add-peer $nbr [$rtproto set agent_addr_]
> ---
> > 		    $proto($node) add-peer $nbr [$rtproto set agent_addr_] [$rtproto set agent_port_]
> 483c489
> < Agent/rtProto/DV instproc add-peer {nbr agentAddr} {
> ---
> > Agent/rtProto/DV instproc add-peer {nbr agentAddr agentPort} {
> 485c491
> <     $self set peers_($nbr) [new rtPeer $agentAddr $class]
> ---
> >     $self set peers_($nbr) [new rtPeer $agentAddr $agentPort $class]
> 667c673
> <     $self send-update [$peers_($nbr) addr?] $id [array size update]
> ---
> >     $self send-update [$peers_($nbr) addr?] [$peers_($nbr) port?] $id [array size update]
> 
> 
> </PRE>
> 
> 
> 
>