320 likes | 457 Views
Övervakning av kvalitet för SIP-baserad kommunikation. Magisterarbete i Datornätverk gjort på KTH Syd av Emma Roos Handledare: Thomas Lindh. Projektbeskrivning. Titta på en multimediasessions signaleringsinformation för att: Få statistik om sessionen
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 • Titta på en multimediasessions signaleringsinformation för att: • Få statistik om sessionen • Konfigurera mätning av datatrafikens kvalité • Datatrafiken ska mätas med en flödesmätare • I arbetet skulle det: • SIP och flödesmätaren NeTraMet undesökas • Utveckla en prototyp som tar information från SIP och konfigurerar en mätning med denna information • Testa prototypen i en mätning
SIP – Session Initiation Protocol • Signaleringsprotokoll på applikationsnivå • Kopplar upp och ner mediasessioner • Informerar om ändringar i en mediasession • Olika SIP-servertyper • Proxy • Omdirigering • Registrering • SIP Express Router - SER
RTP - Real-time Transport Protocol • Används av datatrafiken i en mediasession • Klarar av flera mediatyper • Transportprotokoll: UDP
SIP-laboration • Mål: • Få en översikt hur SIP fungerar • Se vilken signaleringsinformation som kan användas vid kvalitetsövervakning • Koppla upp olika trafikfall mellan klienter via en SIP-server • Spela in SIP- och RTP-trafiken
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 180 Ringing 200 OK 180 Ringing 200 OK B svarar 486 Busy Here/603 Decline ACK ACK ACK Uppringsninsförsöket avbryts av mottagaren, B. 486 Busy Here/603 Decline ACK RTP Trafik (går ej genom proxy) BYE BYE Samtalet avslutas ACK ACK SIP-laboration: Exempel på meddelandeutbyten Samtal mellan två parter, med ”record route” Uppringd är upptagen eller avbryter genom aktivt beslut
SIP-laboration: Nyttig information i signaleringsmeddelandena • Typ av SIP-meddelande • Klienternas IP-adresser (”Contact”-raden) • Call-ID • Mediainformation i SDP-datadelen • Mediatyp • Protokoll (RTP) • RTP-port
Flödesmätaren NeTraMet OAM-version • Mäter trafikflöden mellan två ändpunkter • Flödena definieras t.ex. med IP-adresser, protokolltyp och portar • Operations Administration and Maintenance • Kombinerar passiv och aktiv mätning • Använder monitoreringspaket (OAM-paket) • Inkommande OAM-paket triggar mätning • Programmet NeMaC • Administrerar NeTraMet • Hämtar trafikstatistik från NeTraMet
Undersökning av NeTraMet • SRL-skript från annat examensarbete som skrevs om • Datatrafiken och OAM-paketen ändrades från ICMP till UDP • Bara sändarens IP-adress och portar definierades • Hur ska OAM-paket ska genereras? • Test av SRL-skript och OAM-generering.
Undersökning av NeTraMet:Generering av OAM-paket • OAM-paket behöver: • Ha UDP som transportprotokoll • Ha samma storlek som datapaketen • Svar skickas tillbaka från mottagaren • Lösning: • Paketen genererades med ngen • Skicka paketen mot mottagarens port 7
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 • När mottagaren svarar • Starta två instanser av NeMaC • Starta OAM-paketgeneratorn • 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
Hämta UDP-paket Gå till siphandler-subrutinen Är paketet ett SIP-paket? Avkoda paketet Ja Start Nej Prototypen: Lösning 1 Programmet i stora drag
Prototypen: Lösning 1Perlskriptets delar • Importering av Perlmoduler • Definiering av globala variabler • Huvudprogrammet • Subrutiner: • got_a_packet() • siphandler() • createconfig() • get_callid()
Prototypen: Lösning 1Subrutinen siphandler() • Har algoritmen som hanterar SIP-meddelandena • Startar endast mätningar för samtal från en specifik klient
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
Prototypen: Lösning 2SIP-servern gör statistikinsamling • Bygger i stor del på lösning 1 • ”Record-route” måste vara satt på proxyn
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 • Ett OAM-paket i sekunden skickades • Resultat skrevs i två flödesfiler • Information som ficks i flödesfilerna • OAM-paketets ID-värde • Tidstämpel • Antal bytes RTP-trafik in och ut • Antal RTP-paket in och ut
Mätning av trafik • Fyra tidstämplar per OAM-paket
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
Resultat av mätningFördröjning • Mindre spridning på värdena när ”exakt” RTT används
Resultat av mätningFördröjning • Processeringstiden har stor påverkan på RTT:n
Resultat av mätningFördröjningsvariation • Räknades ut med värdena för ”exakt” RTT • ITU-T:s metod • d(i)-medel(d) (eller d(i)-min(d)) • IETF:s metod • d(i)-d(i-1)
Resultat av mätningFördröjningsvariation • ITU-T:s fördröjningsvariation • Samma sannolikhetsfördelning som ”exakt” RTT • IETF:s fördröjningvariation • Jämnt fördelat runt medelvärdet
Resultat av mätningGenomströmning • Genomströmning per övervakningsblock • (antal_bytes(i-1,i)*8)/(tid(i)-tid(i-1))
Resultat av mätningGenomströmning • Jämn genomströmning • RTP skickar små paket med konstant hastighet • Tappades inga eller få paket
Diskussion och slutsatser • Problem med att använda ngen mot port 7 • Problem med tidstämplingens noggrannhet • Tidstämpling görs i programmet ej på nätverkskortet • Synkronisering av klockor görs med NTP • GPS ingen lösning
Idéer för att förbättra prototypen • Ta fram metod för att välja ut vilka samtal som ska mätas • Skriva om källkod så: • Server- och klientversionerna finns i samma program • Andra mediatyper än audio hanteras • Information om missade samtal etc. sparas • Utveckla program som behandlar och redovisar flödesfilerna • Utveckla bättre metod att generera OAM-paket
Sammanfattning • Hämta information från SIP för att: • Få statistik om samtal • Konfigurera mätning med flödesmätare • SIP-laboration • Undersökning av NeTraMet och hur OAM-paket ska genereras • Utveckling av prototyp i Perl • Klientversion • Serverversion • Mätning gjord med prototypen