论文阅读:ClickNF: a Modular Stack for Custom Network Functions
摘要:
网络功能虚拟化最近允许用等效的软件实现代替专用设备, Click路由器是朝这个方向迈出的第一步,它定义了用于通用数据包处理的模块化平台。 尽管Click具有重大影响,但它不提供本机L4实现,而仅使用非阻塞I / O,从而将其范围限制为L2-L3网络功能。 为了克服这些限制,我们引入了ClickNF,它为中间盒和服务器端网络功能的开发提供了模块化的传输和应用程序层构建块。 我们对ClickNF进行评估,以突出其最先进的性能,并通过从简单元素组成复杂功能来展示其模块化。 ClickNF是开源的,并且是公开可用的。
背景/问题:
网络功能虚拟化(NFV)引发了用于部署灵活网络功能的新方法,范围从虚拟机到新的数据包处理框架,网络功能可以结合对状态传输逻辑的了解,将数据包转发和简单的标头重写结合在一起,并有可能执行复杂的应用层操作。
模块化的L2-L7数据平面将为开发新的网络功能提供多个优势,例如,解耦状态和数据包处理,细粒度协议行为的可扩展性,模块重用以及简化跨层协议优化和调试的功能。在现有方法中,Click由于其模块化和可扩展性,可以说是此类架构的最佳起点。
但是Click仍然缺少一些功能,无法成为具有网络功能的全栈模块化数据平面:
首先,它缺乏L4本机实现,因此无法进行跨层优化和堆栈自定义
其次,它不支持阻塞I / O原语,迫使开发人员使用更复杂的异步非阻塞I / O
第三,Click应用程序必须诉诸操作系统堆栈,这会导致严重的I / O瓶颈
最后,尽管有最近的改进,但Click不支持硬件卸载和高效的计时器管理,从而使其无法在特定情况下高速扩展
解决方法:
在本文中,我们介绍ClickNF,该框架克服了Click的限制,并允许在Click中进行L2-L7模块化网络功能开发,通过传统的Click元素,ClickNF使开发人员可以根据需要检查整个网络堆栈。
首先,它引入了模块化TCP实现,该实现支持选项,拥塞控制和RTT估计
其次,它引入了阻塞的I / O支持,从而为应用程序提供了不间断运行的幻觉
第三,它公开了标准的套接字,零复制和套接字多路复用API,以及基本的应用程序层构造块
最后,为了提高可扩展性,ClickNF集成了Fastclick 中首次引入的I / O加速技术,例如数据平面开发套件(DPDK)和批处理,以及对硬件加速的额外支持以及改进的Click的计时器管理系统
ClickNF可用于部署大量网络功能,对于中间盒,拆分TCP,L7防火墙,TLS / SSL代理,HTTP缓存等需要TCP终止。在网络边缘,ClickNF可以用于使用套接字多路复用基元来处理I / O的高速模块化L7服务器。作为证明,我们组成了一个HTTP缓存服务器,该服务器具有可选的SSL / TLS终止和SOCKS4代理,我们展示了ClickNF在提供L2–L7模块化的同时,可以提供与现有用户空间堆栈相同的性能和可伸缩性。
具体结构:
在讲ClickNF之前要说一下Click:
Click中的路由器由一组细粒度的数据包处理模块,元素构建而成,可实现简单的功能(例如IP路由)。一个配置文件将这些元素连接成一个有向图,有向图的边缘指定了数据包应经过的路径,根据配置,用户可以实现任意复杂度的网络功能(例如,交换机)。
每个元素可以定义任意数量的输入和输出端口以连接到其他元素,端口以推或拉模式运行。在推式连接上,数据包从源元素开始,向下游移动到目标元素,在拉连接上,目标元素从上游请求一个数据包,上游将返回数据包,否则返回空指针。除了推动或拉动之外,端口还可能是不可知的,并且根据其所连接的端口而表现为推动或拉动。
在其基础实施中,Click使用任务队列和计时器优先级队列,无限循环按顺序运行任务,并在到期时运行计时器。任务是元素定义的功能,需要CPU调度,并启动一系列的入栈或出栈请求,但是大多数元素不需要它们自己的任务,因为它们的推和拉方法是由预定任务调用的。计时器回调函数类似于任务,在特定时间安排。
ClickNF的目的是通过提供用于构建模块化L2-L7网络功能的框架,使开发人员不受限制地访问整个堆栈,而无需担心其行为的正确性或事件驱动的特定于域的API所添加的约束。 ClickNF的设计将Click的模块化和灵活性与高速数据包I / O和现成的用于传输和应用程序层功能的协议构建块相结合。
图1将ClickNF设计与传统OS和用户空间堆栈进行了比较:

