Zarówno w filtrze GlaDDoS, jak i w sondzie Aperture mamy potrzebę wyciągania informacji typu „jaka konfiguracja aplikuje się dla danego adresu IP”. Często dodatkowo niezbędne jest wykorzystanie „Longest Prefix Match”: tj. konfiguracja dla 1.2.0.0/24 ma mniejszy priorytet niż 1.2.3.0/28, jeśli pytamy o 1.2.3.1, ale aplikuje się do zapytania o 1.2.4.4. Czasem chcemy znać wszystkie aplikujące się konfigurację (czyli dla 1.2.3.1 zarówno 1.2.3.0/28 jak i 1.2.0.0/24).

Rozwiązania sprzętowe tego problemu to często dość droga pamięć typu TCAM. My jednak tworzymy rozwiązanie czysto software’owe. Często stosowany algorytm rozwiązujący ten problem to LCTrie. My używamy prostego algorytmu TriTrie, który w praktyce dla małych zbiorów danych działa szybciej od znalezionej implementacji referencyjnej LCTrie. Do tego daje się łatwo rozszerzać, dzięki czemu działa dla:

  • IPv4 oraz IPv6,
  • longest-prefix-match jak i „all match”,
  • małych danych konfiguracyjnych (tysiące wpisów) jak i GeoIP (pokrywające całą przestrzeń IPv4).

TriTrie jest generowana statycznie a później nie jest już modyfikowana. Tam gdzie potrzebujemy trzymać dynamiczną listę adresów, a kod musi być wydajny i nie można używać locków (czyli np. nie można alokować pamięci), używamy bloomfiltrów, w których dodanie adresu IP sprowadza się do ustawienia niektórych bitów na wartość 1. Bloomfiltry mogą przy odczycie powodować błędy typu false positive, więc nie wszędzie da się je zastosować. Nie można z nich za to usuwać dodanych adresów, więc co jakiś czas są zmieniane i wymieniane na nowe, zupełnie czyste.