  Programmable data planes allow for sophisticated applications that give
operators the power to customize the functionality of their networks. Deploying
these applications, however, often requires tedious and burdensome optimization
of their layout and design, in which programmers must manually write, compile,
and test an implementation, adjust the design, and repeat. In this paper we
present Parasol, a framework that allows programmers to define general,
parameterized network algorithms and automatically optimize their various
parameters. The parameters of a Parasol program can represent a wide variety of
implementation decisions, and may be optimized for arbitrary, high-level
objectives defined by the programmer. Furthermore, optimization may be tailored
to particular environments by providing a representative sample of traffic. We
show how we implement the Parasol framework, which consists of a sketching
language for writing parameterized programs, and a simulation-based optimizer
for testing different parameter settings. We evaluate Parasol by implementing a
suite of ten data-plane applications, and find that Parasol produces a solution
with comparable performance to hand-optimized P4 code within a two-hour time
budget.
