ns-3 netweke simulator tutorial. Khaolo ea 5

ns-3 netweke simulator tutorial. Khaolo ea 5
khaolo ea 1,2
khaolo ea 3
khaolo ea 4

5 Li-setting
5.1 Ho sebelisa mojule oa ho rema lifate
5.1.1 Kakaretso ea ho rema lifate
5.1.2 Nolofatsa ho rema lifate
5.1.3 Ho kenya lifate khoutu ea hau
5.2 Ho sebelisa likhang tsa mola oa taelo
5.2.1 Ho fetisa boleng ba tšobotsi ea kamehla
5.2.2 Ho hapa litaelo tsa hau
5.3 Ho sebelisa mokhoa oa ho bala
5.3.1 ASCII Tracing
Ho hlahisa mesaletsa ea ASCII
5.3.2 PCAP Trace

Khaolo ea 5

phetoho

5.1 Ho sebelisa mojule oa ho rema lifate

Re se re shebile ka bokhutšoanyane mojule oa ho rema lifate oa ns-3 ka ho sheba script pele.cc. Khaolong ena, re tla shebisisa ka botlalo lisebelisoa tse ka sebelisoang molemong oa ho rema lifate.

5.1.1 Kakaretso ea ho rema lifate

Litsamaiso tse ngata tse kholo li tšehetsa mofuta o itseng oa mokhoa oa ho rema melaetsa, 'me ns-3 le eona e joalo. Maemong a mang, ke melaetsa ea liphoso feela e ngolloang "operator console" (eo hangata e leng stderr ho litsamaiso tse thehiloeng ho Unix). Lits'ebetsong tse ling, melaetsa ea temoso e ka hlahisoa hammoho le lintlha tse qaqileng. Maemong a mang, lisebelisoa tsa ho rema lifate li sebelisoa ho hlahisa melaetsa ea debug e ka senyang tlhahiso kapele.

SubHRD e sebelisitsoeng ho ns-3 e nka hore maemo ana kaofela a litaba a bohlokoa, 'me re fana ka mokhoa o ikhethileng oa ho rekota melaetsa. Ho rema lifate ho ka emisoa ka botlalo, ho lumelloa ho latela karolo e 'ngoe, kapa lefatšeng ka bophara. Bakeng sa sena, ho sebelisoa maemo a feto-fetohang a litaba tsa litaba. Mojule oa ho rema lifate oa ns-3 o fana ka mokhoa o batlang o le bonolo oa ho fumana lintlha tsa bohlokoa ho tsoa papisong ea hau.

U lokela ho utloisisa hore re fana ka morero o akaretsang - ho latella - bakeng sa ho ntša lintlha ho tsoa ho mefuta ea hau, e lokelang ho ba tlhahiso e ratoang bakeng sa lipapiso (bakeng sa tlhahisoleseling e eketsehileng ka sistimi ea rona ea ho latella, sheba karolo ea 5.3 ea lithupelo). Ho rema lifate e lokela ho ba mokhoa o ratoang oa ho fumana lintlha tsa ho lokisa liphoso, litemoso, melaetsa ea liphoso, kapa bakeng sa ho ntša melaetsa ka potlako ho tsoa lingolong tsa hau kapa mehlala ka nako efe kapa efe.

Hajoale, sistimi e hlalosa maemo a supileng (mefuta) ea melaetsa ea log ka tatellano e ntseng e eketseha ea litaba tsa litaba.

  • LOG_ERROR - melaetsa ea phoso ea ho rema lifate (macro e amanang: NS_LOG_ERROR);
  • LOG_WARN - Melaetsa ea temoso ea ho kena (macro e amanang: NS_LOG_WARN);
  • LOG_DEBUG - Kena melaetsa e ikhethang e sa tloaelehang ea ho lokisa bothata (macro e amanang: NS_LOG_DEBUG);
  • LOG_INFO - ngoliso ea melaetsa ea tlhahisoleseling mabapi le tsoelo-pele ea lenaneo (macro e amanang: NS_LOG_INFO);
  • LOG_FUNCTION - Melaetsa ea li-log e hlalosang tšebetso e 'ngoe le e 'ngoe e bitsoang (macros tse peli tse amanang: NS_LOG_FUNCTION, e sebelisetsoang mesebetsi ea litho, le NS_LOG_FUNCTION_NOARGS, e sebelisoang bakeng sa ts'ebetso e tsitsitseng);
  • LOG_LOGIC - melaetsa ea ho rekota e hlalosang phallo e hlakileng ka har'a tšebetso (macro e amanang: NS_LOG_LOGIC);
  • LOG_ALL - E boloka tsohle tse boletsoeng ka holimo (ha ho macro e amanang le eona).
    Bakeng sa mofuta o mong le o mong (LOG_TYPE) ho boetse ho na le LOG_LEVEL_TYPE eo, ha e sebelisoa, e lumellang maemo ohle a ka holimo ho eona hore a kenelle holima boemo ba eona. (Ka lebaka leo, LOG_ERROR le LOG_LEVEL_ERROR, le LOG_ALL le LOG_LEVEL_ALL li sebetsa ka ho lekana.) Ka mohlala, ho bulela LOG_INFO ho tla lumella feela melaetsa e fanoeng ke NS_LOG_INFO macro, athe LOG_LEVEL_INFO e tla kenyelletsa le melaetsa e fanoeng ke LOG_LOGERNS_BURNS_BURNS .

Re boetse re fana ka macro e sa lekanyetsoang ea ho rema lifate e lulang e bonts'oa, ho sa tsotelehe boemo ba ho rema lifate kapa karolo ea khetho.

  • NS_LOG_UNCOND - Ho rekota ntle le dipehelo tsa molaetsa o amanang le ona (ha ho boemo bo amanang le ho rema lifate).

Boemo bo bong le bo bong bo ka botsoa ka bonngoe kapa ka kakaretso. Ho rema lifate ho ka hlophisoa ho sebelisoa sh environment variable NS_LOG kapa ka ho rekota mohala oa ts'ebetso ea sistimi. Joalokaha ho bontšitsoe pejana, mokhoa oa ho rema lifate o na le litokomane tsa Doxygen 'me joale ke nako e ntle ea ho e hlahloba haeba ha u e-so etse joalo.

Kaha joale u se u balile litokomane ka botlalo, ha re sebeliseng tsebo eo ho fumana leseli le khahlisang ho tsoa ho sengoloa sa mohlala. scratch/myfirst.cctseo o seng o di bokelletse.

5.1.2 Nolofatsa ho rema lifate

Ha re sebeliseng phetoho ea tikoloho ea NS_LOG ho tsamaisa lits'oants'o tse ling, empa pele, ho fumana li-bearings tsa hau, tsamaisa sengoloa sa ho qetela joalo ka ha u entse pejana,

$ ./waf --run scratch/myfirst

U lokela ho bona tlhahiso e tloaelehileng ho tsoa lenaneong la mohlala la 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

Hoa fumaneha hore melaetsa e "rometsoeng" le "e amohetse" eo u e bonang ka holimo ehlile ke melaetsa e tsoang ho UdpEchoClientApplication и UdpEchoServerApplication. Mohlala, re ka kopa sesebelisoa sa moreki ho hatisa lintlha tse ling ka ho beha boemo ba ho rema lifate ka ho feto-fetoha ha tikoloho ea NS_LOG.

Ho tloha joale ho ea pele, ke tla nka hore u sebelisa khetla e kang sh e sebelisang syntax ea "VARIABLE=value". Haeba u sebelisa khetla e kang csh, joale u tla tlameha ho fetolela mehlala ea ka ho "setenv variable value" syntax e hlokoang ke likhetla tseo.

Hajoale, kopo ea moreki oa UDP echo e arabela moleng o latelang oa khoutu ho scratch/myfirst.cc,

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);

E thusa boemo ba ho rekota LOG_LEVEL_INFO. Ha re feta folakha ea ho rema lifate, re hlile re nolofalletsa boemo boo le maemo ohle a tlase. Tabeng ena, re lumelletse NS_LOG_INFO, NS_LOG_DEBUG, NS_LOG_WARN le NS_LOG_ERROR. Re ka eketsa boemo ba ho rema lifate 'me ra fumana lintlha tse ling, ntle le liphetoho tsa script le ho bokella hape, ka ho beha NS_LOG e fapaneng ea tikoloho ka tsela e latelang:

$ export NS_LOG=UdpEchoClientApplication=level_all

Kahoo re beha sh shell e fapaneng NS_LOG ho boleng bo latelang,

UdpEchoClientApplication=level_all

Lehlakore le letšehali la kabelo ke lebitso la karolo e ngolisitsoeng eo re batlang ho e hlophisa, 'me lehlakore le letona ke folakha eo re batlang ho e sebelisa. Tabeng ena, re tla nolofalletsa maemo ohle a ho lokisa liphoso ts'ebelisong. Haeba o tsamaisa sengoloa ka NS_LOG e behiloeng ka tsela ena, sistimi ea ho rema lifate ea ns-3 e tla amohela liphetoho 'me u lokela ho bona tlhahiso e latelang:

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

Lintlha tse ling tsa ho lokisa bothata tse fanoeng ke ts'ebeliso li boemong ba NS_LOG_FUNCTION. E bonts'a ketsahalo e 'ngoe le e' ngoe ea mohala oa ts'ebetso nakong ea ts'ebetso ea script. Joalo ka molao o akaretsang, ts'ebetsong ea mekhoa ho molemo ho e sebelisa (bonyane)NS_LOG_FUNCTION (this)... Sebelisa NS_LOG_FUNCTION_NOARGS ()
feela ka mesebetsi e tsitsitseng. Leha ho le joalo, hlokomela hore sistimi ea ns-3 ha e hlokehe ho ts'ehetsa ts'ebetso efe kapa efe ea ho rema lifate. Qeto mabapi le hore na boitsebiso bo bongata bo tlalehiloeng bo sieloa ho moqapi oa mohlala ka mong. Tabeng ea lits'ebetso tsa echo, palo e kholo ea ho rema lifate e fumaneha.

Joale o ka sheba lethathamo la mehala ea ts'ebetso e entsoeng ke ts'ebeliso. Haeba u sheba haufi-ufi, u tla hlokomela kholone pakeng tsa mola UdpEchoClientApplication le lebitso la mokhoa, moo u ka lebellang ho bona C ++ scope operator (: :). Sena ke ka boomo.

Ha e le hantle sena ha se lebitso la sehlopha, empa ke lebitso la karolo ea ho rema lifate. Ha ho na le papiso pakeng tsa faele ea mohloli le sehlopha, hangata ke lebitso la sehlopha, empa u lokela ho hlokomela hore ha e le hantle ha se lebitso la sehlopha, 'me ho na le colone e le' ngoe ho e-na le kolone e habeli. Ona ke mokhoa oa ho u thusa ho arola lebitso la linaoa tsa ho rema lifate ho tsoa ho sehlopha ka tsela e poteletseng.

Leha ho le joalo, maemong a mang ho ka ba thata ho tseba hore na ke mokhoa ofe o hlileng o hlahisang molaetsa oa log. Haeba u sheba sengoloa se kaholimo, u kanna oa ipotsa hore na mohala "Received 1024 bytes from 10.1.1.2" O ka rarolla bothata bona ka ho beha boemo prefix_func ho phetoho ea tikoloho ea NS_LOG. Leka tse latelang:

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'

