BPF Maps
Revision as of 10:33, 24 October 2020 by Abhishekvijeev (talk | contribs)
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 argumentBPF_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