Grzegorz Sułkowski, Maciej Twardy, Kazimierz Wiatr Wykorzystanie układów FPGA w implementacji systemów bezpieczeństwa sieciowego typu Firewall
Plan prezentacji 1. Architektura Firewall a załoŝenia 2. Punktu optymalizacji wydajności 3. Komunikacja sieciowa, wielościeŝkowość, tory transmisyjne 4. Klasyfikator pakietów 5. Wyniki implementacji 6. Dalsze kierunki prac
Klasyfikacja systemów Firewall
Architektura Firewall a ZałoŜenia projektowe dla sprzętowego Firewall a: 1. DuŜy poziom bezpieczeństwa przetwarzania danych. Sprzętowa realizacja Firewall a niweluje zagroŝenia wynikające z błędów w oprogramowaniu. 2. Maksymalizacja wydajności. Programowy Firewall klasyfikuje pakiety przetwarzając sekwencyjnie tablicę reguł bezpieczeństwa. Jak w tej sytuacji zwiększyć wydajność jego sprzętowej implementacji?
Punkty optymalizacji wydajności 1. Sprzętowa obsługa komunikacji sieciowej 2. WielościeŜkowe przetwarzanie strumieni danych 3. Potokowość 4. Efektywne klasyfikowanie pakietów
Komunikacja sieciowa Dedykowane karty interfejsów sieciowych Sprzętowa obsługa komunikacji w standardzie Ethernet 802.3
WielościeŜkowość NIC karty interfejsów sieciowych MAC moduł sprzętowego kontrolera sieci Ethernet FW moduł klasyfikatora pakietów Router moduł zarządzający trasami ruchu pakietów RAM pamięć reguł bezpieczeństwa
Pojedynczy tor transmisyjny Transmisja pomiędzy urządzeniem źródłowym a docelowym odbywa się w dedykowanym kanale komunikacyjnym. W kaŝdym kierunku transmisji pakiety są analizowane przez oddzielne moduły klasyfikujące (bloki FW).
Potokowość W celu zapewnienia potokowego przetwarzania danych zaimplementowano specjalne mechanizmy buforujące przetwarzane ramki sieciowe
Buforowanie ramek Dane Sygnały sterujące
Buforowanie ramek - implementacja Wyniki implementacji modułu buforującego ramki Zajętość zasobów układowych Virtex II Pro XC2VP30-7 Liczba wykorzystanych elementów Utylizacja procentowa Number of Slices 222 z dostępnych 13696 1% Number of Slice Flip Flops 260 z dostępnych 27392 1% Number of 4 input LUTs 409 z dostępnych 27392 1% Number of BRAMs 70 z dostępnych 136 51% Orientacyjna maksymalna częstotliwość pracy: 350 MHz
Klasyfikacja pakietów Nr. Adres źródłowy Adres docelowy Protokół Port źródłowy Port docelowy 1 * 192.168.0.1 tcp * 21 2 192.168.2.0/24 192.168.0.0/24 * * 5000:5010 3 192.168.0.0/24 192.168.0.5 udp * 53 4 192.168.0.7 192.168.0.6 tcp * 22 5 * * tcp 20 6000:6330
Klasyfikacja pakietów Zwiększenie szybkości klasyfikowania pakietów wymaga zastosowania specjalnych rozwiązań, pozwalających na wykorzystanie potencjału logiki reprogramowalnej. 1. Analiza adresów sieciowych oparta o pamięci TCAM (Ternary CAM). 2. Analiza zakresów portów oparta o drzewa binarne. 3. Proces klasyfikacji wspomagany pamięciami podręcznymi (cache).
Schemat blokowy klasyfikatora
Struktura elementu filtrującego Łańcuch komparatorów zakresów cząstkowych
Filtr adresów sieciowych
Struktura pamięci TCAM Implementacja sprzętowa
Porównanie pamięci TCAM Pamięć TCAM o pojemności 88 bitów x 32 wiersze Układ Virtex II Pro XC2VP30-7 Pamięć TCAM oparta o RAM16X1S Xilinx COREGenerator TCAM Liczba bloków Slice 810 (5%) 1795 (13%) Maksymalna częstotliwość pracy pamięci TCAM Minimalny czas ustalenia sygnału wejściowego przed zmianą zegara Maksymalny czas ustalenia sygnału wyjściowego po zmianie zegara Współczynnik liczby bloków Slice na pojedynczy wiersz TCAM Maksymalna częstotliwość pracy modułu filtrującego 257,7 MHz 130,4 MHz 6,121 ns 7,977 ns 3,293 ns 3,461 ns 25,3 56,1 163 MHz 125 MHz
Klasyfikator - implementacja Wyniki implementacji klasyfikatora pakietów dla 32 reguł Zajętość zasobów układowych Virtex II Pro XC2VP30-7 Liczba wykorzystanych elementów Utylizacja procentowa Number of Slices 2771 z dostępnych 13696 20% Number of Slice Flip Flops 206 z dostępnych 27392 0,7% Number of 4 input LUTs 3360 z dostępnych 27392 12% Number of RAM16X1D 896 - Number of RAM16X1S 704 - Orientacyjna maksymalna częstotliwość pracy: 160 MHz Liczba bloków Slice przypadająca na pojedynczą regułę: 86
Klasyfikator - wydajność Czas trwania weryfikacji pakietu Przełączenie wskaźnika na tor 0 Zakończenie klasyfikacji Zakończenie zapisu do pamięci ramkowej Zgłoszenie deskryptora toru 0 5 taktów zegara sys_clk 3 takty zegara sys_clk CAŁKOWITY CZAS KLASYFIKACJ: 8 taktów zegara sys_clk Całkowity czas weryfikacji pakietu w klasyfikatorze wykorzystującym kolejkowanie Round-Robin wynosi 8 taktów zegara sys_clk. Przy maksymalnej częstotliwości pracy wynoszącej 160 MHz klasyfikator osiąga wydajność 20 mln pakietów na sekundę.
Dalsze kierunki prac Optymalizacja modułu klasyfikatora pakietów 1. Realizacja weryfikacji adresacji sieciowej w oparciu o pamięci TCAM 2. Wykorzystanie drzew binarnych do identyfikacji zakresów portów źródłowych i docelowych 3. Poszukiwanie efektywnego algorytmu pracy pamięci cache wspomagającej proces klasyfikacji 4. Minimalizacja zajętości pamięci: kolejek FIFO buforów ramkowych
Dziękuję za uwagę!