640 likes | 770 Views
Övervakning av kvalitet för SIP-baserad kommunikation. Magisterarbete i Datornätverk gjort på KTH Syd av Emma Roos Handledare: Thomas Lindh. Projektbeskrivning. Konfigurera en flödesmätare med information från SIP-signaleringen Mäta en multimediasessions datatrafik med flödesmätaren
E N D
Övervakning av kvalitet för SIP-baserad kommunikation Magisterarbete i Datornätverk gjort på KTH Syd av Emma Roos Handledare: Thomas Lindh
Projektbeskrivning • Konfigurera en flödesmätare med information från SIP-signaleringen • Mäta en multimediasessions datatrafik med flödesmätaren • Delar i examensjobbet: • Konfigurering av SIP-server och klienter • SIP-laboration • Undersökning av flödesmätaren NeTraMet • Utveckling av prototyp • Testning av prototyp
IP-telefoni • Telefoni över datornätverk • Varför IP-telefoni i stället för vanlig telefoni? • Finns två standarder/inriktningar • IETF (SIP, RTP) • ITU-T (H.232)
SIP – Session Initiation Protocol • Signaleringsprotokoll på applikationsnivå • Transportprotokoll: UDP eller TCP • Hanterar signalering mellan klient och server • Koppla upp och ner mediasessioner • Informera om ändringar i en existerande mediasession • SIP Klient kallas ”User Agent” (UA) • Klientdel UAC • Serverdel UAS
SIP – Session Initiation Protocol • Meddelandetyper i SIP: • Metoder (INVITE, BYE m.fl.) • Svarskoder (180 Ringing, 200 OK m.fl.) • Ett SIP-meddelande består av: • SIP-huvud • Eventuell datadel skriven i SDP (Session Description Protocol)
SIP – Session Initiation ProtocolSIP-servrar • Tar emot SIP förfrågningar och svarar på dessa • SIP-servertyper • Proxy • Omdirigering • Registrering
RTP – Real-time Transport Protocol • Används av datatrafiken i en mediasession • Klarar av flera mediatyper • Transportprotokoll: UDP • Har ingen QoS • RTP-port, kodeks etc. definieras i SIP-signaleringen
SER – SIP Express Router • SIP-serverprogramvara utvecklad av iptel.org • Klarar av alla tre servertyperna • Uppbyggnad: • Enkla grundfunktioner • Kan byggas ut med hjälp av moduler • Konfigureras med C-liknande skriptspråk • Verktyg: • serweb • serctl
Trafikmätningar • Varför? • Se hur ett nätverk mår • Se om nätverket behöver uppgraderas • Se om Service Level Agreement följs • Vad mäts vanligtvis? • Fördröjning (envägs och tur-och-retur) • Fördröjningsvariation (jitter) • Paketförluster • Genomströmning
Trafikmätningar • Två typer av mätmetoder • Passiva • Aktiva • Dessa typer kan kombineras • Aktivt: Fördröjningar och fördröjningsvariation • Passivt: Paketförluster och genomströmning
Ethereal • Passivt mätverktyg • Protokollanalysator • Använder sig av: • libpcap i Linux • Winpcap i Windows
Flödesmätaren NeTraMet • Passivt mätverktyg • Mäter trafikflöden mellan två ändpunkter i ett nätverk • Tre adressattribut definierar ett flöde: • ”Adjacent” • ”Peer” • ”Transport” • Flödena definieras med regler • Reglerna skrivs i SRL - Simple Ruleset Language • Datastrukturen definierad med SNMP MIBar
Flödesmätaren NeTraMet • Programmet NeMaC • Administrerar NeTraMet instanser • Hämtar data från de noder som kör NeTraMet • Information som NeTraMet sparar: • Id-nummer för flödet • Typ av flöde • Sändar- och destinationsadresser • Antal paket och bytes som skickats och kommit in
Flödesmätaren NeTraMet OAM-version • OAM – Operations Administration and Maintenance • Kombinerar passiv och aktiv mätning • Använder monitoreringspaket (OAM-paket) • En grupp flöden kopplas till ett flöde med OAM-paket • Gruppen identifieras med ett grupp-id • Extra information som sparas: • Tidstämpel när ett OAM-paket kommer in • Antal OAM-paket som skickats sen förra hämtningen av NeMaC
SIP-laboration • Mål: • Få en översikt hur SIP fungerar • Se vilken signaleringsinformation som kan användas vid kvalitetsövervakning • Hur ska signaleringsinformationen tas tillvara • Koppla upp samtal mellan två klienter via en SIP-server • Spela in SIP- och RTP-trafiken som utväxlas
SIP-laboration: Upplägg • SIP Server • Operativsystem: Fedora Core 2 • SIP-serverprogamvara: SIP Express Router (SER) • SIP Klienter • Operativsystem: Fedora Core 2 och Windows XP Professional • SIP-klientprogramvara: Linphone och Kphone (plus X-Lite, Windows Messenger 5.1 och SJ Phone). • Trafiken spelades in och analyserades i Ethereal
SIP-laboration: Trafikfall • Registrering av klient med SIP-servern • Samtal mellan två parter • Samtal som ej besvaras • Uppringande part lägger på • Uppringd är upptagen eller avbryter (genom aktivt beslut) • Uppringd gör ingenting • Försök att ringa part som ej är registrerad med SIP-servern • Samtal där någon av parterna pausar samtalet • Tredje part ringer upp någon som redan är i samtal • Andra scenarion och inställningar
Klient A SIP-proxy Klient B Klient A SIP-proxy Klient B INVITE INVITE INVITE INVITE 100 Trying 100 Trying A ringer upp B A ringer upp B 100 Trying 100 Trying 180 Ringing 180 Ringing 180 Ringing 180 Ringing 200 OK 200 OK 200 OK 200 OK B svarar B svarar ACK ACK ACK RTP Trafik (går ej genom proxy) RTP Trafik (går ej genom proxy) BYE BYE BYE Samtalet avslutas Samtalet avslutas ACK ACK ACK SIP-laboration: Trafikfall Samtal mellan två parter Med ”record route” Utan ”record route”
Klient A SIP-Proxy Klient B INVITE INVITE 100 Trying 100 Trying A ringer upp B 180 Ringing 180 Ringing CANCEL CANCEL 200 Canceling 200 OK Uppringningsförsöket avbryts av uppringaren A 487 Request Terminated 487 Request Terminated ACK ACK SIP-laboration: TrafikfallSamtal som ej besvaras Uppringaren lägger på
SIP-laboration: TrafikfallSamtal som ej besvaras Klient A SIP-Proxy Klient B INVITE SIP-Proxy Klient A Klient B INVITE 100 Trying INVITE A ringer upp B 100 Trying INVITE 100 Trying 180 Ringing A ringer upp B 100 Trying 180 Ringing Proxy-timeouttid (tex 120s) 180 Ringing 180 Ringing 486 Busy Here/603 Decline 408 Request Timeout CANCEL ACK Uppringsninsförsöket avbryts av mottagaren, B. 486 Busy Here/603 Decline ACK 487 Request Terminated Uppringsninsförsöket avbryts av proxyn efter em viss tid ACK 200 OK ACK Uppringd är upptagen eller avbryter genom aktivt beslut Uppringd gör ingenting
SIP-laboration: Information i signaleringmeddelandena • Användare (”From”- och ”To”-raderna) • Klientadresser (”Contact”-raden) • Call-ID • CSeq • Media information i SDP-datadelen • Mediatyp • Protokoll • Format (kodek) • RTP-port
SIP-laboration: Parametrar som kan användas vid kvalitetsmätning • Uppkopplingsstatistik • Misslyckade/avbrutna försök att starta upp ett samtal • Samtalsspärr • Upptagen mottagare • Mottagaren svarar ej • Uppringaren lagt på luren innan svar • Mottagare temporärt oåtkomlig • Ej registrerad mottagare • Uppkopplingstid
Undersökning av NeTraMet • Första test: • SRL-skript från annat examensarbete • Både datatrafiken och OAM-paket genererades med ping • Första omskrivning av SRL-skript • Datatrafiken av typ UDP • Både sändar- och mottagaradresser och portar definierades • Andra omskrivningen av SRL-skriptet • Även OAM-paketen av typ UDP • Bara sändarens adress och portar definierats
Generering av OAM-paket • OAM-paket behöver vara: • Ha UDP som transportprotokoll • Ha samma storlek som datapaketen • Varför? • RTP kör UDP med en viss storlek på paketen • Eventuella olika prioriteter i nätverket • Tre metoder att generera OAM-paket testades: • UDP Ping logger • Perl-skript • NTools paketgenerator ngen
Generering av OAM-paket • UDP Ping Logger • Nerdlabs Consulting • Skickar ett UDP-paket i sekunden • Går ej att definiera hur ofta paketen ska skickas eller hur stora de ska vara • Perl-skript • Använder Net::Ping och Time::HiRes • Går inte att definiera vilken port paketen ska sändas från
Generering av OAM-paket NTools paketgenerator – ngen • Norbert Vegh på TeliaSonera AB R & B • Kan generera både UDP- och TCP-strömmar • Går att definiera: • Hur stora paketen ska vara • Hur ofta de ska skickas • Vilken port de ska skickas från och mot
Undersökning av NeTraMet (igen)Testning av SRL-skript • Samtal mellan två SIP-klienter sattes upp • RTP-portarna definierades i SIP-klientprogramvaran • OAM-paketen genererades med ngen • Hastighet 1 paket per 10:e sekund • Mottagardatorns port: echo-porten (7) • Första test • NeTraMet bara på sändardatorn • En instans av NeMaC • Andra test • NeTraMet på båda datorerna • Två NeMaC instanser på sändardatorn
Utveckling av prototyp: SIP-information för konfigurering av trafikmätningen • Typ av SIP-meddelande • Metod såsom INVITE, BYE etc eller • Svarskod tex 180 Ringing, 200 OK etc • Klienternas IP-adresser • Sändaren: Contact-raden i INVITE-meddelandet • Mottagaren: Contact-raden i 180 Ringing meddelandet • Samtalets Call-ID • Från INVITE-meddelandet • Sändarens RTP-port • Från SDP-data i INVITE-meddelandet
Utveckling av prototyp:Prototypens funktion • Prototypen ska: • Se att ett samtal håller på att kopplas upp • Hämta nödvändig information från signaleringen • Skapa SRL-filen och kompilera den • Starta två instanser av NeMaC • Starta UDP-generatorn • Stoppa mätningen när samtalet kopplas ner
Utveckling av prototyp:Prototypens uppbyggnad • Skriven i Perl • Använder sig av modulerna: • Net::PcapUtils • NetPacket • Finns i två varianter där: • Klienten gör statistikinsamlandet • SIP-servern gör statistikinsamlandet
Protoypen: Lösning 1Perlskriptets delar • Importering av Perlmoduler • Definiering av globala variabler • Subrutinen createconfig() • Subrutinen siphandler() • Subrutinen get_callid() • Subrutinen got_a_packet() • Huvudprogrammet
Protoypen: Lösning 1Huvudprogrammet och subrutinen got_a_packet() • Huvudprogrammet • Öppnar upp nätverkskortet för insamlande av UDP-paket • Om ett UDP-paket så skickas detta till got_a_packet() • Subrutinen got_a_packet • Kontrollerar om ett paket är ett SIP-paket • Om detta är fallet så avkodas paketet • Viktig information om SIP-paketet läggs in i variabler
Hämta UDP-paket Gå till siphandler-subrutinen Är paketet ett SIP-paket? Ja Start Nej Protoypen: Lösning 1
Protoypen: Lösning 1Subrutinen siphandler() • Består av algoritmen som hanterar de inkommande SIP-meddelanderna • Startar endast mätningar för samtal från den dator specificerats vid programstart • Om mätning ska göras så: • Skapas SRL-filen • Starta NeMaC och OAM-paketgeneratorn vid samtalets start
Vänta på relevant SIP-meddelande INVITE Hämta och lagra sändarens IP, mediaport och Call-ID Skapa SRL-filen och kompilera denna CANCEL, 486 Busy Here, 480 Temporarily Unavailable, 603 Declined eller 404 Not Found Vänta på nästa relevanta SIP-meddelande 180 Ringing Ta bort SRL- och regelfilerna plus rensa satta variabler Hämta destinationens IP CANCEL, 486 Busy Here eller 603 Declined Vänta på nästa relevanta SIP-meddelande 200 OK Starta NeMaC-instanser mot sändarens och mottagarens NeTraMet Starta UDP-generatorn mot mottagarens port 7 Mätning pågår BYE Stoppa NeMaC-instanserna och UDP-generatorn
Protoypen: Lösning 1Subrutinerna createconf() och getcallid() • Anropas från subrutinen siphandler() • Subrutinen createconf() • Skapa SRL-fil med de inställningar som tagits from SIP-meddelanderna • Kompilera SRL-filen • Subrutinen getcallid() • Hämta ett SIP-meddelandes Call-ID
Protoypen: Lösning 2 SIP-servern gör statistikinsamling • Bygger i stor del på lösning 1 • ”Record-route” måste vara satt på SIP-servern • Två olika skript • Klientskript som körs på SIP-klienterna • Serverskript som körs på SIP-servern
Protoypen: Lösning 2Klientskriptet • Hämtar vid uppstart av ett samtal som ska mätas • Call-ID • Mottagarens IP-nummer • Startar UDP-generatorn vid samtalets start
Vänta på relevant SIP-meddelande INVITE Hämta och lagra Call-ID CANCEL, 486 Busy Here, 480 Temporarily Unavailble, 603 Declined eller 404 Not Found Vänta på nästa relevanta SIP-meddelande 180 Ringing Rensa satta variabler Hämta destinationens IP CANCEL, 486 Busy Here eller 603 Declined Vänta på nästa relevanta SIP-meddelande 200 OK Starta UDP-generatorn mot mottagarens port 7 Mätning pågår BYE Stoppa UDP-generatorn
Protoypen: Lösning 2Serverskriptet • En instans per dator, vars trafik ska mätas, körs • Hämtar information om klienten som startar samtalet • Skapar SRL-fil och kompilerar den • Startar NeMaC vid samtalets start
Vänta på relevant SIP-meddelande INVITE Hämta och lagra sändarens IP, mediaporten och Call-ID Skapa SRL-filen och kompilera denna CANCEL, 486 Busy Here, 480 Temporarily Unavailble, 603 Declined eller 404 Not Found Vänta på nästa relevanta SIP-meddelande 180 Ringing Ta bort SRL- och regelfilerna plus rensa satta variabler Hämta destinationens IP CANCEL, 486 Busy Here eller 603 Declined Vänta på nästa relevanta SIP-meddelande 200 OK Starta NeMaC-instanser mot sändarens och mottagarens NeTraMet Mätning pågår BYE Stoppa NeMaC-instanserna
Mätning av trafik • Mätning för att testa prototypen • IP-telefonisamtal mellan Haninge och Karlskrona
Mätning av trafik • Samtal initierades från Karlskrona • Samtalstid ca 5 minuter • Resultat skrevs i två flödesfiler • Fyra tidstämplar per OAM-paket • OAM-paket skickades 1 gång i sekunden
Mätning av trafik • Information som ficks i flödesfilerna • OAM-paketets ID-värde • Tidstämpel • Bytes RTP-trafik in och ut från datorn • Antal RTP-paket in och ut från datorn
Mätning av trafikParametrar som räknades ut • Fördröjning • Round Trip Time (RTT) • Processeringstid • ”Exakt” RTT” • Envägsfördröjning • Drift i klockorna (NTP användes) • Fördröjningsvariation • ITU-T:s definition • IETF:s definition • Genomströmning per övervakningsblock
Resultat av mätningFördröjning • Räknades ut med hjälp av tidstämplar • RTT: t4-t1 • Processeringstid: t3-t2 • ”Exakt” RTT: t4-t1-(t3-t2) • Fördröjning Karlskrona -> Haninge: t2-t1 • Fördröjning Haninge -> Karlskrona: t4-t3