Download presentation
Presentation is loading. Please wait.
Published byBarnaby Ray Modified over 9 years ago
1
2015-12-25 The Creation of NS2 Simulated Environment ( 1 ) LI Chengbo lichengbo518@stu.snnu.edu.cn
2
2015-12-25 tcl Interpreter With Extensions tcl otcl tclcl U I Event Scheduler Network Component A Little Bit of Review C++
3
2015-12-25 Example Script set ns [new Simulator] set n0 [$ns node] set n1 [$ns node] n0n1 set ftp [new Application/FTP] $ftp attach-agent $tcp $ns at 0.2 "$ftp start" $ns at 1.2 ” exit" $ns run $ns duplex-link $n0 $n1 1.5Mb 10ms DropTail set tcp [$ns create-connection TCP $n0 TCPSink $n1 0]
4
2015-12-25 Basic ns-2: Covered wired & wireless unicast & multicast TCP & UDP errors & network dynamics ns & nam tracing application-level support
5
2015-12-25 Outline for Today ns-2 Internal Making changes New components –in otcl –otcl and C++ Linkage –in C++
6
2015-12-25 ns-2 Internals Discrete Event Scheduler Network Topology Routing Transport Application Packet Flow Packet Format
7
2015-12-25 Discrete Event Scheduler time_, uid_, next_, handler_ handler_ -> handle() time_, uid_, next_, handler_ insert head_ ->
8
2015-12-25 Network Topology - Node n0n1 Addr Classifier Port Classifier classifier_ dmux_ entry_ Node entry Unicast Node Multicast Classifier classifier_ dmux_ entry_ Node entry Multicast Node multiclassifier_
9
2015-12-25 Network Topology - Link n0n1 enqT_queue_deqT_ drophead_drpT_ link_ttl_ n1 entry_ head_
10
2015-12-25 Routing n0n1 Addr Classifier Port Classifier classifier_ dmux_ entry_ Node entry 0 1 enqT_queue_deqT_ drophead_drpT_ link_ttl_ n1 entry_ head_
11
2015-12-25 Routing (cont.) n0n1 Addr Classifier Port Classifier classifier_ dmux_ entry_ 0 1 Addr Classifier Port Classifier classifier_ dmux_ entry_ 1 0 Link n0-n1 Link n1-n0
12
2015-12-25 0 1 Transport n0n1 Addr Classifier Port Classifier classifier_ dmux_ entry_ 0 Agent/TCP agents_ Addr Classifier Port Classifier classifier_ dmux_ entry_ 1 0 Link n0-n1 Link n1-n0 0 Agent/TCPSink agents_ dst_addr_=1 dst_port_=0 dst_addr_=0 dst_port_=0
13
2015-12-25 Application 0 1 n0n1 Addr Classifier Port Classifier classifier_ dmux_ entry_ 0 Agent/TCP agents_ Addr Classifier Port Classifier classifier_ dmux_ entry_ 1 0 Link n0-n1 Link n1-n0 0 Agent/TCPSink agents_ Application/FTP dst_addr_=1 dst_port_=0 dst_addr_=0 dst_port_=0
14
2015-12-25 Packet Flow 0 1 n0n1 Addr Classifier Port Classifier entry_ 0 Agent/TCP Addr Classifier Port Classifier entry_ 1 0 Link n0-n1 Link n1-n0 0 Agent/TCPSink Application/FTP dst_addr_=1 dst_port_=0 dst_addr_=0 dst_port_=0
15
2015-12-25 Packet Format header data ip header tcp header rtp header trace header cmn header... ts_ ptype_ uid_ size_ iface_
16
2015-12-25 NS-2 Wireless Internal Packet headers Mobile node Wireless channel NS-2 Wireless Internal
17
2015-12-25 Wireless Packet Format header data ts_ ptype_ uid_ size_ iface_ IP header...... cmn header LL MAC 802_11...... ARP wireless headers
18
2015-12-25 Portrait of A Mobile Node Node ARP Propagation and antenna models MobileNode LL MAC PHY LL CHANNEL LL MAC PHY Classifier: Forwarding Agent: Protocol Entity Node Entry LL: Link layer object IFQ: Interface queue MAC: Mac object PHY: Net interface protocol agent routing agent addr classifier port classifier 255 IFQ defaulttarget_
19
2015-12-25 Mobile Node: Layer 2 Link Layer –Same as LAN, but with a separate ARP module Interface queue –Give priority to routing protocol packets Mac Layer –IEEE 802.11 –RTS/CTS/DATA/ACK for all unicast packets –DATA for all broadcast packets
20
2015-12-25 Mobile Node: Layer 1 Network interface (PHY) –Parameters based on Direct Sequence Spread Spectrum (WaveLan) –Interface with: antenna and propagation models –Update energy: transmission, reception, and idle Radio Propagation Model –Friss-space attenuation(1/r 2 ) at near distance –Two-ray Ground (1/r 4 ) at far distance Antenna –Omni-directional, unity-gain
21
2015-12-25 Wireless Channel Duplicate packets to all mobile nodes attached to the channel except the sender It is the receiver ’ s responsibility to decide if it will accept the packet –Whether the sender is close enough –Collision is also handled at individual receivers –O(N 2 ) messages grid keeper
22
2015-12-25 Outline for Today ns-2 Internal Making changes New components –in otcl –otcl and C++ Linkage –in C++ debugging
23
2015-12-25 Making Changes In C++ space –Straight forward –Recompile In otcl space –source in the simulation scripts –Or recompile –Ex. changing the packet size tcl/ex/simple.tcl CBR source packet size 210 Change to 420
24
2015-12-25 Understanding The Makefile Defined variables –For example c++ compiler in CPP Header files to include in INCLUDES cc files to compiles in OBJ_CC tcl files to merge in NS_TCL_LIB Commands –For example distclean to clean the distribution ns to build ns binary
25
2015-12-25 Adding New Components in otcl otcl and C++ linkage in C++
26
2015-12-25 New Component Purely in otcl Additional.tcl file Adding new files –change Makefile (NS_TCL_LIB) –source in tcl/lib/ns-lib.tcl –recompile
27
2015-12-25 Example: Agent/Message n0 n1 n4 n5 n2 n3 128Kb, 50ms 10Mb, 1ms CC cross traffic SR msg agent
28
2015-12-25 Agent/Message A UDP agent (without UDP header) Up to 64 bytes user message Good for fast prototyping a simple idea Usage requires extending ns functionality SR pkt: 64 bytes of arbitrary string Receiver-side processing
29
2015-12-25 Agent/Message: Step 1 Define sender class Sender –superclass Agent/Message # Message format: “Addr Op SeqNo” Sender instproc send-next {} { $self instvar seq_ agent_addr_ $self send “$agent_addr_ send $seq_” incr seq_ global ns $ns at [expr [$ns now]+0.1] "$self send-next" }
30
2015-12-25 Agent/Message: Step 2 Define sender packet processing Sender instproc recv msg { $self instvar agent_addr_ set sdr [lindex $msg 0] set seq [lindex $msg 2] puts "Sender gets ack $seq from $sdr" }
31
2015-12-25 Agent/Message: Step 3 Define receiver packet processing Class Receiver –superclass Agent/Message Receiver instproc recv msg { $self instvar agent_addr_ set sdr [lindex $msg 0] set seq [lindex $msg 2] puts “Receiver gets seq $seq from $sdr” $self send “$agent_addr_ ack $seq” }
32
2015-12-25 Agent/Message: Step 4 Scheduler and tracing # Create scheduler set ns [new Simulator] # Turn on Tracing set fd [new “message.nam” w] $ns namtrace-all $fd
33
2015-12-25 Agent/Message: Step 5 Topology for {set i 0} {$i < 6} {incr i} { set n($i) [$ns node] } $ns duplex-link $n(0) $n(1) 128kb 50ms DropTail $ns duplex-link $n(1) $n(4) 10Mb 1ms DropTail $ns duplex-link $n(1) $n(5) 10Mb 1ms DropTail $ns duplex-link $n(0) $n(2) 10Mb 1ms DropTail $ns duplex-link $n(0) $n(3) 10Mb 1ms DropTail $ns queue-limit $n(0) $n(1) 5 $ns queue-limit $n(1) $n(0) 5
34
2015-12-25 Agent/Message: Step 6 Routing # Packet loss produced by queueing # Routing protocol: let’s run distance vector $ns rtproto DV
35
2015-12-25 Agent/Message: Step 7 Cross traffic set udp0 [new Agent/UDP] $ns attach-agent $n(2) $udp0 set null0 [new Agent/NULL] $ns attach-agent $n(4) $null0 $ns connect $udp0 $null0 set exp0 [new Application/Traffic/Exponential] $exp0 set rate_ 128k $exp0 attach-agent $udp0 $ns at 1.0 “$exp0 start”
36
2015-12-25 Agent/Message: Step 8 Message agents set sdr [new Sender] $sdr set packetSize_ 1000 set rcvr [new Receiver] $rcvr set packetSize_ 40 $ns attach $n(3) $sdr $ns attach $n(5) $rcvr $ns connect $sdr $rcvr $ns connect $rcvr $sdr $ns at 1.1 “$sdr send-next”
37
2015-12-25 Agent/Message: Step 9 End-of-simulation wrapper (as usual) $ns at 2.0 finish proc finish {} { global ns fd $ns flush-trace close $fd exit 0 }
38
2015-12-25 Agent/Message: Result Example output >./ns msg.tcl Receiver gets seq 0 from 0 Sender gets ack 0 from 1 Receiver gets seq 1 from 0 Sender gets ack 1 from 1 Receiver gets seq 2 from 0 Sender gets ack 2 from 1 Receiver gets seq 3 from 0 Sender gets ack 3 from 1 Receiver gets seq 4 from 0 Sender gets ack 4 from 1 Receiver gets seq 5 from 0
39
2015-12-25 Add Your Changes into ns TK8.0OTcltclclTcl8.0ns-2nam-1 tcl extest lib... examples validation tests C++ code OTcl code ns-allinone mcast mysrc msg.tcl
40
2015-12-25 Add Your Change into ns tcl/lib/ns-lib.tcl Class Simulator … source../mysrc/msg.tcl Makefile NS_TCL_LIB = \ tcl/mysrc/msg.tcl \ … make distclean./configure –Or: change Makefile.in, make distclean, then./configure
41
2015-12-25 Adding New Components In otcl otcl and C++ linkage In C++
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.