test-suite-full.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:36k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) 1997, 1998 The Regents of the University of California.
  3. # All rights reserved.
  4. #
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in the
  12. #    documentation and/or other materials provided with the distribution.
  13. # 3. All advertising materials mentioning features or use of this software
  14. #    must display the following acknowledgement:
  15. # This product includes software developed by the Computer Systems
  16. # Engineering Group at Lawrence Berkeley Laboratory.
  17. # 4. Neither the name of the University nor of the Laboratory may be used
  18. #    to endorse or promote products derived from this software without
  19. #    specific prior written permission.
  20. #
  21. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31. # SUCH DAMAGE.
  32. #
  33. # this is still somewhat experimental,
  34. # and should be considered of 'beta-test' quality  (kfall@ee.lbl.gov)
  35. #
  36. # This file tests "fulltcp", a version of tcp reno implemented in the 
  37. # simulator based on the BSD Net/3 code. 
  38. #
  39. # This test suite is based on test-suite-fulltcp.tcl from ns-1.
  40. set dir [pwd]
  41. catch "cd tcl/test"
  42. source misc.tcl
  43. remove-all-packet-headers       ; # removes all except common
  44. add-packet-header Flags IP TCP  ; # hdrs reqd for TCP
  45. Agent/TCP set tcpTick_ 0.1
  46. # The default for tcpTick_ is being changed to reflect a changing reality.
  47. Agent/TCP set rfc2988_ false
  48. # The default for rfc2988_ is being changed to true.
  49. # FOR UPDATING GLOBAL DEFAULTS:
  50. Agent/TCP set precisionReduce_ false ;   # default changed on 2006/1/24.
  51. Agent/TCP set rtxcur_init_ 6.0 ;      # Default changed on 2006/01/21
  52. Agent/TCP set updated_rttvar_ false ;  # Variable added on 2006/1/21
  53. Agent/TCP set useHeaders_ false
  54. # The default is being changed to useHeaders_ true.
  55. Agent/TCP set windowInit_ 1
  56. # The default is being changed to 2.
  57. Agent/TCP set singledup_ 0
  58. # The default is being changed to 1
  59. Agent/TCP set minrto_ 0
  60. # The default is being changed to minrto_ 1
  61. # To turn on debugging messages:
  62. # Agent/TCP/FullTcp set debug_ true;
  63. source topologies.tcl
  64. catch "cd $dir"
  65. Trace set show_tcphdr_ 1 ; # needed to plot ack numbers for tracing 
  66. TestSuite instproc printtimers { tcp time} {
  67.         global quiet
  68.         if {$quiet == "false"} {
  69.                 puts "time: $time sRTT(in ticks): [$tcp set srtt_]/8 RTTvar(in ticks): [$tcp set rttvar_]/4 backoff: [$tcp set backoff_]"
  70.         }
  71. }
  72. TestSuite instproc printtimersAll { tcp time interval } {
  73.         $self instvar dump_inst_ ns_
  74.         if ![info exists dump_inst_($tcp)] {
  75.                 set dump_inst_($tcp) 1
  76.                 $ns_ at $time "$self printtimersAll $tcp $time $interval"
  77.                 return
  78.         }
  79.         set newTime [expr [$ns_ now] + $interval]
  80.         $ns_ at $time "$self printtimers $tcp $time"
  81.         $ns_ at $newTime "$self printtimersAll $tcp $newTime $interval"
  82. }
  83. TestSuite instproc finish testname {
  84. global env quiet
  85. $self instvar ns_
  86. $ns_ halt
  87. set outtype text
  88. set tfile "out.tr"
  89. if { $quiet != "true" } {
  90.                 if { [info exists env(NSOUT)] } {
  91.                         set outtype $env(NSOUT)
  92.                 } elseif { [info exists env(DISPLAY)] } {
  93.                         set outtype xgraph
  94.                 }
  95. if { $outtype == "text" } {
  96. puts "output files are $fname.{p,packs,acks,d,ctrl,es,ecn,cact}"
  97. puts "  and $fname.r.{p,packs,acks,d,ctrl,es,ecn,cact}"
  98. } else {
  99. global TCLSH
  100. exec ../../bin/tcpf2xgr $TCLSH $tfile $outtype $testname &
  101. }
  102. }
  103. exec cp $tfile temp.rands; # verification scripts wants stuff in 'temp.rands'
  104. }
  105. TestSuite instproc bsdcompat tcp {
  106. $tcp set segsperack_ 2
  107. ## 
  108. $tcp set dupseg_fix_ false
  109. $tcp set dupack_reset_ true
  110. $tcp set bugFix_ false
  111. $tcp set data_on_syn_ false
  112. $tcp set tcpTick_ 0.5
  113. }
  114. # Definition of test-suite tests
  115. Class Test/full -superclass TestSuite
  116. Test/full instproc init topo {
  117. $self instvar net_ defNet_ test_
  118. set net_ $topo
  119. set defNet_ net0
  120. set test_ full
  121. $self next
  122. }
  123. Test/full instproc run {} {
  124. $self instvar ns_ node_ testName_
  125. set stopt 6.0
  126. # set up connection (do not use "create-connection" method because
  127. # we need a handle on the sink object)
  128. set src [new Agent/TCP/FullTcp]
  129. set sink [new Agent/TCP/FullTcp]
  130. $ns_ attach-agent $node_(s1) $src
  131. $ns_ attach-agent $node_(k1) $sink
  132. $src set fid_ 0
  133. $sink set fid_ 0
  134. $ns_ connect $src $sink
  135. # set up TCP-level connections
  136. $sink listen ; # will figure out who its peer is
  137. $src set window_ 100
  138. set ftp1 [$src attach-app FTP]
  139. $ns_ at 0.0 "$ftp1 start"
  140. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]  
  141. $ns_ run
  142. }
  143. Class Test/close -superclass TestSuite
  144. Test/close instproc init topo {
  145. $self instvar net_ defNet_ test_
  146. set net_ $topo
  147. set defNet_ net0
  148. set test_ close
  149. $self next
  150. }
  151. Test/close instproc run {} {
  152. $self instvar ns_ node_ testName_
  153. set stopt 6.0
  154. # set up connection (do not use "create-connection" method because
  155. # we need a handle on the sink object)
  156. set src [new Agent/TCP/FullTcp]
  157. set sink [new Agent/TCP/FullTcp]
  158. $ns_ attach-agent $node_(s1) $src
  159. $ns_ attach-agent $node_(k1) $sink
  160. $src set fid_ 0
  161. $sink set fid_ 0
  162. $ns_ connect $src $sink
  163. # set up TCP-level connections
  164. $sink listen
  165. $src set window_ 100
  166. set ftp1 [$src attach-app FTP]
  167. $ns_ at 0.0 "$ftp1 produce 50"
  168. $ns_ at 5.5 "$src close"
  169. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  170. $ns_ run
  171. }
  172. Class Test/twoway -superclass TestSuite
  173. Test/twoway instproc init topo {
  174. $self instvar net_ defNet_ test_
  175. set net_ $topo
  176. set defNet_ net0
  177. set test_ twoway
  178. $self next
  179. }
  180. Test/twoway instproc run {} {
  181. $self instvar ns_ node_ testName_
  182. set stopt 6.0
  183. set startt 3.0
  184. # set up connection (do not use "create-connection" method because
  185. # we need a handle on the sink object)
  186. set src [new Agent/TCP/FullTcp]
  187. set sink [new Agent/TCP/FullTcp]
  188. $ns_ attach-agent $node_(s1) $src
  189. $ns_ attach-agent $node_(k1) $sink
  190. $src set fid_ 0
  191. $sink set fid_ 0
  192. $ns_ connect $src $sink
  193. # set up TCP-level connections
  194. $sink listen
  195. $sink set iss_ 2144
  196. $src set window_ 100
  197. set ftp1 [$src attach-app FTP]
  198. $ns_ at 0.0 "$ftp1 start"
  199. set ftp2 [$sink attach-app FTP]
  200. $ns_ at $startt "$ftp2 start"
  201. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  202. $ns_ run
  203. }
  204. Class Test/twoway1 -superclass TestSuite
  205. Test/twoway1 instproc init topo {
  206. $self instvar net_ defNet_ test_
  207. set net_ $topo
  208. set defNet_ net0
  209. set test_ twoway1
  210. $self next
  211. }
  212. Test/twoway1 instproc run {} {
  213. $self instvar ns_ node_ testName_
  214. set stopt 6.0
  215. set startt 1.9
  216. # set up connection (do not use "create-connection" method because
  217. # we need a handle on the sink object)
  218. set src [new Agent/TCP/FullTcp]
  219. set sink [new Agent/TCP/FullTcp]
  220. $ns_ attach-agent $node_(s1) $src
  221. $ns_ attach-agent $node_(k1) $sink
  222. $src set fid_ 0
  223. $sink set fid_ 0
  224. $ns_ connect $src $sink
  225. # set up TCP-level connections
  226. $sink listen
  227. $sink set iss_ 2144
  228. $src set window_ 100
  229. $sink set window_ 100
  230. set ftp1 [$src attach-app FTP]
  231. $ns_ at 0.0 "$ftp1 start"
  232. set ftp2 [$sink attach-app FTP]
  233. $ns_ at $startt "$ftp2 start"
  234. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  235. $ns_ run
  236. }
  237. #Class Test/twoway_bsdcompat -superclass TestSuite
  238. #Test/twoway_bsdcompat instproc init topo {
  239. # $self instvar net_ defNet_ test_
  240. # set net_ $topo
  241. # set defNet_ net0
  242. # set test_ twoway_bsdcompat
  243. # $self next
  244. #}
  245. #Test/twoway_bsdcompat instproc run {} {
  246. # $self instvar ns_ node_ testName_
  247. #
  248. # set stopt 6.0
  249. # set startt 1.9
  250. #
  251. # # set up connection (do not use "create-connection" method because
  252. # # we need a handle on the sink object)
  253. # set src [new Agent/TCP/FullTcp]
  254. # set sink [new Agent/TCP/FullTcp]
  255. # $ns_ attach-agent $node_(s1) $src
  256. # $ns_ attach-agent $node_(k1) $sink
  257. # $src set fid_ 0
  258. # $sink set fid_ 0
  259. # $ns_ connect $src $sink
  260. #
  261. # # set up TCP-level connections
  262. # $sink listen
  263. # $src set window_ 100
  264. # $sink set window_ 100
  265. # $self bsdcompat $src
  266. # $self bsdcompat $sink
  267. # set ftp1 [$src attach-app FTP]
  268. # $ns_ at 0.0 "$ftp1 start"
  269. # set ftp2 [$sink attach-app FTP]
  270. # $ns_ at $startt "$ftp2 start"
  271. #
  272. # $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  273. # $ns_ run
  274. #}
  275. #
  276. #Class Test/oneway_bsdcompat -superclass TestSuite
  277. #Test/oneway_bsdcompat instproc init topo {
  278. # $self instvar net_ defNet_ test_
  279. # set net_ $topo
  280. # set defNet_ net0
  281. # set test_ oneway_bsdcompat
  282. # $self next
  283. #}
  284. #Test/oneway_bsdcompat instproc run {} {
  285. # $self instvar ns_ node_ testName_
  286. #
  287. # set stopt 6.0
  288. #  set startt 1.9
  289. #
  290. # # set up connection (do not use "create-connection" method because
  291. # # we need a handle on the sink object)
  292. # set src [new Agent/TCP/FullTcp]
  293. # set sink [new Agent/TCP/FullTcp]
  294. # $ns_ attach-agent $node_(s1) $src
  295. # $ns_ attach-agent $node_(k1) $sink
  296. # $src set fid_ 0
  297. # $sink set fid_ 0
  298. # $ns_ connect $src $sink
  299. #
  300. # # set up TCP-level connections
  301. # $sink listen ; # will figure out who its peer is
  302. # $src set window_ 100
  303. # $sink set window_ 100
  304. # $self bsdcompat $src
  305. # $self bsdcompat $sink
  306. # set ftp1 [$src attach-app FTP]
  307. # $ns_ at 0.0 "$ftp1 start"
  308. #
  309. # $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  310. # $ns_ run
  311. #}
  312. #
  313. Class Test/twowayrandom -superclass TestSuite
  314. Test/twowayrandom instproc init topo {
  315. $self instvar net_ defNet_ test_
  316. set net_ $topo
  317. set defNet_ net0
  318. set test_ twowayrandom
  319. $self next
  320. }
  321. Test/twowayrandom instproc run {} {
  322. $self instvar ns_ node_ testName_
  323. global quiet
  324. set stopt 6.0
  325. if { $quiet == "true" } {
  326. set startt 1
  327. } else {
  328. set startt [expr [ns-random 0] % 6]
  329. }
  330. puts "second TCP starting at time $startt"
  331. # set up connection (do not use "create-connection" method because
  332. # we need a handle on the sink object)
  333. set src [new Agent/TCP/FullTcp]
  334. set sink [new Agent/TCP/FullTcp]
  335. $ns_ attach-agent $node_(s1) $src
  336. $ns_ attach-agent $node_(k1) $sink
  337. $src set fid_ 0
  338. $sink set fid_ 0
  339. $ns_ connect $src $sink
  340. # set up TCP-level connections
  341. $sink listen
  342. $sink set iss_ 2144
  343. $src set window_ 100
  344. $sink set window_ 100
  345. set ftp1 [$src attach-app FTP]
  346. $ns_ at 0.0 "$ftp1 start"
  347. set ftp2 [$sink attach-app FTP]
  348. $ns_ at $startt "$ftp2 start"
  349. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  350. $ns_ run
  351. }
  352. Class Test/delack -superclass TestSuite
  353. Test/delack instproc init topo {
  354. $self instvar net_ defNet_ test_
  355. set net_ $topo
  356. set defNet_ net0
  357. set test_ delack
  358. $self next
  359. }
  360. Test/delack instproc run {} {
  361. $self instvar ns_ node_ testName_
  362. set stopt 6.0
  363. # set up connection (do not use "create-connection" method because
  364. # we need a handle on the sink object)
  365. set src [new Agent/TCP/FullTcp]
  366. set sink [new Agent/TCP/FullTcp]
  367. $ns_ attach-agent $node_(s1) $src
  368. $ns_ attach-agent $node_(k1) $sink
  369. $src set fid_ 0
  370. $sink set fid_ 0
  371. $ns_ connect $src $sink
  372. # set up TCP-level connections
  373. $sink listen
  374. $src set window_ 100
  375. $sink set segsperack_ 2
  376. set ftp1 [$src attach-app FTP]
  377. $ns_ at 0.0 "$ftp1 start"
  378. #forward
  379. $self instvar direction_
  380. set direction_ forward
  381. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  382. $ns_ run
  383. }
  384. Class Test/iw=4 -superclass TestSuite
  385. Test/iw=4 instproc init topo {
  386. $self instvar net_ defNet_ test_
  387. set net_ $topo
  388. set defNet_ net0
  389. set test_ iw=4
  390. $self next
  391. }
  392. Test/iw=4 instproc run {} {
  393. $self instvar ns_ node_ testName_
  394. set stopt 6.0
  395. # set up connection (do not use "create-connection" method because
  396. # we need a handle on the sink object)
  397. set src [new Agent/TCP/FullTcp]
  398. set sink [new Agent/TCP/FullTcp]
  399. $ns_ attach-agent $node_(s1) $src
  400. $ns_ attach-agent $node_(k1) $sink
  401. $src set fid_ 0
  402. $sink set fid_ 0
  403. $ns_ connect $src $sink
  404. # set up TCP-level connections
  405. $sink listen
  406. set ftp1 [$src attach-app FTP]
  407. $ns_ at 0.0 "$ftp1 start"
  408. # set up special params for this test
  409. $src set window_ 100
  410. $src set delay_growth_ true
  411. $src set windowInit_ 4
  412. $src set tcpTick_ 0.500
  413. $src set packetSize_ 576
  414. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  415. $ns_ run
  416. }
  417. Class Test/droppedsyn -superclass TestSuite
  418. Test/droppedsyn instproc init topo {
  419. $self instvar net_ defNet_ test_
  420. set net_ $topo
  421. set defNet_ net0-lossy
  422. set test_ droppedsyn
  423. $self next
  424. }
  425. Test/droppedsyn instproc run {} {
  426. $self instvar ns_ node_ testName_ topo_
  427. set stopt 20.0
  428. $topo_ instvar lossylink_
  429. set errmodule [$lossylink_ errormodule]
  430. set errmodel [$errmodule errormodels]
  431. if { [llength $errmodel] > 1 } {
  432. puts "droppedsyn: confused by >1 err models..abort"
  433. exit 1
  434. }
  435. $errmodel set offset_ 1.0
  436. # set up connection (do not use "create-connection" method because
  437. # we need a handle on the sink object)
  438. set src [new Agent/TCP/FullTcp]
  439. set sink [new Agent/TCP/FullTcp]
  440. $ns_ attach-agent $node_(s1) $src
  441. $ns_ attach-agent $node_(k1) $sink
  442. $src set fid_ 0
  443. $sink set fid_ 0
  444. $ns_ connect $src $sink
  445. # set up TCP-level connections
  446. $sink listen
  447. set ftp1 [$src attach-app FTP]
  448. $ns_ at 0.7 "$ftp1 start"
  449. # set up special params for this test
  450. $src set window_ 100
  451. $src set delay_growth_ true
  452. $src set tcpTick_ 0.01
  453. $src set packetSize_ 576
  454. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  455. $ns_ run
  456. }
  457. Class Test/droppedfirstseg -superclass TestSuite
  458. Test/droppedfirstseg instproc init topo {
  459. $self instvar net_ defNet_ test_
  460. set net_ $topo
  461. set defNet_ net0-lossy
  462. set test_ droppedfirstseg
  463. $self next
  464. }
  465. Test/droppedfirstseg instproc run {} {
  466. $self instvar ns_ node_ testName_ topo_
  467. set stopt 20.0
  468. $topo_ instvar lossylink_
  469. set errmodule [$lossylink_ errormodule]
  470. set errmodel [$errmodule errormodels]
  471. if { [llength $errmodel] > 1 } {
  472. puts "droppedfirstseg: confused by >1 err models..abort"
  473. exit 1
  474. }
  475. $errmodel set offset_ 3.0
  476. # set up connection (do not use "create-connection" method because
  477. # we need a handle on the sink object)
  478. set src [new Agent/TCP/FullTcp]
  479. set sink [new Agent/TCP/FullTcp]
  480. $ns_ attach-agent $node_(s1) $src
  481. $ns_ attach-agent $node_(k1) $sink
  482. $src set fid_ 0
  483. $sink set fid_ 0
  484. $ns_ connect $src $sink
  485. # set up TCP-level connections
  486. $sink listen
  487. set ftp1 [$src attach-app FTP]
  488. $ns_ at 0.7 "$ftp1 start"
  489. # $ns_ at 0.5 "$self printtimersAll $src 0.5 0.5"
  490. # set up special params for this test
  491. $src set window_ 100
  492. $src set delay_growth_ true
  493. $src set tcpTick_ 0.01
  494. $src set packetSize_ 576
  495. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  496. $ns_ run
  497. }
  498. Class Test/droppedsecondseg -superclass TestSuite
  499. Test/droppedsecondseg instproc init topo {
  500. $self instvar net_ defNet_ test_
  501. set net_ $topo
  502. set defNet_ net0-lossy
  503. set test_ droppedsecondseg
  504. $self next
  505. }
  506. Test/droppedsecondseg instproc run {} {
  507. $self instvar ns_ node_ testName_ topo_
  508. set stopt 20.0
  509. $topo_ instvar lossylink_
  510. set errmodule [$lossylink_ errormodule]
  511. set errmodel [$errmodule errormodels]
  512. if { [llength $errmodel] > 1 } {
  513. puts "droppedsecondseg: confused by >1 err models..abort"
  514. exit 1
  515. }
  516. $errmodel set offset_ 4.0
  517. # set up connection (do not use "create-connection" method because
  518. # we need a handle on the sink object)
  519. set src [new Agent/TCP/FullTcp]
  520. set sink [new Agent/TCP/FullTcp]
  521. $ns_ attach-agent $node_(s1) $src
  522. $ns_ attach-agent $node_(k1) $sink
  523. $src set fid_ 0
  524. $sink set fid_ 0
  525. $ns_ connect $src $sink
  526. # set up TCP-level connections
  527. $sink listen
  528. set ftp1 [$src attach-app FTP]
  529. $ns_ at 0.7 "$ftp1 start"
  530. # $ns_ at 0.5 "$self printtimersAll $src 0.5 0.5"
  531. # set up special params for this test
  532. $src set window_ 100
  533. $src set delay_growth_ true
  534. $src set tcpTick_ 0.01
  535. $src set packetSize_ 576
  536. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  537. $ns_ run
  538. }
  539. Class Test/simul-open -superclass TestSuite
  540. Test/simul-open instproc init topo {
  541. $self instvar net_ defNet_ test_
  542. set net_ $topo
  543. set defNet_ net0-lossy
  544. set test_ simul-open
  545. $self next
  546. }
  547. Test/simul-open instproc run {} {
  548. $self instvar ns_ node_ testName_ topo_
  549. set stopt 9.0
  550. $topo_ instvar lossylink_
  551. set errmodule [$lossylink_ errormodule]
  552. set errmodel [$errmodule errormodels]
  553. if { [llength $errmodel] > 1 } {
  554. puts "simul-open: confused by >1 err models..abort"
  555. exit 1
  556. }
  557. $errmodel set offset_ 20.0
  558. # set up connection (do not use "create-connection" method because
  559. # we need a handle on the sink object)
  560. set src [new Agent/TCP/FullTcp]
  561. set sink [new Agent/TCP/FullTcp]
  562. $ns_ attach-agent $node_(s1) $src
  563. $ns_ attach-agent $node_(k1) $sink
  564. $src set fid_ 0
  565. $sink set fid_ 0
  566. $ns_ connect $src $sink; # this is bi-directional
  567. # set up TCP-level connections
  568. set ftp1 [$src attach-app FTP]
  569. set ftp2 [$sink attach-app FTP]
  570. $ns_ at 0.7 "$ftp1 start; $ftp2 start"
  571. # set up special params for this test
  572. $src set window_ 100
  573. $src set delay_growth_ true
  574. $src set tcpTick_ 0.500
  575. $src set packetSize_ 576
  576. $sink set window_ 100
  577. $sink set delay_growth_ true
  578. $sink set tcpTick_ 0.500
  579. $sink set packetSize_ 1460
  580. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  581. $ns_ run
  582. }
  583. Class Test/simul-close -superclass TestSuite
  584. Test/simul-close instproc init topo {
  585. $self instvar net_ defNet_ test_
  586. set net_ $topo
  587. set defNet_ net0
  588. set test_ simul-close
  589. $self next
  590. }
  591. Test/simul-close instproc run {} {
  592.         global quiet
  593. $self instvar ns_ node_ testName_ topo_
  594.         if {$quiet == "false"} {
  595.                 Agent/TCP/FullTcp set debug_ true;
  596.         }
  597. set stopt 9.0
  598. # set up connection (do not use "create-connection" method because
  599. # we need a handle on the sink object)
  600. set src [new Agent/TCP/FullTcp]
  601. set sink [new Agent/TCP/FullTcp]
  602. $ns_ attach-agent $node_(s1) $src
  603. $ns_ attach-agent $node_(k1) $sink
  604. $src set fid_ 0
  605. $sink set fid_ 0
  606. $sink set iss_ 10000
  607. $ns_ connect $src $sink; # this is bi-directional
  608. # set up TCP-level connections
  609. set ftp1 [$src attach-app FTP]
  610. set ftp2 [$sink attach-app FTP]
  611. $ns_ at 0.7 "$ftp1 start"
  612. $ns_ at 0.9 "$ftp2 start"
  613. $ns_ at 1.6 "$src close; $sink close"
  614. # set up special params for this test
  615. $src set window_ 100
  616. $src set delay_growth_ true
  617. $src set tcpTick_ 0.500
  618. $src set packetSize_ 576
  619. $sink set window_ 100
  620. $sink set delay_growth_ true
  621. $sink set tcpTick_ 0.500
  622. $sink set packetSize_ 1460
  623. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  624. $ns_ run
  625. }
  626. Class Test/droppednearfin -superclass TestSuite
  627. Test/droppednearfin instproc init topo {
  628. $self instvar net_ defNet_ test_
  629. set net_ $topo
  630. set defNet_ net0-lossy
  631. set test_ droppednearfin
  632. $self next
  633. }
  634. Test/droppednearfin instproc run {} {
  635. $self instvar ns_ node_ testName_ topo_
  636. set stopt 10.0
  637. $topo_ instvar lossylink_
  638. set errmodule [$lossylink_ errormodule]
  639. set errmodel [$errmodule errormodels]
  640. if { [llength $errmodel] > 1 } {
  641. puts "droppednearfin: confused by >1 err models..abort"
  642. exit 1
  643. }
  644. $errmodel set offset_ 7.0
  645. $errmodel set period_ 100.0
  646. # set up connection (do not use "create-connection" method because
  647. # we need a handle on the sink object)
  648. set src [new Agent/TCP/FullTcp]
  649. set sink [new Agent/TCP/FullTcp]
  650. $ns_ attach-agent $node_(s1) $src
  651. $ns_ attach-agent $node_(k1) $sink
  652. $src set fid_ 0
  653. $sink set fid_ 0
  654. $ns_ connect $src $sink
  655. # set up TCP-level connections
  656. $sink listen
  657. set ftp1 [$src attach-app FTP]
  658. $ns_ at 0.7 "$ftp1 start"
  659. $ns_ at 1.5 "$src close"
  660. # set up special params for this test
  661. $src set window_ 100
  662. $src set delay_growth_ true
  663. $src set tcpTick_ 0.500
  664. $src set packetSize_ 576
  665. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  666. $ns_ run
  667. }
  668. Class Test/droppedlastseg -superclass TestSuite
  669. Test/droppedlastseg instproc init topo {
  670. $self instvar net_ defNet_ test_
  671. set net_ $topo
  672. set defNet_ net0-lossy
  673. set test_ droppedlastseg
  674. $self next
  675. }
  676. Test/droppedlastseg instproc run {} {
  677. $self instvar ns_ node_ testName_ topo_
  678. set stopt 10.0
  679. $topo_ instvar lossylink_
  680. set errmodule [$lossylink_ errormodule]
  681. set errmodel [$errmodule errormodels]
  682. if { [llength $errmodel] > 1 } {
  683. puts "droppedlastseg: confused by >1 err models..abort"
  684. exit 1
  685. }
  686. $errmodel set offset_ 9.0
  687. $errmodel set period_ 100.0
  688. # set up connection (do not use "create-connection" method because
  689. # we need a handle on the sink object)
  690. set src [new Agent/TCP/FullTcp]
  691. set sink [new Agent/TCP/FullTcp]
  692. $ns_ attach-agent $node_(s1) $src
  693. $ns_ attach-agent $node_(k1) $sink
  694. $src set fid_ 0
  695. $sink set fid_ 0
  696. $ns_ connect $src $sink
  697. # set up TCP-level connections
  698. $sink listen
  699. set ftp1 [$src attach-app FTP]
  700. $ns_ at 0.7 "$ftp1 start"
  701. $ns_ at 1.5 "$src close"
  702. # set up special params for this test
  703. $src set window_ 100
  704. $src set delay_growth_ true
  705. $src set tcpTick_ 0.500
  706. $src set packetSize_ 576
  707. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  708. $ns_ run
  709. }
  710. Class Test/droppedretransmit -superclass TestSuite
  711. Test/droppedretransmit instproc init topo {
  712. $self instvar net_ defNet_ test_
  713. set net_ $topo
  714. set defNet_ net0-lossy
  715. set test_ droppedretransmit
  716. $self next
  717. }
  718. Test/droppedretransmit instproc run {} {
  719. $self instvar ns_ node_ testName_ topo_
  720. set stopt 10.0
  721. $topo_ instvar lossylink_
  722. set errmodule [$lossylink_ errormodule]
  723. set errmodel [$errmodule errormodels]
  724. if { [llength $errmodel] > 1 } {
  725. puts "droppedretransmit: confused by >1 err models..abort"
  726. exit 1
  727. }
  728. $errmodel set offset_ 62.0
  729. $errmodel set period_ 100.0
  730. # set up connection (do not use "create-connection" method because
  731. # we need a handle on the sink object)
  732. set src [new Agent/TCP/FullTcp]
  733. set sink [new Agent/TCP/FullTcp]
  734. $ns_ attach-agent $node_(s1) $src
  735. $ns_ attach-agent $node_(k1) $sink
  736. $src set fid_ 0
  737. $sink set fid_ 0
  738. $ns_ connect $src $sink
  739. # set up TCP-level connections
  740. $sink listen
  741. set ftp1 [$src attach-app FTP]
  742. $ns_ at 0.7 "$ftp1 start"
  743. # set up special params for this test
  744. $src set window_ 100
  745. $src set delay_growth_ true
  746. $src set tcpTick_ 0.500
  747. $src set packetSize_ 576
  748. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  749. $ns_ run
  750. }
  751. Class Test/droppednearretransmit -superclass TestSuite
  752. Test/droppednearretransmit instproc init topo {
  753. $self instvar net_ defNet_ test_
  754. set net_ $topo
  755. set defNet_ net0-lossy
  756. set test_ droppednearretransmit
  757. $self next
  758. }
  759. Test/droppednearretransmit instproc run {} {
  760. $self instvar ns_ node_ testName_ topo_
  761. set stopt 10.0
  762. $topo_ instvar lossylink_
  763. set errmodule [$lossylink_ errormodule]
  764. set errmodel [$errmodule errormodels]
  765. if { [llength $errmodel] > 1 } {
  766. puts "droppednearretransmit: confused by >1 err models..abort"
  767. exit 1
  768. }
  769. $errmodel set offset_ 63.0
  770. $errmodel set period_ 100.0
  771. # set up connection (do not use "create-connection" method because
  772. # we need a handle on the sink object)
  773. set src [new Agent/TCP/FullTcp]
  774. set sink [new Agent/TCP/FullTcp]
  775. $ns_ attach-agent $node_(s1) $src
  776. $ns_ attach-agent $node_(k1) $sink
  777. $src set fid_ 0
  778. $sink set fid_ 0
  779. $ns_ connect $src $sink
  780. # set up TCP-level connections
  781. $sink listen
  782. set ftp1 [$src attach-app FTP]
  783. $ns_ at 0.7 "$ftp1 start"
  784. # set up special params for this test
  785. $src set window_ 100
  786. $src set delay_growth_ true
  787. $src set tcpTick_ 0.500
  788. $src set packetSize_ 576
  789. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  790. $ns_ run
  791. }
  792. Class Test/droppedfastrexmit -superclass TestSuite
  793. Test/droppedfastrexmit instproc init topo {
  794. $self instvar net_ defNet_ test_
  795. set net_ $topo
  796. set defNet_ net0-lossy
  797. set test_ droppedfastrexmit
  798. $self next
  799. }
  800. Test/droppedfastrexmit instproc run {} {
  801. $self instvar ns_ node_ testName_ topo_
  802. set stopt 10.0
  803. $topo_ instvar lossylink_
  804. set errmodule [$lossylink_ errormodule]
  805. set errmodel [$errmodule errormodels]
  806. if { [llength $errmodel] > 1 } {
  807. puts "droppedfastrexmit: confused by >1 err models..abort"
  808. exit 1
  809. }
  810. $errmodel set offset_ 61.0
  811. $errmodel set period_ 100.0
  812. # set up connection (do not use "create-connection" method because
  813. # we need a handle on the sink object)
  814. set src [new Agent/TCP/FullTcp]
  815. set sink [new Agent/TCP/FullTcp]
  816. $ns_ attach-agent $node_(s1) $src
  817. $ns_ attach-agent $node_(k1) $sink
  818. $src set fid_ 0
  819. $sink set fid_ 0
  820. $ns_ connect $src $sink
  821. # set up TCP-level connections
  822. $sink listen
  823. set ftp1 [$src attach-app FTP]
  824. $ns_ at 0.7 "$ftp1 start"
  825. # set up special params for this test
  826. $src set window_ 100
  827. $src set delay_growth_ true
  828. $src set tcpTick_ 0.500
  829. $src set packetSize_ 576
  830. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  831. $ns_ run
  832. }
  833. Class Test/ecn1 -superclass TestSuite
  834. Test/ecn1 instproc init topo {
  835. $self instvar net_ defNet_ test_
  836. set net_ $topo
  837. set defNet_ net0-lossy
  838. set test_ ecn1
  839. $self next
  840. }
  841. Test/ecn1 instproc run {} {
  842. $self instvar ns_ node_ testName_ topo_
  843. set stopt 10.0
  844. $topo_ instvar lossylink_
  845. set errmodule [$lossylink_ errormodule]
  846. set errmodel [$errmodule errormodels]
  847. if { [llength $errmodel] > 1 } {
  848. puts "ecn1: confused by >1 err models..abort"
  849. exit 1
  850. }
  851. $errmodel set offset_ 10.0
  852. $errmodel set period_ 30.0
  853. $errmodel set markecn_ true; # mark ecn's, don't drop
  854. # set up connection (do not use "create-connection" method because
  855. # we need a handle on the sink object)
  856. set src [new Agent/TCP/FullTcp]
  857. set sink [new Agent/TCP/FullTcp]
  858. $ns_ attach-agent $node_(s1) $src
  859. $ns_ attach-agent $node_(k1) $sink
  860. $src set fid_ 0
  861. $sink set fid_ 0
  862. $ns_ connect $src $sink
  863. # set up TCP-level connections
  864. $sink listen
  865. set ftp1 [$src attach-app FTP]
  866. $ns_ at 0.7 "$ftp1 start"
  867. # set up special params for this test
  868. $src set window_ 100
  869. $src set delay_growth_ true
  870. $src set tcpTick_ 0.500
  871. $src set packetSize_ 576
  872. $src set ecn_ true
  873. $sink set ecn_ true
  874. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  875. $ns_ run
  876. }
  877. Class Test/ecn2 -superclass TestSuite
  878. Test/ecn2 instproc init topo {
  879. $self instvar net_ defNet_ test_
  880. set net_ $topo
  881. set defNet_ net0-lossy
  882. set test_ ecn2
  883. $self next
  884. }
  885. Test/ecn2 instproc run {} {
  886. $self instvar ns_ node_ testName_ topo_
  887. set stopt 10.0
  888. $topo_ instvar lossylink_
  889. set errmodule [$lossylink_ errormodule]
  890. set errmodel [$errmodule errormodels]
  891. if { [llength $errmodel] > 1 } {
  892. puts "ecn2: confused by >1 err models..abort"
  893. exit 1
  894. }
  895. #$errmodel set offset_ 30.0
  896. $errmodel set offset_ 130.0
  897. $errmodel set period_ 100.0
  898. $errmodel set markecn_ true; # mark ecn's, don't drop
  899. # set up connection (do not use "create-connection" method because
  900. # we need a handle on the sink object)
  901. set src [new Agent/TCP/FullTcp]
  902. set sink [new Agent/TCP/FullTcp]
  903. $ns_ attach-agent $node_(s1) $src
  904. $ns_ attach-agent $node_(k1) $sink
  905. $src set fid_ 0
  906. $sink set fid_ 0
  907. $ns_ connect $src $sink
  908. # set up TCP-level connections
  909. $sink listen
  910. set ftp1 [$src attach-app FTP]
  911. $ns_ at 0.7 "$ftp1 start"
  912. # set up special params for this test
  913. $src set window_ 100
  914. $src set delay_growth_ true
  915. $src set tcpTick_ 0.500
  916. $src set packetSize_ 576
  917. $src set ecn_ true
  918. $sink set ecn_ true
  919. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  920. $ns_ run
  921. }
  922. Class Test/droppedfin -superclass TestSuite
  923. Test/droppedfin instproc init topo {
  924. $self instvar net_ defNet_ test_
  925. set net_ $topo
  926. set defNet_ net0-lossy
  927. set test_ droppedfin
  928. $self next
  929. }
  930. Test/droppedfin instproc run {} {
  931. $self instvar ns_ node_ testName_ topo_
  932. set stopt 10.0
  933. $topo_ instvar lossylink_
  934. set errmodule [$lossylink_ errormodule]
  935. set errmodel [$errmodule errormodels]
  936. if { [llength $errmodel] > 1 } {
  937. puts "droppedfin: confused by >1 err models..abort"
  938. exit 1
  939. }
  940. $errmodel set offset_ 10.0
  941. $errmodel set period_ 100.0
  942. # set up connection (do not use "create-connection" method because
  943. # we need a handle on the sink object)
  944. set src [new Agent/TCP/FullTcp]
  945. set sink [new Agent/TCP/FullTcp]
  946. $ns_ attach-agent $node_(s1) $src
  947. $ns_ attach-agent $node_(k1) $sink
  948. $src set fid_ 0
  949. $sink set fid_ 0
  950. $ns_ connect $src $sink
  951. # set up TCP-level connections
  952. $sink listen
  953. set ftp1 [$src attach-app FTP]
  954. $ns_ at 0.7 "$ftp1 start"
  955. $ns_ at 1.5 "$src close"
  956. # set up special params for this test
  957. $src set window_ 100
  958. $src set delay_growth_ true
  959. $src set tcpTick_ 0.500
  960. $src set packetSize_ 576
  961. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  962. $ns_ run
  963. }
  964. Class Test/smallpkts -superclass TestSuite
  965. Test/smallpkts instproc init topo {
  966. $self instvar net_ defNet_ test_
  967. set net_ $topo
  968. set defNet_ net0
  969. set test_ smallpkts
  970. $self next
  971. }
  972. Test/smallpkts instproc run {} {
  973. $self instvar ns_ node_ testName_ topo_
  974. set stopt 10.0
  975. # set up connection (do not use "create-connection" method because
  976. # we need a handle on the sink object)
  977. set src [new Agent/TCP/FullTcp]
  978. set sink [new Agent/TCP/FullTcp]
  979. $ns_ attach-agent $node_(s1) $src
  980. $ns_ attach-agent $node_(k1) $sink
  981. $src set fid_ 0
  982. $sink set fid_ 0
  983. $sink set interval_ 200ms
  984. $ns_ connect $src $sink
  985. # set up TCP-level connections
  986. $sink listen
  987. $ns_ at 0.5 "$src advance-bytes 30"
  988. $ns_ at 0.75 "$src advance-bytes 300"
  989. # set up special params for this test
  990. $src set window_ 100
  991. $src set delay_growth_ true
  992. $src set tcpTick_ 0.500
  993. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  994. $ns_ run
  995. }
  996. #
  997. # this test sets the receiver's notion of the mss larger than
  998. # the sender and sets segsperack to 3.  So, only if there is
  999. # > 3*4192 bytes accumulated would an ACK occur [i.e. never].
  1000. # So, because the
  1001. # delack timer is set for 200ms, the upshot here is that
  1002. # we see ACKs as pushed out by this timer only
  1003. #
  1004. Class Test/telnet -superclass TestSuite
  1005. Test/telnet instproc init topo {
  1006. $self instvar net_ defNet_ test_
  1007. set net_ $topo
  1008. set defNet_ net0
  1009. set test_ telnet(200ms-delack)
  1010. $self next
  1011. }
  1012. Test/telnet instproc run {} {
  1013. $self instvar ns_ node_ testName_ topo_
  1014. set stopt 10.0
  1015. # set up connection (do not use "create-connection" method because
  1016. # we need a handle on the sink object)
  1017. set src [new Agent/TCP/FullTcp]
  1018. set sink [new Agent/TCP/FullTcp]
  1019. $ns_ attach-agent $node_(s1) $src
  1020. $ns_ attach-agent $node_(k1) $sink
  1021. $src set fid_ 0
  1022. $sink set fid_ 0
  1023. $sink set interval_ 200ms
  1024. $sink set segsize_ 4192; # or wait up to 3*4192 bytes to ACK
  1025. $sink set segsperack_ 3
  1026. $ns_ connect $src $sink
  1027. # set up TCP-level connections
  1028. $sink listen
  1029. set telnet1 [$src attach-app Telnet]
  1030. $telnet1 set interval_ 0ms
  1031. $ns_ at 0.5 "$telnet1 start"
  1032. # set up special params for this test
  1033. $src set window_ 100
  1034. $src set delay_growth_ true
  1035. $src set tcpTick_ 0.500
  1036. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  1037. $ns_ run
  1038. }
  1039. #
  1040. # this test is the same as the last one, but changes the
  1041. # receiver's notion of the mss, delack interval, and segs-per-ack.
  1042. # The output indicates some places where ACKs are generated due
  1043. # to the timer and other are due to meeting the segs-per-ack limit
  1044. # before the timer
  1045. #
  1046. Class Test/telnet2 -superclass TestSuite
  1047. Test/telnet2 instproc init topo {
  1048. $self instvar net_ defNet_ test_
  1049. set net_ $topo
  1050. set defNet_ net0
  1051. set test_ telnet2(3segperack-600ms-delack)
  1052. $self next
  1053. }
  1054. Test/telnet2 instproc run {} {
  1055. $self instvar ns_ node_ testName_ topo_
  1056. set stopt 10.0
  1057. # set up connection (do not use "create-connection" method because
  1058. # we need a handle on the sink object)
  1059. set src [new Agent/TCP/FullTcp]
  1060. set sink [new Agent/TCP/FullTcp]
  1061. $ns_ attach-agent $node_(s1) $src
  1062. $ns_ attach-agent $node_(k1) $sink
  1063. $src set fid_ 0
  1064. $sink set fid_ 0
  1065. $sink set interval_ 600ms
  1066. $sink set segsize_ 536; # or wait up to 3*536 bytes to ACK
  1067. $sink set segsperack_ 3
  1068. $ns_ connect $src $sink
  1069. # set up TCP-level connections
  1070. $sink listen
  1071. set telnet1 [$src attach-app Telnet]
  1072. $telnet1 set interval_ 0ms
  1073. $ns_ at 0.5 "$telnet1 start"
  1074. # set up special params for this test
  1075. $src set window_ 100
  1076. $src set delay_growth_ true
  1077. $src set tcpTick_ 0.500
  1078. $src set segsize_ 536
  1079. $src set packetSize_ 576
  1080. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  1081. $ns_ run
  1082. }
  1083. #
  1084. # this test exercises the "slow_start_restart_" option
  1085. # with ssr set to false, illustrates the line-rate-bursts which occur
  1086. # after the window has grown large but the app has stopped writes
  1087. #
  1088. Class Test/SSR -superclass TestSuite
  1089. Test/SSR instproc init topo {
  1090. $self instvar net_ defNet_ test_
  1091. set net_ $topo
  1092. set defNet_ net0
  1093. set test_ slow-start-restart
  1094. $self next
  1095. }
  1096. Test/SSR instproc run {} {
  1097. $self instvar ns_ node_ testName_ topo_
  1098. set stopt 10.0
  1099. # set up connection (do not use "create-connection" method because
  1100. # we need a handle on the sink object)
  1101. set src [new Agent/TCP/FullTcp]
  1102. set sink [new Agent/TCP/FullTcp]
  1103. $ns_ attach-agent $node_(s1) $src
  1104. $ns_ attach-agent $node_(k1) $sink
  1105. $src set fid_ 0
  1106. $sink set fid_ 0
  1107. $ns_ connect $src $sink
  1108. # set up TCP-level connections
  1109. $src set slow_start_restart_ false
  1110. $sink listen
  1111. $ns_ at 0.5 "$src advance-bytes 10000"
  1112. $ns_ at 5.0 "$src advance-bytes 10000"
  1113. # set up special params for this test
  1114. $src set window_ 100
  1115. $src set slow_start_restart true
  1116. $src set delay_growth_ true
  1117. $src set tcpTick_ 0.500
  1118. $src set segsize_ 536
  1119. $src set packetSize_ 576
  1120. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  1121. $ns_ run
  1122. }
  1123. #
  1124. # same test as SSR, but this time turn slow_start_restart on
  1125. #
  1126. Class Test/SSR2 -superclass TestSuite
  1127. Test/SSR2 instproc init topo {
  1128. $self instvar net_ defNet_ test_
  1129. set net_ $topo
  1130. set defNet_ net0
  1131. set test_ slow-start-restart-fix
  1132. $self next
  1133. }
  1134. Test/SSR2 instproc run {} {
  1135. $self instvar ns_ node_ testName_ topo_
  1136. set stopt 10.0
  1137. # set up connection (do not use "create-connection" method because
  1138. # we need a handle on the sink object)
  1139. set src [new Agent/TCP/FullTcp]
  1140. set sink [new Agent/TCP/FullTcp]
  1141. $ns_ attach-agent $node_(s1) $src
  1142. $ns_ attach-agent $node_(k1) $sink
  1143. $src set fid_ 0
  1144. $sink set fid_ 0
  1145. $ns_ connect $src $sink
  1146. # set up TCP-level connections
  1147. $src set slow_start_restart_ true
  1148. $sink listen
  1149. $ns_ at 0.5 "$src advance-bytes 10000"
  1150. $ns_ at 5.0 "$src advance-bytes 10000"
  1151. # set up special params for this test
  1152. $src set window_ 100
  1153. $src set slow_start_restart true
  1154. $src set delay_growth_ true
  1155. $src set tcpTick_ 0.500
  1156. $src set segsize_ 536
  1157. $src set packetSize_ 576
  1158. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  1159. $ns_ run
  1160. }
  1161. #
  1162. # A test of the timestamp option
  1163. #
  1164. Class Test/tsopt -superclass TestSuite
  1165. Test/tsopt instproc init topo {
  1166. $self instvar net_ defNet_ test_
  1167. set net_ $topo
  1168. set defNet_ net0
  1169. set test_ tsopt
  1170. $self next
  1171. }
  1172. Test/tsopt instproc run {} {
  1173. $self instvar ns_ node_ testName_ topo_
  1174. set stopt 10.0
  1175. # set up connection (do not use "create-connection" method because
  1176. # we need a handle on the sink object)
  1177. set src [new Agent/TCP/FullTcp]
  1178. set sink [new Agent/TCP/FullTcp]
  1179. $ns_ attach-agent $node_(s1) $src
  1180. $ns_ attach-agent $node_(k1) $sink
  1181. $src set fid_ 0
  1182. $sink set fid_ 0
  1183. $sink set timestamps_ true
  1184. $ns_ connect $src $sink
  1185. # set up TCP-level connections
  1186. $src set timestamps_ true
  1187. $sink listen
  1188. $ns_ at 0.5 "$src advance-bytes 100000"
  1189. # set up special params for this test
  1190. $src set window_ 100
  1191. $src set delay_growth_ true
  1192. $src set tcpTick_ 0.500
  1193. $src set segsize_ 536
  1194. $src set packetSize_ 576
  1195. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  1196. $ns_ run
  1197. }
  1198. #
  1199. # A test where we are window limited
  1200. #
  1201. Class Test/winlimited -superclass TestSuite
  1202. Test/winlimited instproc init topo {
  1203. $self instvar net_ defNet_ test_
  1204. set net_ $topo
  1205. set defNet_ net0
  1206. set test_ winlimited
  1207. $self next
  1208. }
  1209. Test/winlimited instproc run {} {
  1210. $self instvar ns_ node_ testName_ topo_
  1211. set stopt 10.0
  1212. # set up connection (do not use "create-connection" method because
  1213. # we need a handle on the sink object)
  1214. set src [new Agent/TCP/FullTcp]
  1215. set sink [new Agent/TCP/FullTcp]
  1216. $ns_ attach-agent $node_(s1) $src
  1217. $ns_ attach-agent $node_(k1) $sink
  1218. $src set fid_ 0
  1219. $sink set fid_ 0
  1220. $ns_ connect $src $sink
  1221. # set up TCP-level connections
  1222. $sink listen
  1223. $ns_ at 0.5 "$src advance-bytes 100000"
  1224. # set up special params for this test
  1225. $src set window_ 5
  1226. $src set delay_growth_ true
  1227. $src set tcpTick_ 0.500
  1228. $src set segsize_ 536
  1229. $src set packetSize_ 576
  1230. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  1231. $ns_ run
  1232. }
  1233. TestSuite runTest