³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌÅÍ NS-2

°­½Å°¢* ÃÖ¼±¿Ï** ¿ÀÇ༮***

ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝÀÌ Àü ¼¼°è¸¦ ¿¬°áÇÏ´Â ±Û·Î¹ú ³×Æ®¿öÅ· ÇÁ·ÎÅäÄݷνá È®°íÇÑ ÀÚ¸®¸¦ Â÷ÁöÇÔ¿¡ µû¶ó ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝÀÇ ¼º´É °³¼± ¹× »õ·Î¿î ÇÁ·ÎÅäÄÝ °³¹ßÀ» À§ÇÑ ³ë·ÂÀÌ È°¹ßÇÏ°Ô ÃßÁøµÇ°í ÀÖ´Ù. º» °í¿¡¼­´Â ´Ù¾çÇÑ ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ½Ã¹Ä·¹ÀÌ¼Ç ±â´ÉÀ» Á¦°øÇÏ¿© ÇöÀç Àü ¼¼°èÀûÀ¸·Î ³Î¸® »ç¿ëµÇ°í ÀÖ´Â ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌÅÍÀÎ ns-2ÀÇ ÁÖ¿ä ±â´É°ú ³×Æ®¿öÅ© ½Ã¹Ä·¹À̼ǿ¡ÀÇ Àû¿ë¹æ¹ý µîÀ» »ìÆ캻´Ù. ¢Æ

I. ¼­ ¾ð

ÄÝ·Òºñ¾Æ ´ëÇп¡ ÀÇÇØ °³¹ßµÈ ½Ã¹Ä·¹ÀÌ¼Ç Å×½ºÆ®º£µåÀÎ NEST[1]¸¦ ±â¹ÝÀ¸·Î UC Berkeley¿¡¼­´Â 1988³â REALÀ̶ó´Â ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌÅ͸¦ °³¹ßÇÏ¿´´Ù[2]. ±×¸®°í 1989³â¿¡ LBNL(Lawrence Berkeley National Laboratory)ÀÇ ³×Æ®¿öÅ© ¿¬±¸±×·ìÀº ÀÌ REALÀ» ±â¹ÝÀ¸·Î ¿¬±¸¸¦ ½ÃÀÛÇÏ¿© ns-1(network simulator)¶ó°í ºÎ¸£´Â ½Ã¹Ä·¹ÀÌ¼Ç µµ±¸¸¦ °³¹ßÇÏ¿´´Ù[3]. LBNL¿¡ ÀÇÇØ °³¹ßµÈ ns-1Àº È®Àå tcl(Tool Command Language)À» ½Ã¹Ä·¹ÀÌ¼Ç ±â¼ú ¾ð¾î·Î »ç¿ëÇϸç, ¼öÇàÇÏ°íÀÚ ÇÏ´Â ½Ã¹Ä·¹À̼ÇÀº tcl ÇÁ·Î±×·¥À¸·Î½á Á¤ÀÇµÇ°Ô µÈ´Ù. ÀÌ tcl ´ë½Å¿¡ MIT¿¡ ÀÇÇØ °³¹ßµÈ otcl(Object tcl)À» »ç¿ëÇÏ¿© »õ·Î¿î ±¸Á¶¸¦ °®µµ·Ï ns-1À» °³¼±ÇÑ °ÍÀÌ ns-2ÀÌ´Ù[3,4]. ns-2´Â ±âÁ¸ ns-1°ú ¿ÏÀüÇÑ ¿ª¹æÇâ ȣȯ¼ºÀ» °®µµ·Ï ¼³°èµÇ¾ú´Ù. ns´Â TCP, ¶ó¿ìÆà ÇÁ·ÎÅäÄÝ, ¸ÖƼij½ºÆ® ÇÁ·ÎÅäÄÝ, RTP(Real Time Protocol), SRM(Scalable Reliable Multicast) µî ´Ù¾çÇÑ ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇϱ⿡ ÀûÀýÇÑ ¿©·¯ ȯ°æÀ» Á¦°øÇÏ°í ÀÖ¾î ÇöÀç ³Î¸® »ç¿ëµÇ°í ÀÖ´Â ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç µµ±¸ÀÌ´Ù.

ns-1Àº SYN/FIN ÆÐŶÀ» Æ÷ÇÔÇÏÁö ¾Ê´Â ´Ü¹æÇâ TCP(Tahoe, Reno, Vegas, SACK), SYN/FIN ÆÐŶ°ú ¾ç¹æÇâ µ¥ÀÌÅÍ È帧À» Áö¿øÇÏ´Â ¾ç¹æÇâ Reno TCP, CBQ(Class-based Queing), µ¿Àû ¶ó¿ìÆÃ, µ§½º-¸ðµå ¸ÖƼij½ºÆ® ¶ó¿ìÆÃ, È帧 °ü¸®ÀÚ, Telnet ¼Ò½º µîÀ» Á¦°øÇÏ°í ÀÖ´Ù. ns-2´Â ns-1¿¡¼­ Á¦°øµÇÁö ¾Ê´ø ¸¹Àº ±â´ÉµéÀÌ Ãß°¡ µÇ¾ú´Âµ¥, ns-2¿¡ Ãß°¡µÈ ±â´Éµé·Î´Â ¸ÖƼ-Æнº ¶ó¿ìÆÃ, RTP(Real Time Protocol), SRM, ÁýÁßÇü ¸ÖƼij½ºÆ®, À̵¿ È£½ºÆ® Áö¿ø, ½ºÄÉÁ층 ¾Ë°í¸®ÁòÀ¸·Î SFQ(Stochastic Fair Queing)¿Í FQ(Fair Queing), ±×¸®°í DRR (Deficit Round Robin) ¾Ë°í¸®ÁòÀÌ Ãß°¡µÇ¾ú´Ù. ns-2´Â ÇöÀç °è¼ÓÇؼ­ ±â´É Ãß°¡ ¹× ¼º´É °³¼±ÀÛ¾÷ÀÌ ÀÌ·ç¾îÁö°í ÀÖÀ¸¸ç[5], ´©±¸³ª ¹«»óÀ¸·Î ³×Æ®¿öÅ© »ó¿¡¼­ ´Ù¿î·Îµå ¹Þ¾Æ »ç¿ëÀÌ °¡´ÉÇϹǷΠÇöÀç °¡Àå ³Î¸® »ç¿ëµÇ°í ÀÖ´Â ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç µµ±¸ÀÌ´Ù.

º» °í¿¡¼­´Â nsÀÇ ÁÖ¿ä ±â´É°ú ½Ã¹Ä·¹ÀÌÅÍ ½ÇÇà ¹æ¹ý, ½Ã¹Ä·¹ÀÌÅÍ ½ºÅ©¸³Æ® ¾ð¾îÀÎ tcl°ú otcl, À̺¥Æ® ½ºÄÉÁì·¯ÀÇ »ý¼º, ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç ¿ä¼Ò, ¿¡ÀÌÀüÆ®¿Í ³ëµåÀÇ Á¢¼Ó ¹× ¿¬°á¼³Á¤, µ¥ÀÌÅÍ Àü¼Û, ¿¡·¯ ¸ðµâÀÇ »ý¼º ¹× »ðÀÔ, ½Ã¹Ä·¹ÀÌ¼Ç °á°ú ÃßÀû ¹× Ç¥½Ã, ½Ã¹Ä·¹ÀÌ¼Ç ½ºÅ©¸³Æ® ÀÛ¼º ¿¹ µî¿¡ ´ëÇØ ±â¼úÇÏ¿´´Ù.

II. ½Ã¹Ä·¹ÀÌÅÍ ½ÇÇà ¹æ¹ý

ns¸¦ »ç¿ëÇÏ¿© ½Ã¹Ä·¹À̼ÇÀ» ½ÇÇàÇÏ´Â ¹æ¹ý¿¡´Â µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ù¹ø° ¹æ¹ýÀº ¸í·ÉÀ» º¸³»¸é Áï°¢ÀûÀ¸·Î ±×¿¡ ´ëÇÑ ÀÀ´äÀ» º¸³» ¿À´Â ´ëÈ­(Interactive) ¸ðµåÀÌ°í, µÎ ¹ø° ¹æ¹ýÀº ÀÏ·ÃÀÇ ¸í·É¾î¸¦ ÆÄÀÏ·Î ÀúÀåÇؼ­ ns¸¦ ½ÇÇàÇÏ´Â ¼öµ¿(Passive) ¸ðµå°¡ ÀÖ´Ù.

1. ´ëÈ­ ¸ðµå(Interactive Mode)

´ëÈ­ ¸ðµå´Â ½© ÇÁ·ÒÇÁÆ® »ó¿¡¼­ ns ¸í·É¾î·Î ½ÃÀÛÇÑ´Ù. °¢ ¸í·É ¶óÀÎ ´ç Áï°¢ÀûÀ¸·Î ´ëÀÀµÇ´Â °ªÀ» ÀÀ´äÇÏ°Ô µÇ¸ç ¸í·É»óÀÇ ¿¡·¯ À¯¹«¸¦ ÆÇ´ÜÇÒ ¼ö ÀÖÁö¸¸ ÆÄÀÏ·Î ÀúÀåÇÒ ¼ö´Â ¾ø´Ù. ´ÙÀ½ <¿¹½Ã 1>Àº ´ëÈ­ ¸ðµåÀÇ ÇÑ ½ÇÇà ¿¹ ÀÌ´Ù.

<¿¹½Ã 1> ´ëÈ­ ¸ðµå ½ÇÇà ¿¹

¶óÀÎ 1: [Shell Prompt] ns

¶óÀÎ 2: % set ns [new Simulator]

¶óÀÎ 3: _o4

¶óÀÎ 4: % $ns at 1 "puts Hello World!"

¶óÀÎ 5: 1

¶óÀÎ 6: % $ns at 1.5 "exit"

¶óÀÎ 7: 2

¶óÀÎ 8: % $ns run

¶óÀÎ 9: Hello World!

¶óÀÎ10: [Shell Prompt]

<¿¹½Ã 1>ÀÇ ¶óÀÎ1Àº ns¸¦ ½ÇÇà½ÃÅ°´Â °ÍÀ» ÀǹÌÇϸç, ¶óÀÎ2´Â ns°¡ Áö¿øÇÏ´Â set ¸í·É¾î¸¦ »ç¿ëÇؼ­ new Simulator¸¦ ns·Î ´ëÄ¡ÇßÀ¸¸ç, ¶óÀÎ4´Â puts ¸í·ÉÀ» »ç¿ëÇؼ­ ns ½ÇÇà 1ÃÊ ÈÄ¿¡ ¡°Hello world!¡± ½ºÆ®¸µÀ» È­¸é¿¡ Ãâ·ÂÇ϶ó´Â ¸í·ÉÀ̸ç, ¶óÀÎ6Àº ns ½ÇÇà 1.5ÃÊ ÈÄ¿¡ Á¾·áÇ϶ó´Â ¸í·ÉÀ̸ç, ¶óÀÎ8Àº run¸í·É¾î¸¦ »ç¿ëÇؼ­ ns¸¦ ½ÇÇàÇÏ´Â °ÍÀÌ°í, ¶óÀÎ 9´Â ns ½ÇÇà °á°ú·Î È­¸é¿¡ ¹®ÀÚ ½ºÆ®¸µÀÌ Ãâ·ÂµÇ´Â °ÍÀ» º¸¿© ÁÖ°í ÀÖ´Ù. ¶óÀÎ3, 5, 7Àº ÇØ´ç ¸í·É¿¡ ´ëÇÑ ¿ÀºêÁ§Æ® Äڵ带 ÀǹÌÇÑ´Ù. ns¸í·É¾î¿Í ½ºÅ©¸³Æ® ¾ð¾îÀÎ tcl¿¡ ´ëÇÑ º¸´Ù ÀÚ¼¼ÇÑ »çÇ×Àº µÚ¿¡ ´Ù½Ã ´Ù·é´Ù.

2. ¼öµ¿ ¸ðµå(Passive Mode)

¼öµ¿ ¸ðµå´Â ´ëÈ­ ¸ðµå¿Í ¾ÆÁÖ ´ëÁ¶ÀûÀÎ ¹æ¹ýÀ¸·Î½á, ¸ÕÀú ½ºÅ©¸³Æ® ÆÄÀÏÀ» ¸¸µç ÈÄ À̸¦ ÀÌ¿ëÇÏ¿© ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀÌ´Ù. ½ºÅ©¸³Æ® ÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ýÀº ÇØ´ç ¿î¿µÃ¼°è ȯ°æ¿¡¼­ Áö¿øÇÏ´Â °¢Á¾ ¿¡µðÅ͸¦ »ç¿ëÇؼ­ ns ¸í·É¾î, tcl ¸í·É¾î, ±× ¹ÛÀÇ ½© ¸í·É¾î¸¦ ÀÌ¿ëÇÑ ½ºÅ©¸³Æ® ÆÄÀÏÀ» ÀÛ¼ºÇÑ ÈÄ ÆÄÀÏÀ» filename.tcl·Î ÀúÀåÇÑ´Ù. ´ÙÀ½ ´Ü°è·Î, ½© ÇÁ·ÒÇÁÆ®¿¡¼­ ns filename.tcl ¸í·É¾î¸¦ ½ÇÇàÇÏ¸é ½ºÅ©¸³Æ® ÆÄÀÏ¿¡ ÀúÀåµÈ ¸í·É¾î ¼ø¼­ ´ë·Î ½Ã¹Ä·¹À̼ÇÀÌ ½ÇÇàµÇ¾î ¿øÇÏ´Â °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ´ÙÀ½ <¿¹½Ã 2>´Â ¼öµ¿ ¸ðµåÀÇ ÇÑ ½ÇÇà ¿¹ ÀÌ´Ù.

<¿¹½Ã 2> ¼öµ¿ ¸ðµå ½ÇÇà ¿¹

¶óÀÎ 1: [Shell Prompt] vi hello.tcl

¶óÀÎ 2: set ns [new Simulator]

¶óÀÎ 3: $ns at 1 "puts Hello World!"

¶óÀÎ 4: $ns at 1.5 "exit"

¶óÀÎ 5: $ns run

¶óÀÎ 6: ns hello.tcl

¶óÀÎ 7: Hello World!

¶óÀÎ 8: [Shell Prompt]

<¿¹½Ã 2>ÀÇ ¶óÀÎ 1¿¡¼­ ¶óÀÎ 5±îÁö´Â ¸ÕÀú vi ¿¡µðÅ͸¦ »ç¿ëÇؼ­ hello.tcl À̶ó´Â ÆÄÀÏÀ» ¸¸µå´Â °úÁ¤À» º¸ÀÌ°í ÀÖ´Ù. Áï, set ¸í·É¾î·Î º¯¼ö ns¸¦ new Simulator·Î »ç¿ëÇÏ°í puts ¸í·É¾î·Î ¡°Hello World!¡± ¹®ÀÚ ½ºÆ®¸µÀ» È­¸é¿¡ Ãâ·ÂÇÏ´Â ¿¹¸¦ º¸ÀδÙ. ¶óÀÎ 6°ú ¶óÀÎ 7Àº ½ºÅ©¸³Æ® ÆÄÀÏÀÇ ½ÇÇà ¹× ±× °á°ú¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. ¸¸¾à¿¡ ÄÚµùÀÌ À߸øµÇ¾úÀ» °æ¿ì ´ëÈ­ ¸ðµå¿¡¼­´Â ÇÑ ÁÙÀÇ ¸í·É¾î¸¦ º¸³»¸é Áï°¢ÀûÀ¸·Î ¿¡·¯ ¹ß»ý À¯¹«¸¦ ¾Ë ¼ö ÀÖÁö¸¸, ¼öµ¿ ¸ðµå¿¡¼­´Â ¸¶Ä¡ C¾ð¾î¸¦ ÄÄÆÄÀÏ ÇÒ ¶§¿Í °°Àº ÇüÅ·Π¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁØ´Ù.

III. ½Ã¹Ä·¹ÀÌÅÍ ½ºÅ©¸³Æ® ¾ð¾î

1. tcl(Tool Command Language)

tclÀº ¹öŬ¸® ´ëÇп¡ ÀÇÇØ °³¹ßµÈ ½ºÅ©¸³Æ® ¾ð¾î·Î, ¹Ýº¹µÇ´Â ºñ½ÁÇÑ ¾îÇø®ÄÉÀ̼ÇÀÇ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ °í¾ÈµÇ¾ú´Ù. tclÀº ¾îÇø®ÄÉÀ̼ÇÀÇ È®Àå°ú Á¦¾î¸¦ Æí¸®ÇÏ°Ô ÇØÁÖ´Â °£´ÜÇÑ ½ºÅ©¸³Æ® ¾ð¾î·Î, º¯¼ö ¹× Á¦¾î±¸Á¶¿Í °°Àº ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ µµ±¸°¡ µÇ´Â µ¿½Ã¿¡ C ¶óÀ̺귯¸® ÀÎÅÍÆäÀ̽º¸¦ ÅëÇÑ ¾ð¾îÀÇ È®ÀåÀÌ ¸Å¿ì Æí¸®ÇÏ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù.

tclÀÇ °¡Àå ´ëÇ¥ÀûÀÎ È®Àå ¾îÇø®ÄÉÀ̼ÇÀº tk·Î, tk´Â X-WindowÀÇ ÅøŶÀ¸·Î½á C¸¦ ÅëÇÑ º¹ÀâÇÑ °úÁ¤À» °ÅÄ¡Áö ¾Ê°íµµ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ȯ°æÀ» ½±°Ô ±¸ÃàÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡À» °¡Áö°í ÀÖ´Ù. ´ÙÀ½Àº tclÀ» ÀÌ¿ëÇÑ °£´ÜÇÑ ½ºÅ©¸³Æ® ÆÄÀÏÀÇ ÀÛ¼º ¿¹¸¦ º¸ÀδÙ.

<¿¹½Ã 3> tcl ½ºÅ©¸³Æ® ¿¹Á¦

¶óÀÎ 1: proc test {} {

¶óÀÎ 2: set a 43

¶óÀÎ 3: set b 27

¶óÀÎ 4: set c [expr $a + $b]

¶óÀÎ 5: set d [expr [expr $a - $b] * $c]

¶óÀÎ 6: for {set k 0} {$k < 10} {incr k} {

¶óÀÎ 7: if {$k < 5} {

¶óÀÎ 8: puts "k < 5, pow= [expr pow($d, $k)]"

¶óÀÎ 9: } else {

¶óÀÎ10-: puts "k >= 5, mod= [expr $d % $k]"

¶óÀÎ11: }

¶óÀÎ12: }

¶óÀÎ13: }

¶óÀÎ14: test

<¿¹½Ã 3>Àº test¶ó´Â À̸§ÀÇ ÇÁ·Î½ÃÀú¸¦ ¸¸µå´Â ¿¹¸¦ º¸¿©ÁÖ°í Àִµ¥, ÀÌ ÇÁ·Î½ÃÀú°¡ È£ÃâµÆÀ» ¶§ ¼öÇàÇÒ ¸í·É¾îµéÀÌ ¶óÀÎ 2ºÎÅÍ ¶óÀÎ 12±îÁö Á¤ÀǵǾî ÀÖ´Ù. ¶óÀÎ 2, 3¿¡¼­´Â set ¸í·É¾î¸¦ »ç¿ëÇÏ¿© º¯¼ö a¿Í b¿¡ °¢°¢ 43°ú 27À̶ó´Â °ªÀ» ³Ö¾úÀ¸¸ç, ¶óÀÎ 4¿¡¼­´Â ¼öÇÐÀûÀÎ °è»êÀ» ÀǹÌÇÏ´Â ¸í·É¾î exprÀ» »ç¿ëÇؼ­ º¯¼ö a¿Í bÀÇ ¿¬»ê °ªÀ» º¯¼ö c¿¡ ³Ö´Â °úÁ¤À» º¸ÀÌ°í ÀÖ°í, ¶óÀÎ 5µµ °°Àº ¹æ¹ýÀ¸·Î °è»êµÈ °ªÀ» º¯¼ö d¿¡ ³Ö´Â °úÁ¤À» º¸ÀδÙ. ¶óÀÎ 6ÀÇ for¹®¿¡¼­´Â k¸¦ ÃʱⰪ 0, Á¶°Ç½Ä k °ªÀÌ 10º¸´Ù ÀÛÀ» ¶§ kÀÇ °ªÀ» 1¾¿ Áõ°¡ ½ÃÅ°¸ç Á¶°Ç¿¡ ¸Â´Â if ¹®Àå ¶Ç´Â else ¹®ÀåÀ» ¼öÇàÇϵµ·Ï ÇÏ°í ÀÖ´Ù.

ÀÌ ½ºÅ©¸³Æ® ÆÄÀÏÀ» test.tcl¶ó´Â À̸§ÀÇ ÆÄÀÏ·Î ÀúÀåÇÏ¿© À̸¦ ½ÇÇà½ÃÅ°¸é k °ªÀÌ 0¿¡¼­ºÎÅÍ 9±îÁö Áõ°¡ÇÏ´Â °æ¿ì¿¡ ´ëÇØ ¾Æ·¡ <¿¹½Ã 4>¿Í °°ÀÌ º¯¼ö powÀÇ °ªÀÌ È­¸é¿¡ Ãâ·ÂµÇ°Ô µÈ´Ù.

<¿¹½Ã 4> test.tcl ½ºÅ©¸³Æ® ÆÄÀÏÀÇ ½ÇÇà °á°ú

¶óÀÎ 1: k < 5, pow = 1.0

¶óÀÎ 2: k < 5, pow = 1120.0

¶óÀÎ 3: k < 5, pow = 1254400.0

¶óÀÎ 4: k < 5, pow = 1404928000.0

¶óÀÎ 5: k < 5, pow = 1573519360000.0

¶óÀÎ 6: k >= 5, mod = 0

¶óÀÎ 7: k >= 5, mod = 4

¶óÀÎ 8: k >= 5, mod = 0

¶óÀÎ 9: k >= 5, mod = 0

¶óÀÎ10: k >= 5, mod = 4

2. otcl (Object Tool Command Language)

otclÀº MIT¿¡¼­ ±¸ÇöÇÑ Object tclÀ» ¸»ÇÏ´Â °ÍÀ¸·Î Tcl/Tk(X-Window Toolkit)¸¦ ¿ÀºêÁ§Æ® ±â¹Ý ÇÁ·Î±×·¡¹ÖÀ» À§ÇØ È®ÀåÇÑ °ÍÀÌ´Ù. otcl ±¸Á¶ÀÇ Æ¯Â¡Àº tcl°ú °°ÀÌ Ã¶ÀúÇÏ°Ô µ¿ÀûÀ¸·Î È®ÀåÇÒ ¼ö ÀÖµµ·Ï ¼³°èµÇ¾úÀ¸¸ç, ´Ù¸¥ ¾ð¾î¸¦ Æ÷ÇÔÇϱ⠺¸´Ù´Â tcl ¹®¹ý°ú °³³äÀ» ¹ÙÅÁÀ¸·Î °³¹ßµÈ °ÍÀ¸·Î½á °­·ÂÇÑ ¿ÀºêÁ§Æ® ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ¿¡ ºñÇØ °£°áÇÏ°í À̽ÄÀÌ °¡´ÉÇÑ ±¸Á¶¸¦ °®°í ÀÖ´Ù. otcl°ú C++Àº ¸î °¡Áö Â÷ÀÌÁ¡À» º¸ÀÌ°í Àִµ¥ ±× ´ëÇ¥ÀûÀÎ Â÷ÀÌÁ¡Àº ´ÙÀ½°ú °°´Ù.

°¡. Ŭ·¡½º Á¤ÀÇ

C++¿¡¼­´Â ÇϳªÀÇ ´ÜÀÏ Å¬·¡½º¸¦ ¼±¾ðÇÏ´Â ¹Ý¸é otcl¿¡¼­´Â ¿©·¯ °³ÀÇ Å¬·¡½º¸¦ Á¤ÀÇÇÒ ¼ö ÀÖÀ¸¸ç, °¢ ¸Þ¼ÒµåµéÀº instproc°ú ÇÔ²² ¼±¾ðµÇ¾î ÇϳªÀÇ Å¬·¡½º¿¡ ¸Þ¼Òµå·Î¼­ Ãß°¡µÇ°í °¢ ÀνºÅϽº º¯¼ö Á¤ÀÇ´Â set ¶Ç´Â instvarÀ» ÅëÇؼ­ ¸Þ¼Òµå ³»ºÎ¿¡ Á¤ÀǵÊÀ¸·Î½á ÇÑ ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ ÀνºÅϽº º¯¼ö¸¦ Ãß°¡ÇÑ´Ù.

³ª. »ý¼º°ú ¼Ò¸ê

C++¿¡¼­´Â »ý¼ºÀÚ(Constructor)¸¦ »ç¿ëÇÏÁö¸¸ otcl¿¡¼­´Â init instprocÀ» »ç¿ëÇÑ´Ù. C++¿¡¼­ÀÇ ¼Ò¸êÀÚ(destructor) ´ë½Å otcl¿¡¼­´Â destroy instprocÀ» »ç¿ëÇÑ´Ù. »ý¼ºÀÚ/¼Ò¸êÀÚ¿Í´Â ´Þ¸® otclÀÇ init°ú destroy ¸Þ¼ÒµåµéÀº ±âÃÊ Å¬·¡½ºµé°ú ÀÚµ¿À¸·Î °áÇÕµÇÁö ¾Ê´Â´Ù. µû¶ó¼­ ¸í½ÃÀûÀ¸·Î next·Î °áÇÕÇÏ¿©¾ß ÇÑ´Ù.

´Ù. ¸Þ¼ÒµåÀÇ È£Ãâ

C++°ú ´Þ¸® otcl ¸Þ¼ÒµåµéÀº Ç×»ó ¿ÀºêÁ§Æ®¸¦ ÅëÇØ È£ÃâµÈ´Ù. self¶ó´Â À̸§Àº C++¿¡¼­ this¿Í µ¿ÀÏÇÏ¸ç ¸Þ¼Òµå ¸öü ³»ºÎ¿¡¼­ »ç¿ëµÈ´Ù. C++°ú ´Ù¸¥ °Í Áß Çϳª´Â otcl ¸Þ¼ÒµåµéÀº ¸ðµÎ°¡ ¼ø¼ö °¡»óÇÔ¼ö¶ó´Â °ÍÀÌ´Ù.

¶ó. ¸Þ¼Òµå¸¦ ã±â À§ÇÑ next

C++¿¡¼­¿Í °°ÀÌ ¸Þ¼Òµå À̸§À» ÅëÇØ ¼û°ÜÁø ¸Þ¼ÒµåµéÀ» È£ÃâÇÏ´Â ´ë½Å¿¡ otclÀº next¿Í ÇÔ²² »ç¿ëÇϸç next´Â ÀÚµ¿À¸·Î ¼û°ÜÁø ¸Þ¼Òµå¸¦ ã±â À§ÇØ »ó¼Ó ±×·¡ÇÁ¸¦ °Å½½·¯ ¿Ã¶ó°¡¸ç °Ë»öÇÑ´Ù. ÀÌ´Â À̸§¿¡ ÀÇÁ¸ÇÏÁö ¾Ê°í ¸Þ¼ÒµåµéÀÌ °áÇÕÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

¸¶. º¯¼ö Á¢±Ù/°øÀ¯¸¦ À§ÇÑ $class

Static ¸Þ¼Òµå¿Í º¯¼ö »ç¿ëÀ» ÇÇÇϱâ À§ÇØ ÀÌÀüºÎÅÍ »ç¿ëÇÏ´ø static ¹®¹ý°ú otcl¿¡¼­ »ç¿ëÇÏ´Â ¹®¹ýÀº Á¤È®È÷ °°Áö´Â ¾Ê´Ù. Ŭ·¡½º ¿ÀºêÁ§Æ® »óÀÇ º¯¼ö¿¡ ´ëÇÑ Á¢±Ù ¹× °øÀ¯´Â $class¸¦ »ç¿ëÇÏ¸ç ¸Þ¼Òµå¸¦ ÅëÇؼ­¸¸ °¡´ÉÇÏ´Ù. ÀÌ·¯ÇÑ µ¿ÀÛÀº »ó¼ÓµÇ¸ç ¸ÞŸŬ·¡½º¸¦ Æ÷ÇÔÇÏ´Â ÇÁ·Î±×·¥°ú Ŭ·¡½ºµé¿¡¼­ »ó¼ÓµÈ ¸Þ¼ÒµåµéÀ» À§ÇÑ °ÍÀÌ´Ù. ¸¸ÀÏ »ó¼Ó¼ºÀÌ ÇÊ¿äÇÏÁö ¾Ê´Ù¸é proc ¸Þ¼Òµå¸¦ Ŭ·¡½º ¿ÀºêÁ§Æ®¿¡¼­ »ç¿ëÇÑ´Ù.

IV. À̺¥Æ® ½ºÄÉÁì·¯ÀÇ »ý¼º

ns¸¦ ÀÌ¿ëÇÑ ³×Æ®¿öÅ© ½Ã¹Ä·¹À̼ÇÀ» Çϱâ À§Çؼ­´Â ¿ì¼± ½Ã¹Ä·¹ÀÌÅÍ Å¬·¡½º·ÎºÎÅÍ ÀνºÅϽº¸¦ ¾ò¾î¾ß Çϸç Ŭ·¡½ºµé ³»ÀÇ °´Ã¼ ÀνºÅϽº´Â new¿¡ ÀÇÇؼ­ »ý¼ºµÇ°í delete¿¡ ÀÇÇؼ­ Á¦°ÅµÈ´Ù. ns¸¦ ÀÌ¿ëÇÑ ½Ã¹Ä·¹À̼ÇÀº ½ºÄÉÁì·¯ »ý¼º, À̺¥Æ®ÀÇ ½ºÄÉÁ층, ½ºÄÉÁì·¯ ½ÇÇà °úÁ¤À» °ÅÃÄ tcl ½ºÅ©¸³Æ® ÆÄÀÏ·Î ÀúÀåÇÑ ÈÄ¿¡ ns filename.tcl ¸í·ÉÀ» »ç¿ëÇؼ­ ½Ã¹Ä·¹À̼ÇÀÌ ½ÇÇàµÈ´Ù.

1. ½ºÄÉÁì·¯ »ý¼º

ns ½Ã¹Ä·¹À̼ÇÀ» À§Çؼ­ ½Ã¹Ä·¹ÀÌÅÍ Å¬·¡½º·ÎºÎÅÍ °´Ã¼ÀÇ ÀνºÅϽº¸¦ ¾ò´Â ¸í·É Çü½ÄÀº ¡°set ns [new Simulator]¡±¸¦ »ç¿ëÇÑ´Ù. ¸ÕÀú, new¸¦ »ç¿ëÇÏ¿© ½Ã¹Ä·¹ÀÌÅÍ Å¬·¡½º¸¦ »ý¼ºÇÏ°í set ¸í·ÉÀ» »ç¿ëÇÏ¿© »ý¼ºµÈ °´Ã¼ÀÇ ÀνºÅϽº¸¦ ns·Î ¼³Á¤ÇÏ°Ô µÈ´Ù.

2. À̺¥Æ® ½ºÄÉÁ층

½ºÄÉÁì·¯ »ý¼º °úÁ¤¿¡¼­ ½Ã¹Ä·¹ÀÌÅÍ °´Ã¼ÀÇ ÀνºÅϽº¸¦ ¾ò¾ú´Ù¸é ÀÌÁ¦´Â ±× ÀνºÅϽº¸¦ ÀÌ¿ëÇؼ­ ¿©·¯ À̺¥Æ®¸¦ ¼³Á¤ÇÏ°í Å×½ºÆ®ÇÒ ¼ö ÀÖ´Ù. À̺¥Æ® ½ºÄÉÁÙ¸µÀ» ÇÏ´Â ±âº»ÀûÀÎ ¸í·É Çü½ÄÀº ¡°$ns at <time> <event>¡±¸¦ »ç¿ëÇÑ´Ù. ÀÌ ¸í·É¿¡¼­ at <time>Àº ¸í·ÉÀ» ½ÇÇàÇÒ ½Ã°£À» ³ªÅ¸³»¸ç, <event>´Â ÁöÁ¤µÈ ½ÃÁ¡¿¡ ½ÇÇàµÉ ÇÁ·Î½ÃÀú¸¦ °¡¸®Å²´Ù. ÇÁ·Î½ÃÀú´Â ns¿Í tcl ¸í·É¾î¸¦ ÀÌ¿ëÇÏ¿© ±¸¼ºµÇ°Ô µÈ´Ù.

3. ½ºÄÉÁì·¯ ½ÇÇà

½ºÄÉÁì·¯ »ý¼º °úÁ¤¿¡¼­ ½Ã¹Ä·¹ÀÌÅÍÀÇ ÀνºÅϽº¸¦ ¾ò°í À̺¥Æ® ½ºÄÉÁ층 °úÁ¤¿¡¼­ ¼öÇàÇÒ ¸í·ÉÀ» ¾ò¾úÀ¸¸é, ÀÌÁ¦´Â ns¸¦ ½ÇÇàÇϱâ À§ÇÑ ¸í·É¾î ºÎºÐÀ» Ãß°¡Çؼ­ ½Ã¹Ä·¹À̼ÇÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Ù. Áï, ¡°$ns run¡± ¸í·É Çü½ÄÀ» »ç¿ëÇÏ¿© ½Ã¹Ä·¹À̼ÇÀ» ½ÇÇàÇÏ°Ô µÈ´Ù.

V. ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç ¿ä¼Ò

³×Æ®¿öÅ© ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇϱâ À§ÇÑ °¡Àå ÇÙ½ÉÀûÀÎ ºÎºÐÀº ³ëµå(node), ¸µÅ©(link)¿Í Å¥(queue), ±×¸®°í ¿¡ÀÌÀüÆ®(agent)·Î ±¸¼ºµÈ´Ù.

1. ³ëµå(node)

³ëµå´Â ÀÚµ¿ÀûÀ¸·Î °¢°¢ÀÇ ³ëµå¿¡ ´ëÇؼ­ À¯ÀÏÇÑ ÁÖ¼Ò¸¦ ÇÒ´çÇÏ´Â ³ëµå ½Ã¹Ä·¹ÀÌÅÍ ¸Þ¼Òµå¿¡ ÀÇÇؼ­ ¸¸µé¾îÁø´Ù. ³ëµå¸¦ »ý¼ºÇϱâ À§Çؼ­´Â ¾Õ¿¡¼­µµ ¾ð±ÞÇÑ ¹Ù ÀÖ´Â ½Ã¹Ä·¹ÀÌÅÍ Å¬·¡½º·ÎºÎÅÍ ÀνºÅϽº¸¦ ¾ò¾î¾ß ÇÑ´Ù. ´ÙÀ½Àº set ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© n0, n1, n2 ¼¼ °³ÀÇ ³ëµå¸¦ »ý¼ºÇÏ´Â °ÍÀ» º¸¿© ÁÖ¸ç, À̶§ °¢ ³ëµåÀÇ ÁÖ¼Ò´Â ¼­·Î ´Ù¸¥ °íÀ¯ÇÑ ÁÖ¼Ò¸¦ »ç¿ëÇÑ´Ù.

- set n0 [$ns node]

- set n1 [$ns node]

- set n2 [$ns node]

2. ¸µÅ©(link)¿Í Å¥(queue)

°¡. ´Ü¹æÇâ ¸µÅ©(Simplex Link)

´Ü¹æÇâ ¸µÅ©´Â ÇÑÂÊ ¹æÇâÀ¸·Î¸¸ µ¥ÀÌÅ͸¦ º¸³¾ ¼ö ÀÖ´Â ¸µÅ©ÀÇ ÇüÅ·Πns ¸í·É°ú ¿É¼Ç¿¡ ÀÇÇؼ­ ´ë¿ªÆø, Àü¼ÛÁö¿¬, ¸µÅ©ÀÇ Å¥ ÇüÅ°¡ °áÁ¤µÈ´Ù. ³ëµå »çÀÌ¿¡ ÀÓÀÇÀÇ ´ë¿ªÆø°ú Àü¼ÛÁö¿¬, ±×¸®°í ÇØ´ç ¸µÅ©ÀÇ Å¥ ÇüŸ¦ °áÁ¤ÇÏ´Â ns ¸í·É¾î´Â ´ÙÀ½°ú °°Àº ÇüŸ¦ °®´Â´Ù.

- $ns simplex-link node1 node2 bw delay queue_type

À§ ¸í·ÉÀº node1°ú node2»çÀÌ¿¡ ´ë¿ªÆø bw, Àü¼ÛÁö¿¬ delay, Å¥´Â queue_type¿¡ ÀÇÇؼ­ ¼±ÅõǴ ť(queue)ÀÇ ÇüŸ¦ °®´Â ´Ü¹æÇâ ¸µÅ©¸¦ »ý¼ºÇϵµ·Ï ÇÑ´Ù. Queue_type¿¡ ÀÇÇØ Á¤ÀÇµÉ ¼ö Àִ ť ÇüÅ·δ Drop-Tail, RED, CBQ, WFQ, SFQµîÀÌ ÀÖÀ¸¸ç, ¾ÕÀÇ Å¥ ÇüÅ¿¡¼­ º¯È­µÈ Å¥µµ »ç¿ëµÈ´Ù. ÀϹÝÀûÀ¸·Î ns ½Ã¹Ä·¹ÀÌÅÍ¿¡´Â °¢ ¿É¼Ç¿¡ ´ëÇÑ µðÆúÆ® °ªÀÌ Á¤ÇØÁ® ÀÖ´Ù. ´ë¿ªÆøÀÇ µðÆúÆ® °ªÀº 1.5Mbits/sec·Î Á¤ÀǵǾî ÀÖ°í ½Ã°£Áö¿¬ÀÇ µðÆúÆ® °ªÀº 100ms·Î Á¤ÇØÁ® ÀÖÁö¸¸, ÀÌ·¯ÇÑ ¿É¼ÇÀº »ç¿ëÀÚ°¡ ¿øÇÏ´Â °ªÀ¸·Î º¯È­½ÃÄÑ »ç¿ëÇÒ ¼ö ÀÖ´Ù. (±×¸² 1)Àº ³ëµå n0¿Í ³ëµå n1 »çÀÌ¿¡ ´ë¿ªÆøÀÌ 8Mbps, Àü¼ÛÁö¿¬ÀÌ 0.1ms, ±×¸®°í drop-tail Å¥ ÇüŸ¦ °®´Â ´Ü¹æÇâ ¸µÅ©¸¦ ¼³Á¤ÇÏ´Â ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.

³ª. ¾ç¹æÇâ ¸µÅ©(Duplex Link)

ÇÑÂÊ ¹æÇâÀ¸·Î¸¸ µ¥ÀÌÅ͸¦ º¸³¾ ¼ö ÀÖ´Â ´Ü¹æÇâ ¸µÅ©¿Í´Â ´Þ¸® ¾çÂÊ ¹æÇâÀ¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖ´Â ¸µÅ©¸¦ ¾ç¹æÇâ ¸µÅ©¶ó°í Á¤ÀÇÇÑ´Ù. ¸µÅ© Ư¼ºÀ» Á¤ÀÇÇϱâ À§ÇØ »ç¿ëµÇ´Â ¿É¼ÇÀº ´Ü¹æÇâ ¸µÅ©¿¡¼­¿Í °°´Ù. ¾ç¹æÇâ ¸µÅ©¸¦ Á¤ÀÇÇϱâ À§ÇØ »ç¿ëµÇ´Â ¸í·É¾î´Â ´ÙÀ½°ú °°´Ù.

- $ns duplex-link node1 node2 bw delay queue_type

À§ ¸í·ÉÀº node1°ú node2»çÀÌ¿¡ ´ë¿ªÆø bw, Àü¼ÛÁö¿¬ delay, Å¥´Â queue_type¿¡ ÀÇÇؼ­ ¼±ÅõǴ ť ÇüŸ¦ °®´Â ¾ç¹æÇâ ¸µÅ©¸¦ »ý¼ºÇϵµ·Ï ÇÑ´Ù. °¢ ¿É¼Ç¿¡ ´ëÇÑ µðÆúÆ® °ª°ú Å¥ ÇüÅ´ ´Ü¹æÇâ ¸µÅ©ÀÇ °æ¿ì¿Í µ¿ÀÏÇÏ´Ù. (±×¸² 2)´Â ³ëµå r0¿Í ³ëµå r1 »çÀÌ¿¡ ´ë¿ªÆøÀÌ 800Kbps, Àü¼ÛÁö¿¬ÀÌ 100ms, ±×¸®°í drop-tail Å¥ ÇüŸ¦ °®´Â ¾ç¹æÇâ ¸µÅ©¸¦ ¼³Á¤ÇÏ´Â ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.

3. ¿¡ÀÌÀüÆ®(Agent)

¿¡ÀÌÀüÆ®´Â ½Ã¹Ä·¹À̼ǿ¡¼­ ÇൿÀ» À̲ø¾î ³¾ ¼ö ÀÖ´Â °´Ã¼¸¦ ¸»ÇÑ´Ù. Á¾´Ü¿¡ ¹°·ÁÀÖ´Â ´Ü¸»À̳ª ¶ó¿ìÅÍ·Î °£ÁֵǴ ³ëµå¿¡¼­ À̵¿ÇÒ ¼ö ÀÖ´Â ½ÇüÀ̸ç, ±× ½Çü¿¡ Ư¼ºÀ» ¾î¶»°Ô ºÎ¿©Çϴ°¡¿¡ µû¶ó ¿¡ÀÌÀüÆ®ÀÇ ÇൿÀÌ ´Þ¶óÁø´Ù. ns-2 ½Ã¹Ä·¹ÀÌÅÍ¿¡¼­´Â ±âº»ÀûÀÎ ¿¡ÀÌÀüÆ® ŸÀÔÀ» Á¦°øÇÏ°í ÀÖ´Ù. ¿¡ÀÌÀüÆ®´Â ¡°new Agent/type¡± ¸í·É Çü½ÄÀ» »ç¿ëÇÏ¿© »ý¼ºµÈ´Ù. ¿¡ÀÌÀüÆ®ÀÇ ±â´ÉÀº typeÀÇ Á¤ÀÇ¿¡ µû¶ó º¯È­µÈ´Ù. <Ç¥ 1>Àº ÇöÀç ns-2¿¡ Á¤ÀǵǾî ÀÖ´Â Agent typeÀÇ Á¾·ù¸¦ ³ªÅ¸³½´Ù.

VI. ¿¡ÀÌÀüÆ®¿Í ³ëµåÀÇ Á¢¼Ó ¹× ¿¬°á ¼³Á¤

³ëµå ¸Þ¼Òµå¿¡ ÀÇÇؼ­ »ý¼ºµÈ ³ëµå´Â ´ÜÁö ³ëµå ÀÚüÀÏ »Ó ¾î¶² ¿ªÇÒµµ ÇÒ ¼ö ¾ø´Ù. µû¶ó¼­ ³ëµå¿¡ Àû´çÇÑ ¿¡ÀÌÀüÆ®¸¦ ºÙ¿©ÁÖ¾î¾ß ³ëµå¿¡¼­ »ç¿ëÀÚµéÀÌ ¿øÇÏ´Â ±â´ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ÀÌ Àå¿¡¼­´Â ¾Õ¿¡¼­ ¼³¸íÇÑ ¹æ¹ýÀ¸·Î ³ëµå¸¦ »ý¼ºÇß´Ù¸é ÀÌÁ¦´Â ¾î¶»°Ô ³ëµå¿¡¼­ UDP³ª TCP ÆÐŶ, ±×¸®°í À̵é ÆÐŶ¿¡ ´ëÇÑ ÀÀ´ä ÆÐŶÀ» ¼Û¼ö½ÅÇÏ´ÂÁö ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.

1. UDP(User Datagram Protocol)

UDP´Â ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î µ¥ÀÌÅͱ׷¥À» Àü¼ÛÇÏ´Â ±âº»ÀûÀÎ ¸ÞÄ«´ÏÁòÀ» Á¦°øÇÑ´Ù. ¶ÇÇÑ, UDP´Â ÇÑ È£½ºÆ® ¾È¿¡¼­ µ¹¾Æ°¡´Â ÀÀ¿ë ÇÁ·Î±×·¥µéÀ» ±¸ºÐÇϴµ¥ ¾²ÀÌ´Â ÇÁ·ÎÅäÄÝ Æ÷Æ®¸¦ Á¦°øÇÑ´Ù. ÀÌ´Â ÇÑ È£½ºÆ® ¾ÈÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ È£½ºÆ® ¾ÈÀÇ Æ¯Á¤ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. UDP´Â ½Å·Ú¼ºÀÌ º¸ÀåµÇÁö ¾Ê´Â ºñ¿¬°áÇü µ¥ÀÌÅͱ׷¥ Àü¼Û ¼­ºñ½º¸¦ Á¦°øÇÑ´Ù. µû¶ó¼­, UDP ¸Þ½ÃÁö´Â ¼Õ½ÇµÉ ¼ö ÀÖ°í, Áߺ¹µÉ ¼öµµ ÀÖÀ¸¸ç, ¼ø¼­°¡ µÚ¹Ù²î¾î µµÂøÇÒ ¼öµµ ÀÖ´Ù. ±×¸®°í ÆÐŶµéÀÌ ¼ö½ÅÀÚ°¡ ó¸®ÇÒ ¼ö ÀÖ´Â ¾çº¸´Ù ´õ »¡¸® µµÂøÇÒ ¼öµµ ÀÖ´Ù.

UDP ¿¡ÀÌÀüÆ®´Â Agent/UDP¿Í Agent/NULLÀ» ½ÖÀ¸·Î ¼³Á¤Çؾ߸¸ ÇÑ´Ù. ÀϹÝÀûÀ¸·Î UDP ÆÐŶÀ» »ý¼ºÇÏ´Â °÷À» ±Ù¿øÁö¶ó Çϸç NULL ÆÐŶÀ» »ý¼ºÇÏ´Â °÷À» ¸ñÀûÁö¶ó ÇÑ´Ù. <¿¹½Ã 5>ÀÇ ¶óÀÎ1Àº UDP ÆÐŶÀ» »ý¼ºÇÒ ¼ö ÀÖ´Â °´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ¸·Î, Å°¿öµå new¸¦ »ç¿ëÇؼ­ UDP ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÏ°í set ¸í·É¾î¸¦ ÀÌ¿ëÇؼ­ »õ·Î »ý¼ºµÈ °´Ã¼¸¦ º¯¼ö udp·Î ÁöÁ¤ÇÑ´Ù. ¶óÀÎ2¿¡¼­´Â UDP ÆÐŶÀ» ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â °´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» º¸ÀÌ°í ÀÖ´Ù. ¸¶Âù°¡Áö·Î ¿¡ÀÌÀüÆ®ÀÇ »õ·Î¿î °´Ã¼¸¦ »ý¼ºÇϱâ À§ÇØ new ¸í·ÉÀ» »ç¿ëÇؼ­ NULL ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÑ ÈÄ¿¡ set ¸í·É¾î·Î »ý¼ºµÈ °´Ã¼¸¦ º¯¼ö null·Î ÁöÁ¤ÇÑ´Ù.

ÀÌ¿Í °°ÀÌ UDP¿Í NULL ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇß´Ù¸é ÀÌÁ¦´Â ¿øÇÏ´Â ±Ù¿øÁö ³ëµå¿Í ¸ñÀûÁö ³ëµå¿¡ ÀÌµé ¿¡ÀÌÀüÆ®¸¦ Á¢¼Ó ½ÃÄÑ¾ß ÇÑ´Ù. ³ëµå¿Í ¿¡ÀÌÀüÆ®¸¦ Á¢¼Ó ½ÃÅ°°íÀÚ ÇÒ ¶§´Â ¡°$ns attach-agent node agent¡± ¸í·É¾î Çü½ÄÀ» »ç¿ëÇÑ´Ù. ÀÌ ¸í·É Çü½ÄÀº ÀÌ¹Ì Á¤ÀÇµÈ agent º¯¼ö¸¦ node º¯¼ö¿¡ Á¢¼Ó½ÃÅ°´Â °ÍÀ» ÀǹÌÇÑ´Ù. <¿¹½Ã 5>ÀÇ ¶óÀÎ3Àº ÀÌ¹Ì »ý¼ºµÈ ³ëµå n0¿Í UDP ¿¡ÀÌÀüÆ®¸¦, ±×¸®°í ¶óÀÎ 4´Â ³ëµå n1°ú NULL ¿¡ÀÌÀüÆ®¸¦ Á¢¼Ó½ÃÅ°´Â °ÍÀ» º¸¿© ÁÖ°í ÀÖ´Ù.

°¢ ¿¡ÀÌÀüÆ®¸¦ ³ëµå¿¡ Á¢¼Ó½ÃÄ×À¸¸é ´ÙÀ½ ´Ü°è´Â ¿¡ÀÌÀüÆ® °£¿¡ ¿¬°áÀ» ¼³Á¤ÇÏ´Â ÀýÂ÷°¡ ÇÊ¿äÇÏ´Ù. ±Ù¿øÁö ¿¡ÀÌÀüÆ®¿Í ¸ñÀûÁö ¿¡ÀÌÀüÆ® °£À» ¿¬°á ½ÃÅ°°íÀÚ ÇÒ ¶§´Â ¡°$ns connect src dst¡± ¸í·É¾î Çü½ÄÀ» »ç¿ëÇÑ´Ù. ÀÌ ¸í·É Çü½ÄÀº ÀÌ¹Ì ³ëµå¿¡ Á¢¼ÓµÈ ¿¡ÀÌÀüÆ® µéÀ» »óÈ£ ¿¬°á½ÃÄÑ ¿¡ÀÌÀüÆ® °£ µ¥ÀÌÅÍ Àü¼ÛÀÌ °¡´ÉÇÏ°Ô ÇÑ´Ù. <¿¹½Ã 5>ÀÇ ¶óÀÎ 5´Â ±Ù¿øÁö ¿¡ÀÌÀüÆ®ÀÎ UDP ¿¡ÀÌÀüÆ®¿Í ¸ñÀûÁö ¿¡ÀÌÀüÆ®ÀÎ NULL ¿¡ÀÌÀüÆ® °£¿¡ ¿¬°áÀ» ¼³Á¤ÇÏ´Â °ÍÀ» º¸¿©ÁÖ°í ÀÖ´Ù.

<¿¹½Ã 5> UDP AgentÀÇ »ý¼º, Á¢¼Ó ¹× ¿¬°á¼³Á¤

¶óÀÎ 1: set udp [new Agent/UDP]

¶óÀÎ 2: set null [new Agent/NULL]

¶óÀÎ 3: $ns attach-agent $n0 $udp

¶óÀÎ 4: $ns attach-agent $n1 $null

¶óÀÎ 5: $ns connect $udp $null

2. TCP(Transmission Control Protocol)

TCP´Â ÀÎÅÍ³Ý È£½ºÆ® °£¿¡ ½Å·Ú¼ºÀÌ º¸ÀåµÇ´Â µ¥ÀÌÅÍ Àü¼Û¼­ºñ½º¸¦ Á¦°øÇÏ´Â Á¾´Ü°£ Àü¼Û ÇÁ·ÎÅäÄÝÀÌ´Ù. ns-2¿¡¼­ TCP Àü¼Û ½Ã¹Ä·¹À̼ÇÀ» Çϱâ À§Çؼ­´Â Agent/TCP¿Í Agent/ TCPSink¸¦ ½ÖÀ¸·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù. ÀϹÝÀûÀ¸·Î TCP ÆÐŶÀ» »ý¼ºÇÏ´Â ¿¡ÀÌÀüÆ®¸¦ ±Ù¿øÁö¶ó Çϸç TCP ÆÐŶÀ» ¼ö½ÅÇÏ´Â ¿¡ÀÌÀüÆ®¸¦ ¸ñÀûÁö¶ó ÇÑ´Ù. ¸ñÀûÁö TCP ¿¡ÀÌÀüÆ®·Î »ç¿ëµÇ´Â TCPSink ¿¡ÀÌÀüÆ®´Â ±Ù¿øÁö TCP ¿¡ÀÌÀüÆ®¿¡¼­ Àü¼ÛµÇ´Â TCP ÆÐŶ¿¡ ´ëÇÑ È®ÀÎ ÀÀ´äÀÎ ACK ÆÐŶÀ» »ý¼ºÇØ º¸³»´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. TCP ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÏ´Â ¹æ¹ý°ú, »ý¼ºµÈ ¿¡ÀÌÀüÆ®¸¦ ³ëµå¿¡ Á¢¼Ó½ÃÅ°´Â ¹æ¹ý, ±×¸®°í ¿¡ÀÌÀüÆ® °£¿¡ ¿¬°áÀ» ¼³Á¤ÇÏ´Â ¹æ¹ýÀº ¾Õ¼­ ¼³¸íÇÑ UDPÀÇ °æ¿ì¿Í µ¿ÀÏÇÏ´Ù.

TCP ¿¡ÀÌÀüÆ®´Â TCP¿¡ ´ëÇÑ Agent/Type¿¡ µû¶ó Tahoe TCP, Reno TCP, Vegas TCPµîÀ» ÁöÁ¤ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, typeÀ» TCP·Î ÁöÁ¤Çϸé ÀϹÝÀûÀ¸·Î »ç¿ëµÇ°í ÀÖ´Â Tahoe TCP°¡ ¼±ÅõȴÙ. <¿¹½Ã 6>Àº TCP ¿¡ÀÌÀüÆ®ÀÇ »ý¼º, ³ëµå¿Í ¿¡ÀÌÀüÆ®ÀÇ Á¢¼Ó, ±×¸®°í TCP ¿¡ÀÌÀüÆ®°£¿¡ ¿¬°áÀ» ¼³Á¤ÇÏ´Â ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. ¶óÀÎ 1¿¡¼­´Â TCP ÆÐŶÀ» »ý¼ºÇÒ ±Ù¿øÁö ¿¡ÀÌÀüÆ®·Î½áTahoe TCP ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÏ¿© º¯¼ö tcp·Î ÁöÁ¤ÇÏ°í, ¶óÀÎ 2¿¡¼­´Â TCP ÆÐŶÀ» ¼ö½ÅÇÒ ¸ñÀûÁö ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÏ¿© º¯¼ö tcpsink·Î ÁöÁ¤ÇÏ°í ÀÖ´Ù. ¶óÀÎ 3°ú 4¿¡¼­´Â ÀÌ¹Ì ¼³Á¤µÈ ³ëµå n0¿¡ ±Ù¿øÁö TCP ¿¡ÀÌÀüÆ®¸¦, ±×¸®°í ³ëµå n1¿¡ ¸ñÀûÁö TCP ¿¡ÀÌÀüÆ®¸¦ Á¢¼Ó½ÃÅ°´Â °ÍÀ» º¸¿©ÁÖ°í ÀÖ´Ù. ±×¸®°í ¶óÀÎ 5¿¡¼­´Â ±Ù¿øÁö TCP ¿¡ÀÌÀüÆ®¿Í ¸ñÀûÁö TCP ¿¡ÀÌÀüÆ®°£¿¡ ¿¬°áÀ» ¼³Á¤ÇÏ´Â °ÍÀ» º¸¿©ÁÖ°í ÀÖ´Ù.

<¿¹½Ã 6> TCP AgentÀÇ »ý¼º, Á¢¼Ó ¹× ¿¬°á¼³Á¤

¶óÀÎ 1: set tcp [new Agent/TCP]

¶óÀÎ 2: set tcpsink [new Agent/TCPSink]

¶óÀÎ 3: $ns attach-agent $n0 $tcp

¶óÀÎ 4: $ns attach-agent $n1 $tcpsink

¶óÀÎ 5: $ns connect $tcp $tcpsink

VII. µ¥ÀÌÅÍ Àü¼Û(Transport)

¾Õ¿¡¼­ ³ëµå¿Í UDP ¹× TCP ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÏ°í, °¢ ¿¡ÀÌÀüÆ®¸¦ ³ëµå¿¡ Á¢¼Ó½ÃŲ ´ÙÀ½, ±Ù¿øÁö¿Í ¸ñÀûÁö ¿¡ÀÌÀüÆ® °£¿¡ ¿¬°áÀ» ¼³Á¤ÇÏ´Â °úÁ¤À» ¼³¸íÇÏ¿´´Ù. ¿©±â¼­´Â ÀÎÅÍ³Ý ÀÀ¿ë ÇÁ·ÎÅäÄÝÀÎ FTP¿Í Telnet ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÏ¿© À̵éÀ» UDP ¹× TCP ¿¡ÀÌÀüÆ®¿Í Á¢¼Ó½ÃÄÑ ÀÀ¿ë ¿¡ÀÌÀüÆ® °£¿¡ µ¥ÀÌÅÍ Àü¼ÛÀ» °¡´ÉÇÏ°Ô ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.

<¿¹½Ã 7>Àº ÀÎÅÍ³Ý ÆÄÀÏÀü¼Û ÇÁ·ÎÅäÄÝÀÎ FTP ÀÀ¿ëÀ» ÀÌ¹Ì »ý¼ºµÈ TCP ¿¡ÀÌÀüÆ®¿¡ Á¢¼Ó½ÃÄÑ FTP ÀÀ¿ëÀÌ TCP ¿¡ÀÌÀüÆ®¸¦ ÅëÇØ ¿¬°áÀÌ ¼³Á¤µÈ ´Ù¸¥ ¸ñÀûÁö TCP ¿¡ÀÌÀüÆ®·Î µ¥ÀÌÅÍ Àü¼ÛÀÌ °¡´ÉÇÏ°Ô ÇÏ´Â ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. <¿¹½Ã 8>Àº ÀÎÅÍ³Ý Telnet ÀÀ¿ëÀ» ÀÌ¹Ì »ý¼ºµÈ TCP ¿¡ÀÌÀüÆ®¿¡ Á¢¼Ó½ÃÄÑ Telnet ÀÀ¿ëÀÌ TCP ¿¡ÀÌÀüÆ®¸¦ ÅëÇØ µ¥ÀÌÅÍ Àü¼ÛÀÌ °¡´ÉÇÏ°Ô ÇÏ´Â ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.

<¿¹½Ã 7> FTP µ¥ÀÌÅÍ Àü¼Û

¶óÀÎ 1: set ftp [new Application/FTP]

¶óÀÎ 2: $ftp attach-agent $tcp

<¿¹½Ã 8> Telnet µ¥ÀÌÅÍ Àü¼Û

¶óÀÎ 1: set telnet [new Application/Telnet]

¶óÀÎ 2: $telnet attach-agent $tcp

VIII. ¿¡·¯ ¸ðµâÀÇ »ý¼º ¹× »ðÀÔ

ns-2´Â µ¥ÀÌÅÍ ÆÐŶÀ» Àü¼ÛÇÒ ¶§ ÀÓÀÇÀûÀ¸·Î ¿¡·¯¸¦ »ý¼ºÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ¿¡·¯ ¸ðµâÀº µÎ °³ÀÇ otcl ¸Þ¼Òµå¿¡ ÀÇÇؼ­ Á¦°øµÇ¸ç, ÀÌ ¸Þ¼ÒµåµéÀº ns/tcl/lib/ns-lib.tcl¿¡ Á¤ÀÇ µÇ¾îÀÖ´Ù.

¿¡·¯ ¸ðµâÀº <¿¹½Ã 9>¿Í °°ÀÌ »ý¼ºµÉ ¼ö ÀÖ´Ù. ¶óÀÎ 1¿¡¼­´Â ¿¡·¯¿¡ ´ëÇÑ °´Ã¼¸¦ »ý¼ºÇؼ­ À̸¦ º¯¼ö loss_module·Î ÁöÁ¤ÇÑ´Ù. ¶óÀÎ 2, 3, 4´Â »ý¼ºµÈ ¿¡·¯¿¡ ´ëÇÑ Æ¯¼ºÀ» ºÎ¿©ÇÏ´Â ¹æ¹ýÀ» ±â¼úÇÑ´Ù. Áï, ¶óÀÎ2¿¡¼­´Â ¿¡·¯À²À» 0.01·Î ÁöÁ¤Çߴµ¥ ÀÌ´Â 1 ÆÛ¼¾Æ®ÀÇ ÆÐŶ ¿¡·¯¸¦ ¹ß»ý½ÃÅ´À» ÀǹÌÇÑ´Ù. ¶óÀÎ3Àº ¿¡·¯ ´ÜÀ§¸¦ ÆÐŶÀ¸·Î ³ªÅ¸³»´Âµ¥ ÀÌ´Â ¿¡·¯ ´ÜÀ§¸¦ Ç¥½ÃÇÏ´Â µðÆúÆ® °ªÀÌ´Ù. ¶óÀÎ 4´Â Uniform ºÐÆ÷ Ư¼ºÀ» °®´Â ¿¡·¯ »ý¼ºÀ» ÁöÁ¤ÇÏ´Â °ÍÀ» º¸¿©ÁÖ°í ÀÖ´Ù.

<¿¹½Ã 9> ¿¡·¯ ¸ðµâÀÇ »ý¼º

¶óÀÎ 1: set loss_module [new ErrorModel]

¶óÀÎ 2: $loss_module set rate 0.01

¶óÀÎ 3: $loss_module unit pkt

¶óÀÎ 4: $loss_module ranvar [new Random Variable/Uniform]

»ý¼ºµÈ ¿¡·¯ ¸ðµâÀº ¡°$ns lossmodel em src dst¡± ¸í·É Çü½ÄÀ» »ç¿ëÇÏ¿© ¿øÇÏ´Â ³ëµå »çÀÌ¿¡ »ðÀÔ½Ãų ¼ö ÀÖ´Ù. Áï, ±Ù¿øÁö ³ëµå src¿Í ¸ñÀûÁö ³ëµå dst »çÀÌ¿¡ Àü¼ÛµÇ´Â ÆÐŶ¿¡ ´ëÇØ ¿¡·¯ ¸ðµâ »ý¼º °úÁ¤À» °ÅÃÄ »ý¼ºµÈ ¿¡·¯¸ðµâ emÀ» »ðÀÔÇϵµ·Ï ÇÑ´Ù. ¾Æ·¡ ¸í·É Çü½ÄÀº ¿¡·¯ ¸ðµâÀÇ »ðÀÔ ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. ÀÌ ¸í·ÉÀº À§¿¡¼­ »ý¼ºµÈ ¿¡·¯ ¸ðµâÀÎ loss_moduleÀ» ³ëµå n0¿Í ³ëµå n1 »çÀÌ¿¡ »ðÀÔÇϵµ·Ï ÇÏ°í ÀÖ´Ù.

- $ns lossmodel $loss_module $n0 $n1

IX. ½Ã¹Ä·¹ÀÌ¼Ç °á°ú ÃßÀû ¹× Ç¥½Ã

1. ÃßÀûÆÄÀÏ »ý¼º

ns-2´Â ³×Æ®¿öÅ© ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇÏ´Â µ¿¾È¿¡ ³ëµå°£À» ¿¬°áÇÏ°í ÀÖ´Â ¸ðµç ¸µÅ©µéÀÇ »óŸ¦ Á¶»çÇؼ­ ¸µÅ©»óÀÇ ÆÐŶ ¿òÁ÷ÀÓÀ» ½Ã°£¿¡ ´ëÇØ ¼øÂ÷ÀûÀ¸·Î ÆÄÀÏ¿¡ ±â·ÏÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. <¿¹½Ã 10>Àº ½ºÅ©¸³Æ® ¾ð¾î¸¦ ÀÌ¿ëÇÏ¿© ±¸¼ºµÈ ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç ¸ðµ¨ÀÇ ½ÇÇà °á°ú¸¦ out.trÀ̶ó´Â À̸§À¸·Î ÃßÀû ÆÄÀÏÀ» ¸¸µé°í, ÀÌ ÆÄÀÏ¿¡ ¸ðµç ¸µÅ©¸¦ µû¶ó À̵¿ÇÏ´Â ÆÐŶÀÇ È帧À» ±â·ÏÇÏ°Ô ÇÏ´Â ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. <¿¹½Ã 10>ÀÇ ¶óÀÎ1¿¡¼­´Â ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ¿´°í, ¶óÀÎ2¿¡¼­´Â ns ¸í·É¾îÀÎ ¡°trace-all¡±À» »ç¿ëÇÏ¿© ½Ã¹Ä·¹À̼ÇÀ» ½ÇÇàÇÏ´Â µ¿¾È¿¡ ÆÐŶÀÌ ÇÑ ³ëµå¿¡¼­ ¾î¶² ¸µÅ©¸¦ µû¶ó ´Ù¸¥ ³ëµå·Î ÇâÇÏ°íÀÖ´ÂÁö¸¦ ±â·ÏÇϵµ·Ï ÇÏ°í ÀÖ´Ù.

<¿¹½Ã 10> ¸ðµç ¸µÅ©»óÀÇ ÆÐŶÈ帧 ÃßÀû

¶óÀÎ 1: set f [open out.tr w]

¶óÀÎ 2: $ns trace-all $f

