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 αααβααΎαβααΎβααααααΈα first.cc. αα αααα»αααααΌαααα ααΎαααΉααα·αα·αααααΎαα±ααααΆαααααα·ααααααΌαααΆαααααΎααααΆαααααα’αΆα ααααΎαα ααΆααααααΆααααααααααααααααΆαααΆααααΎα
5.1.1 αα·αααααΆαααΌαα ααααΆααααααααΆ
αααααααααα α ααΆα αααΎαααΆααααααααααααααΆααααααααΆααΆααα½αα ααα½α α αΎα ns-3 αα·αααΆαααααΈααΎαααααααααα αααα»αααααΈααααααΆαααααΆαααα α»αααα»ααααααααααααΌαααΆαααααααα "αα»αααΌαααααα·ααααα·αα" (αααααΆααααααΆ stderr αα ααΎαααααααααααααΆαααΌαααααΆαααΎ Unix) α αα ααΎαααααααααααααααα ααΆααααααΆαα’αΆα ααααΌαααΆααααα αΆα ααααΌα ααΆααααααΆααααα’α·αααααααα αααα»αβααααΈβαααα α§αααααβαααααααΆβααααΌαβααΆαβααααΎβααΎααααΈβαααα ααβααΆαβααααΆααβααα α»αβαααβα’αΆα βααααΎα±ααβααααααβααααΆαβααΆαβααΏαα
subHRD αααααααΎαααα»α ns-3 ααααααααΆαααααααααα·αααααΆαα·ααΆααααααΆαααΆαααααααΆααααααααα α αΎαααΎααααααααΌααα·ααΈααΆαααααααααΎαααΎαααΆαααααΆαααααααΆααααΆααααααααΆααΆαα ααΆααααααααΆα’αΆα ααααΌαααΆααα·αααΆαααααα»α ααΎαααααΎαααΆααααααα’ααααΎαααΆαααΆαα»ααΈαα½αα α¬ααΆαααα α αααααααααααααα ααααα·αααΆαα·ααΆααααααΆααααα’αΆα αααααααΌαααΆαααααΌαααΆαααααΎααααΆααα αααΌαα»ααααααααΆ ns-3 αααααααΌααα·ααΈααΆαααααα½αααΎααααΈααα½αααΆαααααααΆαααΆαααααααααααΈααΆααααααααααΎααααα’αααα
α’ααααα½ααααααααΆααΎααααααααααααΆααααααααααΌαα αα½α - ααΆαααΆα - αααααΆααααΆαααΆααααα·ααααααααΈαααΌαααααααα’ααα ααααα½αααααΆααααααααααααα α·ααααααααΆααααΆααααααααααΎ (αααααΆααααααααΆαααααααα’αααΈααααααααααΆαααΆαααααααΎα ααΌαααΎααααααααααα 5.3)α ααΆααααααααΆαα½αααααΆαα·ααΈααΆαααααααααααα α·ααααααααΆααααΆαααα½αααΆαααααααΆαααααΆααααα α»α ααΆααααααΆα ααΆαααα α»α α¬αααααΆααααΆαα ααααΆααααΆαααΆαααα ααααΈααααααΈα α¬ααααΌααααα’αααααααααααα
αα αα α»αααααα αααααααααααααααααα·αααααΆαααΈα (αααααα) ααααΆααααααα ααα»αααα»αααΆααααααΎαααααΆααααααΆαα·ααΆααααααΆαα
- 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 ααααΎαααααΆαααα»αααΆααα·αα·αααα);
- 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_LOG_LEVEL_INFO αααααΆα WARN_DE ααΉααα½ααααα αΌαααααα NS_LOG_ERROR
ααΎαααααααααααΆααααΌαααααααΆαααααααΆααααααααααααααααααααα αΆα ααααα·ααα·αααΈααααα·αααααΆααααααααΆ α¬αααΆαααΆαα»ααααΎαααΎαα
- NS_LOG_UNCOND - ααΆααααααααΆαααααααΆαααααααααααααΆααααααΆααααααα (ααααΆαααααα·αααααΆααααααααΆαααααΆααααααα)α
ααααα·αααΈαα½ααα’αΆα ααααΌαααΆααα½αααΆαααααααα»αααα α¬ααΆααααα»αα ααΆααααααααΆα’αΆα ααααΌαααΆαααααααα ααΆαααααααααααααααΎα’αααααα·ααααΆα sh NS_LOG α¬αααααΆααααααααΆααΆαα α αα»αααΆαααααααααα ααΌα αααααΆααααα αΆαααΈαα»α αααααααααααααααΆααΆαα―αααΆα Doxygen α αΎαα₯α‘αΌααααααΊααΆαααααααΆααααα’ααΎααααΈαα·αα·αααααΎαααΆααααα·αααΎα’ααααα·αααΆααααΆαα
α₯α‘αΌαβαααβα’αααβααΆαβα’αΆαβα―αααΆαβαααΆαβαααα’α·αβα αΎα ααΌαβααααΎβα ααααααΉαβαααβααΎααααΈβααα½αβααΆαβααααααΆαβαα½αβα±ααβα αΆααβα’αΆααααααβαα½αβα ααα½αβααΈβααααααΈαβα§ααΆα ααα scratch/myfirst.ccαααα’αααααΆαα ααααααα½α α αΎαα
5.1.2 ααΎαααααΎαααΆααααααα ααα»
α αΌαααΎαααααΎα’αααααα·ααααΆα NS_LOG ααΎααααΈααααΎαααΆααααααα ααα»αα½αα ααα½αααα ααα»ααααααΆααααΌα ααΎααααΈααα½αααΆα bearings ααααα’ααα ααααΎαααΆαααααααΈαα α»ααααααααΌα αααα’αααααΆαααααΎααΈαα»αααα
$ ./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
ααΆααααααΆααΆα "ααααΎ" αα·α "ααα½α" αααα’αααααΎαααΆαααΎααΊαα·αααΆααΆααααααΆαα αΌαααΈ αααααα·ααΈ UdpEchoClient ΠΈ αααααα·ααΈ UdpEchoServer. α§ααΆα ααα ααΎαα’αΆα ααααΎαα»αα±αααααααα·ααΈα’αα·αα·ααααααα»αααααααααΆαααααααααααααααααααα·αααααΆααααααααΆααααααΆααΆααααα’αααααα·ααααΆα NS_LOGα
α αΆααααΈααααααααα αααα»αααΉαααααααααΆα’ααααααα»αααααΎαααααΌα sh αααααααΎααΆααααααααααα "VARIABLE=value" α ααααα·αααΎα’ααααααα»αααααΎαααααΌα csh αααα’αααααΉαααααΌααααααααα§ααΆα ααααααααααα»ααα ααΆααΆααααααααααα "αααααα’ααα setenv" αααααΆαααΆαααααααααΆαααααα
αα αα α»ααααααααα αααααα·ααΈα’αα·αα·ααα’αααΌ UDP ααααΎααααα ααΉααααααΆααααΌαααΆαααααα scratch/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 shell 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 αα·αααααΌαααΆαααΆαααΆαααΎααααΈααΆαααααα»αααΆααααααααΆααΆαα½αα‘αΎαα ααΆααααααα
α
α·αααα’αααΈα
ααα½αααααααΆαααααΌαααΆααααααααΆαα»αα±ααα’ααααααααΎαααααΌαα»ααααα αααα»αβααααΈβααβαααααα·ααΈβα’αααΌ α
ααα½αβα
αααΎαβααβααααααβααβααΆαβαααααααΆβααΊβα’αΆα
βααααΎβααΆαβα
α₯α‘αΌααααα’αααα’αΆα ααΎααααααα ααα»ααααΆαα α αα»αααΆααααααααΌαααΆαααααΎα‘αΎαααααααααα·ααΈα ααααα·αααΎα’ααααααα‘ααααΎαα±αααα·αα’αααααΉααααααΆααααΎααααααααααα α ααααααααααΆαα αααααα·ααΈ UdpEchoClient αα·αααααααααα·ααΈααΆααααα αααα’αααα’αΆα ααααΉαααΆααΉαααΎα C++ scope operator (: :)α αααααΆα ααααΆα
ααααα·ααααααΆαααααααααααΆααααααα ααα»ααααααΆααααααααααΆαααΆαααΆααααααααΆα αα ααααααααΆαααΆαααααΌαααααααΆαα―αααΆαααααα αα·αααααΆαα ααΆααΌαα ααΆααΆαααααααααααααΆαα ααα»ααααα’ααααα½αααααΉαααΆ ααΆααα·αααΆαα·ααααααΆαααααααααααααΆαααα α αΎαααΆααΆααααααΆαααα½ααααα½αα±αααααααΆααΈαα αααααΊααΆαα·ααΈαα½αααΎααααΈαα½αα’αααα±αααααα αααααααααααααααΆααααΎα ααααΈαααααααααΆααααΆααα·ααΈααααααααα
ααααααΆαααΆααααα αααα»αααααΈαααα ααΆα’αΆα
αα·ααΆααααα»αααΆααααααααΆαα·ααΈααΆααααααα½αααΆααααα·αααΆαααααΎαααΆααααααα ααα»α ααΎβααΎαβα’αααααβααΆαβααΎβααα α’αααβαααα ααβααΆβαααααβααΆβαααααβααΆ?Received 1024 bytes from 10.1.1.2
" α’αααα’αΆα
αααααααΆααααα αΆαααααααααααααααα·α αα»ααααα_func αα
α’αααααα·ααααΆα 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
"α₯α‘αΌααααααααΌαααΆαααααααααΆαα
αααΆααααΆααΆαααααΈαααααα·ααΈα’αα·αα·ααα’αααΌα ααΆαααααα
αααααααΌαααααααΈαααααα·ααΈαααΆαααΈααα 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()
ααΌαα αααΆαααΆα’αααααΆαααααααααΆαα UdpEchoServer ααααΌαβααΆαβααβα α βα’αα‘α»αβαααβαααααβααααΎ 0 αα·ααΆααΈα ααααα·αααΆααΎαα‘αΎααα»ααααααΆααααααααααΎα αΆααααααΎα ααα»αααααααααααΆααααΌαααΆααααα αΆαααΆααΌααααα·ααΆααΈα ααΌα ααααΆαααα ααααααΆαα’αααααΆαααα UdpEchoClient.
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()
ααααΉαααΆ ααααααΈα scratch/first.cc α αΆααααααΎααααααα·ααΈαααΆαααΈαααα’αααΌαα½ααα·ααΆααΈαα»ααααα αΆααααααΎαααΆααααααααααΎα α₯α‘αΌααααα’αααα’αΆα ααΎααα·ααΈααΆααααααααα αααααα·ααΈα αΆααααααΎα αααΆαααΈαααααααΌαααΆαα α αααΆααα·αααααΆαααααα»ααα·ααΆααΈααααΌαα α’αααααα’αΆα ααααααααΆαααααααααΆαααΆαααΈααααααα’αααΌα αΆααααααΎααα αααα»ααα·ααΆααΈααΈααΈαααααΆααααααααααΎ ααΌα αααααΎαααΆααα½ααα αααα»αααααααΈαα
α₯α‘αΌαβααα α’αααβα’αΆα βααΆαααΆαβααααΎαβααΆαβαααααβααααΎβααΆαβαα βαααβα α βααΌααααα ααΆααα·ααΆααααααΌα αα αααα»ααααΆαααΈαααααααααα α HandleRead callback Send αα αααα»ααααααα·ααΈαααΆαααΈαααα’αααΌα α αααΆαααΆαααααααΆαααααΆαααααααα»ααα ααΎααααΈααααΎαααα ααααααααΆαααΆααααααΈα ααα»α αα½ααα α ααα»α ααΊ 3,69 αα·ααααΈαα·ααΆααΈα α’αααα’αΆα ααΎαααΎαααΆαααΆαααΈαααα’αααΌαααααααΆααΆααααααΆααΆαααααΎααααα ααΉααααα ααααααααΆα α αΎααααααΆαααααααααΆααααΈααΆααααααΆαααααΆααα α’αααααΎαααΆαααΆαααΈααααααα’αααΌααα½αααΆααααα ααααααααΆαα’αααΌαα αααα»ααα·ααΈ HandleRead ααααααΆα
αα αααα»αααΆααααααααααΎααα ααΆαααΏαααΆα αααΎαααΎαα‘αΎααααα’ααααα·αααΆαα αΆααα’αΆααααααα ααα»ααααα’αααα’αΆα ααΆαααΆαααααΎαααΆαααΆααααΌαααΆααααΆαααΆααααα½ααααααΎαααααΎαααΆααααΆαααΆαα»αααααα ααα»ααΆααα’αααα αααα»αααααααααα ααΆααααααααααα’ααα NS_LOG αα αααααααΆαααααα
$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'
αααααΆααααΆαααΆαααΎααΊααΆαα½α’αααααααα½ααααααΆαααααΆαααΆαααΆααααααααΆα ααΆααΉααα½ααααα αΌαααΆαα»ααΆααα’αααα αααα»ααααΆαααΆαα»ααΆααα’αααααααΆαααααΎαα αααα»αααΆααααααααααΎα αααα»αααΉααα·αααα·αα‘αΎααα·αααΌααααααααα ααΈααααα (αα ααααααααααΆαααααΎα 1265 αααααΆαααααα·ααααααααααΆαααααα ααα’αααΌαααα½α) ααα»ααααα’αααα’αΆα ααααΌααα·αααααααΆαααααα α―αααΆααα½α α αΎαααΎαααΆαα αααα»ααααααα·ααΈαα·αααααααα’αααα αΌαα α·αααα
$ ./waf --run scratch/myfirst > log.out 2>&1
αααα»αααααΆααααααΎααααααααΆααααααααΆαααααααΎααΆαααααααΈαααΆαααααΆααααα αα αααααααααα»αααΆααααα αΆ α αΎααα·αααΉαααΆααΆαααΏααα»αααααααααΆαααααα αααα»αα’αΆα ααααΎααΆαααΆαααααα·ααααα·ααΌαααΆααααΆαααΆααααα½αααααα·αα αΆαααΆα ααααααα ααα»α ααα αα·αααα αΆαααΆααααααΌααα αααα»ααααααα·ααΈααααΆααααα α»αα αααα»αααααΆααααα’αΆα ααααααα½ααααααααα αααα»ααααααα·ααΈαα·ααααααααααα»αα αΌαα α·ααα α αΎαααααΎαα’αααΈααααααα»αααααΉααα»α α αΎαααΎαα’αααΈαα½αααααααα»αααΉαααααΆααα·ααααα αα αααααααααα»αααΆααααα·αααΌαα α’αααΈα’αααΈαααααΉααα»α αααα»αααΆαα αΌααα αααα»ααααααα·ααΈααααΆααααα α»α ααΎααααΈααααααααααΈαααα αΆα αααααααααααααααααα’αΆα ααΆαααααααααααΆαα·ααααα ααααααααααααΈαααααα’αααααααΎα’αααΈαα½αααααα·αααΆαααααΉααα»αααΆαααααα»αα ααααα·αααΎα’αααααααΎαααααααα·ααΈααααΆααααα α»α α’αααα’αΆα ααΉαααααΆαααΆαααααααααΆαααααα»αα ααΆαα α»ααααααααααΎα±ααααΆαααααΆααααααΌααααααααα½αα±ααααααααααΆααα
5.1.3 ααΆαααααααααΆααααααααΆαα αααα»ααααααΌαααααα’αααα
α’αααα’αΆα ααααααααΆαα»ααααΈαα ααΆααααααααααΎααααα’ααααααααααΎααΆαα α αα ααΆαααααΆαααΆαα»αααααα ααα»ααΈαααΆααααΌα αααΎαα αααααααΎααΆαααα»αααααααΈα myfirst.ccαααααΎαααΆααα αααα»ααα "ααα’αΆα" α ααΌαα αΆαααΆααΎαααΆαααααααααΆαααΆαα»ααααΆααααααααΆαα αααα»αααααΆααΈαααΌαααα
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
α’αααααΉαααΆα’αααα’αΆα
ααΎαααΆααααααααΆααΆαααΆααα’ααααΈαααΆαααΆαα»αααααααααααα’αααααα·ααααΆα NS_LOG αα
ααααα·αααααααααααΆα α
αΌααααααα
αα»α α αΎαααααααααΆαα»αα½αα
ααα½ααα
ααααααΈαα αααΆααααΌαααααααΎααΎααααΈααααααααΆαααααα·αααααααΆααα
αααα»ααααααα ααα»ααΊ NS_LOG_INFOα αααααααααααΆααα½α (αα»αααΉαααΎαα
αΆααααααΎααααααΎα nodes) αααααααΆααα’αααααΆ script αααα·ααα
αααα»αααααΆααααΆα "Creating Topology"α αααααααΌαααΆαααααΎαα
αααα»αα’αααααααΌαααΆαααααα,
ααΎαα‘αΎα scratch/myfirst.cc αα
αααα»ααααααα·ααΈαα·αααααααα’αααα
αΌαα
α·ααα α αΎααααααααααααΆαα,
NS_LOG_INFO ("Creating Topology");
αα
α
αααααα»ααααααΆαα,
NodeContainer nodes;
nodes.Create (2);
α₯α‘αΌααααα αααααααααααΈααααααααΎ αααΆα ααα αΎααααα’αΆαα’ααα NS_LOG ααΎααααΈαα·αααααΎαααΆαααααααΈααααααα ααα»αααααΎαααΆαααΎααα»ααααα
$ ./waf
$ export NS_LOG=
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ,
$ ./waf --run scratch/myfirst
α’αααβααΉαβαα·αβααΎαβααΆαβααααΈβαα αααααβαααΆαααΆαα»βα αΌαβαααβααΆααααααα (FirstScriptExample) αα·αβααααΌαβααΆαβααΎαα ααΎααααΈβααΎαβααΆαβααααβα’ααα α’αααβααααΌαβααΎαβαααΆαααΆαβαααααααΆ FirstScript α§ααΆα ααα ααΆαα½αααΉαααααα·ααα·αααΆαααΆα NS_LOG_INFO α ααααα·αααΎα’αααααααΆααααα ααααΎαααααα·αααααΆααααααααΆααΆααααΆααααα α’αααα’αΆα ααΎαααΆααΌα αααααΆαα
$ export NS_LOG=FirstScriptExample=info
ααααα·αααΎα’αααααααΎαααΆαααααααΈαα₯α‘αΌαααα α’αααααΉαααΎαααΆαααααΈ "Creating Topology"
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 ααααα·αα αΆαααΆα αααααααα½α α¬ααΆααααααΊααααΌαααααΎα’αΆαα»ααααααααααΆααααΆααααααααΆα ααΎααααααααααααΆααα½αααΎααααΈαααα’αΆαα»ααααααααααΆααααΆααααααααΆ αα·ααααααα’αααααΌαααααΆα αα·αααααααααααααααααααα·αααααα’ααααΎααααααα
ααα αΆαααααΌααααα»αααΆαααααΎααααααααα’αΆαα»ααααααααααΆααααΆααααααααΆααΊααΎααααΈαααααΆαααααααααΆααααΆααααααααΆα ααααα·αααΆααΆααααα½αααααΎ (αα αααα»ααααααα·ααΈα ααααααααα’ααα) ααΌα αα αααα»αααΌαααΆααααααα
int
main (int argc, char *argv[])
{
...
CommandLine cmd;
cmd.Parse (argc, argv);
...
}
α’αααααααααΈααΈααα½αααααΆααααααααα·αααΆααΆαααααααααααααΆααααΆαααα αααα»ααα·αααα·ααααααΆα ααΆααΎαααααΆααα ααΆααααααααααα’ααα αα·ααα»αααααααααα ns-3 α α αΌαααααααααΌαααΈααα½ααα ααΆαα αΆααααααΎααααα»αααΆαααααααΈααα scratch/myfirst.cc. αααααα αα»α ααΎαα αααααααααααΈα α αΎαααααΎαααΆαααΆ αα αααααααΎαααΆα ααΎαααααΎαα»ααααα½αααΌα ααΆααααααα
$ ./waf --run "scratch/myfirst --PrintHelp"
ααΆααααααααΆαααααΉααα½α αααΆ ααααΎαααΆαααααααΈα 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.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.
α₯α‘αΌααααααΌααααα‘ααααΎααααααΎα - αα»αααααααααααα»ααα. ααΎαααΆααα·ααΆααα½α α αΎαα’αααΈαααααααααα»ααααααα ns-3 αα ααααα·ααααΆα’ααααααΈαα½α.cc α ααΎαααΆαααΎααααααΆααααααΌαααΌα ααΆαααααα,
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
α αΎααα½αααααΆααα·ααΆαααΆ α’ααααΆβαα·αααααα ααΆααα·αααΊααΆαα»ααααααα α§ααααα PointToPointNet. α αΌαααΎαααααΎααΆααααααααΆ argument parser ααΎααααΈααΎααα»ααααααα α§ααααα PointToPointNet. αααααΈαααα½ααα·ααΆαααΆα’αααΈαααααΎαααααΌαααααα ααααααααααααααΆαα. αααααΊααΆαααααααααααΆααααααα»αααααααααααΆαα αΆααα’αΆααααααααΆαααααα·αααα·α αααα»αααααΈααααααΎαααΆααΉαααΆα ns3::PointToPointNetDevice. ααααααααα αα»α α αΌα
$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"
ααααααααααΉαααααα»αααααααααααΆααα’ααααααααααα§ααααααααααΆααααα α’αααααΉαααΎαααΆαααα»αα αααααα»ααααααααα αααα»ααααααΈααΊ
--ns3::PointToPointNetDevice::DataRate=[32768bps]:
The default data rate for point to point links
αααααΊααΆαααααααααΆαααΎααααααΉαααααΌαααΆαααααΎααααααααααααα ααααααααΎαααααα» α§ααααα PointToPointNet. ααΎαααΉαααα·ααααααααααααΆαααΎαααααααααααΎαααΆαααΆαααααα αα»ααααααα Π² PointToPointHelper αααααααΆαα αααααααΎαααααααααΆαααΎααααααΆααα§ααααα αα·αααΆαααααΈα ααα»α αα½ααα α ααα»α α ααΎααααΈααααΎααΌα αααααΎαααΉααα»αααΆαα α α αα SetDeviceAttribute ΠΈ SetChannelAttribute ααΈ myfirst.ccαααααΎαααΆααα αααα»αααααα’αΆαα
ααααααΈαααααα’αααα₯α‘αΌαααααα½ααααααααΆααααααΆαααα PointToPointHelper α αΎααα»αααααΎααααα·ααααα·ααΆαααα‘αΎαααΆαα½α ααΌα αααα αΆααααα»αα§ααΆα αααααΆαααααα
...
NodeContainer nodes;
nodes.Create (2);
PointToPointHelper pointToPoint;
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
...
αα αα»αα αΎααααααΎαααααααΈαααααΈααΆαα½α αααΆ (./ αααΆα αα) α αΎαααααααα‘αααα αα·α α αΎααα½ααααα αΌαααΆαα»αα½αα ααα½αααΈαααααα·ααΈαααΆαααΈααα 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 ααΈααααΆα megabits αααα»ααα½ααα·ααΆααΈαα αααααααααΆαααΎαααΊ 32768 bits αααα»ααα½ααα·ααΆααΈα ααααα·αααΎααΎααααα½α DataRate ααααΈαααααααΎαααααΆααααΆααααααααΆ ααΎαα’αΆα αααααΎαααααΏαααΆααααααααααΎααααααΎααααααααα ααΎαααΉαααααΎααΌα αααααΆαααΌαααααααααααααααααααΆαα»αααα½αα
$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"
ααΆααΉααααα‘αααα»ααααααα DataRate αα αααααααααΆαααΎαααααααΆα ααα½αααααΆαααα αααΆαααΈααααα»ααα½ααα·ααΆααΈα ααΎα’αααααααΆααααα’αΎαααΉααααααααα? ααΆααααααΆααΎααααΈαααα‘ααα₯αα·ααΆααααΎαααααααααΈαααΎαααααααΌααααααααΆααααααΆαααααΆαααααΎααααΈααααΌααααααααΏααααααααΊα ααΎαα’αΆα ααααΎαα»αα±αααααααααααααααΆααααΆααααααααΆααΎααααΈααααα»ααααα»αααααααααΆαααααΌα αααααΎαααΆαααααΎαααααΆααα§ααααααααααΆαα
$ ./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 αα ααΆααααααα·αααααα½αα UdpEchoClient.
ααΎα’αααααΉαααααΎααΆαααααααααΆ? ααΆαααααααααΎα ααΌαα αα αΆαααΆα’αααααααΌααααααα ααααα·α’αααΈαααααααααααΎαααα·αααααααααα»αααααααααααΆαααΎα α αΎαααααααααΆαα αααΆαα αααα ααα’αα·ααααΆ αα αααα»αααααααΈαα αααααΆααααα’αααααααΌααααααΎαααααααΈαα‘αΎααα·αα α’αααααα’αΆα ααααΎαααααΆααααΆααααααααΆααΎααααΈααα½αααΆααααα½αααΆααααααααααααααααΆαααααααααααααα»αααααααααααΆαααΎαααααΈα αα ααααααα’ααααααααΈααΏαααα α’αααα’αΆα αααααααααα ααα½ααααα ααααααααα αΆααα ααΎαααααΆααααΆααααααααΆα αααααΆαααΎαααΆααα»ααααααα»αααααααΆα αααααΆααααΆααααααααΆααααααΎααα½αααααΎααα ααΌα αααα
$ ./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" α’ααααα½αααααΎααααααΈαααα»ααααααΆαα α»ααααααααΆααα’ααα ααααααααααααααΆαα. ααααααααα»αααΊααααααΆαα½αααΉαααααααααααααΌαα»ααα αααα»αααααααα (αααααΈααΆα’ααααααααααα) α ααΆαααααα»αααααααααΆαααΆααα’αααααα»αααααααα½αααΉαααΆααααααΊααααΆααααα ααΌα ααααααΆαααααααααααααααααΆααααααα»αααααααααΆαααΆααααα»αα ααΌα ααααααααααα αααααααΎαααΌαα»αα ααα»α αα½ααα α ααα»α α
./waf --run "scratch/myfirst --PrintGroup=PointToPoint"
TypeIds in group PointToPoint:
ns3::PointToPointChannel
ns3::PointToPointNetDevice
ns3::PointToPointRemoteChannel
ns3::PppHeader
αα
ααΈαααα’αααα’αΆα
αααααααααααα TypeId αααααΆααααααΆααααΆαααααΎααα»ααααααα α§ααΆα ααααα
αααα»α
--PrintAttributes = ns3 :: PointToPointChannel
ααΌα
αααααΆααααα αΆαααΆαααΎα
αα·ααΈαα½ααααααΎααααΈααααααααα’αααΈαα»αααααααααΊααΆαααα Doxygen nsβ3α ααΆαααααααα½ααααααΆαααΆααα»αααααααααΆααα’αααααααΆαα α»αααααααα αααα»ααααΆαααΈααααααααααΎα
5.2.2 ααΆαα αΆααααααΆααααααααΆααααΆαααααα½αααααα’αααα
α’αααααα’αΆα
αααααααααααααααΆαααααα½αααααα’αααααΆαααααααααααααααααΆααααΆααααααααΆα αααααααΌαααΆαααααΎαααΆαααΆαααααααααααΎαα·ααΈααΆαααααααααααααΆααααΆααααααααΆ ααααααβααααα.
α
αΌαααΎαααααΎαααααααα·ααααααααΎααααΈαααααΆααα
ααα½ααααα
αααααααααΌααααα αΆαααΆααααααα»αααααΆααΆαααααα»αα α
αΌαααααααα’αααααΌαααααΆααααα α
ααΆ nPackets α
αΌααα
αααα»ααα»αααΆααα½αα ααααΆαα. ααΎαβααΉαβαααααβααΆβαα
βαα½αβααΎααααΈβααααΌααααβα₯αα·ααΆααβααααΆαααΎαβααΈαα»αβααααβααΎαα ααΎααααΈα’αα»ααααΆαα±ααα§αααααααααααααΆααααΆααααααααΆααααΆααααααΌααααααααα ααΎαααααΌαα
αΆαααααααααααααα
αααα»αα§ααααααααα ααΎαααααΎααΌα
ααααααααααααααΆαα α
ααΌααααα ααααααβααααα. αα
βα αΎαβααααΌαβααααααΈα scratch/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 α αΎαααααΌαααΆ ααΌα ααααααΆααααΌαααΆαααααααα ααΆα’ααα nPackets αααα½αα±ααααα 1 ααΌα αααααΆααααα αΆαααΆααααααα
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()
α₯α‘αΌααααα’αααααΆαααααΎαααα
ααααΈαα ααΆααααααΆααααααα?
α’αααα’αΆα
ααΎαααΎαααΆαααα»αααΆαααΆα’αααααααΎααααΆαα 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 ααααΌαααΆααααααΎαα‘αΎααα ααΎαααααΆααααααααααααΆαααΆαα―αααΆααα αα·αα’αααααα½α ααααΌα ααΆααααααΆαααααα½αααααα½ααααααΆααααααΆααααααααα ααΆααα’αααααα½αα αααααααΆαααΊααΆααααα»αααα’αΆα ααααααααααΆα’αααΈααααΉαααα·ααΆααααααααΎαα‘αΎααα αααα»αααΆααααααααααΎ αα·ααααααααΌαααΆαα αΌααα ααΆαααα·ααααααααΌαααααΆααααα αΆααα’αΆααααααα α§ααΆα ααα αααααβααΆαβα’αΆα βαααα αΆαβααΈβαααβαααβα§αααααβαααααΆαβααΆαβααα½αβαααα ααβααααααΆα α αΎαβααααΎβα±ααβααΆαα·ααΆβααβαααα ααβααΆαβαααααΆααβα’αααβααα½αβααΆαβαααβα αΆααβα’αΆααααααα
αααααααΆαααααααα½αα―αααΊααααΆααααααααααα αα»αααααΆαααα½αααααααΌαααΆα "ααααΆαα" ααΆαα½ααααααααααααααααααΌαααααα·αααΆααααΎα’αααΈαα½ααααααΆαααααααααααΆαα½αααΉαααααααΆαααααααααααααα·α α Tracers ααΊααΆα’αααααααΎααααΆααααααΉαααα·ααΆααα αα·ααα·ααααααααααααααααααααααααΆαα α§ααΆα ααα α’αααα’αΆα αααααΎαααΆαααΆααααααΉα (αα αααααααΆαααα αααααααΆαααα§ααΆα ααααα»α) ααααα»αααααααααααα αΆααα’αΆαααααααα αααα»ααααα ααααααααΆααααααα½αααΆαα
α ααα»αααααααΆααααΆαααααααααΆαα αααΆααααΆαααααααΊααΎααααΈα’αα»ααααΆαα±ααα’αααααααΎααααΆααααααΆαααααααααα·α ααααΈαα ααΉααααααααΆααααααΆαααααΆααααααα·αα αΆαααΆα αααααααα½α αα·αα αααααααααΌααααΆαααΈααααααααααΎα‘αΎααα·αα ααΌα αααααααα»αα§ααΆα αααααΆαααΎ α’αααααααΎααααΆααα’αΆα αααααααΆαααααΈαα αααα»αααααααΈααααααα½ααα α αΎαααααΆααααΆαα αααααααΆααααααΆαααααΆαααααααΆαααααααααα»αααααΌααααααααααΎαααααααΆααααααααααα½αααααααΈαα’αααααααΎααααΆααααα»αααααα
αα αααα»αααΆαααααααααα ααΎαααΉαααααααΆααααααααααααΆααααααααΆαα»α αα·ααα·α αα½αα ααα½α α αΎααααα αΆαααΈααααααααα½αααΆα’αΆα ααααΌαααΆαααααααα ααΆαααααααααααααααΎα ααα½ααα·α αααα»αααααΆααα·αααααααΉααααααααΎαααααααααα’αααααααΎα ααΌαααΎαααααα ααααΆα ns-3 α¬ααααααααααααααΆααααααααΆαα’αααΈααΆαααααααα ααΆααααααααααΆαααααα·αααααα αα½αααΆααααΆααααααΈαααα ααααααααΆα αα·αααΆααααααΎααααααααΆαααααΈα
5.3.1 ααΆαααΆαααΆα ASCII
ns-3 αααααααΌααα»αααΆααααα½αααααααααααΌαααααααααααΆαααΆαααααα·αααΆα ααΎααααΈαα½αα’αααααΌαααααααΆααααα’α·ααα ααααααα αααΆαααΆαααΆααααα ααααααααΆαααΆααααα ααααα·αααΎα’αααααΎααα»αααΆαααα α’αααααΉαααΎααααααααα αααα»αα―αααΆα ASCII α αααααΆααα’ααααααααααΆαααααααα ns-2 ααααααααααΆααααααΊαααααααα ααΉα out.trαααααααΌαααΆααααααΎααααααααααΈαααΆα αααΎαα
αααα
α»ααα
α’αΆααΈααααα α αΎαααααααααααααααΆαααΆα ASCII αα½αα
ααα½ααα
ααααααΈα scratch/myfirst.cc ααααααΎαα αα»ααααααΆαα α
Simulator :: Run ()
ααααααααΌαααΆααααααα
AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr"));
ααΌα αααααα ααΆαα·ααααΆα ns-3 αααααααα ααΌααααααααΎααααα»αααα½αααΎααααΈαααααΎαααΆα ASCII α αα½αααΈααΈαααΆαααΆαα α ααΆααα·ααΈααΆαααααααΈαα αα·ααΈααΆααααα "ααΆααααα»α" αααααΎαFileStream() ααααΎαααααα ααΆαα·ααααΆαααααα»α’ααΆαα·αααΎααααΈαααααΎαααααα»ααααααΈαα―αααΆααα ααΎααα (αααααααΆααααααααααα») α αΎααααααΌαααΆαα αα·ααΈααΆααααααααα α ααΆα ααΎαβααΉαβα αΌαβαα βαααα βαα βαααα»αβααΏαβαααβαα βαααβα’ααΆαα ααα»ααααβα’αααΈβαααβα’αααβααααΌαβααΉαβαα βαααααβα ααα»α βαααβααΊβααΆβα’αααβαααα»αβαααααΎαβααααα»βαααβααααΆαβα±ααβα―αααΆαβαααβααβα α βααΆ myfirst.tr α αΎααααααααΆαα ns-3 α ααΎααααααα ns-3 α±ααααααΆαααααα»αααααΆααααααΎαααααα½αααΈαα·αααααααΆ αααα»αα’αα‘α»αααααααααΆαααααααΆααααα αΆαααααααα‘αΎαααααααααααααααααααααΆαααα·α αα½α (αααα ααααΆ) αααααΆααααααΉαα’ααααααααΎαα ααααααααα»ααααααΈα C ++ α
ααΆαα α ααΆααααα ααΎαααααΎαααΆαAsciiAll() ααααΆαααααα½αααΆαααΆα’αααα αααααα αΌαααΆαααΆαααΆα ASCII αααα»αααΆααααααααααΎααααα’ααααααααΆααααΆαααααΆααα§αααααααΈα ααα»α αα½ααα α ααα»α ααΆααα’αα α αΎαα’αααα ααα±ααα’αααααα½αααΆα (ααΆααααΆαα) αααααααΆααααααΆαα αααΆαααα ααααααααΆααααα»ααααααα ASCII α
αααααΆααα’ααααααααααΆααααΆαα½α ns-2 ααααΉαααα·ααΆααααααααΆαααΆαααΆαααΊααααΎααΉαα
ααα»α
ααΆααααααααααΆααααααααααααΆααααΉαααα·ααΆααα "+", "-", "d" αα·α "r" α
α₯α‘αΌαα’αααα’αΆα
αααααΎαααααααΈα α αΎαααααΎαααΆαααΆααΈαααααΆααααΆααααααααΆα
$ ./waf --run scratch/myfirst
ααΌα α αααΎαααααΈαα»αααα α’αααααΉαααΎαααΆαααΆα αααΎαααΈ Waf α αΎααααααΆαααα "'build' ααΆααααα ααααααααααα" ααΆαα½αααΉαααΆααα½αα ααα½αααΈαααααα·ααΈααααααα»αααααΎαααΆαα
αα
αααααααΎαααΆααααααα·ααΈααΉααααααΎαα―αααΆααααααΆαααααα myfirst.tr. αααααΆαααααααααΆαα·ααααΆαααΆα αααΆααΆαααααΆαααΎα α―αααΆαααααΌαααΆααααααΎααα·ααα
αααα»αααααΌαααααΆα ααα»αααααα
αααα»αααααααα·αααααΌαααααααΆααα ααααα·αααΎα’αααα
ααααααΆααααααΌαααααΌααααααΆαααααΌαααΆααααααΆαα»α αααα’αααα’αΆα
ααααΎαααΆαααΆαααααα Waf ααΎααααΈαααααΆααααΆ --cwd
. ααΎααα·αααΆαααααΎααΆαα ααΌα
ααααααΎααααΈααΎαα―αααΆαααΆαααΆα ASCII myfirst.tr αα
αααα»ααααααα·ααΈαα·αααααααα’αααα
αΌαα
α·ααα ααΎαααΉαααααΌαααΆααα»ααααα
ααααααα·αααααΌαααααααΆααααααααΎαα
ααΆααααααΆα ASCII
ααΆαααααααΆαααΆα αααΎααα ααΈααααααα»αααααααααααΆαααααα ααα»ααααααΏαααααΌααααα’αααααααΌαααααααααΆααααΊααΆ α―αααΆαααΆααααααΆααααΈαα½ααα ααΆααΉαααααΆαααΆα’αΆα ααΎαααΎααααΆαα αααΆααααααα·αααΎα’ααααααααΈααααα’α½α ααΎαα±ααααΆααααααΌααααΌααΆαα
αααααΆααααΈαα½αααα αααα»αα―αααΆαααααΌαααααΆαα ααΉαααααΉαααα·ααΆαααααΆαααΆαα αααα»αααααΈααα ααΎαααΆαααΆαααααΉαααα·ααΆααααα αααα»ααα½ααααααΌααααααΆαααααααΆααα αααα»αα§ααααααααααΆαααΈα ααα»α αα½ααα α ααα»α ααΈαα½αααα αααα»αααΆααααααααααΎα αα½ααααααΌαααΊααΆαα½αααααααα ααααααααΆαααΈαα½ααααααΌαααααααΆαααααααΆαααααααΈα ααα»α αα½ααα α ααα»α αα½αα α αααΆαααΆαααααΆααααΈαα½αααα αααα»αα―αααΆαααΆαα αΆααααααΎαααααα½α’αααααααα½α (α αΎαααΆαααααααΆαααααΆααααΈααΆ)α αα·αα·ααααααααΆαααααΉαααΆαα’ααααααααΌα ααΆααααααα
+: ααααα·ααααα·ααΆααααααααα½αααΆαααΎαα‘αΎααα
ααΎαα½αα§αααααα
-: ααααα·ααααα·ααΆαααΆαααααΆαα»ααΆαααΎαα‘αΎααα
αααα»ααα½αα§αααααα
αα αααα
ααααααααΆαααααΌαααΆααααααΆαα ααΆααααααΆαααααΆααααα½ααααα
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) ααΊααΆαααααααΆαααααααααΎ ααααααα αΆαααΆαα·ααΆααΈα α’αααβαααα ααβααΆβα αΆαβα’αααΈβαααβααΎαβααΆαβαα½α αααααα·ααΈ UdpEchoClient α αΆααααααΎαααααΎαααα αααααα»αααααααααΈααα·ααΆααΈα αα ααΈαααααΎαααΎαααΆααααααΆααααΆααααα·αααΆααΎαα‘αΎαα
ααααααααααΆααααα§ααΆα αααααΆα (ααΈαααααΆααααΈ 2) αααα αΆααααααααΆαααΆαα½αααααααααΎαααααΉαααα·ααΆαααααα (αααα αΆαααΈααΆαααΆαααΆαααα ααααα)α α’αααβα’αΆα βαα·αβα’αααΈβα αααααβαααααβααΆαβααΌα βααΆβα’αααβααΉαβααααΎβα αααααβαααααβααααααααβα―αααΆαα α«ααααααααα αααααααΊ αααααΈ NodeList. ααΆβααααΌαβααΉαβαα»ααααβαααβααΆαβαααααααααβαααα»αβααΌα ns-3 ααααΆααα ααΆααΆαααααΆααααΆααα’αααααααααΌαααΆααααααΎααα αααα»αααααααΈαα ααΌα ααΆααααααααα―αααΆαα’αΆα ααΆααααα α«αααααααΆ αααααΈ NodeList ααΎαα’αΆα ααΆαααααΆααααΆα αααΎαα ααΌα αααα αααααΆαα /NodeList/0 αααα ααΎααααΆαα null αα αααα»α NodeList αααααΆααααααΆααΎααα·αααΆααΆ "node 0" α ααααΆααααΈαα½ααααΆααααααΈα§ααααααααααααΌαααΆαααα‘αΎαα αααααΈαααααΆαααΈααΆαααα αααααΆαααααα»α namespace α α’αααα’αΆα ααΎαααΎαααΆααααΉαααα·ααΆαααααΆααααααααΈ αααααΈα§ααααα/0αααααΆα§ααααα null αααααΆαααα‘αΎααα αααα»α node α
ααααα’αααααααααααΆαα, $ ns3 :: PointToPointNetDevice
ααααΆααα§ααααααα½αααΆαα
ααΈααΆααααΌαααα αααααΈα§ααααααααααααΌαααα ααΌαα
αΆαααΆααααα·ααααα·ααΆα + ααΆαααααΎααα
αααα»ααααααΆαα 0 ααΆααααααΆααΆαα»αα½αααααΌαααΆααααααααα
αα½ααααααΌαααααα§αααααα αααααααΌαααΆααααα»ααααα
αΆαααα
αααα»ααααααα
α»αααααααα "ααααΌααα"α TxQueue/Enqueue.
αααααααααα
ααααα
αααα»αααΆααα½αααααΆααααααααα·α
αΆααααΆααα»αααα·αααα αααααΆαα 3-4 αααα αΆαααΆαααα
ααααααααΆαααααΌαααΆααα»αααααααααα»ααα·ααΈααΆαααΈα
ααα»α
αα½ααα
α
ααα»α
αα½αα αααααΆαα 5-7 αααα αΆαααΆαααα
ααααααααΆαααΆαααααααΆαααα IP4 α αΎαααΆααααααααααΈα’αΆααααααΆα IP 10.1.1.1
αα·αααααΌαααΆαααααα»ααα»ααααααΆαα 10.1.1.2
. αα½αααΈ 8-9 αααα αΆαααΆαααα
ααααααααΆααααααΆαααααααΆ UDP α αΎαα
α»αααααααααααΆααααΈ 10 αααα αΆαααΆααααα»αααΊ 1024 αααααααααΉααα»αα
αααααΆαααααααΆαααα αααα»αα―αααΆαααΆααααα αΆαααΆαααα ααααααααΆαααΌα ααααΆααααΌαααΆαααΆαα ααααΈαα½ααααααΌααα ααΎααααΆααααΌα ααααΆα
αααααΆααααΈααΈαα αααα»αα―αααΆαααΆααααα αΆαααΆαααα ααααααααΆαααααΌαααΆαααα½ααααα§ααααααααααΆααα ααΎαααΆαααΈααααααΆαααΈαααα’αααΌα αααα»αααΆαααα·αα‘αΎααα·αααΌαααααΉαααα·ααΆαααααΆααααααα
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 (/αααααΈ NodeList/1) α αΎααααα ααααααααΆαααααΌαααΆαααα½αααααααααααΆα (/MacRx) ααΆαα½αααααΆαααΆαααΆααααα½ααααααΆααα’ααααααα»αααΆαααΆαααΆαα αααΆαααααααα ααααααααΆαααΆαααα topology αααααΎαααΆαααααα ααααααα»αα―αααΆαα
5.3.2 PCAP ααΆα
α§ααααααααα½αα§ααααα ns-3 ααα’αΆα ααααΌαααΆαααααΎααΎααααΈαααααΎαα―αααΆαααΆααααα»ααααααα .pcap αααααα α’ααααααΆαα pcap (ααΆααααααΆααααΌαααΆααααααααΆα’ααααααΌα ) ααααΆαα±ααααΆαα αΆαααααααα ααααααααΆα α αΎαααΆααΆααα·α API ααααα½ααααα αΌαααΆααααααααααααα―αααΆα .pcap α αααααα·ααΈααααα·αααααα»ααααα’αΆα α’αΆα αα·ααααα αΆααααααααααααΊ Wireshark (ααΈαα»αα α ααΆ Ethereal) ααααααΆαααΆααααα ααΆαα§ααααααα·ααΆαααΆαα ααΆα αααααΆα αααΎααααααααΎαααααααααα ααααααααΆααααα ααΎαααΎαααΉαα α·αααα’αααααααΎααααΆααα±ααααααΎα§αααααααΆα αααΎααααααΆαααΎααααΈαα·ααΆαααΆα pcap α αα αααα»ααααααααα ααΎαααΉααααααααΎααΆαααΎαααΆα pcap αααααααΎ tcpdump.
ααΆαααΎαααααΎαααΆα pcap tracing ααααΌαααΆαααααΎααααααααΆαααα½αααααΌαα
pointToPoint.EnablePcapAll ("myfirst");
αα·αααααΆαααααααΆααααααΌαααααααααΆααααΈαααααΌαααΆαααΆα ASCII αααααΎαααΎαααααΆααααα αΌα scratch/myfirst.cc. α αααΆαααΆααΎαααααΆααααααααααΆααααααα’αααα "myfirst" αα·αααα "myfirst.pcap" α¬α’αααΈααααααααααΆαααααα αααααΊαααααΆααααααΆαααΆααααααααΊααΆαα»ααααα αα·ααααααΆαααααα―αααΆαααααααααα αααα»αα’αα‘α»ααααααααΆααααααααααΎ αααα½αααΆααα·αααΆααΉααααααΎαα―αααΆαααΆαααΆααααααΆααα§αααααααΈα ααα»α αα½ααα α ααα»α ααΈαα½ααα αααααα―αααΆαααΉαααααΌαααΆαααΆαααααααααααΎαα»ααααα αααααααΆαα αααα§ααααα αα·ααα αα αα "αpcap"α
αααααΆααα§ααΆα αααααααααΈαααααααΎα ααΎαααΉαααΎαα―αααΆααααααΆαααααα "myfirst-0-0.pcap"α αΎα"myfirst-1-0.pcap" αααααΆααΆα pcap αααααΆαα node 0-device 0 αα·α node 1-device 0 αααααααΆα αα ααααααα’αααααΆααααααααααααΆααααΌαααΎααααΈααΎαααααΎαααΆα pcap tracing α’αααα’αΆα ααααΎαααΆαααααααΈαααΆαααααααααααΆα
$ ./waf --run scratch/myfirst
ααααα·αααΎα’αααααααΎααα αααα»αααααααα·αααααΌαααααΆαα ααα αΆαααααα’ααα α’ααααα½αααααΎαα―αααΆαααΈα α―αααΆαααΆαααΆα 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 αα·ααΆααΈααααΆααααααααααΎα ααααα·αααΎα’ααααααα‘ααααΎαααααααα αΆααααααΆαααΈααΈα (myfirst-1-0.pcap) α’αααααΉαααΎαααΆαααα ααααααααΆαααααΌαααΆαααα½ααα 2,257324 αα·ααΆααΈα α’αααβααΉαβααΎαβαα βαααα»αβααΆαβαααα ααβααΈβααΈαβαααβαααα ααβααααΌαβααΆαβαααα‘ααβααβαα·αβαα βαααα 2.257324 αα·ααΆααΈ α αΎαβααΈαααα»αβαααα ααβααααααΆαβααααΌαβααΆαβααα½αβαα·αβαααβαααΆαααΈααααααβαααα»αβααΆαβαααα ααβααΎαβααΈβαα½αβαα βαααα 2.514648 αα·ααΆααΈα
ααΆαα’αΆαααααααααΆαα½α Wireshark
ααααα·αααΎα’ααααα·αααΌαααααΆαα WiresharkααΆαααα ααααααα½ααααα’αααα’αΆα
ααΆααααααααα·ααΈ αα·αα―αααΆαα
ααααα: www.habr.com