日前,Linux组织宣布成立开源项目IO Visor,该项目主要针对Linux内核的输入/输出请求任务。这个项目听上去似乎很深奥,事实上该项目与网络有很大的相关性。IO Visor无需借助网络硬件就可以创建整个网络的拓扑。
在实际应用场景中,IO Visor通过增加Linux内核中运行的元件数量可以有效地提高虚拟交换机等网络元件的性能。在去年VMware主办的 Open vSwitch大会上就讨论过这个问题,当时围绕“将一些数据包处理移出Linux内核是否会更好?”展开讨论。
创建IO Visor项目得到了业内很多公司的支持,其中包括 Barefoot Networks、Broadcom、Canonical、 Cavium、Cisco、Huawei、Intel、PLUMgrid以及SUSE。其中PLUMgrid是核心成员,向IO Visor项目贡献了初始代码。
相较于涉及整个云计算的OpenStack,IO Visor更加侧重于Linux内部,内核作为中枢神经将应用的输入/输出请求与硬件进行连接。Linux组织的执行董事Jim Zemlin认为,无论是内核中还是内核上层都有大量的代码开发和创新研究工作。而相关设备商正试图集体完成这项工作。
如下图所示,其他开放网络项目可能更加深入堆栈,尤其是开放计算项目,已经深入到硬件层面了,但是IO Visor项目却是其中最深奥的。
IO Visor面对的挑战是Linux内核没有虚拟化,因为Linux内核与内存、CPU等硬件元件直接对话,其性能远胜于Linux用户空间。但是没有虚拟化就意味着Linux内核一次只能处理一个请求。为了适应一个新的请求——一个新的IO模块——需要重新编译内核。
IO Visor希望虚拟机可以自发的添加到内核空间中,这就需要修改内核中的Berkeley Packet Filter (BPF)。顾名思义,BPF就是设置一个过滤器只允许确定类型的数据通过。
这样一来,网络功能虚拟化(NFV)就可能受到一定的影响。可以在一个内核中运行多个虚拟网络功能(VNFs),在内核中运行一个完整的服务链,从而享受到相应的性能优势。同样受到影响的还有安全应用,想象一下,虚拟防火墙和安全防御系统可以在内核中自动运行,并且无需进行重编译。思科的软件战略的高级主管 Lauren Cooney说道“在IO Visor帮助下就可以实现真正的实时处理,而不是启动-关闭-重启。”
如果规模足够大,就可以借助IO Visor创建一个包含多个计算结点的完整虚网,内核会负责数据层面所有的处理工作。实现这项工作的机制称为IO Visor引擎,IO Visor项目的主要工作就是开发这样的引擎、与之配套的插件和开发工具。
不可否认IO Visor确实可以提高应用性能,但是如何将大量的任务移动到内核空间中也是一个不小的问题,毕竟目前几乎所有虚拟机都运行在用户空间中。PLUMgrid产品与市场副总裁Wendy Cartee说道:“我相信开发人员经过一段时期的琢磨后一定可以判断出哪些任务适合在内核空间中运行,哪些任务适合在用户空间运行,这两个空间肯定都会得到充分的利用。”
PLUMgrid 如何邂逅IO Visor
自PLUMgrid成立之初就向Linux组织提出虚拟化内核的想法。早期在进行虚拟网络堆栈开发的时候PLUMgrid就发现了其中的局限性。尤其是添加路由、交换机后问题更为明显,Cartee说道“在部署过程中经常会出现一个集中结点,所有的流量都通过这个集中结点,这样一来就不是完全的分布式了。”
PLUMgrid一直在钻研这个问题,事实上很多开发者就是被PLUMgrid的这个想法所吸引而加入这家公司。
本文转载自SDNLAB,原文链接:http://www.sdnlab.com/13144.html