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

通讯编程

开发平台:

Visual C++

  1. # Copyright (c) 1995 The Regents of the University of California.
  2. Agent/TCP set precisionReduce_ false ;   # default changed on 2006/1/24.
  3. Agent/TCP set rtxcur_init_ 6.0 ;      # Default changed on 2006/01/21
  4. Agent/TCP set updated_rttvar_ false ;  # Variable added on 2006/1/21
  5. # All rights reserved.
  6. #
  7. # Redistribution and use in source and binary forms, with or without
  8. # modification, are permitted provided that the following conditions
  9. # are met:
  10. # 1. Redistributions of source code must retain the above copyright
  11. #    notice, this list of conditions and the following disclaimer.
  12. # 2. Redistributions in binary form must reproduce the above copyright
  13. #    notice, this list of conditions and the following disclaimer in the
  14. #    documentation and/or other materials provided with the distribution.
  15. # 3. All advertising materials mentioning features or use of this software
  16. #    must display the following acknowledgement:
  17. # This product includes software developed by the Computer Systems
  18. # Engineering Group at Lawrence Berkeley Laboratory.
  19. # 4. Neither the name of the University nor of the Laboratory may be used
  20. #    to endorse or promote products derived from this software without
  21. #    specific prior written permission.
  22. #
  23. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  24. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  25. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  26. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  27. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  29. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  30. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  31. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  32. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  33. # SUCH DAMAGE.
  34. #
  35. # test-suite-full-fixes.tcl
  36. #
  37. # Based on ns/tcl/test/test-suite-full.tcl
  38. #
  39. # Modified June 2005 by Michele C. Weigle, Clemson University
  40. #
  41. # For a detailed description of the examples in this file, see
  42. # http://www.cs.clemson.edu/~mweigle/research/ns/fixes/
  43. #
  44. source misc.tcl
  45. source topologies-full-fixes.tcl
  46. # defaults as of ns-2.1b9  May 2002
  47. Agent/TCP set tcpTick_ 0.01
  48. Agent/TCP set rfc2988_ true
  49. Agent/TCP set useHeaders_ true
  50. Agent/TCP set windowInit_ 2
  51. Agent/TCP set minrto_ 1
  52. Agent/TCP set singledup_ 1
  53. Trace set show_tcphdr_ 1 ; # needed to plot ack numbers for tracing 
  54. # Agent/TCP/FullTcp set debug_ true;
  55. TestSuite instproc finish testname {
  56. $self instvar ns_
  57. $ns_ halt
  58.         set awkCode {
  59.     {if (($1=="+" || $1=="d") && (($3=="3" && $4=="2") || ($3=="2" && $4=="3"))) print}
  60. }
  61.         exec awk $awkCode all.tr > temp.rands
  62. }
  63. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  64. #                         TCP Reno Tests
  65. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  66. #*************************************************************************
  67. # Tests to validate bug fixes to Full-TCP Reno in tcp-full.cc
  68. #
  69. #  reno-drop-passive-fin -- drop the passive FIN
  70. #  reno-drop-synack -- drop the SYN/ACK
  71. #  reno-msg_eof-fin -- send message with MSG_EOF set
  72. #  reno-drop-lastack -- drop the last ACK in connection teardown
  73. #
  74. #*************************************************************************
  75. #
  76. # reno-drop-passive-fin
  77. #
  78. Class Test/reno-drop-passive-fin -superclass TestSuite
  79. Test/reno-drop-passive-fin instproc init topo {
  80. $self instvar net_ defNet_ test_
  81. set net_ $topo
  82. set defNet_ net0-lossy2
  83. set test_ reno-drop-passive-fin
  84. $self next
  85. }
  86. Test/reno-drop-passive-fin instproc run {} {
  87. $self instvar ns_ node_ testName_ topo_
  88. set stopt 5.0
  89. $topo_ instvar lossylink_
  90. set errmodule [$lossylink_ errormodule]
  91. set errmodel [$errmodule errormodels]
  92. if { [llength $errmodel] > 1 } {
  93. puts "reno-drop-passive-fin: confused by >1 err models..abort"
  94. exit 1
  95. }
  96. $errmodel set offset_ 7.0
  97. $errmodel set burstlen_ 2
  98. # set up connection (do not use "create-connection" method because
  99. # we need a handle on the sink object)
  100. set src [new Agent/TCP/FullTcp]
  101. set sink [new Agent/TCP/FullTcp]
  102. $ns_ attach-agent $node_(s1) $src
  103. $ns_ attach-agent $node_(k1) $sink
  104. $src set fid_ 0
  105. $sink set fid_ 0
  106. $ns_ connect $src $sink
  107. # set up TCP-level connections
  108. $sink listen
  109. $ns_ at 0.7 "$src advance 5"
  110. $ns_ at 2.0 "$src close"
  111. # set up special params for this test
  112. $src set window_ 20
  113. $src set packetSize_ 576
  114. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  115. $ns_ run
  116. }
  117. #
  118. # reno-drop-synack
  119. #
  120. Class Test/reno-drop-synack -superclass TestSuite
  121. Test/reno-drop-synack instproc init topo {
  122. $self instvar net_ defNet_ test_
  123. set net_ $topo
  124. set defNet_ net0-lossy2;    # drops are all ACKs
  125. set test_ reno-drop-synack
  126. $self next
  127. }
  128. Test/reno-drop-synack instproc run {} {
  129. $self instvar ns_ node_ testName_ topo_
  130. set stopt 7
  131. $topo_ instvar lossylink_
  132. set errmodule [$lossylink_ errormodule]
  133. set errmodel [$errmodule errormodels]
  134. if { [llength $errmodel] > 1 } {
  135. puts "reno-drop-synack: confused by >1 err models..abort"
  136. exit 1
  137. }
  138. $errmodel set offset_ 1.0
  139. $errmodel set burstlen_ 1
  140. # set up connection (do not use "create-connection" method because
  141. # we need a handle on the sink object)
  142. set src [new Agent/TCP/FullTcp]
  143. set sink [new Agent/TCP/FullTcp]
  144. $ns_ attach-agent $node_(s1) $src
  145. $ns_ attach-agent $node_(k1) $sink
  146. $src set fid_ 0
  147. $sink set fid_ 0
  148. $ns_ connect $src $sink
  149. # set up TCP-level connections
  150. $sink listen
  151. set ftp1 [$src attach-app FTP]
  152. $ns_ at 0.7 "$ftp1 start"
  153. # set up special params for this test
  154. $src set window_ 100
  155. $src set packetSize_ 576
  156. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  157. $ns_ run
  158. }
  159. #
  160. # reno-msg_eof-fin
  161. #
  162. Class Test/reno-msg_eof-fin -superclass TestSuite
  163. Test/reno-msg_eof-fin instproc init topo {
  164. $self instvar net_ defNet_ test_
  165. set net_ $topo
  166. set defNet_ net0
  167. set test_ reno-msg_eof-fin
  168. $self next
  169. }
  170. Test/reno-msg_eof-fin instproc run {} {
  171. $self instvar ns_ node_ testName_ topo_
  172. set stopt 3.0
  173. # set up connection (do not use "create-connection" method because
  174. # we need a handle on the sink object)
  175. set src [new Agent/TCP/FullTcp]
  176. set sink [new Agent/TCP/FullTcp]
  177. $ns_ attach-agent $node_(s1) $src
  178. $ns_ attach-agent $node_(k1) $sink
  179. $src set fid_ 0
  180. $sink set fid_ 0
  181. $ns_ connect $src $sink
  182. # set up TCP-level connections
  183. $sink listen
  184.         $ns_ at 0.7 "$src advanceby 5"
  185. $ns_ at 1.3 "$src sendmsg 400 MSG_EOF"
  186. # set up special params for this test
  187. $src set window_ 100
  188. $src set packetSize_ 576
  189. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  190. $ns_ run
  191. }
  192. #
  193. # reno-drop-lastack
  194. #
  195. Class Test/reno-drop-lastack -superclass TestSuite
  196. Test/reno-drop-lastack instproc init topo {
  197. $self instvar net_ defNet_ test_
  198. set net_ $topo
  199. set defNet_ net0-lossy;
  200. set test_ reno-drop-lastack
  201. $self next
  202. }
  203. Test/reno-drop-lastack instproc run {} {
  204. $self instvar ns_ node_ testName_ topo_
  205. set stopt 50.0
  206. $topo_ instvar lossylink_
  207. set errmodule [$lossylink_ errormodule]
  208. set errmodel [$errmodule errormodels]
  209. if { [llength $errmodel] > 1 } {
  210. puts "reno-drop-lastack: confused by >1 err models..abort"
  211. exit 1
  212. }
  213. $errmodel set offset_ 7.0
  214. $errmodel set burstlen_ 1
  215. $errmodel set period_ 1000
  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. $ns_ at 0.7 "$src advanceby 3"
  228. $ns_ at 2.0 "$src close"
  229. # set up special params for this test
  230. $src set window_ 100
  231. $src set packetSize_ 576
  232. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  233. $ns_ run
  234. }
  235. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  236. #                         ECN Tests
  237. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  238. #*************************************************************************
  239. # Tests to validate bug fixes to Full-TCP ECN in tcp-full.cc
  240. #
  241. #  ecn-drop-synack -- drop the SYN/ACK
  242. #  ecn-rexmt -- retransmit a packet
  243. #
  244. #*************************************************************************
  245. #
  246. # ecn-rexmt
  247. #
  248. Class Test/ecn-rexmt -superclass TestSuite
  249. Test/ecn-rexmt instproc init topo {
  250. $self instvar net_ defNet_ test_
  251. set net_ $topo
  252. set defNet_ net0-lossy;
  253. set test_ ecn-rexmt
  254. $self next
  255. }
  256. Test/ecn-rexmt instproc run {} {
  257. $self instvar ns_ node_ testName_ topo_
  258. set stopt 1.6
  259. $topo_ instvar lossylink_
  260. set errmodule [$lossylink_ errormodule]
  261. set errmodel [$errmodule errormodels]
  262. if { [llength $errmodel] > 1 } {
  263. puts "reno-rexmt: confused by >1 err models..abort"
  264. exit 1
  265. }
  266. $errmodel set offset_ 5.0
  267. $errmodel set burstlen_ 1
  268. # set up connection (do not use "create-connection" method because
  269. # we need a handle on the sink object)
  270. set src [new Agent/TCP/FullTcp]
  271. set sink [new Agent/TCP/FullTcp]
  272. $ns_ attach-agent $node_(s1) $src
  273. $ns_ attach-agent $node_(k1) $sink
  274. $src set fid_ 0
  275. $sink set fid_ 0
  276. $ns_ connect $src $sink
  277. # set up TCP-level connections
  278. $sink listen
  279. set ftp1 [$src attach-app FTP]
  280. $ns_ at 0.7 "$ftp1 start"
  281. # set up special params for this test
  282. $src set window_ 100
  283. $src set packetSize_ 576
  284. $src set ecn_ true
  285. $sink set ecn_ true
  286. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  287. $ns_ run
  288. }
  289. #
  290. # ecn-drop-synack
  291. #
  292. Class Test/ecn-drop-synack -superclass TestSuite
  293. Test/ecn-drop-synack instproc init topo {
  294. $self instvar net_ defNet_ test_
  295. set net_ $topo
  296. set defNet_ net0-lossy2;    # drops are all ACKs
  297. set test_ ecn-drop-synack
  298. $self next
  299. }
  300. Test/ecn-drop-synack instproc run {} {
  301. $self instvar ns_ node_ testName_ topo_
  302. set stopt 7
  303. $topo_ instvar lossylink_
  304. set errmodule [$lossylink_ errormodule]
  305. set errmodel [$errmodule errormodels]
  306. if { [llength $errmodel] > 1 } {
  307. puts "ecn-drop-synack: confused by >1 err models..abort"
  308. exit 1
  309. }
  310. $errmodel set offset_ 1.0
  311. $errmodel set burstlen_ 1
  312. # set up connection (do not use "create-connection" method because
  313. # we need a handle on the sink object)
  314. set src [new Agent/TCP/FullTcp]
  315. set sink [new Agent/TCP/FullTcp]
  316. $ns_ attach-agent $node_(s1) $src
  317. $ns_ attach-agent $node_(k1) $sink
  318. $src set fid_ 0
  319. $sink set fid_ 0
  320. $ns_ connect $src $sink
  321. # set up TCP-level connections
  322. $sink listen
  323. set ftp1 [$src attach-app FTP]
  324. $ns_ at 0.7 "$ftp1 start"
  325. # set up special params for this test
  326. $src set window_ 100
  327. $src set packetSize_ 576
  328. $src set ecn_ true
  329. $sink set ecn_ true
  330. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  331. $ns_ run
  332. }
  333. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  334. #                         TCP SACK Tests
  335. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  336. #*************************************************************************
  337. # Tests to validate bug fixes to Full-TCP SACK in tcp-full.cc
  338. #
  339. #  sack-send-past-fin -- as long as cwnd allows, sender sends packets even
  340. #                        when there is no new data
  341. #  sack-ecn-drop-mark -- SACK behavior when seeing 3 DUPACKS after ECN
  342. #  sack-burst -- SACK sends large number of old packets
  343. #  sack-burst-2 -- SACK sends large number of old packets
  344. #  sack-illegal-sack-block -- dropped FIN
  345. #  sack-dropwin -- drop a full window of packets
  346. #*************************************************************************
  347. #
  348. # sack-send-past-fin
  349. #
  350. Class Test/sack-send-past-fin -superclass TestSuite
  351. Test/sack-send-past-fin instproc init topo {
  352. $self instvar net_ defNet_ test_
  353. set net_ $topo
  354. set defNet_ net0-lossy
  355. set test_ sack-send-past-fin
  356. $self next
  357. }
  358. Test/sack-send-past-fin instproc run {} {
  359. $self instvar ns_ node_ testName_ topo_
  360. set stopt 3.0
  361. $topo_ instvar lossylink_
  362. set errmodule [$lossylink_ errormodule]
  363. set errmodel [$errmodule errormodels]
  364. if { [llength $errmodel] > 1 } {
  365. puts "sack-send-past-fin: confused by >1 err models..abort"
  366. exit 1
  367. }
  368. $errmodel set offset_ 11.0
  369. $errmodel set burstlen_ 1
  370. # set up connection (do not use "create-connection" method because
  371. # we need a handle on the sink object)
  372. set src [new Agent/TCP/FullTcp/Sack]
  373. set sink [new Agent/TCP/FullTcp/Sack]
  374. $ns_ attach-agent $node_(s1) $src
  375. $ns_ attach-agent $node_(k1) $sink
  376. $src set fid_ 0
  377. $sink set fid_ 0
  378. $ns_ connect $src $sink
  379. # set up TCP-level connections
  380. $sink listen
  381. set ftp1 [$src attach-app FTP]
  382. $ns_ at 0.7 "$ftp1 start"
  383. $ns_ at 1.5 "$ftp1 stop"
  384. # set up special params for this test
  385. $src set window_ 20
  386. $src set packetSize_ 576
  387. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  388. $ns_ run
  389. }
  390. #
  391. # sack-ecn-drop-mark
  392. #
  393. # This test is to illustrate the bug in the Full-TCP SACK+ECN 
  394. # implementation that occurs when a packet loss is detected
  395. # in the same window of ACKs as an ECN-Echo bit.
  396. Class Test/sack-ecn-drop-mark -superclass TestSuite
  397. Test/sack-ecn-drop-mark instproc init topo {
  398. $self instvar net_ defNet_ test_
  399. set net_ $topo
  400. set defNet_ net0-lossy
  401. set test_ sack-ecn-drop-mark
  402. $self next
  403. }
  404. Test/sack-ecn-drop-mark instproc run {} {
  405. $self instvar ns_ node_ testName_ topo_
  406. set stopt 2.1
  407. $topo_ instvar lossylink_
  408. set errmodule [$lossylink_ errormodule]
  409. set errmodel [$errmodule errormodels]
  410. if { [llength $errmodel] > 1 } {
  411. puts "sack-ecn: confused by >1 err models..abort"
  412. exit 1
  413. }
  414. $errmodel set offset_ 20.0
  415. $errmodel set period_ 1000.0
  416. $errmodel set markecn_ true; # mark ecn's, don't drop
  417. # set up connection (do not use "create-connection" method because
  418. # we need a handle on the sink object)
  419. set src [new Agent/TCP/FullTcp/Sack]
  420. set sink [new Agent/TCP/FullTcp/Sack]
  421. $ns_ attach-agent $node_(s1) $src
  422. $ns_ attach-agent $node_(k1) $sink
  423. $src set fid_ 0
  424. $sink set fid_ 0
  425. $ns_ connect $src $sink
  426. # set up TCP-level connections
  427. $sink listen
  428. $ns_ at 0.7 "$src advance 40"
  429. # set up special params for this test
  430. $src set window_ 70
  431. $src set packetSize_ 576
  432. $src set ecn_ true
  433. $sink set ecn_ true
  434. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  435. $ns_ run
  436. }
  437. #
  438. # sack-burst
  439. #
  440. Class Test/sack-burst -superclass TestSuite
  441. Test/sack-burst instproc init topo {
  442. $self instvar net_ defNet_ test_
  443. set net_ $topo
  444. set defNet_ net1-lossy
  445. set test_ sack-burst
  446. $self next
  447. }
  448. Test/sack-burst instproc run {} {
  449. $self instvar ns_ node_ testName_ topo_
  450. set stopt 23
  451. $topo_ instvar lossylink_
  452. set errmodule [$lossylink_ errormodule]
  453. set errmodel [$errmodule errormodels]
  454. if { [llength $errmodel] > 1 } {
  455. puts "sack-burst: confused by >1 err models..abort"
  456. exit 1
  457. }
  458. # set up connection (do not use "create-connection" method because
  459. # we need a handle on the sink object)
  460. set src [new Agent/TCP/FullTcp/Sack]
  461. set sink [new Agent/TCP/FullTcp/Sack]
  462. $ns_ attach-agent $node_(s1) $src
  463. $ns_ attach-agent $node_(k1) $sink
  464. $src set fid_ 0
  465. $sink set fid_ 0
  466. # set up TCP-level connections
  467. # flow 1 -- one drop early
  468. $ns_ connect $src $sink
  469. $sink listen
  470. $ns_ at 0.0 "$errmodel set offset_ 5"
  471. $ns_ at 0.0 "$errmodel set burstlen_ 1"
  472. $ns_ at 0.0 "$errmodel set period_ 10000"
  473. $ns_ at 0.7 "$src advanceby 10"
  474. $ns_ at 2.0 "$src close"
  475. # flow 2 -- no drops, send more than flow 1, last pckt 
  476. # smaller than full-size
  477. $ns_ at 2.5 "$ns_ connect $src $sink"
  478. $ns_ at 2.6 "$sink listen"
  479. $ns_ at 3.0 "$src advance-bytes 1702"
  480. $ns_ at 7.0 "$src close"
  481. # flow 3 -- one drop late, TIMEOUT
  482. $ns_ at 19.5 "$errmodel set burstlen_ 1"
  483. $ns_ at 19.5 "$errmodel set period_ 52.0"
  484. $ns_ at 20.0 "$ns_ connect $src $sink"
  485. $ns_ at 20.1 "$sink listen"
  486. $ns_ at 20.3 "$src advanceby 48"
  487. $ns_ at 21.372 "$errmodel set period_ 2.0"
  488. $ns_ at 21.380 "$errmodel set burstlen_ 11"
  489. $ns_ at 21.381 "$errmodel set period_ 1000.0"
  490. $ns_ at 30.0 "$src close"
  491. # set up special params for this test
  492. $src set window_ 20
  493. $src set packetSize_ 576
  494. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  495. $ns_ run
  496. }
  497. #
  498. # sack-burst-2
  499. #
  500. Class Test/sack-burst-2 -superclass TestSuite
  501. Test/sack-burst-2 instproc init topo {
  502. $self instvar net_ defNet_ test_
  503. set net_ $topo
  504. set defNet_ net1-lossy
  505. set test_ sack-burst-2
  506. $self next
  507. }
  508. Test/sack-burst-2 instproc run {} {
  509. $self instvar ns_ node_ testName_ topo_
  510. set stopt 3.5
  511. $topo_ instvar lossylink_
  512. set errmodule [$lossylink_ errormodule]
  513. set errmodel [$errmodule errormodels]
  514. if { [llength $errmodel] > 1 } {
  515. puts "sack-burst-2: confused by >1 err models..abort"
  516. exit 1
  517. }
  518. # set up connection (do not use "create-connection" method because
  519. # we need a handle on the sink object)
  520. set src [new Agent/TCP/FullTcp/Sack]
  521. set sink [new Agent/TCP/FullTcp/Sack]
  522. $ns_ attach-agent $node_(s1) $src
  523. $ns_ attach-agent $node_(k1) $sink
  524. $src set fid_ 0
  525. $sink set fid_ 0
  526. # set up TCP-level connection
  527. # one drop early, SACK recovery
  528. $ns_ connect $src $sink
  529. $sink listen
  530. $ns_ at 0.0 "$errmodel set offset_ 5"
  531. $ns_ at 0.0 "$errmodel set burstlen_ 1"
  532. $ns_ at 0.0 "$errmodel set period_ 10000"
  533. $ns_ at 0.7 "$src advanceby 40"
  534.         # cause timeout
  535. $ns_ at 2.0 "$errmodel set period_ 2.0"
  536. $ns_ at 2.0 "$errmodel set burstlen_ 1"
  537. $ns_ at 2.5 "$errmodel set period_ 1000.0"
  538. $ns_ at $stopt "$src close"
  539. # set up special params for this test
  540. $src set window_ 20
  541. $src set packetSize_ 576
  542. $self traceQueues $node_(s1) [$self openTrace $stopt $testName_]
  543. $ns_ run
  544. }
  545. #
  546. # sack-illegal-sack-block
  547. #
  548. Class Test/sack-illegal-sack-block -superclass TestSuite
  549. Test/sack-illegal-sack-block instproc init topo {
  550. $self instvar net_ defNet_ test_
  551. set net_ $topo
  552. set defNet_ net0-lossy
  553. set test_ sack-illegal-sack-block
  554. $self next
  555. }
  556. Test/sack-illegal-sack-block instproc run {} {
  557. $self instvar ns_ node_ testName_ topo_
  558. set stopt 2.0
  559. $topo_ instvar lossylink_
  560. set errmodule [$lossylink_ errormodule]
  561. set errmodel [$errmodule errormodels]
  562. if { [llength $errmodel] > 1 } {
  563. puts "sack-illegal-sack-block: confused by >1 err models..abort"
  564. exit 1
  565. }
  566. $errmodel set offset_ 8.0
  567. $errmodel set burstlen_ 1
  568. # set up connection (do not use "create-connection" method because
  569. # we need a handle on the sink object)
  570. set src [new Agent/TCP/FullTcp/Sack]
  571. set sink [new Agent/TCP/FullTcp/Sack]
  572. $ns_ attach-agent $node_(s1) $src
  573. $ns_ attach-agent $node_(k1) $sink
  574. $src set fid_ 0
  575. $sink set fid_ 0
  576. $ns_ connect $src $sink
  577. # set up TCP-level connections
  578. $sink listen
  579. set ftp1 [$src attach-app FTP]
  580. $ns_ at 0.7 "$ftp1 start"
  581. $ns_ at 1.3 "$src close"
  582. # set up special params for this test
  583. $src set window_ 100
  584. $src set packetSize_ 576
  585. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  586. $ns_ run
  587. }
  588. #
  589. # sack-dropwin
  590. #
  591. Class Test/sack-dropwin -superclass TestSuite
  592. Test/sack-dropwin instproc init topo {
  593. $self instvar net_ defNet_ test_
  594. set net_ $topo
  595. set defNet_ net0-lossy
  596. set test_ sack-dropwin
  597. $self next
  598. }
  599. Test/sack-dropwin instproc run {} {
  600. $self instvar ns_ node_ testName_ topo_
  601. set stopt 5.5
  602. $topo_ instvar lossylink_
  603. set errmodule [$lossylink_ errormodule]
  604. set errmodel [$errmodule errormodels]
  605. if { [llength $errmodel] > 1 } {
  606. puts "sack-dropwin: confused by >1 err models..abort"
  607. exit 1
  608. }
  609. $errmodel set offset_ 47.0
  610. $errmodel set burstlen_ 10
  611. $errmodel set period_ 1000
  612. # set up connection (do not use "create-connection" method because
  613. # we need a handle on the sink object)
  614. set src [new Agent/TCP/FullTcp/Sack]
  615. set sink [new Agent/TCP/FullTcp/Sack]
  616. $ns_ attach-agent $node_(s1) $src
  617. $ns_ attach-agent $node_(k1) $sink
  618. $src set fid_ 0
  619. $sink set fid_ 0
  620. $ns_ connect $src $sink
  621. # set up TCP-level connections
  622. $sink listen
  623. set ftp1 [$src attach-app FTP]
  624. $ns_ at 0.7 "$ftp1 start"
  625. # set up special params for this test
  626. $src set window_ 10
  627. $src set packetSize_ 576
  628. $self traceQueues $node_(r1) [$self openTrace $stopt $testName_]
  629. $ns_ run
  630. TestSuite runTest