Hlokomela hore matshwao a qotso a a hlokahala hobane bare e emeng eo re e sebedisang ho emela tshebetso ya OR le yona ke sehokedi sa phaephe sa Unix. Joale haeba u tsamaisa sengoloa, u tla bona hore sistimi ea ho rema lifate e netefatsa hore molaetsa o mong le o mong ho log e fanoeng o kentsoe pele ka lebitso la karolo.

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

Joale u ka bona hore melaetsa eohle e tsoang ho UDP echo client application e tsejoa e le joalo. Molaetsa "Received 1024 bytes from 10.1.1.2"hona joale e tsejoa ka ho hlaka e tsoa ho sesebelisoa sa bareki ba echo. Molaetsa o setseng o tlameha ho tsoa ho sesebelisoa sa UDP echo server. Re ka nolofalletsa karolo ena ka ho kenya lenane la likarolo tse arohaneng le colon ho NS_LOG tikoloho.

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

Tlhokomeliso: Mongolong oa mohlala o ka holimo, o tla hloka ho tlosa litlhaku tse ncha ka mor'a kholone (:), e sebelisoang ho fomata tokomane. Joale haeba u tsamaisa sengoloa, u tla bona melaetsa eohle ea log e tsoang ho moreki le lits'ebetso tsa echo tsa seva. U ka bona hore sena se ka ba molemo haholo ha u lokisa liphoso.

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

Hape ka linako tse ling ho molemo ho khona ho bona nako ea ketsiso eo molaetsa oa log o hlahisitsoeng. U ka etsa sena ka ho eketsa OR bit prefix_nako:

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

Hape, o tla tlameha ho tlosa sebapali sa newline se kaholimo. Haeba joale u tsamaisa script u lokela ho bona tlhahiso e latelang:

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

Ka kopo hlokomela hore sehahi bakeng sa UdpEchoServer e ne e bitsoa nakong ea ketsiso 0 metsotsoana. Sena se hlile se etsahala pele papiso e qala, empa nako e bonts'oa e le metsotsoana ea zero. Ho joalo le ka molaetsa oa sehahi 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()

Hopola hore script scratch/first.cc e qalile ts'ebeliso ea seva sa echo motsotsoana pele papiso e qala. Joale u ka bona mokhoa oo StartApplication seva e hlile e bitsoa motsotsoana oa pele. U kanna ua hlokomela hore moreki oa echo o qala motsotsoana oa bobeli oa papiso, joalo ka ha re botsitse script.

Hona joale o ka latela tsoelo-pele ea ketsiso ha o letsetsa ScheduleTransmit ho sesebediswa se letsetsa HandleRead callback Romela tshebediso ya seva sa echo. Hlokomela hore nako e fetileng ea ho romella pakete holim'a sehokelo sa ntlha-to-point ke 3,69 milliseconds. U ka bona hore seva sa echo se boloka molaetsa oo o se arabileng paketeng, ebe, ka mor'a ho lieha ha mocha, u bona hore mofani oa echo o amohela pakete ea echo ka mokhoa oa eona oa HandleRead.

Papisong ena, ho etsahala lintho tse ngata ntle le hore u elelloe. Empa o ka latela ts'ebetso eohle habonolo ka ho nolofalletsa likarolo tsohle tsa ho rema lifate tsamaisong. Leka ho beha phapang ea NS_LOG boleng bo latelang,

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

