ns-3 network simulator tutorial. Chitsauko 5

ns-3 network simulator tutorial. Chitsauko 5
Chitsauko 1,2
chitsauko 3
chitsauko 4

5 Settings
5.1 Kushandisa iyo yekutema matanda module
5.1.1 Maongororwo ematanda
5.1.2 Bvumira matanda
5.1.3 Kuwedzera matanda kukodhi yako
5.2 Kushandisa mitsetse yemirairo mitsetse
5.2.1 Kupeta hunhu hwakasarudzika
5.2.2 Kutora mirairo yako
5.3 Kushandisa nzira yekutevera
5.3.1 ASCII Tracing
Parsing ASCII traces
5.3.2 PCAP Trace

Chitsauko 5

kuchinja

5.1 Kushandisa iyo yekutema matanda module

Isu takatotarisa muchidimbu iyo ns-3 matanda module nekutarisa script first.cc. Muchitsauko chino, tichanyatsotarisisa mashandisirwo anogona kushandiswa kweiyo subsystem yekutema matanda.

5.1.1 Maongororwo ematanda

Mazhinji masisitimu mahombe anotsigira imwe mhando yenzvimbo yekutema meseji, uye ns-3 hazvisi izvo. Mune zvimwe zviitiko, mameseji ekukanganisa chete anonyorwa kune "operator console" (iyo inowanzo stderr pane Unix-based system). Pane mamwe masisitimu, meseji yambiro inogona kuratidzwa pamwe neruzivo rwakadzama. Mune zvimwe zviitiko, maturusi ekutema anoshandiswa kuburitsa debug mameseji anogona kukurumidza kudzima zvinobuda.

Iyo subHRD inoshandiswa mu ns-3 inofungidzira kuti ese aya mazinga ezvinyorwa zveruzivo anobatsira, uye isu tinopa yakasarudzika, yakaturikidzana nzira yekutema meseji. Kutema matanda kunogona kuvharwa zvachose, kugoneswa pane-chimwe chikamu, kana pasi rose. Nechinangwa ichi, mazinga anogadziriswa ezvinyorwa zvemashoko anoshandiswa. Iyo ns-3 yekutema matanda module inopa iri nyore nzira yekuwana ruzivo rwakakosha kubva mukuenzanisa kwako.

Iwe unofanirwa kunzwisisa kuti isu tinopa yakajairika chinangwa meshini - yekutsvaga - yekubvisa data kubva kumamodheru ako, iyo inofanirwa kunge iri iyo inosarudzika kubuda kwekuenzanisa (kuti uwane rumwe ruzivo nezve yedu yekutsvaga system, ona Tutorial chikamu 5.3). Kudhinda kunofanirwa kunge kuri nzira inosarudzika yekuwana ruzivo rwekugadzirisa, yambiro, meseji yezvikanganiso, kana yekukurumidza kuburitsa mameseji kubva muzvinyorwa zvako kana modhi chero nguva.

Parizvino, iyo sisitimu inotsanangura mazinga manomwe (mhando) yegigi meseji mukuwedzera kurongeka kweruzivo rwemukati.

  • LOG_ERROR - mameseji ekukanganisa ekucheka (ane hukama macro: NS_LOG_ERROR);
  • LOG_WARN - Log yambiro mameseji (ane hukama macro: NS_LOG_WARN);
  • LOG_DEBUG - Log isingawanzo akakosha debug meseji (inoenderana macro: NS_LOG_DEBUG);
  • LOG_INFO - kunyoreswa kwemameseji eruzivo nezve kufambira mberi kwechirongwa (yakabatana macro: NS_LOG_INFO);
  • LOG_FUNCTION - Mameseji ezvinyorwa anotsanangura basa rega rega rinodanwa (macros maviri ane hukama: NS_LOG_FUNCTION, inoshandiswa kuita nhengo, uye NS_LOG_FUNCTION_NOARGS, inoshandiswa kuita zvakamira);
  • LOG_LOGIC - mameseji ekutema anotsanangura mafambiro ane musoro mukati mebasa (rechekuita macro: NS_LOG_LOGIC);
  • LOG_ALL - Logi zvese zvataurwa pamusoro (hapana yakabatana macro).
    Pamhando yega yega (LOG_TYPE) pane zvakare LOG_LEVEL_TYPE iyo, kana ikashandiswa, inobvumira nhanho dzese dziri pamusoro payo kuti dzinyorwe kuwedzera kune yayo yega. (Nekuda kwaizvozvo, LOG_ERROR neLOG_LEVEL_ERROR, uye LOG_ALL neLOG_LEVEL_ALL zvakafanana.) Semuyenzaniso, kugonesa LOG_INFO kunozobvumidza mameseji anounzwa neNS_LOG_INFO macro chete, ukuwo LOG_LEVEL_INFO uchigonesa LOG_LEVEL_INFO ichasanganisirawo mameseji anounzwa neLOG_LOGERNS_BUNS_BURNS_ .

Isu tinopawo isina zvimiro yekutema macro iyo inogara ichiratidzwa, zvisinei nedanho rekutema matanda kana chikamu chekusarudza.

  • NS_LOG_UNCOND - Kudhirowa pasina zvisungo kwemeseji yakabatana (hapana danho rekutema matanda).

Imwe neimwe nhanho inogona kubvunzwa mumwe nemumwe kana kuwanda. Kutema matanda kunogona kugadzirwa uchishandisa sh nharaunda inosiyana NS_LOG kana nekuisa system basa call. Sezvakaratidzwa kare, iyo yekutema matanda ine Dooxygen zvinyorwa uye ikozvino inguva yakanaka yekuiongorora kana usati watove.

Zvino zvawaverenga zvinyorwa zvakadzama, ngatishandisei ruzivo irworwo kuwana ruzivo runonakidza kubva kumuenzaniso script. scratch/myfirst.cciyo yawakatounganidza.

5.1.2 Bvumira matanda

Ngatishandisei NS_LOG nharaunda inoshanduka kumhanyisa mamwe matanda, asi chekutanga, kuti uwane mabearings ako, mhanyisa script yekupedzisira sezvawakaita pakutanga,

$ ./waf --run scratch/myfirst

Iwe unofanirwa kuona zvakajairwa kubuda kubva kune yekutanga ns-3 muenzaniso chirongwa

$ 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

Zvinoitika kuti mameseji "akatumirwa" uye "akagamuchira" aunoona pamusoro ndiwo mameseji akanyorwa kubva UdpEchoClientApplication ΠΈ UdpEchoServerApplication. Semuyenzaniso, tinogona kukumbira mutengi kuti adhinde rumwe ruzivo nekumisikidza nhanho yekutema matanda kuburikidza neNS_LOG nharaunda inosiyana.

Kubva zvino zvichienda mberi, ndichafunga kuti uri kushandisa sh-segoko rinoshandisa iyo "VARIABLE = kukosha" syntax. Kana iwe uri kushandisa csh-yakafanana negoko, saka uchafanirwa kushandura mienzaniso yangu kune "setenv kusiyanisa kukosha" syntax inodiwa neaya magomba.

Parizvino, iyo UDP echo mutengi application inopindura kune inotevera mutsara wekodhi mukati scratch/myfirst.cc,

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);

Inogonesa chikamu chekutema LOG_LEVEL_INFO. Kana isu tikapfuura mureza wekutema matanda, isu tinogonesa iyo nhanho uye ese akaderera mazinga. Pakadai, taita NS_LOG_INFO, NS_LOG_DEBUG, NS_LOG_WARN uye NS_LOG_ERROR. Isu tinokwanisa kuwedzera mwero wekutema matanda uye kuwana rumwe ruzivo, pasina script shanduko uye kudzoreredza, nekuisa iyo NS_LOG nharaunda shanduko sezvinotevera:

$ export NS_LOG=UdpEchoClientApplication=level_all

Saka isu tinoisa iyo sh shell inosiyana NS_LOG kune inotevera kukosha,

UdpEchoClientApplication=level_all

Rutivi rworuboshwe rwebasa izita rechikamu chakarogwa chatinoda kugadzirisa, uye kurudyi ndiwo mureza watinoda kuunyorera. Mune ino kesi, isu tichagonesa ese mazinga e debugging mukushandisa. Kana iwe ukamhanyisa script neNS_LOG seti nenzira iyi, iyo ns-3 yekutema matanda inobvuma shanduko uye iwe unofanirwa kuona zvinotevera kubuda:

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()

Rumwe ruzivo rwekugadzirisa dambudziko rwunopihwa nechishandiso rwave pa NS_LOG_FUNCTION level. Inoratidza chiitiko chese chebasa rekufona panguva yekunyora script. Semutemo wakajairika, zviri nani kushandisa (pashoma) mumabasa enziraNS_LOG_FUNCTION (this). Shandisa NS_LOG_FUNCTION_NOARGS ()
chete mune static mabasa. Nekudaro, cherechedza kuti iyo ns-3 system haidiwe kutsigira chero basa rekucheka matanda. Sarudzo yekuti ingani ruzivo rwakarekodhwa inosiiwa kune mumwe mugadziri wemuenzaniso. Panyaya ye echo application, huwandu hukuru hwekutema matanda hunowanikwa.

Iwe unogona ikozvino kuona irogi remabasa mafoni akagadzirwa nekushandisa. Kana iwe ukanyatsotarisisa, iwe uchaona colon pakati pemutsara UdpEchoClientApplication uye zita reiyo nzira, kwaungatarisira kuona iyo C ++ scope opareta (: :). Izvi nemaune.

Iri harisi iro zita rekirasi, asi zita rechikamu chekutema matanda. Kana paine mutambo pakati peiyo faira faira uye kirasi, kazhinji ndiro zita rekirasi, asi iwe unofanirwa kuziva kuti harisi iro zita rekirasi, uye pane imwechete colon pane kaviri colon. Iyi inzira yekukubatsira kuparadzanisa zita rekutema bhinzi kubva pazita rekirasi nenzira yakapusa.

Nekudaro, mune zvimwe zviitiko zvinogona kuve zvakaoma kuona kuti ndeipi nzira iri kunyatso gadzira irogi meseji. Kana iwe ukatarisa chinyorwa chiri pamusoro, unogona kunge uchinetseka kuti mutsara uripi "Received 1024 bytes from 10.1.1.2" Iwe unogona kugadzirisa dambudziko iri nekuisa nhanho prefix_func kune iyo NS_LOG nharaunda shanduko. Edza zvinotevera:

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'

Ziva kuti maquotation mamaki anodiwa nekuti bhaa rakamira ratinoshandisa kumiririra OR oparesheni zvakare iri Unix pombi yekubatanidza. Zvino kana iwe ukamhanyisa script, iwe uchaona kuti iyo yekutema matanda inova nechokwadi chekuti meseji yese mugidhi rakapihwa inotangwa nezita rechikamu.

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()

Iye zvino iwe unogona kuona kuti mameseji ese anouya kubva kuUDP echo mutengi application anozivikanwa seakadaro. Message "Received 1024 bytes from 10.1.1.2" ikozvino yanyatso zivikanwa seinouya kubva kune echo mutengi application. Iyo meseji yasara inofanirwa kubva kuUDP echo server application. Tinogona kugonesa chikamu ichi nekupinda mukoloni-yakaparadzaniswa runyorwa rwezvikamu muNS_LOG nharaunda inosiyana.

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
               UdpEchoServerApplication=level_all|prefix_func'

Yambiro: Mumuenzaniso mameseji ari pamusoro, iwe unozofanirwa kubvisa iyo nyowani nyowani mushure mecolon (:), inoshandiswa kufomati iyo gwaro. Zvino kana iwe uchimhanyisa script, iwe uchaona ese mameseji egi kubva kumutengi uye server echo maapplication. Iwe unogona kuona kuti izvi zvinogona kubatsira zvakanyanya kana uchigadzirisa.

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()

Izvo zvakare dzimwe nguva zvinobatsira kukwanisa kuona nguva yekufananidza iyo iyo meseji yegiyo yakagadzirwa. Iwe unogona kuita izvi nekuwedzera iyo OR bit prefix_nguva:

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time: UdpEchoServerApplication=level_all|prefix_func|prefix_time'

Zvekare, iwe unofanirwa kubvisa iyo iri pamusoro pemutsara mutsva. Kana iwe ikozvino uchimhanyisa script iwe unofanirwa kuona zvinotevera kubuda:

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()

Ndokumbira utarise kuti mugadziri we UdpEchoServer yakadanwa panguva yekufananidza 0 masekondi. Izvi zvinonyatsoitika kutevedzera kusati kwatanga, asi nguva inoratidzwa sezero masekonzi. Izvi zvakafanana kune meseji yemuvaki 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()

Rangarira kuti script scratch/first.cc yakatanga echo server application sekondi imwe isati yatanga yekufananidza. Iye zvino unogona kuona iyo nzira StartApplication sevha inodanwa musekondi yekutanga. Iwe unogona zvakare kuona kuti echo mutengi anotanga muchipiri chechipiri chekufananidza, sezvatakabvunza mune script.

Iwe zvino unogona kutevera kufambira mberi kwekufananidza pakufona ScheduleTransmit mune mutengi anodaidza iyo HandleRead callback Tumira mune echo server application. Ziva kuti nguva yakapfuura yekutumira pakiti pamusoro pekunge-ku-point link ndeye 3,69 milliseconds. Iwe unogona kuona kuti echo server inoisa meseji iyo yapindura pakiti, uyezve, mushure mekunonoka kwechiteshi, unoona kuti echo mutengi anogamuchira echo packet mune yayo HandleRead nzira.

Mune iyi simulation, zvakawanda zvinoitika iwe usingaone. Asi iwe unogona kuteedzera maitiro ese zviri nyore nekugonesa zvese zvekutema zvikamu muhurongwa. Edza kuseta NS_LOG kusiyanisa kune inotevera kukosha,

$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'

Iyo asterisk iri pamusoro ndeye wildcard character yechikamu chekutema matanda. Izvi zvinosanganisira zvese zvinyorwa muzvikamu zvese zvinoshandiswa mukufananidza. Ini handisi kuzoburitsa zvabuda pano (panguva yekunyora inoburitsa mitsara zana nemakumi maviri neshanu yekubuda kwepaketi imwe chete echo), asi iwe unogona kuendesa ruzivo urwu kufaira woriona mune yako yaunofarira mupepeti.

$ ./waf --run scratch/myfirst > log.out 2>&1

Ini pachangu ndinoshandisa iyi yakanyanyisa verbose vhezheni yekutema matanda kana ndine dambudziko uye ndisingazive kuti zvinhu zvakakanganisika. Ini ndinogona kutevedzera kodhi kuuraya zviri nyore pasina kuseta breakpoints uye kutsika nepakati kodhi mune debugger. Ndinogona kungogadzirisa zvakabuda mupepeti yangu yandinoda ndotsvaga zvandinotarisira ndoona chimwe chinhu chichiitika chandanga ndisingatarisiri. Kana ndangove neruzivo rwakawanda rwekuti chii chiri kuitika, ndinosvetukira mudebugger kuti ndirove pasi mudambudziko. Mhando iyi yekubuda inogona kunyanya kubatsira kana script yako ichiita chimwe chinhu chisingatarisirwi zvachose. Kana iwe ukangoshandisa debugger, unogona kupotsa twist zvachose. Kunyoresa kunoita kuti kuchinja kwakadaro kuonekwe.

5.1.3 Kuwedzera matanda kukodhi yako

Iwe unogona kuwedzera zvinyorwa zvitsva kune yako simulations nekuita mafoni kune iyo log chikamu kubva kune akawanda macros. Ngatizviite mune script myfirst.cc, iyo yatinayo mu "yakachena" dhairekitori. Rangarira kuti isu takatsanangura chikamu chekutema matanda mune iyi mamiriro:

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

Unoziva kuti unogona kugonesa kurogwa kwemameseji ese kubva muchikamu ichi nekuisa iyo NS_LOG nharaunda inosiyana pamatanho akasiyana. Ngatienderere mberi uye kuwedzera zvimwe zvinyorwa kune script. Iyo macro inoshandiswa kuwedzera ruzivo rwemameseji kurogi ndeye NS_LOG_INFO. Ngatiwedzerei meseji (tisati tatanga kugadzira node) inokuudza kuti script iri muchikamu che "Kugadzira Topology". Izvi zvinoitwa mune inotevera kodhi snippet,
Tsvaga scratch/myfirst.cc mune yako yaunofarira mupepeti uye wedzera mutsara,
NS_LOG_INFO ("Creating Topology");
pamberi pemitsara,

NodeContainer nodes;
nodes.Create (2);

Iye zvino gadzira script uchishandisa waf, uye bvisa NS_LOG kusiyanisa kudzima rukova rwekutema rwatakagonesa kare:

$ ./waf
$ export NS_LOG=
Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ запуститС скрипт,
$ ./waf --run scratch/myfirst

Iwe hausi kuona iyo meseji nyowani nekuti yakabatana yekutema chikamu (FirstScriptExample) haina kugoneswa. Kuti uone meseji yako unofanirwa kugonesa chikamu chekutema FirstScriptExample ine mwero usiri pasi peNS_LOG_INFO. Kana iwe uchingoda kuona iyi chaiyo yekutema mazinga, unogona kuigonesa seizvi,

$ export NS_LOG=FirstScriptExample=info

Kana iwe ukamhanyisa script izvozvi, uchaona meseji nyowani "Kugadzira 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 Kushandisa mitsetse yemirairo mitsetse

5.2.1 Kupeta hunhu hwakasarudzika

Imwe nzira yekushandura maitiro e ns-3 zvinyorwa pasina kugadzirisa kana kuvaka ndeye kushandisa mutsara wemirairo nharo. Isu tinopa nzira yekuparura mitsetse yemirairo nharo uye otomatiki kuseta emunharaunda uye yepasirese akasiyana zvichienderana nemhedzisiro.

Nhanho yekutanga pakushandisa iyo yekuraira mutsara nharo system ndeyekuzivisa yekuraira mutsara parser. Izvi zviri nyore kuita (muchirongwa chako chikuru), sezviri mukodhi inotevera,

int
main (int argc, char *argv[])
{
...
CommandLine cmd;
cmd.Parse (argc, argv);
...
}

Iyi snippet yakapfava yemitsara miviri inonyanya kubatsira mune yayo pachayo. Inovhura musuwo kune iyo ns-3 yepasi rose shanduko uye hunhu system. Ngatiwedzerei mitsetse miviri yekodhi pakutanga kweiyo huru script basa scratch/myfirst.cc. Tichienderera mberi, tinounganidza script uye tichimhanya, kana tichimhanya tinoita chikumbiro chekubatsira sezvinotevera,

$ ./waf --run "scratch/myfirst --PrintHelp"

Uyu murairo uchabvunza Waf run script scratch/myfirst uye ipase iyo yekuraira mutsara nharo β€”PrintHelp. Iwo maquotation mamaki anodiwa kuratidza chirongwa icho kupokana kunoitirwa. Mutsetse wemirairo parser uchaona kupokana β€”PrintHelp uye acharatidza mhinduro,

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.

Zvino ngatitarisei sarudzo -PrintAttributes. Takatotaura nezve ns-3 attribute system pakudzidza first.cc script. Takaona mitsara inotevera yekodhi,

PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

uye vakati DataRate chaizvoizvo hunhu PointToPointNetDevice. Ngatishandisei mutsara wekuraira nharo parser kuona hunhu PointToPointNetDevice. Rondedzero yerubatsiro inotaura zvatinofanira kupa TypeId. Iri ndiro zita rekirasi iyo hunhu hwechido ndehwayo. Kwatiri zvichave zvakadaro ns3::PointToPointNetDevice. Ngatirambe tichienda mberi, pinda,

$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"

Iyo system ichadhinda zvese zvemhando yetiweki mudziyo uyu. Iwe uchaona kuti pakati pehunhu huri murondedzero,

--ns3::PointToPointNetDevice::DataRate=[32768bps]:
The default data rate for point to point links

Iyi ndiyo yakasarudzika kukosha ichashandiswa nehurongwa pakugadzira chinhu PointToPointNetDevice. Isu tichapfuura iyi default kukosha tichishandisa parameter Paunhu Π² PointToPointHelper kumusoro. Ngatishandisei iyo yakasarudzika kukosha kune-point-to-point zvishandiso uye chiteshi. Kuti tiite izvi, tinodzima mafoni SetDeviceAttribute ΠΈ SetChannelAttribute kubva myfirst.cc, yatinayo mudhairekitori rakachena.

Script yako zvino inofanira kungozivisa PointToPointHelper uye usaite chero mashandiro ekuisa sezvakaratidzwa mumuenzaniso pazasi,

...
NodeContainer nodes;
nodes.Create (2);
PointToPointHelper pointToPoint;
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
...

Enda mberi uye gadzira chinyorwa chitsva ne Waf (./waff) uye ngatidzokerei tisanganise imwe yekupinda kubva kuUDP echo server application uye inosanganisira prefix yenguva.

$ export 'NS_LOG=UdpEchoServerApplication=level_all|prefix_time'

Kana iwe uchimhanyisa script unofanirwa kuona zvinotevera kubuda:

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()

Yeuka kuti nguva yekupedzisira yatakatarisa nguva yekufananidza, nguva iyo pakiti yakagamuchirwa ne-echo server, yaiva 2,00369 seconds.

2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1

Iye zvino anogamuchira pakiti mumasekondi 2.25732. Izvi zvinodaro nekuti isu tinongo gadzirisa iyo PointToPointNetDevice data rate kubva kuma megabits mashanu pasekondi kusvika kune yakasarudzika kukosha, inova 32768 bits pasekondi. Dai taizotsiva iyo itsva DataRate tichishandisa mutsara wekuraira, tinogona kukurumidza kutevedzera yedu zvakare. Isu tichaita izvi sezvizvi, zvinoenderana neformula inorehwa nechinhu chekubatsira:

$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"

Izvi zvichadzosera iyo DataRate hunhu kune yayo default kukosha kwema megabits mashanu pasekondi. Unoshamiswa nemhedzisiro yacho here? Zvinoitika kuti kuti tidzose maitiro ekutanga echinyorwa, isu tinodawo kuseta kunonoka kwechiteshi kuti ienderane nekumhanya kwechiedza. Tinogona kubvunza iyo yekuraira mutsara sisitimu kudhinda iyo chiteshi maitiro, sezvatakaitira kunetiweki mudziyo:

$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointChannel"

Isu tichaona kuti chiteshi kunonoka hunhu hwakaiswa sezvizvi:

--ns3::PointToPointChannel::Delay=[0ns]:
Transmission delay through the channel

Isu tinogona ipapo, kuburikidza nemirairo mutsara system, kuseta ese ari maviri aya maitiro akasarudzika.

$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms"

mune iyi kesi tinodzosera nguva yataive nayo patakaisa zvakajeka iyo DataRate uye Kunonoka mune script:

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()

Ziva kuti packet inotambirwa neserver zvakare mushure memasekondi 2,00369. Isu tinogona chaizvo kuseta chero hupi hwehunhu hunoshandiswa mune script nenzira iyi. Kunyanya, isu tinogona kuseta iyo MaxPackets hunhu kune asiri-imwe tsika UdpEchoClient.

Waizoishandisa sei? Edza. Rangarira kuti iwe unofanirwa kutaura kunze kwenzvimbo yatinodarika iyo default hunhu kukosha uye zvakajeka kuseta MaxPackets mune script. Ipapo iwe unofanirwa kuvaka patsva script. Iwe unogona zvakare kushandisa mutsara wekuraira kuti uwane rubatsiro rwe syntax yekumisikidza hutsva hutsva hwehunhu kukosha. Kana uchinge wanzwisisa izvi, unogona kudzora nhamba yemapakeji anoratidzwa pamutsara wekuraira. Sezvo tiri vanhu vanodzidza, mutsara wedu wekuraira unofanirwa kutaridzika seizvi:

$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms
--ns3::UdpEchoClient::MaxPackets=2"

Mubvunzo wechisikigo unomuka panguva ino ndewekuti ungaziva sei nezvekuvapo kwehumwe hunhu hwese. Zvakare, iyo command line system ine basa rekubatsira panyaya iyi. Kana tikakumbira mutsara wekuraira rubatsiro, tinofanira kuona:

$ ./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.

Kana ukasarudza iyo "PrintGroups" nharo unofanirwa kuona runyoro rwemapoka ese akanyoreswa TypeId. Mazita eboka anopindirana nemazita emamodule ari mudhairekitori rezvinyorwa (zvisinei capitalized). Kudhinda ruzivo rwese panguva imwe chete kunenge kwakanyanyisa, saka imwe sefa iripo yekudhinda ruzivo neboka. Saka, zvakare kutarisa pane point-to-point module:

./waf --run "scratch/myfirst --PrintGroup=PointToPoint"
TypeIds in group PointToPoint:
ns3::PointToPointChannel
ns3::PointToPointNetDevice
ns3::PointToPointRemoteChannel
ns3::PppHeader

Pano iwe unogona kuwana mazita eTypeId anowanikwa ehunhu hwekutarisa, semuenzaniso mu
--PrintAttributes = ns3 :: PointToPointChannelsezvaratidzwa pamusoro.

Imwe nzira yekudzidza nezve hunhu ndeye kuburikidza neDoxygen ns-3. Pane peji inonyora zvese zvakanyoreswa musimulator.

5.2.2 Kutora mirairo yako

Iwe unogona zvakare kuwedzera ako makoko kuburikidza neiyo command line system. Izvi zvinoitwa zviri nyore kushandisa iyo command line parser nzira AddValue.
Ngatishandisei chinhu ichi kudoma nhamba yemapakeji anofanirwa kuratidzwa nenzira yakasiyana zvachose. Ngatiwedzerei shandurudzo yemunharaunda inonzi nPackets muchiitiko kuru. Tichaiisa kune imwe kuti ienderane nemaitiro edu ekare. Kubvumira mutsara wekuraira kuti uchinje kukosha uku, tinoda kutora kukosha uku muparser. Tinoita izvi nekuwedzera foni AddValue. Enda uye shandura script scratch/myfirst.cc saka kutanga neinotevera kodhi,

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);
...

Skira pasi kusvika pane iyo script yatinoisa iyo MaxPackets hunhu uye kuishandura kuti igadzirwe kune iyo nPackets inoshanduka panzvimbo peiyo inogara 1, sezvaratidzwa pazasi.

echoClient.SetAttribute ("MaxPackets", UintegerValue (nPackets));

Zvino kana iwe uchimhanyisa script uye nekupa iyo -PrintHelp nharo, iwe unofanirwa kuona iyo itsva mushandisi nharo. yakanyorwa pachiratidziro chekubatsira. Pinda,

$ ./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

Kana iwe uchida kushandura nhamba yemapakiti anofambiswa, unogona kuzviita nekuisa iyo yekuraira mutsara nharo - -nPackets.

$ ./waf --run "scratch/myfirst --nPackets=2"

Zvino unofanira kuona

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()

Watumira mapakeji maviri. Zviri nyore, handizvo here?
Iwe unogona kuona kuti se ns-3 mushandisi, unogona kushandisa iyo yekuraira mutsara nharo system kushandura tsika dzepasirese uye hunhu. Kana iwe uri munyori wemuenzaniso, iwe unogona kuwedzera hunhu hutsva kuzvinhu zvako uye ivo vanozongowanikwa kuti vagadziriswe nevashandisi vako kuburikidza nemirairo mutsara system. Kana iwe uri munyori wezvinyorwa, unogona kuwedzera mitsva mitsva kune zvinyorwa zvako uye wozvipfekedza zvisina mutsetse mune yako yekuraira mutsara system.

5.3 Kushandisa nzira yekutevera

Iyo poindi yese yekuenzanisira ndeyekuburitsa zvinobuda kuti uwedzere kudzidza, uye iyo ns-3 trace system ndiyo nzira huru yeizvi. Sezvo ns-3 iri chirongwa cheC ++, nzira dzakajairwa dzekugadzira zvinobuda kubva kuC++ chirongwa dzinogona kushandiswa:

#include <iostream>
...
int main ()
{
...
std::cout << "The value of x is " << x << std::endl;
...
}

Iwe unogona kunyange kushandisa matanda module kuwedzera diki chimiro kune yako mhinduro. Kune akawanda matambudziko anozivikanwa anokonzerwa nemaitiro aya, uye nekudaro isu takapa chiitiko chakajairwa chekutevera subsystem kugadzirisa aya matambudziko.

Zvinangwa zvikuru zve ns-3 tracing system ndezvi:

  • Pamabasa ekutanga, sisitimu yekutsvagisa inofanirwa kubvumidza mushandisi kugadzira yakajairwa trace yeanozivikanwa masosi uye kusarudza zvinhu zvinogadzira trace;

  • Vashandisi vepakati vanofanirwa kukwanisa kuwedzera iyo yekutsvagisa sisitimu yekushandura iyo yakagadzirwa inobuda fomati kana kuisa mitsva yekutevera masosi, pasina kugadzirisa iyo simulator musimboti;

  • Vashandisi vepamberi vanogona kugadzirisa iyo simulator musimboti wekuwedzera mitsva yekutsvaga masosi uye kunyura. Iyo ns-3 yekuteedzera sisitimu yakavakirwa pamisimboti yekuzvimiririra yekutevera masosi uye vanogamuchira, pamwe neiyo yakabatana nzira yekubatanidza masosi kune vatengi.

Iyo ns-3 yekuteedzera sisitimu yakavakirwa pamisimboti yekuzvimiririra yekutevera masosi uye vanogamuchira, pamwe neyakabatanidza nzira yekubatanidza masosi kune vanogamuchira. Trace sources zvinhu zvinogona kuratidza zviitiko zviri kuitika mukufananidza uye kupa mukana kune iyo yepasi data yekufarira. Semuyenzaniso, sosi yekutsvagisa inogona kuratidza kana network yetiweki yakagamuchira pakiti uye kuita kuti zviri mukati mepaketi zviwanikwe kune vanofarira vanowana vanogamuchira.

Kutsvaga zvinyorwa pachezvazvo hazvina maturo kunze kwekunge "zvakabatana" nezvimwe zvikamu zvekodhi izvo zvinonyatsoita chimwe chinhu chinobatsira neruzivo rwunopihwa nekunyura. Tracers vatengi vezviitiko uye data inopihwa neanotsvaga masosi. Semuenzaniso, unogona kugadzira sink yekutevera iyo (kana yakabatana kune inoteedzera sosi yemuenzaniso wapfuura) kudhinda zvikamu zvekufarira mupaketi yakagamuchirwa.

Chikonzero chekupatsanurwa uku kwakajeka ndechekubvumira vashandisi kuti vabatanidze marudzi matsva ekunyura kune aripo ekutsvaga masosi pasina kugadzirisa uye kudzorera iyo simulator musimboti. Saka mumuenzaniso uri pamusoro, mushandisi anogona kutsanangudza mutsva wetracer mune yavo script uye oibatanidza kune iripo trace sosi inotsanangurwa mune yekufananidza musimboti chete nekugadzirisa mushandisi script.

Muchidzidzo ichi, tichapfuura nepakati pemamwe akatemerwa masosi uye kunyura uye toratidza magadzirirwo aanogona kugadzirwa aine hushoma huwandu hwekuedza pane chikamu chemushandisi. Ona iyo ns-3 Manual kana maitiro-ekuita zvikamu zveruzivo nezve advanced trace kumisikidza, kusanganisira kuwedzera nzvimbo yezita rekutsvaga uye kugadzira matsva ekutsvaga.

5.3.1 ASCII Tracing

ns-3 inopa mashandiro emubatsiri ayo anopa yakaderera-level yekuteedzera sisitimu yekukubatsira iwe neruzivo paunenge uchiseta akareruka packet traces. Kana iwe ukagonesa chimiro ichi, uchaona zvinobuda mumafaira eASCII. Kune avo vanoziva ns-2 kubuda, iyi mhando yekuteedzera yakafanana ne kunze.tr, iyo inogadzirwa nezvinyorwa zvakawanda.

Ngatidzikei kubhizinesi uye tiwedzere mamwe ASCII ekutsvagira mhinduro kune yedu scratch/myfirst.cc script. Ndisati ndafona Simulator :: Run (), wedzera mitsara yekodhi inotevera:
AsciiTraceHelper ascii;

pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr"));

