  Recent advances in TCP congestion control (CC) have achieved tremendous
success with deep reinforcement learning (RL) approaches, which use feedforward
neural networks (NN) to learn complex environment conditions and make better
decisions. However, such "black-box" policies lack interpretability and
reliability, and often, they need to operate outside the traditional TCP
datapath due to the use of complex NNs. This paper proposes a novel two-stage
solution to achieve the best of both worlds: first to train a deep RL agent,
then distill its (over-)parameterized NN policy into white-box, light-weight
rules in the form of symbolic expressions that are much easier to understand
and to implement in constrained environments. At the core of our proposal is a
novel symbolic branching algorithm that enables the rule to be aware of the
context in terms of various network conditions, eventually converting the NN
policy into a symbolic tree. The distilled symbolic rules preserve and often
improve performance over state-of-the-art NN policies while being faster and
simpler than a standard neural network. We validate the performance of our
distilled symbolic rules on both simulation and emulation environments. Our
code is available at https://github.com/VITA-Group/SymbolicPCC.
