CN107667513B - 用于远程网络拓扑发现的系统和方法 - Google Patents

用于远程网络拓扑发现的系统和方法 Download PDF

Info

Publication number
CN107667513B
CN107667513B CN201680030290.1A CN201680030290A CN107667513B CN 107667513 B CN107667513 B CN 107667513B CN 201680030290 A CN201680030290 A CN 201680030290A CN 107667513 B CN107667513 B CN 107667513B
Authority
CN
China
Prior art keywords
node
network
server
file
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680030290.1A
Other languages
English (en)
Other versions
CN107667513A (zh
Inventor
尼古拉斯·马克·瓦西奇·库珀
马克斯·沃德-格拉哈姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN107667513A publication Critical patent/CN107667513A/zh
Application granted granted Critical
Publication of CN107667513B publication Critical patent/CN107667513B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1063Discovery through centralising entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Abstract

在本文中公开了获取与具有至少第一节点和第二节点的网络有关的数据的系统和方法。服务器向第一节点传输用于使第一节点向第二节点发送通信的第一请求。服务器在网络外部,以及第一请求包括第一节点的第一地址和第二节点的第二地址。服务器从第一节点接收至第二节点的通信是否成功的指示。服务器从第一节点接收用于访问存储在服务器上的文件的第二请求,确定所述文件被本地存储在第二节点处,以及当至第二节点的所述通信成功时,向第一节点传输用于从第二节点检索所述文件的指令。

Description

用于远程网络拓扑发现的系统和方法
有关申请的交叉引用
本申请要求于2015年9月4日提交的美国专利申请第14/845,577号的权益,该专利申请全部并入本文。
技术领域
总体上,本公开涉及一种远程网络的拓扑的发现。
背景技术
发现网络拓扑的现有系统通常已经是网络本身的部分,从而使得发现工具可以直接并且立即地访问与网络有关的信息。具体地,当网络中的节点尝试发现网络的拓扑时,该节点可以使用其与网络中的其他节点的直接本地连接来建立网络的模型。当发现工具通过直接、快速、可靠地访问网络来成为网络的部分时,该发现工具得益。相反,当网络对于正尝试发现该网络的拓扑的系统是远程的时,对网络的访问是受限的并且可能是缓慢的,因为发现工具不是网络的部分。
发明内容
在本文中公开了发现远程网络的拓扑的系统和方法。一个方面涉及一种用于获取与具有至少第一节点和第二节点的网络有关的数据的系统或方法。服务器向所述第一节点传输用于使所述第一节点向所述第二节点发送通信的第一请求。服务器在网络外,并且所述第一请求包括所述第一节点的第一地址和所述第二节点的第二地址。所述服务器从所述第一节点接收至所述第二节点的通信是否成功的指示。所述服务器可以从所述第一节点接收用于访问存储在所述服务器上的文件的第二请求,确定所述文件被本地存储在所述第二节点处,并且当至所述第二节点的所述通信成功时,向所述第一节点传输从所述第二节点检索所述文件的指令。
另一个方面涉及一种系统,该系统包括用于在网络外的服务器获取与具有至少第一节点和第二节点的网络有关的数据的装置。该系统包括:用于向所述第一节点传输用于使所述第一节点向所述第二节点发送通信的第一请求的装置,其中,所述第一请求包括所述第一节点的第一地址和所述第二节点的第二地址;以及用于从所述第一节点接收至第二节点的所述通信是否成功的指示的装置。
在一些实施方式中,系统进一步包括:从所述第一节点接收用于访问存储在所述服务器上的文件的第二请求的装置;用于确定文件被本地存储在第二节点处的装置;以及用于当至所述第二节点的所述通信成功时,向所述第一节点传输从所述第二节点检索所述文件的指令。
在一些实施方式中,系统进一步包括:用于识别所述第一节点进入和退出所述网络的时间模式的装置;以及用于将存储在服务器上的文件识别为先前被所述第一节点访问过的装置。系统可以进一步包括:用于确定所述第二节点具有比第一节点更大的存储容量的装置;用于向所述第二节点传输所述文件的副本的装置;以及用于响应于接收到来自第一节点的用于访问文件的第二请求,向所述第一节点传输指令以从所述第二节点检索所述文件的装置。用于确定所述第二节点具有比所述第一节点更大的存储容量的装置可以包括用于接收在所述第一节点和所述第二节点中的每个节点处的装置类型的指示的装置。
在一些实施方式中,系统进一步包括:用于当至所述第二节点的所述通信成功时,从第一节点接收所述第一节点和所述第二节点之间的链路延迟的装置;以及用于更新网络模型以反映所接收到的指示和所接收到的链路延迟的装置。
在一些实施方式中,所述网络是第一网络,并且所述第一请求包括第二节点的多个第二地址,其中,在所述多个第二地址中的每个第二地址描述了所述第二节点在包括所述第一网络的多个网络中的位置。系统可以进一步包括:用于从所述第一节点接收另一个指示的装置,如果存在曾用于与所述第二节点成功通信的第二地址,则所述另一个指示是多个第二地址中曾用于与第二节点成功通信的该第二地址。
在一些实施方式中,系统进一步包括:用于从第三节点接收消息的装置,所述消息指示所述第一节点将本应被发送至所述第二节点的所述通信发送至第三节点。用于传输所述第一请求的装置可以包括用于按照基于所述第一节点的装置类型的频率重复所述传输的装置。
附图说明
本公开的上述和其他的特征,包括其性质及其各种优点,将在考虑以下结合附图所做的详细说明时变得更加显而易见,在附图中:
图1是根据说明性实施例的包括服务器和远程网络结构的计算机化系统的框图。
图2是根据说明性实施例的服务器发现远程网络的拓扑的说明性方法的流程图。
图3是根据说明性实施例的服务器为第一节点提供对文件的访问的说明性方法的流程图。
图4是根据说明性实施例的服务器预计第一装置会请求访问文件并且在接收到该请求前将文件缓存在第二装置上的说明性方法的流程图。
图5是根据说明性实施例的服务器请求与远程网络的拓扑有关的信息的说明性方法的流程图。
图6是根据说明性实施例的执行本文描述的任意过程的计算装置的框图。
具体实施方式
为了提供对本公开的全面理解,现在将描述某些说明性实施例,包括用于确定远程网络的拓扑的系统。具体地,描述了下述方法:该方法允许使用远程网络的拓扑以高效地满足来自网络的节点的文件传输请求,和/或允许使用远程网络的拓扑以识别预测将会由在网络的特定节点上的用户使用的文件,并且在接收到来自用户的如此做的请求之前将这些文件缓存在节点处。然而,本领域普通技术人员将会理解,本文描述的系统和方法可以按照适合于正在解决的应用的方式被更改和修改,并且本文描述的系统和方法可以用于其他合适的应用中,并且这样的其他添加和修改不偏离本发明的范围。通常,本文描述的计算机化系统可以包括一个或多个引擎,该一个或多个引擎包括处理装置或多个处理装置,诸如计算机、微处理器、逻辑装置,或者利用硬件、固件、和软件配置以实行本文描述的计算机化方法中的一种或多种计算机化方法的其他装置或处理器。
服务器通常需要发现网络的拓扑,其中,该网络对该系统而言是远程的。在文件共享系统中,对远程网络的拓扑的理解特别有用。例如,描述远程网络的拓扑的数据可以用于按照如下方式来处理或者先占来自远程网络内的节点的文件传输请求:以及时高效的方式向节点提供所需的文件。在示例中,在远程网络的第一节点处的用户可以请求访问存储在远程网络外的文件——例如存储在服务器上的文件。如果服务器具有描述远程网络的拓扑的数据(例如,以网络模型的形式),并且还具有指示远程网络的至少一个其他节点具有缓存在本地的所请求文件的版本的数据,则服务器可以指示第一节点向具有缓存的文件的另一节点请求文件。按照这种方式,服务器和第一节点之间的远程连接不用于传输文件,而是可以通过远程网络内的可靠、本地、快速的连接来传输文件。这可以减少文件传输失败的可能性和由此产生的重传需要。另外,提出请求的节点可以更快速地接收所请求的文件。
在示例中,两个装置可以被连接到相同的本地网络,该本地网络远离基于云的文件共享系统。如果两个装置都与相同的组织、相同的用户、或者存储在基于云的文件共享系统中的相同的文件集合相关联,则文件共享系统中的服务器可以利用这两个装置与相同的网络连接的信息来指令任一装置通过本地网络与另一装置通信。
图1描述了可以用于实施本文的系统和方法的服务器和远程网络结构的示例。图1是允许远程网络101的拓扑被服务器110发现的计算机化系统100的框图。服务器110包括处理器114和数据库116。远程网络101远离服务器110并且包括五个节点A、B、C、D和E。服务器110可以被配置为与这五个节点中的一个或多个通信,但是不能够与远程网络101中的所有节点直接通信。服务器110可以被包括在基于web的存储系统(未示出)中,该基于web的存储系统可以是允许用户存储、检索、和修改数据的文件托管系统。该数据可以被称为用户的web数据,存储在用户数据的数据库中。服务器110可以执行与维护用户数据的数据库有关的功能,诸如为数据分配内存、接收将要存储在数据库中的新数据、删除数据库中的数据、提供数据库中有多少可用存储空间的指示、或者与数据库维护有关的任何其他合适的功能。基于web的存储系统可以存储在单个服务器系统上或者存储在分布式系统中,并且可以使用云存储来存储用户数据。
仅出于说明之目的,在图1的远程网络101中示出了五个节点。通常,本领域的普通技术人员将会理解,远程网络101可以包括任何数量的节点,并且在不脱离本公开的范围的情况下,这些节点可以配置成任何合适的拓扑。在示例中,远程网络101可以在工作场所中,其中远程网络101中的每个节点都是与工作场所内的共享网络连接的装置(例如,诸如办公室计算机)。在节点处的装置的用户可以与彼此共享某些文件集合。这些文件可以存储在包括服务器110的云存储系统中。然而,有时不需要使用服务器110和远程网络101之间的连接来传输这些文件。在这种情况下,服务器110可以使用其对远程网络101的拓扑的理解和其对远程网络101中的任一节点是否本地缓存有所需的文件的理解来指示远程网络101中的节点从具有缓存的文件的节点检索所需的文件。虽然上述示例涉及工作场所中的远程网络101,但是本领域的普通技术人员将会理解,本发明适用于多个装置可以彼此通信并且可以请求访问相同的文件集合的任何网络,诸如,在学校、企业、或者家中的网络。而且,在图1中仅示出了一个远程网络101,但是任何数量的远程网络都可以与服务器110远程连接。
远程网络101中的每个节点都可以包括一个或多个计算机系统、处理器、诸如手机或者平板计算机的移动装置、或者能够通过网络与另一个装置通信的任何其他合适的装置。如本文所使用的,术语“处理器”指的是一个或多个计算机、微处理器、逻辑装置、服务器、或者利用硬件、固件、和软件配置以实行本文描述的计算机化技术中的一种或多种计算机化技术的其他装置。处理器和处理装置还可以包括用于存储输入、输出、和当前正在被处理的数据的一个或多个存储器装置。在图1中仅示出了一个服务器110和一个远程网络101以避免使附图变得复杂化。通常,系统100能够支持多个服务器110和任何数量的远程网络101。服务器110可以存储在单个服务器系统上或者存储在使用云计算资源的分布式系统中。
在图1中,节点A与节点B、C和D直接连接,而且节点E与节点B和D直接连接。在远程网络101中没有示出其他直接连接。在远程网络101中所示的直接连接的布置和配置在本文中可以被称为网络拓扑,其包括对远程网络101中的各个节点之间的链路的描述。除了包括这些直接连接之外,网络拓扑可以进一步包括与链路延迟、链路状态、链路可靠性、或者其任何合适的组合有关的信息。服务器110可能需要接收远程网络101的拓扑的信息,从而使得,当远程网络101中的第一节点向服务器110请求文件时,服务器110能够提供通知指令。例如,服务器110可以理解所请求的文件被本地存储在远程网络101中的第二节点上,而且可以指令第一节点从第二节点检索文件,而不是从服务器110检索文件。因为与更长更远程的网络连接相比,本地网络连接倾向于更便宜、更可靠、并且更快速,所以本公开节省了网络成本,提高了网络效率。
服务器110远离网络101,意味着,服务器110不是网络101中的节点中的一个并且最初仅具有与网络101的拓扑有关的有限信息。服务器110发现远程网络101的拓扑的一种方式是向远程网络101中的节点中的一个(例如,节点A)传输消息,该消息具有用于节点A与远程网络101中的另一个节点(例如,节点B)联系的请求。这在图2中有详细描述。
图2是诸如服务器110的服务器发现诸如网络101的远程网络的拓扑的说明性方法200的流程图。发现网络的拓扑的一些方法可能需要用户(例如,诸如网络管理员)明确地提供与网络有关的信息。相反,方法200是发现远程网络101的拓扑的示例自动化方法。方法200包括向远程网络中的第一节点传输消息的步骤,其中,该消息包括第一节点的地址和远程网络中的第二节点的地址(步骤202);第一节点向第二节点传输消息的步骤(步骤204);以及在服务器处从第一节点接收与第一节点和第二节点之间的链路有关的信息的步骤(步骤206)。
在步骤202,服务器110将向远程网络101中的第一节点(例如,节点A)传输消息,其中,该消息包括第一节点的地址和远程网络101中的第二节点(例如,节点B)的地址。该地址可以是诸如IP地址的网络地址或者被指配到在网络中的节点处的装置的任何其他合适的标签。通常,地址可以包括本地地址、全局地址、或者这两者。本地地址可以表示由一个节点使用来与相同网络内的另一个节点通信的标签。全局地址可以表示由一个节点使用来与网络外的节点通信、或者与服务器110通信的标签。而且,地址可以包括多个本地地址,如果单个装置属于多个网络并且针对其所属网络具有不同的本地地址,则可能出现这种情况。
在一些实施方式中,服务器110存储指示在远程网络101中的节点处的装置的所有已知地址的数据,但是不具有指示哪个地址是远程网络101的本地地址的信息。当服务器110可能知道节点B使用哪个地址与服务器110通信时,服务器110可能不知道节点B使用哪个地址与远程网络101内的其他节点——诸如节点A——通信。在这种情况下,在步骤202传输的消息包括在节点A和/或节点B处的装置的每个已知地址,并且节点A被指令尝试使用B的地址中的每个地址。在另一个示例中,可以为节点B的每个已知地址发送一条消息。
在一些实施例中,在步骤202传输的消息包括节点A的特定字段的列表以将对服务器110的回复包括在内。在示例中,消息可以包括用于节点A返回与节点A和节点B之间的通信链路有关的特定信息的请求,特定信息诸如链路延迟、链路状态、链路可靠性、或者链路的任何其他特性。在其他实施例中,在步骤202传输的消息可以包括用于节点A利用节点A具有的与节点A和节点B之间的通信链路有关的每条信息回复服务器110的一般请求。
在一些实施例中,在步骤202传输的消息包括单个第二节点(例如,节点B),其中,节点A被特别地指令尝试与节点B联系。在其他实施例中,在步骤202传输的消息包括多个第二节点(例如,节点B、C、D和E),其中,节点A被指令尝试与这些第二节点中的每个节点联系。在这种情况下,在步骤202的消息本质上是被批量合并成单个请求的若干个单独的请求。通常,消息可以包括任何数量的第二节点,包括远程网络101中的所有节点(除了第一节点A之外)或者其任何子集。
在步骤204,第一节点A向第二节点B传输消息。该消息可以包括第一节点接收到请求时的第一时间戳、第一节点A向第二节点B传输该消息时的第二时间戳、或者第一时间戳和第二时间戳这两者。如果在步骤202传输的消息包括多个第二节点,则第一节点A可以同时(或者大致同时)向在消息中指示的每个第二节点传输该消息。
在一些实施例中,在步骤204传输的消息附带有附加随机数据。可以这样做使得节点B能够大致估量节点A和B之间的连接的速度,因为消息的大小可能会影响连接的速度。具体地,如果在步骤204传输的消息较小,则节点B可以测量到短延迟值,因为其不指示真实连接速度而有偏差。然而,如果消息附带有附加随机数据从而使得消息模拟将会通过该连接传输的典型分组的大小,则由节点B测量的延迟在描述正常情况下的连接速度时可能会更精确。
在步骤206,服务器110从第一节点A接收与第一节点A和第二节点B之间的链路有关的信息。具体地,在步骤204之后,第二节点B可以向第一节点A传输消息,该信息包括但不限于第二节点B接收到在步骤204传输的消息时的时间戳。在这种情况下,第一节点A向第二节点B传输该消息的时间和第二节点B接收到该消息的时间之间的延迟指示了在节点A和B之间的链路上的一个延迟。
在一些实施例中,节点A和B之间的链路是不对称的,使得在一个方向上的链路上的传输(例如,从节点A到节点B)可能比在相反方向上的链路上的传输(例如,从节点B到节点A)更快速。当一个装置具有比另一装置更强的天线时,这可能会发生。服务器110可以通过计算时间戳之间的差来将这些信息存储在数据库结构中。在这种情况下,通过用节点B接收到消息时的时间戳减去节点A传输消息时的时间戳来计算从节点A到节点B的第一延迟。一旦节点B接收到来自节点A的消息,就可以计算该第一延迟。同样,通过用节点A接收到回复时的时间戳减去节点B传输对节点A的消息的回复时的时间戳来计算从节点B到节点A的第二延迟,并且一旦节点A接收到回复,就可以计算该第二延迟。节点A可以将第一延迟和第二延迟传输到服务器110,或者节点B可以将与第一延迟有关的信息直接传输到服务器110。
在一些实施例中,在步骤206接收到的信息包括诸如链路可靠性、链路状态、或者与链路有关的任何其他合适的信息等数据。在一个示例中,在步骤206接收的信息可以包括在第一节点和第二节点之间是否有直接链路。在远程网络101中,在节点A和E之间不存在直接链路。然而,节点A可以通过节点B或D与节点E间接地通信。在一个示例中,如果节点A被请求与节点E联系,则节点A可以响应服务器110,节点A没有被配置为与节点E直接通信。在这种情况下,节点A可以为服务器110提供尝试与节点E联系失败的指示。在一些实施例中,在步骤202传输的消息包括即使在第一节点和第二节点之间不存在直接链路第一节点A是否也应该尝试与第二节点(例如,节点E)联系的指示,或者如果不存在直接链路则第一节点A是否应该仅利用失败消息回复的指示。
在一些实施例中,节点A可以尝试与节点E间接地联系并且为服务器110提供与节点A和E之间的连接有关的信息。通常,如果不存在直接链路(诸如在节点A和E之间不存在直接连接,因此在远程网络101中不存在直接连接),则当在朝着第二节点的路径上转发消息时,在第一节点和第二节点之间的路径上的每个节点可以在消息上附加一个或多个时间戳。按照这种方式,节点A可以经由节点B和D中的一个或这两者来与节点E间接地联系。具体地,节点A可以请求节点B或D将消息转发到节点E。如果节点B或D满足该请求,则在将消息附带上其接收到来自节点A的请求时和其正将消息转发到节点E时的时间戳之后,节点B或D可以将消息转发到节点E。然后,节点E可以通过利用节点E接收到消息时的时间戳进行回复来响应被转发的消息。通常,节点E可以将该消息转发到服务器110,或者可以沿着相同的路径或者不同的路径将消息转发回来。在示例中,如果节点A经由节点B将消息发送到节点E,则节点E可以经由节点D或者节点B响应节点A。即使在节点A和E之间没有直接链路也指令节点A尝试与节点E联系可以是高效的并且可以节省通过服务器110和远程网络101之间的连接的传输。然而,与如果没有到第二节点E的直接链路则第一节点A仅返回失败消息的方法相比,这种实施方式稍显复杂。
在步骤208,服务器110更新网络模型以反映在步骤206接收到的信息。基于从远程网络101中的一个或多个节点接收到的消息,该网络模型描述了推论的远程网络101的拓扑。例如,服务器110可以存储用于存储与远程网络101有关的信息的数据库结构。具体地,该数据库结构可以包括传输到远程网络101中的各个节点的先前请求的列表、和这些请求是否被成功转发到目的地节点。数据库结构可以进一步包括与这些请求相关联的时间戳,诸如,最初请求从服务器110被传输到第一节点时的时间戳、第一节点接收到最初请求时的时间戳、第一节点将消息传输到第二节点时的时间戳、第二节点接收到消息时的时间戳、第二节点将对消息的回复传输到第一节点时的时间戳、第一节点接收到回复时的时间戳、或者其任何合适的组合。
在一些实施例中,在第二节点处的单个装置与多个地址相关联,诸如用于与服务器110通信的一个远程地址和用于在一个或多个网络内通信的一个或多个本地地址。在这种情况下,服务器110可以指令第一节点使用第二节点的多个地址中的任一地址来与第二节点通信。而且,服务器110可以不直接访问第一节点用于与第二节点通信的本地地址,或者第二节点用于与第一节点通信的本地地址。具体地,服务器110可以仅具有与这些节点的远程地址相关的信息,因为该远程地址由服务器110用来与这些节点通信。在这种情况下,服务器110可以将第二节点的远程地址包括在步骤202传输的消息中,并且第一节点可以使用查找表(例如,其包括远程网络101中的各个节点的已知的远程地址和本地地址)来识别第二节点的本地地址。在其对服务器110的响应中,第一节点可以包括哪个地址曾用于与第二节点联系的指示,并且服务器110可以存储第二节点的适合的本地地址。
在一些实施例中,如果在步骤204传输的消息本应发送到第二节点(例如,节点B),但是却被发送到第三节点(例如,节点C),则该第三节点可以利用第三节点不应接收消息的指示来回复第一节点(例如,节点A)。具体地,每个节点可以与特定于每个节点的唯一标识符相关联。当节点C接收到具有与节点B相关联的唯一标识符的消息时,节点C可以利用其接收到本应发送到另一个节点的消息的指示来回复节点A。在另一个示例中,第三节点可以利用与其自身身份相关的信息和本文描述的任何相关的链路信息来回复第一节点。如果节点C位于与节点A和B相同的远程网络101内(如在图1中图示的),则节点C为节点A提供(并且因此被转发回服务器110)的该信息对于服务器110用来在步骤208更新网络模型是有用的。可替代地,如果节点C在不同的网络中或者在远程网络101外,则这种信息可能不太有用。在一些实施例中,节点C可以配置为在从第一节点A接收到消息时主动地将通信发送到服务器110,其中,该消息本应发送到第二节点B。
在一些实施例中,当节点(例如,节点A)通知服务器110在该节点和另一个节点(例如,节点B)之间的链路中断时,在步骤208更新网络模型。在一个示例中,节点A和B之间的链路可能曾在某一时间点工作过,并且服务器110可以将该链路存储在网络模型中。在从节点A接收到对存储在服务器110上的文件的请求时,服务器110可以使用网络模型来确定所请求的文件被本地缓存在节点B上。为了减少使用服务器110和远程网络101之间的远程连接,服务器110可以指示节点A从节点B检索所请求的文件。然后,当节点A尝试与节点B联系以检索文件时,节点A和B之间的链路可能中断。在这种情况下,节点A可以通知服务器110链路中断,并且服务器110可以更新网络模型以反映中断的链路。
在一些实施例中,服务器110定期地发送这些消息以更新其对网络拓扑的理解。这些消息被发送到远程网络101中的节点的频率可以基于在给定节点处的装置的类型和装置与远程网络101的连接可能会变化的预测频率。例如,可以预计的是,台式计算机通常将会始终与远程网络101连接,而可以预计诸如,机或者平板计算机的移动装置会具有与各个远程网络的随着时间变化的连接。在另一个示例中,这些更新的消息被发送到节点的频率可以基于网络容量。
通常,因为台式计算机通常与网络固定地连接,所以服务器110可以被配置为仅向台式计算机发送请求一次或者有限次数。服务器110向节点A传输的消息可以包括节点A利用与节点A相关联的装置的类型来回复的请求。如果节点A与台式计算机相关联,则服务器110可以仅向节点A传输特定的请求一次或者较少次数。可替代地,如果节点A与移动装置相关联,则服务器110可以定期地向节点A传输更新其网络连接的请求。按照这种方式,在每个节点处的装置的类型可能会影响服务器110请求更新装置的网络连接的频率。
在一些实施例中,节点可以被配置为当其网络连接发生变化时,主动地向服务器110传输,而不是服务器110将定期消息发送到远程网络101中的各个节点以更新其对网络拓扑的理解。在一个示例中,当装置与无线局域网或者蜂窝网络连接时,诸如智能手机的移动装置可以主动地通知服务器110,并且可以将装置地址的任何变化通知服务器110。
通常,服务器110可能位于远离远程网络101的位置,但是如上所述,服务器110可以是存储由远程网络101内的装置访问的文件的文件共享和托管系统的部分。按照这种方式,即使服务器110远离远程网络101,服务器110还是具有与远程网络101中的彼此连接的装置有关的、以及与远程网络101中的装置通常访问的文件有关的大量信息。在示例中,服务器110可以接收来自远程网络中(例如,在节点A和B处)的两个装置的、指示每个装置都与相同的诸如公司或者学校的特定组织相关联的信息。在接收到两个装置都与相同的组织相关联的信息时,服务器110可以请求装置尝试彼此通信。
上面在图2中的描述是有关获取与远程网络有关的信息以及形成远程网络的模型及其连接。在图3和4中的描述包括服务器110可以利用与远程网络相关的信息来提供高效的文件共享和文件托管服务的示例方式。
图3是服务器与远程网络中的节点(诸如,远程网络101中的节点A)交互的说明性方法300的流程图。方法300包括从网络中的第一节点接收用于访问存储在服务器上的文件的请求的步骤(步骤302)以及确定该文件是否被存储在网络中的第二节点处的步骤(判定块304)。如果该文件未存储在网络中的第二节点处,则服务器向第一节点提供文件(步骤306)。否则,确定是否存在存储文件的多个节点(判定块308)。如果不存在,则服务器指示第一节点从第二节点检索文件(步骤310)。否则,服务器基于网络的拓扑从存储文件的多个节点的集合中选择节点(步骤312)并且指令第一节点从被选择的节点检索文件(步骤314)。
在步骤302,服务器110接收来自远程网络101中的第一节点(例如,节点A)的用于访问存储在服务器110上的文件的请求。具体地,服务器110可以对应于使用云存储来存储用户文件的基于web的文件共享和存储系统。在节点A处的用户可以向服务器110用于访问存储在云存储中的用户文件中的一个文件的请求。
在判定块304,服务器110确定在步骤302所请求的文件是否已经被本地存储在与提出请求的节点相同的网络101中的另一个节点处。具体地,服务器110可以跟踪哪些文件被本地缓存在各个节点处的装置上。例如,在节点A处的用户先前已经访问过在节点B处的所请求的文件,并且在节点B处的装置可以在其存储器中缓存所请求的文件的本地版本。在这种情况下,服务器110可以具有指示节点B具有所请求的文件的本地版本的数据。然而,如果服务器110确定不存在远程网络101中的其他节点具有所请求的文件的本地版本,则方法300进入步骤306,在步骤306,服务器向第一节点A提供所请求的文件。
否则,如果服务器110确定至少一个其他节点缓存了所请求的文件的本地版本,则在判定块308,服务器110确定是否存在存储文件的多个节点。如果仅有单个节点已经缓存了所请求的文件的本地版本,则方法300进入步骤310,在步骤310,服务器指示第一节点(例如,节点A)从存储本地版本的唯一节点(例如,节点B)检索文件。
否则,当存在各自存储所请求的文件的本地版本的多个节点时,服务器110在步骤312基于远程网络101的拓扑来选择节点中的一个。例如,被选择的节点可以是具有到第一节点A的最短延迟的节点、具有到第一节点A的最可靠链路的节点、具有与远程网络101中的所有节点连接的最强连接性的节点、或者这些因素的任何合适的组合。在步骤312选择了适合的节点时,在步骤314,服务器指令第一节点从所选择的节点检索所请求的文件。
在没有本公开的系统和方法的情况下,服务器110可能对网络101的拓扑没有任何理解,因此不能够确定网络101中的任一节点是否能够与彼此通信。在没有这个信息的情况下,如果第一节点A请求访问文件,则第一节点A将需要从服务器110检索文件。如果第一节点A和服务器110之间的连接是昂贵、不可靠、或者缓慢的,则这可能不可取。例如,第一节点A和服务器110之间的连接可以是通过蜂窝网络,通过该蜂窝网络数据传输昂贵且耗时。然而,如果服务器110具有与网络101的拓扑有关的信息以及与哪个节点已经本地缓存了哪个文件的版本有关的信息,则服务器110可以指令提出请求的节点通过本地网络连接(例如,诸如无线局域网)来访问文件的本地缓存的版本,而不是使用第一节点和服务器110之间的连接。通常,这些本地网络连接可能比第一节点和服务器110之间的连接更便宜、更可靠、并且更快速。按照这种方式,本公开的系统和方法通过允许装置本地通信而不是使用远程网络连接而实现带宽和时间的节省。这在互联网连接缓慢并且本地网络明显更可靠且更快速的某些地理位置中尤其重要。
图4是服务器通过在远程网络中的节点(诸如,远程网络101中的节点A)处的装置来预计动作的说明性方法400的流程图。方法400包括:辨识第一装置(例如,在节点A处的诸如手机的移动装置)的网络连接性的模式的步骤(步骤402);识别被预测为将会通过第一装置而被访问的一个或多个文件的步骤(步骤404);以及将识别到的一个或多个文件缓存到第二装置(例如,在节点B处的计算机)上的步骤(步骤406)。当从第一装置接收到用于访问一个或多个缓存的文件中的一个文件的请求时(判定块408),服务器指令第一装置从第二装置检索所请求的文件(步骤410)。
在步骤402,服务器110辨识第一装置——诸如在远程网络101中的节点A处的手机——的网络连接性的模式。网络连接性的模式可以是时间模式,从而使得服务器110识别在一天或一周的某些时间期间,第一装置与远程网络101连接,而在其他时间期间不连接。在一个示例中,第一装置是诸如手机的移动装置,该移动装置可以在办公时间期间随着用户行进至用户的工作场所。当用户在工作时,手机可以与在用户的工作场所处的网络连接。另外,用户可以将台式计算机留在工作场所并且该台式计算机始终与工作场所的网络连接。手机可以是在节点A处的装置,并且在工作场所的台式计算机可以是在节点B处的装置。服务器110可以识别手机(例如,节点A)倾向于在工作场所并且在办公时间期间与工作场所的网络(例如,远程网络101)连接。
在步骤404,服务器110识别被预测为将会通过第一装置而被访问的一个或多个文件。如上所述,服务器110可以是将用户文件存储在服务器110上的web共享和文件托管系统的部分,并且在第一装置处进行用户认证时,为第一装置提供对用户文件的访问。在示例中,用户可以在晚上通过其家庭计算机或者另一个装置来访问存储在服务器110上的特定文件。基于用户已经访问了特定文件的信息、以及在步骤402辨识到的模式,服务器110可以预测用户会希望在次日在用户的工作场所中访问相同文件。
在步骤406,将在步骤404被识别到的一个或多个文件缓存在远程网络101中的第二节点(例如,节点B)处的第二装置上。继续上述的示例,第二节点B可以是在工作场所的用户的办公室计算机,并且一个或多个文件被缓存在用户的办公室计算机上。按照这种方式,服务器110被配置为当用户在其工作场所时预计用户可能希望访问哪些文件,并且将这些文件缓存在用户的办公室计算机上,从而使得用户不需要等文件从服务器110下载就能够立即访问这些文件。通常,办公室计算机倾向于具有大量可用的存储空间以及快速的网络访问。服务器110可以辨识在第二节点B处的装置是计算机,因此,相较于该装置是诸如手机或者平板计算机的具有更多存储限制的装置,可以将更大量的文件缓存在装置上。如果装置更小,诸如手机或者平板计算机,则由于装置的存储空间有限且连接速度更慢,所以服务器110会需要稍微选择可以或者应该将什么缓存在装置上。
在判定块408,服务器110接收来自第一装置的访问在步骤404识别的一个或多个文件中的一个的请求。继续上述的示例,用户可以请求通过其手机(例如,节点A)访问文件。然后,在步骤410,服务器110指令第一装置(例如,在节点A处的手机)从第二装置(例如,在节点B处的办公室计算机)检索所请求的文件。因为所请求的文件已经被本地缓存在用户的办公室计算机上并且用户的手机和办公室计算机与相同的远程网络101连接,所以,与从服务器110将文件传输到远程网络101相比,手机可以通过更快的连接从办公室计算机检索文件。
在一些实施例中,在图4中描述的步骤适用于多个用户访问通常存储在服务器110上的相同的一个或多个文件的环境。在没有远程网络101的拓扑的网络模型的情况下,需要将共享的文件的副本本地存储在每个用户的计算机上。然而,因为服务器110具有对远程网络101的拓扑的理解,所以服务器110可以选择远程网络101中的一个或多个特定节点以使共享的文件被本地缓存。然后服务器110可以指令远程网络101中的其他节点从具有缓存的文件的节点检索文件。按照这种方式,通过允许文件的单个副本被存储在网络中的一个节点上而不是要求每个节点存储文件的副本,本文描述的远程网络拓扑发现工具有效地节省了存储成本。虽然在图4中描述的示例是在工作场所设定内,但是本领域的普通技术人员将会理解,本文描述的系统和方法通常适用于与相同的网络连接的多个用户想要访问相同文件的任何设定。
图5是服务器与远程网络中的节点(诸如,远程网络101中的节点A)通信的说明性方法500的流程图。方法500包括:从服务器110向第一节点A传输用于使节点A向远程网络101中的第二节点B发送通信的请求的步骤,其中,服务器110在网络101外,并且该请求包括第一节点A的第一地址和第二节点B的第二地址(步骤502);以及在服务器处从第一节点A接收到第二节点B的通信是否成功的指示的步骤。
在步骤502,服务器110将第一节点A将通信发送到远程网络101中的第二节点B的请求传输到第一节点A,其中,服务器110在网络101外,并且该请求包括第一节点A的第一地址和第二节点B的第二地址。
在步骤504,服务器110从第一节点A接收到第二节点B的通信是否成功的指示。除了通信是否成功的指示之外,服务器110还可以接收与节点A和B之间的通信链路有关的进一步信息。例如,链路延迟可以包括链路是否不对称的信息,如上面在图2中描述的。具体地,在一个方向上的链路上的传输(例如,从节点A到节点B)可能比在相反方向上的链路上的传输(例如,从节点B到节点A)更快。可以通过时间戳之间的差来计算这些延迟。
在一些实施例中,服务器110是文件共享系统的部分。在示例中,在远程网络的第一节点A处的用户请求访问存储在服务器上的云存储中的文件。服务器110可以具有与远程网络101的拓扑有关的信息和指示远程网络中的至少一个其他节点(例如,节点B)具有本地缓存的所请求的文件的版本的数据。在这种情况下,服务器110可以指令第一节点A向具有缓存的文件的第二节点B请求文件。按照这种方式,服务器110和第一节点A之间的远程连接不用于传输文件,而是可以通过远程网络内的可靠、本地、快速的连接来将文件传输到第一节点A。
在一些实施例中,服务器110可以被配置为预计用户可以请求访问服务器110上的特定文件,并且可以使用远程网络101的拓扑先占(pre-emptively)地将文件缓存在远程网络101中的被选择的节点上。如在图4中详细描述的,服务器110可以识别在第一节点A处的第一装置的网络连接性的时间模式。该时间模式可以包括第一节点定期地——诸如在一天或一周的特定时间——进入和退出远程网络101的指示。服务器110还可以将存储在服务器上的文件——诸如在远离远程网络101时用户通过第一节点A访问的文件——识别为先前被第一节点A访问过。由于用户有可能会希望访问最近被访问过的文件,所以服务器110可以预计当第一节点A与远程网络101连接时,第一节点A会请求访问文件。响应于辨识到预计到该事件,服务器110可以先占地将文件缓存在远程网络101中的第二节点B处的另一个装置,并且指令第一节点A从第二节点B检索文件,而不是从服务器110检索文件。
在一些实施例中,服务器110确定第二节点具有比第一节点更大的存储容量。具体地,在发现远程网络101的拓扑的过程期间,服务器110可以接收指示在远程网络101中的每个节点处的装置类型的信息。作为计算机或者类似的用户装置的装置可以与比诸如手机或者平板计算机等移动装置的其他类型的装置更大的存储容量相关联。如上所述,当服务器110确定在第二节点B处的装置具有大的存储容量时,服务器110可以先占地将(预计会被第一节点A请求的)文件缓存在第二节点B处。
图6是执行本文描述的任意过程的计算装置,诸如图1的系统的任意组件的框图。这些系统的每个组件都可以被实施在一个或多个计算装置600上。在某些方面中,这些系统的多个组件可以被包括在一个计算装置600内。在某些实施方式中,组件和存储装置可以被实施在多个计算装置600上。
计算装置600包括至少一个通信接口单元、输入/输出控制器610、系统存储器、和一个或多个数据存储装置。系统存储器包括至少一个随机存取存储器(RAM 602)和至少一个只读存储器(ROM 1004)。所有这些元件都与中央处理单元(CPU 606)通信以促进计算装置600的操作。计算装置600可以按照许多不同的方式而被配置。例如,计算装置600可以是传统的独立计算机或者,可替代地,计算装置600的功能可以被分布在多个计算系统和架构上。在图6中,计算装置600经由网络或者本地网络与其他服务器或者系统链接。
计算装置600可以被配置成分布式架构,其中,数据库和处理器都被安置在分离的单元或者位置中。一些单元执行主要的处理功能并且最低限度地包含通用控制器或者处理器和系统存储器。在分布式架构实施方式中,可以经由通信接口单元608将这些单元中的每个单元附接到通信集线器或者端口(未示出),该通信集线器或者端口充当与其他服务器、客户端或者用户计算机和其他相关装置通信的主要通信链路。通信集线器或者端口自身可以具有最低限度的处理能力,主要充当通信路由器。各种各样的通信协议可以是系统的部分,包括但不限于:以太网、SAP、SASTM、ATP、BLUETOOTHTM、GSM和TCP/IP。
CPU 606包括,诸如一个或多个传统的微处理器的处理器和一个或多个诸如从CPU606分担工作负载的算术协处理器的补充协处理器。CPU 606与通信接口单元608和输入/输出控制器610通信,通过该通信接口单元608和输入/输出控制器610,CPU 606与诸如其他服务器、用户终端、或者多个装置的其他装置通信。通信接口单元608和输入/输出控制器610可以包括与例如其他处理器、服务器或者客户端终端同时通信的多个通信信道。
CPU 606还与数据存储装置通信。数据存储装置可以包括磁性存储器、光学存储器或者半导体存储器的适合的组合,并且可以包括例如RAM 602、ROM 604、闪存驱动、光盘,诸如压缩光盘或者硬盘或者驱动器。CPU 606和数据存储装置各自可以例如完全位于单个计算机或者其他计算装置内;或者通过诸如USB端口、串行端口电缆、同轴电缆、以太网电缆、电话线路、射频收发机或者其他类似的无线或有线的介质或者前述的组合的通信介质来彼此连接。例如,CPU 606可以经由通信接口单元608与数据存储装置连接。CPU 606可以被配置为执行一种或多种特定处理功能。
数据存储装置可以存储,例如,(i)计算装置600的操作系统612;(ii)一个或多个应用614(例如,计算程序代码或者计算程序产品),其适用于根据本文描述的系统和方法并且具体地根据针对CPU 606详细描述的过程来操纵CPU 606;或者(iii)适用于存储信息的(一个或多个)数据库616,其其可以用于存储程序所需的信息。
操作系统612和应用614可以例如以压缩的、未编译的和加密的格式被存储,并且可以包括计算程序代码。可以从不同于数据存储装置的计算机可读介质——诸如,从ROM604或者从RAM 602——将程序的指令读入到处理器的主储存器。当程序中的指令的序列的执行使CPU 606执行本文描述的过程步骤时,可以使用硬连接电路来代替用于实施本公开的过程的软件指令,或者结合用于实施本公开的过程的软件指令一起使用。因此,所描述的系统和方法不限于硬件和软件的任何特定组合。
可以提供合适的计算程序代码,以执行与本文描述的任一过程相关的一种或多种功能。程序还可以包括程序元件,诸如操作系统612、数据库管理系统和允许处理器经由输入/输出控制器610来与计算机外围装置(例如,视频显示器、键盘、计算机鼠标等)接口连接的“装置驱动程序”。
本文使用的术语“计算机可读介质”指的是提供或者参与提供指令给计算装置600的处理器(或者本文描述的装置的任何其他处理器)以执行指令的任何非瞬态介质。这样的介质可以采取许多形式,包括但不限于,非易失性介质或者易失性介质。非易失性介质包括例如光盘、磁盘、或者磁光盘、或者集成电路存储器,诸如闪速存储器。易失性介质包括通常构成主存储器的动态随机存取存储器(DRAM)。计算机可读介质的常用形式包括例如软盘、可折叠磁盘、硬盘、磁带、任何其他磁性介质、CD-ROM、DVD、任何其他光学介质、打孔卡、纸带、有孔状图案的任何其他物理介质、RAM、PROM、EPROM或者EEPROM(电可擦除可编程只读存储器)、FLASH-EEPROM、任何其他存储器芯片或者卡匣、或者计算机能够从中进行读取的任何其他非瞬态介质。
向CPU 606(或者本文描述的装置的任何其他处理器)携带一个或多个指令的一个或多个序列以用于执行可能会涉及到各种形式的计算机可读介质。例如,指令可能最初被承载在远程计算机(未示出)的磁盘上。远程计算机可以将指令加载到其动态存储器中并且通过以太网连接、电缆线路、甚或使用调制解调器的电话线路来发送指令。在计算装置600本地的通信装置(例如,服务器)可以在相应的通信线路上接收数据并且将数据放置在处理器的系统总线上。系统总线将数据携带到主储存器,处理器从该主储存器检索并且执行指令。可选地,主储存器接收到的指令可以在被处理器执行先前或者之后被存储在存储器中。另外,可以经由通信端口接收指令,作为电信号、电磁信号或者光学信号,这是无线通信或者携带各种类型的信息的数据流的示例性形式。
虽然本文已经示出并且描述了本公开的各种实施例,但是对本领域的技术人员来说明显的是,这些实施例仅仅是作为示例而提供。在不脱离本公开的情况下,本领域的技术人员现在能想到若干变型、改变、和替代。应该理解的是,在实践本公开时,可以采用本文描述的对本公开的实施例的各种替代。

Claims (20)

1.一种用于获取与具有多个节点的网络有关的数据的方法,所述方法包括:
由所述网络外并且作为文件共享系统的一部分的服务器维护关于所述网络的拓扑的信息和关于本地存储在所述多个节点中的个别节点上的多个文件的信息,关于所述网络的所述拓扑的所述信息识别所述网络内的所述多个节点之间的多个链路,并且包括所述多个链路中的链路的链路延迟、链路状态或链路可靠性中的至少一个;以及
由所述服务器更新关于所述网络的所述拓扑的所述信息,其中所述更新包括:
从所述多个节点中的第一节点接收对所述多个文件中的第一文件的第一请求;
基于关于存储在所述个别节点上的所述多个文件的信息确定所述第一文件是否已经在所述多个节点中的其它节点处被访问;
响应于确定所述第一文件已经在所述其它节点处被访问,基于以下中的至少一个从所述其它节点中选择第二节点:(i)所述第二节点具有到所述第一节点的最短延迟,(ii)所述第二节点具有到所述第一节点的最可靠链路,以及(iii)所述第二节点具有到所述网络中的所述多个节点的最强连接性;
从所述服务器向所述第一节点传输用于使所述第一节点向所述第二节点发送通信的第二请求,其中:
所述第二请求包括所述第一节点的第一地址和所述第二节点的第二地址并且指示所述第一节点从所述第二节点获取所述第一文件;
在所述服务器处从所述第一节点接收至所述第二节点的所述通信是否成功的指示;以及
由所述服务器基于所接收到的指示更新所述第一节点与所述第二节点之间的链路的链路延迟、链路状态或链路可靠性中的至少一个。
2.根据权利要求1所述的方法,进一步包括:
当至所述第二节点的所述通信成功时,从所述服务器向所述第一节点传输用于从所述第二节点检索所述文件的指令。
3.根据权利要求1所述的方法,进一步包括:
在所述服务器处识别所述第一节点进入和退出所述网络的时间模式;以及
将存储在所述服务器上的第二文件识别为先前被所述第一节点访问过。
4.根据权利要求3所述的方法,进一步包括:
确定所述第二节点具有比所述第一节点更大的存储容量;
从所述服务器向所述第二节点传输所述第二文件的副本;以及
响应于接收到来自所述第一节点的用于访问所述第二文件的第三请求,向所述第一节点传输用于从所述第二节点检索所述第二文件的指令。
5.根据权利要求4所述的方法,其中,所述确定所述第二节点具有比所述第一节点更大的存储容量包括:接收在所述第一节点和所述第二节点中的每个节点处的装置类型的指示。
6.根据权利要求1所述的方法,进一步包括:
当至所述第二节点的所述通信成功时,在所述服务器处从所述第一节点接收所述第一节点和所述第二节点之间的所述链路的所述链路延迟;以及
在所述服务器处更新网络模型以反映所接收到的指示和所接收到的链路延迟。
7.根据权利要求1所述的方法,其中,所述网络是第一网络,并且所述第二请求包括所述第二节点的多个第二地址,其中,所述多个第二地址中的每个第二地址描述了所述第二节点在包括所述第一网络的多个网络中的位置。
8.根据权利要求7所述的方法,进一步包括:在所述服务器处从所述第一节点接收另一个指示,如果存在曾用于与所述第二节点成功通信的第二地址,则所述另一个指示是所述多个第二地址中曾用于与所述第二节点成功通信的该第二地址。
9.根据权利要求1所述的方法,进一步包括:按照基于所述第一节点的装置类型的频率,重复向所述第一节点传输所述第二请求。
10.一种用于获取与具有多个节点的网络有关的数据的系统,所述系统包括:
在所述网络外并且作为文件共享系统的一部分的服务器处的存储器;以及
在所述网络外的所述服务器处的至少一个计算机处理器,所述至少一个计算机处理器耦合到所述存储器以:
维护关于所述网络的拓扑的信息和关于本地存储在所述多个节点中的个别节点上的多个文件的信息,关于所述网络的所述拓扑的所述信息识别所述网络内的所述多个节点之间的多个链路,并且包括所述多个链路中的链路的链路延迟、链路状态或链路可靠性中的至少一个;
更新关于所述网络的所述拓扑的所述信息,其中为更新关于所述网络的所述拓扑的所述信息,所述至少一个计算机处理器用以:
从所述多个节点中的第一节点接收对所述多个文件中的第一文件的第一请求;
基于关于本地存储在所述个别节点上的所述多个文件的信息确定所述第一文件是否已经在所述多个节点中的其它节点处被访问;
响应于确定所述第一文件已经在所述其它节点处被访问,基于以下中的至少一个从所述其它节点中选择第二节点:(i)所述第二节点具有到所述第一节点的最短延迟,(ii)所述第二节点具有到所述第一节点的最可靠链路,以及(iii)所述第二节点具有到所述网络中的所述多个节点的最强连接性;
向所述第一节点传输用于使所述第一节点向所述第二节点发送通信的第二请求,其中:
所述第二请求包括所述第一节点的第一地址和所述第二节点的第二地址并且指示所述第一节点从所述第二节点获取所述第一文件;
从所述第一节点接收至所述第二节点的所述通信是否成功的指示;以及
基于所接收到的指示更新所述第一节点与所述第二节点之间的链路的链路延迟、链路状态或链路可靠性中的至少一个。
11.根据权利要求10所述的系统,其中,所述至少一个计算机处理器进一步被配置为:
当至所述第二节点的所述通信成功时,向所述第一节点传输用于从所述第二节点检索所述文件的指令。
12.根据权利要求10所述的系统,其中,所述至少一个计算机处理器进一步被配置为:
识别所述第一节点进入和退出所述网络的时间模式;以及
将存储在所述服务器上的第二文件识别为先前被所述第一节点访问过。
13.根据权利要求12所述的系统,其中,所述至少一个计算机处理器进一步被配置为:
确定所述第二节点具有比所述第一节点更大的存储容量;
向所述第二节点传输所述第二文件的副本;以及
响应于接收到来自所述第一节点的用于访问所述第二文件的第三请求,向所述第一节点传输用于从所述第二节点检索所述第二文件的指令。
14.根据权利要求13所述的系统,其中,所述至少一个计算机处理器进一步被配置为:通过接收在所述第一节点和所述第二节点中的每个节点处的装置类型的指示来确定所述第二节点具有比所述第一节点更大的存储容量。
15.根据权利要求10所述的系统,其中,所述至少一个计算机处理器进一步被配置为:
当至所述第二节点的所述通信成功时,从所述第一节点接收所述第一节点和所述第二节点之间的所述链路的所述链路延迟;以及
更新网络模型以反映所接收到的指示和所接收到的链路延迟。
16.根据权利要求10所述的系统,其中,所述网络是第一网络,并且所述第二请求包括所述第二节点的多个第二地址,其中,所述多个第二地址中的每个第二地址描述了所述第二节点在包括所述第一网络的多个网络中的位置。
17.根据权利要求16所述的系统,其中,所述至少一个计算机处理器进一步被配置为:从所述第一节点接收另一个指示,如果存在曾用于与所述第二节点成功通信的第二地址,则所述另一个指示是所述多个第二地址中曾用于与所述第二节点成功通信的该第二地址。
18.根据权利要求10所述的系统,其中,所述至少一个计算机处理器进一步被配置为:按照基于所述第一节点的装置类型的频率,重复向所述第一节点传输所述第二请求。
19.一种包括指令的非暂时性计算机可读介质,所述指令在由处理设备执行时,使得所述处理设备执行用于获取与具有多个节点的网络有关的数据的操作,所述操作包括:
由所述网络外并且作为文件共享系统的一部分的服务器维护关于所述网络的拓扑的信息和关于本地存储在所述多个节点中的个别节点上的多个文件的信息,关于所述网络的所述拓扑的所述信息识别所述网络内的所述多个节点之间的多个链路,并且包括所述多个链路中的链路的链路延迟、链路状态或链路可靠性中的至少一个;以及
由所述服务器更新关于所述网络的所述拓扑的所述信息,其中所述更新包括:
从所述多个节点中的第一节点接收对所述多个文件中的第一文件的第一请求;
基于关于本地存储在所述个别节点上的所述多个文件的信息确定所述第一文件是否已经在所述多个节点中的其它节点处被访问;
响应于确定所述第一文件已经在所述其它节点处被访问,基于以下中的至少一个从所述其它节点中选择第二节点:(i)所述第二节点具有到所述第一节点的最短延迟,(ii)所述第二节点具有到所述第一节点的最可靠链路,以及(iii)所述第二节点具有到所述网络中的所述多个节点的最强连接性;
从所述服务器向所述第一节点传输用于使所述第一节点向所述第二节点发送通信的第二请求,其中,所述第二请求包括所述第一节点的第一地址和所述第二节点的第二地址并且指示所述第一节点从所述第二节点获取所述第一文件;
在所述服务器处从所述第一节点接收至所述第二节点的所述通信是否成功的指示;以及
由所述服务器基于所接收到的指示更新所述第一节点与所述第二节点之间的链路的链路延迟、链路状态或链路可靠性中的至少一个。
20.根据权利要求19所述的非暂时性计算机可读介质,其中所述操作进一步包括:
当至所述第二节点的所述通信成功时,从所述服务器向所述第一节点传输用于从所述第二节点检索所述第一文件的指令。
CN201680030290.1A 2015-09-04 2016-08-31 用于远程网络拓扑发现的系统和方法 Active CN107667513B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/845,577 US11108883B2 (en) 2015-09-04 2015-09-04 Systems and methods for remote network topology discovery
US14/845,577 2015-09-04
PCT/US2016/049615 WO2017040604A1 (en) 2015-09-04 2016-08-31 Systems and methods for remote network topology discovery

Publications (2)

Publication Number Publication Date
CN107667513A CN107667513A (zh) 2018-02-06
CN107667513B true CN107667513B (zh) 2021-04-27

Family

ID=56926294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680030290.1A Active CN107667513B (zh) 2015-09-04 2016-08-31 用于远程网络拓扑发现的系统和方法

Country Status (5)

Country Link
US (2) US11108883B2 (zh)
EP (1) EP3345345B1 (zh)
CN (1) CN107667513B (zh)
DE (1) DE202016107125U1 (zh)
WO (1) WO2017040604A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3451628A1 (en) * 2017-08-31 2019-03-06 Institut Eurecom G.I.E. System and method for managing distribution of information in multi-antenna and multi-transmitter environments
CN110149375A (zh) * 2019-04-30 2019-08-20 广州微算互联信息技术有限公司 网络存储云手机间的数据共享方法、系统及存储介质
CN114050974B (zh) * 2021-10-15 2023-06-23 中国联合网络通信集团有限公司 一种拓扑准确度的确定方法、装置及计算机可读存储介质
CN114567665A (zh) * 2022-01-26 2022-05-31 阿波罗智能技术(北京)有限公司 节点间通信的方法、装置、设备、介质及自动驾驶车辆

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394423A (zh) * 2008-09-27 2009-03-25 中兴通讯股份有限公司 一种媒体定位、搜索方法和系统
CN103701619A (zh) * 2013-10-22 2014-04-02 上海交通大学 基于cdn和数据中心动态选择的互联网内容分发方法
WO2015028774A1 (en) * 2013-08-30 2015-03-05 British Telecommunications Public Limited Company Determination and use of link performance measures

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870557A (en) 1996-07-15 1999-02-09 At&T Corp Method for determining and reporting a level of network activity on a communications network using a routing analyzer and advisor
US20020198991A1 (en) 2001-06-21 2002-12-26 International Business Machines Corporation Intelligent caching and network management based on location and resource anticipation
US8543681B2 (en) 2001-10-15 2013-09-24 Volli Polymer Gmbh Llc Network topology discovery systems and methods
US7567523B2 (en) 2004-01-29 2009-07-28 Microsoft Corporation System and method for network topology discovery
US20060212542A1 (en) * 2005-03-15 2006-09-21 1000 Oaks Hu Lian Technology Development Co., Ltd. Method and computer-readable medium for file downloading in a peer-to-peer network
JP2006261880A (ja) * 2005-03-16 2006-09-28 Hitachi Ltd ネットワーク通信方法およびネットワークシステム
EP1934731A4 (en) * 2005-09-21 2009-09-16 Qwikker Inc CONTENT DELIVERY COMPATIBLE WITH THE DEVICE
ATE463917T1 (de) * 2006-02-21 2010-04-15 Microsoft Corp Topologieverwaltung in peer-to-peer datenverteilungswolken
US20070245033A1 (en) 2006-04-14 2007-10-18 Microsoft Corporation Link layer discovery and diagnostics
US7797722B2 (en) * 2006-05-26 2010-09-14 Sony Corporation System and method for content delivery
US7908389B2 (en) * 2006-06-20 2011-03-15 Patentvc Ltd. Methods and systems for retrieving fragments from peer clients and servers
CN101232415B (zh) * 2007-01-22 2012-01-11 华为技术有限公司 对等网络节点访问装置、方法和系统
US7715386B2 (en) * 2007-03-15 2010-05-11 Microsoft Corporation Reducing network traffic to teredo server
US8037135B2 (en) * 2007-06-29 2011-10-11 Microsoft Corporation Automatic distributed downloading
US8099454B2 (en) * 2007-08-03 2012-01-17 International Business Machines Corporation Staging a file within a distributed computing system
US20090116404A1 (en) 2007-11-01 2009-05-07 Telefonaktiebolaget Lm Ericsson (Publ) Topology discovery in heterogeneous networks
JP2009129386A (ja) * 2007-11-28 2009-06-11 Hitachi Ltd 配信方法、サーバ及び受信端末
US8625457B2 (en) 2007-12-03 2014-01-07 International Business Machines Corporation Method and apparatus for concurrent topology discovery
US9014640B2 (en) * 2008-10-31 2015-04-21 Qualcomm Incorporated Wake-up trigger for implementation of target actions
US20100159948A1 (en) * 2008-12-19 2010-06-24 Taproot Systems, Inc. Adaptive Networking For Power Savings
US8717902B2 (en) * 2009-04-15 2014-05-06 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for reducing traffic in a communications network
US20100281224A1 (en) * 2009-05-01 2010-11-04 International Buisness Machines Corporation Prefetching content from incoming messages
US8549124B2 (en) 2009-05-27 2013-10-01 International Business Machines Corporation Network management discovery tool
US8706867B2 (en) * 2011-03-31 2014-04-22 Commvault Systems, Inc. Realtime streaming of multimedia content from secondary storage devices
EP2320624A1 (en) * 2009-11-06 2011-05-11 Alcatel Lucent Method for managing a P2P network based on cellular communications
EP2400812B1 (en) * 2010-06-24 2019-11-27 9Solutions Oy Bluetooth networking
US8108715B1 (en) * 2010-07-02 2012-01-31 Symantec Corporation Systems and methods for resolving split-brain scenarios in computer clusters
JPWO2012011450A1 (ja) * 2010-07-20 2013-09-09 シャープ株式会社 コンテンツ配信装置、コンテンツ再生装置、コンテンツ配信装置の制御方法、および、コンテンツ再生装置の制御方法
US20120059932A1 (en) * 2010-09-02 2012-03-08 Samsung Electronics Co., Ltd. Applying home network technologies to a wide area network
WO2013052714A1 (en) 2011-10-04 2013-04-11 Veedims, Llc System and method for auto-discovery and mapping of networked modules
EP2777197B1 (en) * 2011-11-10 2024-01-03 Assia Spe, Llc Method, apparatus, and system for optimizing performance of a communication unit by a remote server
US9749403B2 (en) * 2012-02-10 2017-08-29 International Business Machines Corporation Managing content distribution in a wireless communications environment
US8909769B2 (en) * 2012-02-29 2014-12-09 International Business Machines Corporation Determining optimal component location in a networked computing environment
US9594686B2 (en) * 2012-05-05 2017-03-14 Google Inc. File handling within a cloud-based file system
US20140045596A1 (en) * 2012-08-07 2014-02-13 Lawrence Cameron Vaughan Methods and systems for determining the location of online gaming clients
US10924895B2 (en) * 2013-01-22 2021-02-16 Blackberry Limited Enhancing short message service addressing and routing
US9100138B2 (en) * 2013-10-14 2015-08-04 Telefonaktiebolaget L M Ericsson (Publ) Method and system for automatic topology discovery in wavelength division multiplexing (WDM) network
US9401971B2 (en) * 2014-01-31 2016-07-26 International Business Machines Corporation Resource recommendation, reuse and optimization through common context
US9912546B2 (en) * 2014-03-28 2018-03-06 Sciencelogic, Inc. Component detection and management using relationships
JP6269250B2 (ja) * 2014-03-28 2018-01-31 富士通株式会社 データ転送制御装置、データ転送制御方法、及び、プログラム
US10129799B2 (en) * 2014-11-03 2018-11-13 Alcatel Lucent Mobility management for wireless networks
US10021181B2 (en) * 2014-12-22 2018-07-10 Dropbox, Inc. System and method for discovering a LAN synchronization candidate for a synchronized content management system
US9743299B2 (en) * 2014-12-22 2017-08-22 International Business Machines Corporation Network performance testing in non-homogeneous networks
US9667500B2 (en) * 2014-12-29 2017-05-30 Verizon Patent And Licensing Inc. Contextual virtual routing updates
US9426626B2 (en) * 2014-12-31 2016-08-23 Yahoo! Inc. Location uncertainty in search

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394423A (zh) * 2008-09-27 2009-03-25 中兴通讯股份有限公司 一种媒体定位、搜索方法和系统
WO2015028774A1 (en) * 2013-08-30 2015-03-05 British Telecommunications Public Limited Company Determination and use of link performance measures
CN103701619A (zh) * 2013-10-22 2014-04-02 上海交通大学 基于cdn和数据中心动态选择的互联网内容分发方法

Also Published As

Publication number Publication date
US20210392200A1 (en) 2021-12-16
US11108883B2 (en) 2021-08-31
EP3345345A1 (en) 2018-07-11
US11394800B2 (en) 2022-07-19
DE202016107125U1 (de) 2017-01-23
WO2017040604A1 (en) 2017-03-09
US20170070593A1 (en) 2017-03-09
EP3345345B1 (en) 2020-04-01
CN107667513A (zh) 2018-02-06

Similar Documents

Publication Publication Date Title
US11394800B2 (en) Systems and methods for remote network topology discovery
US10083177B2 (en) Data caching among interconnected devices
US10601947B2 (en) Application service delivery through an application service avatar
US10959089B2 (en) Data management microservice in a microservice domain
CN108712332B (zh) 一种通信方法、系统和装置
US9207988B2 (en) Method, system, and device for managing server hardware resources in a cloud scheduling environment
US10270648B2 (en) Configuration information management method, device, network element management system and storage medium
US10771533B2 (en) Adaptive communication control device
CN110365748B (zh) 业务数据的处理方法和装置、存储介质及电子装置
US10911560B2 (en) Partitioned serialized caching and delivery of large files
CN109361749B (zh) 报文处理方法、相关设备及计算机存储介质
US9137331B2 (en) Adaptive replication
JP2021010164A (ja) 通知プリセットを利用した通知処理方法および装置
US11595471B1 (en) Method and system for electing a master in a cloud based distributed system using a serverless framework
CN111629054B (zh) 消息处理方法、装置、系统、电子设备及可读存储介质
CN114760360B (zh) 请求响应方法、装置、电子设备及计算机可读存储介质
EP3040931A1 (en) Application service delivery through an application service avatar
US20200341968A1 (en) Differential Update of Local Cache from Central Database
US10218799B2 (en) Optimizing client distance to network nodes
KR102367017B1 (ko) 통신 네트워크 시스템 및 그것의 제어방법
CN110958182B (zh) 一种通信方法及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant