1. Úvod
Generátory záťaže IP sietí sú programy, ktoré slúžia testovanie počítačových sietí. Merajú napríklad rýchlosť prenosu paketov z klienta na server či podiel stratených paketov počas prenosu. Využívajú sa hlavne na testovanie funkčnosti sieťových komponentov ako sú napríklad smerovače a switche pri extrémnom zaťažení.
Tieto programy generujú komunikáciu na sieti tak, že generujú IP pakety a posielajú ich na vzdialený počítač. Obvykle pozostávajú z dvoch modulov: vysielača, ktorý pakety vysiela, a prijímača, ktorý pakety prijíma a prípadne ich posiela naspäť k vysielaču.
Väčšina generátorov je schopná generovať iba pakety typu UDP, nakoľko na ich prenos nie je potrebné vytvárať virtuálne spojenie medzi vysielačom a prijímačom.
Niektoré komplexnejšie generátory však dokážu generovať viaceré typy paketov ako TCP, ICMP, ARP alebo emulovať komunikáciu protokolov vyšších vrstiev ako FTP, HTTP, Telnet, VoIP a iné.
Programy väčšinou umožňujú nastaviť parametre vysielaných paketov ako zdojovú a cielovú adresu, zdrojový a cieľový port, príznaky, u TCP aj sekvenčné čísla, veľkosť okna a iné parametre.
Niektoré generátory umožňujú určiť veľkosť paketu a časový interval medzi dvoma vysielanými paketmi náhodne podľa určitého rozdelenia pravdepodobnosti, čo umožňuje vierohodnejšie simulovať komunikáciu na sieti.
2. Prehľad Open Source generátorov záťaže IP sietí
Flowgrind – TCP traffic generator
http://www.flowgrind.net/
Pokročilý TCP generátor prevádzky pre testovanie Linux/Unix/Mac IP stacku.
Mtools
http://www.grid.unina.it/grid/mtools/
Kolekcia programov, ktorá slúži na meranie výkonnosti siete. Pracuje pod operačnými systémami Linux a Solaris.
Kolekcia pozostáva z programov One-way-delay Meter a Round-trip-time Meter.
One-way-delay Meter posiela UDP pakety na daný host a meria čas prenosu každého paketu. Všetky informácie týkajúce sa každého paketu ukladá do logovacieho súboru, kompatibilného s programom MGEN.
Program umožňuje určiť rozdelenie pravdepodobnosti náhodnej premennej, vyjadrujúcej časový interval medzi vysielanými paketmi ako aj veľkosť paketu. Program podporuje rovnomerné, exponenciálne a Paretovo rozdelenie pravdepodobnosti. Umožňuje navyše určiť počiatočnú násadu generátora náhodných čísel, čo umožňuje uskutočniť rovnaké realizácie náhodnej premennej.
Program obsahuje dva moduly: sender a receiver. Sender posiela pakety na daný host, na ktorom je spustený receiver, ktorý pakety prijíma.
Round-trip-time Meter posiela UDP pakety na daný host, ktorý ich posiela naspäť, pričom sa meria čas príchodu paketu na vzdialený počítač a čas návratu paketu na počítač, ktorý ho vyslal. Program tiež pozostáva z modulov sender a receiver.
MGEN – The Multi-Generator Toolset
http://pf.itd.nrl.navy.mil/mgen/
Generuje vzorky sieťovej komunikácie v reálnom čase, tak, že sieť môže byť zaťažená rôznymi spôsobmi. Generovaná komunikácia môže byť zachytená a zaznamenaná do logovacieho súboru pre neskoršiu analýzu.
Vzorky komunikácie sú popísané v špeciálnych skriptovacích súboroch. Tieto súbory môžu byť použité na emuláciu vzoriek komunikácie unicast alebo multicast UDP/ IP aplikácií.
Program zaznamenáva do logovacích súborov štatistiky o výkone siete, podielu stratených paketov a ich oneskorenie.
Mgen generuje pakety rozličnej veľkosti a frekvencie vysielania. V súčasnosti podporuje tri typy vzoriek:
- Periodické: správy majú pevnú dĺžku a sú vysielané pravidelne
- Poissonove: správy majú pevnú dĺžku avšak rozličný interval vysielania daný poissonovským rozdelením pravdepodobnosti.
- “Burst“: vzorky sú vysielané v dávkach v určitom časovom intervale.
Mgen pracuje pod rozličnými operačnými systémami Unixovského typu ako aj pod systémami Windows.
Posledná verzia programu obsahuje aj grafické užívateľské prostredie a podporuje aj IPv6 sieťovanie. Vývojári plánujú v budúcnosti pridať podporu pre generovanie TCP paketov a podporu viacerých typov rozdelení náhodnej premennej.
RUDE & CRUDE
Rude je malý a flexibilný program, ktorý generuje UDP komunikáciu v sieti na jednom konci, ktorá môže byť zachytená a zaznamenaná na druhom konci programom Crude.
Veľkosť generovaného paketu a interval medzi dvoma generovanými paketmi môže byť buď konštantná, alebo priamo definovaná v textovom súbore pre každý paket zvlášť.
Na rozdiel od programu Mgen, nepracuje so systémovým časom, nakoľko systémový čas v jadre linux má časové rozlíšenie až 10 ms, čo bolo príčinou naprogramovania tohto programu, ktorý takéto obmedzenie nemá.
Posledná verzia programu obsahuje aj grafickú nadstavbu s názvom Grude.
Tieto programy pracujú pod operačnými systémami Linux a BSD.
UDPgen
http://www.fokus.fhg.de/usr/sebastian.zander/private/udpgen
Generátor UDP komunikácie pre Linux s jadrom 2.4 a viac. Vysiela a prijíma UDP pakety a počíta čas ich prenosu.
Program je spustený kompletne v jadre operačného systému linux, čo umožňuje vysielať pakety s väčšou rýchlosťou a nižším zaťažením procesora ako bežná aplikácia.
Ipperf
http://dast.nlanr.net/Projects/Iperf/
Program, ktorý meria výkon, priepustnosť a spoľahlivosť siete. Posiela a prijíma TCP alebo UDP komunikáciu a zaznamenáva rozličné štatistiky ako rýchlosť prenosu, počet stratených fragmentov alebo oneskorenie prenosu.
Program pracuje pod systémami Unix, Linux, BSD, Solaris, MacOS a Windows.
UDP Generator
http://www.citi.umich.edu/projects/qbone/generator.html
Program slúži na testovanie kvality siete. Je to jednoduchý generátor UDP unicast komunikácie. Je schopný zahltiť 100Mbit sieť typu Ethernet. Skladá sa z modulov gen_send, ktorý vysiela pakety a gen_recv, ktorý pakety prijíma.
Gen_send dokáže posielať pakety rýchlosťou až 95 Mbit/sek. cez 100Mbit Ethernet s 0% stratou. Interval medzi vysielanými paketmi je konštantný a veľkosť paketu je postupne zväčšovaná, až kým sa nedosiahne požadovaná rýchlosť v KB za sekundu.
Program pracuje pod systémami Linux, BSD a Solaris.
Network Traffic Generator
http://robert.rsa3.com/traffic.html
Generátor TCP a UDP komunikácie na báze modelu klient-server. Generuje veľké objemy komunikácie na sieti, čo môže byť použité na testovanie schopností smerovačov, firewallov alebo sietí VPN. Nemeria priepustnosť, počet spojení za sekundu ani nič podobné.
Veľkosť paketu môže byť pevná, náhodná alebo postupne zväčšujúca sa.
Pracuje pod operačnými systémami Windows, Linux, BDS a Solaris.
Mxtraf
http://mxtraf.sourceforge.net/
Generátor sieťovej komunikácie. Používa sa na zahltenie siete malým počtom hostov zmiešaným typom komunikácie. Vie generovať tri typy komunikácie:
„mouse“ – periodický tok TCP paketov špecifikovanej dĺžky
„elephant“ – nekonečný prúd „dlhožijúcich“ TCP paketov
„dinosaur“ – UDP komunikácia špecifikovanej rýchlosti
Mxtraf generuje komunikáciu na sieti ako kombináciu týchto troch typov.
Program má aj grafické užívateľské prostredie a pracuje pod systémami Linux, BSD a Solaris.
Ntgen
http://tochna.technion.ac.il/project/NTGen_v2.0/html/index.htm
Netperf
http://www.netperf.org/netperf/NetperfPage.html
Netperf je program, ktorý meria výkonnosť rozličných typov siete. Primárne sa zameriava na meranie rýchlosti prenosu čistých dát a rýchlosti odpovede na požiadavky použitím buď TCP alebo UDP a Berkeley Socket interfejsu. Dostupné sú aj testy výkonnosti DLPI, Unix Domain Sockets, Fore ATM API a HP HiPPI LLA interfejsu.
Program je založený na modeli klient-server, preto obsahuje dva spustitelné súbory: netperf a netserver.
Traffic Generator Tool
http://www.postel.org/tg/tg.htm
Program, ktorý vytvára jednosmerný prúd UDP alebo TCP paketov medzi zdrojom a cieľom.
Komunikácia je popísaná dĺžkou paketu a časom medzi dvoma vysielanými paketmi. Tieto parametre môžu byť konštantné alebo náhodné s rovnomerným, exponenciálnym alebo markovovým rozdelením pravdepodobnosti.
Program je možné použiť na charakterizovanie výkonnosti sieťových protokolov v sieťach s prepojovaním paketov.
Informácie týkajúce sa rýchlosti prenosu paketov ukladá do logovacích súborov v binárnej forme, ktorej rozumejú bežné grafické aplikácie ako napríklad xplot, xgraph alebo gnuplot.
Podporuje unicast alebo multicast (len pri UDP) adresovanie.
Program pracuje pod systémami Linux, BSD, Solaris a SunOS.
TFgen
http://www.st.rim.or.jp/%7Eyumo/pub/tfgen.html
Aplikácia, ktorá umožňuje generovanie komunikácie na lokálnej sieti napr. Ethernet. Je to Windows 32bit aplikácia, ktorá používa knižnicu Windows Sockets. Generuje unicast alebo multicast UDP komunikáciu no nespracováva ju na prijímacej strane. Generuje pakety v dávkach po určenom alebo náhodmom časovom intervale.
Packet Shell
http://playground.sun.com/psh/
Real-Time Voice Traffic Generator
http://www.cs.ucr.edu/%7Emsamidi/projects.htm
Program slúži na meranie výkonnosti end-to-end spojenia na aplikačnej úrovni. Emuluje real-time voice komunikáciu v sieti.
Pozostáva z klienta a servra. Klient je spustený na lokálnom počítači a server na vzdialenom. Server prijíma UDP pakety vyslané klientom a posiela ich napäť. Informácie o čase doručenia a čase prijatia uchováva v logovacích súboroch.
Program je spustitelný na platforme Linux 2.4.
PacGen
http://pacgen.sourceforge.net/
Tento nástroj dokáže generovať TCP a UDP pakety, pokusne aj ARP. Program umožňuje nastaviť parametre paketu na Ethernetovej, IP, UDP alebo TCP vrstve ako aj dátovú časť paketu. Program pracuje pod systémom Linux.
IPgen – IP packets generator
http://sourceforge.net/projects/ipgen/
Generuje rozličné IP pakety ako ICMP, TCP,UDP a dokáže napríklad nastaviť falošnú zdrojovú IP adresu.
Pracuje pod systémami Linux a BSD.
IP-Packet
http://ip-packet.sourceforge.net/
Generátor IP paketov napísaný v Perl. Podporuje TCP, UDP a ICMP pakety. U TCP paketu možno nastaviť zdrojovú adresu, cieľovú adresu, zdrojový port, cieľový port, acknowledgement a sequence čísla, veľkosť okna a tcp príznaky. U UDP paketu samozrejme iba zdrojovú a cieľovú adresu a zdrojový a cieľový port. Pri ICMP pakete možno zvoliť ICMP kód, ICMP typ, bránu a mtu. Ďalej možno nastaviť u každého paketu fragmentation offset a time-to-live.
Program nepodporuje voľbu rozdelenia pravdepodobnosti pri generovaní paketov, iba ich počet, preto nie je vhodný na záťažové testy ale na testovanie funkčnosti smerovania.
Program disponuje aj grafickým užívateľským prostredím a funguje pod operačným systémom Linux.
NetSpec
http://www.ittc.ku.edu/netspec/
Nástroj na experimentovanie so sieťou a meranie jej výkonnosti. Zjednodušuje proces testovania siete. Poskytuje všeobecný framework , ktorý umožňuje užívateľovi kontrolovať viacero procesov z viacerých hostov z centrálneho kontrolného bodu. Pozostáva z „démonov“, ktoré implementujú zdroje a ústia komunikácie a z mnoho pasívnych meracích nástrojov. Používa skriptovací jazyk, ktorý dovoľuje užívateľovi definovať viacero tokov komunikácie z/do rozličných počítačov.
Dokáže emulovať mnoho rozličných druhov komunikácie vyšších vrstiev, napríklad FTP, HTTP, Telnet, Mpeg a iné.
Pracuje pod operačnými systémami typu Unix, Solaris a SunOS.
SURGE (Scalable URL Reference Generator)
http://cs-www.bu.edu/faculty/crovella/surge_1.00a.tar.gz
Generuje sériu URL požiadaviek na web server. Emuluje rozličné podmienky na sieti, s ktorými sa môže webovský server stretnúť.
Poisson Traffic Generator
http://www.spin.rice.edu/Software/poisson_gen/
Generuje poissonov tok prichádzajúcich paketov. Pozostáva s vysielača paketov a prijímača paketov.
ALTGen-F – FTP traffic generator
http://roland.grc.nasa.gov/%7Ejishac/software/
Nástroj, ktorý generuje profil FTP komunikácie. Tento profil potom môže byť použitý ako vstup do simulátora alebo iného nástroja, ktorý vytvorí vzorky FTP komunikácie.
BRUTE – Brawny and Rough Udp Traffic Engine
http://netgroup-serv.iet.unipi.it/brute/
Aplikácia, ktorá produkuje veľké množstvo sieťovej komunikácie cez sieť typu Ethernet. Dokáže generovať až milión 64 bitových rámcov za sekundu na bežnom počítači. Generuje IP pakety typu UDP. Interval medzi dvoma odosielanými paketmi môže byť konštantný alebo náhodný s exponenciálnym rozdelením pravdepodobnosti.
Jugi's Traffic Generator (jtg)
http://www.cs.helsinki.fi/u/jmanner/software/jtg/
Jednoduchý ale výkonný generátor sieťovej komunikácie. Od ostatných generátorov sa líši tým, že pre každá inštancia programu vytvára iba jeden prúd komunikácie, ktorý je popísaný iba pomocou argumentov príkazového riadku. Pracuje ako vysielač a prijímač TCP alebo UDP paketov. Prichádzajúce pakety môžu byť ukladané do logovacieho súboru a neskôr analyzované programom jtg_calc.
Program obsahuje nástroj jrg na vytváranie sérií náhodných čísiel, ktoré môžu byť potom použité ako vstup na definovanie veľkosti paketu a času medzi dvoma odoslanými paketmi. Nástroj pozná tieto rozdelenia pravdepodobnosti: rovnomerné, normálne, exponenciálne, gamma, Poissonove a mnohé ďalšie.
TrafGen
http://www-lor.int-evry.fr/%7Evincent/java/trafGen/trafGenEn.htm
Vysiela a prijíma rôzne typy komunikácie a meria výkonnosť siete. Generuje TCP, UDP, RTP, http a DNS komunikáciu medzi dvoma počítačmi. Vstupný tok paketov môže byť konštantný, poissonovský alebo paretov.
Program pracuje v prostredí Java VM a obsahuje aj grafické užívateľské prostredie.
Spak (Send PAcKet)
http://www.wittys.com/files/spak-0.6b.tar.gz
Kolekcia programov, ktorá môže byť použitá na vytváranie a posielanie paketov cez sieť. Obsahuje tieto moduly:
Makeip: vytvára ip paket
Maketcp: vytvára tcp paket
Makeudp: vytvára UDP paket
Makearp: vytvára ARP/RARP paket
Makeeth: vytvára ethernetový rámec
Sendpacket: posiela paket na soket
Sendeth: posiela ethernetový rámec
NETWORK THROUGHPUT TESTER (TTCP)
http://www.netcordia.com/tools/tools-ttcp.shtml
Nástroj v Jave, ktorý je určený na testovanie výkonnosti TCP prenosu.
Je to jednoduchý program, ktorý vysiela a prijíma TCP pakety.
KUTE — Kernel-based Traffic Engine
http://caia.swin.edu.au/genius/tools/kute/
Výkonný generátor a prijímač UDP komunikácie, zvyčajne používaný v Gigabit Ethernete.
Vysielač aj prijímač pracujú ako modul linuxového jadra, preto dokážu pracovať s vysokými rýchlosťami prenosu. Používa sa na testovanie rýchlosti hardvéru, ovládačov, smerovačov a switchov.
D-ITG, Distributed Internet Traffic Generator
http://www.grid.unina.it/software/ITG/index.php
Generátor komunikácie na sieti, ktorý podporuje veľké množstvo rozličných typov paketov. Podporované sú protokoly: TCP, UDP, ICMP, DNS, Telnet, VoIP (G.711, G.723, G.729, Voice Activity Detection, Compressed RTP).
Program umožňuje určiť rozdelenie pravdepodobnosti náhodnej premennej, vyjadrujúcej časový interval medzi vysielanými paketmi ako aj veľkosť paketu. Podporované rozdelenia sú: rovnomerné, exponenciálne, Peretovo, Cauchyho, normálne, Poissonove a Gamma rozdelenie. Umožňuje navyše určiť počiatočnú násadu generátora náhodných čísel, čo umožňuje uskutočniť rovnaké realizácie náhodnej premennej.
Program meria čas príchodu paketu, čas návratu paketu, podiel stratených paketov a rýchlosť prenosu.
Program je dostupný na platformách Linux aj Windows a obsahuje aj nadstavbu o grafické užívateľské prostredie napísané v Jave.
Článok vznikol ako semestrálna práca z predmetu Komunikačné počítače:
Peter Valjašek, 5ZA41,2005/2006
vedúci: Pavel Segeč