{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,25]],"date-time":"2025-10-25T14:17:53Z","timestamp":1761401873333,"version":"3.41.0"},"reference-count":20,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2016,12,23]],"date-time":"2016-12-23T00:00:00Z","timestamp":1482451200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGCOMM Comput. Commun. Rev."],"published-print":{"date-parts":[[2016,12,23]]},"abstract":"<jats:p>Click has significant advantages for middlebox development, including modularity, extensibility, and reprogrammability. Despite these features, Click still has no native TCP support and only uses nonblocking I\/O, preventing its applicability to middleboxes that require access to application data and blocking I\/O. In this paper, we attempt to bridge this gap by introducing Click middleboxes (CliMB). CliMB provides a full-fledged modular TCP layer supporting TCP options, congestion control, both blocking and nonblocking I\/O, as well as socket and zero-copy APIs to applications. As a result, any TCP network function may now be realized in Click using a modular L2-L7 design. As proof of concept, we develop a zero-copy SOCKS proxy using CliMB that shows up to 4x gains compared to an equivalent implementation using the Linux in-kernel network stack.<\/jats:p>","DOI":"10.1145\/3027947.3027951","type":"journal-article","created":{"date-parts":[[2016,12,23]],"date-time":"2016-12-23T17:44:09Z","timestamp":1482515049000},"page":"17-22","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":13,"title":["CliMB"],"prefix":"10.1145","volume":"46","author":[{"given":"Rafael","family":"Laufer","sequence":"first","affiliation":[{"name":"Nokia Bell Labs"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Massimo","family":"Gallo","sequence":"additional","affiliation":[{"name":"Nokia Bell Labs"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Diego","family":"Perino","sequence":"additional","affiliation":[{"name":"Telefonica Research"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Anandatirtha","family":"Nandugudi","sequence":"additional","affiliation":[{"name":"INRIA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2016,12,23]]},"reference":[{"key":"e_1_2_1_1_2","doi-asserted-by":"publisher","DOI":"10.1145\/2396556.2396566"},{"key":"e_1_2_1_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/2774993.2774998"},{"key":"e_1_2_1_3_2","doi-asserted-by":"publisher","DOI":"10.1109\/ANCS.2015.7110116"},{"volume-title":"Proc. of USENIX OSDI","year":"2014","author":"Belay A.","key":"e_1_2_1_4_2"},{"key":"e_1_2_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/2535828.2535836"},{"key":"e_1_2_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/2934872.2934875"},{"volume-title":"Proc. of USENIX NSDI","year":"2014","author":"Hwang J.","key":"e_1_2_1_7_2"},{"key":"e_1_2_1_8_2","unstructured":"Intel DPDK framework. http:\/\/dpdk.org.  Intel DPDK framework. http:\/\/dpdk.org."},{"volume-title":"Proc. of USENIX NSDI","year":"2014","author":"Jeong E.","key":"e_1_2_1_9_2"},{"key":"e_1_2_1_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/2741948.2741969"},{"key":"e_1_2_1_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/354871.354874"},{"key":"e_1_2_1_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/2619239.2626311"},{"volume-title":"Proc. of USENIX NSDI","year":"2014","author":"Martins J.","key":"e_1_2_1_13_2"},{"key":"e_1_2_1_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/2815400.2815423"},{"key":"e_1_2_1_15_2","doi-asserted-by":"publisher","DOI":"10.1109\/INFCOMW.2016.7562049"},{"volume-title":"Proc. of USENIX Security","year":"2012","author":"Rizzo L.","key":"e_1_2_1_16_2"},{"volume-title":"Proc. of USENIX NSDI","year":"2012","author":"Sekar V.","key":"e_1_2_1_17_2"},{"key":"e_1_2_1_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/2342356.2342359"},{"key":"e_1_2_1_19_2","doi-asserted-by":"publisher","DOI":"10.5555\/2537857.2537861"},{"volume-title":"Proc. of USENIX NSDI, poster","year":"2012","author":"Woo S.","key":"e_1_2_1_20_2"}],"container-title":["ACM SIGCOMM Computer Communication Review"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3027947.3027951","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3027947.3027951","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:24:01Z","timestamp":1750220641000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3027947.3027951"}},"subtitle":["Enabling Network Function Composition with Click Middleboxes"],"short-title":[],"issued":{"date-parts":[[2016,12,23]]},"references-count":20,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2016,12,23]]}},"alternative-id":["10.1145\/3027947.3027951"],"URL":"https:\/\/doi.org\/10.1145\/3027947.3027951","relation":{},"ISSN":["0146-4833"],"issn-type":[{"type":"print","value":"0146-4833"}],"subject":[],"published":{"date-parts":[[2016,12,23]]},"assertion":[{"value":"2016-12-23","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}