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: