BPF Maps

From CRIU
Revision as of 03:37, 14 November 2020 by Kir (talk | contribs) (formatting)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

BPF maps are kernel objects which store data (used by BPF programs) in the form of key-value pairs. Applications access BPF maps using file descriptors. C/R of BPF maps involves serializing their meta-data and data:

Meta-data - This includes information such as map type, key size, value size, etc. CRIU obtains this information from the proc filesystem and using the bpf system call with argument BPF_OBJ_GET_INFO_BY_FD.
Data - This is the map's contents, i.e. the actual key-value pairs. CRIU relies on batch operations to read (BPF_MAP_LOOKUP_BATCH) key-value pairs from maps during the checkpoint stage and to write (BPF_MAP_UPDATE_BATCH) them during the restore phase.

Support for BPF Maps

CRIU currently supports C/R of the following BPF map types:

  • BPF_MAP_TYPE_HASH
  • BPF_MAP_TYPE_ARRAY

To-Do

  • C/R of BTF (BPF Type Format) information
  • C/R of other kinds of BPF maps

External Links