Naleli e ka holimo ke tlhaku ea wildcard bakeng sa karolo ea ho rema lifate. Sena se tla kenyelletsa likenyo tsohle likarolong tsohle tse sebelisitsoeng papisong. Nke ke ka hlahisa tlhahiso mona (ka nako ea ho ngola e hlahisa mela e 1265 bakeng sa pakete e le 'ngoe ea echo), empa u ka fetisetsa tlhahisoleseling ena faeleng ebe u e sheba ho mohlophisi oa hau oo u o ratang.

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

'Na ka bonna ke sebelisa mofuta ona oa ho rema lifate ha ke e-na le bothata 'me ke sa tsebe hore na lintho li tsamaile kae. Ke khona ho latela ts'ebetso ea khoutu habonolo ntle le ho beha li-breakpoints le ho feta ka har'a khoutu ho debugger. Nka mpa ka hlophisa sephetho ho mohlophisi oa ka eo ke e ratang ebe ke sheba seo ke se lebelletseng mme ka bona ho etsahala ntho eo ke neng ke sa e lebella. Ha ke se ke e-na le mohopolo o akaretsang oa hore na ho etsahalang, ke tlolela ka har'a debugger ho teba bothateng. Mofuta ona oa tlhahiso o ka ba molemo haholo ha mongolo oa hau o etsa ntho e sa lebelloang ho hang. Haeba u sebelisa debugger feela, u ka hloloheloa ho sotha ka botlalo. Ngoliso e etsa hore ho fetoha ho joalo ho bonahale.

5.1.3 Ho kenya lifate khoutu ea hau

U ka eketsa likenyelletso tse ncha ho lipapiso tsa hau ka ho letsetsa karolo ea log ho tsoa ho li-macro tse ngata. Ha re e etse ka mongolo myfirst.cc, eo re nang le eona bukeng ea "hloekileng". Hopola hore re hlalositse karolo ea ho rema lifate boemong bona:

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

Ua tseba hore u ka lumella ho rengoa ha melaetsa eohle ho tsoa karolong ena ka ho beha maemo a fapaneng a tikoloho ea NS_LOG maemong a fapaneng. Ha re tsoeleng pele 'me re kenye likenyo tse ling ho script. Macro e sebelisitsoeng ho kenya melaetsa ea boemo ba tlhahisoleseling ho log ke NS_LOG_INFO. Ha re kenye molaetsa (pele re qala ho etsa node) o o bolellang hore mongolo o mokhahlelong oa "Creating Topology". Sena se etsoa ka snippet ea khoutu e latelang,
Bula scratch/myfirst.cc ho sehlophisi seo u se ratang 'me u kenye mola,
NS_LOG_INFO ("Creating Topology");
hantle pele ho mela,

NodeContainer nodes;
nodes.Create (2);

Joale bokella script u sebelisa waf, 'me u hlakole phapang ea NS_LOG ho tima mokhoa oa ho rema lifate oo re o nolofalitseng pejana:

$ ./waf
$ export NS_LOG=
Теперь, если вы запустите скрипт,
$ ./waf --run scratch/myfirst

U ke ke ua bona molaetsa o mocha hobane karolo e amanang le ho rema lifate (FirstScriptExample) ha e so lumelloe. Ho bona molaetsa oa hau o hloka ho nolofalletsa karolo ea ho rema lifate FirstScriptExample ka boemo bo seng tlase ho NS_LOG_INFO. Haeba u batla feela ho bona boemo bona bo khethehileng ba ho rema lifate, u ka khona ho bo nolofalletsa tjena,

$ export NS_LOG=FirstScriptExample=info

Haeba u tsamaisa sengoloa hona joale, u tla bona molaetsa o mocha "Ho theha 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 Ho sebelisa likhang tsa mola oa taelo

5.2.1 Ho fetisa boleng ba tšobotsi ea kamehla

Tsela e 'ngoe ea ho fetola boitšoaro ba ns-3 scripts ntle le ho hlophisa kapa ho haha ​​​​ke ho sebelisa mabaka a mola oa taelo. Re fana ka mokhoa oa ho hlalosa likhang tsa mola oa taelo le ho iketsetsa mefuta e fapaneng ea lehae le ea lefats'e ho latela liphetho.

Mohato oa pele oa ho sebelisa tsamaiso ea line line ea taelo ke ho phatlalatsa parser ea mola oa taelo. Sena se bonolo haholo ho se etsa (lenaneong la hau la mantlha), joalo ka khoutu e latelang,

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

Ponoana ena e bonolo ea mela e 'meli e hlile e thusa haholo ka bo eona. E bula lemati la ns-3 global variable and attribute system. Ha re kenyelle mela e 'meli ea khoutu qalong ea mosebetsi oa mantlha oa mongolo scratch/myfirst.cc. Ha re tsoela pele, re bokella script ebe re e tsamaisa, ha re matha re etsa kopo ea thuso ka tsela e latelang,

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

Taelo ena e tla botsa Waf tsamaisa script mokgoahla/myfirst 'me u e fetise khang ea mola oa taelo —PrintHelp. Ho hlokahala matšoao a qotso ho bontša hore na khang e reretsoe lenaneo lefe. Mohlahlobi oa mola oa taelo o tla lemoha khang —PrintHelp mme o tla fana ka karabo,

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.

Joale ha re shebeng khetho —PrintAttributes. Re se re boletse ns-3 tšobotsi ea tsamaiso ha re ithuta lengolo la pele la cc. Re bone mela e latelang ea khoutu,

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

mme ba boletse seo DataRate ha e le hantle ke tšobotsi PointToPointNetDevice. Ha re sebeliseng "command line argument" parser ho sheba litšoaneleho PointToPointNetDevice. Lethathamo la thuso le bolela seo re tlamehang ho fana ka sona TypeId. Lena ke lebitso la sehlopha seo litšoaneleho tsa thahasello li leng ho sona. Tabeng ea rona ho tla ba joalo ns3::PointToPointNetDevice. Ha re tsoeleng pele, kena,

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

Sistimi e tla hatisa litšobotsi tsohle tsa mofuta ona oa sesebelisoa sa marang-rang. U tla bona hore har'a litšobotsi tse lethathamong ke,

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

Ena ke boleng bo sa feleng bo tla sebelisoa ke sistimi ha o theha ntho PointToPointNetDevice. Re tla hlakola boleng bona ba kamehla re sebelisa parameter Kenya в PointToPointHelper hodimo. Ha re sebeliseng litekanyetso tsa kamehla tsa lisebelisoa le liteishene tsa ntlha-to-point. Ho etsa sena, re tla hlakola mehala SetDeviceAttribute и SetChannelAttribute ho tswa myfirst.cc, eo re nang le eona bukeng e hloekileng.

Script ea hau joale e lokela ho phatlalatsa feela PointToPointHelper 'me u se ke ua etsa ts'ebetso ea ho kenya joalo ka ha ho bontšitsoe mohlaleng o ka tlase,

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

Tsoela pele 'me u thehe script e ncha ka Waf (./waff) 'me ha re khutleleng morao re kenyelletse tse ling tse tsoang ho UDP echo server application mme re kenyelle sehlohlolo sa nako.

$ export 'NS_LOG=UdpEchoServerApplication=level_all|prefix_time'

Haeba u tsamaisa script u lokela ho bona tlhahiso e latelang:

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

Hopola hore lekhetlo la ho qetela ha re sheba nako ea ho etsisa, ha pakete e amoheloa ke seva sa echo, e ne e le metsotsoana ea 2,00369.

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

Hona joale o fumana pakete ka metsotsoana e 2.25732. Sena ke hobane re seta bocha sekhahla sa data sa PointToPointNetDevice ho tloha ho megabits tse hlano motsotsoana ho ea ho boleng ba kamehla, e leng li-bits tse 32768 motsotsoana. Haeba re ne re ka kenya DataRate e ncha ho sebelisa mohala oa taelo, re ka potlakisa papiso ea rona hape. Re tla etsa sena ka tsela e latelang, ho latela foromo e boletsoeng ke karolo ea thuso:

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

Sena se tla khutlisa tšobotsi ea DataRate ho boleng ba eona ba kamehla ba megabits tse hlano motsotsoana. Na u makatsoa ke phello? Hoa etsahala hore e le hore re khutlisetse boitšoaro ba pele ba sengoloa, re boetse re hloka ho beha ho lieha ha mocha ho tsamaisana le lebelo la khanya. Re ka kopa sistimi ea line ea taelo ho hatisa litšobotsi tsa mocha, joalo ka ha re entse sesebelisoa sa marang-rang:

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

Re tla fumana hore tšobotsi ea ho lieha ha mocha e behiloe ka tsela e latelang:

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

Joale, ka sistimi ea line ea taelo, re ka beha litekanyetso tsena ka bobeli tsa kamehla.

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

tabeng ena re khutlisetsa nako eo re neng re e-na le eona ha re beha ka ho hlaka DataRate le Delay ho 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()

Hlokomela hore pakete e amoheloa ke seva hape ka mor'a metsotsoana ea 2,00369. Ha e le hantle re ka beha litšobotsi life kapa life tse sebelisitsoeng script ka tsela ena. Haholo-holo, re ka beha litšobotsi tsa MaxPackets ho boleng boo e seng bo le bong UdpEchoClient.

U ka e sebelisa joang? E leke. Hopola hore o tlameha ho fana ka maikutlo sebakeng seo re tlolang boleng ba semelo sa kamehla ebe re se beha ka ho hlaka MaxPackets mongolong. Ebe u tlameha ho tsosolosa script. U ka sebelisa mohala oa taelo ho fumana thuso ea syntax bakeng sa ho beha boleng bo bocha ba tšobotsi. Hang ha u utloisisa sena, u ka laola palo ea liphutheloana tse bontšitsoeng molaong oa taelo. Kaha re batho ba ratang ho ithuta, mola oa rona oa taelo o lokela ho shebahala tjena:

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

Potso ea tlhaho e hlahang ntlheng ena ke mokhoa oa ho tseba ka boteng ba litšobotsi tsena kaofela. Hape, tsamaiso ea line line e na le mosebetsi oa thuso bakeng sa taba ena. Haeba re kopa mohala oa taelo bakeng sa thuso, re lokela ho bona:

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

Haeba u khetha "PrintGroups" khang u lokela ho bona lenane la lihlopha tsohle tse ngolisitsoeng TypeId. Mabitso a sehlopha a lumellana le mabitso a li-module bukeng ea mohloli (leha e le capitalized). Ho hatisa tlhahisoleseding eohle ka nako e le 'ngoe ho ka ba boima haholo, kahoo ho na le sefe se eketsehileng se ka hatisang boitsebiso ka lihlopha. Kahoo, hape re shebane le mojule oa ntlha-to-point:

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

Mona o ka fumana mabitso a TypeId a fumanehang bakeng sa li- lookups tsa litšobotsi, mohlala ho
--PrintAttributes = ns3 :: PointToPointChanneljoalokaha ho bontšitsoe ka holimo.

Mokhoa o mong oa ho ithuta ka litšobotsi ke ka Doxygen ns-3. Ho na le leqephe le thathamisang litšobotsi tsohle tse ngolisitsoeng ho simulator.

5.2.2 Ho hapa litaelo tsa hau

U ka boela ua eketsa li-hook tsa hau ka tsamaiso ea line line. Sena se etsoa ka mokhoa o bonolo feela ho sebelisa mokhoa oa parser line line AddValue.
Ha re sebeliseng tšobotsi ena ho hlakisa palo ea liphutheloana tse lokelang ho hlahisoa ka tsela e fapaneng ka ho felletseng. Ha re kenye phapano ea lehae e bitsoang nPackets ho kena tshebetsong ka sehloohong. Re tla e beha ho e 'ngoe ho tsamaisana le boitšoaro ba rona ba nakong e fetileng. Ho lumella mola oa taelo ho fetola boleng bona, re hloka ho hapa boleng bona ho parser. Re etsa sena ka ho kenya mohala AddValue. E-ea 'me u fetole script scratch/myfirst.cc kahoo ho qala ka khoutu e latelang,

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

Tsamaisetsa tlase sebakeng sa script moo re behang tšobotsi ea MaxPackets le ho e fetola e le hore e behoe ho feto-fetoha ha nPackets ho e-na le 1 ea kamehla, joalokaha ho bontšitsoe ka tlase.

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

Joale haeba u tsamaisa sengoloa 'me u fana ka -PrintHelp khang, u lokela ho bona khang e ncha ea mosebelisi. e thathamisitsoeng ho pontšo ea thuso. Kena,

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

Haeba u batla ho fetola palo ea lipakete tse fetisitsoeng, u ka etsa joalo ka ho beha ngangisano ea mola oa taelo - -nPackets.

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

Joale o lokela ho bona

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

Hona joale u rometse liphutheloana tse peli. Ho bonolo haholo, na ha ho joalo?
U ka bona hore joalo ka mosebelisi oa ns-3, u ka sebelisa sistimi ea mola oa taelo ho theola litekanyetso le litšoaneleho tsa lefats'e. Haeba u moqapi oa mohlala, u ka eketsa litšoaneleho tse ncha linthong tsa hau 'me li tla fumaneha ka bo eona bakeng sa ho hlophisoa ke basebelisi ba hau ka sistimi ea line ea litaelo. Haeba u sengoli sa script, u ​​ka eketsa mefuta e mecha lingolong tsa hau 'me u li hokelle ka mokhoa o se nang moeli tsamaisong ea mola oa taelo.

5.3 Ho sebelisa mokhoa oa ho bala

Ntlha eohle ea ho etsa mohlala ke ho hlahisa tlhahiso bakeng sa thuto e tsoelang pele, 'me ns-3 trace system ke eona mokhoa o ka sehloohong oa sena. Kaha ns-3 ke lenaneo la C++, mekhoa e tloaelehileng ea ho hlahisa tlhahiso ho tsoa lenaneong la C++ e ka sebelisoa:

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

U ka sebelisa mojule oa ho rema lifate ho eketsa sebopeho se senyenyane tharollong ea hau. Ho na le mathata a mangata a tsebahalang a bakoang ke mokhoa ona, ka hona re fane ka mokhoa o akaretsang oa ho latela liketsahalo ho rarolla mathata ana.

Lipheo tsa mantlha tsa sistimi ea ho latela ns-3 ke:

  • Bakeng sa mesebetsi ea mantlha, sistimi ea ho latela e lokela ho lumella mosebelisi ho hlahisa mohlala o tloaelehileng oa mehloli e tsebahalang le ho khetha lintho tse hlahisang mohlala;

  • Basebelisi ba lipakeng ba lokela ho khona ho atolosa mokhoa oa ho latela mokhoa oa ho fetola sebopeho se hlahisitsoeng kapa ho kenya mehloli e mecha ea ho batla, ntle le ho fetola motheo oa simulator;

  • Basebelisi ba tsoetseng pele ba ka fetola motheo oa simulator ho eketsa mehloli e mecha ea ho batla le ho teba. Sistimi ea ho latela ns-3 e hahiloe holim'a melao-motheo ea mehloli e ikemetseng ea ho latedisa le baamoheli, hammoho le mochini o kopaneng oa ho hokahanya mehloli ho bareki.

Sistimi ea ho ts'oara ea ns-3 e hahiloe holim'a melao-motheo ea mehloli e ikemetseng ea ho batla le baamoheli, hammoho le mokhoa o kopaneng oa ho hokahanya mehloli ho ba amohelang. Mehloli ea morao-rao ke lintho tse ka bonts'ang liketsahalo tse etsahalang papisong le ho fana ka phihlello ho data ea mantlha ea thahasello. Ho etsa mohlala, mohlodi wa trace o ka bontsha ha sesebediswa sa netweke se amohetse pakete mme sa etsa hore dikahare tsa pakete di fumanehe ho baamohedi ba nang le thahasello.

Mehloli ea ho latela ka bobona ha e na thuso ntle le haeba e "kopantsoe" le likarolo tse ling tsa khoutu tse hlileng li etsang ntho e molemo ka tlhahisoleseling e fanoeng ke sink. Li-tracers ke bareki ba liketsahalo le lintlha tse fanoeng ke mehloli ea morao-rao. Ka mohlala, u ka etsa sink ea trace e tla (ha e hokahane le mohloli oa mohlala o fetileng) e hatisa likarolo tsa thahasello paketeng e amoheloang.

Mabaka a karohano ena e hlakileng ke ho lumella basebelisi ho hokela mefuta e mecha ea sink ho mehloli e teng ea morao-rao ntle le ho hlophisa le ho bokella motheo oa simulator. Kahoo mohlaleng o ka holimo, mosebelisi a ka hlalosa tracer e ncha ka har'a script mme a e hokahanya le mohloli o teng oa trace o hlalositsoeng mokokotlong oa papiso feela ka ho hlophisa mongolo oa mosebelisi.

Thutong ena, re tla feta har'a mehloli e seng e hlalositsoe esale pele le ho teba 'me re bontše hore na li ka hlophisoa joang ka boiteko bo fokolang ka lehlakoreng la mosebedisi. Sheba ns-3 Manual kapa likarolo tsa mokhoa oa ho fumana leseli mabapi le tlhophiso e tsoetseng pele ea ho batla mohlala, ho kenyeletsoa ho atolosa sebaka sa mabitso le ho theha mehloli e mecha.

5.3.1 ASCII Tracing

ns-3 e fana ka ts'ebetso ea mothusi e fanang ka sistimi ea boemo bo tlase ho u thusa ka lintlha ha u theha lipakete tse bonolo. Haeba u nolofalletsa tšobotsi ena, u tla bona tlhahiso ho lifaele tsa ASCII. Bakeng sa ba tloaelaneng le tlhahiso ea ns-2, mofuta ona oa trace o tšoana le tsoa.tr, e hlahisoang ke mangolo a mangata.

Ha re theoheleng khoebong 'me re kenye liphetho tsa morao-rao tsa ASCII ho script ea rona ea scratch/myfirst.cc. Hang pele ho mohala Simulator :: Run (), eketsa mela e latelang ea khoutu:
AsciiTraceHelper ascii;

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

Joalo ka maele a mang a mangata a ns-3, khoutu ena e sebelisa ntho ea mothusi ho theha mesaletsa ea ASCII. Mohala oa bobeli o na le mehala e 'meli e hlophisitsoeng. "Ka hare" mokhoa CreateFileStream() e sebelisa maele a ntho e sa tsejoeng ho theha ntho e tsamaisang faele ka har'a stack (ntle le lebitso la ntho) ebe e e fetisetsa ho mokhoa o bitsoang. Re tla kenella hare ho sena nakong e tlang, empa sohle seo o hlokang ho se tseba nakong ena ke hore o theha ntho e emelang faele e bitsoang. myfirst.tr ebe o e fetisetsa ho ns-3. Re beha ns-3 ho hlokomela ntho e bōpiloeng bophelo bohle ba eona, eo ka nako eo e rarollang mathata a bakoang ke moeli o sa tsejoeng (ka boomo) o amanang le C ++ stream object copy constructors.

Pitso ea kantle EnableAsciiAll() e bolella mothusi hore u batla ho kenyelletsa mohlala oa ASCII papisong ea hau bakeng sa likhokahano tsohle tsa lisebelisoa tsa ntlha-to-point le hore u batla (tse boletsoeng) tse amohelang mohlala ho hatisa tlhahisoleseding ea motsamao oa pakete ka sebopeho sa ASCII.

Bakeng sa ba tloaelaneng le ns-2, liketsahalo tse lateloang li lekana le lintlha tse tsebahalang tse bolokang liketsahalo "+", "-", "d" le "r".
Joale o ka haha ​​​​sengoloa mme oa se tsamaisa ho tsoa moleng oa taelo:

$ ./waf --run scratch/myfirst

Joalo ka makhetlo a mangata pele, u tla bona melaetsa e mengata e tsoang ho Waf, ebe "'build' e felile ka katleho" ka melaetsa e meng e tsoang lenaneong le sebetsang.

Ha e sebetsa, lenaneo le tla etsa faele e bitsoang myfirst.tr. Ka lebaka la sebopeho sa mosebetsi Waf, ka ho sa feleng faele ha e bōptjoe bukeng ea sebaka seo, empa bukeng ea boemo bo holimo ea polokelo. Haeba u batla ho fetola tsela eo ho eona ho bolokiloeng mesaletsa, u ka sebelisa parameter ea Waf ho e hlalosa --cwd. Ha re so etse sena, kahoo ho sheba faele ea trace ea ASCII myfirst.tr ho mohlophisi oa hau oo u o ratang, re tla hloka ho ea bukeng ea boemo bo holimo ea polokelo ea rona.

Ho hlahisa mesaletsa ea ASCII

Ho na le tlhaiso-leseling e ngata moo ka mokhoa o teteaneng, empa ntho ea pele eo u hlokang ho e ela hloko ke hore faele e na le mela e ikemetseng. Sena se tla bonahala ka ho hlaka haeba o holisa fensetere ea ho shebella haholoanyane.

Mola o mong le o mong faeleng o tsamaellana le ketsahalo ea morao-rao. Tabeng ena, re latela liketsahalo moleng oa phetisetso o teng mochineng o mong le o mong oa marang-rang oa ntlha-to-point ka papiso. Letoto la phetisetso ke queue eo pakete ka 'ngoe e tlamehang ho feta ho eona bakeng sa sehokelo sa ntlha-to-point. Hlokomela hore mola o mong le o mong faeleng ea trace o qala ka tlhaku e le 'ngoe ('me e na le sebaka ka mor'a eona). Letšoao lena le tla ba le moelelo o latelang:

+: ts'ebetso ea queuing e etsahetse moleng oa sesebelisoa;
-: ts'ebetso ea ho khutlisa element e etsahetse moleng oa sesebelisoa;
d: pakete e ile ea theoha, hangata hobane mokoloko o ne o tletse;
r: Pakete e amohetsoe ke sesebelisoa sa marang-rang.

Ha re shebisiseng mola oa pele oa trace file. Ke tla e arola likarolo (ka indentations bakeng sa ho hlaka) le nomoro ea mohala ka letsohong le letšehali:

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)