ÀϹÝÀûÀ¸·Î ÃßÀû ÆÄÀÏ¿¡´Â ³×Æ®¿öÅ© ½Ã¹Ä·¹À̼ÇÀÇ ½ÃÀÛºÎÅÍ Á¾·á ½Ã±îÁö ½Ã¹Ä·¹ÀÌ¼Ç Áß ÀϾ´Â ÆÐŶÀÇ ¿òÁ÷ÀÓÀÌ ¸ðµÎ ±â·ÏµÇ±â ¶§¹®¿¡ »ó´çÈ÷ ¸¹Àº ¾çÀÇ Á¤º¸°¡ ±â·ÏµÇ°Ô µÈ´Ù. ¾Æ·¡ <Ç¥ 2>´Â ÇÑ ¿¹·Î½á out.tr ÃßÀûÆÄÀÏ¿¡ ±â·ÏµÈ ³»¿ëÀÇ ÀϺθ¦ º¸¿© ÁÖ°í ÀÖ´Ù. ÀÌ Ç¥¿¡¼­ event¿¡ Ç¥½ÃµÇ¾î ÀÖ´Â +´Â µé¾î¿À´Â ÆÐŶ, -´Â ³ª°¡´Â ÆÐŶÀ» ÀǹÌÇÏ°í, rÀº ÆÐŶÀÌ ´Ù¸¥ ³ëµå¿¡ µµÂøÇß´Ù´Â Àǹ̷Π»ç¿ëµÇ°í ÀÖ´Ù. µå·ÓµÈ ÆÐŶ¿¡ ´ëÇؼ­´Â ÀÌ Ç¥¿¡´Â Ç¥½ÃµÇ¾î ÀÖÁö ¾ÊÁö¸¸ µå·ÓÀº d·Î Ç¥½ÃµÇ¸ç ÀÌ´Â ÀÒ¾î¹ö¸° ÆÐŶÀ» ÀǹÌÇÑ´Ù. timeÀº ÆÐŶÀÇ À̵¿½Ã°£À» Ç¥½ÃÇÏ°í from/to ´Â ÆÐŶÀÇ À̵¿ °æ·Î¸¦ ³ªÅ¸³½´Ù. pkt´Â ÇöÀç À̵¿ÇÏ´Â ÆÐŶ Á¾·ù°¡ TCP, UDP, CBRµîÀÎÁö¸¦ Ç¥½ÃÇϸç, size´Â ÇÑ ÆÐŶÀÇ Å©±â¸¦ ³ªÅ¸³½´Ù. ¶óÀÎ 1Àº ³ëµå 2¿¡ ¸ñÀûÁö°¡ ³ëµå 3ÀÎ 1000¹ÙÀÌÆ® Å©±â¸¦ °®´Â ÆÐŶÀÌ µµÂøÇßÀ½À» ³ªÅ¸³»°í ÀÖ´Ù. ¶óÀÎ 2´Â ³ëµå 2¸¦ ¶°³ª ³ëµå 3À¸·Î ÇâÇÏ´Â ÆÐŶ »óÅ¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ°í, ¶óÀÎ 3Àº ³ëµå 2¸¦ ¶°³­ ÆÐŶÀÌ ³ëµå 3¿¡ µµ´ÞÇßÀ½À» ³ªÅ¸³½´Ù. ¶óÀÎ 1°ú ¶óÀÎ 2´Â ³ëµå 2 ³»ºÎ¿¡¼­ ¼öÇàµÇ´Â °úÁ¤À̹ǷΠÀÌ µÎ À̺¥Æ®ÀÇ ½ÇÇà ½Ã°£ÀÌ Â÷ÀÌ°¡ ¾ø°Ô µÇ¾úÀ¸³ª, ¶óÀÎ 2¿Í ¶óÀÎ 3ÀÇ °æ¿ì¿¡´Â ÆÐŶÀÌ ³ëµå2¿¡¼­ ³ëµå3À¸·Î Àü´ÞµÇ´Â °æ¿ì À̹ǷΠÀÌ µÎ À̺¥Æ® »çÀÌÀÇ ½ÇÇà ½Ã°£ÀÌ Â÷ÀÌ°¡ ³²À» ¾Ë ¼ö ÀÖ´Ù.

2. ½Ã¹Ä·¹ÀÌ¼Ç °á°úÀÇ ½Ã°¢Àû Ç¥Çö

½Ã¹Ä·¹ÀÌÅÍ ¼öÇà °á°ú »ý¼ºµÇ´Â ÃßÀû ÆÄÀÏÀ» ºÐ¼®ÇØ º¸¸é À̺¥Æ®ÀÇ ¹ß»ý°ú ÆÐŶ È帧 Á¤º¸ µîÀ» ¾Ë ¼ö ÀÖÁö¸¸ ÀÌ·¯ÇÑ ÃßÀû ÆÄÀÏ ºÐ¼®À» ÅëÇØ ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ ÀÌÇØÇÏ´Â °ÍÀº »ó´çÈ÷ ºÒÆíÇÑ ÀÏÀÌ´Ù. µû¶ó¼­ ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ ÀÚµ¿À¸·Î ºÐ¼®ÇÏ¿© ±× °á°ú¸¦ ½Ã°¢ÀûÀ¸·Î È­¸é¿¡ Ç¥ÇöÇÏ´Â µµ±¸°¡ °³¹ßµÇ¾î Á¦°øµÇ°í Àִµ¥, ns-2¿Í ÇÔ²² »ç¿ëµÇ´Â ´ëÇ¥ÀûÀÎ µµ±¸¿¡´Â nam(Network Animator)°ú xgraph°¡ ÀÖ´Ù[5].

namÀº ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç µµÁß ¹ß»ýÇÏ´Â »ç°ÇµéÀ» ½Ã°£ Ãà¿¡ ´ëÇØ ±â·ÏÇØ ³õÀº ÆÄÀÏ Á¤º¸¸¦ ºÐ¼®ÇÏ¿© ±× °á°ú¸¦ È­¸é »ó¿¡ ¿¡´Ï¸ÞÀÌ¼Ç ÇüÅ·ΠǥÇöÇÏ´Â ºñÁê¾ó ½Ã¹Ä·¹ÀÌ¼Ç µµ±¸ÀÌ´Ù. Áï, ns¸¦ »ç¿ëÇÏ¿© ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇÑ °á°ú¸¦ ¡°filename.nam¡± ÃßÀû ÆÄÀÏ¿¡ ±â·ÏÇÏ°Ô ÇÑ ÈÄ, ÀÌ ÃßÀû ÆÄÀÏ ³»¿ëÀ» ¿ÀÇÁ¶óÀÎ ÇüÅ·ΠºÐ¼®ÇÏ¿© ±× °á°ú¸¦ ¿¡´Ï¸ÞÀÌ¼Ç ¹æ½ÄÀ¸·Î È­¸é¿¡ ½Ã°¢ÀûÀ¸·Î Ç¥ÇöÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. namÀ» »ç¿ëÇÏ¸é ³×Æ®¿öÅ©¸¦ ±¸¼ºÇÏ´Â ³ëµå¿Í ¸µÅ©¿¡¼­ÀÇ ¼øÂ÷Àû ½Ã°£ º¯È­¿¡ µû¸¥ ÆÐŶ Àü¼Û°ú ACKµîÀÇ ÀÀ´ä ÆÐŶÀÇ ¿òÁ÷ÀÓÀ» ½Ã°¢ÀûÀ¸·Î º¼ ¼ö ÀÖ°Ô µÈ´Ù. <¿¹½Ã 11>Àº ³ëµå¿Í ¸µÅ©¸¦ Åë°úÇÏ´Â ¸ðµç ÆÐŶ¿¡ ´ëÇÑ È帧 Á¤º¸¸¦ nam ºÐ¼®µµ±¸¸¦ ÀÌ¿ëÇÏ¿© °á°ú°ªÀ» Ç¥ÇöÇÏ°íÀÚ ÇÒ ¶§ ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌÅ͸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ°í ÀÖ´Ù.

<¿¹½Ã 11> nam Çü½ÄÀ¸·Î ¸ðµç ¸µÅ©»óÀÇ ÆÐŶ È帧À» ÃßÀûÇϵµ·Ï ÁöÁ¤

¶óÀÎ 1: $ns f1 [open test.nam w]

¶óÀÎ 2: $ns namtrace-all $f1

(±×¸² 3) namÀ» ÀÌ¿ëÇÑ ½Ã¹Ä·¹ÀÌ¼Ç °á°ú Ç¥Çö ¿¹¡¡

¶óÀÎ 1¿¡¼­´Â test.namÀ̶ó´Â À̸§À¸·Î ½Ã¹Ä·¹ÀÌ¼Ç °á°ú ÃßÀû ÆÄÀÏÀ» »ý¼ºÇÏ°í, ns¸¦ ÀÌ¿ëÇÑ ½Ã¹Ä·¹ÀÌ¼Ç µµÁß¿¡ ¹ß»ýÇÏ´Â ¸ðµç À̺¥Æ®¸¦ nam µµ±¸¸¦ ÀÌ¿ëÇÏ¿© ºÐ¼® °¡´ÉÇϵµ·Ï ÃßÀû ÆÄÀÏÀ» ¸¸µå´Â ¿¹¸¦ º¸¿© ÁÖ°í ÀÖ´Ù. (±×¸² 3)Àº namÀ» ÀÌ¿ëÇÏ¿© ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ È­¸é »ó¿¡ ¿¡´Ï¸ÞÀÌ¼Ç ÇüÅ·ΠǥÇöÇÑ ¿¹¸¦ º¸¿© ÁÖ°í ÀÖ´Ù. ÀÌ ±×¸²Àº ³ëµå 2, 3, 5·ÎºÎÅÍ ³ëµå 0À» °ÅÃÄ ³ëµå 1À¸·Î ÆÐŶ È帧ÀÌ ¹ß»ýÇÏ´Â °Í°ú, Àü¼ÛµÈ ÆÐŶ¿¡ ´ëÇÑ ACK ÆÐŶÀÌ ³ëµå 1À¸·ÎºÎÅÍ ³ëµå 0À» °ÅÃÄ ³ëµå 2, 3, 5·Î Àü¼ÛµÇ´Â °ÍÀ» ¿¡´Ï¸ÞÀÌ¼Ç ÇüÅ·Πº¸¿© ÁÖ°í ÀÖ´Ù.

ns¸¦ ÀÌ¿ëÇÑ ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ ÀÚµ¿À¸·Î ºÐ¼®ÇÏ¿© ±× °á°ú¸¦ ½Ã°¢ÀûÀ¸·Î È­¸é¿¡ Ç¥ÇöÇÏ´Â µµ±¸·Î½á ³Î¸® »ç¿ëµÇ°í ÀÖ´Â ´Ù¸¥ µµ±¸·Î Xgraph°¡ ÀÖ´Ù. Xgraph´Â Á¡À̳ª ¼±, ¸·´ë±×·¡ÇÁ µîÀÇ ÇüÅ·Π³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ Ç¥ÇöÇϸç, ¿øÇÏ´Â À§Ä¡ÀÇ ºÎºÐÈ®´ë ±â´Éµµ Áö¿øÇÑ´Ù. Xgraph°¡ Á¦°øÇÏ´Â ¿É¼ÇÀ» »ç¿ëÇÏ¸é ´Ù¾çÇÑ Á¡°ú ¼±ÀÇ ¸ð¾çÀ¸·Î ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ Ç¥½ÃÇÒ ¼ö ÀÖÀ¸¸ç, ½Ã¹Ä·¹ÀÌ¼Ç °úÁ¤¿¡¼­ ¸¸µé¾îÁø ÃßÀû ÆÄÀϷκÎÅÍ ¿øÇÏ´Â ³ëµå »çÀÌÀÇ ÆÐŶ È帧À» ¼±ÅÃÇÏ¿© ±×·¡ÇÁ·Î Ç¥ÇöÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. (±×¸² 4)´Â Xgraph¸¦ ÀÌ¿ëÇÏ¿© ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ ±×·¡ÇÁÀÇ ÇüÅ·ΠǥÇöÇÑ ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. ÀÌ ±×¸²¿¡¼­ XÃàÀº ½Ã°£, YÃàÀº Àü¼ÛµÇ´Â ÆÐŶÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù. ±×·¡ÇÁÀÇ ¾ÕÂÊ Á¡Àº ±Ù¿øÁö¿¡¼­ ¸ñÀûÁö·Î À̵¿ÇÏ´Â ÆÐŶÀ» Ç¥½ÃÇÏ°í, µÚÂÊ Á¡Àº Àü¼ÛµÇ´Â ÆÐŶ¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ACK ÆÐŶÀÇ È帧À» ³ªÅ¸³½´Ù.

