Misurare il comportamento di IP and TCP su un nodo di accesso Marco Mellia Motivazioni Siamo interessati a: Misurare il traffico in Internet n n A livello IP A livello TCP Ricostruire misure a livello di flusso TCP n n n Il software: TStat Il software: TStat Diversi tool di cattura e analisi di tracce dati sono presenti. I più famosi/usati sono basati su libpcap Sono free, e usano comune hardware da PC Nessuno produce analisi statistiche dei dati Nessuno è in grado di lavorare on -line Nessuno dispone di interfacce utente semplici Tstat cerca di fare tutto ciò Schema di misura Si distinguono n n client e server pacchetti/flussi entranti and uscenti Lunghezze flussi Dimensioni finestre Sequenze di perdita TStat costruisce istogrammi: ogni 15 minuti le statistiche sono salvate, per un totale di più di 80 istogrammi Sono disponibili una serie di tool di post-elaborazione che permettono di ricavare istogrammi cumulativi e fare analisi tempo-varianti Una interfaccia web permette la successiva visualizzazione dei dati raccolti in modo intuitivo e semplice Tstat design Tstat analizza sia il traffico entrante, sia quello uscente, per poter ricostruire lo stato di connessioni TCP L’analizzatore deve essere posizionato vicino ad un router di accesso Analysis module I/O module Live (pcap, dag) File (pcap, dag, ns, …) Garbage collector Flow database Stat dumper Internal Stat Web Interface arrays variables php support File Database Perl modules Histograms TCP flow log Plot_time.pl Plot_cum.pl 1 Tstat design: modulo di analisi Tstat design: file database Ogni ∆T statistiche internel sono salvate su file Semplice formato colonnare n n Alberi di files /dirs memorizzano gli istogrammi Un file di log per tutte le connessioni TCP analizzate w log_complete w log_nocomplete File Database Stat dumper Histograms TCP flow log /home17/TSTAT_DATA/tracce_elaborate/ |-- Polito_Apr_2000_pre155Mbps | |-- 02_10_12_Apr_2000.dump.gz.out | | |-- 000 | | | |-- addresses.gz | | | |-- dupb_a2b.gz | | | |-- ... | | |-- 001 | | | |-- addresses.gz | | ... | | |-- 003 | | | |-- addresses.gz | | | |-- ... | |-- 03_10_12_Apr_2000.dump.gz.out | | |-- 000 | | | |-- addresses.gz ... FOR MORE INFO... http://tstat.tlc.polito.it File Database Esempio di output Descrizione degli istogrammi [mellia@verza mellia]$ head –n 18 Polito_Nov_2002/07_19_11_No v_2002.dump.gz.out/000/protoc ol_ent -1.0 0 0.0 0 1.0 480 2.0 3 3.0 0 4.0 0 5.0 0 6.0 263809 7.0 0 8.0 0 … 17.0 9670 Histograms TCP flow log Descrizione del Log_complete #Col n# Short desc # 1 # Client IP addr # # 2 # Client TCP port # # 3 # packets # # 4 # RST sent # . . . # 43 # Server IP addr # # 44 # Server TCP port # # 45 # packets # # 46 # RST sent # . . . Tstat: pagina Web php support Una interfaccia web permettedi n n n Selezionare la misura desiderata Post-processare i dati selezionati Visualizzare dei grafici Alcuni esempi Http://tstat.tlc.polito.it FOR MORE INFO... Web interface Web Interface FOR MORE INFO... http://tstat.tlc.polito.it http://tstat.tlc.polito.it Web interface 2 Esempio di analisi Analisi a livello IP Sono state collezionate diverse tracce sul nodo di accesso del Politecnico di Torino Presentiamo parte dei risultati ottenuti con TStat Date GARR-USA link Flows [106 ] Pkts [106 ] Protocol share [%] Other UDP TCP June 2000 46Mbps 4.48 242.7 0.75 5.96 93.29 Jan. 2001 622Mbps 7.063 401.8 0.59 4.31 95.10 IP: Protocollo superiore 4 Version 8 HLEN 16 Service Type Identification Time To Live 19 n n n n Protocollo di livello superiore Distribuzione indirizzi IP Distribuzione lunghezza pacchetti Distribuzione Time to Live Risultati già noti Più alcune interessanti osservazioni IP: Protocollo superiore 24 31 100 TCP UDP Other Total Length Flags Protocol Protocol Fragment Offset 10 Header Checksum % 0 Misure basate su osservazione dell’intestazione pacchetti IP Source IP Address Destination IP Address 1 Options PAD 0.1 Mon 01/29 Tue 01/30 Wed 01/31 Thu 02/01 Fri 02/02 Sat 02/03 Sun 02/04 00:00 03:46 07:33 11:20 15:06 18:53 22:40 time Selezioniamo misure in “ora di punta” IP: lunghezza pacchetti 0 Version 4 8 HLEN 16 24 60 31 Total Length Length Service Type Identification 19 IP: lunghezza pacchetti Flags In Out 50 Fragment Offset 40 Protocol Header Checksum % Time To Live Source IP Address Destination IP Address Options 30 20 PAD 10 0 0 200 400 600 800 1000 1200 1400 packet len [bytes] 3 IP: Time to Live 4 Version 8 HLEN 16 Service Type Identification Time Time To To Live Live 19 24 35 31 Flags Protocol In Out 30 Total Length Fragment Offset 5 4 25 3 Header Checksum 20 2 % 0 IP: Time to Live Source IP Address 1 15 0 Destination IP Address 98 104 110 116 122 128 10 Options PAD 5 0 Analisi a livello TCP n 64 96 128 TTL 160 192 224 256 288 Destination port Source port Sequence Number Opzioni: SACK, MSS, TS, WS… Ricostruzione dello stato dei flussi n 32 Analisi a livello TCP Osserviamo l’intestazione dei segmenti TCP n 0 Acknowledgment Number Lunghezza flussi (bytes, segmenti, impatto intestazione…) Ritrasmissioni, fuori sequenze HLEN Resv. Flags Checksum RWND Urgent pointer Options TCP: opzioni option succ. client server SACK 5.0 WinScale 10.9 TS Analisi flussi TCP 3.1 SACK 11.6 WinScale 5.1 TS 4.5 Jun 2000 29.5 0.1 19.2 1.3 unset 3.1 0.1 Jan 2001 96.9 32.9 10.9 4.5 66.7 66.7 95.5 0.3 1.2 0.0 Un flusso è identificato da 70.4 79.5 n Primo segmento SYN Un flusso finisce n MSS Client % Server % 1460 90.9 1460 80.7 536 6.0 0-10 7.6 1450 0 1.8 510 3.6 0.4 1380 3.0 n n Correttamente con sequenza FIN+ACK Improvvisamente per segmento RST O viene dichiarato chiuso dopo 30sec di inattività 4 Flussi TCP – lunghezza [ bytes] 14 Flussi TCP – lung. per servizio 10 In Out In Service Port % Flow % segments % Bytes HTTP 80 81.48 62.78 61.27 Mail 25 2.98 2.51 2.04 HTTPS 443 1.66 0.87 0.52 0.93 0.42 Out 12 1 100 10 10 0.1 1 8 % 0.1 0.01 0.01 6 0.001 POP 0.001 4 0.0001 50 500 5000 50000 2 0.0001 0 0 2000 4000 6000 8000 flow length [bytes] 10000 1e-05 100000 1e+06 1e+07 flow length [bytes] TCP: Analisi per semiflussi 110 1.26 FTP ctrl 21 0.54 0.54 0.50 FTP data 20 0.51 6.04 9.46 Asimmetria [byte] 5 TCP offre un servizio bi-direzionale Ma le applicazioni generano dati bidirezionali? ξ= Client mandano più dati Server mandano più dati 4.5 4 3.5 % 3 Data (C → S ) Data (C → S ) + Data (S → C ) 2.5 2 1.5 1 Definiamo ξ come parametro di asimmetria 0.5 0 0 0.1 0.2 0.3 0.4 0.5 ξ Asimmetria [segmenti] 30 25 30 25 20 15 10 5 0 0.45 0.475 % 20 15 10 5 0 0 0.2 Service 0.6 0.8 0.9 1 Data(C →S) Data(C→ S) +Data(S →C) 0.8 Average Client to server pkts Byte 0.5 0.525 0.55 0.4 0.7 Asimmetria per servizio Client mandano più dati Server mandano più dati 0.6 ξ= Server to client pkts Byte HTTP 15.22 1189.95 19.55 Mail 21.19 15034.38 16.76 15998.45 624.26 HTTPS 11.47 936.71 12.33 6255.79 7489.01 POP 14.87 91.05 18.47 FTP ctrl 23.72 11931.13 21.86 9254.27 FTP data 313.99 343921.3 223.45 82873.22 1 ξ 5 TCP: Flight size TCP: Flight size Acknowledgment Number HLEN Resv. Flags Checksum Window Size Urgent pointer Options 40 Osservando i valori dei campi numeri di sequenza, possiamo calcolare la dimensione dei dati “in flight”, ossia mandati e non ancora confermati Jun. 00 Jan. 01 35 100 10 30 1 25 % Sequence Number 0.1 % Destination port Source port 20 0.01 0.001 15 0.0001 256 10 1024 4096 16384 65536 5 0 0 2048 4096 6144 8192 10240 12288 14336 bytes TCP: segmenti duplicati e fuori sequenza Destination port Source port Sequence Number Acknowledgment Number HLEN Resv. Flags Window Size Checksum Urgent pointer TCP: segmenti duplicati e fuori sequenza Osservando i numeri di sequenza, possiamo stimare n Options n Segmenti fuori sequenza Segmenti duplicati Period Jun.00 Jan 01 P{Out of sequence Burst} Vs PKT Vs flow In % Out% In% Out% 3.4 0.07 43.41 0.43 1.7 0.03 23.03 0.99 E da questi derivare delle probabilità di perdita Period Jun.00 Jan 01 Classificazione di eventi anomali Tstat Possiamo distinguere tra n n n n n n n n Ritrasmissioni per RTO Ritrasmissione per FR Duplicati generati dalla rete Fuori sequenza Ritr. non necessarie per RTO Ritr. non necessarie per FR Flow control ??? Non è completa Non è esatta… Client Server P{Duplicate Burst} Vs PKT Vs flow In % Out% In% Out% 1.45 1.47 18.27 18.59 1.31 1.09 17.65 14.81 Euristica Out-of-sequence Duplicate SYN SYN+ACK ACK ???? Data ACK FIN ACK FIN ACK 6 Risultati: 2004 traffico uscente Risultati: 2004 traffico entrante Risultati: 2001 traffico entrante Risultati: 2004 traffico entrante Risultati: 2004 traffico uscente Risultati: impatto lunghezza file 7 Conclusioni Il mondo reale è molto diverso dal mondo della lavagna Sporcarsi le mani con le misure è divertente… … ma alla fine ripulirsi è difficile Sviluppi Stiamo lavorando su n n n Protocolli real time (RTP-RTCP) – Fastweb Misure su reti ad alta velocità – Garr Misure su reti wireless w GPRS -UMTS – Vodafone w WiFi – Polito Spazio per tesi 8