An FPGA Coarse Grained Intermediate Fabric for Regular Expression Search
Title | An FPGA Coarse Grained Intermediate Fabric for Regular Expression Search |
Publication Type | Conference Paper |
Year of Publication | 2017 |
Authors | Luinaud, Thomas, Savaria, Yvon, Langlois, J.M. Pierre |
Conference Name | Proceedings of the on Great Lakes Symposium on VLSI 2017 |
Publisher | ACM |
Conference Location | New York, NY, USA |
ISBN Number | 978-1-4503-4972-7 |
Keywords | deep packet inspection, FPGA, IDS, overlay, pubcrawl, regular expression, resilience, Resiliency, Scalability |
Abstract | Deep Packet Inspection systems such as Snort and Bro express complex rules with regular expressions. In Snort, the search of a regular expression is performed with a Non-deterministic Finite Automaton (NFA). Traversing an NFA sequentially with a CPU is not deterministic in time, and it can be very time consuming. The sequential traversal of an NFA with a CPU is not deterministic in time consequently it can be time consuming. A fully parallel NFA implemented in hardware can search all rules, but most of the time only a small part is active. Furthermore, a string filter determines the traversal of an NFA. This paper proposes an FPGA Intermediate Fabric that can efficiently search regular expressions. The architecture is configured for a specific NFA based on a partial match of a rule found by the string filter. It can thus support all rules from a set such as Snort, while significantly reduce compute resources and power con-sumption compared to a fully parallel implementation. Multiple parameters can be selected to find the best tradeoff between resource consumption and the number and types of supported expressions. This architecture was implemented on a Xilinx R XC7VX1140 Virtex-7. The reported implementation, can sustain up to 512 regular expressions, while requiring 2% of the slices and 16% of the BRAM resources, for a throughput of 200 million characters per second. |
URL | http://doi.acm.org/10.1145/3060403.3060429 |
DOI | 10.1145/3060403.3060429 |
Citation Key | luinaud_fpga_2017 |