[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



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>