Karolo ea pele ea ketsahalo ena e atolositsoeng (mola 0) ke ts'ebetso. Re na le letšoao + mona, le tsamaellanang le ts'ebetso ea queuing bakeng sa phetiso. Karolo ea bobeli (mola oa 1) ke nako ea papiso, e hlahisoang ka metsotsoana. U ka ’na ua hopola seo re ileng ra se botsa UdpEchoClientApplication qala ho romela lipakete ka metsotsoana e 'meli. Mona re bona bopaki ba hore sena se hlile sea etsahala.

Karolo e latelang ea mohlala oa mohlala (ho tloha moleng oa 2) e bontša hore na ke mohloli ofe oa mohlala o hlahisitseng ketsahalo ena (e bontšang sebaka sa mabitso). U ka nahana ka sebaka sa mabitso joalo ka ha u ka nahana ka sebaka sa mabitso sa sistimi. Motso oa sebaka sa mabitso ke NodeList. Sena se lumellana le setshelo se tsamaisoang ka har'a khoutu e kholo ea ns-3. E na le li-node tsohle tse entsoeng ka har'a script. Joalo ka ha sistimi ea faele e ka ba le li-directory motso oa eona, NodeList re ka ba le li-node tse ngata. Kahoo mola /NodeList/0 e bua ka node e se nang thuso ho NodeList, eo hangata re nahanang ka eona e le "node 0". Node ka 'ngoe e na le lethathamo la lisebelisoa tse kentsoeng. Lenane lena le haufi le sebaka sa mabitso. U ka bona hore ketsahalo ena ea morao-rao e tsoa ho DeviceList/0, e leng sesebelisoa sa lefeela se kentsoeng node.

