VPP (aka Vector Packet Processing) is a fast network stack running in Linux userspace.
It is designed to handle packets with high performance, which makes gathering statistics efficiently a must have.
The model that has been chosen in VPP to provide up to date statistics is built upon shared memory and optimistic locking.
The counters are updated in this shared memory at a rather low cost by the data plane and can be read out at almost any time by all the consumers.
We will first describe this model in more details.
The consumption of these stats may take various forms depending on the use case and the application needs.
That's why we have developed different high-level components to access them:
1) A filesystem in userspace: thanks to go-fuse, we can mount a filesystem ordering statistics in folders and files, in a similar fashion to '/proc' in Linux
2) A Prometheus agent: applied to Calico/VPP, a new dataplane for Calico - the popular cloud native Kubernetes network plugin - based on VPP. Prometheus is integrated as a monitoring tool in order to export our statistics in the form of real-time metrics collected from targets. Metrics come from our pod interfaces statistics, and targets are Calico/VPP agents running on our Kubernetes cluster nodes.
During the presentation, you will have a quick demo of these components.