4 ã³ã³ã»ããæŠèŠ
4.1 äž»èŠãªæœè±¡å
4.1.1 ããŒã
4.1.2 ã¢ããªã±ãŒã·ã§ã³
4.1.3 ãã£ãã«
4.1.4 ãããããã€ã¹
4.1.5 ããããžã«ã«ã¢ã·ã¹ã¿ã³ã
4.2 æåã® ns-3 ã¹ã¯ãªãã
4.2.1 å®åã³ãŒã
4.2.2 ãã©ã°ã€ã³
4.2.3 ns3 åå空é
4.2.4 ãã®ã³ã°
4.2.5 ã¡ã€ã³æ©èœ
4.2.6 ããããžãŒã»ã¢ã·ã¹ã¿ã³ãã®äœ¿çš
4.2.7 ã¢ããªã±ãŒã·ã§ã³ã®äœ¿çš
4.2.8 ã·ãã¥ã¬ãŒã¿
4.2.9 ã¹ã¯ãªããã®æ§ç¯
4.3 ns-3 ãœãŒã¹ã³ãŒã
ç« 4
ã³ã³ã»ããã®æŠèŠ
ns-3 ã³ãŒãã®åŠç¿ãŸãã¯äœæãéå§ããåã«æåã«è¡ãå¿ èŠãããã®ã¯ãã·ã¹ãã å ã®ããã€ãã®åºæ¬æŠå¿µãšæœè±¡åã説æããããšã§ãã ãã®å€ãã¯åœç¶ã®ããšã®ããã«æãããããããŸãããããã£ãããšããåºç€ãåºããããã«ãæéããããŠãã®ã»ã¯ã·ã§ã³ãèªãããšããå§ãããŸãã
4.1 äž»èŠãªæœè±¡å
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãWeb äžã§äžè¬çã«äœ¿çšãããŠããããns-3 ã§ã¯ç¹å®ã®æå³ãæã€ããã€ãã®çšèªãèŠãŠãããŸãã
4.1.1 ããŒã
ã€ã³ã¿ãŒãããã®å°éçšèªã§ã¯ããããã¯ãŒã¯ã«æ¥ç¶ããã³ã³ãã¥ãŒã¿ ããã€ã¹ããã¹ãããŸãã¯ãšã³ã ã·ã¹ãã ãšåŒã¶ããšããããŸãã ns-3 ã¯ãããã¯ãŒã¯ ã·ãã¥ã¬ãŒã¿ã§ãããã€ã³ã¿ãŒããã ã·ãã¥ã¬ãŒã¿ã§ã¯ãªãããããã¹ããšããçšèªã¯ã€ã³ã¿ãŒããããšãã®ãããã³ã«ã«å¯æ¥ã«é¢é£ããŠãããããæå³çã«äœ¿çšããŸããã 代ããã«ãã°ã©ãçè«ã«ç±æ¥ãããä»ã®ã·ãã¥ã¬ãŒã¿ãŒã§ã䜿çšããããããäžè¬çãªçšèªã§ããããŒã ( ).
ns-3 ã§ã¯ãã³ã³ãã¥ãŒãã£ã³ã° ããã€ã¹ã®åºç€ãšãªãæœè±¡åãããŒããšåŒã³ãŸãã ãã®æœè±¡åã¯ãC++ ã§ã¯ Node ã¯ã©ã¹ã«ãã£ãŠè¡šãããŸãã ã¯ã©ã¹ ããŒãããŒã (ããŒã) ã¯ãã·ãã¥ã¬ãŒã·ã§ã³ã§ã³ã³ãã¥ãŒãã£ã³ã° ããã€ã¹ã®è¡šçŸãæäœããããã®ã¡ãœãããæäŸããŸãã
ç解ããªããã°ãªããªã Node æ©èœãè¿œå ããã³ã³ãã¥ãŒã¿ãŒã®ãããªãã®ã§ãã ã¢ããªã±ãŒã·ã§ã³ããããã³ã« ã¹ã¿ãã¯ããã©ã€ããŒãåããåšèŸºã«ãŒããªã©ãè¿œå ããŠãã³ã³ãã¥ãŒã¿ãŒãæçšãªäœæ¥ãå®è¡ã§ããããã«ããŸãã ns-3ã§ãåºæ¬ã¢ãã«ã¯åããã®ã䜿çšããŠããŸãã
4.1.2 ã¢ããªã±ãŒã·ã§ã³
äžè¬ã«ãã³ã³ãã¥ãŒã¿ ãœãããŠã§ã¢ã¯å€§ãã XNUMX ã€ã®ã¯ã©ã¹ã«åé¡ãããŸãã ã·ã¹ãã ãœãããŠã§ã¢ã¯ãã¡ã¢ãªãããã»ããµ ãµã€ã¯ã«ããã£ã¹ã¯ããããã¯ãŒã¯ãªã©ã®ããŸããŸãªã³ã³ãã¥ãŒã¿ ãªãœãŒã¹ããäœããã®ã³ã³ãã¥ãŒãã£ã³ã° ã¢ãã«ã«åŸã£ãŠç·šæããŸãã ã·ã¹ãã ãœãããŠã§ã¢ã¯éåžžããŠãŒã¶ãŒã«çŽæ¥å©çãããããã¿ã¹ã¯ãå®è¡ããããã«ãããã®ãªãœãŒã¹ã䜿çšããŸããã éåžžããŠãŒã¶ãŒã¯ç¹å®ã®ç®æšãéæããããã«ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã·ã¹ãã ãœãããŠã§ã¢ã«ãã£ãŠå¶åŸ¡ããããªãœãŒã¹ãååŸããŠäœ¿çšããŸãã
å€ãã®å Žåãã·ã¹ãã ãœãããŠã§ã¢ãšã¢ããªã±ãŒã·ã§ã³ ãœãããŠã§ã¢ã®éã®å¢çç·ã¯ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ãã©ããã§çºçããç¹æš©ã¬ãã«ã®å€æŽã§åŒãããŸãã ns-3 ã«ã¯ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãšããå®éã®æŠå¿µããªããããç¹æš©ã¬ãã«ãã·ã¹ãã ã³ãŒã«ãšããæŠå¿µããããŸããã ãã ããç§ãã¡ã«ã¯ã¢ããªã®ã¢ã€ãã¢ããããŸãã ãçŸå®äžçãã®ãœãããŠã§ã¢ ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã¥ãŒã¿ãŒäžã§å®è¡ãããŠã¿ã¹ã¯ãå®è¡ããã®ãšåãããã«ãns-3 ã¢ããªã±ãŒã·ã§ã³ã¯ ns-3 ããŒãäžã§å®è¡ãããã·ãã¥ã¬ãŒããããäžçã§ã·ãã¥ã¬ãŒã·ã§ã³ãå¶åŸ¡ããŸãã
ns-3 ã§ã¯ãã¢ããªã³ã°çšã®ã¢ã¯ãã£ããã£ãçæãããŠãŒã¶ãŒ ããã°ã©ã ã®åºæ¬çãªæœè±¡åã¯ã¢ããªã±ãŒã·ã§ã³ã§ãã ãã®æœè±¡åã¯ãC++ ã§ã¯ Application ã¯ã©ã¹ã«ãã£ãŠè¡šãããŸãã Application ã¯ã©ã¹ã¯ãã·ãã¥ã¬ãŒã·ã§ã³ã§ã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã¬ãã« ããŒãžã§ã³ã®ãã¥ãŒãæäœããããã®ã¡ãœãããæäŸããŸãã éçºè ã¯ãæ°ããã¢ããªã±ãŒã·ã§ã³ãäœæããããã«ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æå³ã§ Application ã¯ã©ã¹ãç¹æ®åããããšãæåŸ ãããŸãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãApplication ã¯ã©ã¹ã®ç¹æ®åã䜿çšããŸãã UdpEchoã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ О UdpEchoãµãŒããŒã¢ããªã±ãŒã·ã§ã³ã ãæ³åã®ãšããããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ããããã¯ãŒã¯ ãã±ããã®çæãšãšã³ãŒã«äœ¿çšãããã¯ã©ã€ã¢ã³ã/ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ã®ã»ãããæ§æããŸãã
4.1.3 ãã£ãã«
çŸå®ã®äžçã§ã¯ãã³ã³ãã¥ãŒã¿ããããã¯ãŒã¯ã«æ¥ç¶ã§ããŸãã å€ãã®å Žåããããã®ãããã¯ãŒã¯ã§ããŒã¿ãéä¿¡ãããã¡ãã£ã¢ã¯ãã£ãã«ãšåŒã°ããŸãã ã€ãŒãµããã ã±ãŒãã«ãå£ã®ã³ã³ã»ã³ãã«å·®ã蟌ããšãã³ã³ãã¥ãŒã¿ãã€ãŒãµããã ãªã³ã¯ã«æ¥ç¶ãããŸãã ã·ãã¥ã¬ãŒãããã ns-3 ã¯ãŒã«ãã§ã¯ãããŒãã¯éä¿¡ãã£ãã«ãè¡šããªããžã§ã¯ãã«æ¥ç¶ãããŸãã ããã§ãéä¿¡ãµããããã¯ãŒã¯ã®åºæ¬çãªæœè±¡åã¯ãã£ãã«ãšåŒã°ããC++ ã§ã¯ Channel ã¯ã©ã¹ã«ãã£ãŠè¡šãããŸãã
ã¯ã©ã¹ ãã£ã³ãã«ãã£ã³ãã« ã¯ããµãããã ãªããžã§ã¯ãã®çžäºäœçšã管çããããŒãããµãããã ãªããžã§ã¯ãã«æ¥ç¶ããããã®ã¡ãœãããæäŸããŸãã éçºè ã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æå³ã§ãã£ãã«ãç¹æ®åããããšãã§ããŸãã ãã£ãã«ã®ç¹åã«ãããã¯ã€ã€ãŒã®ãããªåçŽãªãã®ãã¢ãã«åã§ããŸãã å°çšãã£ãã«ã¯ã倧åã®ã€ãŒãµããã ã¹ã€ããããã¯ã€ã€ã¬ã¹ ãããã¯ãŒã¯ã®å Žåã¯é害ç©ã§ãã£ã±ãã® XNUMX 次å 空éãªã©ã®è€éãªãã®ãã¢ãã«åããããšãã§ããŸãã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ããšåŒã°ããç¹æ®ãªããŒãžã§ã³ã®ãã£ãã«ã䜿çšããŸãã CsmaChannelCsmaChannel, ãã€ã³ãããŒãã€ã³ããã£ã³ãã«ãã€ã³ãããŒãã€ã³ããã£ã³ã㫠О Wifiãã£ã³ãã«Wifiãã£ã³ãã«. CsmaChannelããšãã°ããã£ãªã¢ã»ã³ã¹å€å æ¥ç¶éä¿¡ç°å¢ãå®è£ ããéä¿¡ãµããããã®ããŒãžã§ã³ãã¢ãã«åããŸãã ããã«ãããã€ãŒãµãããã®ãããªæ©èœãåŸãããŸãã
4.1.4 ãããããã€ã¹
以åã¯ãã³ã³ãã¥ãŒã¿ããããã¯ãŒã¯ã«æ¥ç¶ããã«ã¯ãç¹å®ã®ãããã¯ãŒã¯ ã±ãŒãã«ãšã(PC çšèªã§) åšèŸºæ©åšã«ãŒããšåŒã°ããããŒããŠã§ã¢ ããã€ã¹ãè³Œå ¥ããã³ã³ãã¥ãŒã¿ã«åãä»ããå¿ èŠããããŸããã åšèŸºã«ãŒããäœããã®ãããã¯ãŒã¯æ©èœãå®è£ ããŠããå Žåããããã¯ãããã¯ãŒã¯ ã€ã³ã¿ãŒãã§ã€ã¹ ã«ãŒããŸãã¯ãããã¯ãŒã¯ ã«ãŒããšåŒã°ããŸãã çŸåšãã»ãšãã©ã®ã³ã³ãã¥ãŒã¿ã«ã¯çµ±åãããã¯ãŒã¯ ã€ã³ã¿ãŒãã§ã€ã¹ ããŒããŠã§ã¢ãæèŒãããŠããããŠãŒã¶ãŒã«ã¯å¥åã®ããã€ã¹ãšããŠèªèãããŸããã
ãããã¯ãŒã¯ ã«ãŒãã¯ãããŒããŠã§ã¢ãå¶åŸ¡ãããœãããŠã§ã¢ ãã©ã€ããŒããªããã°æ©èœããŸããã Unix (ãŸã㯠Linux) ã§ã¯ãåšèŸºæ©åšã¯ããã€ã¹ãšããŠåé¡ãããŸãã ããã€ã¹ã¯ããã€ã¹ ãã©ã€ããŒã䜿çšããŠç®¡çããããããã¯ãŒã¯ ããã€ã¹ (NIC) ã¯ãããã¯ãŒã¯ ããã€ã¹ ãã©ã€ããŒã䜿çšããŠç®¡çãããŸã (ãããã¯ãŒã¯ããã€ã¹ãã©ã€ããŒ) ãç·ç§°ããŠãããã¯ãŒã¯ ããã€ã¹ (ãããããã€ã¹ïŒã Unix ããã³ Linux ã§ã¯ããããã¯ãŒã¯ ããã€ã¹ã次ã®ãããªååã§åç §ããŸãã eth0.
ns-3 ã§ã¯ããããã¯ãŒã¯ ããã€ã¹ã®æœè±¡åã¯ããœãããŠã§ã¢ ãã©ã€ããŒãšã¢ãã«åãããããŒããŠã§ã¢ã®äž¡æ¹ãã«ããŒããŸãã ã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ããããã¯ãŒã¯ ããã€ã¹ãããŒãã«ãã€ã³ã¹ããŒã«ãããããã£ãã«ãéããŠä»ã®ããŒããšéä¿¡ã§ããããã«ãªããŸãã å®éã®ã³ã³ãã¥ãŒã¿ãšåæ§ã«ãããŒãã¯è€æ°ã®ããã€ã¹ãä»ããŠè€æ°ã®ãã£ãã«ã«æ¥ç¶ã§ããŸãã ãããããã€ã¹.
ããã€ã¹ã®ãããã¯ãŒã¯æœè±¡åã¯ãC++ ã§ã¯ã¯ã©ã¹ã«ãã£ãŠè¡šãããŸãã ãããããã€ã¹ã ã¯ã©ã¹ ãããããã€ã¹ Node ãªããžã§ã¯ããš Channel ãªããžã§ã¯ããžã®æ¥ç¶ã管çããã¡ãœãããæäŸããŸãã éçºè ã¯ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æå³ã§å°éåããããšãã§ããŸãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãNetDevice ã®ããã€ãã®ç¹æ®ãªããŒãžã§ã³ã䜿çšããŸãã CsmaNetDevice, ãã€ã³ãããŒãã€ã³ããããããã€ã¹ О Wifiãããããã€ã¹ã ã€ãŒãµããã ãããã¯ãŒã¯ ã¢ããã¿ããããã¯ãŒã¯ã§åäœããããã«èšèšãããŠããã®ãšåãããã«ã ã€ãŒãµããã, CsmaNetDevice ã§åäœããããã«èšèšãããŠããŸã CsmaChannel, ãã€ã³ãããŒãã€ã³ããããããã€ã¹ ã§åäœããããã«èšèšãããŠããŸã ãã€ã³ãããŒãã€ã³ããã£ãã«ãš Wifiãããããã€ã¹ - ã§åäœããããã«èšèšãããŠããŸã Wifiãã£ã³ãã«.
4.1.5 ããããžã«ã«ã¢ã·ã¹ã¿ã³ã
å®éã®ãããã¯ãŒã¯ã§ã¯ããããã¯ãŒã¯ ã«ãŒããè¿œå ããã (ãŸãã¯çµã¿èŸŒãŸãã) ãã¹ã ã³ã³ãã¥ãŒã¿ãŒãååšããŸãã ns-3 ã§ã¯ãNetDevices ãæ¥ç¶ãããããŒãã衚瀺ããããšèšããŸãã 倧èŠæš¡ãªã·ãã¥ã¬ãŒãããããããã¯ãŒã¯ã§ã¯ãå€ãã®ãªããžã§ã¯ãéã®æ¥ç¶ãæŽçããå¿ èŠããããŸãã Node, ãããããã€ã¹ О ãã£ãã«.
NetDevices ãããŒãã«æ¥ç¶ããNetDevices ããªã³ã¯ã«æ¥ç¶ããIP ã¢ãã¬ã¹ãå²ãåœãŠãŸãã ns-3 ã§ã¯äžè¬çãªã¿ã¹ã¯ã§ããããããã§ããã ãç°¡åã«ããããã«ãããããããããž ãã«ããŒãæäŸãããŠããŸãã ããšãã°ãNetDevice ãäœæããã«ã¯ãå€ãã® ns-3 ã«ãŒãã«æäœãå®è¡ããMAC ã¢ãã¬ã¹ãè¿œå ããããŒãã«ãããã¯ãŒã¯ ããã€ã¹ãã€ã³ã¹ããŒã«ããããŒãã®ãããã³ã« ã¹ã¿ãã¯ãæ§æããŠãNetDevice ããã£ãã«ã«æ¥ç¶ããå¿ èŠããããŸãã è€æ°ã®ããã€ã¹ããã«ããã€ã³ã ãªã³ã¯ã«æ¥ç¶ããåã ã®ãããã¯ãŒã¯ãã€ã³ã¿ãŒãããã¯ãŒã¯ã¹ ãããã¯ãŒã¯ã«æ¥ç¶ããã«ã¯ãããã«å€ãã®äœæ¥ãå¿ èŠã«ãªããŸãã ãããã®å€ãã®æäœã䜿ããããã¢ãã«ã«çµã¿åãããããããž ãã«ã㌠ãªããžã§ã¯ããæäŸããŠããŸãã
4.2 æåã® ns-3 ã¹ã¯ãªãã
äžèšã®æ¹æ³ã§ã·ã¹ãã ãã€ã³ã¹ããŒã«ããå Žåã¯ãããŒã ãã£ã¬ã¯ããªã® repos ãšãããã£ã¬ã¯ããªã« ns-3 ãªãªãŒã¹ãååšããŸãã ãã£ã¬ã¯ããªã«ç§»å ãªãªãŒã¹
ãã®ãããªãã£ã¬ã¯ããªããªãå Žåã¯ãns-3 ã®ãªãªãŒã¹ ããŒãžã§ã³ããã«ããããšãã«åºåãã£ã¬ã¯ããªãæå®ããªãã£ãããšãæå³ããŸãã次ã®ããã«ãã«ãããŸãã
$ ./waf configure âbuild-profile=release âout=build/release,
$ ./waf ãã«ã
次ã®ãããªãã£ã¬ã¯ããªæ§é ã衚瀺ãããã¯ãã§ãã
AUTHORS examples scratch utils waf.bat*
bindings LICENSE src utils.py waf-tools
build ns3 test.py* utils.pyc wscript
CHANGES.html README testpy-output VERSION wutils.py
doc RELEASE_NOTES testpy.supp waf* wutils.pyc
ãã£ã¬ã¯ããªã«ç§»å äŸ/ãã¥ãŒããªã¢ã«ã ããã«æ¬¡ã®ååã®ãã¡ã€ã«ãããã®ãèŠããã¯ãã§ãã æåã®.ccã ããã¯ãXNUMX ã€ã®ããŒãéã«åçŽãªãã€ã³ãããŒãã€ã³ãæ¥ç¶ãäœæããããŒãé㧠XNUMX ã€ã®ãã±ãããéä¿¡ããã¹ã¯ãªããã§ãã ãã®ã¹ã¯ãªããã XNUMX è¡ãã€èŠãŠã¿ãŸãããããããè¡ãã«ã¯ãfirst.cc ããæ°ã«å ¥ãã®ãšãã£ã¿ã§éããŸãã
4.2.1 å®åã³ãŒã
ãã¡ã€ã«ã®æåã®è¡ã¯ãšãã£ã¿ãŒ ã¢ãŒãè¡ã§ãã ãšããã¯ã¹ã ããã¯ããœãŒã¹ã³ãŒãã§äœ¿çšããæžåŒèšå®èŠå (ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«) ã«ã€ã㊠emacs ã«äŒããŸãã
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
ããã¯åžžã«éåžžã«ç©è°ãéžãåé¡ã§ãããããããã«åé¡ã解決ããããã«èšé²ãæ£ãå¿
èŠããããŸãã ns-3 ãããžã§ã¯ãã¯ãã»ãšãã©ã®å€§èŠæš¡ãããžã§ã¯ããšåæ§ã«ãæäŸããããã¹ãŠã®ã³ãŒããæºæ ããå¿
èŠãããã³ãŒãã£ã³ã° ã¹ã¿ã€ã«ãæ¡çšããŠããŸãã ã³ãŒãããããžã§ã¯ãã«è²¢ç®ãããå Žåã¯ããã¡ã€ã«ã«èšèŒãããŠããããã«ãæçµçã«ã¯ ns-3 ã³ãŒãã£ã³ã°æšæºã«æºæ ããå¿
èŠããããŸãã doc/codingstd.txt ãŸãã¯ãããžã§ã¯ãã® Web ããŒãžã«è¡šç€ºãããŸãã
ns-3 ã³ãŒãã®ã«ã㯠ã¢ã³ã ãã£ãŒã«ã«æ £ããŠãã³ãŒããæäœãããšãã¯åžžã«ãã®æšæºãé©çšããããšããå§ãããŸãã éçºããŒã å šäœãšè²¢ç®è ã¯ãå€å°ã®äžæºã¯ãã£ããã®ã®ãããã«åæããŸããã äžèšã® emacs ã¢ãŒãè¡ã«ãããemacs ãšãã£ã¿ãŒã䜿çšããŠããå Žåã«æ£ãããã©ãŒãããããããšãç°¡åã«ãªããŸãã
ns-3 ã·ãã¥ã¬ãŒã¿ã¯ã次ã®æ¹æ³ã§ã©ã€ã»ã³ã¹ãååŸããŸãã GNUäžè¬å ¬è¡å©çšèš±è«Ÿå¥çŽæžã å ns-3 é åžãã¡ã€ã«ã«ã¯ãé©å㪠GNU æ³çããããŒã衚瀺ãããŸãã å€ãã®å Žåã以äžã«ç€ºãããã«ãGPL ããã¹ããšäœæè ã®äžã«ãns-3 ãããžã§ã¯ãã«åå ããŠããæ©é¢ã®ããããã®èäœæš©è¡šç€ºã衚瀺ãããŸãã
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
4.2.2 ãã©ã°ã€ã³
ã³ãŒãèªäœã¯ãäžé£ã®ã€ã³ã¯ã«ãŒãžã§ã³ ã¹ããŒãã¡ã³ã (include).
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
é«ã¬ãã«ã®ã¹ã¯ãªãã ãŠãŒã¶ãŒãã·ã¹ãã å ã«ååšããå€æ°ã®ããã㌠ãã¡ã€ã«ã«å¯ŸåŠã§ããããã«ãçšéã«å¿ããŠããã㌠ãã¡ã€ã«ã倧ããªã¢ãžã¥ãŒã«ã«ã°ã«ãŒãåããŠããŸãã ç¹å®ã®ã¢ãžã¥ãŒã«ã§äœ¿çšããããã¹ãŠã®ããã㌠ãã¡ã€ã«ãååž°çã«ããŒãããåäžã®ããã㌠ãã¡ã€ã«ãæäŸããŸãã å¿ èŠãªããããŒãæ£ç¢ºã«æ€çŽ¢ããŠäŸåé¢ä¿ã®æ£ãããªã¹ããååŸãã代ããã«ããã¡ã€ã«ã®ã°ã«ãŒããéåžžã«çŽ°ããç²åºŠã§ããŠã³ããŒãã§ããæ©èœãæäŸãããŸãã ããã¯æãå¹ççãªã¢ãããŒãã§ã¯ãããŸããããã¹ã¯ãªããã®äœæãã¯ããã«ç°¡åã«ãªãããšã¯ç¢ºãã§ãã
ns-3 ã®åã€ã³ã¯ã«ãŒã ãã¡ã€ã«ã¯ã次ã®ååã®ãã£ã¬ã¯ããªã«é 眮ãããŸãã ns3 (ãã«ã ãµããã£ã¬ã¯ããª) ãã«ã ããã»ã¹äžã®ãã¡ã€ã«åã®ç«¶åãåé¿ããŸãã ãã¡ã€ã« ns3/ã³ã¢ã¢ãžã¥ãŒã«.h ãã£ã¬ã¯ããªã«ãã ns-3 ã¢ãžã¥ãŒã«ã«å¯Ÿå¿ããŸãã ãœãŒã¹/ã³ã¢ ã€ã³ã¹ããŒã«ãããªãªãŒã¹ã§ã ãã®ãã£ã¬ã¯ããªã®ãªã¹ãã«ã¯ãå€æ°ã®ããã㌠ãã¡ã€ã«ãå«ãŸããŠããŸãã çµã¿ç«ãŠãè¡ããšã ã¯ã ãããªãã¯ããããŒãã¡ã€ã«ããµããã£ã¬ã¯ããªã®ns3ãã£ã¬ã¯ããªã«é 眮ããŸã ãã«ã/ãããã°
ãã®ãããªãã£ã¬ã¯ããªããªãå Žåã¯ãns-3 ã®ãªãªãŒã¹ ããŒãžã§ã³ããã«ããããšãã«åºåãã£ã¬ã¯ããªãæå®ããªãã£ãããšãæå³ããŸãã次ã®ããã«ãã«ãããŸãã
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf ãã«ã
ãŸãã¯
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf ãã«ã
ãŸã㯠æ§ç¯/æé©åãæ§æã«å¿ããŠã ã¯ã ãŸãããã¹ãŠã®ãããªã㯠ããã㌠ãã¡ã€ã«ãããŒãããããã®ã¢ãžã¥ãŒã« ã€ã³ã¯ã«ãŒã ãã¡ã€ã«ãèªåçã«çæãããŸãã ãã¡ãããããªãã¯ãã®ã¬ã€ãã«å¿ å®ã«åŸã£ãŠããã®ã§ããã§ã«å®äºããŠããŸãã
$ ./waf -d debug --enable-examples --enable-tests configure
äŸãšãã¹ããå«ããããã° ãã«ããå®è¡ããããã«ãããžã§ã¯ããæ§æããŸãã ããªããããã§ãã
$ ./waf
ãããžã§ã¯ããçµã¿ç«ãŠãŸãã ããã§ããã£ã¬ã¯ããªãèŠããšã ../../ãã«ã/ãããã°/ns3ãã¯ãªãã¯ãããšãäžã«ç€ºãã XNUMX ã€ã®ã¢ãžã¥ãŒã«ã®ããã㌠ãã¡ã€ã«ãªã©ãèŠã€ãããŸãã ãããã®ãã¡ã€ã«ã®å 容ã確èªãããšã察å¿ããã¢ãžã¥ãŒã«ã§äœ¿çšããããã¹ãŠã®ãããªã㯠ãã¡ã€ã«ãå«ãŸããŠããããšãããããŸãã
4.2.3 ns3 åå空é
ã¹ã¯ãªããã®æ¬¡ã®è¡ æåã®.cc ã¯åå空é宣èšã§ãã
using namespace ns3;
ns-3 ãããžã§ã¯ãã¯ãns3 ãšãã C++ åå空éã«å®è£
ãããŠããŸãã ããã«ããããã¹ãŠã® ns-3 é¢é£ã®å®£èšãã°ããŒãã«åå空éã®å€åŽã®ã¹ã³ãŒãã«ã°ã«ãŒãåãããä»ã®ã³ãŒããšã®çµ±åã«åœ¹ç«ã€ããšãæåŸ
ãããŸãã C++ æŒç®åã䜿çšãããšãns-3 åå空éãçŸåšã® (ã°ããŒãã«) 宣èšé åã«å°å
¥ãããŸãã ããã¯ããã®å®£èšã®åŸããã¹ãŠã® ns-3 ã³ãŒã㧠ns3::scope æš©éæŒç®åã䜿çšããåã« ns3::scope æš©éæŒç®åãå
¥åããå¿
èŠããªãããšã瀺ã掟æãªæ¹æ³ã§ãã åå空éã«è©³ãããªãå Žåã¯ãã»ãŒãã¹ãŠã® C++ æç§æžãåç
§ããstd åå空éãšå®£èšã䜿çšã㊠nsXNUMX åå空éãæ¯èŒããŠãã ããã using namespace std;
åºåæŒç®åã®äœ¿çšäŸ COUT ãããŠã¹ããªãŒã ã
4.2.4 ãã®ã³ã°
ã¹ã¯ãªããã®æ¬¡ã®è¡ã¯æ¬¡ã®ãšããã§ãã
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
ãã®å£°æã¯ãææžã·ã¹ãã ã«ã€ããŠè©±ãåã䟿å©ãªå ŽæãšããŠäœ¿çšããŸãã ããã·ã²ã³ã ns-3 ãããžã§ã¯ãã® Web ãµã€ããèŠããšãããã²ãŒã·ã§ã³ ããŒã«ããã¥ã¡ã³ãã®ãªã³ã¯ã衚瀺ãããŸãã ãã®ãªã³ã¯ãã¯ãªãã¯ãããšãããã¥ã¡ã³ã ããŒãžã衚瀺ãããŸãã ãææ°ãªãªãŒã¹ããªã³ã¯ãããns-3 ã®ææ°ã®å®å®ããŒãžã§ã³ã®ããã¥ã¡ã³ãã«ã¢ã¯ã»ã¹ã§ããŸãã ãAPI ããã¥ã¡ã³ãããªã³ã¯ãéžæãããšãns-3 API ããã¥ã¡ã³ã ããŒãžã衚瀺ãããŸãã
ããŒãžã®å·ŠåŽã«ã¯ãããã¥ã¡ã³ãã®æ§é ãã°ã©ãã£ã«ã«ã«è¡šçŸãããŠããŸãã ns-3 ããã²ãŒã·ã§ã³ ããªãŒã®ã¢ãžã¥ãŒã« ns-3 ãããã¯ãããå§ãããšããã§ãããã æããã«ããã ã¢ãžã¥ãŒã«ãã¯ãªãã¯ãããšãns-3 ã¢ãžã¥ãŒã«ã®ããã¥ã¡ã³ãã®ãªã¹ãã衚瀺ãããŸãã äžã§èª¬æããããã«ãããã§ã®ã¢ãžã¥ãŒã«ã®æŠå¿µã¯ãäžèšã®ã¢ãžã¥ãŒã«ã«å«ãŸãããã¡ã€ã«ã«çŽæ¥é¢é£ããŠããŸãã ns-3 ãã®ã³ã° ãµãã·ã¹ãã ã«ã€ããŠã¯ãã»ã¯ã·ã§ã³ã§èª¬æããŸãã ãã®ã³ã°ã¢ãžã¥ãŒã«ã®äœ¿çšãªã®ã§ããã®ãã¥ãŒããªã¢ã«ã®åŸåã§ããäžåºŠèª¬æããŸãããã¢ãžã¥ãŒã«ãèŠãããšã§äžèšã®ã¹ããŒãã¡ã³ãã«ã€ããŠåŠã¶ããšãã§ããŸãã åºæ¬ãããŠæ¬ãéããš ãããã°ããŒã«ãããŠããŒãžãéžæããŸã ãã®ã³ã°ã ã¯ãªã㯠ãã®ã³ã°.
ããã§ããã¥ã¡ã³ãã確èªããå¿ èŠããããŸã ããã·ã²ã³ ã¢ãžã¥ãŒã«çš ãã®ã³ã°ã ããŒãžäžéšã®ãã¯ãã®ãªã¹ãã«ãNS_LOG_COMPONENT_DEFINE ã®ãšã³ããªã衚瀺ãããŸãã ãªã³ã¯ãã¯ãªãã¯ããåã«ãç»é²ã¢ãžã¥ãŒã«ã®ã詳现ãªèª¬æããåç §ããŠãäžè¬çã«ã©ã®ããã«æ©èœããããç解ããŠãã ããã ãããè¡ãã«ã¯ãäžã«ã¹ã¯ããŒã«ããããã°ã©ãã®äžã®ããã®ä»...ããéžæããŸãã
äœãèµ·ãã£ãŠãããã®æŠèŠãç解ãããã次ã«é²ãã§ãç¹å®ã® NS_LOG_COMPONENT_DEFINE ã®ããã¥ã¡ã³ããåç §ããŠãã ããã ããã§ã¯ããã¥ã¡ã³ããè€è£œããŸããããèŠçŽãããšããã®è¡ã¯ ãšããç»é²ã³ã³ããŒãã³ãã宣èšããŸãã æåã®ã¹ã¯ãªããã®äŸããã«ãããååãåç §ããŠã¡ãã»ãŒãžã®ã³ã³ãœãŒã« ãã®ã³ã°ãæå¹ãŸãã¯ç¡å¹ã«ããããšãã§ããŸãã
4.2.5 ã¡ã€ã³æ©èœ
ã¹ã¯ãªããã®æ¬¡ã®è¡ã§ã¯ã次ã®ããã«ãªããŸãã
int
main (int argc, char *argv[])
{
ããã¯åã«ããã°ã©ã (ã¹ã¯ãªãã) ã®ã¡ã€ã³é¢æ°ã®å®£èšã§ãã ä»ã® C++ ããã°ã©ã ãšåæ§ã«ãmain é¢æ°ãå®çŸ©ããå¿ èŠããããŸãããããæåã«å®è¡ãããŸãã ããã«ã¯ç¹å¥ãªããšã¯äœããããŸããã ns-3 ã¹ã¯ãªããã¯åãªã C++ ããã°ã©ã ã§ãã 次ã®è¡ã¯ãæé解å床ãããã©ã«ãã® 1 ããç§ã«èšå®ããŸãã
Time::SetResolution (Time::NS);
æéå解èœããŸãã¯åã«å解èœã¯ã䜿çšã§ããæå°ã®æéå€ (XNUMX ã€ã®æééã®è¡šçŸå¯èœãªæå°ã®å·®) ã§ãã 解å床ã¯äžåºŠã ãå€æŽã§ããŸãã ãã®æè»æ§ãæäŸããã¡ã«ããºã ã¯ã¡ã¢ãªãæ¶è²»ããããã解å床ãæ瀺çã«èšå®ããããšã¡ã¢ãªã解æŸãããã以äžã®æŽæ°ãé²ããŸãã (解å床ãæ瀺çã«èšå®ããªãå Žåãããã©ã«ã㧠XNUMX ããç§ã«ãªããã·ãã¥ã¬ãŒã·ã§ã³ã®éå§æã«ã¡ã¢ãªã解æŸãããŸãã)
次㮠XNUMX è¡ã®ã¹ã¯ãªããã¯ãã¢ããªã±ãŒã·ã§ã³ã«çµã¿èŸŒãŸããŠãã XNUMX ã€ã®ãã° ã³ã³ããŒãã³ããæå¹ã«ããããã«äœ¿çšãããŸãã ãšã³ãŒã¯ã©ã€ã¢ã³ã О ãšã³ãŒãµãŒããŒ:
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
ãã®ã³ã° ã³ã³ããŒãã³ãã®ããã¥ã¡ã³ããèªããšãåã³ã³ããŒãã³ãã§æå¹ã«ã§ãããã®ã³ã°/ç²åºŠã®ã¬ãã«ãããã€ãããããšãããããŸãã ããã XNUMX è¡ã®ã³ãŒãã«ããããšã³ãŒ ã¯ã©ã€ã¢ã³ããšãµãŒããŒã® INFO ã¬ãã«ãžã®ãããã° ãã°ãæå¹ã«ãªããŸãã ãã®ã¬ãã«ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ã·ãã¥ã¬ãŒã·ã§ã³äžã«ãã±ãããéåä¿¡ãããšãã«ã¡ãã»ãŒãžãåºåããŸãã
ããããã¯ãããããžã®äœæãšã·ãã¥ã¬ãŒã·ã§ã³ã®å®è¡ã«åãæãããŸãã ãã®äœæ¥ãã§ããã ãç°¡åã«ããããã«ãããããž ãã«ã㌠ãªããžã§ã¯ãã䜿çšããŸãã
4.2.6 ããããžãŒã»ã¢ã·ã¹ã¿ã³ãã®äœ¿çš
ã¹ã¯ãªããã®æ¬¡ã® 3 è¡ã®ã³ãŒãã¯ãã·ãã¥ã¬ãŒã·ã§ã³å ã®ã³ã³ãã¥ãŒã¿ãŒãè¡šã Node ns-XNUMX ãªããžã§ã¯ããå®éã«äœæããŸãã
NodeContainer nodes;
nodes.Create (2);
ç¶è¡ããåã«ãã¯ã©ã¹ã®ããã¥ã¡ã³ããæ¢ããŸããã ããŒãã³ã³ããã ç¹å®ã®ã¯ã©ã¹ã®ããã¥ã¡ã³ãã«ã¢ã¯ã»ã¹ãããã XNUMX ã€ã®æ¹æ³ã¯ãã¿ãã䜿çšããããšã§ãã ã¯ã©ã¹ ããŒãžäžã§ ããã·ã²ã³ã ãã§ã« Doxygen ãéããŠããå Žåã¯ãããŒãžã®äžéšãŸã§ã¹ã¯ããŒã«ã㊠[ã¯ã©ã¹] ã¿ããéžæããŸãã æ°ããã¿ãã®ã»ããã衚瀺ããããã®ãã¡ã® 3 ã€ã¯ã¯ã©ã¹ã®ãªã¹ãã§ãã ãã®ã¿ãã«ã¯ããã¹ãŠã® ns-XNUMX ã¯ã©ã¹ã®ãªã¹ãã衚瀺ãããŸãã äžã«ã¹ã¯ããŒã«ããŠã ns3::NodeContainerã ã¯ã©ã¹ãèŠã€ãã£ããããããéžæããŠããã®ã¯ã©ã¹ã®ããã¥ã¡ã³ãã«ç§»åããŸãã
èŠããŠãããšãããéèŠãªæœè±¡åã® XNUMX ã€ã¯ããŒãã§ãã ããã¯ããããã³ã« ã¹ã¿ãã¯ãã¢ããªã±ãŒã·ã§ã³ãåšèŸºæ©åšã«ãŒããªã©ãè¿œå ããã³ã³ãã¥ãŒã¿ãŒãè¡šããŸãã ããããžãŒã¢ã·ã¹ã¿ã³ã ããŒãã³ã³ãã ãªããžã§ã¯ããäœæã管çãã¢ã¯ã»ã¹ããããã®äŸ¿å©ãªæ¹æ³ãæäŸããŸã Nodeãã·ãã¥ã¬ãŒã·ã§ã³ãå®è¡ããããã«äœæããŸãã äžã®æåã®è¡ã¯åã«å®£èšããŠããŸã ããŒãã³ã³ããããããããŒããšåŒã³ãŸãã XNUMX è¡ç®ã¯ãããŒã ãªããžã§ã¯ãã® Create ã¡ãœãããåŒã³åºããã³ã³ããã« XNUMX ã€ã®ããŒããäœæããããã«èŠæ±ããŸãã ã§èª¬æãããŠããããã«ã ããã·ã²ã³ãã³ã³ãã㯠ns-3 ã·ã¹ãã ã« XNUMX ã€ã®ãªããžã§ã¯ããäœæããããã«èŠæ±ããŸãã Node ãããã®ãªããžã§ã¯ããžã®ãã€ã³ã¿ãå éšã«ä¿åããŸãã
ã¹ã¯ãªããã§äœæãããããŒãã¯ãŸã äœãè¡ããŸããã ããããžæ§ç¯ã®æ¬¡ã®ã¹ãããã¯ãããŒãããããã¯ãŒã¯ã«æ¥ç¶ããããšã§ãã ç§ãã¡ããµããŒããããããã¯ãŒã¯ã®æãåçŽãªåœ¢åŒã¯ãXNUMX ã€ã®ããŒãéã®ãã€ã³ãããŒãã€ã³ãæ¥ç¶ã§ãã ãããããã®ãããªæ¥ç¶ãäœæããŠãããŸãã
ãã€ã³ãããŒãã€ã³ããã«ããŒ
䜿ãæ £ãããã¿ãŒã³ã䜿çšããŠãã€ã³ãããŒãã€ã³ãæ¥ç¶ãäœæããããããž ãã«ã㌠ãªããžã§ã¯ãã䜿çšããŠæ¥ç¶ã«å¿ èŠãªäœã¬ãã«ã®äœæ¥ãå®è¡ããŸãã XNUMX ã€ã®éèŠãªæœè±¡åãæãåºããŠãã ããã ãããããã€ã¹ О ãã£ãã«ã çŸå®ã®äžçã§ã¯ããããã®çšèªã¯åšèŸºæ©åšã«ãŒããšãããã¯ãŒã¯ ã±ãŒãã«ã«ã»ãŒå¯Ÿå¿ããŸãã éåžžãããã XNUMX ã€ã¯äºãã«å¯æ¥ã«é¢é£ããŠãããããã€ã¹ãªã©ã®å ±æãæåŸ ã§ãã人ã¯ããŸããã ã€ãŒãµããã ã¯ã€ã€ã¬ã¹ãã£ãã«çµç±ã§ã ããããž ãã«ããŒã¯ãã®å¯æ¥ãªé¢ä¿ã«åŸã£ãŠããããããã®ã·ããªãªã§ã¯åäžã®ãªããžã§ã¯ãã䜿çšããŸãã ãã€ã³ãããŒãã€ã³ããã«ã㌠ns-3 ãªããžã§ã¯ãã®ã»ããã¢ãããšæ¥ç¶çš ãã€ã³ãããŒãã€ã³ããããããã€ã¹ О ãã€ã³ãããŒãã€ã³ããã£ãã«ã ã¹ã¯ãªããå ã®æ¬¡ã® XNUMX è¡ã¯æ¬¡ã®ãšããã§ãã
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
æåã®è¡ã
PointToPointHelper pointToPoint;
ã¹ã¿ãã¯äžã«ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸã ãã€ã³ãããŒãã€ã³ããã«ããŒã ãããã¬ãã«ã®èŠ³ç¹ããèŠããšã次ã®è¡ã¯ã
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
ãªããžã§ã¯ãã«äŒãã ãã€ã³ãããŒãã€ã³ããã«ã㌠å€ã5 Mbit/sãïŒXNUMX ç§ããã XNUMX ã¡ã¬ãããïŒããããšããŠäœ¿çšããŸããããŒã¿ã¬ãŒã'ã
ããå ·äœçãªèŠ³ç¹ããèŠããšãæååãDataRateãã¯ããããå±æ§ã«çžåœããŸãã ãã€ã³ãããŒãã€ã³ããããããã€ã¹ã èŠãŠã¿ããš ããã·ã²ã³ ææ¥ã®ããã« ns3::PointToPointNetDevice ãããŠã¡ãœããã®ããã¥ã¡ã³ãã§ã¯ GetTypeId ããã€ã¹ã«å®çŸ©ãããŠããå±æ§ã®ãªã¹ãã衚瀺ãããŸãã ãã®äžã«ã¯ãããŒã¿ã¬ãŒãã ãŠãŒã¶ãŒã«è¡šç€ºãããã»ãšãã©ã® ns-3 ãªããžã§ã¯ãã«ã¯ãåæ§ã®å±æ§ãªã¹ãããããŸãã 次ã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ããã®ã¡ã«ããºã ã䜿çšããŠãåã³ã³ãã€ã«ããã«ã·ãã¥ã¬ãŒã·ã§ã³ãç°¡åã«ã»ããã¢ããããŸãã
ã«äŒŒãŠãã "ããŒã¿ã¬ãŒã"PointToPointNetDevice ã§ã¯ãPointToPointChannel ã«é¢é£ä»ãããã "Delay" å±æ§ãèŠã€ãããŸãã æåŸã®è¡
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
圌ã¯è©±ããŸã ãã€ã³ãããŒãã€ã³ããã«ã㌠å€ã2 msã(XNUMX ããªç§) ãããã®åŸäœæããããã€ã³ãããŒãã€ã³ã ãªã³ã¯ã®äŒæé 延å€ãšããŠäœ¿çšããŸãã
ãããããã€ã¹ã³ã³ãã
çŸæç¹ã§ã¯ã¹ã¯ãªããã«ãããŸã ããŒãã³ã³ãããããã«ã¯ XNUMX ã€ã®ããŒããå«ãŸããŸãã æã ã¯æã£ãŠããŸã ãã€ã³ãããŒãã€ã³ããã«ããŒããªããžã§ã¯ããäœæããããã«çšæãããŠããŸã PointToPointNetDevices ãããŠãPointToPointChannel ãªããžã§ã¯ãã䜿çšããŠããããæ¥ç¶ããŸãã NodeContainer ããããž ãã«ã㌠ãªããžã§ã¯ãã䜿çšããŠããŒããäœæããã®ãšåãããã«ã次ã®ããã«å°ããŸãã ãã€ã³ãããŒãã€ã³ããã«ã㌠åœç€Ÿã®ããã€ã¹ã®äœæãæ§æãèšçœ®ã«é¢é£ããäœæ¥ãåœç€Ÿã«ä»£ãã£ãŠå®è¡ããŸãã äœæããããã¹ãŠã®ãªããžã§ã¯ãã®ãªã¹ããå¿ èŠã§ã ãããããã€ã¹ããããã£ãŠãç§ãã¡ã¯äœ¿çšããŸã ãããããã€ã¹ã³ã³ãã 以åãšåãæ¹æ³ã§ä¿ç®¡ãã ããŒãã³ã³ãã äœæããããŒããä¿åããŸãã 次㮠XNUMX è¡ã®ã³ãŒãã¯ã
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
ããã€ã¹ãšãã£ã³ãã«ã®ã»ããã¢ãããå®äºããŸãã æåã®è¡ã¯åè¿°ã®ããã€ã¹ ã³ã³ããã宣èšããXNUMX è¡ç®ã¯äž»ãªäœæ¥ãè¡ããŸãã æ¹æ³ ã€ã³ã¹ããŒã«ãéå§ãã ãªããžã§ã¯ã ãã€ã³ãããŒãã€ã³ããã«ã㌠åãå ¥ãã ããŒãã³ã³ãã ãã©ã¡ãŒã¿ãšããŠã å éš ãããããã€ã¹ã³ã³ãã ã«ããåããŒãã«å¯Ÿã㊠ããŒãã³ã³ãã ãäœæãããŸã (ãã€ã³ãããŒãã€ã³ãéä¿¡ã®å Žåã¯ãã¡ããã© XNUMX ã€å¿ èŠã§ã) ãã€ã³ãããŒãã€ã³ããããããã€ã¹ ãäœæãããããã€ã¹ ã³ã³ãããŒã«ä¿åãããŸãã ãã€ã³ãããŒãã€ã³ããã£ãã« ãäœæãããããã« XNUMX ã€ã¢ã¿ãããããŸã PointToPointNetDevicesã ãªããžã§ã¯ããäœæããåŸã ãã€ã³ãããŒãã€ã³ããã«ããŒãäœæããããªããžã§ã¯ãå ã®å¯Ÿå¿ããå±æ§ãåæåããããã«äœ¿çšãããŸãã
é»è©±ããããåŸ pointToPoint.Install (ããŒã) XNUMX ã€ã®ããŒãããããããããã«ãã€ã³ãããŒãã€ã³ã ãããã¯ãŒã¯ ããã€ã¹ãã€ã³ã¹ããŒã«ããããããã®éã« XNUMX ã€ã®ãã€ã³ãããŒãã€ã³ã ãªã³ã¯ããããŸãã ã©ã¡ãã®ããã€ã¹ãããã£ãã«äžã§ XNUMX ããªç§ã®éä¿¡é 延ã䌎ããXNUMX ã¡ã¬ããã/ç§ã®é床ã§ããŒã¿ãéä¿¡ããããã«æ§æãããŸãã
ã€ã³ã¿ãŒãããã¹ã¿ãã¯ãã«ããŒ
ããã§ããŒããšããã€ã¹ãæ§æãããŸããããããŒãã«ã¯ãããã³ã« ã¹ã¿ãã¯ãã€ã³ã¹ããŒã«ãããŠããŸããã 次㮠XNUMX è¡ã®ã³ãŒãããããåŠçããŸãã
InternetStackHelper stack;
stack.Install (nodes);
ã€ã³ã¿ãŒãããã¹ã¿ãã¯ãã«ã㌠- ãã€ã³ãããŒãã€ã³ã ãããã¯ãŒã¯ ããã€ã¹çšã® PointToPointHelper ã«äŒŒããã€ã³ã¿ãŒããã ã¹ã¿ãã¯çšã®ããããž ãã«ããŒã§ãã æ¹æ³ ã€ã³ã¹ããŒã«ãéå§ãã NodeContainer ããã©ã¡ãŒã¿ãšããŠåãåããŸãã å®è¡ãããšãåã³ã³ãã ããŒãã«ã€ã³ã¿ãŒããã ã¹ã¿ã㯠(TCPãUDPãIP ãªã©) ãã€ã³ã¹ããŒã«ãããŸãã
Ipv4ã¢ãã¬ã¹ãã«ããŒ
次ã«ãããã€ã¹ã IP ã¢ãã¬ã¹ã«é¢é£ä»ããå¿ èŠããããŸãã IP ã¢ãã¬ã¹ã®å²ãåœãŠã管çããããã®ããããž ã¢ã·ã¹ã¿ã³ããæäŸããŸãã ãŠãŒã¶ãŒã«è¡šç€ºãããå¯äžã® API ã¯ãå®éã®ã¢ãã¬ã¹é åžãè¡ããšãã«äœ¿çšããããŒã¹ IP ã¢ãã¬ã¹ãšããããã¹ã¯ã®èšå®ã§ã (ããã¯ãã«ããŒå ã®äœäœã¬ãã«ã§è¡ãããŸã)ã ãµã³ãã« ã¹ã¯ãªããã®æ¬¡ã® XNUMX è¡ã®ã³ãŒã æåã®.cc,
Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");
ã¢ãã¬ã¹ ãã«ã㌠ãªããžã§ã¯ãã宣èšãã10.1.1.0 ããããã¹ã¯ã䜿çšããŠæ±ºå®ããããã«ããããã¯ãŒã¯ 255.255.255.0 ãã IP ã¢ãã¬ã¹ã®å²ãåœãŠãéå§ããããã«æ瀺ããŸãã ããã©ã«ãã§ã¯ãå²ãåœãŠãããã¢ãã¬ã¹ã¯ 10.1.1.1 ããå§ãŸãå調å¢å ããããããã®ããŒã¹ããå²ãåœãŠãããæåã®ã¢ãã¬ã¹ã¯ 10.1.1.2ã次㫠3 ãšããããã«ãªããŸãã å®éã«ã¯ãäœã¬ãã«ã§ã¯ãns-XNUMX ã·ã¹ãã ã¯å²ãåœãŠããããã¹ãŠã® IP ã¢ãã¬ã¹ãèšæ¶ããŠãããåãã¢ãã¬ã¹ã XNUMX åçæãããç¶æ³ã誀ã£ãŠäœæããå Žåã«èŽåœçãªãšã©ãŒãçæããŸã (ã¡ãªã¿ã«ããã®ãšã©ãŒã¯ãããã°ãå°é£ã§ã)ã
次ã®ã³ãŒãè¡ã¯ã
Ipv4InterfaceContainer interfaces = address.Assign (devices);
å®éã®ã¢ãã¬ã¹å²ãåœãŠãå®è¡ããŸãã ns-3 ã§ã¯ããªããžã§ã¯ãã䜿çšã㊠IP ã¢ãã¬ã¹ãšããã€ã¹éã®æ¥ç¶ã確ç«ããŸãã Ipv4ã€ã³ã¿ãŒãã§ãŒã¹ã åŸã§äœ¿çšããããã«ã¢ã·ã¹ã¿ã³ãã«ãã£ãŠäœæããããããã¯ãŒã¯ ããã€ã¹ã®ãªã¹ããå¿ èŠã«ãªãå Žåãããã®ãšåãããã«ããªããžã§ã¯ãã®ãªã¹ããå¿ èŠã«ãªãå ŽåããããŸãã Ipv4ã€ã³ã¿ãŒãã§ãŒã¹. Ipv4ã€ã³ã¿ãŒãã§ãŒã¹ã³ã³ãã ã¯ãã®æ©èœãæäŸããŸãã
ã¹ã¿ãã¯ãã€ã³ã¹ããŒã«ããIP ã¢ãã¬ã¹ãå²ãåœãŠãŠããã€ã³ãããŒãã€ã³ã ãããã¯ãŒã¯ãæ§ç¯ããŸããã 次ã«ããã©ãã£ãã¯ãçæããããã«åããŒãã«ã¢ããªã±ãŒã·ã§ã³ãå¿ èŠã§ãã
4.2.7 ã¢ããªã±ãŒã·ã§ã³ã®äœ¿çš
ns-3 ã·ã¹ãã ã®ãã XNUMX ã€ã®äž»èŠãªæœè±¡åã¯æ¬¡ã®ãšããã§ãã ç³ã蟌㿠ïŒå¿çšïŒã ãã®ã·ããªãªã§ã¯ãXNUMX ã€ã®åºæ¬ã¯ã©ã¹ã®ç¹æ®åã䜿çšããŠããŸãã ç³ã蟌㿠ns-3 ãšåŒã°ãã UdpEchoãµãŒããŒã¢ããªã±ãŒã·ã§ã³ О UdpEchoã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã åã®ã±ãŒã¹ãšåæ§ã«ãè£å©ãªããžã§ã¯ãã䜿çšããŠåºæ¬ãªããžã§ã¯ããæ§æããã³ç®¡çããŸãã ããã§äœ¿çšããã®ã¯ UdpEchoServerHelper О UdpEchoã¯ã©ã€ã¢ã³ããã«ãç§ãã¡ã®ç掻ã楜ã«ããããã®ãªããžã§ã¯ãã
UdpEchoServerHelper
first.cc ãµã³ãã« ã¹ã¯ãªããå ã®æ¬¡ã®ã³ãŒãè¡ã¯ãåã«äœæããããŒãã® XNUMX ã€ã§ UDP ãšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ãæ§æããããã«äœ¿çšãããŸãã
UdpEchoServerHelper echoServer (9);
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
äžèšã®ã¹ããããã®ã³ãŒãã®æåã®è¡ã¯ã UdpEchoServerHelperã ãã€ãã®ããã«ãããã¯ã¢ããªã±ãŒã·ã§ã³ãã®ãã®ã§ã¯ãªããå®éã®ã¢ããªã±ãŒã·ã§ã³ã®äœæã«åœ¹ç«ã€ãªããžã§ã¯ãã§ãã èŠåã® XNUMX ã€ã¯ãå¿ èŠãªå±æ§ããã«ã㌠ãªããžã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ãããšã§ãã ãã®å ŽåããµãŒããŒããã±ããããªãã¹ã³ããããŒãçªå·ãäžããããªãéãããã«ããŒã¯æçãªæäœãè¡ãããšãã§ããŸããããã®çªå·ã¯ã¯ã©ã€ã¢ã³ãã«ãèªèãããŠããå¿ èŠããããŸãã ãã®å ŽåãããŒãçªå·ããã«ã㌠ã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ããŸãã ã³ã³ã¹ãã©ã¯ã¿ãŒã¯åã«æ¬¡ã®ããšãè¡ããŸãã å±æ§ã®èšå® æž¡ãããå€ã䜿çšããŸãã å¿ èŠã«å¿ããŠãåŸã§ SetAttribute ã䜿çšã㊠Port å±æ§ã«å¥ã®å€ãèšå®ã§ããŸãã
ä»ã®å€ãã®è£å©ãªããžã§ã¯ããšåæ§ã«ããªããžã§ã¯ã UdpEchoServerHelper æ¹æ³ããããŸã ã€ã³ã¹ããŒã«ãéå§ããã ãã®ã¡ãœãããå®è¡ãããšãåºæ¬çãªãšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ãå¹æçã«äœæããããã¹ãã«ãã€ã³ããããŸãã èå³æ·±ãããšã«ããã®æ¹æ³ã¯ã ã€ã³ã¹ããŒã«ãéå§ãã åãå ¥ãã ããŒãã³ã³ãã ä»ã®ãã©ã¡ãŒã¿ãšåæ§ã«ãã©ã¡ãŒã¿ãšã㊠ã€ã³ã¹ããŒã«ãéå§ãã ç§ãã¡ãèŠãŠããæ¹æ³ã
ããã§åäœãã C++ ã®æé»çãªå€æã¯ãã¡ãœããã®çµæãåãåããŸãã ããŒã.Get(1) (ããŒã ãªããžã§ã¯ããžã®ã¹ããŒã ãã€ã³ã¿ãŒãè¿ããŸã - Ptr ) ã䜿çšããå¿åãªããžã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã§äœ¿çšããŸãã ããŒãã³ã³ããããã¯ã¡ãœããã«æž¡ãããŸã ã€ã³ã¹ããŒã«ãéå§ããã C++ ã³ãŒãã§ã©ã®ã¡ãœãã ã·ã°ããã£ãã³ã³ãã€ã«ããã³å®è¡ãããããå€æã§ããªãå Žåã¯ãæé»çãªå€æã調ã¹ãŠãã ããã
ä»ã§ã¯ãããããããŸã echoServer.ã€ã³ã¹ããŒã« ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããšããŠããŸã UdpEchoãµãŒããŒã¢ããªã±ãŒã·ã§ã³ ã§èŠã€ãã£ã ããŒãã³ã³ããããŒã (ã€ã³ããã¯ã¹ 1 ã®ããŒã) ã管çããããã«äœ¿çšããŸãã ã¡ãœãã ã€ã³ã¹ããŒã«ãéå§ãã ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãžã®ãã€ã³ã¿ãå«ãã³ã³ãããè¿ããŸã (ãã®å Žåã¯ãå¿åã®ã¢ããªã±ãŒã·ã§ã³ãæž¡ããã®ã§ XNUMX ã€) ããŒãã³ã³ãããXNUMX ã€ã®ããŒããå«ã) ã¯ãã«ããŒã«ãã£ãŠäœæãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãã©ãã£ãã¯ã®çæãéå§ããã¿ã€ãã³ã°ãæå®ããå¿ èŠããã "å§ãã" ãŸããåæ¢ããæå»ãè¿œå ã§æå®ããå¿ èŠãããå ŽåããããŸã "åæ¢"ã ç§ãã¡ã¯äž¡æ¹ã®ãªãã·ã§ã³ãæäŸããŸãã ãããã®æéã¯æ¬¡ã®ã¡ãœããã䜿çšããŠèšå®ãããŸã ã¢ããªã±ãŒã·ã§ã³ã³ã³ãã éå§ Ðž Force Stopã ãããã®ã¡ãœããã¯ã次ã®ã¿ã€ãã®ãã©ã¡ãŒã¿ãåãå ¥ããŸãã Timeã ãã®å ŽåãC++ å€æã®æ瀺çãªã·ãŒã±ã³ã¹ã䜿çšã㊠C++ ãååŸããŸãã 1.0 ãäœæããSeconds ãªããžã§ã¯ãã䜿çšããŠç§ã«å€æãã tns-3 Time ãªããžã§ã¯ãã«å€æããŸãã å€æã«ãŒã«ã¯ã¢ãã«äœæè ãå¶åŸ¡ã§ããC++ ã«ã¯ç¬èªã®ã«ãŒã«ãããããããã©ã¡ãŒã¿ãŒãæåŸ ã©ããã«å€æããããšã¯éããªãããšã«æ³šæããŠãã ããã XNUMXè¡
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
ããã«ããããšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ã¯ã·ãã¥ã¬ãŒã·ã§ã³ã®éå§ãã XNUMX ç§åŸã«éå§ (èªåçã«ãªã³) ãããã·ãã¥ã¬ãŒã·ã§ã³ã® XNUMX ç§åŸã«åæ¢ (ãªã) ã«ãªããŸãã XNUMX ç§åŸã«å®è¡ãããã·ãã¥ã¬ãŒã·ã§ã³ ã€ãã³ã (ã¢ããªã±ãŒã·ã§ã³åæ¢ã€ãã³ã) ã宣èšãããããå°ãªããšã XNUMX ç§éã®ãããã¯ãŒã¯åäœãã·ãã¥ã¬ãŒããããŸãã
UdpEchoClientHelper
ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ echo ãµãŒããŒãšã»ãŒåæ§ã®æ¹æ³ã§æ§æãããŸãã ããŒã¹ãªããžã§ã¯ãããããŸã UdpEchoã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã管çãããŠãã
UdpEchoClientHelper.
UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));;
ãã ãããšã³ãŒ ã¯ã©ã€ã¢ã³ãã®å Žåã¯ãXNUMX ã€ã®ç°ãªãå±æ§ãèšå®ããå¿ èŠããããŸãã æåã® XNUMX ã€ã®å±æ§ã¯äœææã«èšå®ãããŸã UdpEchoClientHelperã å±æ§ãèšå®ããããã« (ãã«ããŒå ã§) 䜿çšããããã©ã¡ãŒã¿ãŒãæž¡ããŸãã ããªã¢ãŒãã¢ãã¬ã¹ã О ããªã¢ãŒãããŒãã å¿ èŠãªãã©ã¡ãŒã¿ããã«ã㌠ã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ããšããåæã«åŸã£ãŠã
䜿ã£ãããšãæãåºããŸããã Ipv4ã€ã³ã¿ãŒãã§ãŒã¹ã³ã³ãã åœç€Ÿãããã€ã¹ã«å²ãåœãŠã IP ã¢ãã¬ã¹ã远跡ããããã ã€ã³ã¿ãŒãã§ã€ã¹ ã³ã³ããå ã®ãã« ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãããŒã ã³ã³ããå ã®ãã« ããŒãã® IP ã¢ãã¬ã¹ã«å¯Ÿå¿ããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ ã³ã³ããå ã®æåã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãããŒã ã³ã³ããå ã®æåã®ããŒãã® IP ã¢ãã¬ã¹ã«å¯Ÿå¿ããŸãã ãããã£ãŠãã³ãŒãã®æåã®è¡ (äžèš) ã§ãã«ããŒãäœæããã¯ã©ã€ã¢ã³ãã®ãªã¢ãŒã ã¢ãã¬ã¹ããµãŒããŒãé 眮ãããŠãããã¹ãã«å²ãåœãŠããã IP ã¢ãã¬ã¹ã«ãªãããšããã«ããŒã«äŒããŸãã ãŸãããã±ãããããŒã XNUMX ã«éä¿¡ãããããã«æé ããå¿ èŠããããšãèšããŸãã
ãMaxPacketsãå±æ§ã¯ãã·ãã¥ã¬ãŒã·ã§ã³äžã«éä¿¡ã§ãããã±ããã®æ倧æ°ãã¯ã©ã€ã¢ã³ãã«äŒããŸãã ãIntervalãå±æ§ã¯ã¯ã©ã€ã¢ã³ãã«ãã±ããéã®åŸ æ©æéãæ瀺ãããPacketSizeãå±æ§ã¯ã¯ã©ã€ã¢ã³ãã«ãã±ããã®ãã€ããŒãã®å€§ãããæ瀺ããŸãã ãã®å±æ§ã®çµã¿åããã䜿çšããŠãåäžã® 1024 ãã€ãã®ãã±ãããéä¿¡ããããã«ã¯ã©ã€ã¢ã³ãã«æ瀺ããŸãã
ãšã³ãŒãµãŒããŒãšåæ§ã«ããšã³ãŒã¯ã©ã€ã¢ã³ãã®å±æ§ãèšå®ããŸãã éå§ Ðž Force Stop, ãã ããããã§ã¯ãµãŒããŒã®é»æºããªã³ã«ãªã£ãŠãã XNUMX ç§åŸ (ã·ãã¥ã¬ãŒã·ã§ã³éå§ã® XNUMX ç§åŸ) ã«ã¯ã©ã€ã¢ã³ããèµ·åããŸãã
4.2.8 ã·ãã¥ã¬ãŒã¿
ãã®æç¹ã§ãã·ãã¥ã¬ãŒã·ã§ã³ãå®è¡ããå¿ èŠããããŸãã ããã¯ã°ããŒãã«é¢æ°ã䜿çšããŠè¡ãããŸã ã·ãã¥ã¬ãŒã¿ãŒ::å®è¡.
Simulator::Run ();
å ã»ã©ã¡ãœãããåŒã³åºãããšãã
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
...
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));
å®éã«ã¯ãã·ãã¥ã¬ãŒã¿ã§ 1,0 ç§ã2,0 ç§ã«ã€ãã³ããã¹ã±ãžã¥ãŒã«ãã10,0 ç§ã« XNUMX ã€ã®ã€ãã³ããã¹ã±ãžã¥ãŒã«ããŸããã é»è©±ã®åŸ ã·ãã¥ã¬ãŒã¿ãŒ::å®è¡ãéžæãããšãã·ã¹ãã ã¯ã¹ã±ãžã¥ãŒã«ãããã€ãã³ãã®ãªã¹ãã®è¡šç€ºãšå®è¡ãéå§ããŸãã ãŸã 1,0 ç§ä»¥å ã«ã€ãã³ããèµ·åãããšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ãããªã¬ãŒããŸã (ãã®ã€ãã³ãã¯ãä»ã®å€ãã®ã€ãã³ããã¹ã±ãžã¥ãŒã«ããããšãã§ããŸã)ã 次ã«ãt=2,0 ç§ã«ã¹ã±ãžã¥ãŒã«ãããã€ãã³ããèµ·åãããšã³ãŒ ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã ç¹°ãè¿ãã«ãªããŸããããã®ã€ãã³ãã§ã¯ããã«å€ãã®ã€ãã³ããäºå®ãããŠããå¯èœæ§ããããŸãã éå§ã€ãã³ãã®ãšã³ãŒ ã¯ã©ã€ã¢ã³ãå®è£ ã¯ããµãŒããŒã«ãã±ãããéä¿¡ããããšã«ãã£ãŠã·ãã¥ã¬ãŒã·ã§ã³ã®ããŒã¿è»¢éãã§ãŒãºãéå§ããŸãã
ãµãŒããŒã«ãã±ãããéä¿¡ããè¡çºã«ãããããã¯ã°ã©ãŠã³ãã§èªåçã«ã¹ã±ãžã¥ãŒã«ãããäžé£ã®ã€ãã³ããããªã¬ãŒãããã¹ã¯ãªããã§èšå®ããã¿ã€ãã³ã° ãã©ã¡ãŒã¿ãŒã«åŸã£ãŠãšã³ãŒ ãã±ãããéä¿¡ããä»çµã¿ãå®è£ ãããŸãã
ãã®çµæãéä¿¡ãããã±ãã㯠XNUMX ã€ã ããªã®ã§ (å±æ§ãæãåºããŠãã ãã)ã æ倧ãã±ããæ° XNUMX ã«èšå®ãããŠããå Žå)ããã®åäžã®ã¯ã©ã€ã¢ã³ã ping ã«ãã£ãŠéå§ãããäžé£ã®ã€ãã³ããçµäºããã·ãã¥ã¬ãŒã·ã§ã³ã¯ã¹ã¿ã³ã〠ã¢ãŒãã«ãªããŸãã ãããçºçãããšãæ®ãã®äºå®ãããŠããã€ãã³ãã¯æ¬¡ã®ã€ãã³ãã«ãªããŸãã Force Stop ãµãŒããŒãšã¯ã©ã€ã¢ã³ãçšã ãããã®ã€ãã³ããå®è¡ããããšãããã«åŠçããã€ãã³ãã¯ãªããªãã ã·ãã¥ã¬ãŒã¿ãŒ::å®è¡ å¶åŸ¡ãè¿ããŸãã ã·ãã¥ã¬ãŒã·ã§ã³ãå®äºããŸããã
ããšã¯èªåã§åŸçä»ããããã ãã§ãã ããã¯ãã°ããŒãã«é¢æ°ãåŒã³åºãããšã«ãã£ãŠè¡ãããŸãã ã·ãã¥ã¬ãŒã¿ãŒ::ãã¹ããã€ã ãã«ããŒé¢æ° (ãŸãã¯äœã¬ãã«ã® ns-3 ã³ãŒã) ãåŒã³åºããããããäœæããããã¹ãŠã®ãªããžã§ã¯ããç Žæ£ããããã¯ãã·ãã¥ã¬ãŒã¿ãŒã«æ¿å ¥ãããããã«ç·šæãããŠããŸãã ãããã®ãªããžã§ã¯ããèªåã§è¿œè·¡ããå¿ èŠã¯ãªããé»è©±ããããã ãã§æžã¿ãŸããã ã·ãã¥ã¬ãŒã¿ãŒ::ãã¹ãã〠ãããŠåºãŠè¡ããŸãã ns-3 ã·ã¹ãã ããã®é¢åãªäœæ¥ãè¡ã£ãŠãããŸãã æåã® ns-3 ã¹ã¯ãªãã first.cc ã®æ®ãã®è¡ã¯ããŸãã«ãããè¡ããŸãã
Simulator::Destroy ();
return 0;
}
ã·ãã¥ã¬ãŒã¿ã¯ãã€åæ¢ããŸãã?
ns-3 ã¯ãé¢æ£ã€ãã³ã (DE) ã·ãã¥ã¬ãŒã¿ãŒã§ãã ãã®ãããªã·ãã¥ã¬ãŒã¿ãŒã§ã¯ãåã€ãã³ãã¯ãã®å®è¡æéã«é¢é£ä»ããããŠãããã·ãã¥ã¬ãŒã·ã§ã³ã®é²è¡ã«å¿ããŠã€ãã³ããçºçããé åºã§åŠçãããŠã·ãã¥ã¬ãŒã·ã§ã³ãç¶è¡ãããŸãã ã€ãã³ãã«ãããå°æ¥ã®ã€ãã³ããã¹ã±ãžã¥ãŒã«ãããããšããããŸã (ããšãã°ãã¿ã€ããŒã¯æ¬¡ã®ééã§ã«ãŠã³ããçµäºããããã«ã¹ã±ãžã¥ãŒã«ãå€æŽã§ããŸã)ã
éåžžãåæã€ãã³ãã¯ãšã³ãã£ãã£ã«ãã£ãŠéå§ãããŸããããšãã°ãIPv6 ã¯ãããã¯ãŒã¯äžã®ãµãŒãã¹ã®æ€åºãè¿é£ãªã¯ãšã¹ããªã©ãã¹ã±ãžã¥ãŒã«ããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯æåã®ãã±ããéä¿¡ã€ãã³ããªã©ãã¹ã±ãžã¥ãŒã«ããŸãã ã€ãã³ããåŠçããããšããŒããXNUMX ã€ããŸãã¯è€æ°ã®ã€ãã³ããçæãããããšããããŸãã ã·ãã¥ã¬ãŒã·ã§ã³ãé²è¡ããã«ã€ããŠãã€ãã³ããçºçããçµäºãããæ°ããã€ãã³ããäœæãããŸãã ã€ãã³ããã¥ãŒã空ã®å ŽåããŸãã¯ç¹å¥ãªã€ãã³ããæ€åºãããå Žåãã·ãã¥ã¬ãŒã·ã§ã³ã¯èªåçã«åæ¢ããŸãã Force Stopã ã€ãã³ã Force Stop é¢æ°ã«ãã£ãŠçæããã ã·ãã¥ã¬ãŒã¿ãŒ::åæ¢ ïŒåæ¢æéïŒã
ã·ãã¥ã¬ãŒã·ã§ã³ãåæ¢ããã«ã¯ Simulator::Stop ã絶察ã«å¿ èŠãšãªãå žåçãªã±ãŒã¹ããããŸããããã¯ãèªç«ããã€ãã³ããããå Žåã§ãã èªç«ç (ãŸãã¯ç¹°ãè¿ã) ã€ãã³ãã¯ãåžžã«ã¹ã±ãžã¥ãŒã«ãå€æŽãããã€ãã³ãã§ãã çµæãšããŠãã€ãã³ã ãã¥ãŒã¯åžžã«ç©ºã«ãªããªãããã«ãªããŸãã ç¹°ãè¿ãã€ãã³ããå«ããããã³ã«ãã¢ãžã¥ãŒã«ã¯æ°å€ããããŸãã次ã«äŸã瀺ããŸãã
⢠FlowMonitor - 倱ããããã±ãããå®æçã«ãã§ãã¯ããŸãã
⢠RIPng â ã«ãŒãã£ã³ã° ããŒãã«æŽæ°ã®å®æçãªãããŒããã£ã¹ãã
⢠ãªã©ã
ãã®ãããªå Žå ã·ãã¥ã¬ãŒã¿ãŒ::åæ¢ ã·ãã¥ã¬ãŒã·ã§ã³ãæ£ããåæ¢ããããã«å¿ èŠã§ãã ããã«ãns-3 ããšãã¥ã¬ãŒã·ã§ã³ ã¢ãŒãã®å ŽåãRealtimeSimulator ã䜿çšããŠã·ãã¥ã¬ãŒã·ã§ã³ ã¯ããã¯ãšãã·ã³ ã¯ããã¯ãåæãããŸãã ã·ãã¥ã¬ãŒã¿ãŒ::åæ¢ ããã»ã¹ãåæ¢ããããã«å¿ èŠã§ãã
æç§æžã«èŒã£ãŠããã·ãã¥ã¬ãŒã·ã§ã³ããã°ã©ã ã®å€ãã¯ã ã·ãã¥ã¬ãŒã¿ãŒ::åæ¢ ãã¥ãŒã«å ¥ããããã€ãã³ãããªããªããšèªåçã«çµäºãããããæ瀺çã«å®è¡ããŸãã ãã ãããããã®ããã°ã©ã 㯠Simulator::Stop åŒã³åºããåãå ¥ããŸãã ããšãã°ãæåã®ããã°ã©ã äŸã«ãã次ã®è¿œå ã¹ããŒãã¡ã³ãã¯ã11 ç§ã§ã®æ瀺çãªåæ¢ãã¹ã±ãžã¥ãŒã«ããŸãã
+ Simulator::Stop (Seconds (11.0));
Simulator::Run ();
Simulator::Destroy ();
return 0;
}
ãã®ç¹å®ã®ã·ãã¥ã¬ãŒã·ã§ã³ã¯ 10 ç§åŸã«èªç¶ã«çµäºãããããäžèšã¯å®éã«ã¯ãã®ããã°ã©ã ã®åäœãå€æŽããŸããã ãã ããäžèšã®ã¹ããŒãã¡ã³ãã®åæ¢æéã 11 ç§ãã 1 ç§ã«å€æŽãããšãåºåãç»é¢ã«è¡šç€ºãããåã«ã·ãã¥ã¬ãŒã·ã§ã³ãåæ¢ããããšãããããŸã (åºåã¯ã·ãã¥ã¬ãŒã·ã§ã³æéã®çŽ 2 ç§åŸã«çºçãããã)ã
Simulator::Run ãåŒã³åºãåã« Simulator::Stop ãåŒã³åºãããšãéèŠã§ãã ããããªããšãSimulator::Run ã stop! ãå®è¡ããããã«ã¡ã€ã³ ããã°ã©ã ã«å¶åŸ¡ãæ»ããªãå¯èœæ§ããããŸãã
4.2.9 ã¹ã¯ãªããã®æ§ç¯
ã·ã³ãã«ãªã¹ã¯ãªããã®äœæãç°¡åã«ãªããŸããã ã¹ã¯ãªãããã¹ã¯ã©ãã ãã£ã¬ã¯ããªã«çœ®ãã ãã§ãå®è¡ãããšèªåçã«ãã«ããããŸãã ã¯ãã ãã£ãŠã¿ããã æäžäœãã£ã¬ã¯ããªã«æ»ã£ãŠã³ããŒããŸã äŸ/ãã¥ãŒããªã¢ã«/first.cc ã«ã¿ãã°ãž ã¹ã¯ã©ãã
$ cd ../..
$ cp examples/tutorial/first.cc scratch/myfirst.cc
次ã«ã次ã䜿çšããŠæåã®ãµã³ãã« ã¹ã¯ãªãããæ§ç¯ããŸãã WAF:
$ ./waf
æåã®äŸãæ£åžžã«äœæãããããšã瀺ãã¡ãã»ãŒãžã衚瀺ãããã¯ãã§ãã
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
[614/708] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_3.o
[706/708] cxx_link: build/debug/scratch/myfirst_3.o -> build/debug/scratch/myfirst
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (2.357s)
ããã§ããµã³ãã«ãå®è¡ã§ããããã«ãªããŸã (ããã°ã©ã ãã¹ã¯ã©ãã ãã£ã¬ã¯ããªã«ãã«ãããå Žåã¯ã次ã®ãã£ã¬ã¯ããªããå®è¡ããå¿ èŠãããããšã«æ³šæããŠãã ãã) ã¹ã¯ã©ãã):
$ ./waf --run scratch/myfirst
åæ§ã®åºåã衚瀺ãããã¯ãã§ãã
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s) Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2
ããã§ã¯ããã«ã ã·ã¹ãã ããã¡ã€ã«ããã«ããããããšã確èªãããããå®è¡ããŠããããšãããããŸãã ãšã³ãŒ ã¯ã©ã€ã¢ã³ãã®ã³ã³ããŒãã³ã ãšã³ããªã¯ãåäžã® 1024 ãã€ã ãã±ããããšã³ãŒ ãµãŒã㌠10.1.1.2 ã«éä¿¡ããããšã瀺ããŠããããšãããããŸãã ãšã³ãŒ ãµãŒããŒäžã®ãã° ã³ã³ããŒãã³ãã«ãã1024 ãã 10.1.1.1 ãã€ããåä¿¡ããããšã衚瀺ãããŸãã ãšã³ãŒ ãµãŒããŒã¯ãã±ããããµã€ã¬ã³ãã«åçãããšã³ãŒ ã¯ã©ã€ã¢ã³ãã®ãã°ã§ãµãŒããŒãããã±ãããåä¿¡ããããšãããããŸãã
4.3 ns-3 ãœãŒã¹ã³ãŒã
ns-3 ãã«ããŒã®äžéšã䜿çšããã®ã§ããã®æ©èœãå®è£
ãããœãŒã¹ ã³ãŒãã®äžéšãèŠãŠã¿ãŸãããã ææ°ã®ã³ãŒãã¯ã次ã®ãªã³ã¯ã«ãã Web ãµãŒããŒã§åç
§ã§ããŸãã
summary | shortlog | changelog | graph | tags | files
å ã«é²ã¿ããã¡ã€ã«ã®ãªã³ã¯ãéžæããŠãã ããã ã»ãšãã©ã®ãªããžããªã®ãããã¬ãã«ã¯æ¬¡ã®ããã«ãªããŸãã
drwxr-xr-x [up]
drwxr-xr-x bindings python files
drwxr-xr-x doc files
drwxr-xr-x examples files
drwxr-xr-x ns3 files
drwxr-xr-x scratch files
drwxr-xr-x src files
drwxr-xr-x utils files
-rw-r--r-- 2009-07-01 12:47 +0200 560 .hgignore file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1886 .hgtags file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1276 AUTHORS file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 30961 CHANGES.html file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 17987 LICENSE file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 3742 README file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 16171 RELEASE_NOTES file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 6 VERSION file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 88110 waf file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 28 waf.bat file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 35395 wscript file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 7673 wutils.py file | revisions | annotate
ãµã³ãã« ã¹ã¯ãªããã¯æ¬¡ã®ãã£ã¬ã¯ããªã«ãããŸãã äŸã äŸãã¯ãªãã¯ãããšããµããã£ã¬ã¯ããªã®ãªã¹ãã衚瀺ãããŸãã ãµããã£ã¬ã¯ããªå ã®ãã¡ã€ã«ã® XNUMX 〠ãã¥ãŒããªã¢ã« - first.ccã ãã¯ãªãã¯ãããš æåã®.cc åŠç¿ããã°ããã®ã³ãŒãã衚瀺ãããŸãã
ãœãŒã¹ã³ãŒãã¯äž»ã«æ¬¡ã®ãã£ã¬ã¯ããªã«ãããŸãã SRCã ãã£ã¬ã¯ããªåãã¯ãªãã¯ãããããã£ã¬ã¯ããªåã®å³åŽã«ãããã¡ã€ã«ã®ãªã³ã¯ãã¯ãªãã¯ãããšããœãŒã¹ ã³ãŒãã衚瀺ã§ããŸãã src ãã£ã¬ã¯ããªãã¯ãªãã¯ãããšãsrc ãµããã£ã¬ã¯ããªã®ãªã¹ãã衚瀺ãããŸãã 次ã«ã³ã¢ã®ãµããã£ã¬ã¯ããªãã¯ãªãã¯ãããšããã¡ã€ã«ã®ãªã¹ãã衚瀺ãããŸãã (ãã®ã¬ã€ãã®å·çæç¹ã§) æåã«è¡šç€ºããããã¡ã€ã«ã¯æ¬¡ã®ãšããã§ãã äžæ¢ããŸããhã ãªã³ã¯ãã¯ãªãã¯ãããš äžæ¢ããŸããhã®ãœãŒã¹ãã¡ã€ã«ã«éä¿¡ãããŸãã äžæ¢ããŸããhãç°åžžãªç¶æ ãæ€åºãããå Žåã«ã¹ã¯ãªãããçµäºããããã®äŸ¿å©ãªãã¯ããå«ãŸããŠããŸãã ãã®ç« ã§äœ¿çšãããã«ããŒã®ãœãŒã¹ ã³ãŒãã¯ã次ã®ãã£ã¬ã¯ããªã«ãããŸãã src/ã¢ããªã±ãŒã·ã§ã³/ãã«ããŒã ãã£ã¬ã¯ã㪠ããªãŒãèªç±ã«æ¢çŽ¢ããŠãäœãã©ãã«ãããã確èªããns-3 ããã°ã©ã ã®ã¹ã¿ã€ã«ãç解ããŠãã ããã
åºæïŒ habr.com