Kufanana nemamwe akawanda ns-3 madimikira, iyi kodhi inoshandisa mubatsiri chinhu kugadzira ASCII traces. Mutsara wechipiri une maviri nested method call. "Mukati" nzira GadziraFileStream() inoshandisa iyo isingazivikanwe yechinhu diom kugadzira chinhu chinoyerera faira pane stack (isina zita rechinhu) uye ochipfuudza kune inonzi nzira. Tichapinda zvakadzama mune izvi mune ramangwana, asi chaunoda kuziva panguva ino ndechekuti uri kugadzira chinhu chinomiririra faira rinonzi. myfirst.tr uye woiendesa kune ns-3. Isu tinopa ns-3 kutarisira chinhu chakagadzirwa kwehupenyu hwayo hwese, panguva iyo inogadzirisa matambudziko anokonzerwa neashoma-anozivikanwa (maune) kudzikiswa ane chekuita neC ++ rwizi chinhu kopi vanovaka.

Kufona kwekunze EnableAsciiAll() inoudza mubatsiri kuti iwe unoda kusanganisira ASCII yekutsvaga mukuenzanisa kwako kwese-point-to-point mudziyo wekubatanidza uye kuti iwe unoda (kutsanangurwa) kuronda vanogamuchira kurekodha ruzivo rwekufamba kwepaketi muASCII fomati.

Kune avo vanoziva ns-2, zviitiko zvakatevedzwa zvakaenzana neanozivikanwa tracepoints anonyora zviitiko "+", "-", "d" uye "r".
Iye zvino unogona kuvaka script uye woimhanyisa kubva pamutsetse wekuraira:

$ ./waf --run scratch/myfirst

Senguva zhinji zvisati zvaitika, uchaona mameseji akati wandei kubva kuWaf, uyezve β€œ'vaka' wapedza zvakabudirira” nemamwe mameseji kubva kuchirongwa chiri kuita.

Paunenge uchimhanya, chirongwa chichagadzira faira rakanzi myfirst.tr. Nekuda kwechimiro chebasa racho Waf, nekusarudzika iyo faira inogadzirwa kwete mudhairekitori remunharaunda, asi mune yepamusoro-level dhairekitori re repository. Kana iwe uchida kushandura nzira inochengeterwa zviteshi, saka unogona kushandisa iyo Waf parameter kuitsanangura --cwd. Hatisati taita izvi, saka kuti titarise iyo ASCII trace faira myfirst.tr mune yako yaunofarira edhita, isu tichafanirwa kuenda kune yepamusoro-level dhairekitori renzvimbo yedu.

Parsing ASCII traces

Pane ruzivo rwakawanda ipapo mune yakaomesesa fomu, asi chinhu chekutanga chaunofanira kucherechedza ndechekuti faira rine mitsara yega. Izvi zvinozoonekwa zvakajeka kana iwe ukawedzera hwindo rekuona rakakura.

Mutsara wega wega mufaira unoenderana nechiitiko chekutevera. Muchiitiko ichi, isu tinoteedza zviitiko mumutsara wekutapurirana uripo mune imwe neimwe point-to-point network mudziyo mukuenzanisa. Mutsetse wekutapurirana ndiwo mutsetse umo pakiti yega yega inofanirwa kupfuura kune chinongedzo-kune-inongedzo. Ziva kuti mutsara wega wega mufaira rekutsvaga unotanga nehunhu humwe (uye une nzvimbo mushure mayo). Ichi chiratidzo chichava nechirevo chinotevera:

+: kushanda kwemutsetse kwakaitika pamutsetse wemudziyo;
-: chiitiko chekutora chinhu chakaitika mumutsara wemudziyo;
d: packet yakadonhedzwa, kazhinji nokuti mutsara wakanga wakazara;
r: Paketi yakagamuchirwa netiweki mudziyo.

Ngatitarisei zvakanyanya pamutsetse wekutanga mu trace file. Ini ndichaiputsa kuita zvikamu (ine indentations yekujekesa) uye nhamba yemutsara kuruboshwe:

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)

Chikamu chekutanga chechiitiko ichi chakawedzerwa (mutsara 0) ndiko kushanda. Isu tine + chiratidzo pano, icho chinoenderana nekushanda kwemutsetse wekutapurirana. Chikamu chechipiri (mutsara 1) ndiyo nguva yekufananidza, inoratidzwa mumasekonzi. Unogona kurangarira zvatakakumbira UdpEchoClientApplication tanga kutumira mapaketi mumasekonzi maviri. Pano tinoona chisimbiso chokuti izvi zviri kuitika zvechokwadi.

Chikamu chinotevera chemuenzaniso wekuteedzera (kubva mumutsara 2) chinoratidza kuti ndeupi sosi yakaburitsa chiitiko ichi (ichiratidza zita renzvimbo). Iwe unogona kufunga nezve iyo yekuteedzera namespace senge iwe waizoita filesystem namespace. Mudzi wezita rezita ndewe NodeList. Izvi zvinoenderana nemudziyo unotungamirwa mune huru ns-3 kodhi. Iyo ine ma node ese akagadzirwa mune script. Sezvinongoita faira system inogona kuve nedhairekitori pamidzi yayo, NodeList tinogona kuva node dzakawanda. Saka mutsara /NodeList/0 inoreva null node muNodeList, yatinowanzofunga nezvayo se "node 0". Imwe neimwe node ine runyorwa rwemidziyo yakaiswa. Rondedzero iyi inowanikwa inotevera munzvimbo yemazita. Iwe unogona kuona kuti chiitiko ichi chekutevera chinobva DeviceList/0, inova iyo isina chinhu mudziyo yakaiswa mune node.

Chinotevera substring, $ ns3 :: PointToPointNetDevice, inotaurira kuti ndeupi mudziyo uri pachinzvimbo zero: iyo mudziyo rondedzero ye node zero. Rangarira kuti + mashandiro akawanikwa mumutsara 0 aireva kuti chinhu chakawedzerwa kumutsara wemudziyo wekutumira. Izvi zvinoratidzwa muzvikamu zvekupedzisira zve "track nzira": TxQueue/Enqueue.

