5 èšå®
5.1 ãã®ã³ã°ã¢ãžã¥ãŒã«ã®äœ¿çš
5.1.1 ãã®ã³ã°ã®æŠèŠ
5.1.2 ãã°ãæå¹ã«ãã
5.1.3 ã³ãŒããžã®ãã°ã®è¿œå
5.2 ã³ãã³ãã©ã€ã³åŒæ°ã®äœ¿çš
5.2.1 ããã©ã«ãã®å±æ§å€ã®äžæžã
5.2.2 ç¬èªã®ã³ãã³ãã®ãã£ããã£
5.3 ãã¬ãŒã¹ã·ã¹ãã ã®äœ¿çš
5.3.1 ASCII ãã¬ãŒã¹
ASCII ãã¬ãŒã¹ã®è§£æ
5.3.2 PCAP ãã¬ãŒã¹
ç« 5
調æŽ
5.1 ãã®ã³ã°ã¢ãžã¥ãŒã«ã®äœ¿çš
ã¹ã¯ãªãããèŠãŠãns-3 ãã®ã³ã° ã¢ãžã¥ãŒã«ã«ã€ããŠç°¡åã«èª¬æããŸããã æåã®.ccã ãã®ç« ã§ã¯ããã®ã³ã° ãµãã·ã¹ãã ã®å¯èœãªçšéã詳ããèŠãŠãããŸãã
5.1.1 ãã®ã³ã°ã®æŠèŠ
å€ãã®å€§èŠæš¡ã·ã¹ãã ã¯ãäœããã®ã¡ãã»ãŒãž ãã°æ©èœããµããŒãããŠãããns-3 ãäŸå€ã§ã¯ãããŸããã å Žåã«ãã£ãŠã¯ããšã©ãŒ ã¡ãã»ãŒãžã®ã¿ãããªãã¬ãŒã¿ ã³ã³ãœãŒã«ã (éåžžãUnix ããŒã¹ã®ã·ã¹ãã ã§ã¯ stderr) ã«æžã蟌ãŸããŸãã ä»ã®ã·ã¹ãã ã§ã¯ãèŠåã¡ãã»ãŒãžãšãã詳现ãªæ å ±ã衚瀺ãããå ŽåããããŸãã å Žåã«ãã£ãŠã¯ããã° ããŒã«ã䜿çšããŠãããã° ã¡ãã»ãŒãžãåºåããããããåºåãããã«äžé®®æã«ãªãå¯èœæ§ããããŸãã
ns-3 ã§äœ¿çšããã subHRD ã¯ããããã®ã¬ãã«ã®æ å ±ã³ã³ãã³ãããã¹ãŠæçšã§ããããšãåæãšããŠãããã¡ãã»ãŒãž ãã°ã«å¯Ÿããéžæçã§éå±€çãªã¢ãããŒããæäŸããŸãã ãã®ã³ã°ã¯å®å šã«ç¡å¹ã«ããããšããã³ã³ããŒãã³ãããšã«æå¹ã«ããããšããã°ããŒãã«ã«æå¹ã«ããããšãã§ããŸãã ãã®ç®çã®ããã«ã調æŽå¯èœãªã¬ãã«ã®æ å ±ã³ã³ãã³ãã䜿çšãããŸãã ns-3 ãã®ã³ã° ã¢ãžã¥ãŒã«ã¯ãã·ãã¥ã¬ãŒã·ã§ã³ããæçšãªæ å ±ãååŸããæ¯èŒçç°¡åãªæ¹æ³ãæäŸããŸãã
ã¢ãã«ããããŒã¿ãæœåºããããã®æ±çšã¡ã«ããºã ã§ãããã¬ãŒã¹ãæäŸãããŠããããšãç解ããŠãã ãããããã¯ãã·ãã¥ã¬ãŒã·ã§ã³ã®åªå åºåãšãªãã¯ãã§ã (ãã¬ãŒã¹ ã·ã¹ãã ã®è©³çŽ°ã«ã€ããŠã¯ããã¥ãŒããªã¢ã«ã®ã»ã¯ã·ã§ã³ 5.3 ãåç §ããŠãã ãã)ã ãã®ã³ã°ã¯ããããã°æ å ±ãèŠåããšã©ãŒ ã¡ãã»ãŒãžãååŸããããã¹ã¯ãªãããã¢ãã«ããã¡ãã»ãŒãžããã€ã§ãããã«åºåãããããå Žåã«æšå¥šãããæ¹æ³ã§ãã
çŸåšãã·ã¹ãã ã§ã¯ãæ å ±å 容ã®å€§ããé ã« XNUMX ã€ã®ã¬ãã« (çš®é¡) ã®ãã° ã¡ãã»ãŒãžãå®çŸ©ãããŠããŸãã
- LOG_ERROR - ãšã©ãŒ ã¡ãã»ãŒãžã®ãã°èšé² (é¢é£ãã¯ã: NS_LOG_ERROR)ã
- LOG_WARN - ãã°èŠåã¡ãã»ãŒãž (é¢é£ãã¯ã: NS_LOG_WARN)ã
- LOG_DEBUG - æ¯èŒçãŸããªç¹å¥ãªãããã° ã¡ãã»ãŒãžããã°ã«èšé²ããŸã (é¢é£ãã¯ã: NS_LOG_DEBUG)ã
- LOG_INFO - ããã°ã©ã ã®é²è¡ç¶æ³ã«é¢ããæ å ±ã¡ãã»ãŒãžã®ç»é² (é¢é£ãã¯ã: NS_LOG_INFO);
- LOG_FUNCTION - åŒã³åºãããåé¢æ°ã説æããã¡ãã»ãŒãžããã°ã«èšé²ããŸã (ã¡ã³ããŒé¢æ°ã«äœ¿çšããã NS_LOG_FUNCTION ãšéçé¢æ°ã«äœ¿çšããã NS_LOG_FUNCTION_NOARGS ã® XNUMX ã€ã®é¢é£ãã¯ã)ã
- LOG_LOGIC - é¢æ°å ã®è«çãããŒã説æãããã°ã¡ãã»ãŒãž (é¢é£ãã¯ã: NS_LOG_LOGIC)ã
- LOG_ALL - äžèšã®ãã¹ãŠããã°ã«èšé²ããŸã (é¢é£ãããã¯ãã¯ãããŸãã)ã
åã¿ã€ã (LOG_TYPE) ã«ã¯ LOG_LEVEL_TYPE ããããããã䜿çšãããšãããèªäœã®ã¬ãã«ã«å ããŠããã®äžã®ãã¹ãŠã®ã¬ãã«ããã°ã«èšé²ã§ããããã«ãªããŸãã (çµæãšããŠãLOG_ERROR ãš LOG_LEVEL_ERRORãããã³ LOG_ALL ãš LOG_LEVEL_ALL ã¯æ©èœçã«åçã§ãã) ããšãã°ãLOG_INFO ãæå¹ã«ãããšãNS_LOG_INFO ãã¯ãã«ãã£ãŠæäŸãããã¡ãã»ãŒãžã®ã¿ãèš±å¯ãããŸãããLOG_LEVEL_INFO ãæå¹ã«ãããšããã¯ã NS_LOG_DEBUGãNS_LOG_WARNãããã³ NS_LOG_ERROR ã«ãã£ãŠæäŸãããã¡ãã»ãŒãžãå«ãŸããŸãã
ãŸãããã° ã¬ãã«ãéžæã³ã³ããŒãã³ãã«é¢ä¿ãªããåžžã«è¡šç€ºãããç¡æ¡ä»¶ã®ãã° ãã¯ããæäŸããŸãã
- NS_LOG_UNCOND - é¢é£ã¡ãã»ãŒãžã®ç¡æ¡ä»¶ãã®ã³ã° (é¢é£ãã®ã³ã° ã¬ãã«ãªã)ã
åã¬ãã«ã¯åå¥ã«ãŸãã¯çŽ¯ç©çã«ã¯ãšãªã§ããŸãã ãã®ã³ã°ã¯ãsh ç°å¢å€æ° NS_LOG ã䜿çšããããã·ã¹ãã é¢æ°åŒã³åºãã®ãã°ãèšé²ããããšã«ãã£ãŠæ§æã§ããŸãã åã«ç€ºããããã«ããã®ã³ã° ã·ã¹ãã ã«ã¯ Doxygen ã®ããã¥ã¡ã³ããããããŸã ã¬ãã¥ãŒããŠããªãå Žåã¯ããã®æ©äŒã«ã¬ãã¥ãŒããŠãã ããã
ããã¥ã¡ã³ãã詳ããèªãã ã®ã§ããã®ç¥èãå©çšããŠãµã³ãã« ã¹ã¯ãªããããèå³æ·±ãæ å ±ãååŸããŸãããã ã¹ã¯ã©ãã/myfirst.ccãã§ã«ã³ã³ãã€ã«æžã¿ã®ãã®ã§ãã
5.1.2 ãã°ãæå¹ã«ãã
NS_LOG ç°å¢å€æ°ã䜿çšããŠããã«ãã°ãå®è¡ããŸãããããã ãããŸããç¶æ³ãææ¡ããããã«ãåã«è¡ã£ãããã«æåŸã®ã¹ã¯ãªãããå®è¡ããŸãã
$ ./waf --run scratch/myfirst
æåã® ns-3 ãµã³ãã« ããã°ã©ã ããã®èŠæ £ããåºåã衚瀺ãããã¯ãã§ãã
$ 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.413s)
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2
äžã«è¡šç€ºããããéä¿¡ãã¡ãã»ãŒãžãšãåä¿¡ãã¡ãã»ãŒãžã¯ãå®éã«ã¯æ¬¡ãããã°ã«èšé²ãããã¡ãã»ãŒãžã§ããããšãããããŸãã UdpEchoã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ О UdpEchoãµãŒããŒã¢ããªã±ãŒã·ã§ã³ã ããšãã°ãNS_LOG ç°å¢å€æ°ãä»ããŠãã° ã¬ãã«ãèšå®ããããšã§ãã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã«è¿œå æ å ±ãåºåããããã«äŸé Œã§ããŸãã
ããããã¯ããVARIABLE=valueãæ§æã䜿çšãã sh ã«äŒŒãã·ã§ã«ã䜿çšããŠãããšä»®å®ããŸãã csh ã®ãããªã·ã§ã«ã䜿çšããŠããå Žåã¯ãç§ã®äŸããããã®ã·ã§ã«ã§å¿ èŠãªãsetenv å€æ°å€ãæ§æã«å€æããå¿ èŠããããŸãã
çŸåšãUDP ãšã³ãŒ ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã¯ã次ã®ã³ãŒãè¡ã«å¿çããŸãã ã¹ã¯ã©ãã/myfirst.cc,
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
ãã°ã¬ãã« LOG_LEVEL_INFO ãæå¹ã«ããŸãã ãã®ã³ã° ã¬ãã« ãã©ã°ãæž¡ããšãå®éã«ã¯ãã®ã¬ãã«ãšãã¹ãŠã®äžäœã¬ãã«ãæå¹ã«ãªããŸãã ãã®å ŽåãNS_LOG_INFOãNS_LOG_DEBUGãNS_LOG_WARNãNS_LOG_ERROR ãæå¹ã«ããŸããã NS_LOG ç°å¢å€æ°ã次ã®ããã«èšå®ãããšãã¹ã¯ãªããã®å€æŽãåã³ã³ãã€ã«ãè¡ããã«ããã° ã¬ãã«ãäžããŠããå€ãã®æ å ±ãååŸã§ããŸãã
$ export NS_LOG=UdpEchoClientApplication=level_all
ããã§ãsh ã·ã§ã«å€æ° NS_LOG ã次ã®å€ã«èšå®ããŸãã
UdpEchoClientApplication=level_all
å²ãåœãŠã®å·ŠåŽã¯æ§æãããã°ã«èšé²ãããã³ã³ããŒãã³ãã®ååã§ãå³åŽã¯ããã«é©çšãããã©ã°ã§ãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã§ãã¹ãŠã®ã¬ãã«ã®ãããã°ãæå¹ã«ããŸãã NS_LOG ããã®ããã«èšå®ããŠã¹ã¯ãªãããå®è¡ãããšãns-3 ãã° ã·ã¹ãã ã¯å€æŽãåãå ¥ãã次ã®åºåã衚瀺ãããŸãã
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.404s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
Received 1024 bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠæäŸãããè¿œå ã®ãããã°æ
å ±ã¯ãNS_LOG_FUNCTION ã¬ãã«ã«ãªããŸããã ã¹ã¯ãªããå®è¡äžã®é¢æ°åŒã³åºãã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã衚瀺ãããŸãã ååãšããŠãã¡ãœããé¢æ°ã§ã¯ (å°ãªããšã) ã䜿çšããããšãæãŸããã§ããNS_LOG_FUNCTION (this)
..ã äœ¿çš NS_LOG_FUNCTION_NOARGS ()
éçé¢æ°å
ã®ã¿ã ãã ããns-3 ã·ã¹ãã ã¯ãã°æ©èœããµããŒãããå¿
èŠããªãããšã«æ³šæããŠãã ããã èšé²ãããæ
å ±ã®éã«é¢ãã決å®ã¯ãåã
ã®ã¢ãã«éçºè
ã«ä»»ãããŠããŸãã ãšã³ãŒ ã¢ããªã±ãŒã·ã§ã³ã®å Žåã倧éã®ãã°åºåãå©çšå¯èœã§ãã
ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠè¡ãããé¢æ°åŒã³åºãã®ãã°ã衚瀺ã§ããããã«ãªããŸããã ããèŠããšãè¡ã®éã«ã³ãã³ãããããšã«æ°ã¥ããŸãã UdpEchoã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ ã¡ãœããã®ååãããã«ã¯ C++ ã¹ã³ãŒãæŒç®å (: :) ãå«ãŸãããšæãããŸãã ããã¯æå³çãªãã®ã§ãã
ããã¯å®éã«ã¯ã¯ã©ã¹ã®ååã§ã¯ãªãããã®ã³ã° ã³ã³ããŒãã³ãã®ååã§ãã ãœãŒã¹ ãã¡ã€ã«ãšã¯ã©ã¹ãäžèŽããå Žåãéåžžã¯ã¯ã©ã¹åã§ãããå®éã«ã¯ã¯ã©ã¹åã§ã¯ãªããäºéã³ãã³ã§ã¯ãªãåäžã³ãã³ãããããšã«æ³šæããŠãã ããã ããã¯ãæ¯èŒç埮åŠãªæ¹æ³ã§ãã®ã³ã° Bean åãã¯ã©ã¹åããæŠå¿µçã«åé¢ããã®ã«åœ¹ç«ã€æ¹æ³ã§ãã
ãã ããå Žåã«ãã£ãŠã¯ãã©ã®ã¡ãœãããå®éã«ãã° ã¡ãã»ãŒãžãçæããŠããããå€æããããšãé£ããå ŽåããããŸãã äžã®ããã¹ããèŠããšããããšããè¡ãã©ãã«ããã®ãçåã«æããããããŸãããReceived 1024 bytes from 10.1.1.2
ã ã¬ãã«ãèšå®ããããšã§ãã®åé¡ã解決ã§ããŸã ãã¬ãã£ãã¯ã¹_æ©èœ NS_LOG ç°å¢å€æ°ã«è¿œå ããŸãã 次ã®ããšãè©ŠããŠãã ããã
$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'
OR æŒç®ãè¡šãããã«äœ¿çšãã瞊æ£ã Unix ãã€ã ã³ãã¯ã¿ã§ãããããåŒçšç¬Šãå¿ èŠã§ããããšã«æ³šæããŠãã ããã ããã§ã¹ã¯ãªãããå®è¡ãããšããã° ã·ã¹ãã ã«ãã£ãŠãç¹å®ã®ãã°å ã®ãã¹ãŠã®ã¡ãã»ãŒãžã«ã³ã³ããŒãã³ãåãæ¥é èŸãšããŠä»ããããããšãããããŸãã
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.417s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
ããã§ãUDP ãšã³ãŒ ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ããã®ãã¹ãŠã®ã¡ãã»ãŒãžããã®ããã«èå¥ãããããšãããããŸãã ã¡ãã»ãŒãž "Received 1024 bytes from 10.1.1.2
" ã¯ãecho ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ããã®ãã®ã§ããããšãæ確ã«èå¥ãããããã«ãªããŸããã æ®ãã®ã¡ãã»ãŒãžã¯ UDP ãšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ããéä¿¡ãããå¿
èŠããããŸãã ãã®ã³ã³ããŒãã³ããæå¹ã«ããã«ã¯ãã³ãã³ã§åºåãããã³ã³ããŒãã³ãã®ãªã¹ãã NS_LOG ç°å¢å€æ°ã«å
¥åããŸãã
$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
UdpEchoServerApplication=level_all|prefix_func'
èŠå: äžèšã®ããã¹ãäŸã§ã¯ãã³ãã³ (:) ã®åŸã®æ¹è¡æåãåé€ããå¿ èŠããããŸããæ¹è¡æåã¯ããã¥ã¡ã³ãã®æžåŒèšå®ã«äœ¿çšãããŸãã ããã§ã¹ã¯ãªãããå®è¡ãããšãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®ãšã³ãŒ ã¢ããªã±ãŒã·ã§ã³ããã®ãã¹ãŠã®ãã° ã¡ãã»ãŒãžã衚瀺ãããŸãã ããã¯ãããã°æã«éåžžã«äŸ¿å©ã§ããããšãããããŸãã
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.406s)
UdpEchoServerApplication:UdpEchoServer()
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoServerApplication:StartApplication()
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
UdpEchoServerApplication:HandleRead(): Echoing packet
UdpEchoClientApplication:HandleRead(0x624920, 0x625160)
UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
UdpEchoServerApplication:StopApplication()
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()
ãã° ã¡ãã»ãŒãžãçæãããã·ãã¥ã¬ãŒã·ã§ã³æéã確èªã§ãããšäŸ¿å©ãªå ŽåããããŸãã ORããããè¿œå ããããšã§ãããè¡ãããšãã§ããŸã ãã¬ãã£ãã¯ã¹æé:
$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time: UdpEchoServerApplication=level_all|prefix_func|prefix_time'
ããã§ããäžèšã®æ¹è¡æåãåé€ããå¿ èŠããããŸãã ããã§ã¹ã¯ãªãããå®è¡ãããšã次ã®åºåã衚瀺ãããã¯ãã§ãã
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)
0s UdpEchoServerApplication:UdpEchoServer()
0s UdpEchoClientApplication:UdpEchoClient()
0s UdpEchoClientApplication:SetDataSize(1024)
1s UdpEchoServerApplication:StartApplication()
2s UdpEchoClientApplication:StartApplication()
2s UdpEchoClientApplication:ScheduleTransmit()
2s UdpEchoClientApplication:Send()
2s UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
2.00369s UdpEchoServerApplication:HandleRead(): Echoing packet
2.00737s UdpEchoClientApplication:HandleRead(0x624290, 0x624ad0)
2.00737s UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
10s UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()
ã³ã³ã¹ãã©ã¯ã¿ãŒã¯æ¬¡ã®ããšã«æ³šæããŠãã ããã UdpEchoãµãŒã㌠ã·ãã¥ã¬ãŒã·ã§ã³äžã« 0 ç§éåŒã³åºãããŸããã ããã¯å®éã«ã¯ã·ãã¥ã¬ãŒã·ã§ã³ã®éå§åã«çºçããŸãããæé㯠XNUMX ç§ãšããŠè¡šç€ºãããŸãã ã³ã³ã¹ãã©ã¯ã¿ãŒã¡ãã»ãŒãžã«ãåãããšãåœãŠã¯ãŸããŸã UdpEchoã¯ã©ã€ã¢ã³ã.
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)
0s UdpEchoServerApplication:UdpEchoServer()
0s UdpEchoClientApplication:UdpEchoClient()
0s UdpEchoClientApplication:SetDataSize(1024)
1s UdpEchoServerApplication:StartApplication()
2s UdpEchoClientApplication:StartApplication()
2s UdpEchoClientApplication:ScheduleTransmit()
2s UdpEchoClientApplication:Send()
2s UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
2.00369s UdpEchoServerApplication:HandleRead(): Echoing packet
2.00737s UdpEchoClientApplication:HandleRead(0x624290, 0x624ad0)
2.00737s UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
10s UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()
ã¹ã¯ãªãããæãåºããŠãã ãã ã¹ã¯ã©ãã/first.cc ã·ãã¥ã¬ãŒã·ã§ã³éå§ã® XNUMX ç§åã«ãšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ãéå§ããŸããã ããã§ãã¡ãœããã ã¢ããªã±ãŒã·ã§ã³ã®éå§ ãµãŒããŒã¯å®éã«ã¯æåã® XNUMX ç§ã§åŒã³åºãããŸãã ã¹ã¯ãªããã§èŠæ±ããããã«ããšã³ãŒ ã¯ã©ã€ã¢ã³ããã·ãã¥ã¬ãŒã·ã§ã³ã® XNUMX ç§ç®ã«éå§ãããããšã«ãæ°ã¥ãã§ãããã
é話äžã«ã·ãã¥ã¬ãŒã·ã§ã³ã®é²è¡ç¶æ³ã远跡ã§ããããã«ãªããŸãã ã¹ã±ãžã¥ãŒã«éä¿¡ HandleRead ã³ãŒã«ããã¯ãåŒã³åºãã¯ã©ã€ã¢ã³ãå ãšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ã§éä¿¡ããŸãã ãã€ã³ãããŒãã€ã³ã ãªã³ã¯çµç±ã§ãã±ãããéä¿¡ããã®ã«ãããæé㯠3,69 ããªç§ã§ããããšã«æ³šæããŠãã ããã ãšã³ãŒ ãµãŒããŒããã±ããã«å¿çããããšã瀺ãã¡ãã»ãŒãžããã°ã«èšé²ãããã£ãã«é 延ã®åŸããšã³ãŒ ã¯ã©ã€ã¢ã³ãã HandleRead ã¡ãœããã§ãšã³ãŒ ãã±ãããåä¿¡ããŠââããããšãããããŸãã
ãã®ã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ãæ°ã¥ããªããã¡ã«å€ãã®ããšãèµ·ãããŸãã ãã ããã·ã¹ãã å ã®ãã¹ãŠã®ãã° ã³ã³ããŒãã³ããæå¹ã«ããããšã§ãããã»ã¹å šäœãéåžžã«ç°¡åã«è¿œè·¡ã§ããŸãã NS_LOG å€æ°ã次ã®å€ã«èšå®ããŠã¿ãŠãã ããã
$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'
äžã®ã¢ã¹ã¿ãªã¹ã¯ã¯ããã° ã³ã³ããŒãã³ãã®ã¯ã€ã«ãã«ãŒãæåã§ãã ããã«ã¯ãã·ãã¥ã¬ãŒã·ã§ã³ã§äœ¿çšããããã¹ãŠã®ã³ã³ããŒãã³ãã®ãã¹ãŠã®ãšã³ããªãå«ãŸããŸãã ããã§ã¯åºåãåçŸããŸãã (ãã®èšäºã®å·çæç¹ã§ã¯ã1265 ã€ã®ãšã³ãŒ ãã±ããã«å¯Ÿã㊠XNUMX è¡ã®åºåãçæãããŸã) ãããã®æ å ±ããã¡ã€ã«ã«ãªãã€ã¬ã¯ãããŠã奜ã¿ã®ãšãã£ã¿ãŒã§è¡šç€ºããããšãã§ããŸãã
$ ./waf --run scratch/myfirst > log.out 2>&1
ç§ã¯å人çã«ãåé¡ããããã©ãã§åé¡ãèµ·ãã£ãã®ãããããªããšãã«ããã®éåžžã«è©³çŽ°ãªããŒãžã§ã³ã®ãã®ã³ã°ã䜿çšããŠããŸãã ãã¬ãŒã¯ãã€ã³ããèšå®ãããããããã¬ãŒã§ã³ãŒããã¹ãããå®è¡ãããããããšãªããã³ãŒãã®å®è¡ãéåžžã«ç°¡åã«è¿œè·¡ã§ããŸãã ãæ°ã«å ¥ãã®ãšãã£ã¿ãŒã§åºåãç·šéããæåŸ ã©ããã®çµæãæ¢ããŠã¿ããšãäºæ³å€ã®ããšãèµ·ããããšãããããŸãã äœãåé¡ãªã®ãã倧ãŸãã«ææ¡ãããããããã¬ãŒãèµ·åããŠåé¡ãæãäžããŸãã ãã®ã¿ã€ãã®åºåã¯ãã¹ã¯ãªããããŸã£ããäºæããªãåäœãããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã ãããã¬ãŒã®ã¿ã䜿çšããŠããå Žåã¯ãã²ãããå®å šã«èŠéããŠããŸãå¯èœæ§ããããŸãã ç»é²ãããšããã®ãããªå€åãé¡èã«ãªããŸãã
5.1.3 ã³ãŒããžã®ãã°ã®è¿œå
è€æ°ã®ãã¯ããããã° ã³ã³ããŒãã³ããåŒã³åºãããšã§ãã·ãã¥ã¬ãŒã·ã§ã³ã«æ°ãããšã³ããªãè¿œå ã§ããŸãã ã¹ã¯ãªããã§ãã£ãŠã¿ãã myfirst.ccããã¯ãcleanããã£ã¬ã¯ããªã«ãããŸãã ãã®ã·ããªãªã§ãã° ã³ã³ããŒãã³ããå®çŸ©ããããšãæãåºããŠãã ããã
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
NS_LOG ç°å¢å€æ°ãããŸããŸãªã¬ãã«ã§èšå®ãããšããã®ã³ã³ããŒãã³ãããã®ãã¹ãŠã®ã¡ãã»ãŒãžã®ãã°ãæå¹ã«ã§ããããšãããããŸããã ã¹ã¯ãªããã«ããã€ãã®ãšã³ããªãè¿œå ããŠã¿ãŸãããã æ
å ±ã¬ãã«ã®ã¡ãã»ãŒãžããã°ã«è¿œå ããããã«äœ¿çšããããã¯ã㯠NS_LOG_INFO ã§ãã ã¹ã¯ãªããããããããžã®äœæããã§ãŒãºã«ããããšãéç¥ããã¡ãã»ãŒãžã (ããŒãã®äœæãéå§ããçŽåã«) è¿œå ããŸãããã ããã¯æ¬¡ã®ã³ãŒã ã¹ããããã§è¡ãããŸãã
éã ã¹ã¯ã©ãã/myfirst.cc ãæ°ã«å
¥ãã®ãšãã£ã¿ãŒã§æ¬¡ã®è¡ãè¿œå ããŸãã
NS_LOG_INFO ("Creating Topology");
è¡ã®çŽåã«ã
NodeContainer nodes;
nodes.Create (2);
次ã«ã次ã䜿çšããŠã¹ã¯ãªãããã³ã³ãã€ã«ããŸãã WAFã NS_LOG å€æ°ãã¯ãªã¢ããŠãåã«æå¹ã«ãããã° ã¹ããªãŒã ãç¡å¹ã«ããŸãã
$ ./waf
$ export NS_LOG=
ТепеÑÑ, еÑлО Ð²Ñ Ð·Ð°Ð¿ÑÑÑОÑе ÑкÑОпÑ,
$ ./waf --run scratch/myfirst
é¢é£ãããã° ã³ã³ããŒãã³ã (FirstScriptExample) ãæå¹ã«ãªã£ãŠããªããããæ°ããã¡ãã»ãŒãžã¯è¡šç€ºãããŸããã ã¡ãã»ãŒãžã衚瀺ããã«ã¯ããã°ã³ã³ããŒãã³ããæå¹ã«ããå¿ èŠããããŸã æåã®ã¹ã¯ãªããã®äŸ NS_LOG_INFO 以äžã®ã¬ãã«ã ãã®ç¹å®ã®ãã°ã¬ãã«ã確èªãããã ãã®å Žåã¯ã次ã®ããã«æå¹ã«ã§ããŸãã
$ export NS_LOG=FirstScriptExample=info
ããã§ã¹ã¯ãªãããå®è¡ãããšããããããžã®äœæããšããæ°ããã¡ãã»ãŒãžã衚瀺ãããŸãã
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.404s)
Creating Topology
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2
5.2 ã³ãã³ãã©ã€ã³åŒæ°ã®äœ¿çš
5.2.1 ããã©ã«ãã®å±æ§å€ã®äžæžã
ç·šéããã«ããè¡ããã« ns-3 ã¹ã¯ãªããã®åäœãå€æŽãããã XNUMX ã€ã®æ¹æ³ã¯ãã³ãã³ã ã©ã€ã³åŒæ°ã䜿çšããããšã§ãã ã³ãã³ãã©ã€ã³åŒæ°ã解æãããã®çµæã«åºã¥ããŠããŒã«ã«å€æ°ãšã°ããŒãã«å€æ°ãèªåçã«èšå®ããã¡ã«ããºã ãæäŸããŸãã
ã³ãã³ã ã©ã€ã³åŒæ°ã·ã¹ãã ã䜿çšããæåã®æé ã¯ãã³ãã³ã ã©ã€ã³ ããŒãµãŒã宣èšããããšã§ãã 次ã®ã³ãŒãã®ããã«ããã㯠(ã¡ã€ã³ ããã°ã©ã å ã§) éåžžã«ç°¡åã«å®è¡ã§ããŸãã
int
main (int argc, char *argv[])
{
...
CommandLine cmd;
cmd.Parse (argc, argv);
...
}
ãã®åçŽãª 3 è¡ã®ã¹ããããã¯ãå®éã«ã¯ããèªäœã§éåžžã«äŸ¿å©ã§ãã ããã¯ãns-XNUMX ã°ããŒãã«å€æ°ããã³å±æ§ã·ã¹ãã ãžã®æãéããŸãã ã¡ã€ã³ ã¹ã¯ãªããé¢æ°ã®å é ã« XNUMX è¡ã®ã³ãŒããè¿œå ããŸãããã ã¹ã¯ã©ãã/myfirst.ccã 次ã«ãã¹ã¯ãªãããã³ã³ãã€ã«ããŠå®è¡ããŸããå®è¡æã«æ¬¡ã®ããã«ãã«ã ãªã¯ãšã¹ããäœæããŸãã
$ ./waf --run "scratch/myfirst --PrintHelp"
ãã®ã³ãã³ãã¯å°ããŸã ã¯ã ã¹ã¯ãªãããå®è¡ãã ã¹ã¯ã©ãã/åããŠã® ã³ãã³ãã©ã€ã³åŒæ°ãæž¡ããŸã âããªã³ããã«ãã åŒçšç¬Šã¯ãåŒæ°ãã©ã®ããã°ã©ã ã察象ãšããŠãããã瀺ãããã«å¿ èŠã§ãã ã³ãã³ãã©ã€ã³ããŒãµãŒã¯åŒæ°ãæ€åºããŸã âããªã³ããã«ã çãã衚瀺ãããŸãã
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.413s)
TcpL4Protocol:TcpStateMachine()
CommandLine:HandleArgument(): Handle arg name=PrintHelp value=
--PrintHelp: Print this help message.
--PrintGroups: Print the list of groups.
--PrintTypeIds: Print all TypeIds.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintGlobals: Print the list of globals.
ããã§ã¯ãªãã·ã§ã³ãèŠãŠã¿ãŸããã âPrintAttributesã first.cc ã¹ã¯ãªãããæ€èšãããšãã«ãns-3 å±æ§ã·ã¹ãã ã«ã€ããŠã¯ãã§ã«è¿°ã¹ãŸããã 次ã®ã³ãŒãè¡ã確èªããŸããã
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
ãããŠåœŒãã¯ããèšããŸãã ããŒã¿ã¬ãŒã å®éã«ã¯å±æ§ã§ã ãã€ã³ãããŒãã€ã³ããããããã€ã¹ã ã³ãã³ãã©ã€ã³åŒæ°ããŒãµãŒã䜿çšããŠå±æ§ã衚瀺ããŸããã ãã€ã³ãããŒãã€ã³ããããããã€ã¹ã ãã«ã ãªã¹ãã«ã¯ãæäŸããå¿ èŠããããã®ãèšèŒãããŠããŸã ã¿ã€ãIDã ããã¯ã察象ã®å±æ§ãå±ããã¯ã©ã¹ã®ååã§ãã ç§ãã¡ã®å Žåã¯æ¬¡ã®ããã«ãªããŸã ns3::PointToPointNetDeviceã åã«é²ãããå ¥ã£ãŠã
$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"
ã·ã¹ãã ã¯ããã®ãããã¯ãŒã¯ ããã€ã¹ ã¿ã€ãã®ãã¹ãŠã®å±æ§ãåºåããŸãã ãªã¹ãå ã®å±æ§ã«ã¯æ¬¡ã®ãã®ãããããšãããããŸãã
--ns3::PointToPointNetDevice::DataRate=[32768bps]:
The default data rate for point to point links
ããã¯ããªããžã§ã¯ãã®äœææã«ã·ã¹ãã ã«ãã£ãŠäœ¿çšãããããã©ã«ãå€ã§ãã ãã€ã³ãããŒãã€ã³ããããããã€ã¹ã ãã©ã¡ãŒã¿ã䜿çšããŠãã®ããã©ã«ãå€ããªãŒããŒã©ã€ãããŸãã å±æ§ в ãã€ã³ãããŒãã€ã³ããã«ã㌠ããé«ãã ãã€ã³ãããŒãã€ã³ã ããã€ã¹ãšãã£ãã«ã«ã¯ããã©ã«ãå€ã䜿çšããŸãããã ãããè¡ãã«ã¯ãé話ãåé€ããŸã ããã€ã¹å±æ§ã®èšå® О SetChannelAttribute ã® myfirst.ccãããã¯ã¯ãªãŒã³ãªãã£ã¬ã¯ããªã«ãããŸãã
ã¹ã¯ãªããã¯æ¬¡ã®ããã«å®£èšããã ãã§ãã ãã€ã³ãããŒãã€ã³ããã«ã㌠ãŸãã以äžã®äŸã«ç€ºããããªã€ã³ã¹ããŒã«æäœã¯å®è¡ããªãã§ãã ããã
...
NodeContainer nodes;
nodes.Create (2);
PointToPointHelper pointToPoint;
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
...
æ°ããã¹ã¯ãªãããäœæããŠãã ãã ã¯ã (./waff) ã«æ»ã£ãŠãUDP ãšã³ãŒ ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ããã®ãšã³ããªãå«ããŠãæå»ãã¬ãã£ãã¯ã¹ãå«ããŠã¿ãŸãããã
$ export 'NS_LOG=UdpEchoServerApplication=level_all|prefix_time'
ã¹ã¯ãªãããå®è¡ãããšã次ã®åºåã衚瀺ãããã¯ãã§ãã
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.405s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.25732s Received 1024 bytes from 10.1.1.1
2.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()
æåŸã«ã·ãã¥ã¬ãŒã·ã§ã³æéã調ã¹ããšããã€ãŸããšã³ãŒ ãµãŒããŒããã±ãããåä¿¡ããç¬éã®æéã 2,00369 ç§ã ã£ãããšãæãåºããŠãã ããã
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
çŸåšã圌㯠2.25732 ç§ä»¥å ã«ãã±ãããåä¿¡ããŸãã ããã¯ãPointToPointNetDevice ããŒã¿ ã¬ãŒãã 32768 ã¡ã¬ããã/ç§ããããã©ã«ãå€ã® XNUMX ããã/ç§ã«ãªã»ããããã ãã§ããããã§ãã ã³ãã³ã ã©ã€ã³ã䜿çšããŠæ°ãã DataRate ã眮ãæãããšãã·ãã¥ã¬ãŒã·ã§ã³ãåã³é«éåã§ããŸãã help èŠçŽ ã«ãã£ãŠæ瀺ãããåŒã«åŸã£ãŠãããã次ã®ããã«å®è¡ããŸãã
$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"
ããã«ãããDataRate å±æ§ãããã©ã«ãå€ã® XNUMX ã¡ã¬ããã/ç§ã«æ»ããŸãã ãã®çµæã«é©ããŸããã? ã¹ã¯ãªããã®å ã®åäœã«æ»ãã«ã¯ãå ã®é床ã«äžèŽããããã«ãã£ãã«é 延ãèšå®ããå¿ èŠãããããšãããããŸããã ãããã¯ãŒã¯ ããã€ã¹ã®å Žåãšåãããã«ãã³ãã³ã ã©ã€ã³ ã·ã¹ãã ã«ãã£ãã«å±æ§ãåºåããããã«äŸé Œã§ããŸãã
$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointChannel"
ãã£ãã«é 延å±æ§ã次ã®ããã«èšå®ãããŠããããšãããããŸãã
--ns3::PointToPointChannel::Delay=[0ns]:
Transmission delay through the channel
次ã«ãã³ãã³ã ã©ã€ã³ ã·ã¹ãã ã䜿çšããŠããããã®äž¡æ¹ã®ããã©ã«ãå€ãèšå®ã§ããŸãã
$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms"
ãã®å Žåãã¹ã¯ãªãã㧠DataRate ãš Delay ãæ瀺çã«èšå®ãããšãã®æéã埩å ããŸãã
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.417s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.00369s Received 1024 bytes from 10.1.1.1
2.00369s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()
ãã±ãã㯠2,00369 ç§åŸã«ãµãŒããŒã«ãã£ãŠå床åä¿¡ãããããšã«æ³šæããŠãã ããã å®éã«ã¯ãã¹ã¯ãªããã§äœ¿çšãããä»»æã®å±æ§ããã®æ¹æ³ã§èšå®ã§ããŸãã ç¹ã«ãMaxPackets å±æ§ã XNUMX 以å€ã®å€ã«èšå®ã§ããŸãã UdpEchoã¯ã©ã€ã¢ã³ã.
ã©ã®ããã«äœ¿çšããŸãã? è©ŠããŠã¿ãã ããã©ã«ãã®å±æ§å€ããªãŒããŒã©ã€ãããŠæ瀺çã«èšå®ããå Žæãã³ã¡ã³ãã¢ãŠãããå¿ èŠãããããšã«æ³šæããŠãã ããã æ倧ãã±ããæ° ã¹ã¯ãªããã§ã 次ã«ãã¹ã¯ãªãããåæ§ç¯ããå¿ èŠããããŸãã ã³ãã³ã ã©ã€ã³ã䜿çšããŠãæ°ããããã©ã«ãå±æ§å€ãèšå®ããããã®æ§æãã«ããååŸããããšãã§ããŸãã ãããç解ãããšãã³ãã³ã ã©ã€ã³ã«è¡šç€ºãããããã±ãŒãžã®æ°ãå¶åŸ¡ã§ããããã«ãªããŸãã ç§ãã¡ã¯å匷家ãªã®ã§ãã³ãã³ãã©ã€ã³ã¯æ¬¡ã®ããã«ãªããŸãã
$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms
--ns3::UdpEchoClient::MaxPackets=2"
ãã®æç¹ã§çããåœç¶ã®çåã¯ãããããã¹ãŠã®å±æ§ã®ååšãã©ã®ããã«ããŠç¥ãããšããããšã§ãã ç¹°ãè¿ããŸãããã³ãã³ã ã©ã€ã³ ã·ã¹ãã ã«ã¯ããã®åé¡ã«é¢ãããã«ãæ©èœããããŸãã ã³ãã³ãã©ã€ã³ã«ãã«ããæ±ãããšã以äžã衚瀺ãããã¯ãã§ãã
$ ./waf --run "scratch/myfirst --PrintHelp"
myfirst [Program Arguments] [General Arguments]
General Arguments:
--PrintGlobals: Print the list of globals.
--PrintGroups: Print the list of groups.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintTypeIds: Print all TypeIds.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintHelp: Print this help message.
ãPrintGroupsãåŒæ°ãéžæãããšãç»é²ãããŠãããã¹ãŠã®ã°ã«ãŒãã®ãªã¹ãã衚瀺ãããŸãã ã¿ã€ãIDã ã°ã«ãŒãåã¯ããœãŒã¹ ãã£ã¬ã¯ããªå ã®ã¢ãžã¥ãŒã«ã®ååãšäžèŽããŠããŸã (倧æåã§ãã)ã ãã¹ãŠã®æ å ±ãäžåºŠã«å°å·ãããšèšå€§ã«ãªããããè¿œå ã®ãã£ã«ã¿ãŒã䜿çšããŠæ å ±ãã°ã«ãŒãããšã«å°å·ã§ããŸãã ããã§ãåã³ãã€ã³ãããŒãã€ã³ã ã¢ãžã¥ãŒã«ã«çŠç¹ãåœãŠãŸãã
./waf --run "scratch/myfirst --PrintGroup=PointToPoint"
TypeIds in group PointToPoint:
ns3::PointToPointChannel
ns3::PointToPointNetDevice
ns3::PointToPointRemoteChannel
ns3::PppHeader
ããã§ã¯ãå±æ§æ€çŽ¢ã«äœ¿çšã§ãã TypeId åãèŠã€ããããšãã§ããŸããããšãã°ã
--PrintAttributes = ns3 :: PointToPointChannel
äžã«ç€ºãããã«ã
å±æ§ã«ã€ããŠåŠã¶ãã 3 ã€ã®æ¹æ³ã¯ãDoxygen nsâXNUMX ã䜿çšããããšã§ãã ã·ãã¥ã¬ãŒã¿ãŒã«ç»é²ãããŠãããã¹ãŠã®å±æ§ããªã¹ãããããŒãžããããŸãã
5.2.2 ç¬èªã®ã³ãã³ãã®ãã£ããã£
ã³ãã³ãã©ã€ã³ ã·ã¹ãã ã䜿çšããŠç¬èªã®ããã¯ãè¿œå ããããšãã§ããŸãã ããã¯ãã³ãã³ã ã©ã€ã³ ããŒãµãŒ ã¡ãœããã䜿çšããŠéåžžã«ç°¡åã«å®è¡ã§ããŸãã ä»å 䟡å€.
ãã®æ©èœã䜿çšããŠããŸã£ããç°ãªãæ¹æ³ã§è¡šç€ºããããã±ãŒãžã®æ°ãæå®ããŠã¿ãŸãããã ãšããããŒã«ã«å€æ°ãè¿œå ããŸããã nãã±ãã é¢æ°ã« ã¡ã€ã³ã 以åã®ããã©ã«ãã®åäœãšäžèŽããããã«ãããã XNUMX ã«èšå®ããŸãã ã³ãã³ã ã©ã€ã³ ããŒãµãŒããã®å€ãå€æŽã§ããããã«ããã«ã¯ãããŒãµãŒã§ãã®å€ããã£ããã£ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãåŒã³åºããè¿œå ããŸã ä»å 䟡å€ã è¡ã£ãŠã¹ã¯ãªãããå€æŽããŠãã ãã ã¹ã¯ã©ãã/myfirst.cc 次ã®ã³ãŒãããå§ãããšã
int
main (int argc, char *argv[])
{
uint32_t nPackets = 1;
CommandLine cmd;
cmd.AddValue("nPackets", "Number of packets to echo", nPackets);
cmd.Parse (argc, argv);
...
ã¹ã¯ãªããå 㧠MaxPackets å±æ§ãèšå®ããäœçœ®ãŸã§äžã«ã¹ã¯ããŒã«ãã次ã«ç€ºãããã«ãå®æ° 1 ã§ã¯ãªã nPackets å€æ°ã«èšå®ãããããã«å±æ§ãå€æŽããŸãã
echoClient.SetAttribute ("MaxPackets", UintegerValue (nPackets));
ããã§ãã¹ã¯ãªãããå®è¡ã㊠-PrintHelp åŒæ°ãæå®ãããšãæ°ãããŠãŒã¶ãŒåŒæ°ã衚瀺ãããã¯ãã§ãã ãã«ãç»é¢ã«èšèŒãããŠããŸãã å ¥åã
$ ./waf --run "scratch/myfirst --PrintHelp"
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.403s)
--PrintHelp: Print this help message.
--PrintGroups: Print the list of groups.
--PrintTypeIds: Print all TypeIds.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintGlobals: Print the list of globals.
User Arguments:
--nPackets: Number of packets to echo
éä¿¡ããããã±ããã®æ°ãå€æŽãããå Žåã¯ãã³ãã³ã ã©ã€ã³åŒæ° -nPackets ãèšå®ããããšã§å€æŽã§ããŸãã
$ ./waf --run "scratch/myfirst --nPackets=2"
ä»ãããªãã¯ä»èŠãã¯ãã§ã
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.404s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.25732s Received 1024 bytes from 10.1.1.1
2.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
Sent 1024 bytes to 10.1.1.2
3.25732s Received 1024 bytes from 10.1.1.1
3.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()
ãã㧠XNUMX ã€ã®è·ç©ãéä¿¡ãããŸããã ãšãŠãã·ã³ãã«ã§ããã
ns-3 ãŠãŒã¶ãŒã¯ãã³ãã³ã ã©ã€ã³åŒæ°ã·ã¹ãã ã䜿çšããŠã°ããŒãã«å€ãšå±æ§ãæäœã§ããããšãããããŸãã ã¢ãã«äœæè
ã®å Žåã¯ããªããžã§ã¯ãã«æ°ããå±æ§ãè¿œå ã§ããŸãããããã®å±æ§ã¯ããŠãŒã¶ãŒãã³ãã³ã ã©ã€ã³ ã·ã¹ãã ãéããŠèªåçã«æ§æã§ããããã«ãªããŸãã ã¹ã¯ãªããäœæè
ã®å Žåã¯ãã¹ã¯ãªããã«æ°ããå€æ°ãè¿œå ããããããã³ãã³ã ã©ã€ã³ ã·ã¹ãã ã«ã·ãŒã ã¬ã¹ã«æ¥ç¶ã§ããŸãã
5.3 ãã¬ãŒã¹ã·ã¹ãã ã®äœ¿çš
ã¢ããªã³ã°ã®èŠç¹ã¯ããããªãç 究ã®ããã®åºåãçæããããšã§ãããns-3 ãã¬ãŒã¹ ã·ã¹ãã ã¯ãã®ããã®äž»èŠãªã¡ã«ããºã ã§ãã ns-3 㯠C++ ããã°ã©ã ã§ãããããC++ ããã°ã©ã ããåºåãçæããæšæºçãªæ段ã䜿çšã§ããŸãã
#include <iostream>
...
int main ()
{
...
std::cout << "The value of x is " << x << std::endl;
...
}
ãã®ã³ã° ã¢ãžã¥ãŒã«ã䜿çšããŠããœãªã¥ãŒã·ã§ã³ã«å°ããªæ§é ãè¿œå ããããšãã§ããŸãã ãã®ã¢ãããŒãã«ãã£ãŠåŒãèµ·ããããæ¢ç¥ã®åé¡ãå€æ°ããããããããã®åé¡ã解決ããããã®äžè¬çãªã€ãã³ã ãã¬ãŒã¹ ãµãã·ã¹ãã ãæäŸããŸããã
ns-3 ãã¬ãŒã¹ ã·ã¹ãã ã®äž»ãªç®çã¯æ¬¡ã®ãšããã§ãã
-
åºæ¬çãªã¿ã¹ã¯ã®å Žåããã¬ãŒã¹ ã·ã¹ãã ã§ã¯ããŠãŒã¶ãŒãäžè¬çãªãœãŒã¹ã®æšæºãã¬ãŒã¹ãçæãããã¬ãŒã¹ãçæãããªããžã§ã¯ããéžæã§ããããã«ããå¿ èŠããããŸãã
-
äžçŽãŠãŒã¶ãŒã¯ãã·ãã¥ã¬ãŒã¿ ã³ã¢ãå€æŽããã«ããã¬ãŒã¹ ã·ã¹ãã ãæ¡åŒµããŠãçæãããåºå圢åŒãå€æŽããããæ°ãããã¬ãŒã¹ ãœãŒã¹ãæ¿å ¥ãããã§ããå¿ èŠããããŸãã
-
äžçŽãŠãŒã¶ãŒã¯ãã·ãã¥ã¬ãŒã¿ ã³ã¢ãå€æŽããŠãæ°ãããã¬ãŒã¹ ãœãŒã¹ãšã·ã³ã¯ãè¿œå ã§ããŸãã ns-3 ãã¬ãŒã¹ ã·ã¹ãã ã¯ãç¬ç«ãã远跡ãœãŒã¹ãšåä¿¡æ©ã®åçãããã³ãœãŒã¹ãæ¶è²»è ã«æ¥ç¶ããããã®çµ±äžã¡ã«ããºã ã«åºã¥ããŠæ§ç¯ãããŠããŸãã
ns-3 ãã¬ãŒã¹ ã·ã¹ãã ã¯ãç¬ç«ãããã¬ãŒã¹ ãœãŒã¹ãšã¬ã·ãŒããŒã®åçãããã³ãœãŒã¹ãšã¬ã·ãŒããŒãæ¥ç¶ããããã®çµ±åã¡ã«ããºã ã«åºã¥ããŠæ§ç¯ãããŠããŸãã ãã¬ãŒã¹ ãœãŒã¹ã¯ãã·ãã¥ã¬ãŒã·ã§ã³å ã§çºçããã€ãã³ããéç¥ããåºç€ãšãªã察象ããŒã¿ãžã®ã¢ã¯ã»ã¹ãæäŸã§ãããªããžã§ã¯ãã§ãã ããšãã°ããã¬ãŒã¹ ãœãŒã¹ã¯ããããã¯ãŒã¯ ããã€ã¹ããã€ãã±ãããåä¿¡ãããã瀺ããé¢å¿ã®ãããã¬ãŒã¹åä¿¡è ããã±ããã®å 容ãå©çšã§ããããã«ããããšãã§ããŸãã
ãã¬ãŒã¹ ãœãŒã¹ã¯ãã·ã³ã¯ã«ãã£ãŠæäŸãããæ å ±ã䜿çšããŠå®éã«æçšãªåŠçãè¡ãã³ãŒãã®ä»ã®éšåãšãçµåãããªãéããããèªäœã§ã¯åœ¹ã«ç«ã¡ãŸããã ãã¬ãŒãµã¯ããã¬ãŒã¹ ãœãŒã¹ã«ãã£ãŠæäŸãããã€ãã³ããšããŒã¿ã®ã³ã³ã·ã¥ãŒãã§ãã ããšãã°ã(åã®äŸã®ãã¬ãŒã¹ ãœãŒã¹ã«æ¥ç¶ãããŠããå Žåã«) åä¿¡ãããã±ããå ã®å¯Ÿè±¡éšåãåºåãããã¬ãŒã¹ ã·ã³ã¯ãäœæã§ããŸãã
ãã®æ瀺çãªåé¢ã®æ ¹æ ã¯ããŠãŒã¶ãŒãã·ãã¥ã¬ãŒã¿ãŒ ã³ã¢ãç·šéããŠåã³ã³ãã€ã«ããããšãªããæ°ããã·ã³ã¯ ã¿ã€ããæ¢åã®ãã¬ãŒã¹ ãœãŒã¹ã«æ¥ç¶ã§ããããã«ããããšã§ãã ãããã£ãŠãäžèšã®äŸã§ã¯ããŠãŒã¶ãŒã¯ã¹ã¯ãªãããç·šéããã ãã§ãã¹ã¯ãªããã§æ°ãããã¬ãŒãµãŒãå®çŸ©ããã·ãã¥ã¬ãŒã·ã§ã³ ã³ã¢ã§å®çŸ©ãããŠããæ¢åã®ãã¬ãŒã¹ ãœãŒã¹ã«æ¥ç¶ã§ããŸãã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãããã€ãã®äºåå®çŸ©ããããœãŒã¹ãšã·ã³ã¯ã確èªãããŠãŒã¶ãŒåŽã§æå°éã®åŽåã§ããããæ§æããæ¹æ³ã瀺ããŸãã ãã¬ãŒã¹åå空éã®æ¡åŒµãæ°ãããã¬ãŒã¹ ãœãŒã¹ã®äœæãªã©ãé«åºŠãªãã¬ãŒã¹èšå®ã®è©³çŽ°ã«ã€ããŠã¯ãns-3 ããã¥ã¢ã«ãŸãã¯ããŠã㌠ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
5.3.1 ASCII ãã¬ãŒã¹
ns-3 ã¯ãåçŽãªãã±ãã ãã¬ãŒã¹ãèšå®ããéã®è©³çŽ°ãæ¯æŽããäœã¬ãã«ã®ãã¬ãŒã¹ ã·ã¹ãã ãæäŸãããã«ããŒæ©èœãæäŸããŸãã ãã®æ©èœãæå¹ã«ãããšãåºåã ASCII ãã¡ã€ã«ã§è¡šç€ºãããŸãã ns-2 åºåã«æ £ããŠãã人ã«ãšã£ãŠããã®ã¿ã€ãã®ãã¬ãŒã¹ã¯æ¬¡ã®ããã«ãªããŸãã ã¢ãŠã.trãå€ãã®ã¹ã¯ãªããã«ãã£ãŠçæãããŸãã
æ¬é¡ã«åãæãããASCII ãã¬ãŒã¹çµæãScratch/myfirst.cc ã¹ã¯ãªããã«è¿œå ããŸãããã é»è©±ããããçŽåã« Simulator :: Run ()
ã«ã次ã®ã³ãŒãè¡ãè¿œå ããŸãã
AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr"));
ä»ã®å€ãã® ns-3 ã€ãã£ãªã ãšåæ§ã«ããã®ã³ãŒãã¯ãã«ã㌠ãªããžã§ã¯ãã䜿çšã㊠ASCII ãã¬ãŒã¹ãäœæããŸãã XNUMX è¡ç®ã«ã¯ XNUMX ã€ã®ãã¹ããããã¡ãœããåŒã³åºããå«ãŸããŠããŸãã ãå åŽãã¡ãœãã CreateFileStream() å¿åãªããžã§ã¯ã ã€ãã£ãªã ã䜿çšããŠã¹ã¿ãã¯äžã«ãã¡ã€ã« ã¹ããªãŒã ãªããžã§ã¯ã (ãªããžã§ã¯ãåãªã) ãäœæãããããåŒã³åºãããã¡ãœããã«æž¡ããŸãã ããã«ã€ããŠã¯ä»åŸããã«è©³ãã説æããŸããããã®æç¹ã§ç¥ã£ãŠããå¿ èŠãããã®ã¯ã次ã®ãã¡ã€ã«ãè¡šããªããžã§ã¯ããäœæããŠãããšããããšã ãã§ãã myfirst.tr ãããns-3ã«è»¢éããŸãã äœæããããªããžã§ã¯ãããã®åç¶æéå šäœã«ããã£ãŠç®¡çããããšã ns-3 ã«å§èšãããã®éãC++ ã¹ããªãŒã ãªããžã§ã¯ã ã³ã㌠ã³ã³ã¹ãã©ã¯ã¿ãŒã«é¢é£ããããŸãç¥ãããŠããªã (æå³çãª) å¶éã«ãã£ãŠåŒãèµ·ããããåé¡ã解決ããŸãã
å€ç·é話 EnableAsciiAll() ãã¹ãŠã®ãã€ã³ãããŒãã€ã³ã ããã€ã¹æ¥ç¶ã®ã·ãã¥ã¬ãŒã·ã§ã³ã« ASCII ãã¬ãŒã¹ãå«ããããšãããã³ (æå®ããã) ãã¬ãŒã¹ ã¬ã·ãŒããŒããã±ãã移åæ å ±ã ASCII 圢åŒã§èšé²ããããšãã¢ã·ã¹ã¿ã³ãã«æ瀺ããŸãã
ns-2 ã«è©³ãã人ã«ãšã£ãŠã远跡ãããã€ãã³ãã¯ãã€ãã³ãã+ããã-ãããdããããã³ãrããèšé²ããæ¢ç¥ã®ãã¬ãŒã¹ãã€ã³ããšåçã§ãã
ããã§ãã¹ã¯ãªããããã«ãããŠã³ãã³ã ã©ã€ã³ããå®è¡ã§ããããã«ãªããŸãã
$ ./waf --run scratch/myfirst
ãããŸã§äœåºŠããã£ãããã«ãWaf ããã®ããã€ãã®ã¡ãã»ãŒãžã衚瀺ããããã®åŸãå®è¡äžã®ããã°ã©ã ããã®ããã€ãã®ã¡ãã»ãŒãžãšãšãã«ã'ãã«ã' ãæ£åžžã«çµäºããŸããããšããã¡ãã»ãŒãžã衚瀺ãããŸãã
å®è¡ãããšãããã°ã©ã ã¯æ¬¡ã®ååã®ãã¡ã€ã«ãäœæããŸãã myfirst.trã ä»äºã®æ§è³ªäž ã¯ããããã©ã«ãã§ã¯ããã¡ã€ã«ã¯ããŒã«ã« ãã£ã¬ã¯ããªã§ã¯ãªãããªããžããªã®æäžäœãã£ã¬ã¯ããªã«äœæãããŸãã ãã¬ãŒã¹ãä¿åããããã¹ãå€æŽãããå Žåã¯ãWaf ãã©ã¡ãŒã¿ã䜿çšããŠæå®ã§ããŸãã --cwd
ã ããã¯ãŸã è¡ã£ãŠããªãããããæ°ã«å
¥ãã®ãšãã£ã¿ãŒã§ ASCII ãã¬ãŒã¹ ãã¡ã€ã« myfirst.tr ã確èªããã«ã¯ããªããžããªã®æäžäœãã£ã¬ã¯ããªã«ç§»åããå¿
èŠããããŸãã
ASCII ãã¬ãŒã¹ã®è§£æ
ããã«ã¯ããªãé«å¯åºŠã®åœ¢åŒã§å€ãã®æ å ±ãå«ãŸããŠããŸãããæåã«æ³šç®ããå¿ èŠãããã®ã¯ããã¡ã€ã«ãåã ã®è¡ã§æ§æãããŠãããšããããšã§ãã 衚瀺ãŠã£ã³ããŠãããã«æ¡å€§ãããšããããã¯ã£ãããšè¡šç€ºãããŸãã
ãã¡ã€ã«å ã®åè¡ã¯ãã¬ãŒã¹ ã€ãã³ãã«å¯Ÿå¿ããŸãã ãã®å Žåãã·ãã¥ã¬ãŒã·ã§ã³å ã®åãã€ã³ãããŒãã€ã³ã ãããã¯ãŒã¯ ããã€ã¹ã«ååšããéä¿¡ãã¥ãŒå ã®ã€ãã³ãã远跡ããŸãã éä¿¡ãã¥ãŒã¯ããã€ã³ãããŒãã€ã³ã ãªã³ã¯ã§åãã±ãããééããå¿ èŠããããã¥ãŒã§ãã ãã¬ãŒã¹ ãã¡ã€ã«ã®åè¡ã¯ XNUMX æåã§å§ãŸã (ãã®åŸã«ã¹ããŒã¹ããã) ããšã«æ³šæããŠãã ããã ãã®èšå·ã¯æ¬¡ã®æå³ãæã¡ãŸãã
+: ããã€ã¹ãã¥ãŒäžã§ãã¥ãŒã€ã³ã°æäœãçºçããŸããã
-: ããã€ã¹ãã¥ãŒå
ã§èŠçŽ ã®ååŸæäœãçºçããŸããã
d: ãã±ããã¯ãããããããŸãããéåžžã¯ãã¥ãŒããã£ã±ãã ã£ãããã§ãã
r: ãã±ããã¯ãããã¯ãŒã¯ããã€ã¹ã«ãã£ãŠåä¿¡ãããŸããã
ãã¬ãŒã¹ ãã¡ã€ã«ã®æåã®è¡ã詳ããèŠãŠã¿ãŸãããã ãããããã€ãã®éšåã«åå²ã (ããããããããããã«ã€ã³ãã³ããä»ããŠããŸã)ãå·ŠåŽã«è¡çªå·ã瀺ããŸãã
0 +
1 2
2 /NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
3 ns3::PppHeader (
4 Point-to-Point Protocol: IP (0x0021))
6 ns3::Ipv4Header (
7 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
8 length: 1052 10.1.1.1 > 10.1.1.2)
9 ns3::UdpHeader (
10 length: 1032 49153 > 9)
11 Payload (size=1024)
ãã®æ¡åŒµãã¬ãŒã¹ ã€ãã³ãã®æåã®ã»ã¯ã·ã§ã³ (è¡ 0) ã¯æäœã§ãã ããã«ã¯ + èšå·ããããŸãããããã¯éä¿¡ã®ãã¥ãŒã€ã³ã°ã®æäœã«å¯Ÿå¿ããŸãã 1 çªç®ã®ã»ã¯ã·ã§ã³ (XNUMX è¡ç®) ã¯ã·ãã¥ã¬ãŒã·ã§ã³æéã§ãããç§åäœã§è¡šãããŸãã ç§ãã¡ãå°ããããšãèŠããŠãããããããŸãã UdpEchoã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ XNUMX ç§åŸã«ãã±ããã®éä¿¡ãéå§ããŸãã ããã§ããããå®éã«èµ·ãã£ãŠããããšã確èªã§ããŸãã
ãã¬ãŒã¹äŸã®æ¬¡ã®ã»ã¯ã·ã§ã³ (2 è¡ç®ãã) ã¯ãã©ã®ãã¬ãŒã¹ ãœãŒã¹ããã®ã€ãã³ããçæãããã瀺ããŸã (åå空éãã¬ãŒã¹ã瀺ããŸã)ã ãã¬ãŒã¹åå空éã¯ããã¡ã€ã«ã·ã¹ãã ã®åå空éãšåãããã«èããããšãã§ããŸãã åå空éã®ã«ãŒã㯠ããŒããªã¹ãã ããã¯ãã¡ã€ã³ã® ns-3 ã³ãŒãã§ç®¡çãããã³ã³ãããŒã«å¯Ÿå¿ããŸãã ããã«ã¯ãã¹ã¯ãªããã§äœæããããã¹ãŠã®ããŒããå«ãŸããŸãã ãã¡ã€ã« ã·ã¹ãã ãã«ãŒãã«ãã£ã¬ã¯ããªãæã€ããšãã§ããã®ãšåãããã«ã ããŒããªã¹ã å€ãã®ããŒããæã€ããšãã§ããŸãã ãããã£ãŠãè¡ /NodeList/0 ã¯ãNodeList å ã® null ããŒããåç §ããŠãããéåžžã¯ãããŒã 0ããšèããããŸãã åããŒãã«ã¯ãã€ã³ã¹ããŒã«ãããŠããããã€ã¹ã®ãªã¹ãããããŸãã ãã®ãªã¹ãã¯ãåå空éã®æ¬¡ã®å Žæã«ãããŸãã ãã®ãã¬ãŒã¹ ã€ãã³ããç±æ¥ããŠããããšãããããŸãã ããã€ã¹ãªã¹ã/0ãããã¯ããŒãã«ã€ã³ã¹ããŒã«ãããŠãããã«ããã€ã¹ã§ãã
次ã®éšåæååã $ ns3 :: PointToPointNetDevice
ã¯ãã©ã®ããã€ã¹ãäœçœ® 0 ã«ãããã瀺ããŸã (ããŒã XNUMX ã®ããã€ã¹ ãªã¹ã)ã è¡ XNUMX ã§èŠã€ãã£ã + æäœã¯ãèŠçŽ ãããã€ã¹ã®éä¿¡ãã¥ãŒã«è¿œå ãããããšãæå³ããŠããããšãæãåºããŠãã ããã ããã¯ãããã©ã㯠ãã¹ãã®æåŸã®ã»ã°ã¡ã³ãã«åæ ãããŠããŸãã TxQueue/ãšã³ãã¥ãŒ.
ãã¬ãŒã¹ã®æ®ãã®ã»ã¯ã·ã§ã³ã¯ããªãçŽæçã«ç解ã§ããã¯ãã§ãã è¡ 3 ïœ 4 ã¯ããã±ããããã€ã³ãããŒãã€ã³ã ãããã³ã«ã§ã«ãã»ã«åãããŠããããšã瀺ããŠããŸãã è¡ 5 ïœ 7 ã¯ããã±ããã« IP4 ããŒãžã§ã³ã®ããããŒããããIP ã¢ãã¬ã¹ããçºä¿¡ãããããšã瀺ããŠããŸãã 10.1.1.1
ã察象ãšããŠããŸã 10.1.1.2
ã è¡ 8 ïœ 9 ã¯ããã®ãã±ããã« UDP ããããŒãããããšã瀺ããæåŸã«è¡ 10 ã¯ãã€ããŒããäºæããã 1024 ãã€ãã§ããããšã瀺ããŠããŸãã
ãã¬ãŒã¹ ãã¡ã€ã«ã®æ¬¡ã®è¡ã¯ãåããã±ãããåãããŒãäžã®éä¿¡ãã¥ãŒãããã«ãããããšã瀺ããŠããŸãã
ãã¬ãŒã¹ ãã¡ã€ã«ã® XNUMX è¡ç®ã¯ããã±ããããšã³ãŒ ãµãŒã㌠ãã¹ãäžã®ãããã¯ãŒã¯ ããã€ã¹ã«ãã£ãŠåä¿¡ãããããšã瀺ããŠããŸãã 以äžã«ã€ãã³ããåçŸããŸããã
0 r
1 2.25732
2 /NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/MacRx
3 ns3::Ipv4Header (
4 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
5 length: 1052 10.1.1.1 > 10.1.1.2)
6 ns3::UdpHeader (
7 length: 1032 49153 > 9)
8 Payload (size=1024)
ãã¬ãŒã¹æäœã r ã«ãªããã·ãã¥ã¬ãŒã·ã§ã³æéã 2,25732 ç§ã«å¢å ããããšã«æ³šæããŠãã ããã ãã¥ãŒããªã¢ã«ã«æ³šææ·±ãåŸã£ãå Žåãããã¯ãããã¯ãŒã¯ ããã€ã¹ã® DataRate ãš Link Delay ãããã©ã«ãå€ã®ãŸãŸã«ããããšãæå³ããŸãã åã®ã»ã¯ã·ã§ã³ã§èŠãããã«ããã®æå¶ã«ã¯éŠŽæã¿ãããã¯ãã§ãã
ãã¬ãŒã¹ ãœãŒã¹åå空éãšã³ã㪠(è¡ 2) ã¯ããã®ã€ãã³ããããŒã 1 ããçºçãããã®ã§ããããšãåæ ããããã«å€æŽãããŸãã (/ããŒããªã¹ã/1)ããã±ããã¯ãã¬ãŒã¹ ãœãŒã¹ (/ããã¯ãšãã¯ã¹ïŒã ãã¡ã€ã«å ã«æ®ã£ãŠãããã¬ãŒã¹ã確èªããããšã§ãããããžå ã§ã®ãã±ããã®åãã远跡ããã®ã¯éåžžã«ç°¡åã§ãã
5.3.2 PCAP ãã¬ãŒã¹
ns-3 ããã€ã¹ ãã«ããŒã䜿çšããŠã.pcap 圢åŒã®ãã¬ãŒã¹ ãã¡ã€ã«ãäœæããããšãã§ããŸãã é åèª pcap (éåžžã¯å°æåã§æžãããŸã) ã¯ãã±ãã ãã£ããã£ãè¡šããå®éã«ã¯ .pcap ãã¡ã€ã«åœ¢åŒã®å®çŸ©ãå«ã API ã§ãã ãã®åœ¢åŒãèªã¿åã£ãŠè¡šç€ºã§ããæãäžè¬çãªããã°ã©ã ã¯æ¬¡ã®ãšããã§ãã Wiresharkã® (以åã¯ããåŒã°ããŠããŸãã) ãšãã«ãšã«ïŒã ãã ãããã®ãã±ãã圢åŒã䜿çšãããã©ãã£ã㯠ãã¬ãŒã¹ ã¢ãã©ã€ã¶ãŒãå€æ°ãããŸãã pcap ãã¬ãŒã¹ãåæããããã«å©çšå¯èœãªå€ãã®ããŒã«ã䜿çšããããšããå§ãããŸãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯ã次ã䜿çšã㊠pcap ãã¬ãŒã¹ã衚瀺ããããšã«çŠç¹ãåœãŠãŸãã tcpdump.
pcap ãã¬ãŒã¹ã®æå¹å㯠XNUMX è¡ã®ã³ãŒãã§å®è¡ã§ããŸãã
pointToPoint.EnablePcapAll ("myfirst");
ãã®ã³ãŒãè¡ããå ã»ã©è¿œå ãã ASCII ãã¬ãŒã¹ ã³ãŒãã®åŸã«ââ貌ãä»ããŸãã ã¹ã¯ã©ãã/myfirst.ccã ãmyfirst.pcapããªã©ã®æååã§ã¯ãªããæååãmyfirstãã®ã¿ãæž¡ããããšã«æ³šæããŠãã ããã ããã¯ããã©ã¡ãŒã¿ãå®å šãªãã¡ã€ã«åã§ã¯ãªããã¬ãã£ãã¯ã¹ã§ããããã§ãã ã·ãã¥ã¬ãŒã·ã§ã³äžã«ãã¢ã·ã¹ã¿ã³ãã¯å®éã«åãã€ã³ãããŒãã€ã³ã ããã€ã¹ã®ãã¬ãŒã¹ ãã¡ã€ã«ãäœæããŸãã ãã¡ã€ã«åã¯ããã¬ãã£ãã¯ã¹ãããŒãçªå·ãããã€ã¹çªå·ãããã³ãµãã£ãã¯ã¹ããã䜿çšããŠæ§ç¯ãããŸããpcap'ã
ãã®ãµã³ãã« ã¹ã¯ãªããã§ã¯ãæçµçã«ãããšããååã®ãã¡ã€ã«ã衚瀺ãããŸããmyfirst-0-0.pcap"ãããŠ"myfirst-1-0.pcapããã¯ãããããããŒã 0-ããã€ã¹ 0 ããã³ããŒââã 1-ããã€ã¹ 0 ã® pcap ãã¬ãŒã¹ã§ãã pcap ãã¬ãŒã¹ãæå¹ã«ããã³ãŒãè¡ãè¿œå ããããéåžžã®æ¹æ³ã§ã¹ã¯ãªãããå®è¡ã§ããŸãã
$ ./waf --run scratch/myfirst
ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®æäžäœãã£ã¬ã¯ããªãèŠããšã次㮠XNUMX ã€ã®ãã¡ã€ã«ã衚瀺ãããã¯ãã§ãã ASCII ãã¬ãŒã¹ ãã¡ã€ã« myfirst.trã以åã«èª¿æ»ãããã¡ã€ã« myfirst-0-0.pcap О myfirst-1-0.pcap - çæããã°ããã®æ°ãã pcap ãã¡ã€ã«ã
tcpdump ã«ããåºåã®èªã¿åã
çŸæç¹ã§ã¯ãpcap ãã¡ã€ã«ã衚瀺ããæãç°¡åãªæ¹æ³ã¯ tcpdump ã䜿çšããããšã§ãã
$ tcpdump -nn -tt -r myfirst-0-0.pcap
reading from file myfirst-0-0.pcap, link-type PPP (PPP)
2.000000 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.514648 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024
tcpdump -nn -tt -r myfirst-1-0.pcap
reading from file myfirst-1-0.pcap, link-type PPP (PPP)
2.257324 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.257324 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024
ãã³ãã®äž myfirst-0-0.pcap (ã¯ã©ã€ã¢ã³ã ããã€ã¹) ã·ãã¥ã¬ãŒã·ã§ã³ã® 2 ç§åŸã«ãšã³ãŒ ãã±ãããéä¿¡ãããŠããããšãããããŸãã XNUMX çªç®ã®ãã³ããèŠããš (myfirst-1-0.pcap)ããã±ããã 2,257324 ç§ã§åä¿¡ãããããšãããããŸãã 2.257324 çªç®ã®ãã³ãã§ã¯ããã±ããã 2.514648 ç§ã§è¿ãããæåŸã«ãæåã®ãã³ã㧠XNUMX ç§ã§ãã±ãããã¯ã©ã€ã¢ã³ãã«ãã£ãŠåä¿¡ãããããšãããããŸãã
Wireshark ã«ããåºåã®èªã¿åã
ããç¥ããªãå Žåã¯ã Wiresharkã®ãããã°ã©ã ãšããã¥ã¡ã³ããããŠã³ããŒãã§ãã Web ãµã€ãããããŸãã
åºæïŒ habr.com