400 Gb/s Programmable Packet Parsing on a Single FPGA

Abstract

Packet parsing is necessary at all points in the modern networking infrastructure, to support packet classification and security functions, as well as for protocol implementation. Increasingly high line rates call for advanced hardware packet processing solutions, while increasing rates of change call for high-level programmability of these solutions. This paper presents an approach for harnessing modern Field Programmable Gate Array (FPGA) devices, which are a natural technology for implementing the necessary high-speed programmable packet processing. The paper introduces PP: a simple high-level language for describing packet parsing algorithms in an implementation-independent manner. It demonstrates that this language can be compiled to give high-speed FPGA-based packet parsers that can be integrated alongside other packet processing components to build network nodes. Compilation involves generating virtual processing architectures tailored to specific packet parsing requirements. Scalability of these architectures allows parsing at line rates from 1 to 400 Gb/s as required in different network contexts. Run-time programmability of these architectures allows dynamic updating of parsing algorithms during operation in the field. Implementation results show that programmable packet parsing of 600 million small packets per second can be supported on a single Xilinx Virtex-7 FPGA device handling a 400 Gb/s line rate.

DOI: 10.1109/ANCS.2011.12

Extracted Key Phrases

9 Figures and Tables

01020201220132014201520162017
Citations per Year

53 Citations

Semantic Scholar estimates that this publication has 53 citations based on the available data.

See our FAQ for additional information.

Cite this paper

@article{Attig2011400GP, title={400 Gb/s Programmable Packet Parsing on a Single FPGA}, author={Michael Attig and Gordon J. Brebner}, journal={2011 ACM/IEEE Seventh Symposium on Architectures for Networking and Communications Systems}, year={2011}, pages={12-23} }