p4lang / p4c

P4_16 reference compiler

Home Page:https://p4.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

eBPF: don't create 2 BPF maps for each table - don't create separate default action table

Trigary opened this issue · comments

Currently, the eBPF compiler creates 2 BPF maps for each P4 table, where the second table is used just for the default action. This is sub-ideal when we consider the MAX_USED_MAPS BPF verifier constant: the current Linux kernel only allows defining at most 64 BPF maps [1] [2].

Creating 2 BPF maps per P4 table halves the maximum count of P4 tables that can be defined. To demonstrate, the limit of 64 BPF maps can be reached by defining e.g. 28 tables and 8 registers in the P4 source code.