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

[ns] NS






>From: Sean Murphy <[email protected]>
>To: Lloyd Wood <[email protected]>
>CC: [email protected]
>Subject: Re: [ns] Specifying arbitrary node addresses
>Date: Wed, 21 Jun 2000 20:04:43 +0100 (BST)
>
> > > I had a look at hierarchical addressing, but I'm quite sure that this
> > > carries hierarchical routing baggage with it. Can someone confirm
> > > this? Afaik, this then imposes constraints on the addresses chosen for 
>the
> > > nodes. This is not what I want. Is it possible to decouple 
>hierarchical
> > > addressing from hierarchical routing?
> >
> > This would be ideal if done - the existing flat address space can (and
> > IMO should) be thought of as hierarchical addressing with one level of
> > hierarchy.
>
>I had a look at the way that hierarchical addressing and routing are
>implemented, but it seemed like a bit of a nightmare to start changing. I
>didn't like the fact that the address was stored in a tcl variable as a
>string of dotted quads, and seemed to be manipulated in this format. I
>still haven't figured out how packets are assigned a 32-bit address.
>
>I did hack together some (rather unsubstantial) changes to the way that
>flat routing is implemented. I added code to enable a node address to be
>specified (either in dotted quad format or as some abstract number) and I
>modified the routing tables in each node so that node address is used to
>index the table rather than the node id.
>
>If these changes are made to the code a node can now be added as follows:
>	set n(0) [$ns node 1.0.0.1]
>or
>	set some_arbitrary_node_number 89753
>	set n(0) [$ns node $some_arbitrary_node_number]
>I only wrote it to work with generic nodes, so I don't know if it will
>cause other things to break.
>
>I made the changes to a bastardised version of ns-2.1b6 - I think that the
>files I changed are the same as those in ns-2.1b6, but I've provided
>context diffs in any case.
>
>One rather obvious caveat - allowing such control over the node addresses
>has the potential to go pear-shaped: multiple nodes having the same
>address can now exist in the network.
>
>Sean.
>
>-----
>Sean Murphy,			Email: [email protected]
>Teltec Ireland,			Phone: +353-1-7045080
>DCU, Dublin 9,			Fax:   +353-1-7045092
>Ireland.
>
>*** ns-address.tcl	Wed Jun 21 16:17:42 2000
>--- ns-address.tcl.old	Wed Jun 21 15:31:09 2000
>***************
>*** 432,467 ****
>   	}
>   	error "get-node-id-by-addr:Cannot find node with given address"
>   }
>-
>- proc convert-dotted-ip-to-number {dottedipaddr} {
>-     if { [string first "." $dottedipaddr] == -1 } {
>- 	return $dottedipaddr
>-     }
>-     set fields [split $dottedipaddr .]
>-     if { [llength $fields] > 4 } {
>- 	puts "IP Address contains more than 4 fields"
>- 	exit 1
>-     }
>-
>-     set addr(0) [check-field-value [lindex $fields 0]]
>-     set addr(1) [check-field-value [lindex $fields 1]]
>-     set addr(2) [check-field-value [lindex $fields 2]]
>-     set addr(3) [check-field-value [lindex $fields 3]]
>-
>-     # puts "0 = $addr(0), 1 = $addr(1), 2 = $addr(2), 3 = $addr(3)"
>-     set addressnumber [expr "$addr(3) + ($addr(2) << 8) + \
>- ($addr(1) << 16) + ($addr(0) << 24)"]
>-
>-     return $addressnumber
>- }
>-
>- proc check-field-value {fieldvalue} {
>-     if {$fieldvalue == "" } {
>- 	return 0
>-     }
>-     if { $fieldvalue > 255 } {
>- 	puts "dotted IP address must contain fields in range (0-255)"
>- 	exit 1
>-     }
>-     return $fieldvalue
>- }
>--- 432,434 ----
>
>*** ns-node.tcl	Wed Jun 21 16:19:35 2000
>--- ns-node.tcl.old	Wed Jun 21 14:26:57 2000
>***************
>*** 73,89 ****
>   }
>
>   Node instproc set-node-address { args } {
>-     $self instvar address_
>-     # this assumes that args contains a single address (either dotted IP, 
>or
>-     # abstract number)
>-
>-     if { $args != "{{}}" } {
>- 	if { [string first "." $args] != -1 } {
>- 	    set address_ [convert-dotted-ip-to-number $args]
>- 	} else {
>- 	    set address_ $args
>- 	}
>-     }
>   }
>
>   Node instproc set-node-addressMIPBS { args } {
>--- 73,78 ----
>
>*** ns-route.tcl	Wed Jun 21 15:23:25 2000
>--- ns-route.tcl.old	Wed Jun 21 15:20:23 2000
>***************
>*** 206,213 ****
>   				# a single line
>   				set nh [$r lookup $i $j]
>   			    if { $nh >= 0 } {
>! 				set nj $Node_($j)
>! 				$n1 add-route [$nj node-addr] [$link_($i:$nh) head]
>   				###$n1 incr-rtgtable-size
>   				}
>   			}
>--- 206,212 ----
>   				# a single line
>   				set nh [$r lookup $i $j]
>   			    if { $nh >= 0 } {
>! 				$n1 add-route $j [$link_($i:$nh) head]
>   				###$n1 incr-rtgtable-size
>   				}
>   			}
>
>

________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com