Substring e latelang, $ ns3 :: PointToPointNetDevice, e bolela hore na ke sesebelisoa sefe se boemong ba zero: lenane la lisebelisoa tsa node zero. Hopola hore ts'ebetso ea + e fumanoang moleng oa 0 e ne e bolela hore ntho e 'ngoe e kenyelelitsoe moleng oa phetisetso ea sesebelisoa. Sena se bonahala likarolong tsa ho qetela tsa "tsela ea pina": TxQueue/Enqueue.

Likarolo tse setseng ka morao li lokela ho ba tse hlakileng. Mela ea 3-4 e bontša hore pakete e kenyelelitsoe ho protocol ea ntlha-to-point. Mela ea 5-7 e bonts'a hore pakete e na le sehlooho sa mofuta oa IP4 mme e simolohile atereseng ea IP 10.1.1.1 mme e reretsoe 10.1.1.2. Mela ea 8-9 e bontša hore pakete ena e na le hlooho ea UDP 'me qetellong mola oa 10 o bontša hore moputso o lebeletsoe 1024 byte.

Mohala o latelang faeleng ea trace o bonts'a hore pakete e ts'oanang e hutsoe moleng oa phetisetso sebakeng se le seng.

Mohala oa boraro ka har'a faele ea trace o bontša hore pakete e amohetsoe ke sesebelisoa sa marang-rang ho moamoheli oa seva sa echo. Ke hlahisitse ketsahalo e ka tlase.

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)

