ABSTRACT
Domain-specific languages for network packet processing applications emphasize representing domain entities, such as packet protocol headers, and emphasize program speed, due to the relentless increase in packet transmission rates. In addition to these concerns, packetC makes app reliability a major aspect of its design, not least because in a single second a silent programming error can send a million packets into oblivion or send sensitive information to inappropriate destinations. Our contributions to constructing a reliable packet processing language are: (1) overhauling C-style structure bitfields to eliminate ambiguity, (2) constraining enumeration variables to guarantee type-safe properties, (3) providing novel reference variables for databases and regex sets and doing so in a way in which they cannot be dereferenced to inappropriate objects, and (4) offering a coercive try/catch exception handling scheme to ensure that system-thrown exceptions are wrapped within a try/catch structure for exception handling. In a broad sense our contribution is making reliability a central design criterion in designing a DSL for packet processing, an application domain in which performance has gotten much more attention.
- Gannon, J. and Horning, J. 1975. Language design for programming reliability. IEEE Trans. Software Engineering. SE-1, 2 (1975), 179--191. Google ScholarDigital Library
- Gannon, J. and Horning, J. (1975). The impact of language design on the production of reliable software. ACM SIGPLAN Notices. 10, 10--22. Google ScholarDigital Library
- Duncan R. and Jungck P. 2009. packetC language for high performance packet processing. In Proceedings of the 11th IEEE Intl. Conf. High Performance Computing and Communications, (Seoul, South Korea, June 25--27, 2009), 450--457. Google ScholarDigital Library
- Jungck, P., Duncan, R. and Mulcahy, D. 2011. packetC Programming. Apress, New York, NY.Google Scholar
- Avizienis, A., Laprie, J-C., Randell, B. and Landwehr, C. (2004). Basic concepts and taxonomy of dependable and secure computing. IEEE Trans. Dependable and Secure Computing. 1, 1, (2004) 1--23. Google ScholarDigital Library
- Musa J. 1999. Software Reliability Engineering. McGraw-Hill, New York, NY. Google ScholarDigital Library
- Musa J., Iannino A. and Okumoto K. 1987, Software Reliability: Measurement, Prediction, Application, McGraw-Hill, New York, NY. Google ScholarDigital Library
- ISO/IEC 9899:1999. 2005. Standard for the C programming language ("C99," May 2005 version).Google Scholar
- ANSI X3.159--1989, 1989. Programming language C. ('Std. C').Google Scholar
- Duncan R., Jungck P., Ross K. and Mulcahy, D. 2012. Reference variables for dynamic, reliable packet operations. In Proceedings of the 9th IFIP Intl. Conf. on Network and Parallel Computing, (Gwangju, South Korea, September 6--8, 2012), 48--60.Google ScholarCross Ref
- Duncan R., Jungck, P. and Ross, K. 2010. packetC language and parallel processing of masked databases. In Proceedings of the 39th Intl. Conf. on Parallel Processing, (San Diego, USA, September 13--16, 2010), 472--481. Google ScholarDigital Library
- Duncan, R., Jungck, P., Ross, K. and Tillman, S. 2010. Packet Content matching with packetC searchsets. In Proceedings of the 16th Intl. Conf. on Parallel and Distributed Systems, (Shanghai, China, December 8--10, 2010), 180--188. Google ScholarDigital Library
- Stroustrup B. 2013. The C++ Programming Language" (Fourth edition), Addison-Wesley, New York, NY. Google ScholarDigital Library
- Intel® 2001. Microengine C Networking Library for the IXP 1200 Network Processor. Intel Corporation, Reference Guide, (December, 2001).Google Scholar
- George L. and Blume M. 2003. Taming the IXP network processor. In Proceedings of the ACM SIGPLAN '03 Conference on Programming Language Design and Implementation (San Diego, California, USA, June 2003) ACM, 26--37. Google ScholarDigital Library
- P4 Language Consortium. 2017. P416 Language Specification, version 1.0.0, (May 22, 2017). https://p4.org/p4-spec/docs/P4-16-v1.0.0-spec.pdf, retrieved May 31, 2018.Google Scholar
Index Terms
- Designing Packetc Programming Language for Reliable Network Apps
Recommendations
Definitional Interpreters for Higher-Order Programming Languages
Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Definitional interpreters for higher-order programming languages
ACM '72: Proceedings of the ACM annual conference - Volume 2Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters which are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Analysis on packet resequencing for reliable network protocols
Packets are sometimes disordered in the network. Reliable protocols such as TCP require packets to be accepted, i.e., delivered to the receiving application, in the order they are transmitted at the sender. In order to do so, the receiver's transport ...
Comments