具体实施方式
本发明的系统和方法允许远程连接至企业网络的客户机设备以站点知晓的方式操作。在其中文件可在网络上的多个位置中复制的分布式文件系统中,存在向进行请求的客户机提供至所需信息中位置最靠近进行请求的客户机(或可由进行请求的客户机以对客户机和网络而言最小的总“成本”访问)的副本的转介(即路径)的优点。例如,如果客户机连接至特定站点,并且客户机希望访问的文件的一副本位于该站点处,则通常偏好将客户机转介至该站点处的副本而非一不同的副本。然而,这样的站点知晓转介在进行转介的服务器了解客户机请求所源自的站点时是可能的。如果客户机请求是以其中请求不标识可由进行转介的服务器识别的站点的“无站点”模式作出的,则该信息一般不可用。本发明的系统和方法允许远程客户机设备以其转介请求可靠地标识站点,使得进行转介的服务器可响应于请求提供站点知晓的转介。
图1描绘了根据本发明的系统100的实施例。在所示实施例中,提供了三个站点101、102和103。在各实施例中,站点可包括在有限地理区域上连接的一个或多个计算设备。例如,经由以太网或WiFi连接的计算设备的局域网可被认为是站点。在此示例中,站点101使用广域网(WAN)链接104和105连接至站点102和103两者。在各实施例中,WAN链接104和105可包括站点101、102和103之间私人租用的网络连通性。一般而言,WAN链接104和105的带宽与站点101、102和103内的局域网或使用诸如因特网等公共网络106相比使用和维护起来更为昂贵。站点101、102和103以及WAN链接104和105一起可构成示例企业网络109(在图1中以虚线表示),诸如公司的内联网。
在图1中,站点101、102和103不是完全相同的。例如,站点101可以是企业的“总公司”,诸如公司。站点102和103可以是企业的卫星办公室。在所示的示例实施例中,站点101包括存储服务器107、本地连接的客户机设备110、对象转介服务器115、网关服务器120和目录服务器122,其均例如使用站点101内的局域网来在操作上彼此连接。
站点102包括网关服务器125、本地连接的客户机设备130和存储服务器135,其均例如使用站点102内局域网来在操作上彼此连接。类似地,站点103包括网关服务器140、本地连接的客户机设备145和存储服务器150,其均例如使用站点103内局域网来在操作上彼此连接。
在各实施例中,存储服务器107、135和150存储文件,诸如门户、内联网站点、可安装软件和其它文档。任何这样的文件此处也可被称为“对象”。在各实施例中,存储在一个存储服务器中的文件中的一些可诸如通过使用可从华盛顿州雷德蒙市的微软公司购得的分布式文件系统复制服务(DFSR)被复制到一个或多个其它存储服务器。在各实施例中,某些文件被复制,使得站点101、102和103中每一个处的本地连接的客户机110、130和145可访问文件的本地副本。在存储服务器107、135和150中的一个以上中复制文件允许本地连接的客户机设备110、130和145在较少延迟和对WAN链接104和105的有限使用的情况下更容易地进行访问。
在各实施例中,本地连接的客户机设备,诸如本地连接的客户机设备145,如下访问复制的文件。在此示例中,企业网络109包括位于站点101中的单个对象转介服务器115。对象转介服务器115向诸如客户机设备145等客户机提供至对象(诸如存储在存储服务器107、135和150中的文件)的转介。为易于说明起见,在图1中示出了单个对象转介服务器115。在各实施例中,可在企业网络109内提供附加的对象转介服务器。例如,可在位于站点102处的服务器中复制对象转介服务器115的内容。当客户机设备145对文件作出转介请求时,对象转介服务器115首先确定客户机设备145所属的站点103。在各实施例中,客户机设备145作出的转介请求包括客户机设备145的IP地址。在各实施例中,客户机设备145作出的转介请求还可包括客户机设备145的子网掩码。对象转介服务器115将该信息提供给目录服务器122,目录服务器确定客户机设备145是站点103的一部分并将该信息提供回对象转介服务器115。在各实施例中,目录服务器122可包括可从华盛顿州雷德蒙市的微软公司购得的服务器(或域控制器(DC))。对象转介服务器115然后将对所请求的文件的转介的集合提供回客户机设备145。转介可包括至被存储在存储服务器107、135和150的一个或多个中的所请求的文件的副本的路径。
在各实施例中,返回给客户机设备145的转介以最小成本的方式排序,使得所返回的第一转介是至存储服务器150中的文件副本的路径,存储服务器150位于与客户机设备145相同的站点103中。在各实施例中,所请求的文件可能不在所有的存储服务器中进行复制,且可能不存在于存储服务器150中。从而,对象转介服务器115可根据对客户机设备145而言访问所请求的文件的“次最佳”选择来对所返回的转介排序。例如,如果所请求的文件存在于存储服务器107和存储服务器135中,但不存在于存储服务器150中,则对象转介服务器115可首先返回至存储服务器107内的所请求文件的存储位置的转介,其次再返回至存储服务器135内的所请求文件的存储位置的转介,因为客户机设备145仅需要一个WAN链接104来访问存储服务器107,而需要两个WAN链接104和105来访问存储服务器135。
在此示例中,目录服务器122能够确定客户机设备145的站点103,因为在客户机145经由至站点103的本地连接登录时客户机设备145的IP地址由企业网络109分配。在各实施例中,这对从企业网络109外部远程连接的客户机不成立。例如,从企业网络109外部、通过诸如网关服务器125的网关服务器远程连接的客户机一般将具有由其因特网服务供应商(ISP)分配的IP地址。ISP提供的IP地址一般不可由诸如目录服务器122的目录服务器识别。当不具有可靠地确定客户机正从哪个站点连接的能力时,诸如对象转介服务器115的对象转介服务器不能智能地提供以实现对文件的最小成本访问的方式排序的、至所复制的文件的转介。
然而,本发明提供了供远程连接的客户机接收至所复制的文件的站点知晓的转介的系统和方法。例如,再次参考图1,客户机设备160通过网关服务器125远程连接至企业网络109。网关服务器125(以及网关服务器107和140)可包括允许诸如客户机160的远程客户机通过诸如因特网的公共网络106连接至企业网络109的服务器。在各实施例中,网关服务器125包括可从华盛顿州雷德蒙市的微软公司购得的服务器。客户机设备160可例如使用IPv6和IPSec协议安全地连接到网关服务器125。在各实施例中,在相互认证和NAP(网络访问保护)检查完成之后,在客户机设备160和网关服务器125之间建立IPsec通道。在各实施例中,客户机设备160一开始连接到在地理上最靠近客户机设备160的网关服务器。
例如,假定客户机设备160的用户是企业的总公司的成员,总公司由图1中的站点101表示。当用户在总公司时,用户通常本地连接至站点101。对此示例,假定站点101是在美国纽约州的纽约市中。然而,该用户正带着客户机设备160在欧洲旅行。站点102在英国伦敦,而客户机设备160当前正同用户一起在德国柏林的宾馆中。当用户登录到客户机设备160上,客户机设备160通过最近的网关服务器(在此示例中为站点102中的网关服务器125)连接至企业网络109。可按照各种已知方式执行对最近的网关服务器的发现和连接。例如,客户机设备160可查验网关服务器的已知IP地址的列表,并连接至回头向客户机设备160提供首个响应的网关服务器。在各实施例中,客户机设备160还可使用IPv6排序算法对网关服务器的已知IP地址的列表排序。
在连接至网关服务器125之后,客户机设备160从网关服务器125接收网关服务器125的站点标识符。在其它实施例中,客户机设备160可在连接至网关服务器125之前接收网关服务器125的站点标识符。例如,可预先向客户机设备160提供企业网络109中的所有网关服务器120、125和140的站点标识符。客户机设备160然后可获取网关服务器125的站点标识符,客户机设备160从本地存储或另一可访问的存储位置连接至网关服务器125。站点标识符可例如包括网关服务器125的IP地址(带有或不带有子网掩码),其可由企业网络109分配。在其它实施例中,站点标识符可包括站点102的经解析的站点名,诸如“伦敦”。
在实施例中,运行在客户机设备160上的网络访问客户端程序165在协商至企业网络109的连接的消息交换期间接收站点标识符。如上所讨论的,在其它实施例中,网关125的站点标识符对客户机设备160已知,且网络访问客户端程序165从客户机设备160上的本地存储或从另一可访问的存储位置获取站点标识符。一旦对网关125获取了站点标识符,网络访问客户端程序165将该站点标识符写入客户机设备参数170中。在各实施例中,客户机设备参数170可包括用于配置的文件或其它存储机制以及客户机设备160的操作系统参数。在其中客户机设备165正在运行可从华盛顿州雷德蒙市的微软公司购得的Microsoft的操作系统的各实施例中,客户机设备参数170可包括注册表项。在此示例中,站点标识符被写入由NetLogon维护的“站点名”注册表项中。
在各实施例中,对客户机设备参数170的改变引起向运行在客户机设备160上的对象转介客户端程序175发送通知。对象转介客户端程序175从客户机设备参数170中读取站点标识符,并在对企业网络109内的对象转介的将来请求中使用该站点标识符。实际上,客户机设备160从其所连接的网关服务器125采用站点102。
继续以上示例,客户机设备160的对象转介客户端程序175发送对至目标文件的站点知晓转介的请求,目标文件的副本被存储在存储服务器107和存储服务器135两者上。对转介的请求通过网关服务器125和WAN链接105发送到对象转介服务器115。请求包括对从网关服务器125获取的站点标识符的显式声明。如果站点标识符是完全解析的站点名(例如,“伦敦”),则对象转介服务器115不必联系目录服务器122以确定客户机160的站点。如果站点标识符未被解析,诸如网关设备125的IP地址,则对象转介服务器115通过将站点标识符发送到目录服务器122(目录服务器返回经解析的站点名)来确定客户机160的站点。
在任一情况中,对象转介服务器115生成至所请求的目标文件的一个或多个转介的列表。在此示例中,目标文件包括存储服务器107和存储服务器135两者上的副本。因为客户机设备160在转介请求中提供了站点标识符,对象转介服务器从站点标识符标识的站点(在此示例中为站点102)确定至目标文件的最小成本转介。从而,因为目标文件在站点102内的存储服务器135上可用,则对象转介服务器115将有可能确定至目标文件的最小成本访问是经由存储在存储服务器135上的副本的。从而,对象转介服务器115在向客户机设备160发回的转介列表中首先安排至存储服务器135上的副本的转介。对象转介服务器115在各实施例中还可返回至存储服务器107上的目标文件副本的转介,以防存储服务器135不可用或不能工作。在此示例中,至存储服务器107上的目标文件副本的转介可排在至存储服务器135上的副本的转介之后。如所讨论地,在各实施例中,对象转介服务器115提供给客户机设备160的转介可包括至目标文件的各个副本的文件系统路径。
在各实施例中,对象转介服务器115可基于各种因素作出最小成本访问的判断。例如,最小成本访问的判断可基于转介请求中提供的站点与包含目标文件副本的最近存储服务器之间的地理距离来作出。在其它实施例中,最小成本访问的判断可基于客户机设备160访问目标文件副本需要经过的通信链路的成本。例如,在各实施例中,客户机设备160可从诸如网关服务器125的网关服务器断开连接,并重新连接至诸如网关服务器140的一不同网关服务器,以便访问存储在站点103处的存储服务器150上的副本。
在各实施例中,在图1中描述的系统允许客户机设备连接、断开连接以及重新连接企业网络109的各个不同入口点。例如,客户机设备160可在雇员在总公司工作时首先作为本地连接的设备在站点101连接。雇员然后可下班并将客户机设备带到家里,在那里雇员再次登录,客户机设备160连接至网关设备120。客户机设备160然后例如从网关服务器120或从本地存储或另一可访问的存储位置获取网关服务器120的站点标识符。当客户机设备160连接时的转介请求以上文所讨论的方式使用网关服务器120的站点标识符以接收至所请求的对象的、对位于站点101处的客户机优化的转介。继续以上示例,假定雇员将其客户机设备置于休眠模式中,并然后到欧洲旅行,并从其宾馆房间工作。设备客户机160在从休眠模式中醒来时,发现其更靠近网关服务器125。从而,客户机设备160建立与网关服务器125的新连接,并例如从网关服务器125或从本地存储或另一可访问的存储位置获取网关服务器125的站点标识符。对于对象转介的后续请求然后将使用网关服务器125的站点标识符,使得所接收的转介对连接至站点102的客户机优化。在各实施例中,每当接收到新站点标识符(例如,当客户机设备从休眠模式中醒来,并重新连接至网关服务器125时),网络访问客户端程序165用新站点标识符盖写客户机设备参数170中的先前设置的站点标识符。此外,在各实施例中,每当作出对存储在客户机设备参数170中的站点标识符的改变时,即警告对象转介客户端程序175。
在各实施例中,本申请中公开的文件复制和转介可使用华盛顿州雷德蒙市的微软公司提供的分布式文件系统(DFS)服务来完成。DFS采用用于执行复制和至所复制的文件的转介的若干相关协议。例如,文件复制可使用可从微软公司获得的分布式文件系统复制协议规范(MS-FRS2)完成。此外,可从华盛顿州雷德蒙市的微软公司获得的分布式文件系统(DFS)转介协议规范(DFS转介)允许文件系统客户端通过使用用于共享的DFS路径(即虚拟名)来访问远程文件共享,DFS路径然后被透明地解析成实际文件服务器上的实际共享名。例如,DFS可允许位于不同文件服务器(诸如存储服务器107、135和150)上的共享集归组到统一的名字空间中。在不采用DFS的情况下,要求诸如服务器消息块(SMB)和服务器消息块版本2(SMB2)的网络文件系统的用户知道它们需要访问的所有文件服务器的名字以及驻留在那些文件服务器上的文件。在采用DFS转介的情况下,用户可导航统一的名字空间以在不知道各个文件服务器和持有数据的共享的名字的情况下访问文件和文件夹。
DFS转介支持两种类型的名字空间:基于域的名字空间,其提供高可用性和负载平衡;以及独立名字空间,其驻留在单个DFS根目标服务器上并且不需要域基础架构。在独立DFS名字空间中,客户机发出根转介请求,并将转介请求直接链接至DFS根目标服务器。参考图1描述的实施例可使用独立DFS名字空间来创建。例如,对象转介客户端程序175可包括DFS客户端应用,且对象转介服务器115可包括独立DFS名字空间服务器,该DFS名字空间服务器发出对位于文件服务器(例如,存储服务器107、135和150)上的企业网络109中的所有复制的文件的转介。在图1的示例中,对象转介服务器115提供至所有存储服务器107、135和150中的目标文件的转介,这些存储服务器是单个名字空间的一部分。
图2示出了类似于图1示出的实施例、但其中采用了多个对象转介服务器215、227和247的实施例。在该实施例中,站点201、202和203中的每一个分别具有其自己的目录服务器222、228和248。在此示例实施例中,目录服务器222、228和248可包括对象转介服务器215、227和247的定位符。
在此示例中,站点201使用WAN链接204和205连接至站点202和203两者。站点201、202和203以及WAN链接204和205一起可构成示例企业网络209,诸如公司的内联网。类似于图1,图2的站点201、202和203不是完全相同的,且各自可包括单独的名字空间。例如,站点201可以是企业的“总公司”,诸如公司。站点202和203可以是企业的卫星办公室。在所示的示例实施例中,站点201包括存储服务器207、本地连接的客户机设备210、对象转介服务器215、网关服务器220和目录服务器222,其均例如使用站点201内的局域网来在操作上彼此连接。
站点202包括网关服务器225、本地连接的客户机设备230、对象转介服务器227、目录服务器228和存储服务器235,其均例如使用站点202内局域网来在操作上彼此连接。类似地,站点203包括网关服务器240、本地连接的客户机设备245、对象转介服务器247、目录服务器248和存储服务器250,其均例如使用站点203内局域网来在操作上彼此连接。
在各实施例中,存储服务器207、235和250存储文件,诸如门户、内联网站点、可安装软件和其它文档。任何这样的文件此处也可被称为“对象”。此外,如此处进一步讨论地,对象转介服务器215、227和247也被认为是要对其作出转介的“对象”。在各实施例中,存储在一个存储服务器中的某些文件可诸如通过使用DFSR被复制到一个或多个其它存储服务器。在各实施例中,某些文件被复制,使得站点201、202和203中每一个处的本地连接的客户机210、230和245可访问文件的本地副本。
本发明提供了供远程连接的客户机在具有多个对象转介服务器和目录服务器的分布式文件系统中接收至所复制的文件的站点知晓的转介的系统和方法。例如,再次参考图2,客户机设备260通过网关服务器225远程连接至企业网络209。网关服务器225(以及网关服务器207和240)可包括允许诸如客户机260的远程客户机通过诸如因特网的公共网络206连接至企业网络209的服务器。在各实施例中,网关服务器225包括DIRECTACCESS服务器。客户机设备260可例如使用IPv6协议安全地连接到网关服务器225。在相互认证和NAP检查完成之后,在客户机设备260和网关服务器225之间建立IPsec通道。在各实施例中,客户机设备260一开始连接到在地理上最靠近客户机设备260的网关服务器。
例如,再次假定客户机设备260的用户是企业的总公司的成员,总公司由图2中的站点201表示。当用户在总公司时,用户通常本地连接至站点201。对此示例,假定站点201是在美国纽约州的纽约市中。然而,该用户正带着客户机设备260在欧洲旅行。站点202在英国伦敦,而客户机设备260当前正同用户一起在德国柏林的宾馆中。当用户登录到客户机设备260上,客户机设备260通过最近的网关服务器(在此示例中为站点202中的网关服务器225)连接至企业网络209。
在连接至网关服务器225之后,客户机设备260从网关服务器225接收网关服务器225的站点标识符。在各实施例中,客户机设备260可在连接至网关服务器225之前接收网关服务器225的站点标识符。例如,可预先向客户机设备260提供企业网络209中的所有网关服务器220、225和240的站点标识符。站点标识符可例如包括网关服务器225的IP地址(带有或不带有子网掩码),其由企业网络209分配。在其它实施例中,站点标识符可包括站点202的经解析的站点名,诸如“伦敦”。
在各实施例中,运行在客户机设备260上的网络访问客户端程序265在协商至企业网络209的连接的消息交换期间接收站点标识符。如上所讨论的,在其它实施例中,网关225的站点标识符对客户机设备260已知,且网络访问客户端程序265从客户机设备260上的本地存储或从另一可访问的存储位置获取站点标识符。一旦从网关225获取了站点标识符,网络访问客户端程序265将该站点标识符写入客户机设备参数270中。在各实施例中,对客户机设备参数270的改变引起向运行在客户机设备260上的对象转介客户端程序275发送通知。对象转介客户端程序275从客户机设备参数270中读出站点标识符,并在对企业网络209内的对象转介的将来请求中使用该站点标识符。实际上,客户机设备260从其所连接的网关服务器225采用站点202。
客户机设备260接下来试图访问目标文件,其副本存在于存储服务器235和207两者上。继续以上示例,客户机设备260的对象转介客户端程序275向域名系统(DNS)服务器(未示出)发送对适用于目标文件的名字空间的目录服务器的列表的请求。在此示例中,对象转介程序275接收目录服务器228的地址。对象转介客户端程序275向目录服务器228发送对于至目录转介服务器的最小成本访问的转介请求。转介请求包括对所获取的网关服务器225的站点标识符的显式声明。目录服务器228可基于对这样的对象转介服务器的最小成本访问返回对象转介服务器的经排序的列表。在此示例中,目录服务器228返回至对象转介服务器的转介的经排序的列表,包括至站点202处的对象转介服务器227的转介。在各实施例中,诸如目录服务器228的目录服务器担当对象转介服务器以提供至对象的转介,诸如对象转介服务器227。
对象转介客户端程序275然后向对象转介服务器227请求对特定文件的转介。转介请求包括从网关服务器225接收的站点标识符。对象转介服务器227生成至所请求的目标文件的一个或多个转介的列表。在此示例中,目标文件包括存储服务器207和存储服务器235两者上的副本。因为客户机设备260在转介请求中提供了站点标识符,对象转介服务器从站点标识符标识的站点(在此示例中为站点202)确定至目标文件的最小成本转介。从而,因为目标文件在站点202内的存储服务器235上可用,则对象转介服务器227可确定至目标文件的最小成本访问是经由存储在存储服务器235上的副本的。从而,对象转介服务器227在向客户机设备260发回的转介列表中首先安排至存储服务器235上的副本的转介。对象转介服务器227在各实施例中还可返回至存储服务器207上的目标文件副本的转介,以防存储服务器235不可用或不能工作。在此示例中,至存储服务器207上的目标文件副本的转介可排在至存储服务器235上的副本的转介之后。如所讨论地,在各实施例中,对象转介服务器227提供给客户机设备260的转介可包括至目标文件的各个副本的文件系统路径。
在各实施例中,对象转介服务器227可基于各种因素作出最小成本访问的判断。例如,最小成本访问的判断可基于转介请求中提供的站点与包含目标文件副本的最近存储服务器之间的地理距离来作出。在其它实施例中,最小成本访问的判断可基于客户机设备260访问目标文件副本需要经过的通信链路的成本。例如,在各实施例中,客户机设备260可从诸如网关服务器225的网关服务器断开连接,并重新连接至诸如网关服务器220的一不同网关服务器,以便访问存储在站点201处的存储服务器207上的副本。
对采用使用WINDOWS操作系统和DFS转介的基于域的名字空间的实施例,客户机(诸如客户机260)向域控制器(DC,诸如目录服务器228)发出DFS转介请求,以发现域的存在以及DFS名字空间的存在。客户机向DC发出转介请求,以便发现主存特定DFS名字空间的DFS根目标服务器(诸如对象转介服务器227)。客户机还可向DFS根目标服务器发出转介请求,以发现主存DFS名字空间的其它DFS根目标服务器(诸如对象转介服务器215)。客户机向DFS根目标服务器发出转介请求,以发现DFS链接目标的位置,诸如文件服务器(诸如存储服务器207、235和250)上的文件。在DFS路径的分量被解析成特定目标之后,客户机然后使用对于文件服务器合适的远程文件系统协议向该服务器直接发出文件系统请求。
在图1和2中描述的各实施例中,用于转介请求的底层传输协议可包括应用层网络协议。例如,在使用DFS转介的各实施例中,服务器消息块(SMB)协议或服务器消息块版本2(SMB2)协议可用作传输层。DFS转介允许SMB和SMB2文件系统客户端将来自跨许多服务器和地理位置分布的名字空间的名字解析成特定文件服务器上的本地名字。在名字被解析之后,客户机可通过使用诸如SMB协议、SMB版本2.0协议和NFS协议的文件系统协议直接访问所标识的服务器上的文件。
图3示出了用于获取位于分布式文件系统(诸如参考图1的系统)上的文件的最小成本访问的方法300。应理解,本文描述任何方法的具体步骤和方法不是排他的,并且本领域技术人员可以理解,本文描述的各步骤的具体次序不旨在限制该方法,例如,各步骤可以按不同的次序执行,可以执行附加步骤,并且在不背离本发明的精神的情况下可以排除所公开的步骤。
方法300通过将诸如客户机设备160的远程客户机连接310至诸如网关服务器125的第一网关服务器来开始。在各实施例中,这是使用诸如网络访问客户端程序165的、安装在客户机设备上的网络访问客户端程序来实现的。方法300继续至步骤320,在那里获取第一站点标识符。在各个实施例中,客户机设备可在连接至网关服务器之后接收网关服务器的站点标识符。在其它实施例中,网关服务器的站点标识符可在连接至网关服务器之前在客户机设备处接收并本地存储,且可通过从本地存储或另一可访问的存储位置检索站点标识符来获取。例如,可预先向客户机设备提供企业网络中的所有网关服务器的站点标识符。在各实施例中,所接收的站点标识符可包括网关服务器的IP地址(带有或不带有子网掩码)。在其它实施例中,站点标识符可包括完全解析的站点名。
方法300继续至步骤330,在那里在客户机设备的客户机参数中存储第一站点标识符。例如,在其中客户机正使用MicrosoftWINDOWS操作系统的实施例中,步骤330可包括设置客户机设备的注册表项。例如,站点标识符可被保存在由Netlogon维护的SiteName(站点名)注册表项中。该注册表项的细节如下给出:
项名:SiteName
路径:HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
该注册表项可确定其中客户机设备断言其所处的站点。网络访问客户端程序一旦从网关服务器接收站点名就填充由Netlogon维护的SiteName注册表项。此外,在各实施例中,设置SiteName注册表项可引起向客户机设备上的对象转介客户端程序警告已经建立了远程网络连接。在其它实施例中,对象转介客户端程序可向网络列表管理器基础架构注册,并检查站点连通性标志以确定该客户机设备远程连接至网络。
当客户机设备从网关断开连接时,可从客户机参数中删除站点标识符和/或可复位连通性标志以向对象转介客户端程序告知该客户机设备不再属于网关服务器的站点。此外,如果客户机设备从网关服务器断开连接并重新连接至另一网关服务器,可将新的网关服务器的站点标识符插入到客户机参数中,以向对象转介客户端程序警告客户机设备远程连接的新站点。或者,对象转介客户端程序可向客户机设备上的应用编程接口(API)注册,以便每当存储在客户机参数中的站点标识符改变或当客户机设备进行的远程连通性的状态改变时接收通知。例如,以下情况的任一种可能引起客户机设备的站点的改变,这将反映在客户机参数中存储的站点名中:(a)客户机设备在连接至站点的局域网(LAN)之后连接到网关服务器(例如,雇员出国旅游,她使其膝上型计算机在连接到站点的LAN时休眠,并随后恢复该计算机并连接至另一站点中的网关服务器);(b)客户机设备在从网关服务器连接一段时间之后重新加入企业网络(例如,从宾馆房间远程工作的出国旅游的雇员使其膝上型计算机休眠,然后在直接连接至站点的LAN时恢复膝上型计算机);或(c)客户机设备连接至另一网关服务器和站点(例如,雇员在不同站点附近旅游(例如,在雇员从家连接到本地网关服务器时使膝上型计算机休眠,之后使膝上型计算机恢复并连接至不同站点中的另一网关服务器)。
在步骤340,检索站点标识符。在各实施例中,这可包括对象转介客户端程序向存储在客户机设备上的客户机参数检索站点标识符。例如,为作出站点知晓的转介请求,对象转介客户端程序可调用目录服务应用编程接口(API),该接口返回客户机设备连接的当前站点。在各实施例中,这样的API通常可被配置成动态确定站点;然而,当站点标识符在客户机参数中被显式设置(诸如在步骤330中)时,显式设置的客户机参数的值可覆盖动态确定的站点。
在步骤350,将站点知晓转介请求发送给对象转介服务器。转介请求包括在步骤340处检索的站点标识符。在各实施例中,转介请求包括设法对其进行访问的目标对象或文件。作为非排他示例,以下参考DFS转介描述了一个潜在的转介请求。
DFS转介协议提供定义的消息REQ_GET_DFS_REFERRAL以作出转介请求。当SMB和SMB2分别用作传输协议时,该REQ_GET_DFS_REFERRAL消息是通过SMB_COM_TRANSACTION2消息和FSCTL_DFS_GET_REFERRALSIOCTL传播的有效载荷。然而,REQ_GET_DFS_REFERRAL消息不提供客户机计算机将其站点名发送给对象转介服务器以便接收站点知晓转介的方式。
因此,可使用被称为REQ_GET_DFS_REFERRAL_EX的新类型的转介请求消息以允许远程连接的客户机设备(诸如客户机设备160)除了它正在请求转介的目标文件路径以外还将从网关服务器获取的站点名发送给对象转介服务器。该消息可以是如下所讨论的将被添加到SMB2的新FSCTL_DFS_GET_REFERRALS_EXIOCTL上的有效载荷。在此示例中被称为REQ_GET_DFS_REFERRAL_EX的站点知晓转介请求的消息和分组格式及其响应规定如下。例如,站点知晓转介请求的可能的消息格式包括:
在上述示例消息格式中,MaxReferralLevel(最大转介水平)包括16位整数,它指示客户机设备所理解的最高DFS转介版本。RequestFlags(请求标志)包括表示一系列标志的16位字段。该标志中的每一位被置位,以指示其后的请求缓冲区中的字段的存在。在此示例中,仅定义并使用了SiteName位。如果分组包含请求转介的客户机设备的站点标识符,则‘SiteName’位被置为1。RequestDataLength(请求数据长度)包括指定伴随转介请求的数据的长度的32位整数。伴随转介请求的数据(RequestData)的格式根据RequestFlags字段中置位的位来解释。RequestData包括长度为RequestDataLength的缓冲区,并包含对正向DFS名字空间服务器请求的转介专用的信息。
在非排他实施例中,REQ_GET_DFS_REFERRAL_EX转介请求的RequestData部分可包括:
在此示例中,RequestFileNameLength(请求文件名长度)包括指定转介请求中的RequestFileName(请求文件名)串的长度的16位整数值。RequestFileName可包括指定要解析的路径的空终止UNICODE串。字段的次序是实现特定的,且在各实施例中,格式可取决于客户机设备正在作出的转介请求的类型:
·域转介:路径可以是空串(仅包括空终止符)。客户机可对域转介请求使用DFS转介版本3或之后的版本。
·目录服务器转介:路径可以是“\<domain(域)>”或“<domain>”,其中<domain>是或可为NetBIOS或可为完全限定域名形式的域名。响应路径的格式可匹配请求路径的格式。例如,如果请求路径是NetBIOS形式的,则响应路径也可以是NetBIOS形式的。客户机可对域控制器转介请求使用DFS转介版本3或之后的版本。
·Sysvol转介:路径或者可以是“\<domain>\SYSVOL”或者是“\<domain>\NETLOGON”,其中<domain>是或可为NetBIOS或可为完全限定域名形式的域名。响应路径的格式可匹配请求路径的格式。例如,如果请求路径是NetBIOS形式的,则响应路径也可以是NetBIOS形式的。客户机可对sysvol转介请求使用DFS转介版本3或之后的版本。
·根转介:路径或者可以是“\<domain>\<dfsname>”或者是“\<server(服务器)>\<dfsname>”形式的,其中<domain>是主存DFS名字空间的域名,<dfsname>是DFS名字空间的名字,而<server>是DFS根目标主机名。可支持NetBIOS和完全限定域名。
·链接转介:路径或者可以是“\<domain>\<dfsname>\<linkpath>”或者是“\<server>\<dfsname>\<linkpath>”形式的,其中<domain>是主存DFS名字空间的域名,<dfsname>是DFS名字空间的名字,<server>是DFS根目标主机名,而<linkpath(链接路径)>是可具有DFS链接的路径。可支持NetBIOS和完全限定域名。
在此示例中,SiteNameLength(站点名长度)可包括指定转介请求中的SiteName串的长度的32位整数值。类似地,SiteName可包括指定站点标识符(诸如如上所讨论的,客户机设备与其连接的网关服务器的所获取的站点标识符)的空终止UNICODE串。如所讨论地,在各实施例中,网关服务器所属站点的站点名。在其它实施例中,站点标识符可包括客户机设备与其连接的网关服务器的IP地址,在这种情况中,如上所讨论的分组结构可被改变以除了站点名以外(或代替站点名)容纳网关服务器的IP地址。该串的长度由SiteNameLength字段的值确定。
为了适应本发明所构想的转介请求,可能需要修改底层传输协议。例如,就SMB2用作底层传输协议以支持上文讨论的示例REQ_GET_DFS_REFERRAL_EX转介请求而言,SMB2可能需要被如下修改。在此示例中,定义了被称为FSCTL_DFS_GET_REFERRALS_EX的新的SMBIOCTL。对象转介客户端程序填写REQ_GET_DFS_REFERRAL_EX消息结构,并向SMB2发出FSCTL_DFS_GET_REFERRALS_EXIOCTL。IOCTL的有效载荷以及客户机计算机(正在请求转介的DFS名字空间客户机)的IP地址由SMB递送给对象转介服务器(驱动器)。
回过来参考图3,在步骤360,接收经排序的对象转介。在各实施例中,在远程客户机设备上操作的对象转介客户端程序可响应于步骤350作出的转介请求从对象转介服务器接收经排序的转介。在各实施例中,对象转介可在诸如RESP_GET_DFS_REFERRAL消息的DFS转介消息中接收。
方法300继续至步骤370,在那里使用在步骤360接收的对象转介中的一个或多个来访问目标对象或文件。例如,当所接收的对象转介包括至共享存储服务器上的一个或多个文件副本的路径时,客户机设备可发出使用所接收的对象转介来检索这样的副本的请求。例如,客户机设备可试图使用排在第一的对象转介;且如果失败,则使用下一排序的对象转介,直到达成对目标对象或文件的访问。在各实施例中,客户机设备本身可对于对象转介进行排序或重新定序,以决定要首先使用哪个对象转介来试图访问目标对象或文件。
图4示出了在诸如图2的示例系统的具有多个目录服务器和对象转介服务器的系统中获取至文件的最小成本访问的方法400的实施例。在步骤410,对第一网关服务器进行连接,诸如由客户机设备260对网关服务器225的连接。方法400继续至步骤420,在那里获取第一站点标识符。如所讨论地,网关服务器的站点标识符可由客户机设备作为步骤410中的连接过程的一部分来接收。在其它实施例中,可通过从本地存储或另一可访问的存储位置检索站点标识符来获取网关服务器的站点标识符。在各实施例中,站点标识符包括网关服务器的IP地址或网关服务器所属的站点的站点名。一旦获取了网关服务器的站点标识符(420),方法400继续至步骤430,在那里将站点标识符存储在客户机设备的客户机参数中。如所讨论地,在客户机设备上操作的网络访问客户端程序可将站点标识符存储在客户机设备上的客户机参数设置(诸如注册表项)中。
在步骤440,检索站点标识符。如所讨论地,在客户机设备上操作的对象转介客户端程序可例如在接收客户机参数已改变的通知之后检索站点标识符。在步骤450,发现一个或多个目录服务器。在各实施例中,客户机设备向域名系统(DNS)服务器发送对适用于特定目标文件的名字空间的目录服务器的列表的请求。一旦接收了目录服务器的列表,该过程即前进至步骤460。
在步骤460,向步骤450中标识的目录服务器的至少一个发送转介请求。转介请求可包括在步骤440处检索的站点标识符。在这种情况下,转介请求是对适于提供至目标文件的转介的对象转介服务器的转介的请求。在步骤470,接收至对象转介服务器的经排序的转介的列表。
在步骤480,例如由客户机设备通过网关服务器向在步骤470接收的转介中标识的对象转介服务器的至少一个发送转介请求。在各实施例中,客户机设备试图向第一对象转介服务器发送转介请求,在步骤470接收的转介的经排序列表中列出了对第一对象转介服务器的转介。如果该请求失败,则客户机设备试图使用列表上的下一转介,直到转介请求成功。
在步骤490,接收对象转介的列表。在各实施例中,根据访问的最小成本来对转介列表排序。在其它实施例中,客户机设备可基于随转介列表接收或由客户机以其它方式获取的信息来对转介排序。在步骤495,使用在步骤490接收的转介列表访问目标文件或对象。例如,客户机设备可试图使用排在第一的对象转介;且如果失败,则使用下一排序的对象转介,直到达成对目标对象或文件的访问。
图5示出了其中对象转介服务器向客户机设备提供经排序的对象转介的方法500的实施例。在各实施例中,方法500可由对象转介服务器(诸如,对象转介服务器115、215、227和247或目录服务器122、222、228和248)执行。在步骤500,接收转介请求。在各实施例中,转介请求包括标识进行请求的客户机设备的站点的站点标识符和目标对象两者。在各实施例中,目标对象可以是对象转介服务器或存储在存储服务器上的文件等。
在步骤520,确定满足转介准则的候选对象。例如,如果对其请求转介的对象包括存储在分布式文件系统中的文件,该文件的副本是候选对象,且可确定该文件的副本的位置。在步骤530,确定至每一候选对象的访问的成本。例如,在各实施例中,基于转介请求中包括的站点标识符中标识的站点与存储每一候选对象的存储服务器之间的地理距离来确定访问的成本。在其它实施例中,作出更高级的成本判断。
例如,在各实施例中,步骤510中接收的转介请求可指示(a)客户机设备是否是经由网关服务器远程连接的以及(b)客户机设备是否愿意从其当前网关服务器断开连接并重新连接至另一网关服务器。在此实施例中,如果客户机愿意重新连接至不同的网关服务器,则访问每一候选对象的成本计算可考虑从与转介请求中标识的站点不同的站点进行访问的成本。
例如,参考图1的示例系统,假定目标对象是其副本存在于存储服务器107和150中但不存在于存储服务器135中的文件。还假定网关服务器120不能工作。当对象转介服务器115从客户机设备160接收转介请求时,转介请求包括将客户机标识为属于站点102的站点标识符(因为客户机设备接收并然后使用网关125提供的站点标识符)。对此示例,还假定转介请求向对象转介服务器115指示客户机设备160被远程连接且愿意通过不同的网关服务器来重新连接。
对象转介服务器115标识两个候选对象,即存在于存储服务器107和150上的目标文件的副本。如果对象转介服务器115基于客户机160的站点是站点102来计算访问每一候选对象的成本,则它将如下排序至候选对象的转介:首先是存储服务器107上的副本,其次是存储服务器150上的副本。这是因为从站点102对存储服务器107的访问仅需要一个(相对昂贵的)WAN链接105,而对存储服务器150的访问需要穿过两个WAN链接105和104。然而,在各实施例中,对象转介服务器115还可考虑客户机设备160指示了重新连接至一不同的网关服务器的意愿。网关服务器120不可工作,因此访问存储服务器107上的副本的成本将仍涉及穿过WAN链接105。然而,访问存储服务器150上的副本可通过使客户机设备160从网关服务器125断开连接并重新连接到网关服务器140来完成。从客户机设备160到网关服务器140的公共网络连接的成本实际上可能显著小于WAN链接105的成本。从而,即使存储服务器150比存储服务器107在地理上离站点102更远,对象转介服务器115可计算访问存储服务器150上的副本的“成本”比访问存储服务器107上的副本的“成本”低。
在各实施例中,对候选对象的成本的计算可采用许多形式,并随关于WAN链接(或其它专用租线)对比使用公共网络或其它通信线路来将远程客户机连接至不同的网关服务器的相对成本的信息一起告知。此外,在此实施例中,对象转介服务器能访问可用网关服务器以及它们所处站点的列表。
再次参考图5,在步骤540对所请求的至候选对象的转介排序。在各实施例中,按照访问成本的升序对转介排序。可采用其它排序协议。在步骤550,将经排序的转介例如发送至进行请求的客户机设备。在各实施例中,可基于对于候选对象的简单的成本计算(例如,从转介请求中标识的站点到候选对象的地理距离)来对转介排序。在其它实施例中,可基于包括客户机设备愿意重新连接到不同的网关服务器的假设的计算来对转介排序。在后一情况中,经排序的转介还可包括可以或应该对其进行连接以实现至目标对象的最小成本访问的一个或多个备选网关服务器的指令或地址。例如,每一经排序的转介可标识客户机设备应对其连接的网关服务器和至所请求的对象的路径两者。
图6描述了其中为给定的对象转介集合确定最小成本访问的方法600。例如,客户机设备可接收用于目标对象的转介列表,且本身可计算(或重新计算)使用这些转介中的每一个的访问成本。在各实施例中,在步骤610,接收用于目标对象的转介的列表。该列表可例如响应于对至对象转介服务器的转介的请求来接收。在各实施例中,该列表可能已经根据对象转介服务器进行的成本计算来排序或未被排序。例如,如果转介请求包括客户机设备的站点的显式声明(基于从客户机设备与之连接的网关服务器接收的站点标识符),对象转介服务器可基于从所标识的站点访问候选对象的成本来对转介排序。在各实施例中,对象转介服务器可能无法为至候选对象的转介作出更为复杂的成本计算。在各实施例中,客户机设备可基于其自己的成本计算来对转介进行排序或重新排序。
在步骤620,为至目标对象的每一转介计算访问成本。在各实施例中,对客户机设备进行编程以便自己作出这一计算。在其它实施例中,客户机设备可请求另一设备或服务来执行这样的计算。如关于图5所讨论地,成本计算可包括客户机设备能够(且愿意)从其当前网关服务器断开连接并重新连接至另一站点处的不同网关服务器的可能性。因此,成本计算可包括从最近网关服务器至目标对象的访问该目标对象的成本。例如,如关于方法500中的步骤530所讨论的,成本计算可考虑对与被转介的目标对象处于同一站点的、地理上相距较远的网关服务器的公共网络连接(例如,因特网连接)可能比对由至容纳目标对象的存储服务器的WAN链接或其它专用租用通信线连接的、地理上靠近的网关服务器的连接的成本低。
在各实施例中,对成本的计算由客户机设备接收的关于以下内容的信息来促进:(a)可用网关服务器,(b)这些网关服务器所属的站点(和这些站点的位置),在企业网络中使用的任何专用租用通信线对比用于将客户机设备连接至网关服务器的公共网络的相对成本,以及其中存储被转介的目标对象的站点。这些信息中的一些或全部可由对象转介服务器连同对象转介一起提供给客户机设备,或可由一个或多个不同的网络设备提供。
在步骤630,根据步骤620的成本计算对转介列表进行排序(或重新排序)。在步骤640,对于要使用的转介是否需要客户机设备从其当前网关服务器断开连接并重新连接至不同的服务器作出判断。如果否,则流程前进到步骤660。如果是,则在步骤650,客户机设备从其当前网关服务器断开连接并重新连接到要使用的对象转介所需的网关服务器。在步骤660,如前所讨论地,使用对象转介来访问目标对象。
图7示出能被用来实现此处所描述的各实施例的通用计算设备700(也被称为设备、计算机或计算机系统)。计算设备700仅是计算环境的一个示例,而非旨在对计算机和网络体系结构的使用范围或功能提出任何限制。计算设备700也不应被解释成对于在示例计算设备700中所示出的任一组件或其组合有任何依赖或要求。在各实施例中,计算设备700可例如用作以上参考图1所述的客户机设备160和260、对象转介服务器115、215、227和247、目录服务器122、222、228和248、存储服务器107、207、135、235、150和250、以及网关服务器120、220、125、225、140和240。
在其最基本配置中,计算设备700通常包括至少一个处理单元702和存储器704。取决于计算设备的确切配置和类型,存储器704可以是易失性(如RAM)、非易失性(如ROM、闪存等)或是两者的某种组合。该最基本配置在图7中由虚线706来示出。系统存储器704存储在计算设备700上执行的应用程序。除应用之外,如参考图1-6所述,存储器704还可以存储在由计算设备700执行的操作中所使用的信息,如转介请求710。
另外,计算设备700还可具有附加的特征/功能。例如,计算设备700还可包含附加存储708(可移动和/或不可移动),其中包括但不限于磁盘、光盘或磁带。这些另外的存储在图7中由存储708示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器704和存储708都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并且可由计算设备700访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备700的一部分。本领域技术人员将理解,存储708可以存储各种信息。存储708可以存储转介列表730及其它类型的信息。
计算设备700还可包含允许该系统与其它设备进行通信的通信连接712。通信连接712是通信介质的一个示例。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。如此处所使用的术语“计算机可读介质”包括存储介质和通信介质两者。
计算设备700也可包括输入设备714,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。还可包括输出设备716,诸如显示器、扬声器、打印机等。
显然,本文描述的系统和方法很好地适用于达到上述目的和优点以及其中固有的优点。本领域技术人员将认识到本说明书内的方法和系统可以用多种方式来实现,并且因此不受上述例示的实施方式和示例的限制。换言之,由作为硬件和软件的各种组合的单个或多个组件所执行的功能元素和单独功能可以在客户机或服务器级分布在各软件应用程序之间。就此,本文描述的不同实施方式的任何数量的特征可被组合成单个实施方式,并且具有比本文描述的全部特征更少或更多特征的替换实施方式是可能的。
尽管出于本发明的目的描述了各实施方式,但可以做出落入本发明的范围内的各种改变和修改。可以作出本领域技术人员容易想到的并且涵盖在所附权利要求书限定的本发明的精神内的多个其他改变。