ns-3 na'urar kwaikwayo ta hanyar sadarwa. Babi na 4

ns-3 na'urar kwaikwayo ta hanyar sadarwa. Babi na 4
Babi na 1,2
Babi na 3

4 Bayanin ra'ayi
4.1 Maɓalli masu mahimmanci
4.1.1 Node
4.1.2 Aikace-aikace
4.1.3 Channel
4.1.4 Net Na'urar
4.1.5 Topological mataimakan
4.2 Rubutun ns-3 na farko
4.2.1 Lambar tukunyar jirgi
4.2.2 Plug-ins
4.2.3 ns3 sarari suna
4.2.4 Shiga
4.2.5 Babban aiki
4.2.6 Amfani da mataimakan topology
4.2.7 Amfani da Aikace-aikacen
4.2.8 Na'urar kwaikwayo
4.2.9 Gina rubutun ku
4.3 ns-3 lambar tushe

Babi na 4

Bayanin ra'ayi

Abu na farko da ya kamata mu yi kafin mu fara koyo ko rubuta ns-3 code shine mu bayyana ƴan asali ra'ayoyi da abstractions a cikin tsarin. Yawancin wannan na iya zama a bayyane ga wasu, amma muna ba da shawarar ɗaukar lokaci don karanta wannan sashe don tabbatar da cewa kun fara kan ingantaccen tushe.

4.1 Maɓalli masu mahimmanci

A cikin wannan sashe, za mu kalli wasu kalmomin da aka saba amfani da su akan yanar gizo amma suna da takamaiman ma'ana a ns-3.

4.1.1 Node

A cikin jargon na Intanet, na'urar kwamfuta da ke haɗi zuwa cibiyar sadarwa ana kiranta host ko wani lokacin tsarin ƙarshe. Saboda ns-3 na'urar kwaikwayo ce ta hanyar sadarwa ba na'urar kwaikwayo ta Intanet ba, da gangan ba ma amfani da kalmar host, saboda wannan yana da alaƙa da Intanet da ka'idojinsa. Madadin haka, muna amfani da ƙarin kalma na gaba ɗaya, wanda wasu na'urorin kwaikwayo ke amfani da su, wanda ya samo asali daga ka'idar jadawali: node (kumburi).

A cikin ns-3, abin da ke ɓoye na na'urar kwamfuta ana kiransa node. Wannan abstraction ana wakilta a cikin C++ ta ajin Node. Class NodeNode (node) yana ba da hanyoyi don sarrafa wakilcin na'urorin kwamfuta a cikin siminti.

Dole ne ku gane kumburi kamar kwamfutar da ka ƙara ayyuka a cikinta. Za ku ƙara abubuwa kamar aikace-aikace, tarkacen yarjejeniya, da katunan gefe tare da direbobi waɗanda ke ba kwamfutar damar yin aiki mai amfani. Muna amfani da samfurin asali iri ɗaya a cikin ns-3.

4.1.2 Aikace-aikace

Gabaɗaya, software ta kwamfuta ta kasu zuwa manyan nau'o'i biyu. Software na tsarin yana tsara kayan aikin kwamfuta daban-daban kamar ƙwaƙwalwar ajiya, hawan processor, faifai, cibiyar sadarwa, da sauransu bisa ga wasu ƙirar kwamfuta. Software na tsarin yawanci baya amfani da waɗannan albarkatun don yin ayyukan da ke amfanar mai amfani kai tsaye. Mai amfani yawanci yana gudanar da aikace-aikace don cimma takamaiman buri, wanda ke samun kuma yana amfani da albarkatun da software ke sarrafawa.

Yawancin lokaci ana zana layin rabuwa tsakanin tsarin da software na aikace-aikace a matakin gata da canje-canjen da ke faruwa a tarkon tsarin aiki. ns-3 ba shi da ainihin ra'ayi na tsarin aiki don haka babu ra'ayi na matakan gata ko kiran tsarin. Muna da, duk da haka, muna da ra'ayi don app. Kamar yadda a cikin “ainihin duniya” aikace-aikacen software suna gudana akan kwamfutoci don yin ayyuka, ns-3 aikace-aikacen suna gudana akan nodes na ns-3 don sarrafa simulations a cikin duniyar da aka kwaikwayi.

A cikin ns-3, ainihin abstraction na shirin mai amfani wanda ke haifar da wasu ayyuka don yin ƙira shine aikace-aikace. Ana wakilta wannan abstraction a cikin C++ ta ajin Aikace-aikacen. Ajin Aikace-aikacen yana ba da hanyoyi don sarrafa ra'ayi na nau'in aikace-aikacen matakin-mai amfani a cikin siminti. Ana sa ran masu haɓakawa za su ƙware ajin Aikace-aikacen a cikin ma'anar shirye-shirye masu dacewa da abu don ƙirƙirar sabbin aikace-aikace. A cikin wannan koyawa, za mu yi amfani da ƙwarewa na ajin Application da ake kira UdpEchoClientApplication и UdpEchoServerApplication. Kamar yadda kuke tsammani, waɗannan aikace-aikacen sun ƙunshi saitin aikace-aikacen abokin ciniki / uwar garken da aka yi amfani da su don ƙirƙira da amsa fakitin cibiyar sadarwa.

4.1.3 Channel

A cikin duniyar gaske, zaku iya haɗa kwamfuta zuwa hanyar sadarwa. Sau da yawa kafofin watsa labaru waɗanda ake watsa bayanai a cikin waɗannan cibiyoyin sadarwa ana kiran su tashoshi. Lokacin da ka toshe kebul na Ethernet cikin mashin bango, kana haɗa kwamfutarka zuwa hanyar haɗin Ethernet. A cikin duniyar ns-3 da aka kwaikwayi, an haɗa kumburi zuwa wani abu mai wakiltar tashar sadarwa. Anan, ainihin abstraction na cibiyar sadarwar sadarwa ana kiranta tashar kuma ana wakilta a cikin C++ ta ajin Channel.

Класс Channel Channel yana ba da hanyoyi don gudanar da hulɗar abubuwan subnet da haɗa nodes zuwa gare su. Tashoshi kuma za su iya zama na musamman ta masu haɓakawa a cikin ma'anar shirye-shirye masu dacewa da abu. Ƙwarewar tashoshi na iya ƙirar wani abu mai sauƙi kamar waya. Tashar da aka keɓe kuma na iya yin ƙira ga abubuwa masu sarƙaƙƙiya kamar babban maɓalli na Ethernet ko sarari mai girma uku mai cike da cikas a yanayin hanyoyin sadarwa mara waya.

Za mu yi amfani da sigar musamman na tashar a cikin wannan koyawa mai suna CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel и WifiChannelWifiChannel. CsmaChannel, alal misali, ƙirƙira sigar cibiyar sadarwar sadarwa wacce ke aiwatar da yanayin sadarwa mai yawa-hankali. Wannan yana ba mu ayyuka irin na Ethernet.

4.1.4 Net Na'urar

Ya kasance idan kana son haɗa kwamfuta da hanyar sadarwa, sai ka sayi kebul na musamman na cibiyar sadarwa da na’urar hardware da ake kira (a cikin PC terminology) katin da ake buƙatar sakawa a cikin kwamfutar. Idan kati na gefe ya aiwatar da wasu ayyukan sadarwar, ana kiran su katunan sadarwar cibiyar sadarwa ko katunan cibiyar sadarwa. A yau, yawancin kwamfutoci suna zuwa da kayan aikin haɗin haɗin yanar gizo kuma masu amfani ba sa ganin su azaman na'urori daban.

Katin cibiyar sadarwa ba zai yi aiki ba tare da direban software wanda ke sarrafa kayan aikin sa ba. A cikin Unix (ko Linux), wani yanki na kayan aiki ana rarraba shi azaman na'ura. Ana sarrafa na'urori ta hanyar amfani da na'urori masu amfani da na'ura, kuma ana sarrafa na'urorin sadarwa (NICs) ta amfani da direbobi na na'ura (Network Device Drivers)direbobin na'urorin sadarwa) kuma ana kiransu gaba ɗaya na'urorin sadarwa (Network Devices)na'urorin sadarwa). A cikin Unix da Linux, kuna komawa zuwa na'urorin cibiyar sadarwa ta sunaye kamar eth0.

A cikin ns-3, abstraction na'urar hanyar sadarwa ta ƙunshi duka direban software da kayan aikin da ake ƙira. A cikin simulation, an "shigar da na'urar hanyar sadarwa" a cikin kumburi don ba da damar sadarwa tare da wasu nodes ta hanyar tashoshi. Kamar kwamfuta ta gaske, ana iya haɗa kumburi zuwa tashoshi da yawa ta na'urori masu yawa Na'urorin Net.

Ƙwararren hanyar sadarwa na na'ura ana wakilta a C++ ta ajin NetDevice. Class NetDevice yana ba da hanyoyi don sarrafa haɗin kai zuwa Node da abubuwan Channel; kuma za a iya ƙware ta masu haɓakawa a cikin ma'anar shirye-shirye masu dacewa da abu. A cikin wannan koyawa za mu yi amfani da nau'ikan NetDevice na musamman da ake kira CsmaNetDevice, PointToPointNetNa'urar и WifiNetDevice. Kamar yadda aka ƙera adaftar cibiyar sadarwa ta Ethernet don aiki tare da hanyar sadarwa Ethernet, CsmaNetDevice tsara don aiki tare da CsmaChannel, PointToPointNetNa'urar tsara don aiki tare da PointToPointChannelda kuma WifiNetDevice - tsara don aiki tare da WifiChannel.

4.1.5 Topological mataimakan

A cikin hanyar sadarwa ta gaske, zaku sami kwamfutoci masu masaukin baki tare da kara katunan cibiyar sadarwa (ko ginannen ciki). A ns-3 za mu ce za ku ga nodes tare da NetDevices a haɗe. A cikin babbar hanyar sadarwar da aka kwaikwayi, kuna buƙatar tsara haɗi tsakanin abubuwa da yawa kumburi, NetDevice и Channel.

Tunda haɗa NetDevices zuwa nodes, NetDevices zuwa hanyoyin haɗin gwiwa, sanya adiresoshin IP, da sauransu. a cikin ns-3 aiki ne na kowa, don sauƙaƙe wannan a matsayin mai yiwuwa muna samar da abin da ake kira mataimakan topology. Misali, don ƙirƙirar NetDevice, kuna buƙatar aiwatar da ayyuka da yawa na kernel ns-3, ƙara adireshin MAC, shigar da na'urar hanyar sadarwa a cikin Node, saita tsarin yarjejeniya na kumburi, sannan haɗa NetDevice zuwa Channel. Har ma za a buƙaci ƙarin aiki don haɗa na'urori da yawa zuwa mahaɗan mahaɗi da yawa sannan kuma haɗa ɗayan cibiyoyin sadarwa zuwa cibiyar sadarwar yanar gizo. Muna samar da abubuwan taimako na topology waɗanda ke haɗa waɗannan ayyuka da yawa zuwa ƙirar mai sauƙin amfani don dacewa.

4.2 Rubutun ns-3 na farko

Idan kun shigar da tsarin kamar yadda aka ba da shawara a sama, za ku sami ns-3 a cikin kundin adireshi da ake kira repos a cikin gidan ku. Je zuwa kundin adireshi saki

Idan ba ku da irin wannan kundin adireshi, yana nufin ba ku ƙididdige littafin fitarwa ba lokacin gina sigar sakin ns-3, gina kamar haka:
$ ./waf configure —build-profile=saki —out=gina/saki,
$ ./waf ginawa

a can ya kamata ka ga tsarin kundin adireshi mai kama da haka:

AUTHORS       examples      scratch       utils       waf.bat*
bindings      LICENSE       src           utils.py    waf-tools
build         ns3           test.py*      utils.pyc   wscript
CHANGES.html  README        testpy-output VERSION     wutils.py
doc           RELEASE_NOTES testpy.supp   waf*        wutils.pyc

Je zuwa kundin adireshi misalai/koyawa. Ya kamata ku ga fayil ɗin da ake kira farko.cc. Wannan rubutun ne wanda zai haifar da sauƙi mai sauƙi-zuwa-aya tsakanin nodes biyu kuma ya watsa fakiti ɗaya tsakanin nodes. Bari mu kalli wannan layin rubutun ta layi; don yin wannan, buɗe first.cc a cikin editan da kuka fi so.

4.2.1 Lambar tukunyar jirgi
Layin farko a cikin fayil ɗin shine layin yanayin edita emacs. Yana gaya wa emacs game da ƙa'idodin tsarawa (salon coding) waɗanda muke amfani da su a lambar tushen mu.

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */

Wannan lamari ne mai cike da cece-kuce ko da yaushe, don haka muna buƙatar saita rikodin kai tsaye don fitar da shi daga hanya kai tsaye. Aikin ns-3, kamar mafi yawan manyan ayyuka, ya ɗauki salon codeing wanda duk lambar da aka ba da gudummawa dole ne ta dace da ita. Idan kuna son ba da gudummawar lambar ku zuwa aikin, a ƙarshe za ku bi ƙa'idodin coding ns-3, kamar yadda aka bayyana a cikin fayil ɗin. doc/codingstd.txt ko aka nuna akan shafin yanar gizon aikin: https://www.nsnam.org/develop/contributing-code/coding-style/.

Muna ba da shawarar ku saba da kamanni da jin daɗin lambar ns-3 kuma ku yi amfani da wannan ƙa'idar a duk lokacin da kuke aiki da lambar mu. Duk ƙungiyar ci gaba da masu ba da gudummawa sun yarda da hakan bayan wasu gunaguni. Layin yanayin emacs da ke sama yana ba da sauƙin tsarawa daidai idan kuna amfani da editan emacs.

Na'urar kwaikwayo ta ns-3 tana da lasisi ta amfani da ita GNU Janar Public License. Za ku ga taken GNU da ya dace a cikin kowane fayil na rarraba ns-3. Sau da yawa za ku ga sanarwar haƙƙin mallaka na ɗaya daga cikin cibiyoyi masu shiga cikin aikin ns-3 sama da rubutun GPL da marubuci, wanda aka nuna a ƙasa.

/* 
* This program is free software; you can redistribute it and/or modify 
* it under the terms of the GNU General Public License version 2 as 
* published by the Free Software Foundation; 
*
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details. 
* 
* You should have received a copy of the GNU General Public License 
* along with this program; if not, write to the Free Software 
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
*/

4.2.2 Plug-ins

Lambar kanta tana farawa da jerin bayanan haɗawa (sun hada da).

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"

Don taimaka wa masu amfani da babban matakin rubutun mu su jimre da ɗimbin fayilolin rubutun da ke cikin tsarin, muna haɗa su gwargwadon yadda ake amfani da su zuwa manyan kayayyaki. Mun samar da fayil na kai guda ɗaya wanda zai sake loda duk fayilolin kan kai da aka yi amfani da su a cikin wani tsarin da aka bayar. Maimakon samun bincika ainihin abin da kake buƙata da kuma yuwuwar samun daidaitattun jerin abubuwan dogaro, muna ba ku ikon zazzage gungun fayiloli cikin girma. Ba hanya ce mafi inganci ba, amma tabbas yana sa rubutun rubutu ya fi sauƙi.

Kowane ns-3 ya haɗa da fayiloli ana sanya su a cikin kundin adireshi da ake kira ns3 (gina babban fayil) don guje wa rikice-rikicen sunan fayil yayin aikin ginin. Fayil ns3/core-module.h yayi daidai da tsarin ns-3, wanda zaku samu a cikin kundin adireshi src/core a cikin sakin da kuka shigar. A cikin jeri na wannan kundin adireshi za ku sami adadi mai yawa na fayilolin kai. Idan za ku yi majalissar, Waf yana sanya fayilolin rubutun jama'a a cikin ns3 directory a cikin kundin adireshi ginawa/debug

Idan ba ku da irin wannan kundin adireshi, yana nufin ba ku ƙididdige littafin fitarwa ba lokacin gina sigar sakin ns-3, gina kamar haka:
$ ./waf saitin --build-profile=debug --out=build/debug
$ ./waf ginawa
ko
$ ./waf configure --build-profile= ingantacce --out=build/ inganta
$ ./waf ginawa

ko gina / inganta, ya danganta da tsarin ku. Waf Hakanan za ta samar da tsari ta atomatik wanda ya haɗa da fayil don loda duk fayilolin taken jama'a. Tunda kuna bin wannan jagorar a addini, kun riga kun yi

$ ./waf -d debug --enable-examples --enable-tests configure

don saita aikin don gudanar da ginin ginin da ya haɗa da misalai da gwaje-gwaje. Kun kuma yi

$ ./waf

don hada aikin. Don haka yanzu idan kun duba cikin directory ../../build/debug/ns3, to, a can za ku sami, a tsakanin sauran, fayilolin rubutun kalmomi guda huɗu da aka nuna a sama. Kuna iya duba abubuwan da ke cikin waɗannan fayilolin kuma gano cewa sun haɗa da duk fayilolin jama'a waɗanda keɓaɓɓun kayan aikin ke amfani da su.

4.2.3 ns3 sarari suna

Layi na gaba a cikin rubutun farko.cc shelar sararin suna.

using namespace ns3;

Ana aiwatar da aikin ns-3 a cikin sunan C++ mai suna ns3. Wannan ƙungiyoyin duk bayanan da suka danganci ns-3 zuwa wani yanki da ke waje da sararin sunan duniya, wanda da fatan zai taimaka tare da haɗin gwiwa tare da wasu lambobi. Yin amfani da ma'aikacin C++ yana gabatar da sararin sunan ns-3 a cikin yankin sanarwa na yanzu (duniya). Wannan wata kyakkyawar hanya ce ta faɗi cewa bayan wannan sanarwar, ba za ku buƙaci buga ma'aikacin izini na ns3::scope kafin duk lambar ns-3 ɗin ku don amfani da ita ba. Idan baku saba da wuraren suna ba, koma zuwa kusan kowane littafin C++ kuma ku kwatanta sunan ns3 ta amfani da std namespace da bayyanawa. using namespace std; a cikin misalan aiki tare da mai sarrafa fitarwa kudin da koguna.

4.2.4 Shiga

Layi na gaba na rubutun shine,

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

Za mu yi amfani da wannan bayanin a matsayin wuri mai dacewa don tattauna tsarin takardun mu Oxygen. Idan kun kalli gidan yanar gizon aikin ns-3, zaku sami hanyar haɗin Takardun Takaddun bayanai a mashigin kewayawa. Idan kun danna wannan hanyar haɗin yanar gizon za a kai ku zuwa shafinmu na takaddun shaida. Akwai hanyar haɗin "Saki na Ƙarshe" wanda zai kai ku zuwa takaddun don sabon sigar ns-3. Idan ka zaɓi hanyar haɗin "Takardun API", za a kai ka zuwa shafin ns-3 API takardun.

A gefen hagu na shafin za ku sami wakilcin zane na tsarin takardun. Kyakkyawan wurin farawa shine Modules ns-3 "littafin" a cikin ns-3 bishiyar kewayawa. Idan kun bayyana kayayyaki, za ku ga jerin takaddun ns-3 modules. Kamar yadda aka tattauna a sama, manufar tsarin a nan yana da alaƙa kai tsaye da fayilolin da aka haɗa a cikin tsarin da ke sama. An tattauna tsarin tsarin shiga ns-3 a cikin sashe Amfani da Module Logging, don haka za mu dawo daga baya a cikin wannan koyawa, amma za ku iya koyo game da bayanin da ke sama ta hanyar duba tsarin. coresannan ya bude littafin Kayan aikin gyarawasannan ka zabi shafin shiga. Danna kan shiga.

Ya kamata ku sake duba takaddun yanzu Oxygen don module shiga. A cikin jerin macro a saman shafin, zaku ga shigarwa don NS_LOG_COMPONENT_DEFINE. Kafin danna hanyar haɗin yanar gizon, tabbatar da duba "Bayyanawa" na tsarin rajista don fahimtar yadda yake aiki gaba ɗaya. Don yin wannan zaka iya gungurawa ƙasa ko zaɓi "Ƙari..." a ƙasan ginshiƙi.

Da zarar kuna da cikakken ra'ayin abin da ke faruwa, ci gaba da duba takaddun takamaiman NS_LOG_COMPONENT_DEFINE. Ba zan kwafi takaddun ba a nan, amma don taƙaitawa, wannan layin yana bayyana ɓangaren rajista da ake kira Misali na Farko, wanda ke ba ka damar kunna ko kashe na'urorin saƙon na'ura ta hanyar la'akari da suna.

4.2.5 Babban aiki

A cikin wadannan layuka na rubutun za ku gani,

int 
main (int argc, char *argv[])
{ 

Wannan shine kawai ayyana babban aikin shirin ku (rubutun). Kamar kowane shirin C++, kuna buƙatar ayyana babban aiki, ana aiwatar da wannan da farko. Babu wani abu na musamman a nan. Rubutun ns-3 ɗinku shirin C++ ne kawai. Layi mai zuwa yana saita ƙudurin lokaci zuwa 1 nanosecond, wanda shine tsoho:

Time::SetResolution (Time::NS);

Ƙaddamar lokaci, ko ƙayyadaddun ƙayyadaddun ƙayyadaddun lokaci, shine mafi ƙarancin ƙimar lokacin da za'a iya amfani da shi (mafi ƙanƙancin bambancin wakilci tsakanin sau biyu). Kuna iya canza ƙuduri daidai sau ɗaya. Tsarin da ke ba da wannan sassauci yana cinye ƙwaƙwalwar ajiya, don haka da zarar an saita ƙuduri a sarari, muna 'yantar da ƙwaƙwalwar ajiya, muna hana ƙarin ɗaukakawa. (Idan baku saita ƙuduri a sarari ba, zai zama tsoho zuwa nanosecond ɗaya kuma ƙwaƙwalwar zata sami 'yantar lokacin da simulation ya fara.)

Ana amfani da layukan rubutun guda biyu masu zuwa don ba da damar abubuwan shiga guda biyu waɗanda aka gina su cikin aikace-aikace EchoClient и EchoServer:

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);

Idan ka karanta takardun don bangaren Logging, za ka ga cewa akwai matakan shiga da yawa da za ka iya kunna akan kowane bangare. Waɗannan layukan lamba guda biyu suna ba da damar shigar da kuskure zuwa matakin INFO don echo abokan ciniki da sabar. A wannan matakin, aikace-aikacen zai buga saƙonni yayin aikawa da karɓar fakiti yayin kwaikwayo.

Yanzu za mu gangara zuwa kasuwancin ƙirƙirar topology da gudanar da simulation. Muna amfani da abubuwan taimako na topology don sauƙaƙe wannan aikin a matsayin mai sauƙi.

4.2.6 Amfani da mataimakan topology

Layukan lamba biyu na gaba a cikin rubutun mu za su haifar da abubuwan Node ns-3 waɗanda za su wakilci kwamfutoci a cikin simulation.

NodeContainer nodes;
nodes.Create (2);

Kafin mu ci gaba, bari mu nemo takaddun ga ajin NodeContainer. Wata hanyar zuwa ga takaddun don aji da aka bayar ita ce ta shafin Classes a shafukan Oxygen. Idan kun riga kun buɗe Doxygen, kawai gungura sama zuwa saman shafin kuma zaɓi shafin Classes. Ya kamata ku ga sabon saitin shafuka, ɗaya daga cikinsu shine jerin azuzuwan. A ƙarƙashin wannan shafin zaku ga jerin duk azuzuwan ns-3. Gungura ƙasa zuwa ns3 :: NodeContainer. Lokacin da kuka sami aji, zaɓi shi don zuwa takaddun aji.

Kamar yadda muke tunawa, ɗaya daga cikin maɓalli na mu shine kumburi. Yana wakiltar kwamfutar da za mu ƙara abubuwa zuwa gare ta kamar takin yarjejeniya, aikace-aikace, da katunan gefe. Topology mataimakin NodeContainer yana ba da hanya mai dacewa don ƙirƙira, sarrafawa da samun damar kowane abu kumburi, wanda muke ƙirƙira don gudanar da simulation. Layin farko na sama yana bayyanawa kawai NodeContainer, wanda muke kira nodes. Layi na biyu yana kiran hanyar Ƙirƙiri akan abin nodes kuma ya nemi akwati don ƙirƙirar nodes biyu. Kamar yadda aka bayyana a cikin Oxygen, kwandon yana buƙatar tsarin ns-3 don ƙirƙirar abubuwa biyu kumburi kuma yana adana masu nuni ga waɗannan abubuwa na ciki.

Ƙungiyoyin da aka ƙirƙira a cikin rubutun ba su yi komai ba tukuna. Mataki na gaba na gina topology shine haɗa nodes ɗinmu zuwa hanyar sadarwa. Hanya mafi sauƙi na hanyar sadarwar da muke tallafawa ita ce haɗin kai-zuwa-maki tsakanin nodes biyu. Yanzu za mu ƙirƙiri irin wannan haɗin.

PointToPointHelper

Muna ƙirƙirar haɗin kai-zuwa-ma'ana ta amfani da ƙirar da aka saba, ta amfani da abu mai taimako na topology don yin ƙaramin matakin da ake buƙata don haɗin. Ka tuna cewa mabuɗin mu guda biyu NetDevice и Channel. A cikin duniyar gaske, waɗannan sharuɗɗan sun yi daidai da katunan gefe da igiyoyin hanyar sadarwa. Yawanci, waɗannan abubuwa biyu suna da alaƙa da juna, kuma babu wanda zai iya ƙidaya akan rabawa, misali, na'urori Ethernet kan tashar mara waya. Mataimakan topology ɗin mu suna bin wannan kusancin kud da kud don haka zaku yi amfani da abu ɗaya a cikin wannan yanayin PointToPointHelper don kafawa da haɗa abubuwan ns-3 PointToPointNetNa'urar и PointToPointChannel. Layuka uku masu zuwa a cikin rubutun:

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

Layin farko,

PointToPointHelper pointToPoint;

yana haifar da misalin wani abu akan tari PointToPointHelper. Daga saman matakin kallo layin mai zuwa,

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

ya fada abun PointToPointHelper Yi amfani da ƙimar "5 Mbit/s" (megabits biyar a sakan daya) kamar yadda "DataRate".

Daga wani takamaiman ra'ayi, kirtani "DataRate" yayi daidai da abin da muke kira sifa PointToPointNetNa'urar. Idan ka duba Oxygen domin aji ns3 :: PointToPointNetDevice kuma a cikin takardun don hanyar GetTypeId za ku sami jerin halayen da aka ayyana don na'urar. Daga cikinsu akwai sifa”.DataRate" Yawancin abubuwan ns-3 masu iya gani suna da jerin halaye iri ɗaya. Muna amfani da wannan hanyar don sauƙaƙe saita simulation ba tare da sakewa ba, kamar yadda zaku gani a sashe na gaba.

kama da"DataRate" a cikin PointToPointNetDevice, za ku sami sifa "jinkiri" mai alaƙa da PointToPointChannel. Layin karshe

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

ya ce PointToPointHelper yi amfani da ƙimar "2 ms" (milliseconds biyu) azaman ƙimar jinkirin yaduwa don mahaɗin batu-zuwa-ma'ana wanda daga baya ya ƙirƙira.

NetDeviceContainer

A halin yanzu muna da a cikin rubutun NodeContainer, wanda ya ƙunshi nodes biyu. Muna da PointToPointHelper, wanda aka shirya don ƙirƙirar abubuwa PointToPointNetNa'urori da haɗa su ta amfani da wani abu na PointToPointChannel. Kamar yadda muka yi amfani da NodeContainer topology support abu don ƙirƙirar nodes, za mu yi tambaya PointToPointHelper yi mana aikin da ya danganci ƙirƙira, daidaitawa da shigar da na'urorin mu. Muna buƙatar jerin duk abubuwan da aka ƙirƙira NetDevice, don haka muna amfani NetDeviceContainer don adana su kamar yadda muka yi amfani da su NodeContainer don adana nodes da muka halitta. Layukan code guda biyu na gaba,

NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);

cikakken na'urar da saitin tashar. Layin farko yana bayyana kwandon na'urar da aka ambata a sama, kuma na biyu yana yin babban aikin. Hanya shigar makaman PointToPointHelper yarda NodeContainer a matsayin siga. Ciki NetDeviceContainer ga kowane kumburi da ke cikin NodeContainer an ƙirƙira (don sadarwar batu-zuwa dole ne a kasance daidai guda biyu daga cikinsu) PointToPointNetNa'urar an ƙirƙira kuma an adana shi a cikin kwandon na'urar. PointToPointChannel an halicce shi kuma biyu suna makale da shi PointToPointNetNa'urori. Bayan ƙirƙirar abubuwa, abubuwan da aka adana a ciki PointToPointHelper, ana amfani da su don ƙaddamar da halayen da suka dace a cikin abubuwan da aka ƙirƙira.

Bayan yin kira pointToPoint.Install (nodes) za mu sami nodes guda biyu, kowanne tare da na'urar hanyar sadarwa ta batu-zuwa-point da aka shigar da kuma hanyar haɗin kai-da-aya a tsakanin su. Duk na'urorin biyu za a daidaita su don watsa bayanai a cikin gudun megabits biyar a cikin dakika tare da jinkirin watsawa na milliseconds biyu akan tashar.

InternetStackHelper

Yanzu muna da nodes da na'urori da aka saita, amma nodes ɗinmu ba su da tarin tarin ƙa'idodi. Layukan lamba biyu na gaba zasu kula da wannan.

InternetStackHelper stack;
stack.Install (nodes);

InternetStackHelper - mai taimako ne na topology ga tarin Intanet, mai kama da PointToPointHelper don na'urorin cibiyar sadarwa na aya-zuwa. Hanya shigar yana ɗaukar NodeContainer azaman siga. Lokacin da aka kashe shi, zai shigar da tarin Intanet (TCP, UDP, IP, da sauransu) akan kowane kullin akwati.

IPv4AddressHelper

Sannan muna buƙatar haɗa na'urorin mu da adiresoshin IP. Muna ba da mataimaki na topology don sarrafa rarraba adireshin IP. API ɗin kawai da ake iya gani ga mai amfani shine saita tushen adireshin IP da netmask don amfani yayin yin ainihin rarraba adireshin (ana yin wannan a ƙaramin matakin a cikin mataimaki). Layukan lamba biyu na gaba a cikin rubutun misalin mu farko.cc,

Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");

bayyana abin da ke taimakawa adireshin kuma gaya masa cewa ya kamata ya fara rarraba adiresoshin IP daga cibiyar sadarwa 10.1.1.0, ta amfani da 255.255.255.0 bitmask don tantancewa. Ta hanyar tsoho, adiresoshin da aka keɓance za su fara daga ɗaya kuma su ƙaru da yawa, don haka adireshin farko da aka ware daga wannan tushe zai zama 10.1.1.1, sannan 10.1.1.2, da sauransu. A gaskiya ma, a ƙananan matakin, tsarin ns-3 yana tunawa da duk adiresoshin IP da aka keɓe kuma ya haifar da kuskuren kuskure idan kun ƙirƙiri wani yanayi da gangan inda aka samar da adireshin iri ɗaya sau biyu (ta hanyar, wannan kuskuren yana da wuyar cirewa).

Layin code na gaba,

Ipv4InterfaceContainer interfaces = address.Assign (devices);

yana aiwatar da ainihin adireshin adireshin. A cikin ns-3 mun kafa haɗi tsakanin adireshin IP da na'ura ta amfani da abin IPV4 Interface. Kamar yadda a wasu lokuta muna buƙatar jerin na'urorin sadarwar da mataimaki ya ƙirƙira don amfani daga baya, wani lokacin muna buƙatar jerin abubuwa IPV4 Interface. IPV4InterfaceContainer yana ba da wannan aikin.

Mun gina hanyar sadarwa mai ma'ana-zuwa-ma'ana, tare da shigar da tarkace da adiresoshin IP da aka sanya. Yanzu muna buƙatar aikace-aikace a kowane kumburi don samar da zirga-zirga.

4.2.7 Amfani da Aikace-aikacen

Wani babban abstraction na tsarin ns-3 shine Aikace-aikace (application). A cikin wannan yanayin muna amfani da ƙwararrun ajin tushe guda biyu Aikace-aikace ns-3 ake kira UdpEchoServerApplication и UdpEchoClientApplication. Kamar a lokuta da suka gabata, muna amfani da abubuwa masu taimako don daidaitawa da sarrafa abubuwan tushe. A nan muna amfani UdpEchoServerHelper и UdpEchoClientHelper abubuwa don sauƙaƙa rayuwarmu.

UdpEchoServerHelper

Layukan lamba masu zuwa a cikin rubutun misalin mu na farko.cc ana amfani da su don saita aikace-aikacen uwar garken echo na UDP akan ɗaya daga cikin nodes ɗin da muka ƙirƙira a baya.

UdpEchoServerHelper echoServer (9);

ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

Layin farko na lambar a cikin snippet na sama yana ƙirƙira UdpEchoServerHelper. Kamar yadda aka saba, wannan ba app ba ne, abu ne da ke taimaka mana ƙirƙirar aikace-aikacen gaske. Ɗaya daga cikin tarurrukan mu shine ƙaddamar da halayen da ake buƙata ga maginin abin taimako. A wannan yanayin, mataimaki ba zai iya yin wani abu mai amfani ba sai an ba shi lambar tashar tashar da uwar garken zai saurari fakiti, wannan lambar kuma dole ne ya san abokin ciniki. A wannan yanayin, muna wuce lambar tashar jiragen ruwa zuwa mai ginin mataimaki. Mai ginin, bi da bi, yana yi kawai Saita Halin tare da ƙimar da ta wuce. Daga baya, idan ana so, zaku iya amfani da SetAttribute don saita ƙimar daban don sifa ta Port.

Kamar sauran abubuwa masu yawa, abu UdpEchoServerHelper yana da hanya shigar. Yin aiwatar da wannan hanyar yadda ya kamata yana haifar da ainihin aikace-aikacen uwar garken echo kuma yana ɗaure shi ga mai watsa shiri. Abin sha'awa, hanyar shigar yarda NodeContainer a matsayin siga kamar sauran shigar hanyoyin da muka gani.

Canjin C++ a fakaice yana aiki anan yana ɗaukar sakamakon hanyar node.Samu (1) (wanda ke mayar da mai nuna wayo zuwa ga abin kumburi - Ptr) kuma yana amfani da shi a cikin ginin don abin da ba a san shi ba NodeContainerwanda sai a wuce zuwa hanyar shigar. Idan ba za ku iya tantancewa a cikin lambar C++ wace hanyar sa hannu aka haɗa da aiwatar da ita ba, to duba cikin jujjuyawar fayyace.

Yanzu mun ga haka echoServer.Install game da shigar da aikace-aikacen UdpEchoServerApplication a samu a NodeContainerwanda muke amfani dashi don sarrafa nodes, kumburi tare da index 1. Hanyar shigar zai dawo da akwati wanda ya ƙunshi nuni ga duk aikace-aikacen (a cikin wannan yanayin ɗaya, tunda mun ƙaddamar da wanda ba a san shi ba NodeContainer, dauke da kumburi daya) wanda mataimaki ya halitta.

Aikace-aikace suna buƙatar ƙayyade lokacin da za a fara samar da zirga-zirga "fara" kuma yana iya buƙatar bugu da žari ƙayyade lokacin da za a dakatar da shi "tsaya". Muna ba da zaɓuɓɓuka biyu. Ana saita waɗannan lokutan ta amfani da hanyoyin Kayan Aiki Fara и Tsaya. Waɗannan hanyoyin suna karɓar sigogi na nau'in Time. A wannan yanayin muna amfani da jerin juzu'ai na C++ don ɗaukar C++ biyu 1.0 kuma canza shi zuwa wani abu na tns-3 wanda ke amfani da abin seconds don canza shi zuwa dakika. Ka tuna cewa mawallafin ƙirar za a iya sarrafa ka'idodin juyawa, kuma C++ yana da nasa ƙa'idodin, don haka ba za ku iya ƙidaya koyaushe akan sigogin da ake canza su kamar yadda kuke tsammani ba. Layuka biyu

serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

zai sa aikace-aikacen uwar garken echo ya fara (kunna ta atomatik) daƙiƙa ɗaya bayan fara simintin kuma tsayawa (kashe) bayan daƙiƙa goma na simulation. Saboda gaskiyar cewa mun ayyana taron simulation ( taron dakatar da aikace-aikacen), wanda za a aiwatar a cikin daƙiƙa goma, aƙalla daƙiƙa goma na aikin cibiyar sadarwa za a kwaikwayi.

UdpEchoClientHelper

Aikace-aikacen abokin ciniki Kira an daidaita shi ta hanya kusan kama da uwar garken. Akwai tushe abu UdpEchoClientApplication, wanda ake gudanarwa
UdpEchoClientHelper.

UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));;

Koyaya, don echo abokin ciniki muna buƙatar saita halaye daban-daban guda biyar. Halaye biyu na farko an saita su a lokacin halitta UdpEchoClientHelper. Mun wuce sigogi waɗanda aka yi amfani da su (a cikin mataimaki) don saita halayen "Adireshin Nesa" и "RemotePort" daidai da yarjejeniyar mu don ƙaddamar da ma'auni masu mahimmanci ga maginin taimako.

