[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

The Programmable Data Plane: Abstractions, Architectures, Algorithms, and Applications

Published: 03 May 2021 Publication History

Abstract

Programmable data plane technologies enable the systematic reconfiguration of the low-level processing steps applied to network packets and are key drivers toward realizing the next generation of network services and applications. This survey presents recent trends and issues in the design and implementation of programmable network devices, focusing on prominent abstractions, architectures, algorithms, and applications proposed, debated, and realized over the past years. We elaborate on the trends that led to the emergence of this technology and highlight the most important pointers from the literature, casting different taxonomies for the field, and identifying avenues for future research.

References

[1]
Martin Abadi, Paul Barham, Jianmin Chen, Zhifeng Chen, Andy Davis, Jeffrey Dean, Matthieu Devin, Sanjay Ghemawat, Geoffrey Irving et al. 2016. TensorFlow: A system for large-scale machine learning. In OSDI’16. USENIX.
[2]
Andrei Alexandru Agape, Madalin Claudiu Danceanu, Rene Rydhof Hansen, and Stefan Schmid. 2021. P4Fuzz: Compiler fuzzer for dependable programmable dataplanes. In ICDCN’21. ACM.
[3]
Mohammad Al-Fares, Sivasankar Radhakrishnan, Barath Raghavan, Nelson Huang, and Amin Vahdat. 2010. Hedera: Dynamic flow scheduling for data center networks. In NSDI’10. USENIX.
[4]
Omid Alipourfard and Minlan Yu. 2018. Decoupling algorithms and optimizations in network functions. In HotNets’18. ACM.
[5]
Mohammad Alizadeh, Tom Edsall, Sarang Dharmapurikar, Ramanan Vaidyanathan, Kevin Chu, Andy Fingerhut et al. 2014. CONGA: Distributed congestion-aware load balancing for datacenters. In SIGCOMM’14. ACM.
[6]
Noga Alon, Yossi Matias, and Mario Szegedy. 1996. The space complexity of approximating the frequency moments. In STOC’96. ACM.
[7]
Carolyn Jane Anderson, Nate Foster, Arjun Guha, Jean-Baptiste Jeannin, Dexter Kozen, Cole Schlesinger, and David Walker. 2014. NetKAT: Semantic foundations for networks. In POPL’14. ACM.
[8]
Gianni Antichi, Theophilus Benson, Nate Foster, Fernando M. V. Ramos, and Justine Sherry. 2019. Programmable network data planes. Dagstuhl Rep. 9, 3 (2019), 178–201.
[9]
Mina Tahmasbi Arashloo, Yaron Koral, Michael Greenberg, Jennifer Rexford, and David Walker. 2016. SNAP: Stateful network-wide abstractions for packet processing. In SIGCOMM’16. ACM.
[10]
Jiasong Bai, Jun Bi, Peng Kuang et al. 2018. NS4: Enabling programmable data plane simulation. In SOSR’18. ACM.
[11]
Manu Bansal, Aaron Schulman, and Sachin Katti. 2015. Atomix: A framework for deploying signal processing applications on wireless infrastructure. In NSDI’15. USENIX.
[12]
David Barach, Leonardo Linguaglossa, Damjan Marion et al. 2018. High-speed software data plane via vectorized packet processing. IEEE Commun. 56, 12 (2018).
[13]
Tom Barbette, Cyril Soldani, and Laurent Mathy. 2015. Fast userspace packet processing. In ANCS’15. IEEE.
[14]
S. Bera, S. Misra, and A. V. Vasilakos. 2017. Software-defined networking for Internet of Things: A survey. IEEE Internet Things J. 4, 6 (2017).
[15]
Giuseppe Bianchi, Marco Bonola, Antonio Capone, and Carmelo Cascone. 2014. OpenState: Programming platform-independent stateful Openflow applications inside the switch. SIGCOMM Comput. Commun. Rev. 44, 2 (2014).
[16]
Giuseppe Bianchi, Marco Bonola, Salvatore Pontarelli, Davide Sanvito, Antonio Capone, and Carmelo Cascone. 2016. Open Packet Processor: A programmable architecture for wire speed platform-independent stateful in-network processing. arxiv:1605.01977.
[17]
Marcin Bienkowski, Jan Marcinkowski, Maciej Pacut, Stefan Schmid, and Aleksandra Spyra. 2017. Online tree caching. In SPAA’17. ACM.
[18]
Marcin Bienkowski, Nadi Sarrar, Stefan Schmid, and Steve Uhlig. 2018. Online aggregation of the forwarding information base: Accounting for locality and churn. IEEE/ACM Trans. Netw. 26, 1 (2018).
[19]
Roberto Bifulco and Anton Matsiuk. 2015. Towards scalable SDN switches: Enabling faster flow table entries installation. In SIGCOMM’15. ACM.
[20]
Nicola Bonelli, Stefano Giordano, Gregorio Procissi, and Luca Abeni. 2014. A purely functional approach to packet processing. In ANCS’14. ACM.
[21]
Michael Borokhovich, Clement Rault, Liron Schiff, and Stefan Schmid. 2018. The show must go on: Fundamental data plane connectivity services for dependable SDNs. Elsevier Comp. Comm. 116 (2018).
[22]
Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Jennifer Rexford, Cole Schlesinger, Dan Talayco et al. 2014. P4: Programming protocol-independent packet processors. ACM SIGCOMM Comput. Commun. Rev. 44, 3 (2014).
[23]
Pat Bosshart, Glen Gibb, Hun-Seok Kim, George Varghese, Nick McKeown et al. 2013. Forwarding metamorphosis: Fast programmable match-action processing in hardware for SDN. In SIGCOMM’13. ACM.
[24]
Gordon Brebner and Weirong Jiang. 2014. High-speed packet processing using reconfigurable computing. IEEE Micro. 34, 1 (2014).
[25]
Anat Bremler-Barr, David Hay, Idan Moyal, and Liron Schiff. 2017. Load balancing memcached traffic using software defined networking. In IFIP Networking’17. IEEE.
[26]
Marco Spaziani Brunella, Giacomo Belocchi, Marco Bonola, Salvatore Pontarelli, Giuseppe Siracusano et al. 2020. hXDP: Efficient software packet processing on FPGA NICs. In OSDI’20. USENIX.
[27]
Brandon Butler. 2017. What is intent-based networking? Retrieved from https://www.networkworld.com/article/3202699/lan-wan/what-is-intent-based-networking.html.
[28]
Neal Cardwell, Yuchung Cheng, C. Stephen Gunn, Soheil Hassas Yeganeh, and Van Jacobson. 2017. BBR: Congestion-based congestion control. Commun. ACM 60, 2 (2017).
[29]
Martin Casado, Michael J. Freedman, Justin Pettit, Jianying Luo, Nick McKeown, and Scott Shenker. 2007. Ethane: Taking control of the enterprise. In SIGCOMM’07. ACM.
[30]
Calin Cascaval and Dan Daly. 2017. P4 Architectures. Retrieved from https://p4.org/assets/p4-ws-2017-p4-architectures.pdf.
[31]
Huan Chen and Theophilus Benson. 2017. Hermes: Providing tight control over high-performance SDN switches. In CoNEXT’17. ACM.
[32]
Sharad Chole, Andy Fingerhut, Sha Ma, Anirudh Sivaraman, Shay Vargaftik, Alon Berger, Gal Mendelson, Mohammad Alizadeh, Shang-Tse Chuang et al. 2017. dRMT: Disaggregated programmable switching. In SIGCOMM’17. ACM.
[33]
P4 Language Consortium. 2020. P4 Expert Roundtable Series 2020. Retrieved from https://p4.org/events/2020-p4-summit/.
[34]
P4 Language Consortium. 2020. P4 Runtime. Retrieved from https://p4.org/p4-runtime.
[35]
Intel Corporation. 2010. IXP4XX Product Line of Network Processors. Retrieved from https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ixp4xx-product-line-network-processors-spec-update.pdf.
[36]
Intel Corporation. 2013. Intel Ethernet Switch FM6000 Series. Retrieved from https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ethernet-switch-fm6000-series-brief.pdf.
[37]
Intel Corporation. 2020. Data Direct I/O. Retrieved from https://www.intel.com/content/www/us/en/io/data-direct-i-o-technology.html.
[38]
Intel Corporation. 2020. Intel Tofino. Retrieved from https://www.intel.com/content/www/us/en/products/network-io/programmable-ethernet-switch/tofino-series/tofino.html.
[39]
Paolo Costa, Austin Donnelly, Antony Rowstron, and Greg O’Shea. 2012. Camdoop: Exploiting in-network aggregation for big data applications. In NSDI’12. USENIX.
[40]
Levente Csikor, Dinil Mon Divakaran, Min Suk Kang, Attila Kőrösi, Balázs Sonkoly, Dávid Haja, Dimitrios P. Pezaros, Stefan Schmid, and Gábor Rétvári. 2019. Tuple space explosion: A denial-of-service attack against a software packet classifier. In CoNEXT’19. ACM.
[41]
Andrew R. Curtis, Jeffrey C. Mogul, Jean Tourrilhes, Praveen Yalagandula, Puneet Sharma, and Sujata Banerjee. 2011. DevoFlow: Scaling flow management for high-performance networks. ACM SIGCOMM Comput. Commun. Rev. 41, 4 (2011).
[42]
Michael Dalton, David Schultz, Jacob Adriaens, Ahsan Arefin, Anshuman Gupta, Brian Fahs et al. 2018. Andromeda: Performance, isolation, and velocity at scale in cloud network virtualization. In NSDI’18. USENIX.
[43]
Huynh Tu Dang, Marco Canini, Fernando Pedone et al. 2016. Paxos made switch-y. SIGCOMM Comput. Commun. Rev. 46, 2 (2016).
[44]
Huynh Tu Dang, Daniele Sciascia, Marco Canini, Fernando Pedone, and Robert Soulé. 2015. NetPaxos: Consensus at network speed. In SOSR’15. ACM.
[45]
T. Dargahi, A. Caponi, M. Ambrosin, G. Bianchi, and M. Conti. 2017. A survey on the security of stateful SDN data planes. IEEE Commun. Surv. Tutor. 19, 3 (2017).
[46]
Jeffrey Dean, Greg S. Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V. Le, Mark Z. Mao, Marc’Aurelio Ranzato, Andrew Senior et al. 2012. Large scale distributed deep networks. In NIPS’12. Curran Associates Inc.
[47]
Richard Draves, Christopher King, Srinivasan Venkatachary, and Brian Zill. 1999. Constructing optimal IP routing tables. In INFOCOM’99. IEEE.
[48]
Dragos Dumitrescu, Radu Stoenescu, Matei Popovici, Lorina Negreanu, and Costin Raiciu. 2019. Dataplane equivalence and its applications. In NSDI’19. USENIX.
[49]
R. Duncan and P. Jungck. 2009. packetC: Language for high performance packet processing. In HPCC’09. IEEE.
[50]
Norbert Egi, Adam Greenhalgh, Mark Handley, Mickael Hoerdt, Felipe Huici, and Laurent Mathy. 2008. Towards high performance virtual routers on commodity hardware. In CoNEXT’08. ACM.
[51]
Alireza Farshin, Amir Roozbeh, Gerald Q. Maguire Jr., and Dejan Kostić. 2020. Reexamining direct cache access to optimize I/O intensive applications for multi-hundred-gigabit networks. In ATC’20. USENIX.
[52]
Nick Feamster, Jennifer Rexford, and Ellen Zegura. 2013. The road to SDN. ACM Queue. Queue 11, 12 (12 2013).
[53]
Anja Feldman and S. Muthukrishnan. 2000. Tradeoffs for packet classification. In INFOCOM 2000. IEEE.
[54]
Daniel Firestone, Andrew Putnam, Sambhrama Mundkur et al. 2018. Azure accelerated networking: SmartNICs in the public cloud. In NSDI’18. USENIX.
[55]
Alex Forencich, Alex C. Snoeren, George Porter, and George Papen. 2020. Corundum: An open-source 100-Gbps NIC. In FPGA’20. IEEE.
[56]
Nate Foster, Arjun Guha, Mark Reitblatt, Alec Story, Michael J. Freedman, Naga Praveen Katta, Christopher Monsanto, Joshua Reich et al. 2013. Languages for software-defined networks. IEEE Comm. Mag. 51, 2 (2013).
[57]
Open Networking Foundation. 2020. Stratum: Enabling the era of next generation SDN. Retrieved from https://stratumproject.org.
[58]
Jing Fu and Jennifer Rexford. 2008. Efficient IP-address lookup with a shared forwarding table for multiple virtual routers. In CoNEXT’08. ACM.
[59]
Eli Gafni and Dimitri Bertsekas. 1981. Distributed algorithms for generating loop-free routes in networks with frequently changing topology. IEEE Trans. Commun. 29, 1 (1981), 11–18.
[60]
Aaron Gember-Jacobson, Raajay Viswanathan, Chaithan Prakash, Robert Grandl, Junaid Khalid, Sourav Das, and Aditya Akella. 2014. OpenNF: Enabling innovation in network function control. ACM SIGCOMM Comput. Commun. Rev. 44, 4 (2014).
[61]
Mojgan Ghasemi, Theophilus Benson, and Jennifer Rexford. 2017. Dapper: Data plane performance diagnosis of tcp. In SOSR’17. ACM.
[62]
Glen Gibb, George Varghese, Mark Horowitz, and Nick McKeown. 2013. Design principles for packet parsers. In ANCS’13. ACM.
[63]
Younghwan Go, Muhammad Asim Jamshed, YoungGyoun Moon, Changho Hwang, and KyoungSoo Park. 2017. APUNet: Revitalizing GPU as packet processing accelerator. In NSDI’17. USENIX.
[64]
Yanlei Gong, Xiong Wang, Mehdi Malboubi, Sheng Wang, Shizhong Xu, and Chen-Nee Chuah. 2015. Towards accurate online traffic matrix estimation in software-defined networks. In SOSR’15. ACM.
[65]
Andy Gospodarek. 2017. The Rise of SmartNICs—Offloading dataplane traffic to...software. Retrieved from https://youtu.be/AGSy51VlKaM.
[66]
Mukul Goyal, Mohd Soperi, Emmanuel Baccelli et al. 2012. Improving convergence speed and scalability in OSPF: A survey. IEEE Commun. Surv. Tutor. 14, 2 (2012).
[67]
Richard L. Graham, Devendar Bureddy, Pak Lui et al. 2016. Scalable hierarchical aggregation protocol (SHArP): A hardware architecture for efficient data reduction. In COM-HPC’16. IEEE.
[68]
Adam Greenhalgh, Felipe Huici, Mickael Hoerdt, Panagiotis Papadimitriou, Mark Handley, and Laurent Mathy. 2009. Flow processing and the rise of commodity network hardware. ACM SIGCOMM Comput. Commun. Rev. 39, 2 (2009).
[69]
Arpit Gupta, Rob Harrison, Marco Canini, Nick Feamster, Jennifer Rexford, and Walter Willinger. 2018. Sonata: Query-driven streaming network telemetry. In SIGCOMM’18. ACM.
[70]
Jong Hun Han, Prashanth Mundkur, Charalampos Rotsos et al. 2015. Blueswitch: Enabling provably consistent configuration of network switches. In ACM/IEEE ANCS’15.
[71]
Sangjin Han, Keon Jang, Aurojit Panda, Shoumik Palkar, Dongsu Han, and Sylvia Ratnasamy. 2015. SoftNIC: A software NIC to augment hardware. Technical Report UCB/EECS-2015-155. UC Berkeley.
[72]
Sangjin Han, Keon Jang, KyoungSoo Park, and Sue Moon. 2010. PacketShader: A GPU-accelerated software router. In SIGCOMM’10. ACM.
[73]
F. E. Heart, R. E. Kahn, S. M. Ornstein, W. R. Crowther, and D. C. Walden. 1970. The interface message processor for the ARPA computer network. In ACM AFIPS’70 (Spring). ACM.
[74]
Toke Høiland-Jørgensen, Jesper Dangaard Brouer, Daniel Borkmann et al. 2018. The express data path: Fast programmable packet processing in the operating system kernel. In CoNEXT’18. ACM.
[75]
Thomas Holterbach, Edgar Costa Molero, Maria Apostolaki, Alberto Dainotti, Stefano Vissicchio, and Laurent Vanbever. 2019. Blink: Fast connectivity recovery entirely in the data plane. In NSDI’19. USENIX.
[76]
Michio Honda, Felipe Huici, Giuseppe Lettieri, and Luigi Rizzo. 2015. mSwitch: A highly-scalable, modular software switch. In SOSR’15. ACM.
[77]
Qun Huang, Xin Jin, Patrick P. C. Lee, Runhui Li, Lu Tang, Yi-Chao Chen, and Gong Zhang. 2017. SketchVisor: Robust network measurement for software packet processing. In SIGCOMM’17. ACM.
[78]
Stephen Ibanez, Gordon Brebner, Nick McKeown, and Noa Zilberman. 2019. The P4->NetFPGA workflow for line-rate packet processing. In FPGA’19. ACM.
[79]
Netronome Systems Inc.2020. Netronome NFP-4000 Flow Processor. Retrieved. from https://www.netronome.com/media/documents/PB_NFP-4000-7-20.pdf.
[80]
Xilinx Inc.2020. Vivado High-Level Synthesis. Retrieved from https://www.xilinx.com/products/design-tools/vivado.html
[81]
Raj Jain and Sudipta Paul. 2013. Network virtualization and software defined networking for cloud computing: A survey. IEEE Commun. Mag. 51, 11 (2013).
[82]
Theo Jepsen, Daniel Alvarez, Nate Foster et al. 2019. Fast string searching on PISA. In SOSR’19. ACM.
[83]
Vimalkumar Jeyakumar, Mohammad Alizadeh, Yilong Geng et al. 2014. Millions of little minions: Using packets for low latency network programming and visibility. ACM SIGCOMM Comput. Commun. Rev. 44, 4 (2014).
[84]
Xin Jin, Eric Keller, and Jennifer Rexford. 2012. Virtual switching without a hypervisor for a more secure cloud. In HotICE’12. USENIX.
[85]
Xin Jin, Xiaozhou Li, Haoyu Zhang, Nate Foster, Jeongkeun Lee, Robert Soulé, Changhoon Kim, and Ion Stoica. 2018. NetChain: Scale-free sub-RTT coordination. In NSDI’18. USENIX.
[86]
Xin Jin, Xiaozhou Li, Haoyu Zhang, Robert Soulé, Jeongkeun Lee, Nate Foster, Changhoon Kim, and Ion Stoica. 2017. NetCache: Balancing key-value stores with fast in-network caching. In SOSP’17. ACM.
[87]
Chen Jing. 2018. Zero-Copy Optimization for Alibaba Cloud Smart NIC Solution. Retrieved from http://www.alibabacloud.com/blog/zero-copy-optimization-for-alibaba-cloud-smart-nic-solution_593986.
[88]
Lavanya Jose, Lisa Yan, George Varghese, and Nick McKeown. 2015. Compiling packet programs to reconfigurable switches. In NSDI’15. USENIX.
[89]
Murad Kablan, Azzam Alsudais, Eric Keller, and Franck Le. 2017. Stateless network functions: Breaking the tight coupling of state and processing. In NSDI’17. USENIX.
[90]
Anuj Kalia, Dong Zhou, Michael Kaminsky, and David G. Andersen. 2015. Raising the bar for using GPUs in software packet processing. In NSDI’15. USENIX.
[91]
Georgios P. Katsikas, Tom Barbette, Dejan Kostić, Rebecca Steinert, and Gerald Q. Maguire Jr. 2018. Metron: NFV service chains at the true speed of the underlying hardware. In NSDI’18. USENIX.
[92]
Naga Katta, Omid Alipourfard, Jennifer Rexford, and David Walker. 2016. CacheFlow: Dependency-aware rule-caching for software-defined networks. In SOSR’16. ACM.
[93]
Naga Katta, Mukesh Hira, Changhoon Kim, Anirudh Sivaraman, and Jennifer Rexford. 2016. Hula: Scalable load balancing using programmable data planes. SOSR. In SOSR’16. ACM, 10.
[94]
S. Keshav and R. Sharma. 1998. Issues and trends in router design. IEEE Commun. Mag. 36, 5 (5 1998).
[95]
Junaid Khalid, Aaron Gember-Jacobson, Roney Michael, Anubhavnidhi Abhashkumar, and Aditya Akella. 2016. Paving the way for NFV: Simplifying middlebox modifications using StateAlyzr. In NSDI’16. USENIX.
[96]
Changhoon Kim, Anirudh Sivaraman, Naga Katta et al. 2015. In-band network telemetry via programmable dataplanes. In ACM SIGCOMM’15 Demos. ACM.
[97]
Hyojoon Kim, Joshua Reich, Arpit Gupta, Muhammad Shahbaz, Nick Feamster, and Russ Clark. 2015. Kinetic: Verifiable dynamic network control. In NSDI’15. USENIX.
[98]
Kirill Kogan, Sergey Nikolenko, Ori Rottenstreich, William Culhane, and Patrick Eugster. 2014. SAX-PAC (Scalable And eXpressive PAcket Classification). In SIGCOMM’14. ACM.
[99]
Eddie Kohler, Robert Morris, Benjie Chen, John Jannotti, and M. Frans Kaashoek. 2000. The click modular router. ACM Trans. Comput. Syst. 18, 3 (2000).
[100]
Teemu Koponen, Keith Amidon, Peter Balland et al. 2014. Network virtualization in multi-tenant datacenters. In NSDI’14. USENIX.
[101]
Diego Kreutz, Fernando M. V. Ramos, Paulo Esteves Verissimo, Christian Esteve Rothenberg, Siamak Azodolmolky, and Steve Uhlig. 2015. Software-defined networking: A comprehensive survey. Proc. IEEE 103, 1 (2015), 14–76.
[102]
Sameer G. Kulkarni, Wei Zhang, Jinho Hwang et al. 2017. NFVnice: Dynamic backpressure and scheduling for NFV service chains. In SIGCOMM’17. ACM.
[103]
Leslie Lamport. 1978. Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21, 7 (July 1978), 8.
[104]
Rafael Laufer, Massimo Gallo, Diego Perino, and Anandatirtha Nandugudi. 2016. CliMB: Enabling network function composition with click middleboxes. In HotMiddlebox’16. ACM.
[105]
Maysam Lavasani, Larry Dennison, and Derek Chiou. 2012. Compiling high throughput network processors. In ACM/SIGDA FPGA’12.
[106]
P. H. W. Leong. 2008. Recent trends in FPGA architectures and applications. In DELTA’08. IEEE.
[107]
Tamás Lévai, Felicián Németh, Barath Raghavan, and Gábor Rétvári. 2020. Batchy: Batch-scheduling data flow graphs with service-level objectives. In USENIX NSDI’20. USENIX.
[108]
Bojie Li, Kun Tan, Layong (Larry) Luo et al. 2016. ClickNP: Highly flexible and high performance network processing with reconfigurable hardware. In ACM SIGCOMM’16. ACM.
[109]
Xiaozhou Li, Raghav Sethi, Michael Kaminsky, David G. Andersen, and Michael J. Freedman. 2016. Be fast, cheap, and in control with SwitchKV. In NSDI’16. USENIX.
[110]
L. Linguaglossa, S. Lange, S. Pontarelli, G. Rétvári, D. Rossi, T. Zinner, R. Bifulco et al. 2019. Survey of performance acceleration techniques for network function virtualization. Proc. IEEE 107, 4 (2019).
[111]
Alex X. Liu, Chad R. Meiners, and Eric Torng. 2010. TCAM Razor: A systematic approach towards minimizing packet classifiers in TCAMs. IEEE/ACM Trans. Netw. 18, 2 (Apr. 2010), 490–500.
[112]
Junda Liu, Aurojit Panda, Ankit Singla, Brighten Godfrey, Michael Schapira, and Scott Shenker. 2013. Ensuring connectivity via data plane mechanisms. In NSDI’13. USENIX.
[113]
Ming Liu, Tianyi Cui, Henry Schuh, Arvind Krishnamurthy, Simon Peter, and Karan Gupta. 2019. Offloading distributed applications onto SmartNICs using iPipe. In SIGCOMM’19. ACM.
[114]
Ming Liu, Liang Luo, Jacob Nelson, Luis Ceze, Arvind Krishnamurthy, and Kishore Atreya. 2017. IncBricks: Toward in-network computation with an in-network cache. SIGOPS Oper. Syst. Rev. 51, 2 (2017).
[115]
Ming Liu, Simon Peter, Arvind Krishnamurthy, and Phitchaya Mangpo Phothilimthana. 2019. E3: Energy-efficient microservices on SmartNIC-accelerated servers. In ATC’19. USENIX.
[116]
Yaoqing Liu, Beichuan Zhang, and Lan Wang. 2013. FIFA: Fast incremental FIB aggregation. In INFOCOM’13. IEEE.
[117]
Zaoxing Liu, Antonis Manousis, Gregory Vorsanger, Vyas Sekar, and Vladimir Braverman. 2016. One sketch to rule them all: Rethinking network flow monitoring with UnivMon. In SIGCOMM’16. ACM, New York, NY.
[118]
Shouxi Luo, Hongfang Yu, and Laurent Vanbever. 2017. Swing state: Consistent updates for stateful and programmable data planes. In SOSR’17. ACM.
[119]
T. Lévai, G. Pongrácz, P. Megyesi, P. Vörös, S. Laki, F. Németh, and G. Rétvári. 2018. The price for programmability in the software data plane: The vendor perspective. IEEE J. Select. Areas Commun. 36, 12 (2018).
[120]
Yadi Ma and Suman Banerjee. 2012. A smart pre-classifier to reduce power consumption of TCAMs for multi-dimensional packet classification. ACM SIGCOMM Comput. Commun. Rev. 42, 4 (2012).
[121]
Luo Mai, Lukas Rupprecht, Abdul Alim et al. 2014. NetAgg: Using middleboxes for application-specific on-path aggregation in data centres. In CoNEXT’14. ACM.
[122]
Joao Martins, Mohamed Ahmed, and Costin Raiciu. 2014. ClickOS and the art of network function virtualization. In NSDI’14. USENIX.
[123]
James McCauley, Aurojit Panda, Arvind Krishnamurthy, and Scott Shenker. 2019. Thoughts on load distribution and the role of programmable switches. ACM SIGCOMM Comput. Commun. Rev. 49, 1 (2019).
[124]
Nick McKeown. 2017. Programmable forwarding planes are here to stay. In SIGCOMM NetPL’17. ACM.
[125]
Nick McKeown, Tom Anderson, Hari Balakrishnan et al. 2008. OpenFlow: Enabling innovation in campus networks. ACM SIGCOMM Comput. Commun. Rev. 38, 2 (3 2008).
[126]
Rui Miao, Hongyi Zeng, Changhoon Kim, Jeongkeun Lee, and Minlan Yu. 2017. SilkRoad: Making stateful layer-4 load balancing fast and cheap using switching ASICs. In SIGCOMM’17. ACM.
[127]
Oliver Michel, Gábor Rétvári, Roberto Bifulco, and Stefan Schmid. 2020. The Programmable Data Plane Reading List. Retrieved from https://programmabledataplane.review/.
[128]
Oliver Michel, John Sonchack, Eric Keller, and Jonathan M. Smith. 2018. Packet-level analytics in software without compromises. In HotCloud’18. USENIX.
[129]
Radhika Mittal, Rachit Agarwal, Sylvia Ratnasamy et al. 2016. Universal packet scheduling. In NSDI’16. USENIX.
[130]
Edgar Costa Molero, Stefano Vissicchio, and Laurent Vanbever. 2018. Hardware-accelerated network control planes. In HotNets’18. ACM.
[131]
László Molnár, Gergely Pongrácz, Gábor Enyedi et al. 2016. Dataplane specialization for high-performance OpenFlow software switching. In SIGCOMM’16. ACM.
[132]
Christopher Monsanto, Nate Foster, Rob Harrison, and David Walker. 2012. A compiler and run-time system for network programming languages. In ACM POPL’12. ACM.
[133]
Christopher Monsanto, Joshua Reich, Nate Foster, Jennifer Rexford, and David Walker. 2013. Composing software-defined networks. In NSDI’13. USENIX.
[134]
Masoud Moshref, Apoorv Bhargava, and Adhip Gupta. 2014. Flow-level state transition as a new switch primitive for SDN. In HotSDN’14. ACM.
[135]
Srinivas Narayana, Anirudh Sivaraman, Vikram Nathan et al. 2017. Language-directed hardware design for network performance monitoring. In SIGCOMM’17. ACM.
[136]
Arista Networks. 2018. Four key trends in the networked use of FPGAs. Retrieved from https://www.arista.com/assets/data/pdf/Whitepapers/Trends-in-FPGA-WP.pdf.
[137]
Bruno Astuto A. Nunes, Marc Mendonca, Xuan-Nam Nguyen et al. 2014. A survey of software-defined networking: Past, present, and future of programmable networks. IEEE Commun. Surv. Tutor. 16, 3 (2014).
[138]
J. Ordonez-Lucena, P. Ameigeiras, D. Lopez, J. J. Ramos-Munoz, J. Lorca, and J. Folgueira. 2017. Network slicing for 5G with SDN/NFV: Concepts, architectures, and challenges. IEEE Commun. Mag. 55, 5 (2017).
[139]
Shoumik Palkar, Chang Lan, Sangjin Han, Keon Jang, Aurojit Panda, Sylvia Ratnasamy, Luigi Rizzo, and Scott Shenker. 2015. E2: A framework for NFV applications. In SOSP’15. ACM.
[140]
Aurojit Panda, Sangjin Han, Keon Jang, Melvin Walls, Sylvia Ratnasamy, and Scott Shenker. 2016. NetBricks: Taking the V out of NFV. In OSDI’16. USENIX.
[141]
Vincent Douglas Park and M. Scott Corson. 1997. A highly adaptive distributed routing algorithm for mobile wireless networks. In INFOCOM’97. IEEE, 1405–1413.
[142]
Justin Pettit, Ben Pfaff, Chris Wright, and Madhu Venugopal. 2015. OVN, Bringing Native Virtual Networking to OVS. Retrieved from http://networkheresy.com/ovn-bringing-native-virtual-networking-to-ovs.
[143]
BenPfaff. 2013. RFC 7047: The Open vSwitch Database Management Protocol. Retrieved from https://tools.ietf.org/html/rfc7047.
[144]
Ben Pfaff. 2016. Converging approaches in software switches. Retrieved from https://benpfaff.org/ blp/keynote.pdf.
[145]
Ben Pfaff, Justin Pettit, Teemu Koponen, Ethan J. Jackson, Andy Zhou, Jarno Rajahalme, Jesse Gross, Alex Wang, Jonathan Stringer et al. 2015. The design and implementation of open vSwitch. In NSDI’15. USENIX.
[146]
Phitchaya Mangpo Phothilimthana, Ming Liu, Antoine Kaufmann, Simon Peter, Rastislav Bodik, and Thomas Anderson. 2018. Floem: A programming system for NIC-accelerated network applications. In OSDI’18. USENIX.
[147]
Gergely Pongrácz, László Molnár, Zoltán Lajos Kis, and Zoltán Turányi. 2013. Cheap silicon: A myth or reality? Picking the right data plane hardware for software defined networking. In HotSDN’13. ACM.
[148]
Salvatore Pontarelli, Roberto Bifulco, Marco Bonola, Carmelo Cascone, Marco Spaziani, Valerio Bruschi, Davide Sanvito, Giuseppe Siracusano et al. 2019. FlowBlaze: Stateful packet processing in hardware. In NSDI’19. USENIX.
[149]
Diana Andreea Popescu, Gianni Antichi, and Andrew W. Moore. 2017. Enabling fast hierarchical heavy hitter detection using programmable data planes. In SOSR’17. ACM.
[150]
DPDK Project. 2020. Data Plane Development Kit. Retrieved from https://www.dpdk.org/.
[151]
The Fast Data Project. 2019. FD.io. Retrieved from https://fd.io.
[152]
Zafar Ayyub Qazi, Cheng-Chun Tu, Luis Chiang, Rui Miao, Vyas Sekar, and Minlan Yu. 2013. SIMPLE-fying middlebox policy enforcement using SDN. ACM SIGCOMM Comput. Commun. Rev. 43, 4 (2013).
[153]
Shriram Rajagopalan, Dan Williams, Hani Jamjoom, and Andrew Warfield. 2013. Split/merge: System support for elastic execution in virtual middleboxes. In NSDI’13. USENIX.
[154]
Gábor Rétvári, László Molnár, Gergely Pongrácz, and Gábor Enyedi. 2017. Dynamic compilation and optimization of packet processing programs. In NetPL’17. ACM.
[155]
Gábor Rétvári, János Tapolcai, Attila Kőrösi, András Majdán, and Zalán Heszberger. 2013. Compressing IP forwarding tables: Towards entropy bounds and beyond. In SIGCOMM’13. ACM.
[156]
Luigi Rizzo. 2012. Netmap: A novel framework for fast packet I/O. In ATC’12. USENIX.
[157]
Luigi Rizzo and Giuseppe Lettieri. 2012. VALE, a switched ethernet for virtual machines. In CoNEXT’12. ACM.
[158]
Fabian Ruffy, Tao Wang, and Anirudh Sivarama. 2020. Gauntlet: Finding bugs in compilers for programmable packet processing. In OSDI’20. USENIX.
[159]
Davide Sanvito, Giuseppe Siracusano, and Roberto Bifulco. 2018. Can the network be the AI accelerator?SIGCOMM NetCompute. In SIGCOMM Workshop on In-Network Computing (NetCompute). ACM, 20–25.
[160]
Amedeo Sapio, Ibrahim Abdelaziz, Abdulla Aldilaijan, Marco Canini, and Panos Kalnis. 2017. In-network computation is a dumb idea whose time has come. In HotNets’17. ACM.
[161]
Liron Schiff, Stefan Schmid, and Petr Kuznetsov. 2016. In-band synchronization for distributed SDN control planes. ACM SIGCOMM Comput. Commun. Rev. 46, 1 (2016).
[162]
Beverly Schwartz, Alden W. Jackson, W. Timothy Strayer et al. 2000. Smart packets: Applying active networks to network management. ACM Trans. Comput. Syst. 18, 1 (2000).
[163]
Vyas Sekar, Norbert Egi, Sylvia Ratnasamy et al. 2012. Design and implementation of a consolidated middlebox architecture. In NSDI’12. USENIX.
[164]
S. Sezer, S. Scott-Hayward, P. K. Chouhan et al. 2013. Are we ready for SDN? Implementation challenges for software-defined networks. IEEE Comm. Mag. 51, 7 (2013).
[165]
Muhammad Shahbaz, Sean Choi, Ben Pfaff, Changhoon Kim, Nick Feamster, Nick McKeown, and Jennifer Rexford. 2016. PISCES: A programmable, protocol-independent software switch. In SIGCOMM’16. ACM.
[166]
Muhammad Shahbaz and Nick Feamster. 2015. The case for an intermediate representation for programmable data planes. In SOSR’15. ACM.
[167]
Naveen Kr. Sharma, Antoine Kaufmann, Thomas Anderson et al. 2017. Evaluating the power of flexible packet processing for network resource allocation. In NSDI’17. USENIX.
[168]
Naveen Kr. Sharma, Ming Liu, Kishore Atreya, and Arvind Krishnamurthy. 2018. Approximating fair queueing on reconfigurable switches. In NSDI’18. USENIX.
[169]
Vishal Shrivastav. 2019. Fast, scalable, and programmable packet scheduler in hardware. In SIGCOMM’19. ACM.
[170]
Zhaogang Shu, Jiafu Wan, Di Li, Jiaxiang Lin, Athanasios V. Vasilakos, and Muhammad Imran. 2016. Security in software-defined networking: Threats and countermeasures. Springer Mob. Netw. Appl. 21, 5 (2016).
[171]
Giuseppe Siracusano and Roberto Bifulco. 2018. In-network Neural Networks. arxiv:1801.05731.
[172]
Anirudh Sivaraman, Alvin Cheung, Mihai Budiu et al. 2016. Packet transactions: High-level programming for line-rate switches. In SIGCOMM’16. ACM.
[173]
Anirudh Sivaraman, Suvinay Subramanian, Mohammad Alizadeh et al. 2016. Programmable packet scheduling at line rate. In SIGCOMM’16. ACM.
[174]
Vibhaalakshmi Sivaraman, Srinivas Narayana, Ori Rottenstreich, S. Muthukrishnan, and Jennifer Rexford. 2017. Heavy-hitter detection entirely in the data plane. In SOSR’17. ACM.
[175]
John Sonchack, Oliver Michel, Adam J. Aviv, Eric Keller, and Jonathan M. Smith. 2018. Scaling hardware accelerated network monitoring to concurrent and dynamic queries with *flow. In ATC’18. USENIX.
[176]
V. Srinivasan, S. Suri, and G. Varghese. 1999. Packet classification using tuple space search. In SIGCOMM’99. ACM.
[177]
W. P. Stevens, G. J. Myers, and L. L. Constantine. 1974. Structured design. IBM Syst. J. 13, 2 (1974).
[178]
Chen Sun, Jun Bi, Zhilong Zheng, Heng Yu, and Hongxin Hu. 2017. NFP: Enabling network function parallelism in NFV. In SIGCOMM’17. ACM.
[179]
Kashyap Thimmaraju, Saad Hermak, Gábor Rétvári, and Stefan Schmid. 2019. MTS: Bringing multi-tenancy to virtual networking. In ATC’19. USENIX.
[180]
Kashyap Thimmaraju, Bhargava Shastry, Tobias Fiebig, Felicitas Hetzelt, Jan-Pierre Seifert et al. 2017. The vAMP attack: Taking control of cloud systems via the unified packet parser. In CCSW’17. ACM.
[181]
Kashyap Thimmaraju, Bhargava Shastry, Tobias Fiebig, Felicitas Hetzelt, Jean-Pierre Seifert, Anja Feldmann, and Stefan Schmid. 2018. Taking control of SDN-based cloud systems via the data plane. In SOSR’18. ACM.
[182]
Amin Tootoonchian, Aurojit Panda, Chang Lan, Melvin Walls, Katerina Argyraki, Sylvia Ratnasamy, and Scott Shenker. 2018. ResQ: Enabling SLOs in network function virtualization. In NSDI’18. USENIX.
[183]
Zartash Afzal Uzmi, Markus Nebel, Ahsan Tariq, Sana Jawad, Ruichuan Chen, Aman Shaikh, Jia Wang, and Paul Francis. 2011. SMALTA: Practical and near-optimal FIB aggregation. In CoNEXT’11. ACM.
[184]
Javier Verdú, Mario Nemirovsky, Jorge García, and Mateo Valero. 2008. Workload characterization of stateful networking applications. In ISHPC’08. Springer.
[185]
Andreas Voellmy, Junchang Wang, Y. Richard Yang, Bryan Ford, and Paul Hudak. 2013. Maple: Simplifying SDN programming using algorithmic policies. ACM SIGCOMM Comput. Commun. Rev. 43, 4 (2013).
[186]
Han Wang, Robert Soulé, and Huynh Tu Dang. 2017. P4FPGA: A rapid prototyping framework for P4. In SOSR’17.
[187]
Damon Wischik, Mark Handley, and Marcelo Bagnulo Braun. 2008. The resource pooling principle. ACM SIGCOMM Comput. Commun. Rev. 38, 5 (2008).
[188]
Shinae Woo, Justine Sherry, Sangjin Han, Sue Moon, Sylvia Ratnasamy, and Scott Shenker. 2018. Elastic scaling of stateful network functions. In NSDI’18. USENIX.
[189]
L. Yang et al. 2004. RFC 3746: Forwarding and Control Element Separation (ForCES) Framework. Retrieved from https://tools.ietf.org/html/rfc3746.
[190]
Mao Yang, Yong Li, Depeng Jin, Lieguang Zeng, Xin Wu, and Athanasios Vasilakos. 2015. Software-defined and virtualized future mobile and wireless networks: A survey. Mob. Netw. Applic. 20, 1 (2015).
[191]
T. Yang, G. Xie, A. X. Liu et al. 2018. Constant IP lookup with FIB explosion. IEEE/ACM Trans. Netw. 26, 4 (2018).
[192]
Minlan Yu, Lavanya Jose, and Rui Miao. 2013. Software defined traffic measurement with OpenSketch. In NSDI’13.
[193]
Yifei Yuan, Dong Lin, Rajeev Alur, and Boon Thau Loo. 2015. Scenario-based programming for SDN policies. In CoNEXT’15. ACM.
[194]
Dong Zhou, Bin Fan, Hyeontaek Lim, Michael Kaminsky, and David G. Andersen. 2013. Scalable, high performance ethernet forwarding with CuckooSwitch. In CoNEXT’13. ACM.
[195]
Noa Zilberman, Yury Audzevich, G. Adam Covington, and Andrew W. Moore. 2014. NetFPGA SUME: Toward 100 Gbps as research commodity. IEEE Micro 34, 5 (2014).
[196]
Noa Zilberman, Philip M. Watts, Charalampos Rotsos, and Andrew W. Moore. 2015. Reconfigurable network systems and software-defined networking. Proc. IEEE 103, 7 (2015).

Cited By

View all

Index Terms

  1. The Programmable Data Plane: Abstractions, Architectures, Algorithms, and Applications

        Recommendations

        Comments

        Please enable JavaScript to view thecomments powered by Disqus.

        Information & Contributors

        Information

        Published In

        cover image ACM Computing Surveys
        ACM Computing Surveys  Volume 54, Issue 4
        May 2022
        782 pages
        ISSN:0360-0300
        EISSN:1557-7341
        DOI:10.1145/3464463
        Issue’s Table of Contents
        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        Published: 03 May 2021
        Accepted: 01 January 2021
        Revised: 01 January 2021
        Received: 01 August 2020
        Published in CSUR Volume 54, Issue 4

        Permissions

        Request permissions for this article.

        Check for updates

        Author Tags

        1. Programmable data planes
        2. in-network computation
        3. network programmability
        4. packet processing
        5. programmable switches

        Qualifiers

        • Research-article
        • Research
        • Refereed

        Funding Sources

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)440
        • Downloads (Last 6 weeks)57
        Reflects downloads up to 11 Dec 2024

        Other Metrics

        Citations

        Cited By

        View all
        • (2025)ScaIR: Scalable Intelligent Routing based on Distributed Graph Reinforcement LearningComputer Networks10.1016/j.comnet.2024.110915257(110915)Online publication date: Feb-2025
        • (2024)High-Performance Reconfigurable Pipeline Implementation for FPGA-Based SmartNICMicromachines10.3390/mi1504044915:4(449)Online publication date: 27-Mar-2024
        • (2024)Network Data Plane Programming Languages: A SurveyComputers10.3390/computers1312031413:12(314)Online publication date: 26-Nov-2024
        • (2024)Taming the Elephants: Affordable Flow Length Prediction in the Data PlaneProceedings of the ACM on Networking10.1145/36494732:CoNEXT1(1-24)Online publication date: 28-Mar-2024
        • (2024)Marina: Realizing ML-Driven Real-Time Network Traffic Monitoring at Terabit ScaleIEEE Transactions on Network and Service Management10.1109/TNSM.2024.338239321:3(2773-2790)Online publication date: 1-Jun-2024
        • (2024)P4Hauler: An Accelerator-Aware In-Network Load Balancer for Applications Performance BoostingIEEE Transactions on Cloud Computing10.1109/TCC.2024.338965812:2(697-711)Online publication date: Apr-2024
        • (2024)NetCL: A Unified Programming Framework for In-Network ComputingProceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis10.1109/SC41406.2024.00051(1-20)Online publication date: 17-Nov-2024
        • (2024)Enabling Programmable Data Planes with C++ and High-Level Synthesis for Custom Packet Forwarding2024 37th SBC/SBMicro/IEEE Symposium on Integrated Circuits and Systems Design (SBCCI)10.1109/SBCCI62366.2024.10704008(1-5)Online publication date: 2-Sep-2024
        • (2024)Offloading NVMe over Fabrics (NVMe-oF) to SmartNICs on an at-scale Distributed Testbed2024 IEEE 10th International Conference on Network Softwarization (NetSoft)10.1109/NetSoft60951.2024.10588915(316-318)Online publication date: 24-Jun-2024
        • (2024)Multi-Tenant Programmable Switch Virtualization ArchitectureNOMS 2024-2024 IEEE Network Operations and Management Symposium10.1109/NOMS59830.2024.10575917(1-5)Online publication date: 6-May-2024
        • Show More Cited By

        View Options

        Login options

        Full Access

        View options

        PDF

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        HTML Format

        View this article in HTML Format.

        HTML Format

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media