Language-Directed Hardware Design for Network Performance Monitoring

Network performance monitoring today is restricted by existing
switch support for measurement, forcing operators to rely heavily on
endpoints with poor visibility into the network core. Switch vendors
have added progressively more monitoring features to switches, but
the current trajectory of adding specific features is unsustainable
given the ever-changing demands of network operators. Instead,
we ask what switch hardware primitives are required to support an
expressive language of network performance questions. We believe
that the resulting switch hardware design could address a wide
variety of current and future performance monitoring needs.

We present a performance query language, Marple, modeled on familiar functional constructs like map, filter, groupby, and zip. Marple
is backed by a new programmable key-value store primitive on
switch hardware. The key-value store performs flexible aggregations
at line rate (e.g., a moving average of queueing latencies per flow),
and scales to millions of keys. We present a Marple compiler that
targets a P4-programmable software switch and a simulator for high-speed programmable switches. Marple can express switch queries
that could previously run only on end hosts, while Marple queries
only occupy a modest fraction of a switch’s hardware resources.