X. ½Ã¹Ä·¹ÀÌ¼Ç ½ºÅ©¸³Æ® ÀÛ¼º ¿¹

<¿¹½Ã 12>´Â ns¸¦ ÀÌ¿ëÇÏ¿© ³×Æ®¿öÅ© ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇϱâ À§ÇØ ÀÛ¼ºÇÑ ½ºÅ©¸³Æ® ÆÄÀÏÀÇ ÇÑ ¿¹ÀÌ´Ù. ÀÌ ¿¹¿¡¼­ »ç¿ëµÈ ½Ã¹Ä·¹ÀÌ¼Ç ½Ã³ª¸®¿À´Â ¸ÕÀú ³ëµå°£ÀÇ ´ë¿ªÆøÀ» 1.5Mbps, ½Ã°£Áö¿¬À» 10ms, ¸µÅ©ÀÇ Å¥ ÇüŸ¦ drop-tail ¹æ½ÄÀ¸·Î ¼³Á¤ÇÏ°í, ftp ÀÀ¿ëÀ» ÀÌ¿ëÇÏ¿© µÎ ³ëµå °£¿¡ tcp ÆÐŶÀ» Àü¼ÛÇÏ´Â °úÁ¤À» º¸ÀÌ°í ÀÖ´Ù. ÆÐŶ Àü¼ÛÀº ½Ã¹Ä·¹À̼ÇÀÌ ½ÇÇàµÇ°í ³ª¼­ 0.2ÃÊ ÈĺÎÅÍ ftp ÀÀ¿ëÀ» ÀÌ¿ëÇÑ ÆÐŶ Àü¼ÛÀÌ ½ÃÀ۵ǰí, 1.2ÃÊ ÈÄ¿¡ ÆÐŶ Àü¼ÛÀÌ Á¾·á µÇµµ·Ï ¼³Á¤ÇÑ tcl ½ºÅ©¸³Æ® ÀÌ´Ù. ¶óÀÎ 1¿¡¼­ ¶óÀÎ 10±îÁö´Â ¿¡µðÅ͸¦ »ç¿ëÇÏ¿© ÆÄÀÏ·Î ÀÛ¼ºµÇ°Ô µÇ°í, ¶óÀÎ 11¿¡¼­´Â ÀÛ¼ºµÈ ½ºÅ©¸³Æ® ÆÄÀÏÀ» ½ÇÇà½ÃÅ°´Â ¸í·ÉÀÌ´Ù.

<¿¹½Ã 12> ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ ½ºÅ©¸³Æ® ÀÛ¼º ¿¹

¶óÀÎ 1: set ns [new Simulator]

¶óÀÎ 2: set n0 [$ns node]

¶óÀÎ 3: set n1 [$ns node]

¶óÀÎ 4: $ns namtrace-all [open ex.nam w]

¶óÀÎ 5: $ns duplex-link $n0 $n1 1.5Mb 10ms DropTail

¶óÀÎ 6: set tcp [$ns create-connection TCP $n0 TCPSink $n1 0]

¶óÀÎ 7: set ftp [new Application/FTP]

¶óÀÎ 8: $ftp attach-agent $tcp

¶óÀÎ 9: $ns at 0.2 "$ftp start

¶óÀÎ10: $ns at 1.2 "exit

¶óÀÎ11: $ns run

¶óÀÎ 1¿¡¼­´Â ½Ã¹Ä·¹ÀÌÅͷκÎÅÍ »õ·Î¿î °´Ã¼¸¦ »ý¼ºÇÏ¿´°í, ¶óÀÎ 2, 3¿¡¼­ ³ëµå n0, n1À» »ý¼ºÇÏ¿´À¸¸ç, ¶óÀÎ 4¿¡¼­´Â ½Ã¹Ä·¹ÀÌ¼Ç ºÐ¼®µµ±¸ÀÎ namÀ» ÀÌ¿ëÇÏ¿© ½Ã¹Ä·¹ÀÌ¼Ç °á°ú¸¦ ºÐ¼®Çϱâ À§ÇØ ÃßÀûÆÄÀÏ ex.namÀ» »ý¼ºÇÏ¿´´Ù. ¶óÀÎ 5¿¡¼­´Â ³ëµå n0¿Í ³ëµå n1 °£¿¡ ¸µÅ© ÇüÅÂ, ´ë¿ªÆø, ½Ã°£Áö¿¬, Å¥ ÇüŸ¦ ÁöÁ¤ÇÏ°í ÀÖ´Ù. ¶óÀÎ 6¿¡¼­´Â ±Ù¿øÁö ¿¡ÀÌÀüÆ®ÀÎ ³ëµå n0ÀÇ TCP ¿¡ÀÌÀüÆ®¿Í ¸ñÀûÁö ¿¡ÀÌÀüÆ®ÀÎ ³ëµå n1ÀÇ TCPSink ¿¡ÀÌÀüÆ® »çÀÌ¿¡ ¿¬°áÀ» ¼³Á¤ÇÏ°í´Â set ¸í·É¾î¸¦ »ç¿ëÇؼ­ À̸¦ º¯¼ö tcp·Î È£ÃâÇÒ ¼ö ÀÖµµ·Ï Çß´Ù. ¶óÀÎ 7, 8¿¡¼­´Â ftp ÀÀ¿ë ¿¡ÀÌÀüÆ®¸¦ »ý¼ºÇÏ¿© À̸¦ tcp ¿¬°á¿¡ Á¢¼Ó½ÃÅ°´Â °úÁ¤À» º¸¿© ÁÖ°í ÀÖ´Ù. ¶óÀÎ 9¿¡¼­´Â ½Ã¹Ä·¹À̼ÇÀÌ ½ÃÀÛµÈ 0.2ÃÊ ÈÄ¿¡ ftp ÀÀ¿ëÀ» ÀÌ¿ëÇÑ ÆÄÀÏ Àü¼ÛÀ» ½ÃÀÛÇß°í, ¶óÀÎ 10¿¡¼­´Â ½Ã¹Ä·¹À̼ÇÀÌ ¼öÇàµÇ°í ³ª¼­ 1.2ÃÊ ÈÄ¿¡ ½Ã¹Ä·¹À̼ÇÀÇ ½ÇÇàÀ» Á¾·áÇϵµ·Ï ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ¿´´Ù.

(±×¸² 4) Xgraph¸¦ ÀÌ¿ëÇÑ ½Ã¹Ä·¹ÀÌ¼Ç °á°ú Ç¥Çö ¿¹

XI. ¸ÎÀ½¸»

º» °í¿¡¼­´Â ns-2ÀÇ ÁÖ¿ä ±â´É°ú ³×Æ®¿öÅ© ½Ã¹Ä·¹À̼ǿ¡ÀÇ Àû¿ë ¹× È°¿ë ¹æ¹ý¿¡ ´ëÇØ ±â¼úÇÏ¿´´Ù. Ưº°È÷ ns-2´Â ÀÎÅÍ³Ý ±â¹ÝÀÇ ´Ù¾çÇÑ ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ½Ã¹Ä·¹ÀÌ¼Ç È¯°æÀ» Á¦°øÇÏ°í ÀÖÀ¸¸ç, ´©±¸³ª »ç¿ëÇÒ ¼ö ÀÖµµ·Ï °ø°³µÇ¾î ÀÖ°í, »ç¿ëÀÚ ±×·ìÀ» Á¶Á÷ÇÏ¿© ÇöÀç °è¼ÓÀûÀÎ ±â´É Ãß°¡ ¹× ¼º´É°³¼± ÀÛ¾÷ÀÌ ÀÌ·ç¾îÁö°í ÀÖ¾î ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÇ°í ÀÖ´Â ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌ¼Ç µµ±¸ÀÌ´Ù.

ns-2 °³¼± ÀÛ¾÷Àº ÇöÀç VINT(Virtual InterNetwork Testbed)¶ó´Â ÇÁ·ÎÁ§Æ®¸¦ ÅëÇÏ¿© °è¼ÓÀûÀÎ ¿¬±¸°³¹ß ÀÛ¾÷ÀÌ ÃßÁøµÇ°í ÀÖ´Ù[6]. VINT´Â ±âÁ¸ ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝ ¹× ¹Ì·¡ÀÇ ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ¿¬±¸°³¹ßÀ» µµ¿ï ¼ö ÀÖ´Â »õ·Î¿î ³×Æ®¿öÅ© ½Ã¹Ä·¹ÀÌÅ͸¦ °³¹ßÇÏ´Â °ÍÀ» ¸ñÇ¥·Î ÇÏ°í ÀÖÀ¸¸ç, ÀÌ ÇÁ·ÎÁ§Æ®¿¡´Â USC/ISI, Xerox PARC, LBNL, UC Berkeley°¡ Âü¿©ÇÏ°í ÀÖ´Ù. VINT ÇÁ·ÎÁ§Æ®ÀÇ ¼öÇà °á°ú·Î ÃÖ±Ù ±âÁ¸ namÀÇ ¼º´ÉÀ» °³¼±ÇÑ newnamÀÌ °³¹ßµÇ¾úÀ¸³ª newnamÀº ÇöÀç VINT ÇÁ·ÎÁ§Æ® Âü°¡ÀÚ¿¡°Ô¸¸ °ø°³µÇ°í ÀÖ°í ¾ÆÁ÷ ÀϹݿ¡°Ô´Â °ø°³µÇÁö ¾Ê°í ÀÖ´Ù. ±×·¯³ª Á¶¸¸°£ newnamµµ ÀϹݿ¡°Ô °ø°³µÉ °ÍÀ¸·Î ¿¹»óµÇ¸ç, VINT ÇÁ·ÎÁ§Æ®¿Í ns-2 »ç¿ëÀÚ ±×·ì È°µ¿ µîÀ» ÅëÇØ ns-2´Â ÇâÈÄ °¡Àå ±â´ÉÀÌ Ç³ºÎÇÑ ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝ ½Ã¹Ä·¹ÀÌ¼Ç µµ±¸·Î ÀÚ¸®ÀâÀ» °ÍÀ¸·Î ¿¹»óµÈ´Ù.

<Âü °í ¹® Çå>

  1. NEST, ftp://ftp.cs.columbia.edu/nest/

  2. S. Keshav, REAL 5.0 Overview, http://www.cs.cornell.edu/skeshav/real/overview.html/

  3. LBNL, LBNL Network Simulator-ns version 1, http://www-nrg.ee.lbl.gov/ns/

  4. UCB/LBNL/VINT Network Simulator - ns (version 2), http://www-Mash.CS.Berkeley.EDU/ns/

  5. NAM: Network Animator(NAM), http://www-mash.cs.berkeley.edu/nam/nam.html/

  6. Virtual InterNetwork Testbed(VINT), http://netweb.usc.edu/vint/