1: #NS2_有线部分\homework03.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:
32: #Create two nodes
33: set NODE_ShenZhen [$ns node]
34: $NODE_ShenZhen color red
35: $NODE_ShenZhen shape circle
36: $NODE_ShenZhen label "ShenZhen"
37: $NODE_ShenZhen label-color red
38: $NODE_ShenZhen label-at up
39:
40: set NODE_ShangHai [$ns node]
41: $NODE_ShangHai color blue
42: $NODE_ShangHai shape circle
43: $NODE_ShangHai label "ShangHai"
44: $NODE_ShangHai label-color blue
45: $NODE_ShangHai label-at down
46:
47:
48: #Create a duplex link between the nodes
49: $ns duplex-link $NODE_ShenZhen $NODE_ShangHai 1Mb 100ms DropTail
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: ##TCP Traffic from NODE_ShangHai to NODE_ShenZhen
56: #Create a TCP agent and attach it to node NODE_ShangHai
57: set Agent_Sender_TCP [new Agent/TCP]
58: $Agent_Sender_TCP set class_    2
59: $Agent_Sender_TCP set fid_      1
60: $Agent_Sender_TCP set window_   20
61: $ns attach-agent $NODE_ShangHai $Agent_Sender_TCP
62: # Create a FTP source and attach it to Agent_Sender_TCP
63: set APP_FTP [new Application/FTP]
64: $APP_FTP attach-agent $Agent_Sender_TCP
65: $APP_FTP set type_  FTP
66: #Create a TCPSink agent and attach it to node NODE_ShenZhen
67: set Agent_Receiver_TCPSink [new Agent/TCPSink]
68: $ns attach-agent $NODE_ShenZhen $Agent_Receiver_TCPSink
69: $ns connect $Agent_Sender_TCP $Agent_Receiver_TCPSink
70:
71: ##UDP Traffic from NODE_ShenZhen to NODE_ShangHai
72: #Create a UDP agent and attach it to node NODE_ShenZhen
73: set Agent_Sender_UDP [new Agent/UDP]
74: $Agent_Sender_UDP set agent_addr_   1000
75: $Agent_Sender_UDP set agent_port_   100
76: $Agent_Sender_UDP set fid_          2
77: $ns attach-agent $NODE_ShenZhen $Agent_Sender_UDP
78: ## Create a Exponential traffic source and attach it to Agent_Sender_UDP
79: #set APP_EXP [new Application/Traffic/Exponential]
80: #$APP_EXP set packetSize_    400
81: #$APP_EXP set burst_time_    400ms
82: #$APP_EXP set idle_time_     100ms
83: #$APP_EXP set rate_          150kb
84: #$APP_EXP attach-agent $Agent_Sender_UDP
85: #set APP_PARETO [new Application/Traffic/Pareto]
86: #$APP_PARETO set packetSize_     400
87: #$APP_PARETO set burst_time_     400ms
88: #$APP_PARETO set idle_time_      100ms
89: #$APP_PARETO set rate_           200kb
90: #$APP_PARETO set shape_          1.2
91: #$APP_PARETO attach-agent $Agent_Sender_UDP
92: set APP_CBR [new Application/Traffic/CBR]
93: $APP_CBR set packetSize_    1000
94: $APP_CBR set burst_time_    500ms
95: $APP_CBR set idle_time_     100ms
96: $APP_CBR set rate_          1050kb
97: $APP_CBR set random_        On
98: $APP_CBR attach-agent $Agent_Sender_UDP
99: #Create a Null agent (a traffic sink) and attach it to node NODE_ShangHai
100: set Agent_Receiver_NULL [new Agent/Null]
101: $Agent_Receiver_NULL set dst_addr_   2000
102: $Agent_Receiver_NULL set dst_port_   200
103: $ns attach-agent $NODE_ShangHai $Agent_Receiver_NULL
104:
105: #Connect the traffic source with the traffic sink
106: $ns connect $Agent_Sender_UDP $Agent_Receiver_NULL
107:
108: #Schedule events for the CBR agent
109: $ns at 0.2 "$APP_FTP start"
110: $ns at 0.5 "$APP_CBR start"
111: $ns at 7.5 "$APP_CBR stop"
112: $ns at 9.7 "$APP_FTP stop"
113:
114:
115: #Call the finish procedure after 5 seconds of simulation time
116: $ns at 10.0 "finish"
117:
118: #Run the simulation
119: $ns run
120: