Program pro generování IP provozu

Autor: P. Hampl <hamplp(at)fel.cvut.cz>, České vysoké učení technické v Praze, FEL, Téma: Simulace sítí, Vydáno dne: 20. 12. 2010

Paketový generátor pro operační systém Linux je schopen generovat až deset paketových toků s uživatelem definovanými rozděleními velikostí paketů a dob mezi odesíláními jednotlivých paketů daných toků. Uživatel má částečnou kontrolu i nad záhlavími generovaných IP paketů a především nad polem Type of Service.

Program byl vyvinut v jazyce C++ a pro odesílání a příjem paketů využívá služeb knihovny libpcap. Program je možné stáhnout ze sekce Ke stažení po zaregistrování. Minimální hardwarové požadavky na program nejsou přesně definovatelné. Obecně závisejí na požadované rychlosti generovaného datového toku, na počtu generovaných toků, použitých rozdělení velikostí paketů i z doby mezi odesláními. Pro generování 100Mbit/s by měl stačit počítač s x86 procesorem taktovaným na 2GHz a operační pamětí 256MB. Objektivním požadavkem jsou však 2 ethernetové síťové karty.

Minimální požadavky na software jsou:

Instalace programu

Program vyextrahujeme z archivu do libovolného umístění v počítači. Program je zkompilován pro mikroprocesory x86 - 32b. a 64b.. Před tím, než program spustíme, je nutné mít nainstalovanou knihovnu libpcap pro spouštění aplikací, které tuto knihovnu používají. Instalace knihovny se provede následovně:

sudo apt-get install libpcap0.8

Pokud tato knihovna není v repozitáři distribuce, je možné zkusit odkomentovat zdroje třetích stran nebo použít nástroj s grafickým rozhraním synaptic.

Provozování programu

Paketový generátor se spouští s administrátorskými právy, například takto:

sudo ./trafficgenerator

nebo s parametrem pro načtení vstupních dat ze souboru:

sudo ./trafficgenerator input.cfg

Po spuštění se program první zeptá, která rozhraní může používat. V příkazovém řádku to vypadá následovně:

V systemu byla nalezena nasledujici sitova rozhrani:
1. eth0
2. eth1
3. usbmon1
4. usbmon2
5. usbmon3
6. any

Uživatel je vyzván, aby si vybral, které zařízení bude použito jako odesílací a které jako přijímací:

Zadejte cislo rozhrani, ktere chcete pouzivat jako odchozi:
Zadejte cislo rozhrani, ktere chcete pouzivat jako prichozi:

Po zadání používaných rozhraní je uživatel požádán, aby si vybral, kterou operaci chce provést:

Vyberte pozadovanou operaci:
1. test propustnosti
2. test ztratovosti a zpozdeni

Další průběh programu již záleží na zvolené operaci. V případě testování propustnosti je uživatel vyzván k zadání Type of Service (dekadicky) a cílové MAC adresy generovaných rámců (hexadecimálně). Jako oddělovače v MAC adrese jsou povolené dvojtečky a pomlčky.

V případě, že se uživatel rozhodne pro operaci testování ztrátovosti a zpoždění, tak uživatel musí zadat cílovou MAC adresu, která bude pro všechny generované paketové toky shodná. Dále musí zadat počet generovaných toků a následně parametry pro každý generovaný tok: Type of Service, rozdělení velikotí paketů a jeho parametry a rozdělení dob mezi odesíláními a jeho parametry. V příkazovém řádku situace vypadá následovně:

Rozdeleni velikosti paketu toku 0:
0. konstantni
1. rovnomerne
2. normalni
3. exponencialni
4. hyperexponencialni
5. Pareto
6. Weibullovo
7. Erlangovo

Zadejte stredni hodnotu velikosti paketu toku:
Zadejte rozptyl velikosti paketu toku:
rozdeleni dob mezi odeslanimi toku 0:
0. konstantni
1. rovnomerne
2. normalni
3. exponencialni
4. hyperexponencialni
5. Pareto
6. Weibullovo
7. Erlangovo

Zadejte hodnotu doby mezi odeslanim paketu:
TOS streamu 2:
Rozdeleni velikosti paketu toku 1:
0. konstantni
1. rovnomerne
2. normalni
3. exponencialni
4. hyperexponencialni
5. Pareto
6. Weibullovo
7. Erlangovo

Zadejte stredni hodnotu velikosti paketu toku:
Rozdeleni dob mezi odeslanimi toku 1:
0. konstantni
1. rovnomerne
2. normalni
3. exponencialni
4. hyperexponencialni
5. Pareto
6. Weibullovo
7. Erlangovo

Zadejte stredni hodnotu doby mezi odeslanim paketu:
.
.
.

Po zadání všech parametrů je zahájeno samotné generování paketů, které trvá několik sekund. Po jeho skončení se uživateli zobrazí statistika provedeného testu, která může pro operaci testování propustnosti vypadat například takto:

Tok 1: prijato 89144 paketu z 89217, ztratovost 0.081823%, celkem 134072576 B, prumerna rychlost 11.7298 [MB/s], min zpozdeni 469us, max zpozdeni 11975us, prumerne zpozdeni 6976.41us

V případě operace testování ztrátovosti a zpoždění paketů může výstup vypadat například takto:

Tok 1: prijato 60776 paketu z 62375, ztratovost 2.56353%, celkem 64155961 B, prumerna rychlost 5.8617 [MB/s], min zpozdeni 220us, max zpozdeni 7129us, prumerne zpozdeni 660.149us Tok 2: prijato 537670 paketu z 555716, ztratovost 3.24734%, celkem 32260200 B, prumerna rychlost 2.94682 [MB/s], min zpozdeni 48us, max zpozdeni 12710us, prumerne zpozdeni 700.914us

Vstupní parametry pro generátor IP provozu můžeme zadat i pomocí vstupního souboru. Tento způsob zadávání je vhodný především pro testy spouštěné prostřednictvím skriptů, kdy je třeba provést několik testů s odlišnými parametry v sérii za sebou. V případě zájmu o podrobnosti o tomto způsobu zadávání vstupních parametrů nás prosím prostřednictvím emailu kontaktujte.