{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,7,9]],"date-time":"2024-07-09T01:34:51Z","timestamp":1720488891048},"reference-count":37,"publisher":"MDPI AG","issue":"3","license":[{"start":{"date-parts":[[2018,8,7]],"date-time":"2018-08-07T00:00:00Z","timestamp":1533600000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100009888","name":"Regione Toscana","doi-asserted-by":"publisher","award":["POR FESR 2014 \u2013 2020: 7429.31052017.113000046"],"id":[{"id":"10.13039\/501100009888","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["JSAN"],"abstract":"The maturity level reached by today\u2019s commodity platforms makes even low-cost PCs viable alternatives to dedicated hardware to implement real network functions without sacrificing performance. Indeed, the availability of multi-core processing packages and multi-queue network interfaces that can be managed by accelerated I\/O frameworks, provides off-the-shelf servers with the necessary power capability for running a broad variety of network applications with near hardware-class performance. At the same time, the introduction of the Software Defined Networks (SDN) and the Network Functions Virtualization (NFV) paradigms call for new programming abstractions and tools to allow this new class of network devices to be flexibly configured and functionally repurposed from the network control plane. The paper presents the ongoing work towards Enif-Lang (Enhanced Network processIng Functional Language), a functional language for programming network functions over generic middleboxes running the Linux operating system. The language addresses concurrent programming by design and is targeted at developing simple stand-alone applications as well as pre-processing stages of packet elaborations. Enif-Lang is implemented as a Domain Specific Language embedded in the Haskell language and inherits the main principles of its ancestor, including the strong typedness and the concept of function compositions. Complex network functions are implemented by composing a set of elementary operations (primitives) by means of a compact yet expressive language grammar. Throughout the paper, the description of the design principles and features of Enif-Lang are accompanied by examples and use cases. In addition, a preliminary performance assessment is carried out to prove the effectiveness of the language for developing practical applications with the performance level required by 5G systems and the Tactile Internet.<\/jats:p>","DOI":"10.3390\/jsan7030034","type":"journal-article","created":{"date-parts":[[2018,8,7]],"date-time":"2018-08-07T15:20:23Z","timestamp":1533655223000},"page":"34","source":"Crossref","is-referenced-by-count":5,"title":["Enif-Lang: A Specialized Language for Programming Network Functions on Commodity Hardware"],"prefix":"10.3390","volume":"7","author":[{"given":"Nicola","family":"Bonelli","sequence":"first","affiliation":[{"name":"Dipartimento di Ingegneria dell\u2019Informazione, Universit\u00e0 di Pisa, Via G. Caruso 16, 56122 Pisa, Italy"}]},{"given":"Stefano","family":"Giordano","sequence":"additional","affiliation":[{"name":"Dipartimento di Ingegneria dell\u2019Informazione, Universit\u00e0 di Pisa, Via G. Caruso 16, 56122 Pisa, Italy"}]},{"given":"Gregorio","family":"Procissi","sequence":"additional","affiliation":[{"name":"Dipartimento di Ingegneria dell\u2019Informazione, Universit\u00e0 di Pisa, Via G. Caruso 16, 56122 Pisa, Italy"}]}],"member":"1968","published-online":{"date-parts":[[2018,8,7]]},"reference":[{"key":"ref_1","doi-asserted-by":"crossref","unstructured":"Fusco, F., and Deri, L. (2010, January 1\u201330). High speed network traffic analysis with commodity multi-core systems. Proceedings of the 10th ACM SIGCOMM Conference on Internet Measurement (IMC\u201910), Melbourne, Australia.","DOI":"10.1145\/1879141.1879169"},{"key":"ref_2","unstructured":"Deri, L. (2018, June 15). PF_RING ZC (Zero Copy). Available online: http:\/\/www.ntop.org\/products\/packet-capture\/pf_ring\/pf_ring-zc-zero-copy\/."},{"key":"ref_3","unstructured":"Rizzo, L. (2012, January 13\u201315). Netmap: A novel framework for fast packet I\/O. Proceedings of the 2012 USENIX Annual Technical Conference, Boston, MA, USA."},{"key":"ref_4","unstructured":"(2018, June 15). DPDK. Available online: http:\/\/dpdk.org."},{"key":"ref_5","doi-asserted-by":"crossref","first-page":"1819","DOI":"10.1109\/JSAC.2016.2558998","article-title":"Network Traffic Processing With PFQ","volume":"34","author":"Bonelli","year":"2016","journal-title":"IEEE J. Sel. Areas Commun."},{"key":"ref_6","doi-asserted-by":"crossref","first-page":"69","DOI":"10.1145\/1355734.1355746","article-title":"OpenFlow: Enabling Innovation in Campus Networks","volume":"38","author":"McKeown","year":"2008","journal-title":"SIGCOMM Comput. Commun. Rev."},{"key":"ref_7","doi-asserted-by":"crossref","first-page":"87","DOI":"10.1145\/2656877.2656890","article-title":"P4: Programming Protocol-independent Packet Processors","volume":"44","author":"Bosshart","year":"2014","journal-title":"SIGCOMM Comput. Commun. Rev."},{"key":"ref_8","doi-asserted-by":"crossref","first-page":"44","DOI":"10.1145\/2602204.2602211","article-title":"OpenState: Programming Platform-independent Stateful Openflow Applications Inside the Switch","volume":"44","author":"Bianchi","year":"2014","journal-title":"SIGCOMM Comput. Commun. Rev."},{"key":"ref_9","unstructured":"(2018, June 15). The BEBA (Behavioral Based Forwarding) H2020 EU Project. Available online: https:\/\/cordis.europa.eu\/project\/rcn\/194157_en.html."},{"key":"ref_10","doi-asserted-by":"crossref","unstructured":"Bonelli, N., Giordano, S., Procissi, G., and Abeni, L. (2014, January 20\u201321). A Purely Functional Approach to Packet Processing. Proceedings of the Tenth ACM\/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS\u201914), Los Angeles, CA, USA.","DOI":"10.1145\/2658260.2658269"},{"key":"ref_11","doi-asserted-by":"crossref","unstructured":"Bonelli, N., Giordano, S., and Procissi, G. (2017, January 3\u20137). A pipeline functional language for stateful packet processing. Proceedings of the 2017 IEEE Conference on Network Softwarization (NetSoft), Bologna, Italy.","DOI":"10.1109\/NETSOFT.2017.8004226"},{"key":"ref_12","doi-asserted-by":"crossref","unstructured":"Braun, L., Didebulidze, A., Kammenhuber, N., and Carle, G. (2010, January 1\u201330). Comparing and improving current packet capturing solutions based on commodity hardware. Proceedings of the 10th ACM SIGCOMM Conference on Internet Measurement (IMC\u201910), Melbourne, Australia.","DOI":"10.1145\/1879141.1879168"},{"key":"ref_13","doi-asserted-by":"crossref","first-page":"1364","DOI":"10.1109\/COMST.2015.2424887","article-title":"Commodity Packet Capture Engines: Tutorial, Cookbook and Applicability","volume":"17","author":"Moreno","year":"2015","journal-title":"IEEE Commun. Surv. Tutor."},{"key":"ref_14","doi-asserted-by":"crossref","unstructured":"Gallenm\u00fcller, S., Emmerich, P., Wohlfart, F., Raumer, D., and Carle, G. (2015, January 7\u20138). Comparison of Frameworks for High-Performance Packet IO. Proceedings of the Eleventh ACM\/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS\u201915), Oakland, CA, USA.","DOI":"10.1109\/ANCS.2015.7110118"},{"key":"ref_15","unstructured":"SolarFlare (2018, June 15). OpenOnLoad. Available online: http:\/\/www.openonload.org."},{"key":"ref_16","doi-asserted-by":"crossref","unstructured":"Moreno, V., R\u00edo, P.M.S.D., Ramos, J., Dorado, J.L.G., Gonzalez, I., Arribas, F.J.G., and Aracil, J. (2014, January 20\u201322). Packet Storage at Multi-gigabit Rates Using Off-the-Shelf Systems. Proceedings of the 2014 IEEE International Conference on High Performance Computing and Communications (HPCC\u201914), Paris, France.","DOI":"10.1109\/HPCC.2014.81"},{"key":"ref_17","doi-asserted-by":"crossref","unstructured":"Marian, T., Lee, K.S., and Weatherspoon, H. (2012, January 29\u201330). NetSlices: Scalable multi-core packet processing in user-space. Proceedings of the 2012 ACM\/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS), Austin, TX, USA.","DOI":"10.1145\/2396556.2396563"},{"key":"ref_18","unstructured":"Bonelli, N., Vigna, F.D., Giordano, S., and Procissi, G. (2018). Packet Fan-Out Extension for the pcap Library. IEEE Trans. Netw. Serv. Manag."},{"key":"ref_19","unstructured":"Linux Kernel Contributors (2018, June 15). PACKET_MMAP. Available online: https:\/\/www.kernel.org\/doc\/Documentation\/networking\/packet_mmap.txt."},{"key":"ref_20","doi-asserted-by":"crossref","unstructured":"Han, S., Jang, K., Park, K., and Moon, S. (September, January 30). PacketShader: A GPU-accelerated software router. Proceedings of the ACM SIGCOMM 2010 Conference on SIGCOMM (SIGCOMM\u201910), New Delhi, India.","DOI":"10.1145\/1851182.1851207"},{"key":"ref_21","doi-asserted-by":"crossref","unstructured":"Egi, N., Greenhalgh, A., Handley, M., Hoerdt, M., Huici, F., Mathy, L., and Papadimitriou, P. (2010, January 30). Forwarding path architectures for multicore software routers. Proceedings of the Workshop on Programmable Routers for Extensible Services of Tomorrow (PRESTO\u201910), Philadelphia, PA, USA.","DOI":"10.1145\/1921151.1921155"},{"key":"ref_22","doi-asserted-by":"crossref","first-page":"217","DOI":"10.1145\/319344.319166","article-title":"The Click modular router","volume":"33","author":"Morris","year":"1999","journal-title":"SIGOPS Oper. Syst. Rev."},{"key":"ref_23","doi-asserted-by":"crossref","unstructured":"Dobrescu, M., Egi, N., Argyraki, K., Chun, B., Fall, K., Iannaccone, G., Knies, A., Manesh, M., and Ratnasamy, S. (2009, January 11\u201314). RouteBricks: Exploiting parallelism to scale software routers. Proceedings of the Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles (ACM SIGOPS), Big Sky, MT, USA.","DOI":"10.1145\/1629575.1629578"},{"key":"ref_24","doi-asserted-by":"crossref","unstructured":"Rizzo, L., Carbone, M., and Catalli, G. (2012, January 25\u201330). Transparent acceleration of software packet forwarding using netmap. Proceedings of the 2012 IEEE INFOCOM, Orlando, FL, USA.","DOI":"10.1109\/INFCOM.2012.6195638"},{"key":"ref_25","doi-asserted-by":"crossref","unstructured":"Barbette, T., Soldani, C., and Mathy, L. (2015, January 7\u20138). Fast Userspace Packet Processing. Proceedings of the Eleventh ACM\/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS\u201915), Oakland, CA, USA.","DOI":"10.1109\/ANCS.2015.7110116"},{"key":"ref_26","doi-asserted-by":"crossref","unstructured":"Sun, W., and Ricci, R. (2013, January 21\u201322). Fast and Flexible: Parallel Packet Processing with GPUs and Click. Proceedings of the Architectures for Networking and Communications Systems 2013 (ANCS\u201913), San Jose, CA, USA.","DOI":"10.1109\/ANCS.2013.6665173"},{"key":"ref_27","doi-asserted-by":"crossref","unstructured":"Bonelli, N., Procissi, G., Sanvito, D., and Bifulco, R. (2017, January 6\u20138). The acceleration of OfSoftSwitch. Proceedings of the 2017 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Berlin, Germany.","DOI":"10.1109\/NFV-SDN.2017.8169842"},{"key":"ref_28","doi-asserted-by":"crossref","first-page":"79","DOI":"10.1145\/2377677.2377690","article-title":"Blockmon: A high-performance composable network traffic measurement system","volume":"42","author":"Huici","year":"2012","journal-title":"SIGCOMM Comput. Commun. Rev."},{"key":"ref_29","unstructured":"SnabbCo (2018, June 15). Snabb Switch. Available online: https:\/\/github.com\/SnabbCo\/snabbswitch."},{"key":"ref_30","doi-asserted-by":"crossref","unstructured":"Bonola, M., Bifulco, R., Petrucci, L., Pontarelli, S., Tulumello, A., and Bianchi, G. (2017, January 12\u201314). Implementing advanced network functions for datacenters with stateful programmable data planes. Proceedings of the 2017 IEEE International Symposium on Local and Metropolitan Area Networks (LANMAN), Osaka, Japan.","DOI":"10.1109\/LANMAN.2017.7972130"},{"key":"ref_31","unstructured":"Monsanto, C., Reich, J., Foster, N., Rexford, J., and Walker, D. (2013, January 2\u20135). Composing Software-defined Networks. Proceedings of the 10th USENIX Conference on Networked Systems Design and Implementation (NSDI\u201913), Lombard, IL, USA."},{"key":"ref_32","unstructured":"(2018, June 15). The Frenetic Project. Available online: http:\/\/frenetic-lang.org\/."},{"key":"ref_33","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/1963559.1963562","article-title":"Application-Tailored I\/O with Streamline","volume":"29","author":"Bos","year":"2011","journal-title":"ACM Trans. Comput. Syst."},{"key":"ref_34","unstructured":"(2018, June 15). VPP. Available online: https:\/\/wiki.fd.io\/view\/VPP."},{"key":"ref_35","unstructured":"(2018, June 15). Linux Enhanced BPF (eBPF) Tracing Tools. Available online: http:\/\/www.brendangregg.com\/ebpf.html."},{"key":"ref_36","doi-asserted-by":"crossref","first-page":"122","DOI":"10.1016\/j.jalgor.2003.12.002","article-title":"Cuckoo hashing","volume":"51","author":"Pagh","year":"2004","journal-title":"J. Algorithms"},{"key":"ref_37","unstructured":"(2018, June 15). The Bro Network Security Monitor. Available online: https:\/\/www.bro.org."}],"container-title":["Journal of Sensor and Actuator Networks"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2224-2708\/7\/3\/34\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,6,12]],"date-time":"2024-06-12T01:28:31Z","timestamp":1718155711000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2224-2708\/7\/3\/34"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,8,7]]},"references-count":37,"journal-issue":{"issue":"3","published-online":{"date-parts":[[2018,9]]}},"alternative-id":["jsan7030034"],"URL":"https:\/\/doi.org\/10.3390\/jsan7030034","relation":{},"ISSN":["2224-2708"],"issn-type":[{"value":"2224-2708","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,8,7]]}}}