Zvikamu zvasara mukutsvaga zvinofanirwa kunge zviri intuitive. Mitsara 3-4 inoratidza kuti pakiti yakavharidzirwa mune imwe nzira-ku-point protocol. Mitsetse 5-7 inoratidza kuti packet ine IP4 vhezheni musoro uye yakabva muIP kero 10.1.1.1 uye inoitirwa 10.1.1.2. Mitsetse 8-9 inoratidza kuti pakiti iyi ine UDP musoro uye pakupedzisira mutsara wechigumi unoratidza kuti mubhadharo ndiwo unotarisirwa 10 bytes.

Mutsetse unotevera mufaira rekutsvaga unoratidza kuti packet imwe chete yakadhonzwa kubva pamutsetse wekutakurisa pane imwe node.

Mutsetse wechitatu mufaira rekutsvaga unoratidza kuti packet yakagamuchirwa netiweki mudziyo pane echo server host. Ndakaburitsa chiitiko pazasi.

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)

Ziva kuti iyo trace operation ikozvino r uye nguva yekufananidza yakawedzera kusvika 2,25732 seconds. Kana iwe wakanyatso tevera dzidziso, izvi zvinoreva kuti wakasiya network zvishandiso 'DataRate uye Link Kunonoka pazvimiro zvavo. Chirevo ichi chinofanirwa kujaira, sezvawaona muchikamu chapfuura.

Iyo trace source namespace yekupinda (mutsara 2) yakagadziridzwa kuratidza kuti chiitiko ichi chinobva node 1 (/NodeList/1) uye pakiti inogamuchirwa neyekutsvaga sosi (/MacRx) Zvinofanira kunge zviri nyore kwauri kuti uteedzere mafambiro epaketi kuburikidza neiyo topology nekutarisa akasara mufaira.

5.3.2 PCAP Trace

Iyo ns-3 Device Helpers inogona kushandiswa kugadzira trace mafaira mu.pcap format. Acronym pcap (kazhinji inonyorwa nemavara madiki) inomirira packet capture uye chaizvoizvo iAPI inosanganisira kutsanangura .pcap file format. Iyo inonyanya kufarirwa chirongwa inogona kuverenga uye kuratidza iyi fomati ndeye Wireshark (yakambodanwa Ethereal) Nekudaro, kune akawanda traffic trace analyzer anoshandisa iyi packet fomati. Tinokurudzira vashandisi kushandisa zvishandiso zvakawanda zviripo kuongorora pcap traces. Muchidzidzo ichi tichatarisa pakuona pcap traces tichishandisa tcpdump.

Kugonesa pcap tracing kunoitwa nemutsara mumwe wekodhi.

pointToPoint.EnablePcapAll ("myfirst");

Namira iyi mutsara wekodhi mushure meiyo ASCII trace kodhi yatichangowedzera mairi scratch/myfirst.cc. Ziva kuti isu takangopfuura tambo "myfirst", kwete "myfirst.pcap" kana chero chinhu chakafanana. Izvi zvinodaro nekuti parameter iyi prefix, kwete yakazara filename. Munguva yekufananidza, mubatsiri anonyatso gadzira faira rekuteedzera kune imwe neimwe point-to-point mudziyo. Mazita emafaira achagadzirwa pachishandiswa prefix, node nhamba, mudziyo nhamba, uye suffix ".pcap".

Kune yedu muenzaniso script, tinozopedzisira nekuona mafaera anonzi "myfirst-0-0.pcap"Uye"myfirst-1-0.pcap", ayo ari pcap anoteedzera node 0-mudziyo 0 uye node 1-mudziyo 0 zvichiteerana. Kana uchinge wawedzera mutsara wekodhi kugonesa pcap tracing, unogona kumhanya script nenzira yakajairika:

$ ./waf --run scratch/myfirst

Kana iwe ukatarisa mune yepamusoro-level dhairekitori yekugovera kwako, iwe unofanirwa kuona mafaera matatu: iyo ASCII trace faira myfirst.tr, izvo zvatakambodzidza, mafaira myfirst-0-0.pcap ΠΈ myfirst-1-0.pcap - nyowani pcap mafaera atichangogadzira.

Kuverenga zvabuda netcpdump

Parizvino, nzira iri nyore yekuona pcap mafaera ndeye kushandisa 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

Mudump myfirst-0-0.pcap (mutengi mudziyo) unogona kuona iyo echo packet inotumirwa mushure memasekonzi maviri ekufananidza. Kana iwe ukatarisa pane yechipiri dump (myfirst-1-0.pcap), uchaona kuti packet inogamuchirwa pa 2,257324 seconds. Iwe uchaona mune yechipiri dump kuti pakiti inodzoserwa pa2.257324 masekondi, uye pakupedzisira iyo packet yakagamuchirwa zvakare nemutengi mukurasira kwekutanga pamasekondi 2.514648.

Kuverenga Kubuda neWireshark

Kana usiri kujaira Wireshark, pane webhusaiti yaunogona kudhawunirodha zvirongwa uye zvinyorwa: http://www.wireshark.org/. Wireshark iGUI inogona kushandiswa kuratidza aya mafaera ekutsvaga. Kana iwe uine Wireshark, unogona kuvhura chero yemafaira ekutsvaga uye kuratidza zviri mukati sekunge watora mapaketi uchishandisa packet sniffer.

Source: www.habr.com

Voeg