Hlokomela hore ts'ebetso ea trace e se e le r mme nako ea papiso e ekelitsoe ho metsotsoana ea 2,25732. Haeba u latetse thuto ka hloko, sena se bolela hore u tlohetse DataRate ea lisebelisoa tsa marang-rang le Link Delay ho litekanyetso tsa tsona tsa kamehla. Nako ena e lokela ho tloaeleha, joalo ka ha u bone karolong e fetileng.

Mohloli oa sebaka sa mabitso (mola oa 2) o fetotsoe ho bontša hore ketsahalo ena e tsoa ho node 1 (/NodeList/1) mme pakete e amoheloa ke mohloli oa trace (/MacRx). Ho lokela ho ba bonolo ho uena ho latela motsamao oa pakete ho theosa le topology ka ho sheba mesaletsa e setseng faeleng.

5.3.2 PCAP Trace

ns-3 Device Helpers le eona e ka sebelisoa ho etsa trace lifaele ka sebopeho sa .pcap. Kgutsufatso pcap (hangata e ngotsoe ka litlhaku tse nyane) e emetse ho nka pakete mme ha e le hantle ke API e kenyelletsang ho hlalosa sebopeho sa faele sa .pcap. Lenaneo le tsebahalang haholo le ka balang le ho bonts'a sebopeho sena ke Wireshark (e neng e bitsoa pele Ethereal). Leha ho le joalo, ho na le bahlahlobi ba bangata ba sephethephethe ba sebelisang sebopeho sena sa pakete. Re khothaletsa basebelisi ho sebelisa lisebelisoa tse ngata tse fumanehang ho sekaseka mesaletsa ea pcap. Thutong ena re tla shebana le ho sheba mesaletsa ea pcap re sebelisa tcpdump.

