Deep Payload Inspection systems som SNORT och BRO använder reguljärt uttryck för sina regler på grund av deras höga uttrycklighet och kompaktitet. SNORT-IDS-systemet använder PCRE-motorn för reguljärt uttryck som matchar nyttolasten. Den programvarubaserade PCRE Engine använder en NFA-motor baserad på vissa opcodes som bestäms av de reguljära uttryck operatörer i en regel. Varje regel i SNORT-reglerna översätts av PCRE-kompilatorn till en unik motor med reguljärt uttryck. Eftersom den programvarubaserade PCRE-motorn kan matcha nyttolasten med ett enda reguljärt uttryck åt gången, och måste göra det för flera regler i regeluppsättningen, minskar genomströmningen av SNORT IDS-systemet när varje paket bearbetas genom en mängd reguljära uttryck. I detta dokument beskriver vi vår implementering av maskinvarubaserade reguljära uttryck motorer för SNORT IDS genom att omvandla PCRE opcodes som genereras av PCRE kompilatorn från SNORT reguljära uttrycksregler. Vår kompilator genererar VHDL-kod som motsvarar de opcodes som genereras för SNORT reguljära uttrycksregler. Vi har justerat vår maskinvaruimplementering för att använda en NFA-baserad reguljär expression motor, med hjälp av giriga kvantifiers, på ungefär samma sätt som den programvarubaserade PCRE-motorn. Vårt system implementerar ett reguljärt uttryck endast en gång för varje ny regel i SNORT-reglerna, vilket resulterar i ett snabbt system som skalar väl med nya uppdateringar. Vi implementerar två hundra PCRE motorer baserade på en uppsjö av SNORT IDS regler, och använda en Virtex-4 LX200 FPGA, på SGI RASC RC 100 Blade ansluten till SGI ALTIX 4700 supercomputing system som en testbädd. Vi får en gränssnittsgenomströmning på (12,9 GBits/s) och även en maximal hastighetshöjning på 353X över programvarubaserad PCRE-utförande.
En Perl Compatible Regular Expression (PCRE) kompilator som omvandlar regexts från Snort regeluppsättningen till PCRE opcodes genomfördes i REF.
Compiling PCRE to FPGA for accelerating SNORT IDS
{'venue': "ANCS '07", 'journal': None, 'mag_field_of_study': ['Computer Science']}