分享

软交换的发展

 java_laq小馆 2013-10-11

软交换的发展(第一部分:简介与背景)

原文地址:http://networkheresy./2011/06/14/the-rise-of-soft-switching-part-i-introduction-and-background/

      【这个系列由Jesse Gross, Andrew Lambeth, Ben Pfaff, Martin Casado 撰写而成。Ben在OpenFlow的设计实现初期就参与并一直持续地在做出贡献,他也是Open vSwtich的主要开发者之一。 Jesse也是Open vSwtich的主要开发者之一并负责和kernel的对接与数据通路。Andrew在虚拟网络界混了很长的时间了,其在VMware主导开发了VDS分 布式交换项目。这些作者目前都工作在Nicira(开发OVS的公司)】

       你有多少次被卷入这样的争论中了?

       网卡厂商:”你应该把虚拟机的网络放在网卡上去做。它能直接访问主机内存并且能使用一颗带TCAM(三态内容寻址存储器,主要用于快速查找ACL、路由等表项)的交换芯片来做快速查表。比x86芯片查得快多了,很明显网卡是做虚拟机之间网络的正确地方。“

       交换机厂商:”扯淡,你应该把虚拟机网络放在交换机上去做。只需要加一个标签把它发出去,让专业人士来做交换与路由吧。不仅是因为有更大的TCAM(读者 可以想象一下交换机比网卡大多少),而且那正是我们的赖以生存的技能啊。你既然可以把外部网络放心地交给Cisco,那虚拟机间的网络也交给我们处理吧。 交换机是做虚拟机之间网络的正确地方。“

       主机软件厂商:”你们两都错了,虚拟机网络应该在主机里用软件来实现。软件是灵活高效的,而且主机对虚拟机的各种属性比如寻址与迁移已经有了丰富的了解。主机软件才是做虚拟机之间网络的正确地方。“

       我怀疑那些熟悉这些争论的人都快被他们搞晕了,赤裸裸的市场行销被粉饰成一场技术讨论。对于这个观点的讨论充斥着太多市场方面的杂音。为啥呢?可能是因为 它像屠龙刀,谁拿到便可一统江湖。虚拟机网络的接入层发展尚不到十年,这是一个能从里到外控制网络的机会。已经给传统的硬件厂商带来了很大的危险感。

      幸运的是,不管市场如何争辩其中的细微差别,我们相信技术讨论是会正确地向前走的。

      这个系列文章的目的是探讨一下在虚拟化边缘网络(指还没有接入到传统物理网络之前的网络)的技术实现上,软件与各种硬件实现的区别(直通,加标签,在网卡 上做交换等等)。当前计划是分三章。首先,我们对当前的各种提案做一个大概的浏览。在下一章里,我们将聚焦软交换的实现。最后我们将描述一下我们希望硬件 生态系统如何演进以对网络在虚拟边缘提供更好的支持。

      不是我吹牛,对于绝大多数部署环境来说,软交换绝对是正确的选择。这个所谓的正确是指灵活、强力、经济,最后:它真的很快。现在的Vswitch可以在耗费一个核20%的情况下处理1G的带宽,在处理10G时需要一个核。下一章我们会具体讨论下数据的长度。

      在我们正式开始之前,可以先说下作者的偏见。这没什么可隐晦的,我们都是软件开发者,自然对软件解决方案有一种天然的倾向性。而且,本文作者们正在开发的 OVS(以后就用OVS代指Open vSwitch)致力于同时支持硬件(网卡和第一跳交换机(即VM的接入层交换机))和软件转发模式。事实上,在一些比较重要的部署环境里,我们致力于让 OVS直接运行在硬件交换机上。

      好吧,回归本章正题:背景。

      一般来说:虚拟边缘网络是指如何对虚拟机的流量进行转发和策略控制。由于虚拟机是共驻于宿主机上,因此有两个选择,一个是在主机侧直接用软件来实现,一个是把它发出去到硬件上做完决策后再发回来。

      我们先来大致瞧瞧目前主流的几种讨论方案:

      加标签+发卡弯:这种方案是把虚拟机间的数据先发出主机,让接入层硬件交换机来做第一次的转发。不出意料地,这是HP(VEPA是在主机外的接入层交换机做第一次交换)和Cisco(VN-tag在把数据由主机外侧的接入层交换机上发至核心交换机做第一次转发)主推的方案 。

                       

      想法其实很简单,当虚拟机发包时,包被加上一个标签后发至第一跳交换机(第一跳是指第一次有查表转发的行为,普通网卡单纯只是把包发到交换机上当然不算, 有的交换机也做这样的事,只是把包汇聚到上层交换机,自己不做查表转发),交换机对报文进行查表转发,如果下一跳是在同一宿主机上的另一个虚拟机,报文就 再次被发回到主机(这就是发卡弯的说法来源)后转给目的虚拟机。打标签的工作既可在主机侧的vswtich(这时候的vswitch应该就不再具备转发的 功能,只是作为主机与虚拟机的一个桥梁)上做,也可在直通模式下放在网卡上做(稍后细说)。

      这个方案的理由在于让具有专业功能的硬件交换机来做报文的转发及策略比软件要快的多。在下一章,我们将讨论一下在虚拟网络边缘处:硬交换一定比软交换强很多么?(我看不一定)

      发卡弯有两个显而易见的缺点。首先:虚拟机间的带宽受第一跳硬件的限制。然后:这大大地消耗了虚拟机与外部网络通信的带宽。

      也许在DMA和数据发送(应该是指网卡的行为)上的耗费并没有引起显著的延迟,但是如果把交换决定权给一个远端的设备,你将失去虚拟机间收发报文时宝贵的上下文信息,包括(也许有)这些虚拟机里的应用程序。

      再来看一下这些标签本身,对于VN-tag,Cisco建议在以太包头里(MAC地址后)新增一块区域(这就改变了传统的以太网报文格式,因此就需要造新 的硬件来支持...),HP作为VEPA的一个主推者,决定使用现有的VLAN-tag(和源MAC),这样现在的大多数既存设备就可以支持了。无论哪种 标签,不过是数据的几个Bit而已。一个新的标签VN-tag(需要新的ASIC(特殊应用集成电路,一般用于交换机中做查表转发,是交换机的灵魂))也 好,利用既存的标签(通常使用VLAN和MPLS(多协议标签交换,MPLS包头是插入在传统的第二层数据链路层包头和第三层IP包头之间的一个32位的 字段))也罢,功能是没有区别的。

      盲目地相信MAC认证:另一个方案是在虚拟网络边缘通过MAC地址来识别虚拟机。看起来有些厂商想把现有的NAC(Network Access Control)解决方案推销给虚拟化市场,我呸。

      无论什么时候,只要没有主机的参与,这个方案就会有一大堆问题。它基本不提供虚拟机间的管理策略,它可以轻易地被源MAC欺骗行为所愚弄,而且经常依赖主机的一些特定行为以决定动态事件,愚不可及。这将是是我最后一次提到它,因为它实在不是一个可行的方案。

      在网卡上做交换:另一种比较流行的方案是在网卡上做虚拟机间的网络交换。它有两个可取之处。第一:如果使用直通模式的话,主机侧将被绕过,因此需要有个地方来做报文的分类转发。第二:在硬件上进行报文转发要比软件快。

      然而,在网卡上做交换并未跟上发展的步伐(而且我们也不相信它能取得什么显著的进展)。使用直通将舍弃掉很多虚拟机带来的好处(下文细说),而且在网卡上 做DMA也并不是毫无花销的,更重要的是,现阶段网卡上的交换芯片远不及在传统交换机上使用的芯片强力(应该是有功耗,空间之类的限制)。在网卡上做交换 的唯一好处是避免了发卡弯的发生(也许还能通过CPU使用QPI技术共享内存)。

      【备注:本文上一版把SR-IOV和直通混为一谈是不对的,虽然它经常和和直通一起配合使用,但是SR-IOV本身并不是一种直通技术】

      直通适合于哪呢?直通是一种绕过主机,让报文在虚拟机和网卡之前直接DMA来收发数据,它经常和基于网卡的交换一起配合使用(82599的使用模式),有时也在网卡上打上一个标签后仍给接入层交换机去做转发(Cisco的一种使用模式)。直通基本上消除了由主机侧软件提供的虚拟网络层。

      直通另一个为人所津津乐道的优点是省CPU。但是这种模式干掉了软件介入层,简直就是对所有主机软件开发人员(包括他们的客户)的群体嘲讽啊。如果使用直 通,你将失去如下功能:内存过载、页共享、热迁移、容错(是live standby的那种)、实时快照、x86上软件灵活控制的能力、设备驱动的独立性。

      让我们关注一下最后一点(硬件解耦),在直通模式下,只要你买了新的硬件,那就准备好几个小时去对数百个虚拟机进行驱动升级吧,或者仅仅是因为网卡有一些 硬件Bug你就不得不为你的旧硬件升级驱动。你还可以挑战一下如何从一个磁盘快照中快速恢复系统,或者从一个装有老驱动的模板里部署环境。

      为了使其能正常工作,VMware和其他一些组织已经投入了很大的人力来解决这些非自然的操作,比如:把设备驱动代码注入到虚拟机中去。但迄今为止,这些 解决方案仅限于一些特定的可用硬件。但更通用层次的,比如NPA(Network Professional Association),并没声明要去解决这些问题,而且从Linux Kernel邮件列表来看,似乎也在苟延残喘。

      虽然对直通这样那样一堆批评,但确实有一些需要直通的特殊用例存在,比如对吞吐量敏感的应用或追求单包延迟的应用。我们将在接下来的一章细说。

      软交换:软交换是指虚拟边缘网络在主机侧的vswitch上进行交换,并且不把查表转发决定权交给具有特殊功能的硬件的行为。这是迄今为止最为流行的方案,而且将来也会是。在下一章,我们将在下一章隆重地介绍它,简介就到此为止吧。

      这些是全部么?

      当然不是,上面所说的不是对现在各种可行方案的一个概括,而是一个带有各种商业倾向的舆论调查。在下一章,我们将聚焦于软交换,在性能方面(延迟、吞吐量、CPU负载)和上面提到的方案做一个详细的对比。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多