table of contentsbeta.eaict.ap.be/wp-content/uploads/2016/06/scriptie...hierbij aan zaken zoals...
TRANSCRIPT
1.1
1.1.1
1.1.2
1.1.3
1.1.4
1.1.4.1
1.2
1.2.1
1.2.2
1.3
1.3.1
1.3.1.1
1.3.2
1.4
1.4.1
1.4.2
1.4.3
1.4.4
1.5
1.6
TableofContents0.Introduction
0.1Dankwoord
0.2Abstract
0.3Hetbedrijf
0.4RaspberryPi
RaspberryPiSetupGuide
1.VoIPBasics
1.1SIPenRTP
1.2MOS
2.Python
2.1Sockets
SocketsVoorbeeld
2.2Scripts
3.MonitoringViaTools
3.1PortMirrorvsNetworkTap
3.2NTOPNG
3.3Smokeping
3.4MTR
4.BroadbandMonitoring
5.Conclusie
2
Network&VoIPMonitoringUsingRaspberryPiByJonasCaers
DepartementWetenschappenenTechniek
OpleidingElektronica-ICT
Academiejaar2015-2016
Internepromotor:MaartenLuyts
Externepromotor:ThijsVandecasteele
0.Introduction
3
0.1DankwoordEerstenvooralzouikIntellinetwillenbedankenommijdekanstegevenombijhunstagetedoen.VervolgenswilookzekerThijsVandecasteelebedankenvoordebegeleidingtijdensdestageenhetingoedebanenleidenvanhetproject.OokwilikRahulMalik,MinaMalikenBartMichielsbedankenvoordeaangenamewerksfeer.VerderwilikookMaartenLuytsbedankenvoordenodigefeedbackopdeveleverslagen.
Antwerpen,10juni2016
JonasCaers
0.1Dankwoord
4
0.2AbstractMijnOpdrachtishetmonitorenvannetwerkenbijklanten.SpecifiekmoetikervoorproberenzorgendatdekwaliteitvandeVoiceoverIPgesprekkengegarandeertkanworden.Ditdoortekijkenwanneereennetwerkproblemenondervindtendatdeklantenhetbedrijfhiervaneenmeldingkrijgenmetinformatieoverwatermisgaat.DitmonitorenmoetgebeurenviaeenRaspberrypizodatdezemakkelijkbijeenklantgeplaatstkanworden.WegaanhierbijgebruikproberenmakenvanToolsdieervoorkunnenzorgendatwebelangrijkezakenkunnenmonitorendieeeninvloedkunnenhebbenopeenVoiceoverIPgesprek.DenkhierbijaanzakenzoalsLatency,packetLoss,bandbreedte,etc.
0.2Abstract
5
0.3HetbedrijfBijaanvangvandestagezijnwegestartmeteenintroductietotdewerkingvanhetbedrijfendeverschillendestageopdrachten.hetbedrijfmaaktgebruikvanfreePBXvoorhetbeherenvandeVOIPnetwerken.freePBXiseenweb-basedopensourcegraphicaluserinterfacedatAsterisk(voiceoverIPserver)beheerd.Asteriskiseensoftwareimplementatievaneen"telephoneprivatebranchexchange"ofPBX.hetlaatonstoeommetaangekoppeldetelefoonsgesprekkennaarelkaartestartenenomconnectietemakenmetanderetelefoonserviceszoalshetpublicswitchedtelephonenetwork(PSTN)enVoiceoverInternetProtocol(VoIP).Hetbeschiktoverveelfeatureszoalsvoicemail,conferencecalling,interactivevoiceresponseenautomaticcalldistribution.AsteriskondersteuntverschillendestandaardVoiceoverIPprotocols,maarvooronsisdemeestbelangrijkedeSessioninitiationprotocolofkortwegSIP.Ditiseencommunicatieprotocoldatgebruiktwordtvoorsignaleringencontrollerenenhetregelenvanmultimediacommunicatiesessies.SIPmaakthoofdzakelijkgebruikReal-timeTransportProtocol(RTP),ditnetwerkprotocolwordtgebruiktvoorhetleverenvanaudioenvideooverIPnetwerken.NogeenbelangrijkbegripisTrunking,ditiseenmethodevooreensysteemomnetwerkaccessteverschaffenaanmeerdereclientsdooreensetlijnenoffrequenciestedelen.Eentrunkiseensingletransmissionchanneltussen2eindpunten,waarbijelkpunthetswitchingcenterisofweldenode.
0.3Hetbedrijf
6
0.4RaspberryPi
Ikweetdatmeestemensendieditzullenlezenhoogstwaarschijnlijkalwelincontactzijngeweestmetderaspberrypioferopzenminsttochalvanhebbengehoord.Maarvoorzijdiehetnietkennenwiliktochkortuitleggenwathettoesteljuistisenwaartoehettotinstaatis,aangeziendittocheenenormbelangrijkonderdeelisvanhetproject.DeraspberryPiheeftbijwijzevansprekengezordvooreenrevolutiebinnendeinformatica.Dekleinemicro-computerheeftopeenzeerkorteperiodeeenenormgrotefanbaseingepalmdenwordtsteedsmeerenmeergebruiktbinnenbedrijven.Hetdevicewasorigineelontworpenomkinderenkennistelatenmakenmetprogrammerenzonderhetrisicotelopenprijzigecomputersdefecttekrijgen.
Deraspberrypikangebruiktwordenvooreenenormerangevanverschillendeapplicaties,inclusiefeenmini-PC.Hetisnietenormkrachtig,maarmeerdankrachtiggenoegomenkelebasistakentedoenofgewoonomophetinternettebrowsen.Hetisookenormpopulairbijmensendiehetwillengebruikenvoorretrogamingenemulaties.DeraspebrrypiissterkgenoegomdeklassiekeNESenSNESgamestespelenendeonlangsaangekondigdeOpenGLondersteuningzouervoorkunnenzorgendathetgamesvandevroegejaren2000zoukunnendraaien.IoTprojectenzijnookenormpopulairenzozijnermensenuitdecommunitydieerbijvoorbeeldeenmonitoringsysteemvanhetweerhebbengemaakt.
ErzijnverschillendemodellenvandeRaspberryPimaarvooronszijndebelangrijkstedeRaspberrypi2en3.DitvanwegedeethernetpoortenendeCPUsnelheden.Raspberrypi2heefteengeheugenvan1GBeneenCPUsnelheidvan900MHZ,Raspberrypi3isde
0.4RaspberryPi
7
meestegeavanceerdemeteen1.2GHz64-bitCPU,maarhetheeftookingebouwdeBluetoothenWi-Fi.
0.4RaspberryPi
8
RaspberryPiSetupGuideHettoestelzieterinhetbeginmisschieningewikkelduitomwerkendetekrijgen,maarnietsisminderwaar.Hetmoeilijkstedeeliswaarschijnlijkhetladenvanhetoperatingsystemophetdevice.DePiheeftgeeningebouwdeopslagruimteenmenmoetdaaromgebruikmakenvaneenmicroSDkaart.Dezewerktdanalsjeharddrive.
AlsjedePigeformatteerdhebtzuljeeenoperatingsystemmoetenklaarmakenomteladenopdePi.OmdatdePi"lowpowered"isvannature,zalgebruikmoetengemaaktwordenvanaangepastesofwaregebasseerdopdepopulaireLinuxDistro's.VeelmensenzullenomtebeginnengebruikmakenvandeNewOutOftheBoxSoftwareinstaller(NOOBS)(download),alraadikhetsterkaanomgebruiktemakenvanRaspbian(download).
WanneerdezedownloadsklaarzijnzaljedecontentnaardeSDmoetentransferen(ditkandoorgebruiktemakenvanbijvoorbeeldwin32diskmanager).Alsjeditprogrammastartzaljeeenimageendevicemoetenselecteren,selecteerdefilediejenetgedownloadhebtenjeSDkaartendrukdanopWrite.Hiernakanjejemonitor,muisentoetsenbordaandePikoppelen.StartdanhetDeviceopenjebentklaaromtebeginnenwerken.VergeetzekerooknietomhetgeheugenvandeSDuittebreiden,ditkanjedoendoorhetcommando"sudoraspi-config"integevenendan"expand"teselecteren.HetisookgewoonmogelijkomvanopjeeigenPCopdeRaspberryPitewerken,ditkanviaSSH.DownloadPutty,geefhetIPadresvanjePienmaakverbinding.
RaspberryPiSetupGuide
9
VoIPBasicsVoorwekunnenbeginnenmetmonitorenishethandigomeersttebegrijpenhoeVoIPjuistwerkt,oftochalleszinsdebasis.
ErzijndriehoofdVoIPprotocolsfamilies,voornamelijkgebasseerdop:StandaardprotocolszoalsSIP/RTP/H.323ofproprietaryprotocolszoalsCiscoSkinnyofSkype.belangrijkpuntisdathetgebruikenvaneenstandaardprotocolsnietaltijdwilzeggendathetmogelijkisomallestemonitoren,wantprotocolszoalsRTP(gebruiktvoorvideoenaudio)kunnendatavervoerendatencodedismeteenproprietarycodec.InhetAlgemeenzijnalleprotocolsbijVoIPgebasseerdopeenconnectionlessprotocolzoalshetUserDatagramProtocol,UDP.UDPisonbetrouwbaarenhetprotocolbiedtgeengarantiedatdegegevenswerkelijkgaanaankomen.hetprotocolwordtvooralgebruiktbijapplicatiesdiesnelgegevensmeteenkortereactietijdmoetenkunnenoverdragenenhetnietzoergisdatereenpakketjeverlorengaat,denkhierbijaantelefonie,streamsendergelijken.depacketlossmaguiteraardniettegrootzijnzodatdepersoonaandeanderekantnietmeerverstaanbaarisofdestreamnietmeertebekijkenis.Ditisduswatwegaanproberentemonitorenmetderaspberrypi.
ElkecommunicatiebijVoIPbestaatuit3basisstappen:
1. wanneereenbellerwilcommunicerenmeteenanderepartijdanzalheteencommunicatiebeginnenmetderemotepartyofwelmeteengateway/PBX(ditisafhankelijkvanhetprotocoldatgebruiktwordtendesetupvanhetlokaalnetwerk)doorgebruiktemakenvaneensignalingprotocol.dezestapisverantwoordelijkvoor:verifiërenvancredentials,uitzoekenofhetvoiceisofvoice&video,overeenkomenwelkecodecgebruiktwordtenovereenkomenwelkepoortengebruiktzullenworden.
2. hetgesprekvindtplaatsopdepoortendieweeerderovereengekomenzijn,depayloadwordtencodedmetdecodecdiewehebbengespecificeerd.RTPstandaardhetprotocolzijndatgeselecteerdisenbijeenvideocallzullenertweeonafhankelijkeRTPstreamszijn,eenvoorvoiceeneenvoorvideo.
3. wanneeriemandbeslistomhetgesprektebeëindigen,danzalhetgesprekafgeslotenwordendoorgebruiktemakenvanhetsignalingprotocol.
Vanhettrafficmonitoringstandpunt:
hetsignalingprotocolbevatbelangrijkeinformatiezoalstypecall(voiceofvideo-call),codecs,duur,eninformatieoverdeRTPsessie.devoice/videotransportprotocolisgebruiktominformatiezoalsjitterpacketlossenpacketlatencyeruittehalen.
1.VoIPBasics
10
protocollenzoalsRTCPXSwordengebruiktominformatieoverdertpstreamsweertegeven,zoalspacketloss,delayencallandtransmissionqualitymetrics.
1.VoIPBasics
11
1.1SIPenRTPVoormensenmetgeenachtergrondinnetwerkenkanSIPenRTPopheteerstezichtbijzonderingewikkeldlijken,ikzaldaaromdetweeprotocolsproberenuitteleggenzodatdittocheenbeetjeduidelijkerwordtenjezalmerkendatditallemaalnogwelgoedmeevalt.
Zoalsdenaamzegt,SessionInitiationprotocolwordtgebruiktomeensessietestartentussen2eindpunten.SIPvervoertzelfhelemaalgeenvideoofvoicedata,hetgaatsimpelweg2eindpuntentoelateneenconnectietemakenmetelkaarengaandanviahetReal-Timetransportdatanaarelkaarversturen.StructuurvaneenSIPpacket:
Uitlegnummersvanafbeelding:
1. DittoontdesourceendestinationipadresvanhetSIPpakketje.(belangrijkomtewetenisdatditzalveranderenwanneerhetandereSIPproxyserverspasseert)
2. Transportprotocolenpoort.(inditgevalpoort5060,destandaardpoortvoorSIP)3. DitisdeSIPrequestheaderdatzegtoverwelktypeSIPmessagehetgaat.4. deViaheaderbevatalleinformatieoverwelkeSIPproxyservershetheeftgepasseerd.5. deToisdeSIPpacketdestination.6. From*geeftaanvanwiehetpakketheeftverstuurd.7. DitspecifiekpakketjeiseenSIP/SDpacket,ditwilzeggendathetinformatiebevatdat
1.1SIPenRTP
12
deremoteclienteenRTPsessionmoetopenenvoorhetgesprek8. HetIPadresvandeSIPClient9. HetIPadresdatdedestinationSIPclientmoetcontacterenomeenRTPsessiete
openen.10. Debelangrijkstezakenindezeheaderzijnaudio,33438enRTP/AVP.
integenstellingtotSIP,datluistertoppoort5060,maaktRTPgebruikvanvaneendynamicportrange(enisaltijdUDP),normaalgezientussen10000en20000.RTPsessieswordenrechtstreeksopgezettussenSIPclients.
Nu,SIPiseenenormhandigprotocolmaarzakenwordeningewikkelderwanneerNATerbijwordtbetrokken.SIPpakketjeszelfbewegenzichzonderveelproblemenvandeeneservernaardeandere.BijRTPisditniethetgeval.ofwelzijnbeideclientszichervanbewustdatzeachterNATzittenenwisselenzehunIPadressenuitvoorhunpubliekeIP'sinhunSessiondescriptionmessagesenopenenzedenodigefirewallpoorten.ofandersmoeterietswordenaangepastindeSIPpakketjesterwijlzeonderwegzijn.Ditiswaareenback-to-backuseragentzoalsAsteriskvanpaskomt,dezekandienenalseenproxyvandeRTPtrafiek.
AsteriskkanSIPpakketjeswijzigenzodatdecallerendestinationeenRTPsessiemetzichzelftotstandbrengen,inplaatsvanmetelkaar.Ditishandiginsituatieswaar2SIPclientsgeendirectaccesshebbenmetelkaar.Bijtroubleshootingvanpacketcaptureskanjebestaandachthebbenvoordeze2zaken:
1. DepoortenenIPadressenindeSIPmessageheader(to,from,via).2. depoortenenipadressenindesessiondescription.
1.1SIPenRTP
13
1.1SIPenRTP
14
1.2MOSMOSstaatvoorMeanOpinionScore.Nu,watiseenMeanOpinionScoreenwaaromkanhetbelangrijkzijnbijVoiceoverIP.MeanOpinionscoreiseenrelatieveschaaldierekeninggaathoudenmetmeerderefactorendieinvloedkunnenhebbenopeennetwerk,dieeventueeldekwaliteitvaneenVoiceoverIPgesprekkunnenbeïnvloeden(hetwoordrelatiefishierbelangrijkomdatditsoorttestenormsubjectiefis).Erzijnveelfactorenwaarmenrekeningmetkanhouden,eeneersteisBandbreedte,jebandbreedtezalgaanbepalenhoeveelgesprekkenjesimultaanzalkunnendoen,wanneerjemeergesprekkenvoertdanjebandbreedteaankandanzuljedekwaliteitvanhetgesprekdrastischhorendalen.VervolgenskanookdeHardwarediejegebruikteeninvloedhebbenopdekwaliteitvaneengesprek,maarookzakenzoalsJitter(meeruitleghieroverlater),LatencyenpacketlosshebbeneenenormgroteinvloedopdekwaliteitvanjevoiceoverIPgesprek.DeCodecdiewegebruikenkanookzorgenvooreenslechteofbeterekwaliteitvaneengesprek.Zozaldeg711codec(noncompressed)zorgenvooreenbetereresultaatzorgenomdatomdatcompressieendecompressiehiernietnodigis.G711heeftookminderkansoppacketloss,zelfseenkleinbeetjepacketlosskanleidentoteenminderekwaliteitvanjegesprek.Hetnadeelbijdezecodecisdanweerdathetveelmeerbandbreedtegaatgebruikentenopzichtevandeg729codec.
DeMeanOpinionScorezalaltijdeenwaardehebbenvan1tot5,waar1enormslechtisen5debestmogelijkkwaliteitis.Voordeg711codecis4.4demaximummogelijkeMOS.vanaf3.9zaljeziendatmensenalmerkendatereendalingisvandekwaliteitvanhetgesprek.
hiereenvoorbeeldvanhoelatencyinvloedheeftopdeMeanOpinionScorebijdeG711enG729codec:
1.2MOS
15
1.2MOS
16
2.PythonAangezienderaspberrypiwerktopeenlinuxbaseddistrohebikgekozenomeenstekijkenofikzelfnietietskanprogrammereninpythondatmijkanhelpenbijhetmonitorenvaneennetwerk.Pythoniseentaaldatzeermakkelijktegebruikenisopeenlinuxbasedoperatingsystem,meestalhoefjezelfnietsmeerteinstallerenenkanjemeteenbeginnen.MomenteelbenikbezigaaneenPINGscriptdatmijkanhelpenomzotegaankijkennaardestatusvaneenhostofclient.OokhebikeeneenUDPSENDenRECEIVEscriptdatmijkanhelpenomdestabiliteitvaneenconnectietetestenenomtekijkenoferpacketlossisoverdelijn.NuvoorweietskunnenprogrammereninPythonvoornetwerken,moetenweeerstwetenhoeSocketswerken.Ditligtnamelijkaandebasisvanallesenhetlijktmedaarombesthandigomtocheenbasiskennistehebbenhierover.
2.Python
17
2.1SocketsSocketszijnenormbelangrijkvoorwanneerjeietswilprogrammereninverbandmetnetwerken.latenwebeginnenmetsneleenseensimpelsocketaantemaken,ditkandooreerstdesocketlibraryteimporterendoor"importsocket"endandesocketineenvariabeletesteken.desyntaxhiervoorgaatalsvolgt:"s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)".Wehebbenhierduseensocketinstanceaangemaaktenhet2parametersmeegegeven.deeersteparameterisAF_INETendetweedeisSOCK_STREAM.AF_INETverwijstnaarhetaddressfamilyipv4.vooripv6isditookmogelijkenmoetjenamelijkinplaatsAF_INETerAF_INET6vanmaken.DandeSOCK_STREAMgeeftweerwelkprotocoljewiltgebruiken,inditgevalgebruikenwedushetTCPprotocol.laterwordtookuitgelegdhoejebijvoorbeeldeenUDPpakketjeaanmaakt,ditisnamelijkideaalalsjemetVoIPbezigbent.Nugaanwetrachtenommetdezesocketeenconnectietemakenmeteenserver.Alserenigeerrorswarenmethetaanmakenvandesocketdanzalereensocket.errorgegevenwordenenzaljeenkelmetdeserverconnectiekunnenmakenalsjehetIPweet.stelnudawemetdeservervangooglewillenconnecterendankanjeeensimpelepingdoeninjecommandpromptofdoorinjecodedelijn"ip=socket.gethostbyname('google.com')"toetevoegen.
2.1Sockets
18
SocketsVoorbeeldInditdeelgaikaandehandvaneenvoorbeeldproberenomdewerkingvansocketsduidelijkertemaken.
Latenwenuevendecodevanhetscriptomconnectietemakenmetgooglebekijken:
importsocket
importsys
try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print"Socketsuccessfullycreated"
exceptsocket.erroraserr:
print"socketcreationfailedwitherror%s"%(err)
port=80
try:
host_ip=socket.gethostbyname('www.google.com')
exceptsocket.gaierror:
#thismeanscouldnotresolvethehost
print"therewasanerrorresolvingthehost"
sys.exit()
s.connect((host_ip,port))
print"thesockethassuccessfullyconnectedtogoogle\
onport==%s"%(host_ip)
depoort80diewenemenisdedefaultportvoordesocket.Slahetscriptjenuopenlaathetrunnen,nuzoujenormaalmoetekunnenziendatdesocketsuccesvolisaangemaaktgeweest.
nuwathebbenwehierpreciesgedaan,eersthebbenwedesocketaagemaakt,danhebbenwegooglezijnipgenomenendeconnectiemetdeservergemaakt.Nuditisallemaalzeerinteressant,maarwatweechtwillenwetenishoedatasturendoorzoeensocket.voorhetsturenvandatadooreensocketheeftdelibraryeen'sendall'function.dezefunctielaatjetoeomdatateversturennaardeserverwaardesocketismetverbondenendeserverkanookdataversturennaardeclientaandehandvandezefunctie.
Laatonsnukortzienhoezo'nserver-clientprogrammainzijnwerkgaatomdeverschillendeconceptentochnognetietsduidelijkertemaken.
SocketsVoorbeeld
19
eerstmisschienwatmeeruitlegoverdeserver.eenserverheefteenbind()methodediehetbindaaneenspecifiekeipenpoortzodathetkanluisterennaarinkomenderequestsopdieipenpoort.vervolgensheeftdeserverookeenlisten()methodediedeserverinlistenmodezet.ditlaatdeservertoeomteluisterennaarinkomendeconnecties.alslaatsteheeftdeserverookeenaccept()enclose()methode.theacceptmethodeopenteenconnectiemetdeclientendeclosemethode,raarmaarwaar,sluitdeconnectiemetdeclient.Nugaanweeenszienhoedecodevandeservererkanuitzien.
importsocket
s=socket.socket()
print"Socketsuccessfullycreated"
port=12345
s.bind(('',port))
print"socketbindedto%s"%(port)
s.listen(5)
print"socketislistening"
whileTrue:
c,addr=s.accept()
print'Gotconnectionfrom',addr
c.send('Thankyouforconnecting')
c.close()
watdoenwehiernujuist?eerstenvooralgaanweopnieuwdesocketlibraryimporteren,ditiszowathetbelangrijkstedatjemoetdoen.DangaanwenogmaalseensocketobjectaanmakeneneenportreserverenoponzePC.Naditbindenweonzeserveropdiepoort.hetdoorgevenvaneenlegestringwilzeggendatdeserverookkanluisterennaarconnectiesvananderecomputers.Alswebijvoorbeeld127.0.0.1zoudenmeegevendanzoudeserverenkelluisterennaarcallsindelocalcomputer.hiernazettenweonzeserverinlistenmode.Bijdelistenzienwenuhetgetal5staan,ditwilzeggendat5connectiesinde"wacht"kunnenwordengezetalsdeserverbezigis,een6connectiezaldusgeweigerdworden.alslaatstegaanweeenwhileloopaanmakendieinkomendeconnectiesgaataccepterenendieconnectiesgaatsluitennahet"thankyou"berichtje.Watonsnunogrestishetaanmakenvandeclient.
Declientiswatgaatpratenmetonzeserver.wekunnennatuurlijkeerstproberenomeentelnettedoennaaronzeserveromzekertezijndatonzeserverwelwerkt.voordatjeditdoet,vergeetnietdeservereerstaanstaatdoorhetscriptterunnenmet"pythonserver.py"of"sudopythonserver.py"omalsroottestarten.
nulatenweonzeclientgaanaanmaken;
SocketsVoorbeeld
20
importsocket
s=socket.socket()
port=12345
s.connect(('127.0.0.1',port))
prints.recv(1024)
s.close()
hetscripthierbovenspreektvoorzichzelf,maarikgahettochsneleventoelichten.eerstenvooralgaanwenogmaalshetsocketobjectaanmaken,dangaanweverbindingmakenmetdelocalhostoppoort12345(ditisdepoortwaardeserveroploopt)enalslaatstegaanwededatavandeserverontvangenendandeconnectiesluiten.nuslaaghetscripjeopenstarthetvandeterminal.alsallesgoediszoujenutekstmoetenzienverschijnendatdeconnectieinordeis.
nuikweetdatdezeuitlegmisschiennogwattebasicis,maarhetzoujetochaleengoedideemoetengevenvanhoesocketswerkeninpython.
SocketsVoorbeeld
21
2.2ScriptsVoorweverdergaanwiliktochevenvermeldendatiktijdensdeloopvanmijnstagemijnfocusvandezescriptsverlegthebnaarhetwerkenmettoolsinplaatsvanverderdezescriptsuittebreiden.Dithebikvooralgedaanomdatmijnkennisvanpythontochietstebeperktwasvooreenprojectalsdit.Tochgaikdescriptseventoelichtenomdatdebasisertochisenerzekernogopverderkangegaanworden.
PINGscript
Heteerstescriptdatwehierhebben,gaanwegebruikenomnategaanofdedevicesvandeklantnogbereikbaarzijnenofdeklantdeservervanintellinetnogkanbereiken.hetscriptkanzoveelclientspingenalsjezelfwilt,erisdusweldegelijkruimtevooraanpassingen.
ErzitookalIPV6functionaliteitin,ditkanjeziendoorhetgebruikvandeAF_INET6(zoalseerderhierbovenaluitgelegdis).Bijhetaanmakenvandesocketzienwedatwe"socket.SOCK_RAW"gebruikeninplaatsvande"_STREAM",een"_RAW"wiltzeggendajedeapplicatietoelaatomcustomheadersaantemakeninplaatsvandeheadersvanhetonderliggendeoperatingsystem.
UDPSENDscript
IkhadeerderalvermelddatweviaeenUDPscriptgaankijkennaardekwaliteitenpacketlossvaneenlijn.MetditscriptgaanwebijdeklantUDPpakketjesaanmakenviasockets,zoalseerdervermeld,endezedanversturennaardepbxdiedepakketjesdanzalontvangen.Nuwegaanpakketjesversturendieingroteverschillenenwegaandusaandereceiverviaeentrigger(datadiewemeesturenineenpakketje)latenwetenhoeveeldatawegaansturenoverdelijn.
UDPRECEIVEscript
AangezienUDPeenconnectionlessprotocolisgaathetscriptdatdedataverstuurtgeenideehebbenvanhoeveelergaanaankomen.daarommakenwedusgebruikvaneenUDPreceivescriptomzodedatadieverstuurtwordtvanbijdeklantopdeserverteontvangen.Nudezenderstuurtentriggermeewaarinstaathoeveeldatahijzalversturen,opdezemanierkunnenwedusheelmakkelijkberekenopdereceiverhoeveelpacketlossisdoorgewoontegaanzienhoeveeldezenderverstuurtenhoeveelpacketserzijnaangekomenopdePBX.
2.2Scripts
22
Crontab
Crontabiseenzeerhandigetooldiewekunnengebruikenomdeverschillendescriptsopbepaaldeintervalstelatenlopenofomzeopbepaaldetijdsstippentelatenlopen.Ditisbijzonderhandigaangezienwenietwillendatdescriptscontinublijvendraaienbijdeklantenzomisschienhetnetwerkonnodigveelbelast.
2.2Scripts
23
3.MonitoringViaToolsVoorhetmonitorenvaneennetwerkopderaspberrypikanmengebruikmakenvanenkeletoolsdiehetwerkvoorudoen.DeeerstetooldieiktegenkwamwasNagios,maarhebbeslotenomdezeniettegebruikenomdatnagiosvooralbedoeltisomgegevensvaneenservertemonitorenendatvoornetwerktemonitorenerwaarschijnlijkbeteretoolszijn.DaaromhebikopaanradenvanmijnbegeleideropdestagemijevenverdieptinMunin.MuninmaaktgebruikvanPlug-insomeennetwerktemonitoren.NuMuniniseenenormhandigetoolvoorhetmonitorenvaneennetwerk,zoheefthetbijvoorbeeldeenpluginomeenasteriskservertemonitoren,maarMuninisnaarmijnmeningenormbeperktenbiedtweinigruimteomuittebreidentenzijjeeengoedekennishebtvandetaalPearl.VeellaterbenikNTOPNG(deopvolgervanNTOP)tegengekomenendezetoolleekmijexactwatiknodighebenhebdaarombeslotenommehierinteverdiepen.
Nuhetprobleemmetditsoortmonitoringtoolsopderaspberrypiisdatdezeenkeldedataoverzijneigeninterfacezalmonitoren.NawatresearchhebikgevondendatomditprobleemoptelossendatmenkandoenaanPortMirroringofeenPortTapkangebruiken.ikgaproberenombeidetechniekeninvolgendedelenzoduidelijkmogelijkuitteleggenomzojetocheenideetegevenvanwaterjuistgebeurt.
Verderhebikookgebruikgemaaktvandetool"Smokeping".Dezetoolgaatproberenomgegevenszoalslatency,jitterenpacketlossbijtehoudenendezedangrafischweergevenviazijngrafischeuserinterface.Ikgaproberenomdewerkingeninstallatievandezetoolzogoedmogelijktoetelichten.
OokMTRof"matt'straceroute"gaikproberenuitteleggen.Viadezetoolkanjeaannetwerkdiagnosedoenvanopderaspberrypi.
3.MonitoringViaTools
24
3.1PortMirrorvsNetworkTapOmuitteleggenhoedezetechniekenwerkenenwatdeverschillenzijntussendetweeishetbelangrijkomtebegrijpenhoeEthernetjuistwerkt.bij100Mbitenmeer,sprekenhostsmeestalinfullduplex,ditwilzeggendathostszowelkunnenzendenalsontvangenopdezelfdemoment.Overeen100Mbitkabelverbondenmeteenhost,isdetotalhoeveelheiddatadateenhostkanverzenden/ontvangen2x100Mbit(200Mbit).
PortMirror
Eenportmirroriseen"activepacketduplication",ditwilzeggendateennetworkdevicedepacketsfysiekmoetgaankopieërenopdemirrorport.
Ditwilzeggendathetdevicedezetaakmoetdoendoorgebruiktemakenvanresources(bvCPU)endatbeidetrafficdirectionsopdezelfdepoortgekopiëerdzullenworden.Infullduplexkandedatavananaarbenbnaaraniethogerzijndandesnelheidvanhetnetwerkvoordaterpacketlosszichvoordoet.Ditomwillevandatergeenfysiekeplaatsisomdepacketsnaartekopieëren.Hetgevolghiervanisdatneenportmirroreengoedetechniekisdatdoorvelenswitchesgedaankanworden(nietallemaal)methetenigenadeeldatvanpacketlossalsjeeenlinkmonitoredmetmeerdan50%load,ofdepoortmirroredmeteensnellerepoort(bijvoorbeeldeen100Mbiutpoortmeteen1Gbitpoort).Ookkanportmirroringtotgevolghebbendatmeerresourcesgebruiktmoetenendatzodeperformantievandeswitchnaarbenedengaat.
NetworkTap
Eennetworktapisintegenstellingtotdeportmirroreen"fullpassive"device.
3.1PortMirrorvsNetworkTap
25
Elektrischofoptisch,packetswordengekopiëerdopdetapports.Eentapheefteentappoortperrichting(tenzijjeeenaggregatietapgebruikt).Ditbetekentdatalsje1linkwilmonitoren,jetweeNIC'snodiggaathebben,eenvoordeeersterichtingeneenvoordetegengestelderichting.inditgevalzaljenooiteenpacketverliezenintegenstellingtotdeportmirror,omdatelkerichtingeenlinkgebruiktinplaatsbeiderichtingentemergenopdezelfdelink.alsjebeiderichtingenwilmergennaareenenkelepoort,kanjedenetwerkswitchgebruiken;
Tappoortenontvangengeendatamaargaanenkeldatauitsturen,deswitchheeftgeenenkelideewieerachterdepoortzit.hetgevolghiervanisdathetdatazalbroadcastennaarallepoorten.alsjedusjemonitoringdeviceverbindmetdeswitchzaldezedusalledataontvangen.belangrijkenotitieisdatdezetechniekenkelwerktalshetmonitoringdeviceGEENdatanaardeswichstuurt,anderszaldeswitchdenkendatdetappedpacketsnietvoorzulkdevicezijn.OmdittebereikenkanjeeennetwerkkabelgebruikenwaaropjedeTXdraadennietverbondenhebtofjekaneenIP-lessnetworkinterfacegebruikendatgeenpacketstransmit.
Conclusie
zowelpacketmirroringenTaphebbenpossitieveennegatievekanten.Hetisdusaanjouomteexperimenterenwelkemethodehetbestevoorjouofjeinfrastructureuitkomt.
NuZoalseerdervermeldwerkendezetechniekennietopalleswitchen,vooralbijkleinereklantenkanditvoorproblemenzorgen.
3.1PortMirrorvsNetworkTap
26
3.2NTOPNGIkgaproberenomzoduidelijkmogelijktoetelichtenwaterwelennietmogelijkismetNTOPNG,ookzalikhetinstallatieproceservankorttoelichtenalsookhetgebruikvandeapplicatie.
EerstenvooralishetbelangrijkdatmenbeschiktovereenrouterofswitchdiePortmirroringondersteunt,omdatandersderaspberrypimetntopngenkeloverzijneigeninterfacezalkunnenmonitoren.Ditwiltduszeggendatdeapplicatienietaltijdoptimaalgebruiktzalkunnenwordenomdatnietelkerouterofswitchdezeportmirroringzalondersteunen.nogeenpuntisdatwanneerjeportmirroringdoetopeenswitchinplaatsvanopderouter,jedewi-fitrafieknietzalkunnenmonitorenmetdeapplicatie.NTOPNGiseenenormuitgebreidetooldieenormveelkanenenormveelnutkanhebben,maarhetzalmaarinbeperktesituatiesoptimaalgebruiktkunnenworden.Alsjedusnietbeschiktovereenswitchofrouterdieportmirroringondersteuntzalhetvolgendestukjemisschienietsminderinteressantzijn.
Ntopng,deopvolgervanNTOP,iseenpassievetooldieaanmonitoringdoetendefocuslegtophetweergevenvanflowsenstatistieken.NTOPNGheeftdeoudeNTOPvervangenomdatdemanierwaaropNTOPontworpeniservoorzorgdedatnietmeerdaneenpaarMbitbehandeltkonworden.Ookbeschikthetovereengrafischeuserinterfacedieenormoutdatedis.NTOPNGgaatdusverderopNTOPmaarmaaktgebruikvaneennieuweenmeermoderneGrafischeuserinterface.VerdermaakthetgebruikvaneennieuwereenmeeruitgebreideDPI.DPIstaatvoorDeepPacketInspectioneniseenmethodedieonstoelaatomaanpacketfilteringtedoen,DPIfunctioneertopdeapplicatielaagvanhetOSI(OpensSystemInterconnection)referentiemodel(omjegeheugenevenoptefrissenvanhetOSImodelkanjedezeLinkeenbekijken).HetgebruikvanDeeppacketinspectionmaakthetmogelijkompakketjestevinden,identificeren,reroute,blokkerendieanderepacketfilteringmethodesnietzoudenvindenomdatdezeenkeldepacketheadersgaancontroleren.
HetinstallatieprocesvanNTONGisvrijeenvoudigeninenkelestappenkanjehetalwerkendehebbenenkanjebeginnenmethetmonitoringvanjenetwerk.
heteerstecommandodatwegaaningevenis"wgethttp://packages.ntop.org/apt/ntop.key"enditvolgenweopdoor"apt-keyaddntop.key".Vervolgensgaanwe2echocommando'smoeteningeven,namelij:"echo"debhttp://apt.ntop.org/jessie_piarmhf/">/etc/apt/sources.list.d/ntop.list"en"echo"debhttp://apt.ntop.org/jessie_piall/">>/etc/apt/sources.list.d/ntop.list".Hiernagaanweeenupdatedoenvia"apt-getupdate".Nugaanwentopngennprobeinstalleren,ditdoenwesimpelwegmetvolgendcommando:"apt-getinstallntopngnprobe".Nudatntopnggeïnstalleerdiszijnernogenkelezakendie
3.2NTOPNG
27
wemoetendoen,zogaanwe2servicesmoetenstarten,wegaandentopngenredisserverdaemonstarten.Ditdoenwemetvolgendecommando's:"serviceredis-serverstart"en"servicentopngstart".
Hierzijnwelnogeenaantalzakendiezeerbelangrijkzijn,dezeinstallatieisbedoeldvoorhetRaspbianoperatingsysteemenvooranderelinuxdistro'szuljeduseenanderinstallatieprocesmoetenvolgen(dezezullenwelnietenormveelverschillenvandezeinstallatie,maarhetiswelbelangrijkdatjeweetvoorwelkoperatingsystemjedeinstallatiewildoen),meerinfooverdeverschillendeinstallatieprocessenvindjeopdesitezelfteruglink.Eentweedebelangrijkpunthierisdatallecommando'smoeteningegevenwordenals"superuser',ditdoejesimpeldoor"sudo"voorjecommando'steplaatsen.
Nudatntopngisgeïnstalleerdenjeservicesgestartzijnkunnenweonsbegevennaardegrafischeuserinterface,ditdoejedoorinjewebbrowserhetIPvanjeraspberrypiintegevenenhieraanookpoort3000aantoetevoegen(bijvoorbeeld:http://192.168.1.115:3000).Poort3000wordtstandaardgebruiktdoorntopng,maarditkunjezelfwelnogaanpassendoorditinjeconfigfilesgaanaantepassen.Deeerstekeerdatjemoetinloggenkunjeditdoendooradminintegevenvoorzowelhetpaswoordalsdeusername,ditzijndestandaardwaardentelkenswanneerjentopnginstalleerd.Hetisaanteradenomjeusernameenpaswoordaantepassenzodrajevoordeeerstekeerhebingelogd.
Eensdatweopdehoofdpaginazittenvandegrafischeuserinterfacedangaanwemeteenbovenaandehoofdtoolbarzienstaan,dezebevatonderhanden:Home,Flows,hosts,protocolsenandere.ErzalhierookeenAlerttevoorschijnkomenwanneereenvandetriggersgeactiveerdword,dezeAlertskunnenindeuserconfigurationingesteldwordenzoalsjezelfwilt.
Vanonderopdepaginazaljeeenmeterzienstaan,dezegaatdesaturatievanjebandbreedteweergeven.RechtshiervanzaljeookjeDownloadenUploadzienstaan,ditgeeftjemeteeneengoedideevanhoeveelDataeroverjenetwerkgaat.
3.2NTOPNG
28
AlswedanvanHomenaaronsDashboardgaan,danzuljemeteenietstegenkomendatweeen"SankeyDiagram"noemen.DitSankeydiagramhaateenvisueleweergavebiedenvanallehostsdieophetmomentactiefzijnophetnetwerk.2hostszijnhiermetelkaarverbondenmeteenlijn,deClinethostwordttelkenslinksweergegevenendeserverhostrechts.Debreedtevandelijngeeftaanhoeveeldataertussenbeidehostsuitgewisseldwordt.Hetdiagramwordtstandaardomde5secondenvernieuwd,maarditkunjezelfinstellennaarjeeigenvoorkeur.Hetdiagramisuiterraardookinteractive(ditishetleukeaandenieuweversievanNTOP,allesisnamelijkinteractive),alsjedubbelkliktopeenvandehostszaljeinmeerdetailkunnenzienwatergaandeistussende2hosts.
voorbeeldvanzoeensankeydiagramhieronder:
zoalsjekanziengaatheteenmooioverzichtgevenvanwelkehostsermetelkaaraanhetcommunicerenzijnoverhetnetwerk.
AlsweverdergaanopdeinhetDashboardennaar"Hosts"gaan,dankrijgenweeenPiecharttezien,hierkrijgenweeenrepresentatievandetrafiek.Ditwordtgedaanperhost,gelijkaardigmethetSankeydiagramdatweeerderbesprokenhebben.depiechartgaatzichzelfookrefreshen.Verderhebbenwehierook"ports"enditgaatweergevenwelkepoortenhetmeestgebruiktworden,zowelvoordeclientsalsvoordeservers.Het"Application"gedeeltegaateenvisueleweergavebiedenvanhetbandbreedteverbruikengaatditopslitsenperapplicatieprotocol.DeidenticatiewordtgedaanviadenDPI(herrinerudeDeepPacketInspection)enprotocolsdienietherkendwordenzullenals"onbekend"wordenweergegeven.
VerderinhetdashboardvindenweonderhandennogASNenSendersterug,bijSendersgaanweeenoverzichtkrijgenvandemeestactievehostsophetnetwerk(vergelijkbaarmetwatwetezienkrijgenbijhetSankeyDiagram).
3.2NTOPNG
29
AlsweterugnaardeToolbargaandanzienwenog"Flows"en"Hosts"staan.BijflowsgaanweinRealtimedetraffiekinformatiegaanweergeven,hierbijgaaninfogevenoverwelkeapplicationergebruiktwordt,hetL4protocol,clientetc.BijHostshebbenweeendropdownmenuwaarjeeenaantalleukeeninteressanteinteractievepagina's.Nuechtveelvalthiernietovertezeggenhetisleukeromditzelfeenstebekijkenomtezienwathetallemaalkan.
Hieronderenkelevoorbeeldenvanhoezulkeinteractievepagina'seruitzien(dezescreenshotszijnvanophetnetwerkbijmezelfthuisgenomen):
3.2NTOPNG
30
3.2NTOPNG
31
3.3SmokepingOmdatikeenbeetjeafstandwoudoenvanPython,benikgaanzoekennaareventuelealternatievenenikbendaniemandtegengekomendiemewisttezeggendatbijnaalleswatikprobeertedoeninPython,gedaankanwordenopdeRaspberryPimetdetoolSmokeping.
DezetoolisgebasseerdopdeRRDTool(zelfdemaker)engaatonsinstaatstellenopICMP(internetcontrolmessageprotocol)delay,maarookserviceszoalsdievanHTTP,SMTPofDNSetcetc.HetgaateengrootaantalstatistiekenweergevenenhetgaatjeooktoelatenAlertstegenerenzoalsjezelfwilt.Hetinstallatieproceservanisvrijeenvoudigmaarerzijntocheenaantalzakenwaarjezekerrekeningmetmoethouden(meerhieroverlaten).
Smokepinggaatdusdelatencyvanjenetwerkbijhoudenendezezogoedmogelijkvisueelweertegeven.eenvoorbeeldhiervanhieronder:
Nuhoemoetjeditsoortgrafiekevalueren,SmokepinggaatmeederepingsuitvoerenengaatdeRTTwaardenbijhouden,dezeorderenendaneenmedianbepalen.DeverschillendewaardenvanRTTgaanweweergevenalsverschillendeShadesofGrey(punintended),ditgeeftonsideevanJitteroverhetnetwerk(meerhieroverlater).Dehoeveelheidpacketlossdiewehebbengaatwordenweergegevendoordekleurvandehorizontalenlijnteveranderen(alsjenaardeafbeeldingteruggaatkijkendanziejedatdekleurverandert,ditwilzeggendaterduspacketlossis).Degroenekleurwilzeggendatergeenpacketlossisenhoedonkerderditwordthoemeerpacketlosserisoverhetnetwerk.
Hetinstallatieprocessverlooptalsvolgt,eensweverbondenzijnmetderaspberrypigaanweeersteenseenUpdatedoenvoordezekerheid,doetdieviahet"apt-getupdate".Ditdoenweomzekertezijndatjepackageindexdelaatsteversieis.Dankunnenweverdergaandoor"apt-getinstallsmokepingsendmail"integevenvoordeinstallatie.Deredendat
3.3Smokeping
32
wehierook"sendmail"gaaninstallerenkomtdooreenfoutdieervoorzorgtdatsmokepingnietcorrectwerkttenzijditgeïnstalleerdis.Nuikhebweleenmaniergevondenhoeditzondersendmailkan,ditkandoorindemap"/etc/smokeping/config.d/pathnames"delijnwaar'/usr/bin/sendmail"staatincommentaartezetten.Ditisechtnietaanteradenenjebentbeterafdoorgewoonsendmailmeeteinstalleren,ookalverlengddithetinstallatieproceseenkleinbeetje.Verdergaanweindemap"/etc/apache2/conf-available",hetcommandoln-s../../smokeping/apache2.confsmokeping.conf"ingeven.Omhetinstallatieprocestebeëindigengaanwedecommando's"a2enconfigsmokeping"en"a2enmodcgid"ingevenenvervolgensgaanwedaapache2serviceherstartendoor"serviceapache2restart".Zoalsikbijeeneerdereinstallatiealhadvermeld,moetendecommando'singegevenwordenalssuperuser,gebruikdustelkens"sudo"voorjecommando.alsditgedaaniskanjejewebbrowseropenen"hostname/cgi-bin/smokeping"ingevenomnaardegrafischeuserinterfacetegaan.
HetleukeaanSmokepingishoeveelmogelijkhedenhetbiedtomzakentecustomizenzoalsjezelfwilt.jekanletterlijkallesaanpassen;deTargetsdiejewiltmonitoren,Hettypepingdatjewilgebruiken,wanneerjeAlertswilkrijgeninjemailboxenzelfshetuiterlijkvandegrafischeuserinterfacekanjeaanpassenmetHTMLcode.Aldezemogelijkhedenmaakthetvoormijenorminteressantommettewerken.Aldefilesdiejekancustomizenvindjeterugindemap"/etc/smokeping/config.d".Defilesdiejehierterugvindtzijn;Alerts,Database,General,pathnames,Presentation,Probes,Slaves(isvooronsnietbelangrijkwantwerdnietgebruikt)enTargets.
3.3Smokeping
33
Deeerstefile,Alerts,zieteruitalsvolgt:
Watwehierzienisvrijsimpeluitteleggen.AlseerstegaanwezeggennaarwiedeAlertsgestuurdmoetenwordenwanneerdezevoorkomenenwegaanookzeggenvanwelkmailadresdezeverstuurdmoetenworden.JekandeAlertsnaarzoveelmensensturenalsjezelfwilt.
Watwehiergaandoenisdusookdealertsconfigureren,ditgebeurtzoalsjehierbovenkanzien,doortebeginnenjealerteennaamtegeven.Vervolgensgajehettypemoetenmeegeven,ditkanbijvoorbeeld'loss'zijnof'rtt'.Bij'pattern'gaanweaansmokepingzeggennaarwelksoortpatroonhetmoetgaankijkenvooraleerheteenalertstuurtnaardecontactpersonendieweeerderhaddeningesteld.Hetleukehierisdatjeditpatroonzoveelkuntcustomizenalsjezelfwilt.Inhetvoorbeeldhierboven,bij'alertTest'bijvoorbeeld,gaanweziennaarhetpatroon"==0%,==0%,>20%,>20%,>20%".Ditwiltzeggendatwanneererna2keerdatwepingengeenpacketlossisendatdevolgende3pingseenpacketlossvertonenvanmeerdan20%,wehiereenalertvankrijgen.Zoalsjeookinhetvoorbeeldhierbovenkanzienzijndemogelijkepatroneneindeloos,ditishetleukeaansmokeping,erisenormveelplaatsomzakentenaarjeeigenvoorkeurteconfigureren.
Eenmailvanzo'nSmokepingAlertzieteralsvolgtuit:
3.3Smokeping
34
Zoalsjekanziengaatdemailookheelwatinformatiemeegeven,jekanzoziennaarwelkpatroondesmokepinggezochtheeftenhetgaatdanookdeeffectieveresultatenmeegeven.Ookzalheteencommentmeegeven(diejezelfuiteraardkaninstellen)omzomeerinformatietegevendiejezelfessentieelvindt.
DevolgendefileisdeDatabasefileendezezieteralsvolgtuit:
zoalsjekanzienstaathiernietveelinformatieinmaartochwelbijzondebelangrijkeinformatie.Jegaathiermetde"step"variabelemeegevenomdehoeveelsecondenerpingsmoetenuitgevoerdworden.Inde"pings"variabelegajemeegevenhoeveelpingserjuistmoetenuitgevoerdworden.Jemoethierwelmetopletten,alsjeeerstjesmokepinglaatwerkenmetstepgelijkaan60enjegaatdanditaantalverhogenofverlagen,danzaljesmokepingnietmeerwerkenomdatnudewaardenvanjegrafiekennietmeerovereenkomen.Jezaldande".rdd"filesmoetenverwijderenendesmokepingherladen,erzullendannieuwegrafiekenwordenaangemaaktmetdenieuwestepwaarden.
3.3Smokeping
35
HierbovenziejedeGeneralfile,hierstaatooknietbijzonderzeerveelinformatie.watjehiergaatdoenisspecifiërenwatdemailhostisdiejegaatgebruikenvoordesmokepingalerts,inonsgevalisdatdesmtpservervangmail.Ookgajehierenkelecontactgegevensmeegeven.
Depathnamesfilebevatooknietveelinformatiemaarzieteralsvolgtuit:
Devolgendefile,Presentation,isaleenstukinteressantervoorons,hiergaanwemeegevenwatweallemaalgrafischwillenzienoponzegrafiek.Alleswatjehierdusaanpastzalzichtbaarzijnopdegrafiek.jekanhierbijvoorbeelddehoogte,breedteofrangevandegrafiekaanpassen.Inonsvoorbeeldzietdefileeralsvolgtuit:
3.3Smokeping
36
3.3Smokeping
37
DevolgendeenvoorlaatstefileisdeProbesfile.Hiergaanwegaanmeegevenwatvoortypepinggebruiktgaatworden.afhankelijkvanwatvoorpingjehiergebruiktgajebepaaldevariabelemoetenmeegeven.Standaardvoorelkeprobeisdatjedevariabele"step"gaatmoeteninvullen,dezegeeftaanomdehoeveelsecondendepingmoetwordenuitgevoerd.anderemogelijkevariabelenzijnbijvoorbeeld;offset,forks,size,port,protocol,etc.VooreenvolledigelijstvanProbesdiesmokepingkangebruikenkanjedezelinkeensbekijken.opdezesitezaljeallebruikbareprobesvindenmetdenodigeuitlegerbij.hieronderkanjedeProbesfileziendieikzelfhebgebruiktopderaspberrypi.
3.3Smokeping
38
3.3Smokeping
39
Dandelaatstefilediewegebruikthebbenuitde"config.d"map,isdeTargetsfile.watjehiergaatdoenisinstellenwelkehostsjewiltpingen,welkepinggebruiktmoetworden,watdenaamervanisenwelkeAlertsergebruiktmoetenwordenopdezehosts(ditkanverschillenvanhosttothost,ookisergeenlimietophoeveelalertserperhostgebruiktmogenworden).HetgebruiktvandeplustekenskanjevergelijkenmetdemappenstructuuropjePC,eenplusisdanbijvoorbeelddenaamvandemapentweeplussenisdandefilehierin.Erisookgeenlimietophoeveelhostserindezefilestaan,jekanzoveelhostsbijvoegen(ofverwijderenalshetnodigis)alsjezelfwilt.Alraadikhetwelaanomhetaantalhostsrelatiefbeperkttehouden.
3.3Smokeping
40
Sendmail
3.3Smokeping
41
VooronzeAlertsvansmokepingkunnenwerken,ishetbelangrijkdatsendmailjuistgeconfigureerdis.eerstgaanwedenodigezakenisntallerendoorhetvolgendecommandointegeven"apt-getinstallsendmailmailutilssendmail-bin".Vervolgensgaanweonzegmailauthenticatiefileaanmaken,ditdoenwesimpeldooreersthetcommando"mkdir-m700/etc/mail/authinfo/"endanindezemapeenfileaantemakenwaaronzeauthenticatiegegevensinkomen(dezefilekaneenderwelkenaamhebben).Deinfodatindefilemoetzieteralsvolgtuit:"AuthInfo:"U:root""I:YOURGMAILEMAILADDRESS""P:YOURPASSWORD"".Daninonzesendmailconfiguratiefilegaanwevolgendelijnenmoetentoevoegen:
define(SMART_HOST',[smtp.gmail.com]')dnldefine(RELAY_MAILER_ARGS',TCP$h587')dnldefine(ESMTP_MAILER_ARGS',TCP$h587')dnldefine(confAUTH_OPTIONS',Ap')dnlTRUST_AUTH_MECH(EXTERNALDIGEST-MD5CRAM-MD5LOGINPLAIN')dnldefine(confAUTH_MECHANISMS',EXTERNALGSSAPIDIGEST-MD5CRAM-MD5LOGINPLAIN')dnlFEATURE(authinfo',`hash-o/etc/mail/authinfo/gmail-auth.db')dnl
Omdeconfiguratievansendmailtevervolledigengaanwenogtweecommando'smoeteningeven.Eerstgaanwedeconfiguratiemoetenrebuilden:"make-C/etc/mail"enalslaatstegaanwesendmailmoetenherladen:"/etc/init.d/sendmailreload".
Jitter
NuzoalsikaleerderhadvermeldgingikmeeruitleggevenoverwatJitterisenwaaromheteffectkanhebbenopdekwaliteitvaneenVoiceoverIPgesprek.
wanneercomputersmetelkaargaancommunicerenovereennetwerk,maaktnietuittussenwatvooraparaathetis(kantussen2pc's,tussenPCentablet,eenderwatismogelijk),gaanzepakketjesnaarelkaarversturen.Nubijzakenzoalshetopenenvaneenemailofhetladenvaneenwebpagina(zakendiedusnietechtgevoeligzijnaanlatency)maakthetnietuitofeenpakketjein30msaankomtenhetvolgendeer80msoverdoet.hetverschilhiertussenistekleinomietsvanbelangtehebbenbijditsoortzaken.
AnderezakenzijndanwelmeergevoeligvoorlatencyenditiswaarJitterenenormeinvloedkanhebben.LatencykanmengelijkstellenaandetijddateenpakketjenodigheeftomzichtussentweepuntenteverplaatsenenJittergaatdeveranderingweergevenvanhoeveeltijdnodigisvooreenpakketjeomzichtussentweeeindpuntenteverplaatsen.
EensimpelemanieromtedemonstrerenhoeJitterjuistwerktisdoorutweecomputersintebeeldendiecontinunaarelkaarpacketssturen,laatonszeggenomde10ms.WanneerdeeerstePCzijnpakketjesverstuurdendetweedePCantwoordophieropzonderenigedelay,Danspreektmenvangeenjitterophetnetwerk.NuineenandergevalwaardeeerstePCnogsteedszijnpakketjesaanhetversturenisomde10msmaariemandophetnetwerkiseenzwaredownloadaanhetdoenofmeerderestreamsaanhetbekijken,ditkanervoor
3.3Smokeping
42
zorgendatdepakketjesnietmeeromde10msaankomenmaarbijvoorbeeldpasna50msensomszelfsdatevengeenaankomenendanplotsmeerderetegelijk.DitiswanneermenJitterervaart.
IedereendieooitaleenseenstreamonlineheeftgezienofooitonlineeenspelheeftgespeeldzalJitteralervarenhebben.wanneerjestreamplotswegvaltofjespelevenblijfthangenendanlijkthetnetalsofiemandopdefastforwardknopduwt,dithebjetedankenaanJitter.Ditkomtdoordatdusmeerdereclient-servercommunicatiesplotsallemaaltegelijkaankomen.
BijVoIPishetbelangrijkdatergeenJitteris,hetminstejitteropeennetwerkkandekwaliteitdrastischdoendalen.Doordatpakketjes(dieaudiobevatten)opverschillendeintervallengaanaankomen,wiltditzeggendatwezenietzomaarkunnenafspelenwanneerzeaankomen.WatwekunnengebruikenomdittevoorkomeniseenJitterBuffer.hiermeegaanweervoorzorgendatinplaatsvanelkpakketjeeenverschillendedelayheeft,elkpakketjeeenconstanteDelaykrijgt.
3.3Smokeping
43
3.4MTREensdatderaspberrypigeplaatstis,ishetookhandigdatjevanophettoestelzelfterplaatseaandiagnosekandoen.DitiswaarMTRofMatt'sTraceroutevoorgebruiktkanworden.MTRiseenkrachtigediagnosetooldieonskanhelpenomproblemeninhetnetwerkkanisoleren.MTRkanmenzienalseenevolutieopdedooriedereengekende"traceroute".VoormensendievooralmetwindowswerkenkanjedetoolvergelijkenmetdeWindowsvariant"pingplotter",beidetoolshebbendezelfdewerking.InditdeelgaikproberenomzogoedmogelijkdewerkingvanMTRuitteleggenenhoejedeinformatiedieMTRgenereertmoetinterpreteren.
MTRgaatICMPpakketjesversturenmeteensteedstoenemendeTTL(timetolive)omzoweertegevenwelkeroutehetpakketjeneemtofwelkeserievanhopshetpasseerdevanzijnvertrekpunttotzijneindpunt.JeTTLgaatdusbepalenhoeveel"hops"eenpakketjezaldoenendanterugkeertnaardeclient.Telkenswanneereenpakketjebijvorbeeldeenrouterpasseert(eenhop)zaldeTTLmetéénverminderdworden,wanneerdeTTLop0komt"sterft"hetenkeerthetterugnaardeclientdiehetverstuurdheeft.Mengaatduszoeersteenpakketjesturendatéénhopdoetenterugkeert,danstuurtheteenpakketjedattweehopsdoet,enzovoort.DitgaatMTRherhalentothetdehostbereiktheeft.Opdezemaniergaatdeclientduswetenwelkeroutehetheeftgenomenenhoeveelhopshetgepasseerdheeft.MTRgaatveelmeerdoendanenkelderouteweergeventussentweeeindpunten,zogaathetookinformatieweergevenvanbijvoorbeelddestatus,packetloss,latency,etc.
VoorwekunnenwerkenmetMTRmoethetnatuurlijkeerstgeïnstalleerdworden.AangezienwijmetRaspbian(variantvanDebian)hebbengewerkt,doenweditsimpeldoorhetcommando"sudoapt-getinstallmtr-tiny".Hetiswelaltijdaanteradenvoorjeietsnieuwinstalleertomeersteenseen"sudoapt-getupdate"tedoen.Ditzorgtervoordatdepackagesvanaljerepositoriesuptodatezijn.
NudatweMTRhebbengeïnstalleerdkunnenwedewerkingervantestendoorhetcommando"mtr-rwgoogle.com"indecommandlinetegeven.Detweeargumentendiewemeegevenzijn"r"en"w",ditwilzeggendatwevandemtreenreportwillenvanhetresultaatendatweookdevolledigehostnameswillenvanelkehopdiewepasseren.Hetbekomenresultaatzalerzoalsvolgtuitzien:
3.4MTR
44
zoalsjekanziengenereertmtrenormveelinformatieenisopeerstezichtmisschieneenbeetjeonduidelijk.Hetcommandohierheeft10packetsgestuurdnaardehost"google.com"engeefthierhetresultaatvanweer.alswehierniethetargument"r"meegevenzalmtrgewooncontinupacketsblijvensturen.Hetgenererenvanzoeenreportduurtmeestalmaareenpaarseconden.Hetreportbestaatuiteenaantalhops,inonsgeval13.Hopszijndusderoutersofnodesdiewepasserenomaanonstargettegeraken.Naastdehopszienweooknog7kolommendieverschillendeinformatiegaangeven.Deeerstekolomgaatweergevenhoeveelpacketlosserisbijelkeindividuelehop."snt"gaatbijhoudenhoeveelpakketjeserverstuurdzijngeweest.Devolgendevierkolommendiewezijngaaninformatieweergevenoverdelatencyvandepakketjesenditdoethetinmilliseconden."Last"geeftdelatencyweervanhetlaatstverstuurdepakketje,"best"en"worstgevenweerwatdekorsteenlangstetijdwaren."Average"geeftzoalsdenaamzegtweerwathetgemiddeldewasvoorallepakketjes,dezekolomisdanookdebelangrijkstevande4.Delaatstekolom"stdev"geeftdestandaarddeviatieweer.alsdezestandaarddeviatiehoogis,wiltditzeggendaterveelfluctuatieistussendeverschillendemetingenendatdeconnectieonstabielis.Wewillendusdatdeze"StDev"zolaagmogelijkis.
Nudezetoolispashandigalswewetenhoealdezeinformatiedatmtrgenereertmoeteninterpreteren.wanneerwehetreportvanMTRgaananalyserenkijkenwenaartweezaken:lossenlatency.Alsjebijvoorbeeldpacketlosszietbijéénspecifiekehost,danzaldithoogstwaarschijnlijkkomendoorICMPlimitatie.Alsjedusbijéénhopplotsveelpacketlossziet,maarbijdevolgendehopsziejenietsverkeerd,danisdekansgrootdatwehiertemakenhebbenICMPlimitatie.Voorbeeldhierondergeeftditweer:
3.4MTR
45
Zoalsjehierkanzienmelddetweedehopplotsdaterpacketlossis,maarderestvandehopsmerkthiernietsvan.DitkomtdoorICMPTlimitatieeninrealiteitiserdushelemaalgeenpacketloss.Hetispaswanneerermeerdereopeenvolgendehopspacketlossgaanmeldendatweonszorgenmoetenmaken,zoalsinhetvolgendevoorbeeld:
Bijdederdehopkanjeziendaterplotspacketlossis,maarookdevolgendehopsgaanmeldendaterpacketlossis.Ditverteltonsdaterweldegelijkeenprobleemistussende2eindpunten.Wezienhierweldatdewaardenhiertussen40%en60%ligt,maarwatisnudeeffectievepacketloss?inditgevalgaanwealtijddewaardenemenvandelaatstehopalsdeeffectievepacketloss(hierdus40%).
Alsweterugevennaardeeersteafbeeldinggaankijken,danzienwenogietsinteressant:
3.4MTR
46
Wezienhierplotsenkelevraagtekens"???"verschijnenen100%packetloss.Ditwiltnietzeggendaterpacketlossis,wantwekunnennamelijkziendatdevolgendehopsnietmelden.Ditkanhetresultaatzijnvaneen"residentialgateway".
NogeeninteressantvoorbeeldvaneenMTRreportishetvolgende:
Hiergaateenslechtgeconfigureerderouterervoorzorgendatpacketsineenloopgestuurdgaanworden.
VoormeerinformatieoverhoedesyntaxvanMTRjuistwerktkanjealtijddezeLinkvolgen.DitzaljeeenbeterideegevenvanhoejeMTRgebruikt.
3.4MTR
47
4.BroadbandMonitoringZoalsikinhetdeelvanMeanOpinionScore(MOS)hadvermeld,heeftdebandbreedteeeninvloedopdekwaliteitvaneengesprekenhetaantalsimultanegesprekkenergevoerdkunnenworden.Daaromishetdusbelangrijkdatweditkunnenmonitorenendatweeenmeldingkrijgenvanwanneerdezebandbreedtetelaagis.
Voorlinuxisereenzeerleuketooldiedebandbreedtekantestenvanopderaspberypi,namelijkde"speedtest-cli".Dezetoolwerktviadecommandlineinterfaceeniseenvoudigteinstallerendoorhetcommando"sudoapt-getspeedtest-cli",meerisnietnodigomditwerkendetekrijgen.Nuishethandigomdeinformatiedatdezetestgenereertbijtehoudenendezegrafischweertegeven.Doordezeinformatiegrafischgaanweertegevenishetvooronsveelgemakkelijkerombepaaldepatronentezien.Zokunnenwebijvoorbeeldziendatdebandbreedtetelkensophetzelfdetijdstipplotsnaarbenedengaat.Nuwillenweooknietdatdezetestcontinuloopt.Daaromgaanwegebruikmakenvande"Crontab"omdezetestopeenbepaaldintervaltelatenlopen.Ookgaanweviadezecrontabervoorzorgendatertelkensnadatdespeedtestgebruiktisgeweest,datweviaeenpythonscriptdezedatagaanwegschrijvennaareensqlitedatabase.Ditscriptzorgterookvoordatdedatawordtweggeschrevennaar"plot.ly".Ditiseenwebsitedieervoorzorgtdatdatagrafischkanwordenweergegeven.
Decrontabdewegebruikenzieteralsvolgtuit:
Misschieneventoelichtenwathierjuistgebeurt.Eerstenvooralgaanwehierelkuurdespeedtest-cliaanroepenendezestarten.Vervolgensgaatdedatadathetgenereertwegschrijvennaareenlogfile,inditgevalde"speed.txt"file,dezezieteralsvolgtuit:
Hierwordtgewoonbijgehoudenwatdelatency,downloadenuploadwasvandelaatstetestdieisuitgevoerdgeweest.
Danhettweededeelvandecrontabzal5minutennadeeerstecrontabwordenaangeroepen.Ditishetpythonscriptdatgaatzorgenvoorhetwegschrijvenvandedatanaardesqlitedatabaseendanhetgrafischweergevenervan.HetisookbelangrijkdatweviaditscriptkunnenzienwanneerdewaardevanDownloadofdewaardevanuploadte
4.BroadbandMonitoring
48
laagis.Daaromgaanweinditscriptviaeen"if-loop"controlerenofdewaardenvanuploadofdownloadondereenbepaaldelimietgaat.WanneerdithetgevaliszaleenAlertgestuurdwordenviamailnaardecontactpersonen.Zoeenmailalertzieterdanalsvolgtuit:
Zoalsjekanziengaatindemaildeinformatiewordenmeegevenvanwatdedownloadenuploadisvanhetnetwerk.Ookzalhetdelinkvandegrafiektoevoegen.delinkmaaktgebruikvaneen"sharedkey".
Ditishetresultaatvandegrafiekdieonzedatavanuitdesqlitegrafischgaatweergeven:
ZoalsjekanzienzaldegrafiekdeDownloadenuploadsnelheidsamenvoegeninééngrafiek.VoordeDownloadkijkenwenaardeschaallinksenvoordeuploadnaarschaalrechts.
Voordeduidelijkheidgaikookevendecodeuitleggendiehiergebruiktwordt.alseerstegaanwealdeimportsdoendienodigzijn:
4.BroadbandMonitoring
49
Vervolgensgaanweconnectiemakenmetdesqlitedatabaseendegegevensvandespeedtesthiernaarwegschrijven:
NadatdedataisweggeschrevennaardesqlitedatabasegaanwecontroledoenviadeIF-loopomzotezienofdewaardenvandedownloadofuploadtelaagis.AlsdithetgevalisgaanwehiereenAlertvansturenviamail.Dezecodezieteralsvolgtuit(Deblauwelijniswaarhetpaswoordkomt):
Deinformatiediejehiermeegeeftofdemailvanwaarjestuurtkanjeduszelfaanpassenzoalsjezelfwilt.
Hetlaatstedatwegaandoenismeegevenhoewewillendatonzedatawordtweergegevenopde"plot.ly"website.Wegaanhieruiteraardookonzeaccountgegevensmeegevenenwatdenamenvandefilesmoetenzijn:
4.BroadbandMonitoring
50
4.BroadbandMonitoring
51
5.ConclusieToenikdestagebegonhadikzogoedalsgeenkennisvanVoiceoverIPendatwaszekertemerken.Deeerstedagenenmisschienzelfswekenwasaldeinformatiedieikkreegi.v.mVoiceoverIPenormoverweldigend,maarheeftmijwelenormveelbijgeleerd.Ikhadgekozenvoordezestageommeertelerenovernetwerkenendatishiertochzekerhetgevalgeweest.Ikwasookblijdatikalsstagiairmeemochtnaarklantenominstallatiestedoen,hierdoorvoeldeikmijtochmeedeelvanhetbedrijfenhetleerdemijtochookwelhoejemet-somsmoeilijke-klantenmoetomgaan.
MijnopdrachtwasomteproberenmetderaspberrydekwaliteitvaneennetwerktemonitrenomzotekijkenofdekwaliteitvanVoiceoverIPgesprekkenhieronderlijdt.Ikwasbegonnenmethetzelfschrijvenvanenkelepythonscripts.Dezezoudendanopderaspberrypidraaieneninformatiebijhoudenoverhetnetwerk.Ikhadinitieelgekozenvoorpythonomdatdetaalmijenormhardinteresseerdeenookomdatikmezelfeenuitdagingwildegeven.Laterbleekechterdathetgezegde"hoogmoeddoetzeldegoed"tocheenvormvanwaarheidbevat.MijnkennisvanPythonbleeknamelijknietgoedgenoegomechtuitgebreidescriptsteschrijvenendatwasvoorditprojecttochechtwelnodig.Ditisderedendatikmijnfocushebverlegdnaarhetwerkenmettoolsenikbenzoincontactgekomenmetsmokepingenditiswaarikveelvanmijntijdhebgespendeerd.Hetleukeaansmokepingisdatwemetdezetoolpacketloss,jitterenlatencykunnenmonitoren.Aldezegegevenswordenookmooigrafischweergegevenviaeengrafischeuserinterface.smokepingbiedtookenormveelcustomization,jekanhetaanpassenzoalsjezelfwiltendezevrijheidisaltijdeenenormemeerwaarde.
InmijndeelvanMeanOpinionScorevermeldikdatzakenzoalsjitter,latency,packetlossenbandbreedtegaatbepalenwatdeuiteindelijkekwaliteitvanjeVoiceoverIPgesprekis.Nudeeerste3hierkunnenwemonitorenmetSmokepingmaarvoorbandbreedtemoestikeenanderemaniergaanzoekenomditbijtehouden.Dithebikverwezenlijktviaeencombinatievaneenbestaandetoolvanlinux(speedtest-cli),eenpythonscriptdatdegegevensgaatwegschrijvennaareensqlitedatabaseendanuiteindelijkgaatdedatagrafischwordenweergegevenviadewebservice"plot.ly".Metntopngkunnenweviaderaspberrypizienwelkeenhoeveeltrafiekerjuistoverhetnetwerkgaat.OokkunnenweMTRgebruikenvanopderaspberryomzoaandiagnosetedoen.
DebelangrijkstezakendiedekwaliteitvaneenVoiceoverIPgesprekkunnenbeïnvloedenkunnenmomenteelgemonitordworden.Hetnadeelmomenteelisweldaterverschillendeapplicatiesopderaspberrypimoetendraaieninplaatsvandatallesviaéénapplicatiegedaanwordt.Albijalkanikterugkijkenopeenzeeraangenameenleerrijkestage.Niet
5.Conclusie
52
alleswasaltijdevensuccesvol,maarhetbelangrijkstevaneenstage(naarmijnmening)isdatjezoveelmogelijkbijleerdendatishiertochzekerhetgevalgeweest.ikhebnietalleenveelbijgeleerdoptechnischvlak,maarookveeloverhetbedrijfsleven.
5.Conclusie
53