与其他将网络堆栈的复杂性隐藏在一个整体的包中或未在所有层引入模块化的其他方法不同,我们将整个L2–L7堆栈分解为几个简单的元素,可以通过重新连接配置文件来分别替换,修改或移除它们,提供其他解决方案无法提供的灵活性。另外,可以在需要时将元素聚合到单个宏元素中以隐藏复杂性。
这种细粒度分解的原理是双重的。首先,简单的元素允许修改和控制网络协议的各个方面和机制,这使得模块可以在其他情况下重用,例如回收现有的拥塞控制策略以实施新协议(如QUIC )或新策略(如BBR 或DCTCP)。其次,这种方法有助于解耦协议状态管理和数据包处理,简化复杂的任务,例如服务器之间或跨异构硬件(例如,CPU和智能NIC之间)的完整状态迁移。
论文阅读:ClickNF: a Modular Stack for Custom Network Functions的更多相关文章
- [论文阅读笔记] Community aware random walk for network embedding
[论文阅读笔记] Community aware random walk for network embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 先前许多算法都 ...
- [论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding
[论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding 本文结构 解决问题 主要贡献 算法原理 实验结果 参考文献 ...
- [论文阅读] RNN 在阿里DIEN中的应用
[论文阅读] RNN 在阿里DIEN中的应用 0x00 摘要 本文基于阿里推荐DIEN代码,梳理了下RNN一些概念,以及TensorFlow中的部分源码.本博客旨在帮助小伙伴们详细了解每一步骤以及为什 ...
- 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)
白翔的CRNN论文阅读 1. 论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...
- BITED数学建模七日谈之三:怎样进行论文阅读
前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- Deep Reinforcement Learning for Dialogue Generation 论文阅读
本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
随机推荐
- Oracle表的Rowid字段
Rowid 字段类型: Rowid 是一行数据的一个唯一标识. ROWID 是数据的详细地址,通过 rowid,oracle 可以快速的定位某行具体的数据的位置. ROWID 可以分为物理 rowid ...
- 【Bell-Ford 算法】CLRS Exercise 24.1-4,24.1-6
本文是一篇笔记,大部分内容取自 CLRS 第三版,第 24.1 节. Exercise 24.1-4 Modify the Bellman-Ford algorithm so that it sets ...
- 版本控制器之SVN(二)
安装重启以后,在菜单栏找到TortoiseSVN程序 启动以后 点击: 填写相应的信息: 可以看到项目的相关信息 选中仓库,右键 > Browse Repository 进入如下界面: 可以打开 ...
- C# 面向对象3 静态和非静态的区别
静态和非静态的区别 1.在非静态类中,既可以有实例成员(非静态成员),也可以有静态成员. 2.在调用实例成员的时候,需要使用对象名.实例成员; 在调用静态成员的时候,需要使用类名.静态成员名; 总结: ...
- [转载]MySQL之char、varchar和text的设计
[转载]MySQL之char.varchar和text的设计 来源:https://www.cnblogs.com/billyxp/p/3548540.html 首先我们先普及一下常识: 1.char ...
- css--内凹圆角
<div class="box"></div> :root { --r: 2em; } .box { overflow: hidden; position: ...
- N4语法
第一期 授受关系 这里讲的授受关系是指“物的收受”也就是前后两个主体之前的“物的收受”. 请看以下三个基本句型:(从接收者B来分析) 1. AはBに-を あげる(平辈.晚辈) (A给 ...
- 分布式特点理解-Zookeeper准备
分布式环境特点 分布性 地域,区域,机房,服务器不同导致分布性 并发性 程序运行中,并发性操作很常见,比如同一个分布式系统中的多个节点,同时访问一个共享资源(数据库,分布式存储) 无序性 进程之间的消 ...
- IO模型(epoll)--详解-01
写在前面 从事服务端开发,少不了要接触网络编程.epoll作为linux下高性能网络服务器的必备技术至关重要,nginx.redis.skynet和大部分游戏服务器都使用到这一多路复用技术. 本文会从 ...
- xhost + command not found
如下是一个示例: 原本我以为在没有联网的情况下.不能使用yum 的.可能是本地配置了yum 了吧也可以使用 1. [oracle@11GR2-test ~]$ export DISPLAY=192.1 ...