skip to main content
research-article

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

Authors Info & Claims
Published:03 May 2021Publication History
Skip Abstract Section

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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  4. Omid Alipourfard and Minlan Yu. 2018. Decoupling algorithms and optimizations in network functions. In HotNets’18. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  6. Noga Alon, Yossi Matias, and Mario Szegedy. 1996. The space complexity of approximating the frequency moments. In STOC’96. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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. DOI:https://doi.org/10.4230/DagRep.9.3.178Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Jiasong Bai, Jun Bi, Peng Kuang et al. 2018. NS4: Enabling programmable data plane simulation. In SOSR’18. ACM.Google ScholarGoogle Scholar
  11. Manu Bansal, Aaron Schulman, and Sachin Katti. 2015. Atomix: A framework for deploying signal processing applications on wireless infrastructure. In NSDI’15. USENIX.Google ScholarGoogle Scholar
  12. David Barach, Leonardo Linguaglossa, Damjan Marion et al. 2018. High-speed software data plane via vectorized packet processing. IEEE Commun. 56, 12 (2018).Google ScholarGoogle Scholar
  13. Tom Barbette, Cyril Soldani, and Laurent Mathy. 2015. Fast userspace packet processing. In ANCS’15. IEEE.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarCross RefCross Ref
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  17. Marcin Bienkowski, Jan Marcinkowski, Maciej Pacut, Stefan Schmid, and Aleksandra Spyra. 2017. Online tree caching. In SPAA’17. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Roberto Bifulco and Anton Matsiuk. 2015. Towards scalable SDN switches: Enabling faster flow table entries installation. In SIGCOMM’15. ACM.Google ScholarGoogle Scholar
  20. Nicola Bonelli, Stefano Giordano, Gregorio Procissi, and Luca Abeni. 2014. A purely functional approach to packet processing. In ANCS’14. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  24. Gordon Brebner and Weirong Jiang. 2014. High-speed packet processing using reconfigurable computing. IEEE Micro. 34, 1 (2014).Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  30. Calin Cascaval and Dan Daly. 2017. P4 Architectures. Retrieved from https://p4.org/assets/p4-ws-2017-p4-architectures.pdf.Google ScholarGoogle Scholar
  31. Huan Chen and Theophilus Benson. 2017. Hermes: Providing tight control over high-performance SDN switches. In CoNEXT’17. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  33. P4 Language Consortium. 2020. P4 Expert Roundtable Series 2020. Retrieved from https://p4.org/events/2020-p4-summit/.Google ScholarGoogle Scholar
  34. P4 Language Consortium. 2020. P4 Runtime. Retrieved from https://p4.org/p4-runtime.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  43. Huynh Tu Dang, Marco Canini, Fernando Pedone et al. 2016. Paxos made switch-y. SIGCOMM Comput. Commun. Rev. 46, 2 (2016).Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Huynh Tu Dang, Daniele Sciascia, Marco Canini, Fernando Pedone, and Robert Soulé. 2015. NetPaxos: Consensus at network speed. In SOSR’15. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  47. Richard Draves, Christopher King, Srinivasan Venkatachary, and Brian Zill. 1999. Constructing optimal IP routing tables. In INFOCOM’99. IEEE.Google ScholarGoogle Scholar
  48. Dragos Dumitrescu, Radu Stoenescu, Matei Popovici, Lorina Negreanu, and Costin Raiciu. 2019. Dataplane equivalence and its applications. In NSDI’19. USENIX.Google ScholarGoogle Scholar
  49. R. Duncan and P. Jungck. 2009. packetC: Language for high performance packet processing. In HPCC’09. IEEE.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  52. Nick Feamster, Jennifer Rexford, and Ellen Zegura. 2013. The road to SDN. ACM Queue. Queue 11, 12 (12 2013). DOI:https://doi.org/10.1145/2559899.2560327Google ScholarGoogle Scholar
  53. Anja Feldman and S. Muthukrishnan. 2000. Tradeoffs for packet classification. In INFOCOM 2000. IEEE.Google ScholarGoogle Scholar
  54. Daniel Firestone, Andrew Putnam, Sambhrama Mundkur et al. 2018. Azure accelerated networking: SmartNICs in the public cloud. In NSDI’18. USENIX.Google ScholarGoogle Scholar
  55. Alex Forencich, Alex C. Snoeren, George Porter, and George Papen. 2020. Corundum: An open-source 100-Gbps NIC. In FPGA’20. IEEE.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarCross RefCross Ref
  57. Open Networking Foundation. 2020. Stratum: Enabling the era of next generation SDN. Retrieved from https://stratumproject.org.Google ScholarGoogle Scholar
  58. Jing Fu and Jennifer Rexford. 2008. Efficient IP-address lookup with a shared forwarding table for multiple virtual routers. In CoNEXT’08. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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).Google ScholarGoogle Scholar
  61. Mojgan Ghasemi, Theophilus Benson, and Jennifer Rexford. 2017. Dapper: Data plane performance diagnosis of tcp. In SOSR’17. ACM.Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Glen Gibb, George Varghese, Mark Horowitz, and Nick McKeown. 2013. Design principles for packet parsers. In ANCS’13. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  65. Andy Gospodarek. 2017. The Rise of SmartNICs—Offloading dataplane traffic to...software. Retrieved from https://youtu.be/AGSy51VlKaM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  70. Jong Hun Han, Prashanth Mundkur, Charalampos Rotsos et al. 2015. Blueswitch: Enabling provably consistent configuration of network switches. In ACM/IEEE ANCS’15.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  72. Sangjin Han, Keon Jang, KyoungSoo Park, and Sue Moon. 2010. PacketShader: A GPU-accelerated software router. In SIGCOMM’10. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  76. Michio Honda, Felipe Huici, Giuseppe Lettieri, and Luigi Rizzo. 2015. mSwitch: A highly-scalable, modular software switch. In SOSR’15. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  78. Stephen Ibanez, Gordon Brebner, Nick McKeown, and Noa Zilberman. 2019. The P4->NetFPGA workflow for line-rate packet processing. In FPGA’19. ACM.Google ScholarGoogle Scholar
  79. Netronome Systems Inc.2020. Netronome NFP-4000 Flow Processor. Retrieved. from https://www.netronome.com/media/documents/PB_NFP-4000-7-20.pdf.Google ScholarGoogle Scholar
  80. Xilinx Inc.2020. Vivado High-Level Synthesis. Retrieved from https://www.xilinx.com/products/design-tools/vivado.htmlGoogle ScholarGoogle Scholar
  81. Raj Jain and Sudipta Paul. 2013. Network virtualization and software defined networking for cloud computing: A survey. IEEE Commun. Mag. 51, 11 (2013).Google ScholarGoogle ScholarCross RefCross Ref
  82. Theo Jepsen, Daniel Alvarez, Nate Foster et al. 2019. Fast string searching on PISA. In SOSR’19. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  84. Xin Jin, Eric Keller, and Jennifer Rexford. 2012. Virtual switching without a hypervisor for a more secure cloud. In HotICE’12. USENIX.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  88. Lavanya Jose, Lisa Yan, George Varghese, and Nick McKeown. 2015. Compiling packet programs to reconfigurable switches. In NSDI’15. USENIX.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  92. Naga Katta, Omid Alipourfard, Jennifer Rexford, and David Walker. 2016. CacheFlow: Dependency-aware rule-caching for software-defined networks. In SOSR’16. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  94. S. Keshav and R. Sharma. 1998. Issues and trends in router design. IEEE Commun. Mag. 36, 5 (5 1998). DOI:https://doi.org/10.1109/35.668285.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  96. Changhoon Kim, Anirudh Sivaraman, Naga Katta et al. 2015. In-band network telemetry via programmable dataplanes. In ACM SIGCOMM’15 Demos. ACM.Google ScholarGoogle Scholar
  97. Hyojoon Kim, Joshua Reich, Arpit Gupta, Muhammad Shahbaz, Nick Feamster, and Russ Clark. 2015. Kinetic: Verifiable dynamic network control. In NSDI’15. USENIX.Google ScholarGoogle Scholar
  98. Kirill Kogan, Sergey Nikolenko, Ori Rottenstreich, William Culhane, and Patrick Eugster. 2014. SAX-PAC (Scalable And eXpressive PAcket Classification). In SIGCOMM’14. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. Teemu Koponen, Keith Amidon, Peter Balland et al. 2014. Network virtualization in multi-tenant datacenters. In NSDI’14. USENIX.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarCross RefCross Ref
  102. Sameer G. Kulkarni, Wei Zhang, Jinho Hwang et al. 2017. NFVnice: Dynamic backpressure and scheduling for NFV service chains. In SIGCOMM’17. ACM.Google ScholarGoogle Scholar
  103. Leslie Lamport. 1978. Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21, 7 (July 1978), 8. DOI: http://doi.acm.org/10.1145/359545.359563Google ScholarGoogle ScholarDigital LibraryDigital Library
  104. Rafael Laufer, Massimo Gallo, Diego Perino, and Anandatirtha Nandugudi. 2016. CliMB: Enabling network function composition with click middleboxes. In HotMiddlebox’16. ACM.Google ScholarGoogle Scholar
  105. Maysam Lavasani, Larry Dennison, and Derek Chiou. 2012. Compiling high throughput network processors. In ACM/SIGDA FPGA’12.Google ScholarGoogle Scholar
  106. P. H. W. Leong. 2008. Recent trends in FPGA architectures and applications. In DELTA’08. IEEE.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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. DOI:https://doi.org/10.1109/TNET.2009.2030188Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarCross RefCross Ref
  115. Ming Liu, Simon Peter, Arvind Krishnamurthy, and Phitchaya Mangpo Phothilimthana. 2019. E3: Energy-efficient microservices on SmartNIC-accelerated servers. In ATC’19. USENIX.Google ScholarGoogle Scholar
  116. Yaoqing Liu, Beichuan Zhang, and Lan Wang. 2013. FIFA: Fast incremental FIB aggregation. In INFOCOM’13. IEEE.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  118. Shouxi Luo, Hongfang Yu, and Laurent Vanbever. 2017. Swing state: Consistent updates for stateful and programmable data planes. In SOSR’17. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  122. Joao Martins, Mohamed Ahmed, and Costin Raiciu. 2014. ClickOS and the art of network function virtualization. In NSDI’14. USENIX.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  124. Nick McKeown. 2017. Programmable forwarding planes are here to stay. In SIGCOMM NetPL’17. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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/.Google ScholarGoogle Scholar
  128. Oliver Michel, John Sonchack, Eric Keller, and Jonathan M. Smith. 2018. Packet-level analytics in software without compromises. In HotCloud’18. USENIX.Google ScholarGoogle Scholar
  129. Radhika Mittal, Rachit Agarwal, Sylvia Ratnasamy et al. 2016. Universal packet scheduling. In NSDI’16. USENIX.Google ScholarGoogle Scholar
  130. Edgar Costa Molero, Stefano Vissicchio, and Laurent Vanbever. 2018. Hardware-accelerated network control planes. In HotNets’18. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  133. Christopher Monsanto, Joshua Reich, Nate Foster, Jennifer Rexford, and David Walker. 2013. Composing software-defined networks. In NSDI’13. USENIX.Google ScholarGoogle Scholar
  134. Masoud Moshref, Apoorv Bhargava, and Adhip Gupta. 2014. Flow-level state transition as a new switch primitive for SDN. In HotSDN’14. ACM.Google ScholarGoogle Scholar
  135. Srinivas Narayana, Anirudh Sivaraman, Vikram Nathan et al. 2017. Language-directed hardware design for network performance monitoring. In SIGCOMM’17. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  143. BenPfaff. 2013. RFC 7047: The Open vSwitch Database Management Protocol. Retrieved from https://tools.ietf.org/html/rfc7047.Google ScholarGoogle Scholar
  144. Ben Pfaff. 2016. Converging approaches in software switches. Retrieved from https://benpfaff.org/ blp/keynote.pdf.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  150. DPDK Project. 2020. Data Plane Development Kit. Retrieved from https://www.dpdk.org/.Google ScholarGoogle Scholar
  151. The Fast Data Project. 2019. FD.io. Retrieved from https://fd.io.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  156. Luigi Rizzo. 2012. Netmap: A novel framework for fast packet I/O. In ATC’12. USENIX.Google ScholarGoogle Scholar
  157. Luigi Rizzo and Giuseppe Lettieri. 2012. VALE, a switched ethernet for virtual machines. In CoNEXT’12. ACM.Google ScholarGoogle Scholar
  158. Fabian Ruffy, Tao Wang, and Anirudh Sivarama. 2020. Gauntlet: Finding bugs in compilers for programmable packet processing. In OSDI’20. USENIX.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  163. Vyas Sekar, Norbert Egi, Sylvia Ratnasamy et al. 2012. Design and implementation of a consolidated middlebox architecture. In NSDI’12. USENIX.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  166. Muhammad Shahbaz and Nick Feamster. 2015. The case for an intermediate representation for programmable data planes. In SOSR’15. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  168. Naveen Kr. Sharma, Ming Liu, Kishore Atreya, and Arvind Krishnamurthy. 2018. Approximating fair queueing on reconfigurable switches. In NSDI’18. USENIX.Google ScholarGoogle Scholar
  169. Vishal Shrivastav. 2019. Fast, scalable, and programmable packet scheduler in hardware. In SIGCOMM’19. ACM.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  171. Giuseppe Siracusano and Roberto Bifulco. 2018. In-network Neural Networks. arxiv:1801.05731.Google ScholarGoogle Scholar
  172. Anirudh Sivaraman, Alvin Cheung, Mihai Budiu et al. 2016. Packet transactions: High-level programming for line-rate switches. In SIGCOMM’16. ACM.Google ScholarGoogle Scholar
  173. Anirudh Sivaraman, Suvinay Subramanian, Mohammad Alizadeh et al. 2016. Programmable packet scheduling at line rate. In SIGCOMM’16. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  176. V. Srinivasan, S. Suri, and G. Varghese. 1999. Packet classification using tuple space search. In SIGCOMM’99. ACM.Google ScholarGoogle Scholar
  177. W. P. Stevens, G. J. Myers, and L. L. Constantine. 1974. Structured design. IBM Syst. J. 13, 2 (1974).Google ScholarGoogle ScholarDigital LibraryDigital Library
  178. Chen Sun, Jun Bi, Zhilong Zheng, Heng Yu, and Hongxin Hu. 2017. NFP: Enabling network function parallelism in NFV. In SIGCOMM’17. ACM.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  184. Javier Verdú, Mario Nemirovsky, Jorge García, and Mateo Valero. 2008. Workload characterization of stateful networking applications. In ISHPC’08. Springer.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  186. Han Wang, Robert Soulé, and Huynh Tu Dang. 2017. P4FPGA: A rapid prototyping framework for P4. In SOSR’17.Google ScholarGoogle Scholar
  187. Damon Wischik, Mark Handley, and Marcelo Bagnulo Braun. 2008. The resource pooling principle. ACM SIGCOMM Comput. Commun. Rev. 38, 5 (2008).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  189. L. Yang et al. 2004. RFC 3746: Forwarding and Control Element Separation (ForCES) Framework. Retrieved from https://tools.ietf.org/html/rfc3746.Google ScholarGoogle Scholar
  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).Google ScholarGoogle ScholarDigital LibraryDigital Library
  191. T. Yang, G. Xie, A. X. Liu et al. 2018. Constant IP lookup with FIB explosion. IEEE/ACM Trans. Netw. 26, 4 (2018).Google ScholarGoogle ScholarDigital LibraryDigital Library
  192. Minlan Yu, Lavanya Jose, and Rui Miao. 2013. Software defined traffic measurement with OpenSketch. In NSDI’13.Google ScholarGoogle Scholar
  193. Yifei Yuan, Dong Lin, Rajeev Alur, and Boon Thau Loo. 2015. Scenario-based programming for SDN policies. In CoNEXT’15. ACM.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar

Index Terms

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

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • 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

          Copyright © 2021 ACM

          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: 3 May 2021
          • Revised: 1 January 2021
          • Accepted: 1 January 2021
          • Received: 1 August 2020
          Published in csur Volume 54, Issue 4

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article
          • Research
          • Refereed

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        HTML Format

        View this article in HTML Format .

        View HTML Format