Steve - A Programming Language for Packet Processing
Institution: | University of Akron |
---|---|
Department: | |
Year: | 2016 |
Keywords: | Computer Science; software-defined networking; compiler; programming language; network switches |
Posted: | 02/05/2017 |
Record ID: | 2066363 |
Full text PDF: | http://rave.ohiolink.edu/etdc/view?acc_num=akron1467985307 |
Software-defined networking (SDN) aims to make network switches programmable to enable a class of intelligent networking applications that can automate network flow direction in ways that conventional switches cannot. We present Steve, a protocol-independent, domain-specific language (DSL) for writing these networking applications on SDN devices. Steve provides high-level language features for expressing protocol structure, decoding rules, forwarding decisions, packet manipulation, and event handling for reactive non-distributed control planes. These features define a packet processing pipeline – the algorithm used to make forwarding decisions.Steve solves two issues in SDN language development: safe packet access and safe pipeline composition. Vulnerabilities in an application running a network switch can be disastrous, therefore the Steve compiler is designed to catch potential errors. Steve uses a type and constraints system which enforces these safety guarantees. To verify our work, we produced a Steve language compiler which implements these safety guarantees. We also present four compilable Steve applications: a MAC and IPv4 learning switch, a stateless firewall, and a wire. These applications are tested with a runtime environment which provides Steve access to switch resources. Advisors/Committee Members: Sutton, Andrew (Advisor).