多播是在单次传输中同时将消息或信息从源传送到一组目的地计算机。消息的拷贝由其它网络元件自动复制并且转发。转发并且复制多播包通常由网络中的中间节点完成––交换机执行层2网络内部的多播转发,而(多播)路由器执行跨越层3网络的多播路由。通常,支持多播的交换机使用igmp(因特网组管理协议)探听,而支持多播的路由器使用pim(协议无关多播)作为路由协议。
背景技术:
虽然以前并没有非常多的应用使用多播,但已经开发并且部署了许多ip多播应用,比如财务软件、视频服务等。值得注意的使用情况是基于叠加的网络虚拟化(层2隧道),其中vxlan是提出的重要技术。vxlan可以在物理ip网络上支持大量的逻辑层2网络。它基于udp上mac封装,并且需要分派ip多播组以用于逻辑网络内部的bum(广播、未知单播和多播)通信量的封装。结果,可消耗大量的多播组,尤其是在每个租户可创建大量逻辑网络的云环境中。这些创建的逻辑网络和对应的多播组可跨越物理层3网络,甚至跨越数据中心。
不幸的是,ip多播的使用受到用于支持ip多播的基础设施的缺乏的限制。低端交换机和路由器通常不支持igmp和pim,并且它们通常不支持大量的多播组。此外,即使当物理网络硬件具有支持多播的能力时,用户也通常由于ip多播的可管理性和可伸缩性的复杂性而避开在数据中心网络中实现多播。实现跨越数据中心和提供商网络的多播甚至更难。
所需要的是一种用于实现跨越可包括数据中心或提供商网络的物理网络的大量的多播组的网络系统。这种网络系统应该在不依赖物理网络的内置多播能力的情况下支持网络虚拟化,然而,即使当在物理网络中没有完全实现多播时,也利用由物理网络提供的多播能力来实现更高的效率。
技术实现要素:
本发明的一些实施例提供一种用于执行跨越网络将消息复制到选择的一组端点(即,多播复制)的方法。网络包括从网络接收消息以及产生用于网络的消息的多个端点。端点位于网络的不同段中,每个段包括一个或多个端点。为了使源端点将特定消息(例如,数据包)复制到网络内的属于特定复制组(即,多播组)的所有端点,源端点将该特定消息复制到源端点自己的段内的每个端点并且复制到每个其它段中的代理端点。每个代理端点又将该特定消息复制到代理端点自己的段内的属于该特定复制组的所有端点。
在一些实施例中,按照三个步骤执行端点的多播复制:(1)源段中的本地复制,其中多播包被发送到与发送者相同的段中的本地接收者端点;(2)跨段复制,其中包被复制到具有多播组的接收者的每个远程段;(3)远程段中的本地复制,其中包被发送到远程段中的每个接收者端点。
为了获得用于多播复制的所有相关信息,一些实施例中的端点彼此交换信息。在一些实施例中,端点使用控制平面协议以分布式方式彼此交换信息。在一些实施例中,一组单独的实体(例如,集中式控制器)从端点收集信息,并且将端点执行多播复制所需的关于物理网络和其它端点的信息公布给端点(主动地或响应于来自端点的查询)。
一些实施例以使远程段中的通信量负荷均衡的方式选择代理。在一些实施例中,通过针对每个多播组随机地从池中选择端点来实现这一点。一些实施例通过有意地避开已经繁忙的端点来智能地执行代理选择。
在一些实施例中,多播复制用于实现基于叠加的网络虚拟化解决方案,例如vxlan。在叠加网络中,可在物理网络上面创建逻辑层2网络,并且可在加入同一逻辑层2网络的端点之间建立全混乱层2隧道。在一些实施例中,源自逻辑层2网络中的一个隧道端点的bum包被复制到网络的所有其它成员端点。
在一些实施例中,vm是逻辑层2网络的消费者,并且超级监督者是隧道端点。这些实施例中的一些实施例将多播复制操作的范围(即,多播组)映射到逻辑层2网络并且将多播端点映射到隧道端点。如此,逻辑网络中的bum包复制被实现为到物理网络中的多播组的多播复制。换句话说,在这些实施例中,逻辑网络的复制范围被映射为仅包括多播组的接收者端点。
前面的“发明内容”旨在用作本发明的一些实施例的简要介绍。它并不意味着是本文档中公开的所有独创性主题的介绍或概述。下面的“具体实施方式”和在“具体实施方式”中参照的附图将会进一步描述在“发明内容”中描述的实施例和其它实施例。因此,为了理解由本文档描述的所有实施例,需要完整阅读“发明内容”、“具体实施方式”和附图。此外,要求保护的主题不应该受“发明内容”、“具体实施方式”和附图中的说明性细节限制,而是应该由所附权利要求来限定,因为可以在不偏离主题的精神的情况下以其它具体形式来实施要求保护的主题。
附图说明
在所附权利要求中阐述本发明的新颖的特征。然而,为了解释的目的,在下面的附图中阐述本发明的几个实施例。
图1图示其中段的端点将数据包复制到特定复制组的所有端点的网络。
图2图示通过使用代理实现的从一个网络段到其它网络段的多播通信量的传播。
图3图示使用端点的单播复制实现本地段中的多播的网络。
图4概念性地图示用于在网络中复制/转发多播包的处理。
图5图示与多播复制相关的端点信息的收集和分发。
图6图示由端点用于复制和转发多播通信量的一组多播信息。
图7a-b概念性地图示用于在远程段中选择多播代理的处理。
图8图示物理网络上的逻辑网络的网络虚拟化。
图9图示能够执行跨越多个网络段的多播复制/转发的物理网络上的多个逻辑网络的实现方式。
图10图示通过在物理网络中使用多播代理实现的逻辑网络中的bum包的传输。
图11概念性地图示用来实现本发明的一些实施例的电子系统。
具体实施方式
在下面的描述中,为了解释的目的而阐述许多细节。然而,本领域普通技术人员将会意识到,可在不使用这些具体细节的情况下实施本发明。在其它实例中,以方框图形式示出公知的结构和装置以免在不必要的细节上模糊本发明的描述。
本发明的一些实施例提供一种用于执行跨越网络将消息复制到选择的一组端点(即,多播复制)的方法。网络包括从网络接收消息以及产生用于网络的消息的多个端点。端点位于网络的不同段中,每个段包括一个或多个端点。为了使源端点将特定消息(例如,数据包)复制到网络内的属于特定复制组(即,多播组)的所有端点,源端点将该特定消息复制到源端点自己的段内的每个端点并且复制到每个其它段中的代理端点。每个代理端点又将该特定消息复制到代理端点自己的段内的属于该特定复制组的所有端点。
对于一些实施例,图1图示网络100,在网络100中,端点将数据包跨越该网络的不同段复制到特定复制组的所有端点。网络100被划分成段。端点将数据包复制到该端点自己的段中的特定复制组的所有端点。然后,其它段中的代理将数据包复制到其它段中的多播组的其它端点。
如图所示,网络100被划分成至少四个段101-104。网络段101-104中的每个网络段包括产生并且接收网络数据通信量的许多端点。具体地讲,段101包括端点111-116,段102包括端点121-126,段103包括端点131-136,并且段104包括端点141-146。段之间的数据通信量经过段间路由150。
图1还图示由端点111产生的数据包190的复制。指定数据包190被复制到特定复制组的所有成员端点。这个特定复制组的成员包括端点111、112、114、115、121、122、123、124、125、126、131、132、135、136、141、144、145和146。这些端点在图1中被示出为阴影。未被示出为阴影的端点不属于该特定复制组。在一些实施例中,不将数据包190转发到不属于该复制组的那些端点。值得注意的是,并非段的所有端点属于同一复制组。例如,虽然网络段102的所有端点属于该特定复制组,但网络段101中只有一些端点属于该特定复制组(对于网络段103和104中的端点而言,同样如此)。在一些实施例中,这些其它端点可属于其它复制组。一些端点属于一个以上的复制组。
源端点111在网络段101中,并且该端点将数据包复制到网络段101内的复制组的其它成员,即复制到端点112、114和115。相同的数据包还被复制到网络段102、103和104中的端点。然而,源端点111不将数据包190直接转发到这些其它网络段中的端点。替代地,源端点111将复制数据包190转发到这些其它网络段中的每个网络段中的代理端点。具体地讲,源端点111已选择端点121作为网络段102的代理,已选择端点131作为网络段103的代理,并且已选择端点141作为网络段104的代理。这些代理中的每个代理又将数据包190复制并且转发到每个相应网络段内的属于该特定复制组的端点(例如,代理141将数据包190转发到端点141、144、145和146)。以下将在章节iii中进一步描述代理端点的选择。
不同网络段中的代理的使用允许源端点111将数据包190转发到其它网络段中的端点,而不必花费计算资源以便到达远程段中的端点。它还允许消息的复制和转发以充分使用每个网络段的局部网络结构,在一些实施例中,某个网络段具有被构造为支持多播的硬件。通过如此操作,利用由物理网络提供的多播能力来实现更高的效率,同时基于物理网络拓扑支持优化的复制和传送路径。
网络100为连接到网络100的实体之间的数据通信提供物理基础设施。在一些实施例中,网络100包括以可通信方式互相链接以形成网络100的许多在物理上截然不同的通信路径集合。在一些实施例中,这些在物理上截然不同的通信路径集合中的至少一些集合具有不同拓扑和/或使用不同通信协议。在一些实施例中,网络100跨越一个或多个数据中心和/或(因特网服务)提供商网络,从而在物理上截然不同的通信路径集合中的至少一些集合位于数据中心或提供商网络中。在一些实施例中,网络100是可被划分成多个物理层2(vlan)、ip子网和多播岛的物理ip网络。在多播岛内部支持多播转发,但不支持跨越岛的多播转发(或者不能以足够好的性能完成多播转发)。在一些实施例中,网络根本不支持多播。
在一些实施例中,网络端点(例如,111)是产生并且接收网络100上的数据通信量的实体。这种实体可以是计算装置、数据存储器或者提供或消费网络上的数据通信量的其它类型的装置。
将消息复制并且转发到多个接收者的网络端点被称为多播端点。在一些实施例中,多播端点根据物理网络拓扑和多播能力在不同模式下执行多播复制本身。在一些实施例中,多播端点可以是超级监督者,该超级监督者代表其在主机机器上运行的虚拟机(vm)将多播通信量发送到物理网络以及从物理网络接收多播通信量。
在一些实施例中,多播端点可以是不产生并且消费多播通信量的网络段中的实体。这些多播端点中的一些多播端点拦截在本地产生的多播通信量并且将拦截的通信量复制到远程段的多播端点,以及从远程段接收多播通信量并且将接收的通信量注入到本地段。
网络段(例如,段101-104)是包括一批端点的网络的子集。在一些实施例中,每个网络段能够支持所包括的多播端点之间的多播通信量。在一些实施例中,网络段中的至少一些网络段不支持多播通信量并且必须依赖于单播将多播包复制并且转发到多播组中的每个接收者端点。
与在跨越不同段的端点之间复制并且转发多播消息相比,在同一段的端点之间以不同方式复制并且转发多播消息。例如,在一些实施例中,同一段的端点之间的网络通信的成本小于不同段中的端点之间的网络通信的成本。在一些实施例中,与不同段中的端点之间的通信带宽相比,网络在同一段的端点之间支持更高的通信带宽。在一些实施例中,段由物理网络的多播能力定义。在这些实施例中的一些实施例中,段内的多播通信量(同时将网络通信量发送到多个接收者)可以可靠地使用物理网络的多播能力,而跨越段的多播通信量或者根据得不到物理网络的支持,或者以更有限的方式被支持。
在一些实施例中,段可以是vlan(虚拟局域网)或vlan内部的ip子网。(在一些实施例中,vlan仅包含一个ip子网。在一些实施例中,在vlan中分派多个ip子网。)在一些实施例中,网络段包括彼此之间具有高带宽和/或低成本链路的一组相邻的vlan。
在一些实施例中,段是“多播岛”。在一些实施例中,多播岛是支持ip多播的物理网络、或者是其中所有路由器支持多播路由协议的物理网络。在一些实施例中,段是多播岛,该多播岛是vlan,其中igmp探听由交换机支持,而路由器不支持多播路由,因此多播转发局限于在vlan内部。在一些实施例中,多播岛包括多个vlan和子网。在一些实施例中,这种多播岛包括支持多播路由的内部路由器(或层3交换机),因此可以在内部vlan之间路由多播通信量,但不能将多播通信量路由至岛外或将多播通信量从外部路由至岛中。
段间路由150包括在不同网络段101-104之间提供通信路径的网络100的一部分。在一些实施例中,发生在每个网络段内的多播通信量无法直接跨越段间路由150而被路由,或者无法在没有引起在时间、带宽或计算能力方面的额外成本的情况下被路由。在一些实施例中,段间路由150包括不允许多播通信量的数据中心或提供商网络。在这些实施例中的一些实施例中,一个段的多播通信量仅可以通过段间路由150作为单播通信量传播,尤其是传播到不同段中的代理端点。
以上描述介绍了一些实施例的端点的分布式多播复制。以下描述几个更详细的实施例。首先,章节i更详细地描述一些实施例的端点的多播复制,而章节ii描述为支持根据一些实施例的分布式多播复制所需的信息的收集和交换。接下来,章节iii描述根据一些实施例的代理端点的选择和网络负荷的均衡。章节iv描述基于如其它章节中所述的分布式多播复制的网络虚拟化方案的一些实施例。最后,章节v描述用来实现本发明的一些实施例的电子系统。
i.端点的多播复制
在一些实施例中,端点的多播复制包括下面的三个步骤:(1)源段中的本地复制,其中多播包被发送到与发送者相同的段中的本地接收者端点;(2)跨段复制,其中包被复制到具有多播组的接收者的每个远程段;(3)远程段中的本地复制,其中包被发送到远程段中的每个接收者端点。
步骤(1)和(2)由发送者端点启动。在步骤(2)中,发送者端点在复制多播包之前选择每个远程接收段中的一个端点作为代理,然后利用单播将包复制到每个代理端点。在接收到复制的包之后,代理将继续在步骤(3)中执行复制过程。
图2图示通过使用代理实现的从一个网络段到其它网络段的多播通信量的传播。具体地讲,图2图示网络200中的源段中的本地复制、跨段复制和远程段中的本地复制。如图所示,网络200包括四个段210、220、230和240,段210具有端点211-214,段220具有端点221-224,段230具有端点231-234,并且段240具有端点241-244。另外,源端点211已分别为远程段220、230和240选择端点221、231和241作为用于复制并且转发多播消息的代理。为了说明简单的目的,所有的端点被示出为属于同一特定多播组,但本领域普通技术人员将会理解,一些段可包括不属于同一多播组的端点。
在四个阶段201-204中,图2图示从源端点211到段210、220、230和240中的同一多播组的所有端点的多播消息的复制和转发。在每个阶段,已接收到多播消息/数据包的端点被示出为阴影。
在第一阶段201,源端点211通过多播将数据包转发到本地网络段210(本地网络段210是源端点的网络段)内的属于同一多播组的所有其它端点。在一些实施例中,通过使用构成网络段210的基础的物理网络的多播能力来实现这种复制和转发。
第二阶段202示出跨段复制,其中包被复制到具有该多播组的接收者端点的每个远程段。具体地讲,源端点211将数据包复制并且转发到分别位于远程段220、230和240中的代理端点221、231和241。在一些实施例中,跨越被构造为用于多播的物理通信路径进行跨段复制,并且跨段复制不使用可用的内置多播能力。然而,在一些实施例中,跨越并非被构造为用于多播的物理通信路径进行这种跨段复制。在这些实施例中的一些实施例中,通过单播通信协议来执行从一个段到另一个段的多播包的转发。
第三阶段203示出远程段中的本地复制,其中包被发送到远程段中的每个接收者端点。具体地讲,由这些远程段中的每个远程段中的代理端点执行这种复制。也就是说,被选择为段220的代理的端点221将包复制并且转发到端点222-224。同样地,作为段230的代理的端点231将包复制并且转发到端点232-234,并且作为段240的代理的端点241将包复制并且转发到端点242-244。在一些实施例中,通过使用构成这些远程网络段的基础的物理网络的多播能力来实现这些远程段中的一些远程段中的多播包的复制和转发。第四阶段204(即,最后阶段)示出数据包的复制和转发的完成,其中该多播组中的每个端点已接收到数据包。
如上所述,在一些实施例中,通过由构成段的基础的物理网络支持的本地多播复制来实现该段中的多播复制。在一些实施例中,当段是多播岛时情况是如此,从而发送者/代理端点发出多播包,该多播包将被物理网络复制到本地多播岛中的该多播组的每个接收者。在一些实施例中,多播岛不允许多播包离开该岛,并且发送者端点将会在不使用多播的情况下(例如,通过使用单播)将原始包发送到岛的外面。即使路由器支持多播,一些实施例也通过强迫路由器丢弃多播包来防止多播包被转发到段外部。
在一些实施例中,至少一些段在本地不支持多播协议。在这些实施例中的一些实施例中,发送者/代理端点利用单播将原始多播包复制到每个本地接收者端点。因此,对于每个本地接收者,发送者/代理复制原始包并且将其转换成单播包以发送到接收者端点。图3图示使用端点的单播复制实现本地段中的多播的网络300。
如图所示,网络300具有四个网络段310、320、330和340,段310具有端点311-314,段320具有端点321-324,段330具有端点331-334,并且段340具有端点341-344。源端点311已分别为远程段320、330和340选择端点321、331和341作为用于复制并且转发多播消息的代理。为了说明简单的目的,所有的端点被示出为属于同一特定多播组,但本领域普通技术人员将会理解,一些段可包括不属于同一多播组的端点。
图3在十个阶段301-309和399中图示本地段中的单播复制。第一阶段301图示源端点311通过单播将数据包复制并且转发到端点312。段310不支持多播协议,因此必须通过至同一多播组的各端点的单播传输来实现至段310内的多个端点的多播通信量。在接收者端点与发送者端点(或代理)位于同一vlan中的一些实施例中,目的地mac地址被改变为接收者端点的mac地址。
为了完成至段310中的该多播组的其余成员的数据包的多播复制和转发,源端点执行至端点313和314的单播转发。第二阶段302和第三阶段303分别图示至端点313和314的单播转发。
第四阶段304图示从段310中的源端点311到段320的所选择的代理端点321的跨段消息复制/转发。图3的例子图示通过单播执行的跨段转发。然而,在一些实施例中,如果构成跨段通信的基础的物理通信路径支持多播,则通过从源端点到所有代理的多播来执行跨段转发。
第五阶段305图示从源端点311到段330的所选择的代理端点331的跨段消息复制/转发。阶段305还图示由代理321执行的至段320中的端点的消息复制/转发的开始。
第六阶段306图示从源端点311到段340的所选择的代理端点341的跨段消息复制/转发。在这个阶段中,代理321继续通过单播将消息复制/转发到段320中的端点,而代理331开始通过单播将消息复制/转发到段330中的端点。
在第七阶段307,源端点311已完成将消息发送到源端点311的所有目的地(即,同一多播组的位于源端点311的本地段310中的所有端点以及远程段中的所有代理端点),而代理321和331继续通过单播将数据包复制/转发到它们各自的网络段中的同一多播组的端点。代理341开始通过单播将消息复制/转发到段340中的端点。
由代理执行的复制和转发在第八阶段308和第九阶段309中继续进行。第十阶段399(即,最后阶段)示出数据包的复制和转发的完成,其中多播组中的每个端点已接收到数据包。
虽然图2和图3将整个网络图示为使用单播或多播来复制/转发多播消息,但在一些实施例中,可以按照每段甚至每端点粒度构造复制模式。例如,可以构造图1的网络100,以使得源端点111使用多播来转发/复制消息,而代理端点131使用单播。还可以构造网络100,以使得第一多播组(例如,由图1中的阴影端点代表的组)使用多播,而第二多播组(未示出)使用单播。
通过执行多播来实现的多播包的复制/转发需要由本地段内部的物理网络支持的多播。通过这样操作,利用了物理网络的多播能力,与依赖于端点的单播相比,这允许更高效的多播转发和复制。当多播不可用时,通过单播来实现的多播包的复制/转发(如图3中所示)仍然是有益的,只要段内部的包转发成本低于段外部的转发成本即可,并且通过仅将包的单个拷贝复制到每个远程段的代理来减少跨越段的复制的包。
对于一些实施例,图4概念性地图示当在网络中复制/转发多播包时由端点执行的处理400。当端点接收到(在410)用于在网络中传输的数据包时,该处理开始。这个接收到的数据包可以由通过该端点连接到该网络的实体(例如,运行应用的计算机或提供数据的存储装置)产生。接收到的数据还可以来自由端点从该网络接收到的数据包。
该处理随后确定(在420)是否复制接收到的数据包。对于接收到来自使用该端点连接到该网络的实体的数据的端点,该端点可以从由数据的源提供的信息确定这个数据包是否以多个接收者为目的地。对于从该网络接收数据作为包的端点,该处理需要确定数据包是否来自使用该端点作为代理以复制并且转发数据包的多播组。在一些实施例中,代理端点区分需要在本地进一步复制的接收到的包与其它普通的单播通信量。一些实施例通过在发送到接收者/代理端点之前封装原始多播包来促进这一点。当接收者/代理端点接收到封装的包时,它对包进行解封装并且恢复原始多播包。在一些实施例中,封装头包括向代理告知该包需要进一步本地复制的标志。在一些实施例中,发送者/代理端点将原始多播包转换成单播包,并且将包含原始目的地多播地址的ip选项添加到该包。
如果数据包需要由端点执行的进一步复制,则该处理前进至430。否则,处理400识别(在480)数据包的接收者,将数据包发送(在490)到识别的接收者并且结束。
在430,处理400识别数据包的多播组。在一些实施例中,从接收到的数据包获得或提取这种信息。该处理随后识别(在440)属于识别的多播组的将要接收数据包的端点。在一些实施例中,中央实体提供由端点识别多播组的成员端点所需的信息,该中央实体从网络中的端点收集这种信息并且分发该信息。在一些实施例中,网络中的端点事先在它们之间交换这种信息。以下在章节ii中进一步描述这种信息的收集和交换。以下通过参照图6来描述由端点用于识别多播组成员的信息的例子。
接下来,该处理确定(在450)识别的接收者端点中的任何接收者端点是否在本地段中。如果识别的接收者端点中的任何接收者端点在本地段中,则该处理前进至455以将数据包复制并且转发到本地段中的(识别的多播组的)所有识别的接收者端点。在一些实施例中,处理400确定本地段是否支持多播。如果本地段支持多播,则该处理使用多播协议将数据包发送到本地段中的多播组的所有成员。否则,该处理使用单播协议分别将数据包发送到每个识别的接收者端点。
该处理随后确定(460)识别的接收者端点中的任何接收者端点是否在远程段中。如果识别的接收者端点中的任何接收者端点在远程段中,则该处理前进至470以将数据包复制并且转发到这些远程段的代理端点。在将数据包发送到本地段中的接收者端点和/或识别的远程段中的端点的代理之后,处理400结束。
ii.信息收集和交换
在一些实施例中,如以上在章节i中所述地执行多播复制和转发的端点需要关于多播组成员和物理网络拓扑的信息。多播组的发送者端点需要知道具有这个组的接收者的所有远程段和这些段中的每个段中的至少一个端点,因此它可以在每个远程段选择端点作为代理。
在单播复制模式下,当发送者或代理端点通过单播复制来执行多播(如以上参照图2所述)时,它需要知道该多播组的所有本地接收者端点的相关信息(例如,地址)以将数据包复制到它们中的每个。端点当然知道它自己的多播组成员。在一些实施例中,当段是可以从ip前缀获得的一个ip子网或一组子网时,端点可以从ip地址计算它自己的段或其它端点的段。在一些实施例中,网络中的端点使用发现协议确定彼此的段id。在一些实施例中,端点的段id由网络管理员配置。
为了获得用于多播复制的所有相关信息,一些实施例中的端点彼此交换信息。在一些实施例中,端点使用控制平面协议以分布式方式彼此交换信息。在一些实施例中,一组单独的实体(例如,集中式控制器)从端点收集信息,并且将由端点执行多播复制所需的关于物理网络和其它端点的信息公布给端点(主动地或响应于来自端点的查询)。
图5图示针对一些实施例的与多播复制相关的端点信息的收集和分发。具体地讲,希望加入特定多播组的端点向收集关于该特定多播组的成员的信息的中央控制实体提交报告。收集的信息随后被分发(通过来自端点的查询或者通过从中央控制器的主动推送)到该特定多播组的每个成员。
图5图示包括网络段510、520和530的网络500。该网络包括作为多播组100的成员的端点,其中多播组100包括成员端点511、512、521和532(被示出为阴影)。端点511和512位于段510中(段a的端点a1和a3),端点521位于段520中(段b的端点b2),并且端点532位于段530中(段c的端点c1)。图5还图示最初不在多播组100中的端点531。这个端点531位于段530中(段c的端点c5)。
图5还图示用于从网络中的端点收集关于网络的信息以及将关于网络的信息分发到网络中的端点的实体550。在一些实施例中,实体550是用于网络的所有段的中央控制器。在一些实施例中,实体550包括一个或多个计算装置,这一个或多个计算装置收集从各端点提交的信息并且将收集的信息存储为不同多播组的表或目录560。在一些实施例中,实体550通过由网络500提供的物理基础设施接收并且分发这种信息。在一些实施例中,实体550通过控制平面协议与各端点通信。在一些其它实施例中,中央实体550和不同段中的各端点之间的通信发生在独立于网络500的通信路径中。在一些实施例中,作为中央控制器的实体550基于它已收集的信息选择用于每个多播组的每个端点的代理。在一些实施例中,端点自己基于由实体550分发给它们的信息选择它们自己的多播代理。
图5以三个操作图示端点531加入多播组100。在一些实施例中,端点(例如,端点531)可在它已接收到包括包的原始目的地多播组标识的单播包之后决定加入新的多播组(在一些实施例中,接收者端点可加入多个多播组)。在一些实施例中,端点将会由此通过向实体550提交报告来基于接收到的多播组标识决定加入多播组。
在第一操作(标记为“1”)期间,端点531向中央控制器实体550提交报告562:它想要加入多播组100。在一些实施例中,这种报告包括期望的多播组的标识符、该端点的标识符(例如,它的mac地址)以及用于在网络内定位该端点的信息(例如,它的网络ip地址)。
在第二操作(标记为“2”)期间,中央控制器实体550基于接收到的报告562更新它的多播组100的记录以包括端点531的信息。在一些实施例中,中央控制器实体保持每个多播组的目录或表。在一些实施例中,中央控制器解析由各端点提交的原始信息,并且将其编译为多播组的成员的优化的表或目录。以下将参照图6进一步描述这种目录的例子。
在第三操作(标记为“3”)期间,中央控制器实体550将多播组100的更新的成员信息552分发给不同段中的该多播组的所有成员端点。因此,已有的成员511、512、521、532知道新的成员端点531已刚刚加入该多播组,并且这个新的成员端点位于段c(530)中。新加入的端点531也从中央控制器接收关于组100的成员信息,这让它了解该多播组的其它已有成员及其在网络中的位置(例如,哪个段)。
图6图示针对一些实施例的由中央控制实体(例如,550)保持的多播组的示例性目录610。目录610保持多个表,每个表记录一个多播组的成员信息。例如,表611存储多播组“100”的成员信息,而表612存储多播组“200”的成员信息。每个表包括多个条目,每个条目对应于多播组中的端点。例如,表611中的每个条目记录位于多播组“100”中的端点的标识符,而表612中的每个条目记录位于多播组“200”中的端点的标识符。每个条目还包括端点所属的网络段。值得注意的是,端点可以属于一个以上的多播组,例如,段“b”的端点“b3”属于多播组100和200两者,因为它出现在表611和612两者中。根据示例性目录610,由于图5中示出的操作,多播组100已增加了端点“a4”和“b3”。
图6还图示由端点用于复制并且转发多播通信量的一组多播信息。如图所示,一组多播信息620被端点591使用以便参与多播组“100”和“300”。该组多播信息620包括多播组“100”的用于识别远程段中的代理的表621、用于识别多播组“100”中的位于本地段中的其它端点的表622、多播组“300”的用于识别远程段中的代理的表623和用于识别多播组“300”中的位于本地段中的其它端点的表624。在一些实施例中,由端点591使用的多播信息620由端点591自己保持。在一些实施例中,多播信息由网络中的另一实体保持。在一些实施例中,端点591存储多播信息。
因此,当端点591(被识别为网络500的段x中的端点xn,图5中未示出)需要将多播数据包复制并且转发到多播组100时,它使用表622识别位于同一段x内的多播组100中的所有其它端点。同样地,如果多播数据包用于多播组300,则端点591使用表624识别位于同一段x内的多播组300中的所有其它端点。端点591随后通过多播或单播将数据包发送到段x中的那些识别的端点中的每个。
端点591还使用表622和624识别用于在远程段中复制多播通信量的代理。表622和624中的每个条目对应于远程段,并且识别作为用于将多播通信量从端点591复制到该远程段的代理的端点。值得注意的是,在一些实施例中,对于同一远程段,端点可以针对不同多播组而具有不同代理。例如,对于段b,端点591选择端点b2作为用于多播组“100”的代理,而选择端点b3作为用于多播组“300”的代理。还值得注意的是,在一些实施例中,端点仅跟踪远程段中的代理,而不保持关于所有段中的所有端点的信息。还值得注意的是,在一些实施例中,同一段中的两个端点可以选择用于将多播通信量复制到给定远程段的不同代理。
在一些实施例中,端点不仅需要详细描述网络的拓扑(即,远程段)、基础物理网络中的交换机和路由器的信息,还需要发现并且保持多播组的本地接收者的记录,以便将该组的多播包转发到所有接收者端点。在一些实施例中,使用igmp来允许端点加入多播组作为接收者。一些实施例使用以igmp探听为特征的交换机从接收到的igmp消息了解多播组成员。在一些实施例中,路由器(或具有层3能力的交换机)用作igmp查询者,该igmp查询者定期发送igmp查询消息以请求接收者端点或下游交换机/路由器报告多播组成员信息。在一些实施例中,路由器运行多播路由协议以交换多播成员信息,并且定义跨越层3网络的多播包的传送路径。一些实施例使用诸如pim(协议无关多播)、dvmrp或mospf的协议。
在一些实施例中,交换机支持igmp探听,而路由器不支持多播路由。在这些实施例中的一些实施例中,在段中可能不存在igmp查询者。在这种情况下,即使每个接收者端点从未接收到igmp查询,每个接收者端点也可定期将igmp报告发送给它加入的多播组的物理网络,以使交换机中的多播转发条目保持有效。
在一些实施例中,多播岛形成树形拓扑,并且树中的每个路由器(或层3交换机)通过igmp和代理igmp从其下游接口到其上游节点查询并且探听多播成员。在这些实施例中的一些实施例中,多播路由协议未在不同段之间运行,因此不能跨越段对多播通信量进行路由。一些实施例仅在整个ip网络的一部分(在一些单独的段中被隔离)中运行诸如pim的多播路由协议。
iii.代理选择和负荷均衡
如上所述,在一些实施例中,发送者端点需要在每个远程接收段中选择代理以复制多播包。每个发送者端点可以基于不同策略独立地做出代理选择。例如,在一些实施例中,发送者端点针对所有多播通信量在每个段中选择固定代理。替选地,在一些实施例中,发送者端点在每个段中按照多播组选择固定代理。在一些其它实施例中,发送者在每个段中按照多播流(例如对于udp,由<源ip,目的地ip,协议>或<源ip,目的地ip,源端口,目的地端口>标识的多播流)选择固定代理。
在一些实施例中,代理选择的这些不同方法能够在段的不同端点之间均衡网络通信量负荷。在一些实施例中,发送者端点使用来自发送者端点已选择的代理的“心跳”通信来检测代理故障。一些实施例通过单独的控制平面实现方式来检测端点故障。
在一些实施例中,发送者可以将远程段中的任何端点选择为代理。在这些实施例中的一些实施例中,端点针对每个特定多播组选择远程段中的接收者端点之一。通过这样操作,具有这样的优点:使一个多播组对其它多播组和其它类型的网络数据通信量的影响最小化(因为这使得端点不太可能必须处理该端点不是其接收者的多播组的多播通信量)。其还具有这样的优点:使对物理网络的多播转发状态的干扰最小化。在一些实施例中,代理的选择由控制平面实现方式(即,中央控制器,例如550)来确定,在一些实施例中,控制平面实现方式可选择不提供关于远程段中的所有端点的信息。在这些实施例中的一些实施例中,中央控制器将具体代理分派给每个端点,而不是让每个端点自己决定。
不同的实施例以不同方式选择代理。图7a图示由各个端点执行的分布式处理,而图7b图示由中央控制器执行的集中式处理。对于一些实施例,图7a概念性地图示由端点为了在远程段中选择多播代理而执行的处理701。当端点接收到(在710)关于这个端点所属的所有多播组的成员的更新时,该处理开始。在一些实施例中,端点从中央控制器接收更新的信息,如以上参照图5所讨论的。
该处理随后更新(在720)可用作每个远程段的代理的端点的列表或池。在一些实施例中,潜在的代理的这个列表或池基于从中央控制器接收到的信息。在一些实施例中,这个列表基于这个端点和其它端点之间的信息(例如,心跳)的交换。
接下来,该处理针对每个多播组选择(在730)每个远程段的代理。在一些实施例中,以均衡远程段中的网络通信量负荷的方式来执行这个选择处理。在一些实施例中,通过针对每个多播组随机地从池中选择端点来实现这一点。一些实施例通过有意地避开已经繁忙(例如因为其它多播组的多播通信量或其它类型的网络通信量)的端点来智能地执行代理选择。
该处理随后监测(在740)被选择为代理的端点,并且确定(在745)是否存在代理故障(例如,通过心跳)。如果存在代理故障,则处理701返回到720以通过从池中去除发生故障的端点来更新可用作代理的端点的列表并且选择替换代理。否则,该处理返回到740以继续监测所选择的代理。
图7b概念性地图示针对一些实施例的由中央控制器(例如,550)执行的代理选择的处理702。当中央控制器从一个段中的至少一个端点接收到(在760)更新的信息时,该处理702开始。
该处理随后确定(在770)代理的分派是否需要更新。当存在刚刚加入多播组(因此,可用作代理)的端点时或者当端点已发生故障时,一些实施例决定进行新代理分派。网络中的其它事件也可以使该处理进行新代理分派,例如当检测到由于通信量负荷的不均衡导致的性能劣化时。如果需要更新代理的分派,则该处理前进至780。否则,该处理702结束。
在780,该处理针对一个多播组的一个段的至少一个端点进行新代理分派。如由端点执行的代理选择的情况一样,在一些实施例中,集中执行的代理选择也为了负荷均衡而使用从可用端点的池中的随机选择。一些实施例通过有意地避开已经繁忙(例如因为其它多播组的多播通信量或其它类型的网络通信量)的端点来智能地执行代理选择。在进行新代理分派之后,该处理702结束。
iv.网络虚拟化
在一些实施例中,如上所述的多播复制方法用于实现基于叠加的网络虚拟化解决方案,例如vxlan。在叠加网络中,可在物理网络上面创建逻辑层2网络,并且可在加入同一逻辑层2网络的端点之间建立全混乱层2隧道。在一些实施例中,来自逻辑层2网络中的一个隧道端点的bum包被复制到逻辑网络的所有其它成员端点。
在一些实施例中,vm是逻辑层2网络的消费者,并且超级监督者是隧道端点。这些实施例中的一些实施例将多播复制操作的范围(即,多播组)映射到逻辑层2网络,并且将多播端点映射到隧道端点。如此,逻辑网络中的bum包复制被实现为物理网络中的多播组的多播复制。换句话说,在这些实施例中,逻辑网络的复制范围被映射为仅包括多播组的接收者端点。在一些实施例中,超级监督者包括受管理的网络交换机,该受管理的网络交换机的转发操作由控制器管理。
图8图示物理网络805上的逻辑网络800的网络虚拟化。逻辑网络800用于vm811-819之间的数据通信,vm811-819经由运行在主机机器821-825上的超级监督者而在主机机器821-825上运行。主机机器以可通信方式连接到物理网络805。
在一些实施例中,物理网络805类似于图1的网络100。换句话说,物理网络805可包括一个或多个网络段,并且主机机器(或在这些主机机器上运行的超级监督者)是连接到网络的不同段的端点。无论是通过使用由物理网络的一些部分(例如,多播岛)提供的内置多播能力,还是通过执行跨越该网络的不支持多播的部分(例如,数据中心和提供商网络)的单播,该物理网络能够支持多播通信量。物理网络还可以经由网关860与外部网络870通信。
通过封装由vm为了在物理网络中传输而产生的数据包来实现图8的网络虚拟化。如图所示,在主机机器821上运行的vm812将数据包880发送给在主机机器824上运行的vm815。主机机器821基于数据包880创建封装的包890,并且物理网络805将封装的包890传送到主机机器824。主机机器824又对接收的包890进行解封装并且将解封装的包880传送到目的地vm815。
在一些实施例中,根据网络虚拟化标准(例如,vxlan)创建封装的数据包890。图8图示根据vxlan的数据包890的示例性封装格式895。vxlan是可以支持物理层3网络上的大量逻辑层2网络的快速供应的叠加网络技术。vxlan基于udp上mac解决方案。在物理连线上使用udp来封装vxlan逻辑网络的以太网帧。在vxlan头中,存在唯一地标识vxlan逻辑层2网络的24比特vni(vxlan网络标识符),因此支持多达16m个逻辑网络。
vxlan封装由vtep(vxlan隧道端点)来实现,vtep是超级监督者(或超级监督者上的vswitch),而vm是vxlan网络的用户。当一个vtep上的vm将以太网帧发送到位于同一vxlan网络中但位于不同vtep上的另一vm时,源vtep将会在把帧注入到物理网络之前,使用源vtep的ip地址作为外头部中的源ip和vxlan网络的vni来封装该帧。目的地vtep对包进行解封装并且仅将原始内帧转发到目的地vm。对于普通的单播帧(其目的地mac对源vtep来说是已知的),目的地vtep的ip地址将会用作外目的地ip。vtep应该通常通过通信量学习或某种控制平面实现方式来保持其vm所连接到的vxlan网络的vmmac–vtepip映射。
对于bum通信量,vxlan利用ip多播。每个vxlan网络被分派物理多播组。使用vxlan网络的多播ip作为外目的地ip来封装bum帧。vtep应该通常通过将igmp报告发送到物理网络来加入它上面的vxlan网络的多播组。
对于一些实施例,图9图示能够执行跨越多个网络段的多播复制/转发的物理网络900上的多个逻辑网络(例如,vxlan逻辑网络)的实现方式。逻辑网络用于在主机机器中的超级监督者上运行的vm之间的数据通信。这些超级监督者是物理网络900的端点,并且用作逻辑网络的隧道端点。
物理网络900具有至少三个段910、920和930。段910包括超级监督者941-943(超级监督者a、b、c)。段920包括超级监督者944-946(超级监督者d、e、f)。段930包括超级监督者947-949(超级监督者g、h、i)。超级监督者a运行vm911-913,超级监督者b运行vm914-916,超级监督者c运行vm917-919,超级监督者d运行vm921-923,超级监督者e运行vm924-926,超级监督者f运行vm927-929,超级监督者g运行vm931-933,超级监督者h运行vm934-936,并且超级监督者i运行vm937-939。
网络虚拟化允许物理网络900同时支持多个逻辑网络901-909。vm913、914、919、921、923、925、928、929、932、934、935和937位于逻辑网络901(逻辑网络“1”)中。vm912、916、918、924、927、931和938位于逻辑网络902(逻辑网络“2”)中。vm911、915、917、922、926、933、936和939位于逻辑网络909(逻辑网络“n”)中。逻辑网络901-909中的每个被映射到物理网络900中的多播组。这些映射的多播组中的每个用于处理对应逻辑网络的bum通信量。
在一些实施例中,超级监督者是物理网络900的端点。在这些实施例中的一些实施例中,超级监督者执行复制并且转发多播包的任务,并且超级监督者代表其它超级监督者在不同网络段中用作各种多播组(即,逻辑网络)的代理。在一些实施例中,作为网络900的端点的超级监督者还加入多播组以便建立逻辑网络。在这些实施例中的一些实施例中,超级监督者通过向中央控制器实体进行报告而加入多播组,接收多播组成员信息,并且选择用于将多播包复制并且转发到不同段的代理。在一些实施例中,当超级监督者的vm中的至少一个想要连接到使用特定多播组的逻辑网络时,超级监督者加入该特定多播组。
如图所示,对于逻辑网络901(逻辑网络“1”),超级监督者b已被超级监督者d选择为段910的代理,超级监督者d已被超级监督者a选择为段920的代理,并且超级监督者h和i已分别被超级监督者a和d选择为段930的代理。对于逻辑网络902(逻辑网络“2”),超级监督者a已被超级监督者d选择为段910的代理,超级监督者e已被超级监督者a选择为段920的代理,超级监督者g和i已分别被超级监督者a和d选择为段930的代理。对于逻辑网络909(逻辑网络“n”),超级监督者c已被超级监督者d选择为段910的代理,超级监督者d已被超级监督者a选择为段920的代理,并且超级监督者g和h已分别被超级监督者d和a选择为段930的代理。
值得注意的是,在一些实施例中,超级监督者可以支持属于不同逻辑网络的多个vm(例如,超级监督者a,它操作逻辑网络1、2和n中的vm)。另外,超级监督者可以是同一多播组或不同多播组中的多个超级监督者的代理,但在一些实施例中,代理选择处理将会试图以均衡网络通信量负荷的方式来分派代理。
图10图示通过在物理网络中使用多播代理实现的逻辑网络中的bum包的传输。该图示出在逻辑网络901上从vm913到vm925的广播包1010的传送。如以上参照图9所讨论的,在物理网络900上实现逻辑网络901(即,逻辑网络1),其中物理网络900包括网络段910和920。运行vm913的超级监督者a(941)位于网络段910上。运行vm925的超级监督者e(945)位于网络段920上。由于vm913运行在与运行vm925的超级监督者不同的段上的超级监督者上,所以逻辑网络901将通过使用多播代理把包1010发送到它的目的地。如图9和图10中所示,超级监督者a已针对逻辑网络901(及其对应的多播组)选择超级监督者d(944)作为它在段920中的代理。
图10以七个操作示出从vm913到vm925的bum包的传输。在第一操作(标记为“1”)期间,vm913产生针对逻辑网络901的所有成员的广播包1010。这种广播包的例子是针对逻辑网络上的其它vm的mac地址的arp查询。在一些实施例中,这个原始包包括分派给vm913的mac地址。
在第二操作(标记为“2”)期间,vm超级监督者将广播包1010封装为封装的包1020。在一些实施例中,这个封装包括由超级监督者a附加的逻辑网络的标识符。在一些实施例中,超级监督者a还附加它自己的ip地址作为封装的包的一部分。在一些实施例中,这个封装具有由网络虚拟化协议(例如,vxlan)指定的格式,如以上参照图8所讨论的。
在第三操作(标记为“3”)期间,超级监督者a将针对逻辑网络901封装的包复制并且转发到在本地网络段910的超级监督者上运行的其它vm。例如,在超级监督者b(942)运行的vm914也位于网络段910上,因此超级监督者a将封装的包1020复制并且转发到超级监督者b。在第四操作(标记为“4”)中,超级监督者b又对包1020进行解封装并且将原始广播包传送到vm914。在一些实施例中,发送者端点(例如,超级监督者a)利用由网络段910提供的ip多播能力,并且通过本地多播将封装的包同时复制到多个接收者。在一些实施例中,当多播转发在基础物理网络中不可用时,超级监督者使用单播在段内实现多播转发。
在第五操作(标记为“5”)期间,超级监督者a将封装的包1020复制并且转发到远程段。具体地讲,对于远程段920,超级监督者a将包1020转发到选择的代理超级监督者d(944)。在第六操作(标记为“6”)中,代理超级监督者d又将它从超级监督者a接收到的包复制并且转发到段920中的属于该同一多播组(即,逻辑网络901)的其它超级监督者。这些接收者之一是超级监督者e(945)。在一些实施例中,代理端点(例如,超级监督者d)利用由网络段910提供的ip多播能力,并且通过本地多播将封装的包同时复制到多个接收者。在一些实施例中,当多播转发在基础物理网络中不可用时,代理超级监督者使用单播在它的段内实现多播转发。
在第七操作(标记为“7”)期间,超级监督者e对接收到的包进行解封装并且将解封装的包1010发送到vm925。在这个例子中,代理超级监督者d具有它自己的属于该同一逻辑网络的vm921,并且也将接收到解封装的包。然而,在一些实施例中,针对特定多播组/逻辑网络被选择为代理的端点可能不是超级监督者,或者可能是不具有在该特定逻辑网络中操作的vm的超级监督者。在这些实例中,代理自己将不会消费接收到的多播通信量。
v.电子系统
许多上述特征和应用被实现为软件处理,所述软件处理被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的一组指令。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核或其它处理单元)执行时,它们使处理单元执行在指令中指示的动作。计算机可读介质的例子包括但不限于cd-rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括以无线方式或经由有线连接传送的载波和电子信号。
在本说明书中,术语“软件”旨在包括驻留在只读存储器中的固件或存储在磁存储器中的应用,其可以被读取到贮存器中以由处理器处理。此外,在一些实施例中,多个软件发明可以在保持截然不同的软件发明的同时被实现为更大程序的子部分。在一些实施例中,多个软件发明还可以被实现为单独的程序。最后,一起实现这里描述的软件发明的单独程序的任何组合落在本发明的范围内。在一些实施例中,当软件程序被安装以在一个或多个电子系统上操作时,软件程序定义执行并且运行软件程序的操作的一个或多个具体机器实现方式。
图11概念性地图示用来实现本发明的一些实施例的电子系统1100。电子系统1100可以用来执行上述控制应用、虚拟化应用或操作系统应用中的任何应用。电子系统1100可以是计算机(例如,桌上型计算机、个人计算机、平板计算机、服务器计算机、大型计算机、刀片计算机等)、电话、pda或任何其它种类的电子装置。这种电子系统包括各种类型的计算机可读介质和用于各种其它类型的计算机可读介质的接口。电子系统1100包括总线1105、处理单元1110、系统贮存器1125、只读存储器1130、永久存储装置1135、输入装置1140和输出装置1145。
总线1105共同地表示以可通信方式连接电子系统1100的许多内部装置的所有系统总线、外围总线和芯片组总线。例如,总线1105以可通信方式连接处理单元1110与只读存储器1130、系统贮存器1125和永久存储装置1135。
从这些各种贮存器单元,处理单元1110检索要执行的指令和要处理的数据以便执行本发明的处理。在不同实施例中,处理单元可以是单处理器或多核处理器。
只读存储器(rom)1130存储由电子系统的处理单元1110和其它模块所需的静态数据和指令。另一方面,永久存储装置1135是读写贮存器装置。这个装置是即使当电子系统1100关闭时也存储指令和数据的非易失性贮存器单元。本发明的一些实施例使用大容量存储装置(例如,磁盘或光盘及其对应的盘驱动器)作为永久存储装置1135。
其它实施例使用可移动存储装置(例如,软盘、闪存驱动器等)作为永久存储装置。如永久存储装置1135一样,系统贮存器1125是读写贮存器装置。然而,与存储装置1135不同,系统贮存器是易失性读写贮存器,例如随机存取贮存器。系统贮存器存储处理器在运行时需要的一些指令和数据。在一些实施例中,本发明的处理被存储在系统贮存器1125、永久存储装置1135和/或只读存储器1130中。从这些各种贮存器单元,处理单元1110检索要执行的指令和要处理的数据以便执行一些实施例的处理。
总线1105还连接到输入装置1140和输出装置1145。输入装置使得用户能够将信息和选择命令传送到电子系统。输入装置1140包括字母数字键盘和指点装置(也被称为“光标控制装置”)。输出装置1145显示由电子系统产生的图像。输出装置包括打印机和显示装置,例如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括既用作输入装置又用作输出装置的装置,例如触摸屏。
最后,如图11中所示,总线1105还通过网络适配器(未示出)将电子系统1100耦合到网络1165。以这种方式,计算机可以是计算机的网络的一部分(例如,局域网(“lan”)、广域网(“wan”)或内联网或网络中的网络(例如,因特网))。可结合本发明使用电子系统1100的任何部件或全部部件。
一些实施例包括电子部件,例如微处理器、将计算机程序指令存储在机器可读介质或计算机可读介质(替选地,被称为计算机可读存储介质、机器可读介质或机器可读存储介质)中的存储器和贮存器。这种计算机可读介质的一些例子包括ram、rom、只读压缩盘(cd-rom)、可记录压缩盘(cd-r)、可重写压缩盘(cd-rw)、只读数字通用盘(例如,dvd-rom、双层dvd-rom)、各种可记录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存(例如,sd卡、迷你sd卡、微sd卡等)、磁和/或固态硬盘驱动器、只读可记录
尽管以上讨论主要参照执行软件的微处理器或多核处理器,但由一个或多个集成电路(例如,专用集成电路(asic)或现场可编程门阵列(fpga))执行一些实施例。在一些实施例中,这种集成电路执行存储在该电路本身上的指令。
如在本说明书中所使用的,术语“计算机”、“服务器”、“处理器”和“贮存器”全都表示电子或其它技术装置。这些术语不包括人或一组人。为了说明书的目的,术语“显示”表示在电子装置上显示。如在本说明书中所使用的,术语“计算机可读介质”和“机器可读介质”完全局限于以可由计算机读取的形式存储信息的有形、物理物体。这些术语不包括任何无线信号、有线下载信号和任何其它短暂信号。
尽管已参照许多具体细节描述了本发明,但本领域普通技术人员将会意识到,在不偏离本发明的精神的情况下,本发明可以被实现为其它具体形式。另外,许多附图(包括图4和图7a-b)概念性地图示各处理。这些处理的具体操作可不按照所示出并且描述的准确次序来执行。可不在一系列连续操作中执行该具体操作,并且可在不同实施例中执行不同的具体操作。另外,可以使用几个子处理来实现该处理,或者该处理可被实现为更大的宏处理的一部分。因此,本领域普通技术人员将会理解,本发明不受前面的说明性细节限制,而是由所附权利要求来限定。