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

通讯编程

开发平台:

Visual C++

  1. # Copyright (c) 2006-2007 by the Protocol Engineering Lab, U of Delaware
  2. # All rights reserved.
  3. #
  4. # Protocol Engineering Lab web page : http://pel.cis.udel.edu/
  5. #
  6. # Paul D. Amer        <amer@@cis,udel,edu>
  7. # Armando L. Caro Jr. <acaro@@cis,udel,edu>
  8. # Janardhan Iyengar   <iyengar@@cis,udel,edu>
  9. # Preethi Natarajan   <nataraja@@cis,udel,edu>
  10. # Nasif Ekiz          <nekiz@@cis,udel,edu>
  11. #
  12. # Redistribution and use in source and binary forms, with or without
  13. # modification, are permitted provided that the following conditions
  14. # are met:
  15. #
  16. # 1. Redistributions of source code must retain the above copyright
  17. #    notice, this list of conditions and the following disclaimer.
  18. #
  19. # 2. Redistributions in binary form must reproduce the above copyright
  20. #    notice, this list of conditions and the following disclaimer in the
  21. #    documentation and/or other materials provided with the distribution.
  22. #
  23. # 3. Neither the name of the University nor of the Laboratory may be used
  24. #    to endorse or promote products derived from this software without
  25. #    specific prior written permission.
  26. #
  27. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  28. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  29. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  30. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  31. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  32. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  33. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  34. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  35. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  36. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  37. # SUCH DAMAGE.
  38. #
  39. #
  40. #
  41. # To run all of the tests in this file: ./test-all-sctp
  42. #
  43. # To run an individual test:
  44. #  ns test-suite-sctp.tcl sctp-2packetsTimeout
  45. #  ns test-suite-sctp.tcl sctp-AMR-Exceeded
  46. #  ns test-suite-sctp.tcl sctp-Rel1-Loss2 
  47. #  ns test-suite-sctp.tcl sctp-burstAfterFastRtxRecovery 
  48. #  ns test-suite-sctp.tcl sctp-burstAfterFastRtxRecovery-2 
  49. #  ns test-suite-sctp.tcl sctp-cwndFreeze 
  50. #  ns test-suite-sctp.tcl sctp-cwndFreeze-multistream 
  51. #  ns test-suite-sctp.tcl sctp-hugeRwnd 
  52. #  ns test-suite-sctp.tcl sctp-initRtx 
  53. #  ns test-suite-sctp.tcl sctp-multihome1-2 
  54. #  ns test-suite-sctp.tcl sctp-multihome2-1
  55. #  ns test-suite-sctp.tcl sctp-multihome2-2AMR-Exceeded
  56. #  ns test-suite-sctp.tcl sctp-multihome2-2Failover 
  57. #  ns test-suite-sctp.tcl sctp-multihome2-2Failover0
  58. #  ns test-suite-sctp.tcl sctp-multihome2-2Failover1
  59. #  ns test-suite-sctp.tcl sctp-multihome2-2Rtx1  
  60. #  ns test-suite-sctp.tcl sctp-multihome2-2Rtx3 
  61. #  ns test-suite-sctp.tcl sctp-multihome2-2Timeout
  62. #  ns test-suite-sctp.tcl sctp-multihome2-2TimeoutRta0
  63. #  ns test-suite-sctp.tcl sctp-multihome2-2TimeoutRta2
  64. #  ns test-suite-sctp.tcl sctp-multihome2-R-2
  65. #  ns test-suite-sctp.tcl sctp-multihome3-3Timeout
  66. #  ns test-suite-sctp.tcl sctp-multipleDropsSameWnd-1 
  67. #  ns test-suite-sctp.tcl sctp-multipleDropsSameWnd-1-delayed 
  68. #  ns test-suite-sctp.tcl sctp-multipleDropsSameWnd-2 
  69. #  ns test-suite-sctp.tcl sctp-multipleDropsSameWnd-3 
  70. #  ns test-suite-sctp.tcl sctp-multipleDropsTwoWnds-1-delayed 
  71. #  ns test-suite-sctp.tcl sctp-multipleRtx 
  72. #  ns test-suite-sctp.tcl sctp-multipleRtx-early 
  73. #  ns test-suite-sctp.tcl sctp-newReno
  74. #  ns test-suite-sctp.tcl sctp-noEarlyHBs
  75. #  ns test-suite-sctp.tcl sctp-smallRwnd 
  76. #  ns test-suite-sctp.tcl sctp-zeroRtx 
  77. #  ns test-suite-sctp.tcl sctp-zeroRtx-burstLoss 
  78. #
  79. #  ns test-suite-sctp.tcl sctp-hbAfterRto-2packetsTimeout
  80. #  ns test-suite-sctp.tcl sctp-hbAfterRto-multihome2-2Timeout
  81. #
  82. #  ns test-suite-sctp.tcl sctp-multipleFastRtx-2packetsTimeout
  83. #  ns test-suite-sctp.tcl sctp-multipleFastRtx-multihome2-2Timeout
  84. #
  85. #  ns test-suite-sctp.tcl sctp-mfrHbAfterRto-Rta2-2FRsTimeout
  86. #
  87. #  ns test-suite-sctp.tcl sctp-timestamp-multihome2-2Rtx3
  88. #  ns test-suite-sctp.tcl sctp-timestamp-multihome2-2Timeout
  89. #
  90. #  ns test-suite-sctp.tcl sctp-packet-loss-dest-conf
  91. #  
  92. #  ns test-suite-sctp.tcl sctp-cmt-2paths-64K
  93. #  ns test-suite-sctp.tcl sctp-cmt-2paths-64K-withloss
  94. #  ns test-suite-sctp.tcl sctp-cmt-3paths-64K
  95. #  ns test-suite-sctp.tcl sctp-cmt-2paths-1path-fails
  96. #  ns test-suite-sctp.tcl sctp-cmt-3paths-1path-fails
  97. #  ns test-suite-sctp.tcl sctp-cmt-packet-loss-dest-conf
  98. #  ns test-suite-sctp.tcl sctp-cmt-Rtx-ssthresh
  99. #  ns test-suite-sctp.tcl sctp-cmt-Rtx-cwnd
  100. #  ns test-suite-sctp.tcl sctp-cmt-Timeout-pmr
  101. #  ns test-suite-sctp.tcl sctp-cmt-multihome2-2Timeout
  102. #  ns test-suite-sctp.tcl sctp-cmt-pf-2paths-1path-fails
  103. #  ns test-suite-sctp.tcl sctp-cmt-pf-3paths-1path-fails
  104. #  ns test-suite-sctp.tcl sctp-cmt-pf-packet-loss-dest-conf
  105. #  ns test-suite-sctp.tcl sctp-cmt-pf-Rtx-ssthresh
  106. #  ns test-suite-sctp.tcl sctp-cmt-pf-Rtx-cwnd
  107. #  ns test-suite-sctp.tcl sctp-cmt-pf-Timeout-pmr
  108.   
  109. Class TestSuite
  110. # 2 packets get dropped and their fast rtx gets lost too.... forcing them
  111. # to timeout.
  112. Class Test/sctp-2packetsTimeout -superclass TestSuite
  113. # This script tests that the appropriate action is taken when the 
  114. # Association.Max.Retrans exceeded... abruptly close the association!
  115. Class Test/sctp-AMR-Exceeded -superclass TestSuite
  116. # tests unreliable stream with k-rtx value of 1 with 2 losses of same chunk.
  117. Class Test/sctp-Rel1-Loss2 -superclass TestSuite
  118. # This tests the Max.Burst feature added in the SCTP implementors
  119. # guide draft v4.  This script carefully choose a small receiver window
  120. # and drops a specific packet to generate the scenario where the
  121. # receiver has a full window and is waiting on the rtx of an earlier
  122. # lost chunk. Once the sender fast retransmits the chunk and the
  123. # receiver receives it, the entire receiver window is free'd up and
  124. # now the sender has plenty of room to send. This WOULD create a
  125. # burst, but Max.Burst limits the burst in this scenario.
  126. Class Test/sctp-burstAfterFastRtxRecovery -superclass TestSuite
  127. # This tests the Max.Burst feature added in the SCTP implementors
  128. # guide draft v4.  This script carefully choose a small receiver window
  129. # and drops a specific packet to generate the scenario where the
  130. # receiver has a full window and is waiting on the rtx of an earlier
  131. # lost chunk. Once the sender fast retransmits the chunk and the
  132. # receiver receives it, the entire receiver window is free'd up and
  133. # now the sender has plenty of room to send. This WOULD create a
  134. # burst, but Max.Burst limits the burst in this scenario.  
  135. Class Test/sctp-burstAfterFastRtxRecovery-2 -superclass TestSuite
  136. # The SCTP implementor's guide clarifies a point in the congestion
  137. # control algorithm which allows PTMU-1 bytes over cwnd in
  138. # flight. This script tests that it is done properly and that cwnd
  139. # does NOT freeze.
  140. Class Test/sctp-cwndFreeze -superclass TestSuite
  141. # The SCTP implementor's guide clarifies a point in the congestion control
  142. # algorithm which allows PTMU-1 bytes over cwnd in flight. This script
  143. # tests that it is done properly (with multistreams) and that cwnd does
  144. # NOT freeze.
  145. Class Test/sctp-cwndFreeze-multistream -superclass TestSuite
  146. # This script tests for proper behavior when using a huge rwnd and mtu
  147. # size chunks.
  148. Class Test/sctp-hugeRwnd -superclass TestSuite
  149. # tests that it recovers from losing an INIT chunk
  150. Class Test/sctp-initRtx -superclass TestSuite
  151. # Demonstrates multihoming. One endpoint is single homed while the
  152. # other is multihomed. Shows that the 2 can be combined. The sender is
  153. # multihomed.
  154. Class Test/sctp-multihome1-2 -superclass TestSuite
  155. # Demonstrates multihoming. One endpoint is single homed while the other is
  156. # multihomed. Shows that the 2 can be combined. The receiver is multihomed.
  157. Class Test/sctp-multihome2-1 -superclass TestSuite
  158. # This script tests that the appropriate action is taken when the association
  159. # is multihomed and Association.Max.Retrans exceeded... abruptly close the 
  160. # association!
  161. Class Test/sctp-multihome2-2AMR-Exceeded -superclass TestSuite
  162. # Demonstrates a failover with multihoming (using a heartbeat timer per
  163. # dest). Two endpoints with 2 interfaces with direct connections between
  164. # each pair. Eventually in the primary becomes active again and all
  165. # traffic moves back to the primary.
  166. Class Test/sctp-multihome2-2Failover -superclass TestSuite
  167. # Demonstrates a failover with multihoming, but this example has
  168. # heartbeating turned off. Two endpoints with 2 interfaces with direct
  169. # connections between each pair. Eventually in the primary becomes active
  170. # again, but since heartbeating is turned off, traffic never moves back to
  171. # the primary.
  172. Class Test/sctp-multihome2-2Failover0 -superclass TestSuite
  173. # Demonstrates a failover with multihoming (using one heartbeat timer for
  174. # all dests). Two endpoints with 2 interfaces with direct connections
  175. # between each pair. Eventually in the primary becomes active again and
  176. # all traffic moves back to the primary.
  177. Class Test/sctp-multihome2-2Failover1 -superclass TestSuite
  178. # Demonstrates retransmissions with multihoming. Two endpoints with 2
  179. # interfaces with direct connections between each pair. A packet gets
  180. # dropped and later gets retransmitted on an alternate path.
  181. Class Test/sctp-multihome2-2Rtx1 -superclass TestSuite
  182. # Demonstrates retransmissions with multihoming. Two endpoints with 2
  183. # interfaces with direct connections between each pair. 3 packets get
  184. # dropped and later get retransmitted on an alternate path.
  185. Class Test/sctp-multihome2-2Rtx3 -superclass TestSuite
  186. # Demonstrates retransmissions with multihoming. Two endpoints with 2
  187. # interfaces with direct connections between each pair. A packet gets
  188. # dropped and fast rtx'd on the alternate path. The retransmit gets
  189. # lost and times out, causing yet another retransmission.
  190. Class Test/sctp-multihome2-2Timeout -superclass TestSuite
  191. # Demonstrates experimental retransmission policies (Rta0 = retransmit on
  192. # the same path) with multihoming. Two endpoints with 2 interfaces with
  193. # direct connections between each pair. A packet gets dropped and fast
  194. # rtx'd on the same path. The retransmit gets lost and times out, causing
  195. # yet another retransmission on the same path.
  196. Class Test/sctp-multihome2-2TimeoutRta0 -superclass TestSuite
  197. # Demonstrates experimental retransmission policies (Rta1 = fast rtx on
  198. # the same path and timeout rtx on the alternate path) with
  199. # multihoming. Two endpoints with 2 interfaces with direct connections
  200. # between each pair. A packet gets dropped and fast rtx'd on the same
  201. # path. The retransmit gets lost and times out, causing yet another
  202. # retransmission on the alternate path.
  203. Class Test/sctp-multihome2-2TimeoutRta2 -superclass TestSuite
  204. # Demonstrates multihoming. Two endpoints with 2 interfaces each all
  205. # connected via a router. In the middle of the association, a change
  206. # primary is done.
  207. Class Test/sctp-multihome2-R-2 -superclass TestSuite
  208. # Demonstrates retransmissions with multihoming. Two endpoints with 3
  209. # interfaces with direct connections between each pair. A packet gets dropped 
  210. # and fast rtx'd on the alternate path. The retransmit gets lost and times out,
  211. # causing a retransmission on the the third althernate path.
  212. Class Test/sctp-multihome3-3Timeout -superclass TestSuite
  213. # One burst loss and one individual loss in same window (without delayed sacks).
  214. Class Test/sctp-multipleDropsSameWnd-1 -superclass TestSuite
  215. # One burst loss and one individual loss in same window (with delayed sacks).
  216. Class Test/sctp-multipleDropsSameWnd-1-delayed -superclass TestSuite
  217. # Burst loss in same window.
  218. Class Test/sctp-multipleDropsSameWnd-2 -superclass TestSuite
  219. # Two independent burst losses in same window.
  220. Class Test/sctp-multipleDropsSameWnd-3 -superclass TestSuite
  221. # One continuous burst loss.
  222. Class Test/sctp-multipleDropsTwoWnds-1-delayed -superclass TestSuite
  223. # This test drops TSN 15 (ns pkt 16) and the Fast Rtx of the same
  224. # (ns pkt 35).  According to the proposed Section 7.2.4.5, Fast Rtx
  225. # happens only once for any TSN. This graph illustrates this point -
  226. # if Fast Rtx is enabled after the timeout rtx of the TSN, it can be
  227. # clearly seen that there WILL be a false Fast Rtx for the TSN.
  228. Class Test/sctp-multipleRtx -superclass TestSuite
  229. # This test drops TSN 3 (ns pkt 4) and the Fast Rtx of the same (ns
  230. # pkt 11).  According to the proposed Section 7.2.4.5, Fast Rtx
  231. # happens only once for any TSN. This graph illustrates this point -
  232. # if Fast Rtx is enabled after the timeout rtx of the TSN, it can be
  233. # clearly seen that there WILL be a false Fast Rtx for the TSN. (Note:
  234. # this script is basically the same as multipleRtx.tcl, except here we
  235. # are testing the same condition when it happens early in the
  236. # connection.)
  237. Class Test/sctp-multipleRtx-early -superclass TestSuite
  238. # Test NewReno changes (fast recovery & HTNA algorithm) in impguide-08
  239. Class Test/sctp-newReno -superclass TestSuite
  240. # test that HEARTBEATs don't start until the association is established
  241. Class Test/sctp-noEarlyHBs -superclass TestSuite
  242. # This script tests for proper behavior when using a small rwnd and
  243. # medium size chunks.
  244. Class Test/sctp-smallRwnd -superclass TestSuite
  245. # tests unreliable stream with k-rtx value of 0 with one loss.
  246. Class Test/sctp-zeroRtx -superclass TestSuite
  247. # test unreliable stream with k-rtx value of 0 with a burst loss.
  248. Class Test/sctp-zeroRtx-burstLoss -superclass TestSuite
  249. # Test HbAfterRto extension. 2 packets get dropped and their fast rtx gets
  250. # lost too.... forcing them to timeout.
  251. Class Test/sctp-hbAfterRto-2packetsTimeout -superclass TestSuite
  252. # Test HbAfterRto extension. Demonstrates retransmissions with
  253. # multihoming. Two endpoints with 2 interfaces with direct connections
  254. # between each pair. A packet gets dropped and fast rtx'd on the alternate
  255. # path. The retransmit gets lost and times out, causing a retransmission
  256. # on the original path (primary).
  257. Class Test/sctp-hbAfterRto-multihome2-2Timeout -superclass TestSuite
  258. # Test MultipleFastRtx extension. 2 packets get dropped and their fast rtx gets
  259. # lost too.... NORMALLY forcing them to timeout, but with this extension
  260. # they are fast rtx'd again.
  261. Class Test/sctp-multipleFastRtx-2packetsTimeout -superclass TestSuite
  262. # Test MultipleFastRtx extension. Demonstrates retransmissions with
  263. # multihoming. Two endpoints with 2 interfaces with direct connections
  264. # between each pair. A packet gets dropped and fast rtx'd on the alternate
  265. # path. The retransmit gets lost and fast rtx'd again (instead of
  266. # timeout!) on the original path (primary).
  267. Class Test/sctp-multipleFastRtx-multihome2-2Timeout -superclass TestSuite
  268. # Test MfrHbAfterRto extension with RTA=2. Two endpoints with 2 interfaces
  269. # with direct connections between each pair. A packet gets dropped and
  270. # fast rtx'd on the same path. The rtx gets lost, and the packet is fast rtx'd
  271. # again. Then all packets on primary are lost, so a timeout occurs and the same
  272. # packet gets retransmitted on alternate path.
  273. Class Test/sctp-mfrHbAfterRto-Rta2-2FRsTimeout -superclass TestSuite
  274. # Test Timestamp extension. Demonstrates retransmissions with timestamps
  275. # and multihoming. Two endpoints with 2 interfaces with direct connections
  276. # between each pair. 3 packets get dropped and later get retransmitted on
  277. # an alternate path.
  278. Class Test/sctp-timestamp-multihome2-2Rtx3 -superclass TestSuite
  279. # Test Timestamp extension. Demonstrates retransmissions with
  280. # multihoming. Two endpoints with 2 interfaces with direct connections
  281. # between each pair. A packet gets dropped and fast rtx'd on the alternate
  282. # path. The retransmit gets lost and times out, causing a retransmission
  283. # on the original path (primary).
  284. Class Test/sctp-timestamp-multihome2-2Timeout -superclass TestSuite
  285. # Demonstrates SCTP destination confirmation.
  286. # There are two endpoints with 3 interfaces each. Two of the heartbeats used 
  287. # for destination confirmation are lost, which delays the start of data 
  288. # transfer. Data transfer does not start until all the destinations are 
  289. # confirmed. 
  290. Class Test/sctp-packet-loss-dest-conf -superclass TestSuite
  291. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming. 
  292. # Two endpoints with 2 interfaces with direct connections between each pair.
  293. Class Test/sctp-cmt-2paths-64K -superclass TestSuite
  294. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming. 
  295. # Two endpoints with 2 interfaces with direct connections between each pair.
  296. # Loss introduced on Path0, and delay of Path0 different from Path1.
  297. Class Test/sctp-cmt-2paths-64K-withloss -superclass TestSuite
  298. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming. 
  299. # Two endpoints with 3 interfaces with direct connections between each pair.
  300. Class Test/sctp-cmt-3paths-64K -superclass TestSuite
  301. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming. 
  302. # There are two endpoints with 2 interfaces each. One of the independent paths
  303. # between end points becomes inactive(goes down) during the transfer. The 
  304. # transfer is completed using the other path.
  305. Class Test/sctp-cmt-2paths-1path-fails -superclass TestSuite
  306. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming. 
  307. # There are two endpoints with 3 interfaces each. One of the independent paths
  308. # between end points becomes inactive(goes down) during the transfer. The 
  309. # transfer is completed using the other paths.
  310. Class Test/sctp-cmt-3paths-1path-fails -superclass TestSuite
  311. # Demonstrates Concurrent Multipath Transfer (CMT) destination confirmation.
  312. # There are two endpoints with 2 interfaces. Two of the heartbeats used for 
  313. # destination confirmation are lost, which delays the start of data transfer.
  314. # Data transfer does not start until all the destinations are confirmed. 
  315. Class Test/sctp-cmt-packet-loss-dest-conf -superclass TestSuite
  316. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming and 
  317. # RTX_SSTHRESH retransmission policy. There are two endpoints with 2 
  318. # interfaces each. Four consecutive data packets from the first interface are 
  319. # dropped to cause a Timeout. Retransmissions are sent to the destination with
  320. # the highest ssthresh value.
  321. Class Test/sctp-cmt-Rtx-ssthresh -superclass TestSuite
  322. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming and 
  323. # RTX_CWND retransmission policy. There are two endpoints with 2 interfaces 
  324. # each. A random packet is lost to force fast rtx. of the packet. The rtx. is 
  325. # sent to the destination with the highest cwnd value.
  326. Class Test/sctp-cmt-Rtx-cwnd -superclass TestSuite
  327. # Demonstrates Concurrent Multipath Transfer (CMT) using multihoming.
  328. # There are two endpoints with 2 interfaces each. A number of packets are lost
  329. # from one of the destinations to get PMR+1 consecutive timeouts. These 
  330. # timeouts change the status of the destination to INACTIVE. The data transfer
  331. # continues to the remaining active destination. When INACTIVE destination 
  332. # becomes ACTIVE, data packets can be send to the all the destinations again. 
  333. Class Test/sctp-cmt-Timeout-pmr -superclass TestSuite
  334. # Demonstrates a Timeout with multihoming for Concurrent Multipath 
  335. # Transfer (CMT). There are two endpoints with 2 interfaces with direct 
  336. # connections between each pair. A packet gets dropped and fast rtx. 
  337. # The rtx. gets lost and times out, causing yet another retransmission.
  338. Class Test/sctp-cmt-multihome2-2Timeout -superclass TestSuite
  339. # Demonstrates Concurrent Multipath Transfer with Potentially Failed (CMT-PF) 
  340. # using multihoming. There are two endpoints with 2 interfaces each. One of 
  341. # the independent paths between hosts becomes inactive(goes down) during the 
  342. # transfer. On the first Timeout on the failed path, data is no longer 
  343. # transferred along the failed destination. The transfer is completed using 
  344. # the other path.
  345. Class Test/sctp-cmt-pf-2paths-1path-fails -superclass TestSuite
  346. # Demonstrates Concurrent Multipath Transfer with Potentially Failed (CMT-PF)
  347. # using multihoming. There are two endpoints with 3 interfaces each. One of 
  348. # the independent paths between hosts becomes inactive(goes down) during the 
  349. # transfer. On the first Timeout on the failed destination, data is no longer 
  350. # transferred along the failed path. The transfer is completed using the other
  351. # paths.
  352. Class Test/sctp-cmt-pf-3paths-1path-fails -superclass TestSuite
  353. # Demonstrates Concurrent Multipath Transfer with Potentially Failed (CMT-PF) 
  354. # destination confirmation. There are two endpoints with 2 interfaces each. 
  355. # Two of the heartbeats used for destination confirmation are lost, which 
  356. # delays the start of data transfer. Data transfer does not start until all 
  357. # the destinations are confirmed.  
  358. Class Test/sctp-cmt-pf-packet-loss-dest-conf -superclass TestSuite
  359. # Demonstrates Concurrent Multipath Transfer with Potentially Failed (CMT-PF) 
  360. # using multihoming and RTX_SSTHRESH retransmission policy.
  361. # There are two endpoints with 2 interfaces each. A random packet is lost
  362. # and its fast rtx. is sent to the destination with the highest ssthresh value.
  363. Class Test/sctp-cmt-pf-Rtx-ssthresh -superclass TestSuite
  364. # Demonstrates Concurrent Multipath Transfer with Potentially Failed (CMT-PF) 
  365. # using multihoming and RTX_CWND retransmission policy.
  366. # There are two endpoints with 2 interfaces each. A random packet is lost
  367. # and its fast rtx. is sent to the destination with the highest cwnd value.
  368. Class Test/sctp-cmt-pf-Rtx-cwnd -superclass TestSuite
  369. # Demonstrates Concurrent Multipath Transfer with Potentially Failed (CMT-PF) 
  370. # using multihoming. There are two endpoints with 2 interfaces. A number of 
  371. # packets are lost from one of the destinations to get PMR+1 consecutive 
  372. # timeouts. These timeouts change the status of the destination to INACTIVE. 
  373. # The data transfer continues to the remaining active destination. When 
  374. # INACTIVE destination becomes ACTIVE, data packets can be send to the all 
  375. # the destinations again.   
  376. Class Test/sctp-cmt-pf-Timeout-pmr -superclass TestSuite
  377. proc usage {} {
  378.     global argv0
  379.     puts stderr "usage: ns $argv0 <test> "
  380.     exit 1
  381. }
  382. TestSuite instproc init {} {
  383.     Trace set show_sctphdr_ 1
  384.     $self instvar ns numnodes_
  385.     set ns [new Simulator]
  386.     set allchan [open temp.rands w]
  387.     $ns trace-all $allchan
  388. }
  389. TestSuite instproc finish {} {
  390.     $self instvar ns
  391.     global quiet PERL
  392.  
  393.     $ns flush-trace
  394.     if {$quiet == 0} {
  395.         puts "Graphing..."
  396.         set XGRAPH "../../../bin/xgraph"
  397.         set RAW2XG_SCTP "../../bin/raw2xg-sctp"
  398.         set WRAP 100
  399. exec $PERL $RAW2XG_SCTP -A -f -q -s 0.01 -m $WRAP -n 0 temp.rands 
  400. > temp.rands.points
  401.         exec $XGRAPH -bb -tk -nl -m -x time -y packets temp.rands.points &
  402.     }
  403.     exit 0
  404. }
  405. Test/sctp-2packetsTimeout instproc init {} {
  406.     $self instvar ns ftp0
  407.     global quiet 
  408.     set testName 2packetsTimeout
  409.     $self next
  410.     set n0 [$ns node]
  411.     set n1 [$ns node]
  412.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  413.     $ns duplex-link-op $n0 $n1 orient right
  414.     set err [new ErrorModel/List]
  415.     $err droplist {15 16 32 33}
  416.     $ns lossmodel $err $n0 $n1
  417.     set sctp0 [new Agent/SCTP]
  418.     $ns attach-agent $n0 $sctp0
  419.     $sctp0 set mtu_ 1500
  420.     $sctp0 set dataChunkSize_ 1468
  421.     $sctp0 set numOutStreams_ 1
  422.     if {$quiet == 0} {
  423. $sctp0 set debugMask_ -1 
  424. $sctp0 set debugFileIndex_ 0
  425.     }
  426.     set sctp1 [new Agent/SCTP]
  427.     $ns attach-agent $n1 $sctp1
  428.     $sctp1 set mtu_ 1500
  429.     $sctp1 set initialRwnd_ 131072 
  430.     $sctp1 set useDelayedSacks_ 0
  431.     
  432.     if {$quiet == 0} {
  433. $sctp1 set debugMask_ -1
  434. $sctp1 set debugFileIndex_ 1
  435.     }
  436.     $ns connect $sctp0 $sctp1
  437.     set ftp0 [new Application/FTP]
  438.     $ftp0 attach-agent $sctp0
  439. }
  440. Test/sctp-2packetsTimeout instproc run {} {
  441.     $self instvar ns ftp0
  442.     $ns at 0.5 "$ftp0 start"
  443.     $ns at 10.0 "$self finish"
  444.     
  445.     $ns run
  446. }
  447. Test/sctp-AMR-Exceeded instproc init {} {
  448.     $self instvar ns testName ftp0
  449.     global quiet
  450.     set testName AMR-Exceeded
  451.     $self next
  452.     set n0 [$ns node]
  453.     set n1 [$ns node]
  454.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  455.     $ns duplex-link-op $n0 $n1 orient right
  456.     set err [new ErrorModel/List]
  457.     $err droplist {15 16 17 18 19 20 21 22 23 24 32 33 34 35 36 37 38 39 40 41 42 43 44}
  458.     $ns lossmodel $err $n0 $n1
  459.     set sctp0 [new Agent/SCTP]
  460.     $ns attach-agent $n0 $sctp0
  461.     $sctp0 set mtu_ 1500
  462.     $sctp0 set dataChunkSize_ 1468 
  463.     $sctp0 set numOutStreams_ 1
  464.     $sctp0 set associationMaxRetrans_ 5
  465.     if {$quiet == 0} {
  466. $sctp0 set debugMask_ -1 
  467. $sctp0 set debugFileIndex_ 0
  468. set trace_ch [open trace.sctp w]
  469. $sctp0 set trace_all_ 1
  470. $sctp0 trace cwnd_
  471. $sctp0 trace rto_
  472. $sctp0 trace errorCount_
  473. $sctp0 attach $trace_ch
  474.     }
  475.     set sctp1 [new Agent/SCTP]
  476.     $ns attach-agent $n1 $sctp1
  477.     $sctp1 set mtu_ 1500
  478.     $sctp1 set initialRwnd_ 131072 
  479.     $sctp1 set useDelayedSacks_ 0
  480.     if {$quiet == 0} {
  481. $sctp1 set debugMask_ -1
  482. $sctp1 set debugFileIndex_ 1
  483.     }
  484.     $ns connect $sctp0 $sctp1
  485.     set ftp0 [new Application/FTP]
  486.     $ftp0 attach-agent $sctp0
  487. }
  488. Test/sctp-AMR-Exceeded instproc run {} {
  489.     $self instvar ns ftp0
  490.     $ns at 0.5 "$ftp0 start"
  491.     $ns at 90.0 "$self finish"
  492.     
  493.     $ns run
  494. }
  495. Test/sctp-Rel1-Loss2 instproc init {} {
  496.     $self instvar ns testName ftp0
  497.     global quiet
  498.     set testName Rel1-Loss2
  499.     $self next
  500.     set n0 [$ns node]
  501.     set n1 [$ns node]
  502.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  503.     $ns duplex-link-op $n0 $n1 orient right
  504.     
  505.     set err [new ErrorModel/List]
  506.     
  507.     $err droplist {16 29}
  508.     
  509.     $ns lossmodel $err $n0 $n1
  510.     
  511.     set sctp0 [new Agent/SCTP]
  512.     $ns attach-agent $n0 $sctp0
  513.     $sctp0 set mtu_ 1500
  514.     $sctp0 set dataChunkSize_ 1468
  515.     $sctp0 set numOutStreams_ 1
  516.     $sctp0 set numUnrelStreams_ 1
  517.     $sctp0 set reliability_ 1
  518.     if {$quiet == 0} {
  519. $sctp0 set debugMask_ -1 
  520. $sctp0 set debugFileIndex_ 0
  521. set trace_ch [open trace.sctp w]
  522. $sctp0 set trace_all_ 1
  523. $sctp0 trace cwnd_
  524. $sctp0 trace rto_
  525. $sctp0 trace errorCount_
  526. $sctp0 attach $trace_ch
  527.     }
  528.     
  529.     set sctp1 [new Agent/SCTP]
  530.     $ns attach-agent $n1 $sctp1
  531.     $sctp1 set mtu_ 1500
  532.     $sctp1 set initialRwnd_ 131072
  533.     $sctp1 set useDelayedSacks_ 1
  534.     
  535.     if {$quiet == 0} {
  536. $sctp1 set debugMask_ -1
  537. $sctp1 set debugFileIndex_ 1
  538.     }
  539.     $ns connect $sctp0 $sctp1
  540.     
  541.     set ftp0 [new Application/FTP]
  542.     $ftp0 attach-agent $sctp0   
  543. }
  544. Test/sctp-Rel1-Loss2 instproc run {} {
  545.     $self instvar ns ftp0
  546.     $ns at 0.5 "$ftp0 start"
  547.     $ns at 10.0 "$self finish"
  548.     
  549.     $ns run
  550. }
  551. Test/sctp-burstAfterFastRtxRecovery instproc init {} {
  552.     $self instvar ns testName ftp0
  553.     global quiet
  554.     set testName burstAfterFastRtxRecovery
  555.     $self next
  556.     set n0 [$ns node]
  557.     set n1 [$ns node]
  558.     $ns duplex-link $n0 $n1 5Mb 50ms DropTail
  559.     $ns duplex-link-op $n0 $n1 orient right
  560.     
  561.     set err [new ErrorModel/List]
  562.     $err droplist {113}
  563.     $ns lossmodel $err $n0 $n1
  564.     
  565.     set sctp0 [new Agent/SCTP]
  566.     $ns attach-agent $n0 $sctp0
  567.     $sctp0 set mtu_ 1500
  568.     $sctp0 set dataChunkSize_ 1468
  569.     $sctp0 set numOutStreams_ 1
  570.     $sctp0 set useMaxBurst_ 1
  571.     
  572.     if {$quiet == 0} {
  573. $sctp0 set debugMask_ -1 
  574. $sctp0 set debugFileIndex_ 0
  575. set trace_ch [open trace.sctp w]
  576. $sctp0 set trace_all_ 1
  577. $sctp0 trace cwnd_
  578. $sctp0 trace rto_
  579. $sctp0 trace errorCount_
  580. $sctp0 attach $trace_ch
  581.     }
  582.     set sctp1 [new Agent/SCTP]
  583.     $ns attach-agent $n1 $sctp1
  584.     $sctp1 set mtu_ 1500
  585.     $sctp1 set initialRwnd_ 23488 
  586.     $sctp1 set useDelayedSacks_ 1
  587.     
  588.     if {$quiet == 0} {
  589. $sctp1 set debugMask_ -1
  590. $sctp1 set debugFileIndex_ 1
  591.     }
  592.     $ns connect $sctp0 $sctp1
  593.     
  594.     set ftp0 [new Application/FTP]
  595.     $ftp0 attach-agent $sctp0
  596. }
  597. Test/sctp-burstAfterFastRtxRecovery instproc run {} {
  598.     $self instvar ns ftp0
  599.     $ns at 0.5 "$ftp0 start"
  600.     $ns at 5.0 "$self finish"
  601.     $ns run
  602. }
  603. Test/sctp-burstAfterFastRtxRecovery-2 instproc init {} {
  604.     $self instvar ns testName ftp0
  605.     global quiet
  606.     set testName burstAfterFastRtxRecovery-2
  607.     $self next
  608.     set n0 [$ns node]
  609.     set n1 [$ns node]
  610.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  611.     $ns duplex-link-op $n0 $n1 orient right
  612.     
  613.     set err [new ErrorModel/List]
  614.     $err droplist {32}
  615.     $ns lossmodel $err $n0 $n1
  616.     
  617.     set sctp0 [new Agent/SCTP]
  618.     $ns attach-agent $n0 $sctp0
  619.     $sctp0 set mtu_ 1500
  620.     $sctp0 set dataChunkSize_ 1468
  621.     $sctp0 set numOutStreams_ 1
  622.     $sctp0 set useMaxBurst_ 1
  623.     if {$quiet == 0} {
  624. $sctp0 set debugMask_ -1 
  625. $sctp0 set debugFileIndex_ 0
  626. set trace_ch [open trace.sctp w]
  627. $sctp0 set trace_all_ 1
  628. $sctp0 trace cwnd_
  629. $sctp0 trace rto_
  630. $sctp0 trace errorCount_
  631. $sctp0 attach $trace_ch
  632.     }
  633.     
  634.     set sctp1 [new Agent/SCTP]
  635.     $ns attach-agent $n1 $sctp1
  636.     $sctp1 set mtu_ 1500
  637.     $sctp1 set initialRwnd_ 23488
  638.     $sctp1 set useDelayedSacks_ 1
  639.     
  640.     if {$quiet == 0} {
  641. $sctp1 set debugMask_ -1
  642. $sctp1 set debugFileIndex_ 1
  643.     }
  644.     $ns connect $sctp0 $sctp1
  645.     
  646.     set ftp0 [new Application/FTP]
  647.     $ftp0 attach-agent $sctp0
  648. }
  649. Test/sctp-burstAfterFastRtxRecovery-2 instproc run {} {
  650.     $self instvar ns ftp0
  651.     $ns at 0.5 "$ftp0 start"
  652.     $ns at 6.0 "$self finish"
  653.     $ns run
  654. }
  655. Test/sctp-cwndFreeze instproc init {} {
  656.     $self instvar ns testName ftp0
  657.     global quiet
  658.     set testName cwndFreeze
  659.     $self next
  660.     set n0 [$ns node]
  661.     set n1 [$ns node]
  662.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  663.     $ns duplex-link-op $n0 $n1 orient right
  664.     
  665.     set err [new ErrorModel/List]
  666.     $err droplist {16}
  667.     $ns lossmodel $err $n0 $n1
  668.     
  669.     set sctp0 [new Agent/SCTP]
  670.     $ns attach-agent $n0 $sctp0
  671.     $sctp0 set mtu_ 1500
  672.     $sctp0 set dataChunkSize_ 1468 
  673.     $sctp0 set numOutStreams_ 1
  674.     if {$quiet == 0} {
  675. $sctp0 set debugMask_ -1 
  676. $sctp0 set debugFileIndex_ 0
  677. set trace_ch [open trace.sctp w]
  678. $sctp0 set trace_all_ 1
  679. $sctp0 trace cwnd_
  680. $sctp0 trace rto_
  681. $sctp0 trace errorCount_
  682. $sctp0 attach $trace_ch
  683.     }
  684.     
  685.     set sctp1 [new Agent/SCTP]
  686.     $ns attach-agent $n1 $sctp1
  687.     $sctp1 set mtu_ 1500
  688.     $sctp1 set initialRwnd_ 131072
  689.     $sctp1 set useDelayedSacks_ 0
  690.     
  691.     if {$quiet == 0} {
  692. $sctp1 set debugMask_ -1
  693. $sctp1 set debugFileIndex_ 1
  694.     }
  695.     $ns connect $sctp0 $sctp1
  696.     
  697.     set ftp0 [new Application/FTP]
  698.     $ftp0 attach-agent $sctp0
  699. }
  700. Test/sctp-cwndFreeze instproc run {} {
  701.     $self instvar ns ftp0
  702.     $ns at 0.5 "$ftp0 start"
  703.     $ns at 5.0 "$self finish"
  704.     $ns run
  705. }
  706. Test/sctp-cwndFreeze-multistream instproc init {} {
  707.     $self instvar ns testName ftp0
  708.     global quiet
  709.     set testName cwndFreeze-multistream
  710.     $self next
  711.     set n0 [$ns node]
  712.     set n1 [$ns node]
  713.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  714.     $ns duplex-link-op $n0 $n1 orient right
  715.     
  716.     set err [new ErrorModel/List]
  717.     $err droplist {16}
  718.     $ns lossmodel $err $n0 $n1
  719.     
  720.     set sctp0 [new Agent/SCTP]
  721.     $ns attach-agent $n0 $sctp0
  722.     $sctp0 set mtu_ 1500
  723.     $sctp0 set dataChunkSize_ 1468 
  724.     $sctp0 set numOutStreams_ 5
  725.     if {$quiet == 0} {
  726. $sctp0 set debugMask_ -1 
  727. $sctp0 set debugFileIndex_ 0
  728. set trace_ch [open trace.sctp w]
  729. $sctp0 set trace_all_ 1
  730. $sctp0 trace cwnd_
  731. $sctp0 trace rto_
  732. $sctp0 trace errorCount_
  733. $sctp0 attach $trace_ch
  734.     }
  735.     
  736.     set sctp1 [new Agent/SCTP]
  737.     $ns attach-agent $n1 $sctp1
  738.     $sctp1 set mtu_ 1500
  739.     $sctp1 set initialRwnd_ 131072
  740.     $sctp1 set useDelayedSacks_ 1
  741.     
  742.     if {$quiet == 0} {
  743. $sctp1 set debugMask_ -1
  744. $sctp1 set debugFileIndex_ 1
  745.     }
  746.     $ns connect $sctp0 $sctp1
  747.     
  748.     set ftp0 [new Application/FTP]
  749.     $ftp0 attach-agent $sctp0    
  750. }
  751. Test/sctp-cwndFreeze-multistream instproc run {} {
  752.     $self instvar ns ftp0
  753.     $ns at 0.5 "$ftp0 start"
  754.     $ns at 10.0 "$self finish"
  755.     
  756.     $ns run
  757. }
  758. Test/sctp-hugeRwnd instproc init {} {
  759.     $self instvar ns testName ftp0
  760.     global quiet
  761.     set testName hugeRwnd
  762.     $self next
  763.     set n0 [$ns node]
  764.     set n1 [$ns node]
  765.     $ns duplex-link $n0 $n1 1500Mb 300ms DropTail
  766.     $ns duplex-link-op $n0 $n1 orient right
  767.     $ns queue-limit $n0 $n1 10000
  768.     
  769.     set err [new ErrorModel/List]
  770.     
  771.     set sctp0 [new Agent/SCTP]
  772.     $ns attach-agent $n0 $sctp0
  773.     $sctp0 set mtu_ 1500
  774.     $sctp0 set dataChunkSize_ 1468
  775.     $sctp0 set numOutStreams_ 1
  776.     
  777.     if {$quiet == 0} {
  778. $sctp0 set debugMask_ -1 
  779. $sctp0 set debugFileIndex_ 0
  780. set trace_ch [open trace.sctp w]
  781. $sctp0 set trace_all_ 1
  782. $sctp0 trace cwnd_
  783. $sctp0 trace rto_
  784. $sctp0 trace errorCount_
  785. $sctp0 attach $trace_ch
  786.     }
  787.     set sctp1 [new Agent/SCTP]
  788.     $ns attach-agent $n1 $sctp1
  789.     $sctp1 set mtu_ 1500
  790.     $sctp1 set initialRwnd_ 1048576
  791.     $sctp1 set useDelayedSacks_ 0
  792.     
  793.     if {$quiet == 0} {
  794. $sctp1 set debugMask_ -1
  795. $sctp1 set debugFileIndex_ 1
  796.     }
  797.     $ns connect $sctp0 $sctp1
  798.     
  799.     set ftp0 [new Application/FTP]
  800.     $ftp0 attach-agent $sctp0
  801. }
  802. Test/sctp-hugeRwnd instproc run {} {
  803.     $self instvar ns ftp0
  804.     $ns at 0.5 "$ftp0 start"
  805.     $ns at 10.0 "$self finish"
  806.     $ns run
  807. }
  808. Test/sctp-initRtx instproc init {} {
  809.     $self instvar ns testName ftp0
  810.     global quiet
  811.     set testName initRtx
  812.     $self next
  813.     set n0 [$ns node]
  814.     set n1 [$ns node]
  815.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  816.     $ns duplex-link-op $n0 $n1 orient right
  817.     
  818.     set err [new ErrorModel/List]
  819.     $err droplist {0}
  820.     $ns lossmodel $err $n0 $n1
  821.     
  822.     set sctp0 [new Agent/SCTP]
  823.     $ns attach-agent $n0 $sctp0
  824.     $sctp0 set mtu_ 1500
  825.     $sctp0 set dataChunkSize_ 1468 
  826.     $sctp0 set numOutStreams_ 1
  827.     if {$quiet == 0} {
  828. $sctp0 set debugMask_ -1 
  829. $sctp0 set debugFileIndex_ 0
  830. set trace_ch [open trace.sctp w]
  831. $sctp0 set trace_all_ 1
  832. $sctp0 trace cwnd_
  833. $sctp0 trace rto_
  834. $sctp0 trace errorCount_
  835. $sctp0 attach $trace_ch
  836.     }
  837.     set sctp1 [new Agent/SCTP]
  838.     $ns attach-agent $n1 $sctp1
  839.     $sctp1 set mtu_ 1500
  840.     $sctp1 set initialRwnd_ 131072 
  841.     $sctp1 set useDelayedSacks_ 1
  842.     
  843.     if {$quiet == 0} {
  844. $sctp1 set debugMask_ -1
  845. $sctp1 set debugFileIndex_ 1
  846.     }
  847.     
  848.     $ns connect $sctp0 $sctp1
  849.     
  850.     set ftp0 [new Application/FTP]
  851.     $ftp0 attach-agent $sctp0
  852.     
  853. }
  854. Test/sctp-initRtx instproc run {} {
  855.     $self instvar ns ftp0
  856.     $ns at 0.5 "$ftp0 start"
  857.     $ns at 10.0 "$self finish"
  858.     $ns run
  859. }
  860. Test/sctp-multihome1-2 instproc init {} {
  861.     $self instvar ns testName host0_if1 sctp0 ftp0
  862.     global quiet
  863.     set testName multihome1-2
  864.     $self next
  865.     set host0_core [$ns node]
  866.     set host0_if0 [$ns node]
  867.     set host0_if1 [$ns node]
  868.     $host0_core color Red
  869.     $host0_if0 color Red
  870.     $host0_if1 color Red
  871.     $ns multihome-add-interface $host0_core $host0_if0
  872.     $ns multihome-add-interface $host0_core $host0_if1
  873.     
  874.     set host1 [$ns node]
  875.     $host1 color Blue
  876.     
  877.     set router [$ns node]
  878.     
  879.     $ns duplex-link $host0_if0 $router .5Mb 200ms DropTail
  880.     $ns duplex-link $host0_if1 $router .5Mb 200ms DropTail
  881.     
  882.     $ns duplex-link $host1 $router .5Mb 200ms DropTail
  883.     
  884.     set sctp0 [new Agent/SCTP]
  885.     $ns multihome-attach-agent $host0_core $sctp0
  886.     $sctp0 set mtu_ 1500
  887.     $sctp0 set dataChunkSize_ 1468 
  888.     $sctp0 set numOutStreams_ 1
  889.     
  890.     if {$quiet == 0} {
  891. $sctp0 set debugMask_ -1 
  892. $sctp0 set debugFileIndex_ 0
  893. set trace_ch [open trace.sctp w]
  894. $sctp0 set trace_all_ 1
  895. $sctp0 trace cwnd_
  896. $sctp0 trace rto_
  897. $sctp0 trace errorCount_
  898. $sctp0 attach $trace_ch
  899.     }
  900.     set sctp1 [new Agent/SCTP]
  901.     $ns attach-agent $host1 $sctp1
  902.     $sctp1 set mtu_ 1500
  903.     $sctp1 set initialRwnd_ 131072
  904.     $sctp1 set useDelayedSacks_ 1
  905.     
  906.     if {$quiet == 0} {
  907. $sctp1 set debugMask_ -1
  908. $sctp1 set debugFileIndex_ 1
  909.     }
  910.     
  911.     $ns connect $sctp0 $sctp1
  912.     
  913.     set ftp0 [new Application/FTP]
  914.     $ftp0 attach-agent $sctp0
  915. }
  916. Test/sctp-multihome1-2 instproc run {} {
  917.     $self instvar ns host0_if1 sctp0 ftp0
  918.     $ns at 6.0 "$sctp0 force-source $host0_if1"
  919.     $ns at 0.5 "$ftp0 start"
  920.     $ns at 8.0 "$self finish"
  921.     $ns run
  922. }
  923. Test/sctp-multihome2-1 instproc init {} {
  924.     $self instvar ns testName host0_if1 sctp1 ftp1
  925.     global quiet
  926.     set testName multihome2-1
  927.     $self next
  928.     set host0_core [$ns node]
  929.     set host0_if0 [$ns node]
  930.     set host0_if1 [$ns node]
  931.     $host0_core color Red
  932.     $host0_if0 color Red
  933.     $host0_if1 color Red
  934.     $ns multihome-add-interface $host0_core $host0_if0
  935.     $ns multihome-add-interface $host0_core $host0_if1
  936.     set host1 [$ns node]
  937.     $host1 color Blue
  938.     set router [$ns node]
  939.     $ns duplex-link $host0_if0 $router .5Mb 200ms DropTail
  940.     $ns duplex-link $host0_if1 $router .5Mb 200ms DropTail
  941.     $ns duplex-link $host1 $router .5Mb 200ms DropTail
  942.     set sctp0 [new Agent/SCTP]
  943.     $ns multihome-attach-agent $host0_core $sctp0
  944.     $sctp0 set mtu_ 1500
  945.     $sctp0 set dataChunkSize_ 1468
  946.     $sctp0 set numOutStreams_ 1
  947.     if {$quiet == 0} {
  948. $sctp0 set debugMask_ -1 
  949. $sctp0 set debugFileIndex_ 0
  950. set trace_ch [open trace.sctp w]
  951. $sctp0 set trace_all_ 1
  952. $sctp0 trace cwnd_
  953. $sctp0 trace rto_
  954. $sctp0 trace errorCount_
  955. $sctp0 attach $trace_ch
  956.     }
  957.     set sctp1 [new Agent/SCTP]
  958.     $ns attach-agent $host1 $sctp1
  959.     $sctp1 set mtu_ 1500
  960.     $sctp1 set dataChunkSize_ 512
  961.     $sctp1 set initialRwnd_ 131072 
  962.     $sctp1 set useDelayedSacks_ 1
  963.     
  964.     if {$quiet == 0} {
  965. $sctp1 set debugMask_ -1
  966. $sctp1 set debugFileIndex_ 1
  967.     }
  968.     $ns connect $sctp0 $sctp1
  969.     $sctp1 set-primary-destination $host0_if0
  970.     set ftp1 [new Application/FTP]
  971.     $ftp1 attach-agent $sctp1
  972. }
  973. Test/sctp-multihome2-1 instproc run {} {
  974.     $self instvar ns host0_if1 sctp1 ftp1
  975.     $ns at 6.0 "$sctp1 set-primary-destination $host0_if1"
  976.     $ns at 0.5 "$ftp1 start"
  977.     $ns at 8.0 "$self finish"
  978.     $ns run
  979. }
  980. Test/sctp-multihome2-2AMR-Exceeded instproc init {} {
  981.     $self instvar ns testName ftp0
  982.     global quiet
  983.     set testName multihome2-2AMR-Exceeded
  984.     $self next
  985.     
  986.     set host0_core [$ns node]
  987.     set host0_if0 [$ns node]
  988.     set host0_if1 [$ns node]
  989.     $host0_core color Red
  990.     $host0_if0 color Red
  991.     $host0_if1 color Red
  992.     $ns multihome-add-interface $host0_core $host0_if0
  993.     $ns multihome-add-interface $host0_core $host0_if1
  994.     set host1_core [$ns node]
  995.     set host1_if0 [$ns node]
  996.     set host1_if1 [$ns node]
  997.     $host1_core color Blue
  998.     $host1_if0 color Blue
  999.     $host1_if1 color Blue
  1000.     $ns multihome-add-interface $host1_core $host1_if0
  1001.     $ns multihome-add-interface $host1_core $host1_if1
  1002.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1003.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1004.     set err0 [new ErrorModel/List]
  1005.     $err0 droplist {16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38}
  1006.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1007.     set err1 [new ErrorModel/List]
  1008.     $err1 droplist {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16}
  1009.     $ns lossmodel $err1 $host0_if1 $host1_if1
  1010.     set sctp0 [new Agent/SCTP]
  1011.     $ns multihome-attach-agent $host0_core $sctp0
  1012.     $sctp0 set mtu_ 1500
  1013.     $sctp0 set dataChunkSize_ 1468
  1014.     $sctp0 set numOutStreams_ 1
  1015.     if {$quiet == 0} {
  1016. $sctp0 set debugMask_ -1 
  1017. $sctp0 set debugFileIndex_ 0
  1018. set trace_ch [open trace.sctp w]
  1019. $sctp0 set trace_all_ 1
  1020. $sctp0 trace cwnd_
  1021. $sctp0 trace rto_
  1022. $sctp0 trace errorCount_
  1023. $sctp0 attach $trace_ch
  1024.     }
  1025.     set sctp1 [new Agent/SCTP]
  1026.     $ns multihome-attach-agent $host1_core $sctp1
  1027.     $sctp1 set mtu_ 1500
  1028.     $sctp1 set initialRwnd_ 131072 
  1029.     $sctp1 set useDelayedSacks_ 1
  1030.     
  1031.     if {$quiet == 0} {
  1032. $sctp1 set debugMask_ -1
  1033. $sctp1 set debugFileIndex_ 1
  1034.     }
  1035.     $ns connect $sctp0 $sctp1
  1036.     set ftp0 [new Application/FTP]
  1037.     $ftp0 attach-agent $sctp0
  1038.     $sctp0 set-primary-destination $host1_if0
  1039. }
  1040. Test/sctp-multihome2-2AMR-Exceeded instproc run {} {
  1041.     $self instvar ns ftp0
  1042.     $ns at 0.5 "$ftp0 start"
  1043.     $ns at 180.0 "$self finish"
  1044.     $ns run
  1045. }
  1046. Test/sctp-multihome2-2Failover instproc init {} {
  1047.     $self instvar ns testName ftp0
  1048.     global quiet
  1049.     set testName multihome2-2Failover
  1050.     $self next
  1051.     set host0_core [$ns node]
  1052.     set host0_if0 [$ns node]
  1053.     set host0_if1 [$ns node]
  1054.     $host0_core color Red
  1055.     $host0_if0 color Red
  1056.     $host0_if1 color Red
  1057.     $ns multihome-add-interface $host0_core $host0_if0
  1058.     $ns multihome-add-interface $host0_core $host0_if1
  1059.     
  1060.     set host1_core [$ns node]
  1061.     set host1_if0 [$ns node]
  1062.     set host1_if1 [$ns node]
  1063.     $host1_core color Blue
  1064.     $host1_if0 color Blue
  1065.     $host1_if1 color Blue
  1066.     $ns multihome-add-interface $host1_core $host1_if0
  1067.     $ns multihome-add-interface $host1_core $host1_if1
  1068.     
  1069.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1070.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1071.     
  1072.     set err0 [new ErrorModel/List]
  1073.     $err0 droplist {16 17 18 19 20 21 22 23 24 25 26 27 29 28 31 32}
  1074.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1075.     
  1076.     set sctp0 [new Agent/SCTP]
  1077.     $ns multihome-attach-agent $host0_core $sctp0
  1078.     $sctp0 set mtu_ 1500
  1079.     $sctp0 set dataChunkSize_ 1468 
  1080.     $sctp0 set numOutStreams_ 1
  1081.     if {$quiet == 0} {
  1082. $sctp0 set debugMask_ -1 
  1083. $sctp0 set debugFileIndex_ 0
  1084. set trace_ch [open trace.sctp w]
  1085. $sctp0 set trace_all_ 1
  1086. $sctp0 trace cwnd_
  1087. $sctp0 trace rto_
  1088. $sctp0 trace errorCount_
  1089. $sctp0 attach $trace_ch
  1090.     }
  1091.     
  1092.     set sctp1 [new Agent/SCTP]
  1093.     $ns multihome-attach-agent $host1_core $sctp1
  1094.     $sctp1 set mtu_ 1500
  1095.     $sctp1 set initialRwnd_ 131072
  1096.     $sctp1 set useDelayedSacks_ 1
  1097.     
  1098.     if {$quiet == 0} {
  1099. $sctp1 set debugMask_ -1
  1100. $sctp1 set debugFileIndex_ 1
  1101.     }
  1102.     
  1103.     $ns connect $sctp0 $sctp1
  1104.     $sctp0 set-primary-destination $host1_if0
  1105.     
  1106.     set ftp0 [new Application/FTP]
  1107.     $ftp0 attach-agent $sctp0
  1108. }
  1109. Test/sctp-multihome2-2Failover instproc run {} {
  1110.     $self instvar ns ftp0
  1111.     $ns at 0.5 "$ftp0 start"
  1112.     $ns at 180.0 "$self finish"
  1113.     $ns run
  1114. }
  1115. Test/sctp-multihome2-2Failover0 instproc init {} {
  1116.     $self instvar ns testName ftp0
  1117.     global quiet
  1118.     set testName multihome2-2Failover0
  1119.     $self next
  1120.     set host0_core [$ns node]
  1121.     set host0_if0 [$ns node]
  1122.     set host0_if1 [$ns node]
  1123.     $host0_core color Red
  1124.     $host0_if0 color Red
  1125.     $host0_if1 color Red
  1126.     $ns multihome-add-interface $host0_core $host0_if0
  1127.     $ns multihome-add-interface $host0_core $host0_if1
  1128.     set host1_core [$ns node]
  1129.     set host1_if0 [$ns node]
  1130.     set host1_if1 [$ns node]
  1131.     $host1_core color Blue
  1132.     $host1_if0 color Blue
  1133.     $host1_if1 color Blue
  1134.     $ns multihome-add-interface $host1_core $host1_if0
  1135.     $ns multihome-add-interface $host1_core $host1_if1
  1136.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1137.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1138.     set err0 [new ErrorModel/List]
  1139.     $err0 droplist {16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32} 
  1140.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1141.     set sctp0 [new Agent/SCTP]
  1142.     $ns multihome-attach-agent $host0_core $sctp0
  1143.     $sctp0 set mtu_ 1500
  1144.     $sctp0 set dataChunkSize_ 1468
  1145.     $sctp0 set numOutStreams_ 1
  1146.     $sctp0 set heartbeatInterval_ 0
  1147.     if {$quiet == 0} {
  1148. $sctp0 set debugMask_ -1 
  1149. $sctp0 set debugFileIndex_ 0
  1150. set trace_ch [open trace.sctp w]
  1151. $sctp0 set trace_all_ 1
  1152. $sctp0 trace cwnd_
  1153. $sctp0 trace rto_
  1154. $sctp0 trace errorCount_
  1155. $sctp0 attach $trace_ch
  1156.     }
  1157.     set sctp1 [new Agent/SCTP]
  1158.     $ns multihome-attach-agent $host1_core $sctp1
  1159.     $sctp1 set mtu_ 1500
  1160.     $sctp1 set initialRwnd_ 131072 
  1161.     $sctp1 set useDelayedSacks_ 1
  1162.     
  1163.     if {$quiet == 0} {
  1164. $sctp1 set debugMask_ -1
  1165. $sctp1 set debugFileIndex_ 1
  1166.     }
  1167.     $ns connect $sctp0 $sctp1
  1168.     $sctp0 set-primary-destination $host1_if0
  1169.     set ftp0 [new Application/FTP]
  1170.     $ftp0 attach-agent $sctp0
  1171. }
  1172. Test/sctp-multihome2-2Failover0 instproc run {} {
  1173.     $self instvar ns ftp0
  1174.     $ns at 0.5 "$ftp0 start"
  1175.     $ns at 195.0 "$self finish"
  1176.     $ns run
  1177. }
  1178. Test/sctp-multihome2-2Failover1 instproc init {} {
  1179.     $self instvar ns testName ftp0
  1180.     global quiet
  1181.     set testName multihome2-2Failover1
  1182.     $self next
  1183.     set host0_core [$ns node]
  1184.     set host0_if0 [$ns node]
  1185.     set host0_if1 [$ns node]
  1186.     $host0_core color Red
  1187.     $host0_if0 color Red
  1188.     $host0_if1 color Red
  1189.     $ns multihome-add-interface $host0_core $host0_if0
  1190.     $ns multihome-add-interface $host0_core $host0_if1
  1191.     set host1_core [$ns node]
  1192.     set host1_if0 [$ns node]
  1193.     set host1_if1 [$ns node]
  1194.     $host1_core color Blue
  1195.     $host1_if0 color Blue
  1196.     $host1_if1 color Blue
  1197.     $ns multihome-add-interface $host1_core $host1_if0
  1198.     $ns multihome-add-interface $host1_core $host1_if1
  1199.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1200.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1201.     set err0 [new ErrorModel/List]
  1202.     $err0 droplist {16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32} 
  1203.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1204.     set sctp0 [new Agent/SCTP]
  1205.     $ns multihome-attach-agent $host0_core $sctp0
  1206.     $sctp0 set mtu_ 1500
  1207.     $sctp0 set dataChunkSize_ 1468
  1208.     $sctp0 set numOutStreams_ 1
  1209.     if {$quiet == 0} {
  1210. $sctp0 set debugMask_ -1 
  1211. $sctp0 set debugFileIndex_ 0
  1212. set trace_ch [open trace.sctp w]
  1213. $sctp0 set trace_all_ 1
  1214. $sctp0 trace cwnd_
  1215. $sctp0 trace rto_
  1216. $sctp0 trace errorCount_
  1217. $sctp0 attach $trace_ch
  1218.     }
  1219.     set sctp1 [new Agent/SCTP]
  1220.     $ns multihome-attach-agent $host1_core $sctp1
  1221.     $sctp1 set mtu_ 1500
  1222.     $sctp1 set initialRwnd_ 131072 
  1223.     $sctp1 set useDelayedSacks_ 1
  1224.     
  1225.     if {$quiet == 0} {
  1226. $sctp1 set debugMask_ -1
  1227. $sctp1 set debugFileIndex_ 1
  1228.     }
  1229.     $ns connect $sctp0 $sctp1
  1230.     $sctp0 set-primary-destination $host1_if0
  1231.     set ftp0 [new Application/FTP]
  1232.     $ftp0 attach-agent $sctp0
  1233. }
  1234. Test/sctp-multihome2-2Failover1 instproc run {} {
  1235.     $self instvar ns ftp0
  1236.     $ns at 0.5 "$ftp0 start"
  1237.     $ns at 195.0 "$self finish"
  1238.     $ns run
  1239. }
  1240. Test/sctp-multihome2-2Rtx1 instproc init {} {
  1241.     $self instvar ns testName ftp0
  1242.     global quiet
  1243.     set testName multihome2-2Rtx1
  1244.     $self next
  1245.     set host0_core [$ns node]
  1246.     set host0_if0 [$ns node]
  1247.     set host0_if1 [$ns node]
  1248.     $host0_core color Red
  1249.     $host0_if0 color Red
  1250.     $host0_if1 color Red
  1251.     $ns multihome-add-interface $host0_core $host0_if0
  1252.     $ns multihome-add-interface $host0_core $host0_if1
  1253.     
  1254.     set host1_core [$ns node]
  1255.     set host1_if0 [$ns node]
  1256.     set host1_if1 [$ns node]
  1257.     $host1_core color Blue
  1258.     $host1_if0 color Blue
  1259.     $host1_if1 color Blue
  1260.     $ns multihome-add-interface $host1_core $host1_if0
  1261.     $ns multihome-add-interface $host1_core $host1_if1
  1262.     
  1263.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1264.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1265.     
  1266.     set err [new ErrorModel/List]
  1267.     $err droplist {16}
  1268.     $ns lossmodel $err $host0_if0 $host1_if0
  1269.     
  1270.     set sctp0 [new Agent/SCTP]
  1271.     $ns multihome-attach-agent $host0_core $sctp0
  1272.     $sctp0 set mtu_ 1500
  1273.     $sctp0 set dataChunkSize_ 1468 
  1274.     $sctp0 set numOutStreams_ 1
  1275.     if {$quiet == 0} {
  1276. $sctp0 set debugMask_ -1 
  1277. $sctp0 set debugFileIndex_ 0
  1278. set trace_ch [open trace.sctp w]
  1279. $sctp0 set trace_all_ 1
  1280. $sctp0 trace cwnd_
  1281. $sctp0 trace rto_
  1282. $sctp0 trace errorCount_
  1283. $sctp0 attach $trace_ch
  1284.     }
  1285.     
  1286.     set sctp1 [new Agent/SCTP]
  1287.     $ns multihome-attach-agent $host1_core $sctp1
  1288.     $sctp1 set mtu_ 1500
  1289.     $sctp1 set initialRwnd_ 131072
  1290.     $sctp1 set useDelayedSacks_ 1
  1291.     
  1292.     if {$quiet == 0} {
  1293. $sctp1 set debugMask_ -1
  1294. $sctp1 set debugFileIndex_ 1
  1295.     }
  1296.     
  1297.     $ns connect $sctp0 $sctp1
  1298.     
  1299.     set ftp0 [new Application/FTP]
  1300.     $ftp0 attach-agent $sctp0
  1301.     
  1302.     $sctp0 set-primary-destination $host1_if0
  1303. }
  1304. Test/sctp-multihome2-2Rtx1 instproc run {} {
  1305.     $self instvar ns ftp0
  1306.     $ns at 0.5 "$ftp0 start"
  1307.     $ns at 10.0 "$self finish"
  1308.     $ns run
  1309. }
  1310. Test/sctp-multihome2-2Rtx3 instproc init {} {
  1311.     $self instvar ns testName ftp0
  1312.     global quiet
  1313.     set testName multihome2-2Rtx3
  1314.     $self next
  1315.     set host0_core [$ns node]
  1316.     set host0_if0 [$ns node]
  1317.     set host0_if1 [$ns node]
  1318.     $host0_core color Red
  1319.     $host0_if0 color Red
  1320.     $host0_if1 color Red
  1321.     $ns multihome-add-interface $host0_core $host0_if0
  1322.     $ns multihome-add-interface $host0_core $host0_if1
  1323.     
  1324.     set host1_core [$ns node]
  1325.     set host1_if0 [$ns node]
  1326.     set host1_if1 [$ns node]
  1327.     $host1_core color Blue
  1328.     $host1_if0 color Blue
  1329.     $host1_if1 color Blue
  1330.     $ns multihome-add-interface $host1_core $host1_if0
  1331.     $ns multihome-add-interface $host1_core $host1_if1
  1332.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1333.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1334.     set err [new ErrorModel/List]
  1335.     $err droplist {16 17 18}
  1336.     $ns lossmodel $err $host0_if0 $host1_if0
  1337.     set sctp0 [new Agent/SCTP]
  1338.     $ns multihome-attach-agent $host0_core $sctp0
  1339.     $sctp0 set mtu_ 1500
  1340.     $sctp0 set dataChunkSize_ 1468
  1341.     $sctp0 set numOutStreams_ 1
  1342.     if {$quiet == 0} {
  1343. $sctp0 set debugMask_ -1 
  1344. $sctp0 set debugFileIndex_ 0
  1345. set trace_ch [open trace.sctp w]
  1346. $sctp0 set trace_all_ 1
  1347. $sctp0 trace cwnd_
  1348. $sctp0 trace rto_
  1349. $sctp0 trace errorCount_
  1350. $sctp0 attach $trace_ch
  1351.     }
  1352.     set sctp1 [new Agent/SCTP]
  1353.     $ns multihome-attach-agent $host1_core $sctp1
  1354.     $sctp1 set mtu_ 1500
  1355.     $sctp1 set initialRwnd_ 131072 
  1356.     $sctp1 set useDelayedSacks_ 1
  1357.     
  1358.     if {$quiet == 0} {
  1359. $sctp1 set debugMask_ -1
  1360. $sctp1 set debugFileIndex_ 1
  1361.     }
  1362.     $ns connect $sctp0 $sctp1
  1363.     set ftp0 [new Application/FTP]
  1364.     $ftp0 attach-agent $sctp0
  1365.     $sctp0 set-primary-destination $host1_if0       
  1366. }
  1367. Test/sctp-multihome2-2Rtx3 instproc run {} {
  1368.     $self instvar ns ftp0
  1369.     $ns at 0.5 "$ftp0 start"
  1370.     $ns at 10.0 "$self finish"
  1371.     $ns run
  1372. }
  1373. Test/sctp-multihome2-2Timeout instproc init {} {
  1374.     $self instvar ns testName ftp0
  1375.     global quiet
  1376.     set testName multihome2-2Timeout
  1377.     $self next
  1378.     
  1379.     set host0_core [$ns node]
  1380.     set host0_if0 [$ns node]
  1381.     set host0_if1 [$ns node]
  1382.     $host0_core color Red
  1383.     $host0_if0 color Red
  1384.     $host0_if1 color Red
  1385.     $ns multihome-add-interface $host0_core $host0_if0
  1386.     $ns multihome-add-interface $host0_core $host0_if1
  1387.     
  1388.     set host1_core [$ns node]
  1389.     set host1_if0 [$ns node]
  1390.     set host1_if1 [$ns node]
  1391.     $host1_core color Blue
  1392.     $host1_if0 color Blue
  1393.     $host1_if1 color Blue
  1394.     $ns multihome-add-interface $host1_core $host1_if0
  1395.     $ns multihome-add-interface $host1_core $host1_if1
  1396.     
  1397.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1398.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1399.     
  1400.     set err0 [new ErrorModel/List]
  1401.     $err0 droplist {16}
  1402.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1403.     
  1404.     set err1 [new ErrorModel/List]
  1405.     $err1 droplist {1}
  1406.     $ns lossmodel $err1 $host0_if1 $host1_if1
  1407.     
  1408.     set sctp0 [new Agent/SCTP]
  1409.     $ns multihome-attach-agent $host0_core $sctp0
  1410.     $sctp0 set mtu_ 1500
  1411.     $sctp0 set dataChunkSize_ 1468 
  1412.     $sctp0 set numOutStreams_ 1
  1413.     if {$quiet == 0} {
  1414. $sctp0 set debugMask_ -1 
  1415. $sctp0 set debugFileIndex_ 0
  1416. set trace_ch [open trace.sctp w]
  1417. $sctp0 set trace_all_ 1
  1418. $sctp0 trace cwnd_
  1419. $sctp0 trace rto_
  1420. $sctp0 trace errorCount_
  1421. $sctp0 attach $trace_ch
  1422.     }
  1423.     
  1424.     set sctp1 [new Agent/SCTP]
  1425.     $ns multihome-attach-agent $host1_core $sctp1
  1426.     $sctp1 set mtu_ 1500
  1427.     $sctp1 set initialRwnd_ 131072
  1428.     $sctp1 set useDelayedSacks_ 1
  1429.     
  1430.     if {$quiet == 0} {
  1431. $sctp1 set debugMask_ -1
  1432. $sctp1 set debugFileIndex_ 1
  1433.     }
  1434.     
  1435.     $ns connect $sctp0 $sctp1
  1436.     $sctp0 set-primary-destination $host1_if0
  1437.     
  1438.     set ftp0 [new Application/FTP]
  1439.     $ftp0 attach-agent $sctp0
  1440. }
  1441. Test/sctp-multihome2-2Timeout instproc run {} {
  1442.     $self instvar ns ftp0
  1443.     $ns at 0.5 "$ftp0 start"
  1444.     $ns at 12.0 "$self finish"
  1445.     $ns run
  1446. }
  1447. Test/sctp-multihome2-2TimeoutRta0 instproc init {} {
  1448.     $self instvar ns testName ftp0
  1449.     global quiet
  1450.     set testName multihome2-2TimeoutRta0
  1451.     $self next
  1452.     
  1453.     set host0_core [$ns node]
  1454.     set host0_if0 [$ns node]
  1455.     set host0_if1 [$ns node]
  1456.     $host0_core color Red
  1457.     $host0_if0 color Red
  1458.     $host0_if1 color Red
  1459.     $ns multihome-add-interface $host0_core $host0_if0
  1460.     $ns multihome-add-interface $host0_core $host0_if1
  1461.     
  1462.     set host1_core [$ns node]
  1463.     set host1_if0 [$ns node]
  1464.     set host1_if1 [$ns node]
  1465.     $host1_core color Blue
  1466.     $host1_if0 color Blue
  1467.     $host1_if1 color Blue
  1468.     $ns multihome-add-interface $host1_core $host1_if0
  1469.     $ns multihome-add-interface $host1_core $host1_if1
  1470.     
  1471.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1472.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1473.     
  1474.     set err0 [new ErrorModel/List]
  1475.     $err0 droplist {16 29}
  1476.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1477.     
  1478.     set sctp0 [new Agent/SCTP]
  1479.     $ns multihome-attach-agent $host0_core $sctp0
  1480.     $sctp0 set mtu_ 1500
  1481.     $sctp0 set dataChunkSize_ 1468 
  1482.     $sctp0 set numOutStreams_ 1
  1483.     $sctp0 set rtxToAlt_ 0
  1484.     if {$quiet == 0} {
  1485. $sctp0 set debugMask_ -1 
  1486. $sctp0 set debugFileIndex_ 0
  1487. set trace_ch [open trace.sctp w]
  1488. $sctp0 set trace_all_ 1
  1489. $sctp0 trace cwnd_
  1490. $sctp0 trace rto_
  1491. $sctp0 trace errorCount_
  1492. $sctp0 attach $trace_ch
  1493.     }
  1494.     
  1495.     set sctp1 [new Agent/SCTP]
  1496.     $ns multihome-attach-agent $host1_core $sctp1
  1497.     $sctp1 set mtu_ 1500
  1498.     $sctp1 set initialRwnd_ 131072
  1499.     $sctp1 set useDelayedSacks_ 1
  1500.     
  1501.     if {$quiet == 0} {
  1502. $sctp1 set debugMask_ -1
  1503. $sctp1 set debugFileIndex_ 1
  1504.     }
  1505.     
  1506.     $ns connect $sctp0 $sctp1
  1507.     $sctp0 set-primary-destination $host1_if0
  1508.     
  1509.     set ftp0 [new Application/FTP]
  1510.     $ftp0 attach-agent $sctp0
  1511. }
  1512. Test/sctp-multihome2-2TimeoutRta0 instproc run {} {
  1513.     $self instvar ns ftp0
  1514.     $ns at 0.5 "$ftp0 start"
  1515.     $ns at 12.0 "$self finish"
  1516.     $ns run
  1517. }
  1518. Test/sctp-multihome2-2TimeoutRta2 instproc init {} {
  1519.     $self instvar ns testName ftp0
  1520.     global quiet
  1521.     set testName multihome2-2TimeoutRta2
  1522.     $self next
  1523.     
  1524.     set host0_core [$ns node]
  1525.     set host0_if0 [$ns node]
  1526.     set host0_if1 [$ns node]
  1527.     $host0_core color Red
  1528.     $host0_if0 color Red
  1529.     $host0_if1 color Red
  1530.     $ns multihome-add-interface $host0_core $host0_if0
  1531.     $ns multihome-add-interface $host0_core $host0_if1
  1532.     
  1533.     set host1_core [$ns node]
  1534.     set host1_if0 [$ns node]
  1535.     set host1_if1 [$ns node]
  1536.     $host1_core color Blue
  1537.     $host1_if0 color Blue
  1538.     $host1_if1 color Blue
  1539.     $ns multihome-add-interface $host1_core $host1_if0
  1540.     $ns multihome-add-interface $host1_core $host1_if1
  1541.     
  1542.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1543.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1544.     
  1545.     set err0 [new ErrorModel/List]
  1546.     $err0 droplist {16 29}
  1547.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1548.     
  1549.     set sctp0 [new Agent/SCTP]
  1550.     $ns multihome-attach-agent $host0_core $sctp0
  1551.     $sctp0 set mtu_ 1500
  1552.     $sctp0 set dataChunkSize_ 1468 
  1553.     $sctp0 set numOutStreams_ 1
  1554.     $sctp0 set rtxToAlt_ 2
  1555.     if {$quiet == 0} {
  1556. $sctp0 set debugMask_ -1 
  1557. $sctp0 set debugFileIndex_ 0
  1558. set trace_ch [open trace.sctp w]
  1559. $sctp0 set trace_all_ 1
  1560. $sctp0 trace cwnd_
  1561. $sctp0 trace rto_
  1562. $sctp0 trace errorCount_
  1563. $sctp0 attach $trace_ch
  1564.     }
  1565.     
  1566.     set sctp1 [new Agent/SCTP]
  1567.     $ns multihome-attach-agent $host1_core $sctp1
  1568.     $sctp1 set mtu_ 1500
  1569.     $sctp1 set initialRwnd_ 131072
  1570.     $sctp1 set useDelayedSacks_ 1
  1571.     
  1572.     if {$quiet == 0} {
  1573. $sctp1 set debugMask_ -1
  1574. $sctp1 set debugFileIndex_ 1
  1575.     }
  1576.     
  1577.     $ns connect $sctp0 $sctp1
  1578.     $sctp0 set-primary-destination $host1_if0
  1579.     
  1580.     set ftp0 [new Application/FTP]
  1581.     $ftp0 attach-agent $sctp0
  1582. }
  1583. Test/sctp-multihome2-2TimeoutRta2 instproc run {} {
  1584.     $self instvar ns ftp0
  1585.     $ns at 0.5 "$ftp0 start"
  1586.     $ns at 12.0 "$self finish"
  1587.     $ns run
  1588. }
  1589. Test/sctp-multihome2-R-2 instproc init {} {
  1590.     $self instvar ns testName host1_if1 sctp0 ftp0
  1591.     global quiet
  1592.     set testName multihome2-R-2
  1593.     $self next
  1594.     set host0_core [$ns node]
  1595.     set host0_if0 [$ns node]
  1596.     set host0_if1 [$ns node]
  1597.     $host0_core color Red
  1598.     $host0_if0 color Red
  1599.     $host0_if1 color Red
  1600.     $ns multihome-add-interface $host0_core $host0_if0
  1601.     $ns multihome-add-interface $host0_core $host0_if1
  1602.     set host1_core [$ns node]
  1603.     set host1_if0 [$ns node]
  1604.     set host1_if1 [$ns node]
  1605.     $host1_core color Blue
  1606.     $host1_if0 color Blue
  1607.     $host1_if1 color Blue
  1608.     $ns multihome-add-interface $host1_core $host1_if0
  1609.     $ns multihome-add-interface $host1_core $host1_if1
  1610.     set router [$ns node]
  1611.     $ns duplex-link $host0_if0 $router .5Mb 200ms DropTail
  1612.     $ns duplex-link $host0_if1 $router .5Mb 200ms DropTail
  1613.     $ns duplex-link $host1_if0 $router .5Mb 200ms DropTail
  1614.     $ns duplex-link $host1_if1 $router .5Mb 200ms DropTail
  1615.     set sctp0 [new Agent/SCTP]
  1616.     $ns multihome-attach-agent $host0_core $sctp0
  1617.     $sctp0 set mtu_ 1500
  1618.     $sctp0 set dataChunkSize_ 1468
  1619.     $sctp0 set numOutStreams_ 1
  1620.     if {$quiet == 0} {
  1621. $sctp0 set debugMask_ -1 
  1622. $sctp0 set debugFileIndex_ 0
  1623. set trace_ch [open trace.sctp w]
  1624. $sctp0 set trace_all_ 1
  1625. $sctp0 trace cwnd_
  1626. $sctp0 trace rto_
  1627. $sctp0 trace errorCount_
  1628. $sctp0 attach $trace_ch
  1629.     }
  1630.     set sctp1 [new Agent/SCTP]
  1631.     $ns multihome-attach-agent $host1_core $sctp1
  1632.     $sctp1 set mtu_ 1500
  1633.     $sctp1 set initialRwnd_ 131072 
  1634.     $sctp1 set useDelayedSacks_ 1
  1635.     if {$quiet == 0} {
  1636. $sctp1 set debugMask_ -1 
  1637. $sctp1 set debugFileIndex_ 1
  1638.     }
  1639.     $ns connect $sctp0 $sctp1
  1640.     set ftp0 [new Application/FTP]
  1641.     $ftp0 attach-agent $sctp0
  1642.     $sctp0 set-primary-destination $host1_if0    
  1643. }
  1644. Test/sctp-multihome2-R-2 instproc run {} {
  1645.     $self instvar ns host1_if1 sctp0 ftp0
  1646.     $ns at 7.5 "$sctp0 set-primary-destination $host1_if1"
  1647.     $ns at 0.5 "$ftp0 start"
  1648.     $ns at 12.0 "$self finish"
  1649.     $ns run
  1650. }
  1651. Test/sctp-multihome3-3Timeout instproc init {} {
  1652.     $self instvar ns testName ftp0
  1653.     global quiet
  1654.     set testName multihome3-3Timeout
  1655.     $self next
  1656.     
  1657.     set host0_core [$ns node]
  1658.     set host0_if0 [$ns node]
  1659.     set host0_if1 [$ns node]
  1660.     set host0_if2 [$ns node]
  1661.     $host0_core color Red
  1662.     $host0_if0 color Red
  1663.     $host0_if1 color Red
  1664.     $host0_if2 color Red
  1665.     $ns multihome-add-interface $host0_core $host0_if0
  1666.     $ns multihome-add-interface $host0_core $host0_if1
  1667.     $ns multihome-add-interface $host0_core $host0_if2
  1668.     set host1_core [$ns node]
  1669.     set host1_if0 [$ns node]
  1670.     set host1_if1 [$ns node]
  1671.     set host1_if2 [$ns node]
  1672.     $host1_core color Blue
  1673.     $host1_if0 color Blue
  1674.     $host1_if1 color Blue
  1675.     $host1_if2 color Blue
  1676.     $ns multihome-add-interface $host1_core $host1_if0
  1677.     $ns multihome-add-interface $host1_core $host1_if1
  1678.     $ns multihome-add-interface $host1_core $host1_if2
  1679.     $ns duplex-link $host0_if0 $host1_if0 .5Mb 200ms DropTail
  1680.     $ns duplex-link $host0_if1 $host1_if1 .5Mb 200ms DropTail
  1681.     $ns duplex-link $host0_if2 $host1_if2 .5Mb 200ms DropTail
  1682.     set err0 [new ErrorModel/List]
  1683.     $err0 droplist {16}
  1684.     $ns lossmodel $err0 $host0_if0 $host1_if0
  1685.     set err1 [new ErrorModel/List]
  1686.     $err1 droplist {1}
  1687.     $ns lossmodel $err1 $host0_if1 $host1_if1
  1688.     set sctp0 [new Agent/SCTP]
  1689.     $ns multihome-attach-agent $host0_core $sctp0
  1690.     $sctp0 set mtu_ 1500
  1691.     $sctp0 set dataChunkSize_ 1468
  1692.     $sctp0 set numOutStreams_ 1
  1693.     if {$quiet == 0} {
  1694. $sctp0 set debugMask_ -1 
  1695. $sctp0 set debugFileIndex_ 0
  1696. set trace_ch [open trace.sctp w]
  1697. $sctp0 set trace_all_ 1
  1698. $sctp0 trace cwnd_
  1699. $sctp0 trace rto_
  1700. $sctp0 trace errorCount_
  1701. $sctp0 attach $trace_ch
  1702.     }
  1703.     set sctp1 [new Agent/SCTP]
  1704.     $ns multihome-attach-agent $host1_core $sctp1
  1705.     $sctp1 set mtu_ 1500
  1706.     $sctp1 set initialRwnd_ 131072 
  1707.     $sctp1 set useDelayedSacks_ 1
  1708.     if {$quiet == 0} {
  1709. $sctp1 set debugMask_ -1 
  1710. $sctp1 set debugFileIndex_ 1
  1711.     }
  1712.     $ns connect $sctp0 $sctp1
  1713.     $sctp0 set-primary-destination $host1_if0
  1714.     set ftp0 [new Application/FTP]
  1715.     $ftp0 attach-agent $sctp0
  1716. }
  1717. Test/sctp-multihome3-3Timeout instproc run {} {
  1718.     $self instvar ns ftp0
  1719.     $ns at 0.5 "$ftp0 start"
  1720.     $ns at 10.0 "$self finish"
  1721.     $ns run
  1722. }
  1723. Test/sctp-multipleDropsSameWnd-1 instproc init {} {
  1724.     $self instvar ns testName ftp0
  1725.     global quiet
  1726.     set testName multipleDropsSameWnd-1
  1727.     $self next
  1728.     set n0 [$ns node]
  1729.     set n1 [$ns node]
  1730.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  1731.     $ns duplex-link-op $n0 $n1 orient right
  1732.     
  1733.     set err [new ErrorModel/List]
  1734.     $err droplist {13 14 16}
  1735.     $ns lossmodel $err $n0 $n1
  1736.     set sctp0 [new Agent/SCTP]
  1737.     $ns attach-agent $n0 $sctp0
  1738.     $sctp0 set mtu_ 1500
  1739.     $sctp0 set dataChunkSize_ 1468 
  1740.     $sctp0 set numOutStreams_ 1
  1741.     
  1742.     if {$quiet == 0} {
  1743. $sctp0 set debugMask_ -1 
  1744. $sctp0 set debugFileIndex_ 0
  1745. set trace_ch [open trace.sctp w]
  1746. $sctp0 set trace_all_ 1
  1747. $sctp0 trace cwnd_
  1748. $sctp0 trace rto_
  1749. $sctp0 trace errorCount_
  1750. $sctp0 attach $trace_ch
  1751.     }
  1752.     set sctp1 [new Agent/SCTP]
  1753.     $ns attach-agent $n1 $sctp1
  1754.     $sctp1 set mtu_ 1500
  1755.     $sctp1 set initialRwnd_ 131072
  1756.     $sctp1 set useDelayedSacks_ 0
  1757.     if {$quiet == 0} {
  1758. $sctp1 set debugMask_ -1 
  1759. $sctp1 set debugFileIndex_ 1
  1760.     }
  1761.    
  1762.     $ns connect $sctp0 $sctp1
  1763.     
  1764.     set ftp0 [new Application/FTP]
  1765.     $ftp0 attach-agent $sctp0
  1766. }
  1767. Test/sctp-multipleDropsSameWnd-1 instproc run {} {
  1768.     $self instvar ns ftp0
  1769.     $ns at 0.5 "$ftp0 start"
  1770.     $ns at 7.0 "$self finish"
  1771.     
  1772.     $ns run
  1773. }
  1774. Test/sctp-multipleDropsSameWnd-1-delayed instproc init {} {
  1775.     $self instvar ns testName ftp0
  1776.     global quiet
  1777.     set testName multipleDropsSameWnd-1-delayed
  1778.     $self next
  1779.     set n0 [$ns node]
  1780.     set n1 [$ns node]
  1781.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  1782.     $ns duplex-link-op $n0 $n1 orient right
  1783.     
  1784.     set err [new ErrorModel/List]
  1785.     $err droplist {13 14 16}
  1786.     $ns lossmodel $err $n0 $n1
  1787.     
  1788.     set sctp0 [new Agent/SCTP]
  1789.     $ns attach-agent $n0 $sctp0
  1790.     $sctp0 set mtu_ 1500
  1791.     $sctp0 set dataChunkSize_ 1468 
  1792.     $sctp0 set numOutStreams_ 1
  1793.     
  1794.     if {$quiet == 0} {
  1795. $sctp0 set debugMask_ -1 
  1796. $sctp0 set debugFileIndex_ 0
  1797. set trace_ch [open trace.sctp w]
  1798. $sctp0 set trace_all_ 1
  1799. $sctp0 trace cwnd_
  1800. $sctp0 trace rto_
  1801. $sctp0 trace errorCount_
  1802. $sctp0 attach $trace_ch
  1803.     }
  1804.    
  1805.     set sctp1 [new Agent/SCTP]
  1806.     $ns attach-agent $n1 $sctp1
  1807.     $sctp1 set mtu_ 1500
  1808.     $sctp1 set initialRwnd_ 131072
  1809.     $sctp1 set useDelayedSacks_ 1
  1810.     
  1811.     if {$quiet == 0} {
  1812. $sctp1 set debugMask_ -1 
  1813. $sctp1 set debugFileIndex_ 1
  1814.     }
  1815.    
  1816.     $ns connect $sctp0 $sctp1
  1817.     
  1818.     set ftp0 [new Application/FTP]
  1819.     $ftp0 attach-agent $sctp0
  1820. }
  1821. Test/sctp-multipleDropsSameWnd-1-delayed instproc run {} {
  1822.     $self instvar ns ftp0
  1823.     $ns at 0.5 "$ftp0 start"
  1824.     $ns at 7.0 "$self finish"
  1825.     
  1826.     $ns run
  1827. }
  1828. Test/sctp-multipleDropsSameWnd-2 instproc init {} {
  1829.     $self instvar ns testName ftp0
  1830.     global quiet
  1831.     set testName multipleDropsSameWnd-2
  1832.     $self next
  1833.     set n0 [$ns node]
  1834.     set n1 [$ns node]
  1835.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  1836.     $ns duplex-link-op $n0 $n1 orient right
  1837.     
  1838.     set err [new ErrorModel/List]
  1839.     $err droplist {13 14 15 16}
  1840.     $ns lossmodel $err $n0 $n1
  1841.     
  1842.     set sctp0 [new Agent/SCTP]
  1843.     $ns attach-agent $n0 $sctp0
  1844.     $sctp0 set mtu_ 1500
  1845.     $sctp0 set dataChunkSize_ 1468 
  1846.     $sctp0 set numOutStreams_ 1
  1847.     
  1848.     if {$quiet == 0} {
  1849. $sctp0 set debugMask_ -1 
  1850. $sctp0 set debugFileIndex_ 0
  1851. set trace_ch [open trace.sctp w]
  1852. $sctp0 set trace_all_ 1
  1853. $sctp0 trace cwnd_
  1854. $sctp0 trace rto_
  1855. $sctp0 trace errorCount_
  1856. $sctp0 attach $trace_ch
  1857.     }
  1858.    
  1859.     set sctp1 [new Agent/SCTP]
  1860.     $ns attach-agent $n1 $sctp1
  1861.     $sctp1 set mtu_ 1500
  1862.     $sctp1 set initialRwnd_ 131072
  1863.     $sctp1 set useDelayedSacks_ 0
  1864.     
  1865.     if {$quiet == 0} {
  1866. $sctp1 set debugMask_ -1 
  1867. $sctp1 set debugFileIndex_ 1
  1868.     }
  1869.    
  1870.     $ns connect $sctp0 $sctp1
  1871.     
  1872.     set ftp0 [new Application/FTP]
  1873.     $ftp0 attach-agent $sctp0
  1874. }
  1875. Test/sctp-multipleDropsSameWnd-2 instproc run {} {
  1876.     $self instvar ns ftp0
  1877.     $ns at 0.5 "$ftp0 start"
  1878.     $ns at 7.0 "$self finish"
  1879.     
  1880.     $ns run
  1881. }
  1882. Test/sctp-multipleDropsSameWnd-3 instproc init {} {
  1883.     $self instvar ns testName ftp0
  1884.     global quiet
  1885.     set testName multipleDropsSameWnd-3
  1886.     $self next
  1887.     set n0 [$ns node]
  1888.     set n1 [$ns node]
  1889.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  1890.     $ns duplex-link-op $n0 $n1 orient right
  1891.     
  1892.     set err [new ErrorModel/List]
  1893.     $err droplist {12 13 15 16}
  1894.     $ns lossmodel $err $n0 $n1
  1895.     
  1896.     set sctp0 [new Agent/SCTP]
  1897.     $ns attach-agent $n0 $sctp0
  1898.     $sctp0 set mtu_ 1500
  1899.     $sctp0 set dataChunkSize_ 1468 
  1900.     $sctp0 set numOutStreams_ 1
  1901.     
  1902.     if {$quiet == 0} {
  1903. $sctp0 set debugMask_ -1 
  1904. $sctp0 set debugFileIndex_ 0
  1905. set trace_ch [open trace.sctp w]
  1906. $sctp0 set trace_all_ 1
  1907. $sctp0 trace cwnd_
  1908. $sctp0 trace rto_
  1909. $sctp0 trace errorCount_
  1910. $sctp0 attach $trace_ch
  1911.     }
  1912.    
  1913.     set sctp1 [new Agent/SCTP]
  1914.     $ns attach-agent $n1 $sctp1
  1915.     $sctp1 set mtu_ 1500
  1916.     $sctp1 set initialRwnd_ 131072
  1917.     $sctp1 set useDelayedSacks_ 0
  1918.     
  1919.     if {$quiet == 0} {
  1920. $sctp1 set debugMask_ -1 
  1921. $sctp1 set debugFileIndex_ 1
  1922.     }
  1923.    
  1924.     $ns connect $sctp0 $sctp1
  1925.     
  1926.     set ftp0 [new Application/FTP]
  1927.     $ftp0 attach-agent $sctp0
  1928. }
  1929. Test/sctp-multipleDropsSameWnd-3 instproc run {} {
  1930.     $self instvar ns ftp0
  1931.     $ns at 0.5 "$ftp0 start"
  1932.     $ns at 7.0 "$self finish"
  1933.     
  1934.     $ns run
  1935. }
  1936. Test/sctp-multipleDropsTwoWnds-1-delayed instproc init {} {
  1937.     $self instvar ns testName ftp0
  1938.     global quiet
  1939.     set testName multipleDropsTwoWnds-1-delayed
  1940.     $self next
  1941.     set n0 [$ns node]
  1942.     set n1 [$ns node]
  1943.     $ns duplex-link $n0 $n1 .5Mb 200ms DropTail
  1944.     $ns duplex-link-op $n0 $n1 orient right
  1945.     
  1946.     set err [new ErrorModel/List]
  1947.     $err droplist {15 16 17 18}
  1948.     $ns lossmodel $err $n0 $n1
  1949.     
  1950.     set sctp0 [new Agent/SCTP]
  1951.     $ns attach-agent $n0 $sctp0
  1952.     $sctp0 set mtu_ 1500
  1953.     $sctp0 set dataChunkSize_ 1468 
  1954.     $sctp0 set numOutStreams_ 1
  1955.     
  1956.     if {$quiet == 0} {
  1957. $sctp0 set debugMask_ -1 
  1958. $sctp0 set debugFileIndex_ 0
  1959. set trace_ch [open trace.sctp w]
  1960. $sctp0 set trace_all_ 1
  1961. $sctp0 trace cwnd_
  1962. $sctp0 trace rto_
  1963. $sctp0 trace errorCount_
  1964. $sctp0 attach $trace_ch
  1965.     }
  1966.    
  1967.     set sctp1 [new Agent/SCTP]
  1968.     $ns attach-agent $n1 $sctp1
  1969.     $sctp1 set mtu_ 1500
  1970.     $sctp1 set initialRwnd_ 131072
  1971.     $sctp1 set useDelayedSacks_ 1
  1972.     
  1973.     if {$quiet == 0} {
  1974. $sctp1 set debugMask_ -1 
  1975. $sctp1 set debugFileIndex_ 1
  1976.     }
  1977.    
  1978.     $ns connect $sctp0 $sctp1
  1979.     
  1980.     set ftp0 [new Application/FTP]
  1981.     $ftp0 attach-agent $sctp0
  1982. }
  1983. Test/sctp-multipleDropsTwoWnds-1-delayed instproc run {} {
  1984.     $self instvar ns ftp0
  1985.     $ns at 0.5 "$ftp0 start"
  1986.     $ns at 10.0 "$self finish"
  1987.     $ns run
  1988. }
  1989. Test/sctp-multipleRtx instproc init {} {
  1990.     $self instvar ns testName ftp0
  1991.     global quiet
  1992.     set testName multipleRtx
  1993.     $self next
  1994.     set n0 [$ns node]
  1995.     set n1 [$ns node]
  1996.     $ns duplex-link $n0 $n1 .5Mb 300ms DropTail
  1997.     $ns duplex-link-op $n0 $n1 orient right
  1998.     $ns queue-limit $n0 $n1 10000
  1999.     
  2000.     set err [new ErrorModel/List]
  2001.     $err droplist {17 36}
  2002.     $ns lossmodel $err $n0 $n1
  2003.     
  2004.     set sctp0 [new Agent/SCTP]
  2005.     $ns attach-agent $n0 $sctp0
  2006.     $sctp0 set mtu_ 1500
  2007.     $sctp0 set dataChunkSize_ 1468 
  2008.     $sctp0 set numOutStreams_ 1
  2009.     
  2010.     if {$quiet == 0} {
  2011. $sctp0 set debugMask_ -1 
  2012. $sctp0 set debugFileIndex_ 0
  2013. set trace_ch [open trace.sctp w]
  2014. $sctp0 set trace_all_ 1
  2015. $sctp0 trace cwnd_
  2016. $sctp0 trace rto_
  2017. $sctp0 trace errorCount_
  2018. $sctp0 attach $trace_ch
  2019.     }
  2020.    
  2021.     set sctp1 [new Agent/SCTP]
  2022.     $ns attach-agent $n1 $sctp1
  2023.     $sctp1 set mtu_ 1500
  2024.     $sctp1 set initialRwnd_ 131072
  2025.     $sctp1 set useDelayedSacks_ 0
  2026.     
  2027.     if {$quiet == 0} {
  2028. $sctp1 set debugMask_ -1 
  2029. $sctp1 set debugFileIndex_ 1
  2030.     }
  2031.    
  2032.     $ns connect $sctp0 $sctp1
  2033.     
  2034.     set ftp0 [new Application/FTP]
  2035.     $ftp0 attach-agent $sctp0
  2036. }
  2037. Test/sctp-multipleRtx instproc run {} {
  2038.     $self instvar ns ftp0
  2039.     $ns at 0.5 "$ftp0 start"
  2040.     $ns at 10.0 "$self finish"
  2041.     $ns run
  2042. }
  2043. Test/sctp-multipleRtx-early instproc init {} {
  2044.     $self instvar ns testName ftp0
  2045.     global quiet
  2046.     set testName multipleRtx-early
  2047.     $self next
  2048.     set n0 [$ns node]
  2049.     set n1 [$ns node]
  2050.     $ns duplex-link $n0 $n1 .5Mb 300ms DropTail
  2051.     $ns duplex-link-op $n0 $n1 orient right
  2052.     $ns queue-limit $n0 $n1 10000
  2053.     
  2054.     set err [new ErrorModel/List]
  2055.     $err droplist {5 12}
  2056.     $ns lossmodel $err $n0 $n1
  2057.     
  2058.     set sctp0 [new Agent/SCTP]
  2059.     $ns attach-agent $n0 $sctp0
  2060.     $sctp0 set mtu_ 1500
  2061.     $sctp0 set dataChunkSize_ 1468
  2062.     $sctp0 set numOutStreams_ 1
  2063.     
  2064.     if {$quiet == 0} {
  2065. $sctp0 set debugMask_ -1 
  2066. $sctp0 set debugFileIndex_ 0
  2067. set trace_ch [open trace.sctp w]
  2068. $sctp0 set trace_all_ 1