A practical bytecode interpreter for programmable routers on IXP network processors
WASP is a programmable router platform that allows end-hosts to store ephemeral state in routers along the path of IP flows and to execute packet-attached bytecode that processes this data. We exploit lessons from past active network research and our knowledge of network processors to design a minimal interpreter that favours language restrictions over run-time checks. WASP provides safety with limited performance penalty through predictable execution time and bounded usage of memory and network resources. WASP is expressive enough to enable several applications including statistics collection and service discovery. It can also detect common trunk of two Internet paths and exchange local measurements about these paths. We propose a robust implementation on the IXP2400 network processor, and evaluate its performance through short benchmark programs against native functions hard-coded in the router. We achieve latencies below 7 ? s , i.e. less than the reference IPv4 forwarding latency, and throughputs approaching 800kpps per core, which competes with, and sometimes even outperforms, native programs. We further exploit our results to give hints on further improving resource usage and guidelines on management of ephemeral stores in high-speed networks.
bytecode programmable router network processor performance analysis