Introduzione Misurare l’impatto che può avere l’aggiunta di traffico sulle prestazioni di un sistema di rete è molto utile. Nel testing di applicazioni di rete, nel caso si usi l’emulatore di rete, è opportuno avere componenti che riproducono il traffico di una rete di produzione. Soluzione: Traffic Generator
Cosa è un Generatore di Traffico Un generatore di traffico è un’apparecchiatura hardware o un software che consente di inviare pacchetti di svariata natura su una rete, permettendo di: Testare un’applicazione di rete in presenza di traffico Simulare problemi della rete e verificare il comportamento della rete Verificare le prestazioni di un dispositivo di rete Traffic generator
Traffic Generator v1.0 - Funzionalità Creazione e modifica di pacchetti Protocolli Supportati: IP, TCP, UDP, RTP Creazione di stream di pacchetti Distribuzione dei pacchetti in percentuale Caricamento/Salvataggio Stream in file.xml Funzioni di ritardo dei singoli pacchetti: lineare, esponenziale, custom (file.txt) Invio di uno o più stream Definizione ritardo tra stream 2 modi di invio: Device mode e Raw Socket mode
Tecnologie utilizzate XML
Perché Java? Ereditarietà Multipiattaforma Polimorfismo Packet TCPPacket IPPacket UDPPacket RTP UDP IP
Jpcap Libreria Open-Source per Java Basata su libpcap/winpcap Multipiattaforma Scaricabile al sito: Jpcap Versione v da noi opportunamente modificata Traffic Generator v.1.0
Class Diagram
Gestione Pacchetti aggiunto campo name alla classe Packet aggiunti metodi astratti remove layer, load e save alla classe Packet creazione della classe RTPOverUDPPacket implementazioni dei metodi astratti remove layer, load e save nelle classi IPPacket, UDPPacket, TCPPacket ed RTPOverUDPPacket Funzioni di ritardo dei pacchetti creazione interfaccia DelaySendFunction implementazione dell’interfaccia per creare delay tramite Funzioni lineari Funzioni esponenziali Funzioni custom da file Funzione di distribuzione dei pacchetti interfaccia PacketDistributionPolicy PercentualDistributionPolicy implementa una distribuzione dei pacchetti nello stream in base ad una percentuale possibilità creare nuove distribuzioni implementando l’interfaccia Gestione Stream aggiungere e rimuovere pacchetti, e layer dai pacchetti dello stream caricare e salvare lo stream da/in file xml creare lo stream da inviare in base ad una distribuzione dei pacchetti ed una funzione delay Gestione Invio Stream Funzioni per due modalità di invio: sendLocal(device) per Device Mode send() per Raw Socket Mode Per ogni stream è avviato un thread apposito che si occupa di inviare i pacchetti in base ai ritardi Nell’invio in device mode, prima dell’invio, vi è la risoluzione dei MAC Address degli indirizzi IP presenti nei pacchetti dello stream, e la creazione del livello ethernet per ogni pacchetto Configurazione Due parametri di configurazione: invio per RawSocket (SI/NO) device di invio nel caso non si opti per l’invio tramite raw socket caricamento e salvataggio configurazione da/in file xml
GUI
Test Rete di Test (1 Router e 2 Computer) Diversi Test in base alla funzione di ritardo (lineare, esponenziale), all’ordine di grandezza dei tempi e in base al modo di invio 1 Stream con 10 pacchetti (25% IP, 25% TCP, 25% UDP, 25% RTP)
Sviluppi Futuri Aggiunta di nuovi protocolli Aggiunta di nuove funzioni di distribuzione Aggiunta di nuove funzioni di ritardo Payload in esadecimale e con possibilità di caricamento da file Possibilità di funzionamento in modalità “Replay” (compatibilità con stream.pcap)