\chapter{Úvod}
Filtrování síťového provozu je jednou ze základních bezpečnostních technik
v počítačových sítích. Zatímco v~dřívějších dobách, kdy rychlosti připojení
dosahovaly několika stovek kilobitů až jednotek megabitů za sekundu,
nebyl problém s~filtrováním na běžně dostupném hardwaru a softwaru, v~dnešní
době, kdy připojení nezřídka dosahují rychlosti několika desítek až stovek
megabitů za sekundu (ale samozřejmě i~více), začíná být stále palčivější
otázkou, jaký hardware (a případně software) zvolit tak, aby se samotný
firewall nestal úzkým hrdlem sítě. Většinou se to řeší použitím
nějakého proprietárního hardwarového zařízení, které obsahuje různé speciální čipy
(např. ASIC, FPGA atd.) a pro které výrobce garantuje určitou datovou propustnost.
Bohužel je takovéto řešení většinou drahé a nemusí poskytovat dostatečnou
flexibilitu, kterou zákazník žádá. Problém s~běžně dostupným hardwarem a
softwarem je ten, že nejsou pro tento typ úlohy optimalizovány. Pro příklad
je možné uvést jádro Linux, jímž se tato práce zabývá. Linux je univerzální
jádro operačního systému, jenž může běžet na hardwaru velikosti USB flash
disku nebo také sálového superpočítače. Může sloužit od jednoúčelového sběru dat
ze senzoru přes ovládání mobilního telefonu či osobního počítače až k~provozu
serverových aplikací nebo ke zpracování náročných výpočtů. A~samozřejmě k~filtrování síťového provozu. Ovšem na žádnou tuto činnost není úzce profilován,
a proto ji dokáže provádět s~určitými limity. Díky otevřenosti zdrojových kódů
a dobré dokumentaci však lze linuxové jádro upravit tak, aby určitý typ úlohy
zpracovávalo lépe než jádro neupravené. To je i~hlavním úkolem této práce: nalézt,
vyzkoušet a porovnat nástroje a knihovny, které za pomoci Linuxu
dokáží filtrovat procházející síťový provoz, a to nejlépe až do datové
propustnosti 10 Gbit/s. Tato činnost by měla být ideálně zcela transparentní,
tedy pracovat na linkové vrstvě (L2) referenčního modelu ISO OSI.

První část práce se věnuje obecně firewallům. Vysvětluje, co to
je firewall, do jakých skupin a podle jakých kritérií lze firewally dělit, i~to,
do kterých částí sítě se firewall obvykle nasazuje.

Další část pojednává o~možnostech filtrace síťového provozu v~Linuxu. Zaměřuje
se hlavně na nástroje a knihovny, které slouží k~vysokorychlostnímu zpracování
síťových dat.

Poslední částí práce je samotné praktické zpracování tématu, tedy představení
testovacího prostředí a testovacích metod, odůvodnění výběru nástrojů či knihoven,
které budou v~testovacím prostředí odzkoušeny, a samozřejmě uvedení naměřených
výsledků a jejich vyhodnocení.

Ačkoliv je v~zadání napsáno, že by výsledná implementace měla být optimalizována
minimálně pro 10Gbit/s linku, v~průběhu zpracovávání práce byla po určitý čas dostupná
infrastruktura \uv{jen} pro rychlost 10 Gbit/s, a tudíž mohla být vyzkoušena filtrace
maximálně na této rychlosti. Pro vyšší přenosové rychlosti nebylo k~dispozici potřebné vybavení. Obdobně
to platí pro agregaci síťových rozhraní, kdy bylo možné vyzkoušet agregaci jen
pro dvě 1Gbit/s rozhraní (tedy do propustnosti 2 Gbit/s).