Mu tuna cewa mun yi amfani IPV4InterfaceContainer don bibiyar adiresoshin IP da muka sanya wa na'urorinmu. Maɓallin mara amfani a cikin kwandon musaya zai dace da adireshin IP na kullin mara kyau a cikin kwandon nodes. Na farko dubawa a cikin musaya akwati yayi dace da adireshin IP na kumburin farko a cikin kwandon nodes. Don haka, a cikin layin farko na lambar (a sama), muna ƙirƙirar mataimaki kuma muna gaya masa cewa adireshin nesa na abokin ciniki zai zama adireshin IP da aka sanya wa mai watsa shiri inda uwar garken yake. Mun kuma ce muna bukatar mu shirya tura fakiti zuwa tashar jiragen ruwa tara.

Siffar "MaxPackets" tana gaya wa abokin ciniki iyakar adadin fakiti da za mu iya aikawa yayin simintin. Siffar "Tazara" tana gaya wa abokin ciniki tsawon lokacin da za a jira tsakanin fakiti, kuma sifa ta "PacketSize" tana gaya wa abokin ciniki girman nauyin fakitin. Tare da wannan haɗin sifa muna gaya wa abokin ciniki ya aika fakiti 1024-byte guda ɗaya.

Kamar yadda yake tare da uwar garken echo, mun saita halayen echo abokin ciniki Fara и Tsaya, amma a nan za mu fara abokin ciniki na biyu bayan an kunna uwar garken (daƙiƙa biyu bayan fara simulation).

4.2.8 Na'urar kwaikwayo

A wannan lokacin muna buƙatar gudanar da simulation. Ana yin wannan ta amfani da aikin duniya Na'urar kwaikwayo:: Gudu.

Simulator::Run ();

Lokacin da muka kira hanyoyin a baya,

serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
... 
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));

a zahiri mun tsara abubuwan da suka faru a cikin na'urar kwaikwayo a cikin daƙiƙa 1,0, daƙiƙa 2,0, da abubuwa biyu a cikin daƙiƙa 10,0. Bayan kiran Na'urar kwaikwayo:: Gudu, tsarin zai fara duba jerin abubuwan da aka tsara kuma ya aiwatar da su. Zai fara kunna taron bayan daƙiƙa 1,0, wanda zai haifar da aikace-aikacen uwar garken echo (wannan taron zai iya tsara wasu al'amura da yawa). Sannan zai kunna taron da aka shirya a t=2,0 seconds wanda zai ƙaddamar da aikace-aikacen abokin ciniki na echo. Bugu da ƙari, wannan taron na iya samun ƙarin abubuwan da aka tsara. Fara aiwatar da taron a cikin abokin ciniki na echo zai fara lokacin canja wurin bayanai na simulation ta aika fakiti zuwa uwar garken.

Ayyukan aika fakiti zuwa uwar garken zai haifar da jerin abubuwan da za a tsara ta atomatik a bayan fage wanda zai aiwatar da injina na aika fakitin echo bisa ga sigogin lokaci da muka saita a cikin rubutun.

Sakamakon haka, tun da fakiti ɗaya kawai muke aika (tuna, sifa MaxPackets an saita zuwa ɗaya), jerin abubuwan da wannan ping ɗin abokin ciniki guda ɗaya ya ƙaddamar zai ƙare kuma simintin zai shiga yanayin jiran aiki. Da zarar wannan ya faru, sauran abubuwan da aka tsara za su kasance abubuwan da suka faru Tsaya don uwar garken da abokin ciniki. Lokacin da aka aiwatar da waɗannan abubuwan, ba za a sami abubuwan da suka rage don ƙarin aiki ba Na'urar kwaikwayo:: Gudu zai dawo iko. Simulation ya cika.

Abin da ya rage shi ne tsaftace bayan kanku. Ana yin wannan ta hanyar kiran aikin duniya Na'urar kwaikwayo :: Rushe. Domin ana kiran ayyukan taimako (ko ƙananan ns-3 code), waɗanda aka tsara don sanya ƙugiya a cikin na'urar kwaikwayo don lalata duk abubuwan da aka halitta. Ba ku buƙatar bin diddigin ɗayan waɗannan abubuwan da kanku - abin da kawai ku yi shine kira Na'urar kwaikwayo :: Rushe kuma fita. Tsarin ns-3 zai yi muku wannan aiki mai wahala. Ragowar layin rubutun ns-3 na farko, first.cc, yi haka:

Simulator::Destroy ();
return 0;
}

Yaushe na'urar kwaikwayo zata tsaya?

ns-3 na'urar kwaikwayo ce ta musamman (DE). A cikin irin wannan na'urar kwaikwayo, kowane taron yana da alaƙa da lokacin aiwatarwarsa, kuma simintin yana ci gaba ta hanyar sarrafa abubuwan da suka faru a cikin tsari da suke faruwa yayin da simintin ke ci gaba. Abubuwan da ke faruwa na iya haifar da tsara abubuwan da zasu faru nan gaba (misali, mai ƙidayar lokaci zai iya sake tsara kanta don gama ƙidayar a cikin tazara na gaba).

Abubuwan farko suna farawa ta hanyar mahaluži, misali IPv6 zai tsara gano ayyuka akan hanyar sadarwa, buƙatun maƙwabta, da sauransu. Aikace-aikacen yana tsara jadawalin aika fakiti na farko, da sauransu. Lokacin da aka sarrafa wani abu, zai iya haifar da sifili, ɗaya, ko fiye da aukuwa. Yayin da simintin ya ci gaba, abubuwa suna faruwa, ko dai suna ƙarewa ko ƙirƙirar sababbi. Simulation ɗin zai tsaya kai tsaye idan jerin gwanon taron ba kowa bane ko kuma aka gano wani abu na musamman Tsaya. Lamarin Tsaya haifar da aikin Simulator:: Tsaya (lokacin tsayawa).

Akwai yanayi na yau da kullun inda Simulator :: Tsayawa ya zama lallai ya zama dole don dakatar da simintin: lokacin da akwai abubuwan ci gaba da kai. Abubuwan da ke dawwama (ko maimaituwa) al'amura ne waɗanda a koyaushe ake sake tsarawa. Sakamakon haka, koyaushe suna ajiye layin taron ba komai ba. Akwai ka'idoji da ƙa'idodi da yawa waɗanda suka ƙunshi maimaita abubuwan da suka faru, misali:

• FlowMonitor - dubawa lokaci-lokaci don fakitin da suka ɓace;

• RIPng – watsa shirye-shirye na lokaci-lokaci na sabunta tebur na kwatance;

• da sauransu.

A irin wannan yanayi Simulator:: Tsaya wajibi ne don dakatar da simintin daidai. Bugu da ƙari, lokacin da ns-3 ke cikin yanayin kwaikwayo, ana amfani da RealtimeSimulator don daidaita agogon simulation tare da agogon inji, kuma Simulator:: Tsaya wajibi ne don dakatar da tsari.

Yawancin shirye-shiryen kwaikwayo a cikin littafin karatu ba sa kira Simulator:: Tsaya a bayyane, tunda suna ƙarewa ta atomatik lokacin da abubuwan da aka yi layi suka ƙare. Koyaya, waɗannan shirye-shiryen kuma za su karɓi Simulator:: Tsaida kira. Misali, ƙarin bayani mai zuwa a cikin shirin misali na farko zai tsara tsayuwar tsayuwa a cikin daƙiƙa 11:

+ Simulator::Stop (Seconds (11.0));
  Simulator::Run ();
  Simulator::Destroy ();
  return 0;
}

Abin da ke sama a zahiri ba zai canza halayen wannan shirin ba, tunda wannan simintin na musamman yana ƙarewa bayan daƙiƙa 10. Amma idan za ku canza lokacin tsayawa a cikin bayanin da ke sama daga daƙiƙa 11 zuwa daƙiƙa 1, za ku lura cewa simulation yana tsayawa kafin duk wani fitarwa ya taɓa allon (tun lokacin da fitarwa ke faruwa bayan kusan 2 seconds na lokacin kwaikwayo).

Yana da mahimmanci a kira Simulator :: Tsaya kafin kiran Simulator :: Run; in ba haka ba Simulator :: Run bazai taba dawo da sarrafawa zuwa babban shirin don aiwatar da tasha ba!

4.2.9 Gina rubutun ku

Mun mai da ƙirƙirar rubutun ku masu sauƙi maras muhimmanci. Abin da kawai za ku yi shi ne sanya rubutun ku a cikin kundin tarihin kuma za a gina shi ta atomatik idan kun gudu Waf. Mu gwada. Koma zuwa babban kundin adireshi kuma kwafi misalai/koyawa/first.cc zuwa kasida karce

$ cd ../.. 
$ cp examples/tutorial/first.cc scratch/myfirst.cc

Yanzu gina rubutun samfurin ku na farko ta amfani da waf:

$ ./waf

Ya kamata ku ga saƙonnin da ke nuna cewa an ƙirƙiri misalin ku na farko cikin nasara.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
[614/708] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_3.o
[706/708] cxx_link: build/debug/scratch/myfirst_3.o -> build/debug/scratch/myfirst
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (2.357s)

Yanzu zaku iya gudanar da misalin (lura cewa idan kun gina shirin ku a cikin kundin tarihin, to dole ne ku kunna shi daga karce):

$ ./waf --run scratch/myfirst

Ya kamata ku ga fitarwa irin wannan:

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s) Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

Anan za ku ga cewa tsarin ginawa yana tabbatar da cewa an gina fayil ɗin sannan ya gudanar da shi. Kuna ganin shigarwar bangaren akan abokin ciniki na echo yana nuna cewa ya aika fakitin 1024-byte guda ɗaya zuwa uwar garken echo 10.1.1.2. Hakanan kuna ganin sashin shiga akan uwar garken echo don faɗi cewa ya karɓi bytes 1024 daga 10.1.1.1. Sabar echo tayi shiru tana sake kunna fakitin kuma zaka iya gani a cikin log ɗin abokin ciniki na echo cewa ta karɓi fakitinsa daga uwar garken.

4.3 ns-3 lambar tushe

Yanzu da kun yi amfani da wasu mataimakan ns-3, zaku iya duba wasu lambar tushe waɗanda ke aiwatar da wannan aikin. Ana iya duba sabuwar lambar akan sabar gidan yanar gizon mu a mahaɗin da ke biyowa: https://gitlab.com/nsnam/ns-3-dev.git. A can za ku ga shafin taƙaitaccen bayanin Mercurial don bishiyar ci gaban ns-3. A saman shafin za ku ga mahaɗa da yawa,

summary | shortlog | changelog | graph | tags | files

Ci gaba kuma zaɓi hanyar haɗin fayilolin. Wannan shine abin da babban matakin mafi yawan ma'ajiyar mu zai yi kama da:

drwxr-xr-x                               [up]
drwxr-xr-x                               bindings python  files
drwxr-xr-x                               doc              files
drwxr-xr-x                               examples         files
drwxr-xr-x                               ns3              files
drwxr-xr-x                               scratch          files
drwxr-xr-x                               src              files
drwxr-xr-x                               utils            files
-rw-r--r-- 2009-07-01 12:47 +0200 560    .hgignore        file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1886   .hgtags          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1276   AUTHORS          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 30961  CHANGES.html     file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 17987  LICENSE          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 3742   README           file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 16171  RELEASE_NOTES    file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 6      VERSION          file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 88110  waf              file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 28     waf.bat          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 35395  wscript          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 7673   wutils.py        file | revisions | annotate

Rubutun misalinmu suna cikin kundin adireshi misalai. Idan ka danna kan misalan za ka ga jerin ƙananan bayanai. Ɗaya daga cikin fayiloli a cikin babban fayil ɗin koyawa - first.cc. Idan kun danna farko.cc za ku ga lambar da kuka koya.

Lambar tushe tana galibi tana cikin kundin adireshi Src. Kuna iya duba lambar tushe ta danna sunan directory ko danna mahaɗin fayilolin zuwa dama na sunan directory. Idan ka danna kan directory na src, za ka sami jerin sunayen src subdirectories. Idan ka danna kan ainihin kundin adireshi, za ka sami jerin fayiloli. Fayil na farko da za ku gani (a lokacin rubuta wannan jagorar) shine zubar da ciki.h. Idan ka danna mahadar zubar da ciki.h, za a aika zuwa fayil ɗin tushen don zubar da ciki.h, wanda ya ƙunshi macros masu amfani don fita rubutun idan an gano yanayi mara kyau. Ana iya samun lambar tushe don mataimakan da muka yi amfani da su a cikin wannan babi a cikin kundin adireshi src/Aikace-aikace/mataimaki. Jin kyauta don yin wasa a kusa da bishiyar directory don gano menene inda kuma ku fahimci salon shirye-shiryen ns-3.

source: www.habr.com

Add a comment