Ho nolofaletsa pcap tracing ho etsoa ka mola o le mong oa khoutu.

pointToPoint.EnablePcapAll ("myfirst");

Beha mohala ona oa khoutu ka mor'a khoutu ea morao-rao ea ASCII eo re sa tsoa e kenya scratch/myfirst.cc. Hlokomela hore re fetisitse khoele ea "myfirst", eseng "myfirst.pcap" kapa eng kapa eng e tšoanang. Lebaka ke hobane paramethara ke sehlongoapele, eseng lebitso le felletseng la faele. Nakong ea papiso, mothusi o tla etsa hantle faele ea trace bakeng sa sesebelisoa se seng le se seng sa ntlha-to-point. Mabitso a faele a tla hahuoa ho sebelisoa sehlomathiso, nomoro ea node, nomoro ea sesebelisoa, le sekoti ".pcap".

Bakeng sa script ea rona ea mohlala, re tla qetella re bona lifaele tse bitsoang "ka pele-0-0.pcap"Le"ka pele-1-0.pcap", e leng lintlha tsa pcap bakeng sa node 0-sesebelisoa 0 le node 1-sesebelisoa 0 ka ho latellana. Ha o se o kentse mohala oa khoutu ho thusa ho latella pcap, o ka tsamaisa script ka tsela e tloaelehileng:

$ ./waf --run scratch/myfirst

Haeba u sheba bukeng ea boemo bo holimo ea kabo ea hau, u lokela ho bona lifaele tse tharo: faele ea trace ea ASCII myfirst.tr, tseo re ithutileng tsona pele, lifaele ka pele-0-0.pcap и ka pele-1-0.pcap - lifaele tse ncha tsa pcap tseo re sa tsoa li hlahisa.

Sephetho sa ho bala ka tcpdump

Hajoale, tsela e bonolo ka ho fetisisa ea ho sheba lifaele tsa pcap ke ho sebelisa 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

Thotobolong ka pele-0-0.pcap (sesebelisoa sa bareki) u ka bona pakete ea echo e romelloa ka mor'a metsotsoana ea 2 ea papiso. Haeba u sheba thotobolo ea bobeli (ka pele-1-0.pcap), u tla bona hore pakete e amoheloa ka metsotsoana ea 2,257324. U tla bona thotobolong ea bobeli hore pakete e khutlisetsoa ka metsotsoana ea 2.257324, 'me qetellong hore pakete e ile ea amoheloa ke moreki ka lekhetlo la pele ho 2.514648 metsotsoana.

Sephetho sa ho bala ka Wireshark

Haeba u sa tloaelane le Wireshark, ho na le sebaka sa marang-rang seo u ka khoasollang mananeo le litokomane ho tsoa ho sona: http://www.wireshark.org/. Wireshark ke GUI e ka sebelisoang ho bonts'a lifaele tsena tsa trace. Haeba u na le Wireshark, u ka bula leha e le efe ea lifaele tsa morao-rao 'me u bontše litaba tse ka hare joalokaha eka u hapile lipakete u sebelisa pakete sniffer.

Source: www.habr.com

Eketsa ka tlhaloso