用于为动态云提供子网经管(SA)查询高速缓存的系统和方法与流程

文档序号:11532586阅读:361来源:国知局
版权声明本专利文档公开的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开按照在专利商标局的专利文件或记录中出现那样进行的传真复制,但是除此之外在任何情况下都保留所有版权。本发明一般而言涉及计算机系统,并且具体地涉及云环境。
背景技术
::在infiniband子网中,子网管理器(sm,subnetmanager)是潜在的瓶颈。当infiniband子网的尺寸增加时,主机之间的路径数量会呈多项式地(polynomially)增加,并且当接收到许多并发的路径解析请求时,sm可能不能及时地为网络提供服务。这种可扩展性挑战在动态虚拟化云环境中进一步被放大。当具有infiniband互连的虚拟机(vm)实时迁移(livemigrate)时,vm地址改变。这些地址改变导致对sm的附加负载,因为通信对等体(peer)向sm发送子网经管(sa,subnetadministration)路径记录查询,以解析新的路径特性。技术实现要素:系统和方法可以支持云环境中的子网管理。在云环境中的虚拟机迁移期间,子网管理器可能成为使高效服务延迟的瓶颈点。系统和方法可以通过确保虚拟机在迁移之后保留多个地址来缓解这个瓶颈点。系统和方法还可以允许云环境内的每个主机节点与在重新建立与迁移后的虚拟机的通信时虚拟机可以利用的本地高速缓存关联。附图说明图1示出了根据实施例的在云环境中支持vm实时迁移的图示。图2示出了根据实施例的在两个主机之间建立连接的协议的图示。图3示出了根据实施例的当连接丢失时在两个节点之间正在进行的通信的图示。图4示出了根据实施例的在云环境中支持sa路径高速缓存的图示。图5示出了根据本发明实施例的在云环境中支持sa路径高速缓存的图示。图6示出了根据实施例的用于在云环境中支持子网管理的方法的图示。具体实施方式本发明通过示例而非限制的方式在附图的图中示出,附图中相似的标号指示相似的元件。应当指出,在本公开中对“一”或“一个”或“一些”实施例的引用不一定是对相同的实施例,并且这种引用意味着至少一个。下面对本发明的描述使用infiniband(ib)网络协议作为高性能网络协议的示例。对于本领域技术人员将清楚的是,可以使用其它类型的高性能网络协议而不受限制。本文描述的是可以在云环境中支持虚拟机(vm)迁移子网经管(sa)路径高速缓存的系统和方法。根据实施例,可以提供能够提供高性能计算(hpc)的云计算。这种hpc即服务可以在计算云内被提供,并且允许及适于使用高性能互连解决方案的虚拟hpc(vhpc)集群。根据实施例,每个ib子网可以利用子网管理器(sm)。每个sm可以负责网络初始化、拓扑发现、路径计算以及主机信道适配器(hca)和交换机上的ib端口的配置。在大型子网中,节点之间的可用路径可以呈多项式地增长,并且当收到许多并发的对于路径解析的请求时,sm会成为潜在的瓶颈。当具有ib互连的虚拟机实时迁移时,这种可扩展性挑战在动态虚拟化云环境中进一步被放大。为了支持高效的虚拟化,在维持高带宽和低延迟的同时,ib主机信道适配器(hca)可以支持单根i/o虚拟化(sr-iov)。每个ib连接的节点具有三个不同的地址。当实时迁移发生时,无论由分离(detach)直通的接口造成的停机时间如何,ib地址中的一个或多个会改变。与在迁移中的vm进行通信的其它节点失去连接,并且尝试通过向sm发送子网经管(sa)路径记录查询来找出要重新连接的新地址。所导致的在底层网络中朝向sm的通信可能是大量的。在大型网络中,由vm迁移引起的这种朝向sm的消息泛洪(messageflooding)会增加总体网络延迟,因为sm上的负载增加。于是,根据实施例,期望通过减少sm接收的由于vm迁移引起的sa请求量来减小sm上的负载。方法和系统可以通过实现vm可以在迁移后保留其相同地址的系统来达成此目的。此外,在建立两个节点之间的初始连接之后,可以使用sa路径高速缓存机制来大大减少sa查询的数量。根据实施例,infiniband一般使用三种不同类型的地址。首先是16位的本地标识符(lid)。至少一个lid由sm指派给每个hca端口和每个交换机。lid可以被用于在子网内路由流量。由于lid为16位长,因此可以进行65536个唯一的地址组合,其中仅有49151(0x0001-0xbfff)个可以被用作单播地址。因此,可用的单播地址的数量定义了ib子网的最大尺寸。第二种类型的地址是一般由制造商指派给每个设备(例如,hca和交换机)和每个hca端口的64位全局唯一标识符(guid)。sm可以向hca端口指派附加的子网唯一guid,该附加的子网唯一guid在启用sr-iovvf时可以是有用的。第三种类型的地址是128位全局标识符(gid)。gid一般是有效的ipv6单播地址,并且至少一个被指派给每个hca端口和每个交换机。gid是通过组合由架构经管者指派的全局唯一的64位前缀和每个hca端口的guid地址而形成的。下面对本发明的描述使用infiniband网络作为高性能网络的示例。对于本领域技术人员来说将清楚的是,可以使用其它类型的高性能网络而不受限制。而且,下面对本发明的描述使用kvm虚拟化模型作为虚拟化模型的示例。对于本领域技术人员来说将清楚的是,可以使用其它类型的虚拟化模型(例如,xen)而不受限制。下面对本发明的描述另外还利用openstack、opensm和rdslinux内核模块。openstack是云计算软件平台,包括一组相互关联的项目,这些项目通过数据中心控制处理、存储和联网资源的池。opensm是可以在openib之上运行的、兼容infiniband的子网管理器和经管。rds(可靠数据报套接字)是用于输送数据报的高性能、低延迟、可靠的无连接协议。对于本领域技术人员来说将清楚的是,可以利用其它类似的平台而不受限制。根据本发明的实施例,虚拟化可以有益于云计算中高效的资源利用和弹性的资源分配。实时迁移使得有可能通过以应用透明的方式在物理服务器之间移动虚拟机(vm)来优化资源使用。因此,利用单根i/o虚拟化(sr-iov)方法的虚拟化可以通过实时迁移来使得能够实现整合、资源的按需供应以及弹性。ib体系结构是串行的点对点全双工技术。ib网络可以被称为子网,其中子网由使用交换机和点对点链路互连的一组主机组成。ib子网可以包括至少一个子网管理器(sm),该子网管理器可以负责初始化和唤醒(bringup)网络,包括对子网中所有交换机、路由器和主机信道适配器(hca)的配置。ib支持丰富的传输服务的集合,以便提供远程直接存储器访问(rdma)和传统的发送/接收语义这二者。ibhca使用队列对(qp)进行通信,而与所使用的运输服务无关。qp在通信设立期间创建,并且可以具有一组初始属性,诸如qp号、hca端口、目的地lid、队列尺寸和所供应的传输服务。hca可以处理许多qp,每个qp由一对队列(诸如发送队列(sq)和接收队列(rq))组成,并且在参与通信的每个端节点处有一个这样的对存在。发送队列保持要传送到远程节点的工作请求,而接收队列保持关于如何处理从远程节点接收的数据的信息。除了qp以外,每个hca还具有与一组发送和接收队列关联的一个或多个完成队列(cq)。cq保持对于发布到发送和接收队列的工作请求的完成通知。即使通信的复杂性相对于用户是隐藏的,qp状态信息也保存在hca中。网络i/o虚拟化:根据实施例,可以使用i/o虚拟化(iov)来共享i/o资源并且提供对来自各个虚拟机的资源的受保护的访问。iov可以将可以暴露给虚拟机的逻辑设备与其物理实现解耦。一种这样类型的iov是直接设备指派。根据实施例,直接设备指派可以涉及i/o设备到vm的耦合而在vm之间没有设备共享。直接指派(或者说设备直通)可以以最小的开销提供接近本机的(neartonative)性能。物理设备直接附连到虚拟机从而绕过管理程序(hypervisor),并且访客os可以使用未经修改的驱动器。消极面是有限的扩展性,因为没有共享;一个物理网卡与一个vm耦合。根据实施例,单根iov(sr-iov)可以允许物理设备通过硬件虚拟化表现为同一设备的多个独立的轻量级实例。这些实例可以被指派给vm作为直通设备,并作为虚拟功能(vf)被访问。sr-iov缓解了纯直接指派的可扩展性问题。不幸的是,如果所实现的系统为了数据中心优化而使用透明的实时迁移(vm迁移),则诸如sr-iov的直接设备指派技术会给云提供商带来问题。实时迁移的实质是虚拟机的存储器内容被复制到远程管理程序。然后虚拟机在源管理程序处暂停,并且虚拟机的操作在其被复制到的目的地处恢复。当底层系统利用直接设备指派(诸如sr-iov)时,网络接口的完整内部状态不能被复制,因为它被绑定到硬件。指派给虚拟机的sr-iovvf被分离,实时迁移将运行,并且新的vf将在目的地处被附连。在使用ibvf的vm被实时迁移的情景中,由于vm的所有三种地址的改变,会引入对底层网络架构和sm的明显影响。因为vm被移动到具有不同lid的不同物理主机,所以lid改变。由sm指派给源vf的虚拟guid(vguid)也可以改变,因为在目的地处将附连不同的vf。随后,由于vguid被用于形成gid,因此gid也将改变。因此,迁移后的vm会突然与新的一组地址关联,并且迁移后的vm的通信对等体可以开始向sm发送并发的sa路径记录查询突发(burst)从而尝试重新建立与迁移后的vm的丢失的连接。这些查询会对sm造成附加开销,并且其副作用是追加的停机时间。如果迁移后的节点与网络中的许多其它节点通信,则sm会成为瓶颈并妨碍整体网络性能。根据实施例,本文所述的方法和系统可以减少和/或消除与使用向云提供商呈现的直接设备指派技术(诸如sr-iov)的虚拟机的实时迁移关联的问题。这些方法和系统可以克服在使用ibvf的vm正在实时迁移的情景中存在的问题。虚拟机(vm)实时迁移图1示出了根据实施例的在云环境中支持vm实时迁移的图示。如图1所示,infiniband(ib)子网100可以包括支持不同管理程序111-113的多个主机节点a-c(101-103)。此外,每个管理程序111-113允许各个虚拟机(vm)在其上运行。例如,主机节点a101上的管理程序111可以支持vma104,并且主机节点b上的管理程序112可以支持vmb105。vma和vmb在其上运行的这些节点可以在进行通信。此外,主机节点a-c(101-103)中的每一个可以与一个或多个主机信道适配器(hca)117-119关联。如图1所示,主机节点a101上的hca117可以利用可由vma104使用的队列对(qp),诸如qpa108,而主机节点b102上的hca118可以利用可由vmb105使用的qpb107。根据本发明的实施例,可以使用输入/输出虚拟化(iov)来向vm提供i/o资源,并且提供对来自多个vm的共享的i/o资源的受保护的访问。iov可以将暴露于vm的逻辑设备与其物理实现解耦。例如,单根i/o虚拟化(sr-iov)是用于在ib网络上的虚拟化中实现高性能的i/o虚拟化方法。而且,ib子网100可以包括子网管理器110,该子网管理器可以负责网络初始化、hca和交换机上的ib端口的配置、拓扑发现以及路径计算。如图1所示,vmb105可以从管理程序112迁移到管理程序113(例如,在与管理程序111上的vma105通信的同时)。在迁移之后,新vmb'106会突然暴露于在目的地主机节点c103处的新的一组地址。此外,对等体vm(例如,vma104)可以开始向sm110发送子网经管(sa)路径记录查询,同时尝试重新建立丢失的连接(一旦vmb'在新的主机节点上运行,vmb'就也可以向sm发送sa路径请求)。这是由于以下事实:一般而言,一旦vm迁移,比如诸如vmb从主机节点b迁移到主机节点c,vm的地址(lid、guid、gid)就相应地改变,因为在使用sr-iov时它们一般是绑定到硬件的。对子网管理器的这些sa路径查询会造成显著的停机时间,以及对infinibandsm110的附加开销。如果在大型数据中心内在相当短的时间内发生许多迁移,或者如果迁移后的节点与网络中的许多其它节点在进行通信,则sm110会成为瓶颈,因为它可能不能及时响应。根据本发明的实施例,当vmb104迁移并且ib地址信息改变时,系统可以减少由参与的主机节点a-c(101-103)生成的sa查询量。如图1所示,系统可以首先从管理程序112分离vmb104,例如通过从vmb104分离虚拟功能(vf)115。然后,系统可以向目的地主机节点c103提供与vmb104关联的地址信息120,例如通过将地址指派给在主机节点c103上的管理程序113上的下一个可用的虚拟功能(即vf'116)。最后,在vmb104迁移到管理程序113成为vmb'106之后,系统可以将vmb'106暴露给地址信息120以便重新建立与对等体vm的通信(例如,经由qpb'109)。因此,在迁移到目的地主机节点c103之后,新vmb'106可以暴露于原始的一组地址,并且不需要对等体vma104向sm110发送sa路径记录查询。根据实施例,系统可以支持具有附连的ibsr-iovvf的vm的vm实时迁移。远程直接存储器访问(rdma)可以经诸如可靠数据报套接字(rds)协议的协议被用来在vm的迁移之后重新建立通信。根据实施例,系统可以利用openstack、opensm和rdslinux内核模块。此外,可以使用可称为lidtracker的程序来跟踪与每个vm关联的ib地址,并且可以编排迁移过程。在实施例中,该程序可以启用opensm的选项honor_guid2lid_file。然后,由opensm生成的文件guid2lid可以由该程序解析,并以一定次序(诸如升序)按guid排序。lid从一开始被指派给guid。指派给guid的每个lid可以被称为用于物理主机的基本lid。在实施例中,一旦指派了基本lid,就可以为运行的vm扫描每个启用ib的openstack计算节点。可以从49151(最上面的单播lid)开始以降序给被发现在运行的每个vm指派lid。指派给vm的这些lid可以被称为浮动lid。在实施例中,浮动lid可以替代vm正在其上运行的openstack计算节点中的基本lid。管理程序与vm共享lid。在某些实施例中,每个管理程序可以运行一个vm,并且vm可以迁移到没有其它vm当前正在运行的管理程序。在其它实施例中,多个vm可以在一个管理程序上运行,并且vm可以迁移到另一个管理程序,而不管其它vm当前是否在目的地管理程序上运行。在实施例中,当从诸如openstackapi的api命令(order)对于vmx的迁移时,可以从vm分离sr-iovvf。当完成了设备的去除并且正在进行迁移时,openstack可以通知程序vmx正在从一个管理程序(诸如hypervisory)移动到目的地管理程序(诸如hypervisorz)。然后,程序可以将hypervisory的lid改回其基本lid,并且hypervisorz可以获得与vmx关联的浮动lid。该程序还可以将与vmx关联的vguid指派给在目的地管理程序hypervisorz处的下一个可用的sr-iovvf。在迁移期间,该vm没有网络连接性。根据实施例,可以经由重新启动来应用改变。然后,当迁移完成时,openstack可以在hypervisorz上将下一个可用的sr-iovvf添加到vmx,并且vm可以得回其网络连接性。vm可以暴露给它在迁移之前所具有的相同的ib地址(lid、vguid和gid)。从vm的角度来看,看起来就像是ib适配器被分离了迁移所需的时间并且同一个ib适配器被重新附连,因为地址没有改变。子网经管(sa)路径高速缓存根据实施例,在两个节点之间建立初始连接之后,端节点处的本地sa路径高速缓存机制可以减少或消除sa查询。高速缓存方案可以是通用的并且,当高速缓存方案被启用时,在发生或不发生实时迁移的情况下都可以缓解sm上的负载。图2示出了根据实施例的在两个主机之间建立连接的协议的图示。更具体地,图2示出了使用诸如rds的协议在两个主机之间建立连接。根据实施例,在建立连接之前,可以在所有通信对等体中设立经ib的ip(ipoib)。诸如rds的协议可以使用具体ib端口的ipoib地址来确定端口的gid地址。在解析gid地址之后,该协议可以具有足够的信息来执行路径记录查找并建立ib通信。如图2所示,在infiniband子网200内,子网管理器210可以提供节点c220和节点d225之间(更具体地,节点c上的客户端侧应用和节点d上的服务器侧应用之间)的路径通信。在图2中,上层应用的客户端侧在节点c中运行,并且该应用的服务器侧在节点d中运行。应用的客户端侧可以创建诸如rds套接字的套接字,并尝试与应用的服务器侧进行通信(步骤1)。诸如rds的协议可以从节点c向sm发送sa路径记录请求(步骤2)。子网管理器可以向协议提供响应(步骤3)。这个响应可以包括用于客户端侧应用的目标的地址信息。在从子网管理器接收到响应之后,该协议可以尝试通过发送连接请求来发起与节点d的连接(步骤4)。如果连接成功,则协议可以例如经由两侧中的rdma_cm_event_established事件来建立通信信道(步骤5)。在这个时候,上层应用可以进行通信(步骤6)。在初始连接时某些事情出错的情况下,客户端侧(节点c)的协议可以尝试使用随机退避机制重试建立连接。服务器还没有意识到客户端要进行通信的意图。如果在连接建立之后出现任何问题,则两个rds侧(从应用的角度来看是客户端和服务器)将主动参与与对等体进行重新连接。连接过程中的随机退避机制对于当双方都参与连接时避免出现竞争状况是有用的。图3示出了根据实施例的在连接丢失时两个节点之间正在进行的通信的图示。在图3中,在infiniband子网200内,子网管理器210可以提供节点c220和节点d225之间的路径通信,并且当连接丢失时(步骤2)节点c和节点d之间存在正在进行的通信(步骤1)。连接的丢失可以与例如在节点上运行的应用之一的实时迁移关联。两个协议端都可以确定连接断开(down)并且在尝试重新连接之前等待某个随机时间(即,退避时间)(步骤3)。如图3所示,在尝试重新连接之前每一侧等待的时间可以相同或不同。节点可以尝试通过向sm发送sa路径记录请求来重新连接(步骤4)。在接收到sa路径记录响应(步骤5)之后,可以发送连接请求(步骤6)。在图3所示的情况下,在步骤3中由两个节点选择的退避时间几乎相同。因此,即使节点d比节点c稍快地获得sa路径记录响应,并且尝试在步骤6中首先发起连接,该连接请求也不会在节点c自己发送连接请求之前到达节点c。在这种情况下,两个协议端都有未完成的连接请求。然后,当节点接收到来自它们的对等体的连接请求时,节点将拒绝该连接请求(步骤7)。在步骤8中,两个节点在它们重试重新连接之前再次选择了随机退避时间。这次,由节点d选择的随机退避时间明显长于由节点c选择的随机退避时间。因此,节点c获得优先并重复连接建立过程;发送sa路径记录请求(步骤8)、接收来自子网管理器的响应(步骤10)、向节点d发送连接请求(步骤11),并且该连接请求在节点d尝试自己发起与节点c的连接之前到达节点d。在图3中绘出的情景中,节点d接受传入的连接(步骤12)。然后在步骤13和步骤14中可以为上层应用恢复通信。从图3外推,变得清楚的是,在vm迁移(断开通信)的情况下,子网管理器会被sa路径请求轰炸。在具有数以千计的节点的大型子网中,即使从每个节点只发送一个附加的sa查询,sm也会最终被数以千计的消息淹没。当在动态的基于ib的云中发生实时迁移时,可能发送过多的sa查询。随着网络中节点数量的增加,sa查询的数量会呈多项式地增加。所公开的方法和系统提供了高速缓存机制,该机制可以减少由子网中的节点发送到子网管理器的sa查询的数量。图4示出了根据本发明实施例的在云环境中支持sa路径高速缓存的图示。如图4所示,infiniband(ib)子网400可以包括子网管理器(sm)410和多个主机节点a-b(401-402)。当源主机节点a401(例如,vma411)首次尝试与目的地主机节点b402(例如,vmb412)通信时,源主机节点a401可以向sm410发送sa路径记录请求。然后,源主机节点可以使用本地高速缓存421来存储路径信息(例如,路径记录422)。此外,当源主机节点a401尝试重新连接到相同的目的地主机节点b402时,源主机节点a401可以在本地高速缓存421中的高速缓存表中查找目的地主机节点的地址而不是向子网管理器发送请求。如果找到路径信息,则源主机节点a401可以使用如路径记录422所指示的路径420连接到目的地主机节点b402,而没有向sm410发送sa查询。否则,源主机节点a401可以向sm410发送sa路径记录请求,以获得必要的路径信息。图5示出了根据本发明实施例的在云环境中支持sa路径高速缓存的图示。更具体地,图5示出了在infiniband环境的子网内支持sa路径高速缓存的图示。如图5所示,infiniband(ib)子网500可以包括支持不同管理程序511-512的多个主机节点a-b(501-502)。此外,每个管理程序512-513允许各个虚拟机(vm)在其上运行。例如,主机节点a101上的管理程序511可以支持vma504,并且主机节点b上的管理程序512可以支持vmb505。此外,主机节点a-b(501-502)中的每一个可以与一个或多个主机信道适配器(hca)517-518关联。如图5所示,主机节点a501上的hca517可以利用可由vma504使用的队列对(qp),诸如qpa508,而主机节点b502上的hca518可以利用可由vmb505使用的qpb507。根据实施例,每个主机节点还可以支持存储器530、540,这些存储器各自可以包含高速缓存(诸如本地高速缓存)535、545,并且每个高速缓存继而可以包括一个或多个路径记录537、547,这些路径记录可以存储在高速缓存表中。而且,ib子网500可以包括子网管理器510,子网管理器510可以负责网络初始化、hca和交换机上的ib端口的配置、拓扑发现以及路径计算。根据实施例,当源主机节点a501(例如,vma504)首次尝试与目的地主机节点b502(例如,vmb505)通信时,源主机节点a501可以向sm510发送sa路径记录请求。然后,源主机节点可以使用本地高速缓存535来存储路径信息(例如,路径记录537)。此外,当源主机节点a501尝试重新连接到相同的目的地主机节点b502时,源主机节点a501可以在高速缓存535中查找目的地主机节点的地址,而不是向子网管理器发送请求。根据实施例,如果找到路径信息,则源主机节点a501可以通过使用在路径记录537中指示的路径连接到目的地主机节点b502,而没有向sm510发送sa查询。否则,源主机节点a501可以向sm410发送sa路径记录请求,以获得必要的路径信息。根据实施例,在主机节点a501向子网管理器510发送sa路径记录请求的情景中,所接收的响应可以包括高速缓存标志,该高速缓存标志可以向主机节点a501指示使用本地高速缓存表(在高速缓存535内)来存储与目的地主机节点b502的给定gid地址(dgid)关联的路径特性。图6示出了根据实施例的用于支持云环境中的子网管理的方法的图示。示例性方法600可以在步骤601开始于在云环境内提供包括第一主机节点在内的多个主机节点,第一主机节点与至少第一管理程序和第一主机信道适配器关联。在步骤602,该方法可以继续在第一主机节点上提供第一虚拟机,第一虚拟机与多个地址关联。在步骤603,该方法继续将第一虚拟机从第一主机节点迁移到云环境内多个主机节点中提供的第二主机节点,第二主机节点与至少第二管理程序和第二主机信道适配器关联,其中多个主机节点中的每一个都包括本地高速缓存;每个本地高速缓存包括一个或多个路径记录。根据实施例,迁移第一虚拟机可以包括:在步骤604,从第一管理程序分离第一虚拟机,从第一管理程序分离第一虚拟机包括从第一虚拟机分离与第一虚拟机关联的第一虚拟功能。在步骤605,该方法继续向第二主机节点提供与第一虚拟机关联的该多个地址。在步骤606,该方法可以将该多个地址指派给第二虚拟功能,第二虚拟功能与第二管理程序关联。在步骤607,该方法可以将第一虚拟机从第一主机节点迁移到第二主机节点上的第二虚拟机。在步骤608,该方法可以以将第二虚拟机暴露于与第一虚拟机关联的该多个地址来结束。根据实施例,sa路径记录高速缓存机制可以以诸如rds协议的协议实现,并且高速缓存表可以存储在每个节点的存储器中。可以使用如下面的伪代码中所示的程序:1:privateboolsapathcachingenabled2:privatelistsapathrecordcachetable3:4:procedurerdsmoduleinitialization5://高速缓存表被初始化6:sapathrecordcachetable=empty7:8://系统还不知道sa路径高速缓存是否被sm启用,9://所以我们假设还没有。10:sapathcachingenabled=false11:endprocedure12:13:procedure(re-)connectionestablishment(dgid)14:structpathrecorddstpath=null15:16://只有sa路径高速缓存被sm启用17://才使用高速缓存18:ifsapathcachingenabledthen19:ifdgidinsapathrecordcachetable20:dgidsthen21:dstpath=cachedpathrecord22:endif23:endif24:25://如果dstpath在这个时候为null,26://或者高速缓存被sm禁用,27://或者用于具有给定dgid的主机的路径特性28://从未被检索过。在任何情况下,29://pathrecord查询可以被发送到sm。30:ifdstpath==nullthen31:sendanewsapathrecordquerytothesm32:waitforthereply33:dstpath=pathrecordresponse34:35://如果sm启用了高速缓存,36://则回复将pathrecord中的保留字段设置为1。37://如果sm没有启用高速缓存,则保留字段为038:ifdstpath!reservedfield!=0then39:sapathcachingenabled=true40:41://在高速缓存表中插入dst路径42:sapathrecordcachetable.append(43:dstpath)44:endif45:endif46:连接到(dst路径)47:endprocedure根据实施例,当源主机(shost)首次尝试与目的地主机(dhost)通信时,shost可以向子网管理器发送sa路径记录请求。如果响应具有升起的(raised)高速缓存标志,则shost可以使用本地高速缓存表来存储与dhost的给定gid地址(dgid)关联的路径特性。而且,shost现在意识到子网管理器支持高速缓存,所以在下次shost尝试与任何dhost连接或重新连接时,它将首先在高速缓存表中查找。如果找到用于给定dhost的路径信息,则可以防止shost向子网管理器发送sa查询,并且shost可以替代性地尝试使用其高速缓存表内的信息与dhost连接。再次参考图3,参考中断的连接(步骤2),在启用上述高速缓存机制的系统中,不需要向子网管理器发送sa查询。在图3所描述的情况下,消除了步骤4、5、9和10,因此,连接重建更快并且子网管理器上的负载(例如,sa路径请求和响应)更低。本发明的许多特征可以在硬件、软件、固件或其组合中实现、利用硬件、软件、固件或其组合实现、或者在硬件、软件、固件或其组合的协助下实现。因此,本发明的特征可以利用(例如,包括一个或多个处理器的)处理系统来实现。本发明的特征可以在计算机程序产品中实现、利用计算机程序产品实现、或者在计算机程序产品的协助下实现,其中计算机程序产品是其上/其中存储有可用来编程处理系统以执行本文所呈现的任何特征的指令的(一个或多个)存储介质或计算机可读介质。存储介质可以包括但不限于任何类型的盘(包括软盘、光盘、dvd、cd-rom、微驱动器、以及磁光盘)、rom、ram、eprom、eeprom、dram、vram、闪存存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic)、或适于存储指令和/或数据的任何类型的介质或设备。在存储在任何一种机器可读介质的情况下,本发明的特征可以被结合到软件和/或固件中,以用于控制处理系统的硬件,以及用于使处理系统能够与其它机制交互,从而利用本发明的结果。这种软件或固件可以包括但不限于应用代码、设备驱动器、操作系统和执行环境/容器。本发明的特征也可以利用例如诸如专用集成电路(asic)的硬件部件在硬件中实现。实现硬件状态机以执行本文所描述的功能对相关领域的技术人员将是清楚的。此外,本发明可以使用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来方便地实现,该通用或专用数字计算机、计算设备、机器或微处理器包括一个或多个处理器、存储器和/或根据本公开的教导编程的计算机可读存储介质。如对软件领域的技术人员将清楚的,适当的软件编码可以容易地由熟练的程序员基于本公开的教导来准备。虽然以上已经描述了本发明的各种实施例,但是应该理解,它们已作为示例而不是限制呈现。对相关领域的技术人员将清楚的是,在不背离本发明的精神和范围的情况下,其中可以做出各种形式和细节上的变化。本发明已经借助说明具体功能及其关系的执行的功能构建块进行了描述。这些功能构建块的边界在本文中通常是为了方便描述而任意定义的。可以定义可替代的边界,只要具体的功能及其关系被适当地执行。任何这种可替代的边界因此在本发明的范围和精神之内。本发明的以上描述是为了说明和描述的目的提供。它不是旨在是穷尽的或者要把本发明限定到所公开的精确形式。本发明的广度和范围不应该由任何上述示例性实施例来限制。许多修改和变化对本领域技术人员来说将是清楚的。修改和变化包括所公开特征的任何相关组合。实施例的选择与描述是为了最好地解释本发明的原理及其实践应用,从而使本领域其他技术人员能够理解本发明用于各种实施例并且可以进行适于预期特定用途的各种修改。本发明的范围要由以下权利要求及其等价物来定义。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1