{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,19]],"date-time":"2026-01-19T07:40:44Z","timestamp":1768808444639,"version":"3.49.0"},"reference-count":17,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2023,1,1]],"date-time":"2023-01-01T00:00:00Z","timestamp":1672531200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"Ministry of Innovation and Technology of Hungary from the National Research, Development and Innovation","award":["2021-1.2.1-EIT-KIC"],"award-info":[{"award-number":["2021-1.2.1-EIT-KIC"]}]},{"name":"German Bundesministerium fur Bildung und Forschung"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGCOMM Comput. Commun. Rev."],"published-print":{"date-parts":[[2023,1]]},"abstract":"<jats:p>Throughput and latency critical applications could often benefit of performing computations close to the client. To enable this, distributed computing paradigms such as edge computing have recently emerged. However, with the advent of programmable data planes, computations cannot only be performed by servers but they can be offloaded to network switches. Languages like P4 enable to flexibly reprogram the entire packet processing pipeline. Though these devices promise high throughput and ultra-low response times, implementing application-layer tasks in the data plane programming language P4 is still challenging for an application developer who is not familiar with networking domain. In this paper, we first identify and examine obstacles and pain points one can experience when offloading server-based computations to the network. Then we present P4rrot, a code generator (in form of a library) which allows to overcome these limitations by providing a user-friendly API to describe computations to be offloaded. After discussing the design choices behind P4rrot, we introduce our proof-of-concept implementation for two P4 targets: Netronome SmartNIC and BMv2. To demonstrate the applicability of P4rrot, we investigate case studies in the context of publish-subscribe sensor data processing and real-time data streaming, supporting, in particular, MQTT-SN and MoldUDP packets.<\/jats:p>","DOI":"10.1145\/3594255.3594258","type":"journal-article","created":{"date-parts":[[2023,4,21]],"date-time":"2023-04-21T02:09:41Z","timestamp":1682042981000},"page":"30-37","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":8,"title":["P4RROT: Generating P4 Code for the Application Layer"],"prefix":"10.1145","volume":"53","author":[{"given":"Csaba","family":"Gy\u00f6rgyi","sequence":"first","affiliation":[{"name":"E\u00f6tv\u00f6s Lor\u00e1nd University, Hungary and University of Vienna, Austria"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"S\u00e1ndor","family":"Laki","sequence":"additional","affiliation":[{"name":"ELTE E\u00f6tv\u00f6s Lor\u00e1nd University, Hungary"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Stefan","family":"Schmid","sequence":"additional","affiliation":[{"name":"TU Berlin, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2023,4,20]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Tensorflow: A system for large-scale machine learning. In 12th {USENIX} symposium on operating systems design and implementation ({OSDI} 16). 265--283.","author":"Abadi Mart\u00edn","year":"2016","unstructured":"Mart\u00edn Abadi , Paul Barham , Jianmin Chen , Zhifeng Chen , Andy Davis , Jeffrey Dean , Matthieu Devin , Sanjay Ghemawat , Geoffrey Irving , Michael Isard , 2016 . Tensorflow: A system for large-scale machine learning. In 12th {USENIX} symposium on operating systems design and implementation ({OSDI} 16). 265--283. Mart\u00edn Abadi, Paul Barham, Jianmin Chen, Zhifeng Chen, Andy Davis, Jeffrey Dean, Matthieu Devin, Sanjay Ghemawat, Geoffrey Irving, Michael Isard, et al. 2016. Tensorflow: A system for large-scale machine learning. In 12th {USENIX} symposium on operating systems design and implementation ({OSDI} 16). 265--283."},{"key":"e_1_2_1_2_1","volume-title":"Towards Low Latency Industrial Robot Control in Programmable Data Planes. In 2020 6th IEEE Conference on Network Softwarization (NetSoft). IEEE, 165--169","author":"Rodriguez Cesen Fabricio E","year":"2020","unstructured":"Fabricio E Rodriguez Cesen , Levente Csikor , Carlos Recalde , Christian Esteve Rothenberg , and Gergely Pongr\u00e1cz . 2020 . Towards Low Latency Industrial Robot Control in Programmable Data Planes. In 2020 6th IEEE Conference on Network Softwarization (NetSoft). IEEE, 165--169 . Fabricio E Rodriguez Cesen, Levente Csikor, Carlos Recalde, Christian Esteve Rothenberg, and Gergely Pongr\u00e1cz. 2020. Towards Low Latency Industrial Robot Control in Programmable Data Planes. In 2020 6th IEEE Conference on Network Softwarization (NetSoft). IEEE, 165--169."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/MIC.2002.1036038"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2815675.2815692"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3230543.3230555"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3386367.3431315"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3132747.3132764"},{"key":"e_1_2_1_8_1","volume-title":"29th USENIX Security Symposium (USENIX Security 20)","author":"Kang Qiao","year":"2020","unstructured":"Qiao Kang , Lei Xue , Adam Morrison , Yuxin Tang , Ang Chen , and Xiapu Luo . 2020 . Programmable {In-Network} Security for Context-aware {BYOD} Policies . In 29th USENIX Security Symposium (USENIX Security 20) . 595--612. Qiao Kang, Lei Xue, Adam Morrison, Yuxin Tang, Ang Chen, and Xiapu Luo. 2020. Programmable {In-Network} Security for Context-aware {BYOD} Policies. In 29th USENIX Security Symposium (USENIX Security 20). 595--612."},{"key":"e_1_2_1_9_1","volume-title":"Deep learning with Python","author":"Ketkar Nikhil","unstructured":"Nikhil Ketkar . 2017. Introduction to keras . In Deep learning with Python . Springer , 97--111. Nikhil Ketkar. 2017. Introduction to keras. In Deep learning with Python. Springer, 97--111."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2014.2371999"},{"key":"e_1_2_1_11_1","volume-title":"Proceedings of 19th USENIX Symposium on Networked Systems Design and Implementation (NSDI'22)","author":"Laki S\u00e1ndor","year":"2022","unstructured":"S\u00e1ndor Laki , Csaba Gy\u00f6rgyi , J\u00f3zsef Pet\u0151 , P\u00e9ter V\u00f6r\u00f6s , and G\u00e9za Szab\u00f3 . 2022 . In-Network Velocity Control of Industrial Robot Arms . In Proceedings of 19th USENIX Symposium on Networked Systems Design and Implementation (NSDI'22) . S\u00e1ndor Laki, Csaba Gy\u00f6rgyi, J\u00f3zsef Pet\u0151, P\u00e9ter V\u00f6r\u00f6s, and G\u00e9za Szab\u00f3. 2022. In-Network Velocity Control of Industrial Robot Arms. In Proceedings of 19th USENIX Symposium on Networked Systems Design and Implementation (NSDI'22)."},{"key":"e_1_2_1_12_1","volume-title":"Proc. ACM Computing Surveys (CSUR).","author":"Michel Oliver","year":"2021","unstructured":"Oliver Michel , Roberto Bifulco , Gabor Retvari , and Stefan Schmid . 2021 . The Programmable Data Plane: Abstractions, Architectures, Algorithms, and Applications . In Proc. ACM Computing Surveys (CSUR). Oliver Michel, Roberto Bifulco, Gabor Retvari, and Stefan Schmid. 2021. The Programmable Data Plane: Abstractions, Architectures, Algorithms, and Applications. In Proc. ACM Computing Surveys (CSUR)."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3123878.3131985"},{"key":"e_1_2_1_14_1","unstructured":"P4Lang. 2015. Packet Test Framework. (2015). https:\/\/github.com\/p4lang\/ptf  P4Lang. 2015. Packet Test Framework. (2015). https:\/\/github.com\/p4lang\/ptf"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3452296.3472903"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1109\/ETFA.2018.8502456"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1109\/ANCS.2019.8901873"}],"container-title":["ACM SIGCOMM Computer Communication Review"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3594255.3594258","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3594255.3594258","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T16:38:11Z","timestamp":1750178291000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3594255.3594258"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,1]]},"references-count":17,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2023,1]]}},"alternative-id":["10.1145\/3594255.3594258"],"URL":"https:\/\/doi.org\/10.1145\/3594255.3594258","relation":{},"ISSN":["0146-4833"],"issn-type":[{"value":"0146-4833","type":"print"}],"subject":[],"published":{"date-parts":[[2023,1]]},"assertion":[{"value":"2023-04-20","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}