1: #NS2_有线部分\homework02.tcl
2:
3: #Create a simulator object
4: set ns [new Simulator]
5:
6: #Define different colors for data flows
7: $ns color 1 Blue
8: $ns color 2 Red
9:
10: #Open the nam trace file
11: set nf [open szsh.nam w]
12: $ns namtrace-all $nf
13:
14: #Open the trace record file
15: set nd [open szsh.tr w]
16: $ns trace-all $nd
17:
18: #Define a 'finish' procedure
19: proc finish {} {
20:     global ns nf nd
21:     $ns flush-trace
22:     #Close the trace file
23:     close $nf
24:     #Close the record file
25:     close $nd
26:     #Execute nam on the trace file
27:     exec nam szsh.nam &
28:     exit 0
29: }
30:
31: #Create two nodes
32: set NODE_ShenZhen [$ns node]
33: $NODE_ShenZhen color red
34: $NODE_ShenZhen shape circle
35: $NODE_ShenZhen label "ShenZhen"
36: $NODE_ShenZhen label-color red
37: $NODE_ShenZhen label-at up
38:
39: set NODE_ShangHai [$ns node]
40: $NODE_ShangHai color blue
41: $NODE_ShangHai shape circle
42: $NODE_ShangHai label "ShangHai"
43: $NODE_ShangHai label-color blue
44: $NODE_ShangHai label-at down
45:
46:
47: #Create a duplex link between the nodes
48: $ns duplex-link $NODE_ShenZhen $NODE_ShangHai 1Mb 100ms DropTail
49:
50: #Monitor the queue for the link between node 2 and node 3
51: $ns duplex-link-op $NODE_ShenZhen $NODE_ShangHai queuePos 0.5
52: $ns duplex-link-op $NODE_ShenZhen $NODE_ShangHai color green
53: $ns duplex-link-op $NODE_ShenZhen $NODE_ShangHai orient right
54:
55: #Create a UDP agent and attach it to node NODE_ShenZhen
56: set Agent_Sender [new Agent/UDP]
57: $Agent_Sender set agent_addr_   1000
58: $Agent_Sender set agent_port_   100
59: $ns attach-agent $NODE_ShenZhen $Agent_Sender
60:
61: ## Create a Exponential traffic source and attach it to Agent_Sender
62: #set APP_EXP [new Application/Traffic/Exponential]
63: #$APP_EXP set packetSize_    400
64: #$APP_EXP set burst_time_    400ms
65: #$APP_EXP set idle_time_     100ms
66: #$APP_EXP set rate_          150kb
67: #$APP_EXP attach-agent $Agent_Sender
68:
69: set APP_PARETO [new Application/Traffic/Pareto]
70: $APP_PARETO set packetSize_     400
71: $APP_PARETO set burst_time_     400ms
72: $APP_PARETO set idle_time_      100ms
73: $APP_PARETO set rate_           100kb
74: $APP_PARETO set shape_          1.2
75: $APP_PARETO attach-agent $Agent_Sender
76:
77: #Create a Null agent (a traffic sink) and attach it to node NODE_ShangHai
78: set Agent_Receiver [new Agent/Null]
79: $Agent_Receiver set dst_addr_   2000
80: $Agent_Receiver set dst_port_   200
81: $ns attach-agent $NODE_ShangHai $Agent_Receiver
82:
83: #Connect the traffic source with the traffic sink
84: $ns connect $Agent_Sender $Agent_Receiver
85:
86: #Schedule events for the CBR agent
87: $ns at 0.2 "$APP_PARETO start"
88: $ns at 0.8 "$APP_PARETO stop"
89:
90: #Call the finish procedure after 5 seconds of simulation time
91: $ns at 1.0 "finish"
92:
93: #Run the simulation
94: $ns run
95: