-
Gebiet der Erfindung
-
Im Allgemeinen bezieht sich diese Offenbarung auf das Erkennen der Topologie eines Fernnetzwerks.
-
Hintergrund
-
Bereits vorhandene Systeme, die Netzwerktopologien erkennen, sind typischerweise bereits Teil des Netzwerks selbst, sodass die Erkennungswerkzeuge einen direkten und unmittelbaren Zugang zu Informationen über das Netzwerk haben. Insbesondere, wenn ein Knoten im Netzwerk versucht, die Netzwerktopologie zu erkennen kann dieser Knoten seine direkten lokalen Verbindungen zu anderen Knoten im Netzwerk verwenden, um ein Modell des Netzwerks aufzubauen. Das Suchwerkzeug hat einen Vorteil, wenn es Teil des Netzwerks selbst ist, da es einen direkten, schnellen und zuverlässigen Zugang zum Netzwerk hat. Im Gegensatz dazu, ist bei einem Netzwerk, das fern von dem System liegt, das die Topologie dieses Netzwerks erkennen will, der Netzzugang beschränkt und möglicherweise auch langsam, da das Suchwerkzeug nicht Teil des Netzwerks ist.
-
Kurzdarstellung
-
Hierin offenbarte Systeme und Verfahren zum Erkennen der Topologie eines Fernnetzwerks. Ein Aspekt ist mit einem System bzw. Verfahren zum Einholen von Daten über ein Netzwerk mit mindestens einem ersten Knoten und einem zweiten Knoten verknüpft. Ein Server übermittelt eine erste Anforderung an den ersten Knoten, dass der erste Knoten eine Kommunikation an den zweiten Knoten schicken soll. Der Server befindet sich außerhalb des Netzwerks und die erste Anforderung beinhaltet eine erste Adresse des ersten Knotens und eine zweite Adresse des zweiten Knotens. Der Server empfängt vom ersten Knoten eine Angabe, ob die Kommunikation zum zweiten Knoten erfolgreich ist. Der Server kann vom ersten Knoten eine zweite Anforderung auf Zugang zu einer auf dem Server gespeicherten Datei empfangen, ermitteln, dass die Datei lokal am zweiten Knoten gespeichert ist und an den ersten Knoten eine Anweisung übermitteln, die Datei vom zweiten Knoten abzurufen, wenn die Kommunikation mit dem zweiten Knoten erfolgreich ist.
-
Ein weiterer Aspekt ist verknüpft mit einem System einschließlich Möglichkeiten für einen Server, der sich außerhalb eines Netzwerks befindet, Daten über das Netzwerk zu erhalten, die mindestens einen ersten Knoten und einen zweiten Knoten hat. Das System beinhaltet Möglichkeiten zur Übermittlung zum ersten Knoten einer ersten Anforderung an den ersten Knoten, eine Kommunikation an den zweiten Knoten zu senden, wobei die erste Anforderung eine erste Adresse des ersten Knotens und eine zweite Adresse des zweiten Knotens beinhaltet, sowie die Möglichkeiten zum Empfang einer Angabe vom ersten Knoten, ob die Kommunikation mit dem zweiten Knoten erfolgreich ist.
-
In einigen Implementierungen beinhaltet das System weiterhin Möglichkeiten, um vom ersten Knoten eine zweite Anforderung zum Zugang zu einer auf dem Server gespeicherten Datei zu empfangen, Möglichkeiten, um festzustellen, dass die Datei lokal am zweiten Knoten gespeichert ist und Möglichkeiten, um eine Anweisung zum Abrufen der Datei vom zweiten Knoten an den ersten Knoten zu übermitteln, wenn die Kommunikation mit dem zweiten Knoten erfolgreich ist.
-
In einigen Implementierungen beinhaltet das System weiterhin Möglichkeiten zur Identifizierung eines temporären Musters für den Eingang und Ausgang des ersten Knotens in das Netzwerk und Möglichkeiten, eine auf dem Server gespeicherte Datei zu ermitteln, auf die der erste Knoten zuvor zugegriffen hat. Das System kann weiterhin Möglichkeiten beinhalten, um festzustellen, dass der zweite Knoten mehr Speicherkapazität hat als der erste Knoten, Möglichkeiten, um eine Kopie der Datei an den zweiten Knoten zu übermitteln und als Antwort auf den Empfang einer zweiten Anforderung auf Zugriff auf die Datei vom ersten Knoten, Möglichkeiten, eine Anweisung zum Abruf der Datei vom zweiten Knoten an den erste Knoten zu übermitteln. Die Möglichkeiten, um zu bestimmen, dass der zweite Knoten mehr Speicherkapazität hat als der erste Knoten können Möglichkeiten zum Empfang einer Angabe zu einem Gerätetyp beim ersten und beim zweiten Knoten beinhalten.
-
In einigen Implementierungen beinhaltet das System weiterhin Möglichkeiten zum Empfang einer Verknüpfungsverzögerung zwischen dem ersten und dem zweiten Knoten, wenn die Kommunikation mit dem zweiten Knoten erfolgreich ist, und Möglichkeiten zur Aktualisierung eines Netzwerkmodells, um die empfangene Angabe und die empfangene Verknüpfungsverzögerung widerzuspiegeln.
-
In einigen Implementierungen ist das Netzwerk ein erstes Netzwerk und die erste Anforderung beinhaltet eine Vielzahl von zweiten Adressen für den zweiten Knoten, wobei jede zweite Adresse in der Vielzahl der zweiten Adressen einen Standort des zweiten Knotens in einer Vielzahl von Netzwerken einschließlich es ersten Netzwerks beschreibt. Das System kann weiterhin Möglichkeiten beinhalten, um vom ersten Knoten eine weitere Angabe zu empfangen, das gegebenenfalls von der Vielzahl der zweiten Adressen verwendet wurde, um erfolgreich mit dem zweiten Knoten zu kommunizieren.
-
In einigen Implementierungen beinhaltet das System weiterhin Möglichkeiten, um von einem dritten Knoten, eine Nachricht zu empfangen, dass der erste Knoten die für den zweiten Knoten bestimmte Kommunikation an den dritten Knoten gesendet hat. Die Möglichkeiten zum Übermitteln der ersten Anforderung kann Möglichkeiten zur Wiederholung der Übermittlung in einer auf dem Gerätetyp des ersten Knotens basierenden Häufigkeit beinhalten.
-
Kurze Beschreibung der Zeichnungen
-
Die vorgenannten und anderen Merkmale der vorliegenden Offenbarung, einschließlich ihrer Natur und verschiedenen Vorteile, werden verständlicher, wenn man die folgende detaillierte Beschreibung unter Hinzuziehung der zugehörigen Zeichnungen berücksichtigt:
-
1 ist ein Blockdiagramm eines Computers, einschließlich eines Servers und einer Fernnetzwerkstruktur, gemäß einer darstellenden Ausführungsform.
-
2 ist ein Ablaufdiagramm eines darstellenden Verfahrens für einen Server zum Erkennen der Topologie eines Fernnetzwerks, gemäß einer darstellenden Ausführungsform.
-
3 ist ein Ablaufdiagramm eines darstellenden Verfahrens für einen Server, das einen Zugriff auf eine Datei zu einem ersten Knoten bereitstellt, gemäß einer darstellenden Ausführungsform.
-
4 ist ein Ablaufdiagramm eines darstellenden Verfahrens für einen Server, zur Vorhersage, dass ein erstes Gerät Zugriff auf eine Datei anfordert und um die Datei vor Erhalt der Anforderung auf einem zweiten Gerät zwischenzuspeichern, gemäß einer darstellenden Ausführungsform.
-
5 ist ein Ablaufdiagramm eines darstellenden Verfahrens für einen Server, um Informationen bezüglich der Topologie eines Fernnetzwerks anzufragen, gemäß einer darstellenden Ausführungsform.
-
6 eine illustrierte Ausführungsform eines Blockdiagramms eines Computers ist, der sämtliche hier beschriebenen Prozesse durchführen kann.
-
Ausführliche Beschreibung
-
Um ein umfassendes Verständnis der Offenbarung zu bieten, werden nun bestimmte darstellende Ausführungsformen beschrieben, einschließlich eines Systems zum Erkennen der Topologie eines Fernnetzwerks. Insbesondere werden Verfahren beschrieben, die es erlauben, die Topologie eines Fernnetzwerks zu nutzen, um Anfragen zur Dateiübermittlung von Knoten des Netzwerks effizient zu erfüllen und/oder die Topologie des Fernnetzwerks nutzen, um Dateien zu erkennen, die voraussichtlich von einem Benutzer an einem bestimmten Netzwerkknoten verwendet werden, und diese Dateien an dem Knoten zwischenzuspeichern, bevor eine dementsprechende Anforderung von dem Benutzer empfangen wird. Allerdings wird ein regulär geschulter Benutzer sehen, dass die hier beschriebenen Systeme und Methoden entsprechend abgeändert und angepasst werden können, um der jeweiligen Anwendung zu genügen, und ebenfalls, dass die hier beschriebenen Systeme und Methoden auch in anderen geeigneten Anwendungen eingesetzt werden können und dass diese Zusätze und Änderungen nicht aus deren Ausmaß abweichen. Im Allgemeinen können die hier beschriebenen computerisierten Systeme eine oder mehrere Treiber umfassen, die einen Prozessor oder Rechner, wie einen Computer, ein Logikgerät oder ein anderes Gerät oder einen Prozessor umfassen, der mit Hardware, Firmware und Software bestückt ist, um eine oder mehrere der hier beschriebenen computerisierten Methoden durchzuführen.
-
Es ist im Allgemeinen wünschenswert, dass ein Server die Netzwerktopologie erkennt, wenn das Netzwerk vom System entfernt ist. Die Kenntnis der Topologie des Fernnetzwerks ist insbesondere in einem Datentauschsystem von Vorteil. So können beispielsweise Daten, mit denen die Netzwerktopologie beschrieben wird, verwendet werden, um Dateiübermittlungsanfragen von Knoten zu bearbeiten oder diesen zuvorzukommen, sodass die Knoten zeitnah und effizient mit den erforderlichen Dateien beliefert werden können. In einem Beispiel kann ein Benutzer an einem ersten Knoten des Fernnetzwerks Zugriff auf eine Datei anfragen, die außerhalb des Fernnetzwerks gespeichert ist, z. B. auf dem Server. Falls der Server Daten hat, welche die Topologie des Fernnetzwerks beschreiben (z. B. in Form eines Netzwerkmodells), und außerdem Daten, die anzeigen, dass mindestens ein anderer Knoten des Fernnetzwerks eine Version der angeforderten Datei lokal zwischengespeichert hat, kann der Server den ersten Knoten anweisen, die Datei von dem anderen Knoten anzufordern, der die Datei zwischengespeichert hat. Auf diese Weise wird die Fernverbindung zwischen dem Server und dem ersten Knoten nicht zur Übermittlung der Datei verwendet, stattdessen kann die Datei über eine zuverlässige, lokale und schnelle Verbindung innerhalb des Fernnetzwerks übermittelt werden. Dadurch kann die Wahrscheinlichkeit einer fehlgeschlagenen Dateiübermittlung und die sich daraus ergebenden Notwendigkeit einer erneuten Übermittlung verringert werden. Zusätzlich kann der anfordernde Knoten die angeforderte Datei möglicherweise schneller empfangen.
-
So können beispielsweise zwei Geräte mit dem selben lokalen Netzwerk verbunden sein, das sich fern von einem cloudbasierten Datentauschsystem befindet. Falls beide Geräte mit der gleichen Organisation, dem gleichen Benutzer oder dem gleichen, auf dem cloudbasierten Datentauschsystem gespeicherten Datensatz verknüpft sind, kann ein Server auf dem Datentauschsystem die Information ausnutzen, dass die beiden Geräte mit dem gleichen Netzwerk verbunden sind, um eines der beiden Geräte anzuweisen, mit dem jeweils anderen Gerät über das lokale Netzwerk zu kommunizieren.
-
1 zeigt ein Beispiel einer Server- und Fernnetzwerkstruktur, die zur Umsetzung der hier beschriebenen Systeme und Verfahren verwendet werden kann. 1 ist ein Blockdiagramm eines Computersystems 100, die es einem Server 110 ermöglicht, die Topologie eines Fernnetzwerks 101 zu erkennen. Der Server 110 beinhaltet einen Prozessor 114 und eine Datenbank 116. Das Fernnetzwerk 101 ist vom Server 110 entfernt und beinhaltet fünf Knoten, A, B, C, D und E. Der Server 110 kann so konfiguriert sein, dass er mit einem oder mehr dieser fünf Knoten kommuniziert, jedoch nicht direkt mit allen Knoten im Fernnetzwerk 101 kommunizieren kann. Der Server 110 kann in einem webbasierten Speichersystem (nicht gezeigt) beinhaltet sein, das ein Filehosting-System sein kann, das es den Benutzern ermöglicht, Daten zu speichern, abzurufen und zu verändern. Diese Daten können als Web-Daten eines Benutzers bezeichnet werden, die in der Datenbank für Benutzerdaten gespeichert werden. Der Server 110 kann Funktionen in Zusammenhang mit der Verwaltung und Pflege der Datenbank für Benutzerdaten ausüben, wie z. B. Bereitstellung von Speicherplatz für die Daten, Empfang neuer Daten, die in der Datenbank gespeichert werden sollen, Angaben zum verfügbaren Speicherplatz in der Datenbank ist oder beliebige andere Funktionen, die in Verbindung mit Datenbankverwaltung stehen. Das webbasierte Speichersystem kann auf einem System mit nur einem Server oder in einem verteilten System gespeichert werden und kann Cloudspeicher verwenden, um Benutzerdaten zu speichern.
-
Es werden fünf Knoten im Fernnetzwerk 101 von 1 ausschließlich zu erläuternden Zwecken dargestellt. Im Allgemeinen verstehen Personen mit normalen Fähigkeiten in diesem Bereich, dass das Fernnetzwerk 101 eine beliebige Anzahl von Knoten beinhalten kann und dass die Knoten in jeder geeigneten Topologie konfiguriert sein können, ohne vom Umfang der hier vorliegenden Offenbarung abzuweichen. In einem Beispiel kann das Fernnetzwerk 101 sich an einem Arbeitsplatz befinden, wobei jeder Knoten im Fernnetzwerk 101 ein Gerät (wie beispielsweise einen Bürocomputer) ist, das an ein gemeinsames Netzwerk an diesem Arbeitsplatz angeschlossen ist. Die Benutzer der Geräte an den Knoten können einen bestimmten Satz an Dateien miteinander teilen. Diese Dateien können in einem Cloudspeichersystem gespeichert werden, einschließlich Server 110. Möglicherweise ist es jedoch hin und wieder nicht erwünscht, die Verbindung zwischen Server 110 und dem Fernnetzwerk 101 für die Übermittlung dieser Dateien zu verwenden. In diesem Fall kann der Server 110 seine Kenntnisse der Topologie des Fernnetzwerks 101 verwenden und die Kenntnis darüber, ob beliebige andere Knoten im Fernnetzwerk 101 die gewünschte Datei lokal zwischengespeichert haben, um die Knoten im Fernnetzwerk 101 anzuweisen, die gewünschte Datei von den Knoten abzurufen, welche die Datei zwischengespeichert haben. Das oben beschriebene Beispiel bezieht sich zwar auf ein Fernnetzwerk 101 an einem Arbeitsplatz, jedoch versteht jeder mit durchschnittlichen Fertigkeiten auf diesem Gebiet, dass sich die hier vorliegende Offenbarung auf jedes Netzwerk anwenden lässt, in dem mehrere Geräte miteinander kommunizieren und Zugang auf den gleichen Satz Dateien erfordern können, wie in einer Schule, einem Geschäft oder auch Zuhause. Darüber hinaus wird nur ein Fernnetzwerk 101 in 1 dargestellt, jedoch kann eine beliebige Zahl an Fernnetzwerken mit dem Server 110 fernverbunden sein.
-
Jeder Knoten im Fernnetzwerk 101 kann ein oder mehr Computersysteme, Prozessoren, Mobilgeräte wie etwa Mobiltelefone oder Tablets, oder jedes beliebiges geeignete Gerät beinhalten, das mit einem anderen Gerät über ein Netzwerk kommunizieren kann. Zu den hiesigen Zwecken bezeichnet der Begriff „Prozessor“ ein oder mehrere Computer, Mikroprozessoren, logische Geräte, Server oder andere Geräte, die mit Hardware, Firmware und Software konfiguriert sind, um eine oder mehrere der hier beschriebenen computergesteuerten Techniken auszuführen. Prozessoren und verarbeitende Geräte können ebenfalls ein oder mehrere Speichergeräte zum Speichern von Eingaben, Ausgaben und Daten umfassen, die aktuell verarbeitet werden. Nur ein Server 110 und nur ein Fernnetzwerk 101 sind dargestellt in 1 um eine komplizierte Abbildung zu vermeiden. Im Allgemeinen kann System 100 mehrere Server 110 und eine beliebige Anzahl Fernnetzwerke 101 unterstützen. Der Server 110 kann auf einem einzelnen Server oder in einem verteilten System gespeichert werden, das Cloudspeicher verwendet, um Benutzerdaten zu speichern.
-
In 1, Knoten A ist direkt verbunden mit Knoten B, C und D, und Knoten E ist direkt verbunden mit Knoten B und D. Es werden keine weiteren direkten Verbindungen in Fernnetzwerk 101 dargestellt. Die Anordnung und Konfiguration der in Fernnetzwerk 101 dargestellten direkten Verbindungen können hierin als Netzwerktopologie bezeichnet werden, die eine Beschreibung der Verbindungen zwischen unterschiedlichen Knoten in Fernnetzwerk 101 beinhaltet. Zusätzlich zu diesen direkten Verbindungen, kann die Netzwerktopologie weiterhin Informationen bezüglich der Verknüpfungsverzögerung, Verknüpfungsstatus, Verknüpfungszuverlässigkeit oder jede beliebige andere Kombination davon beinhalten. Für den Server 110 kann es wünschenswert sein, Informationen über die Topologie des Fernnetzwerks 101 zu erhalten, sodass der Server 110 gut abgewogene Anweisungen geben kann, wenn ein erster Knoten im Fernnetzwerk 101 eine Datei vom Server 110 anfordert. So kann der Server 110 beispielsweise erkennen, dass die angeforderte Datei lokal auf einem zweiten Knoten im Fernnetzwerk 101 gespeichert ist und den ersten Knoten anweisen, die Datei vom zweiten Knoten anstatt vom Server 110 abzurufen. Da lokale Netzwerkverbindungen meist günstiger, zuverlässiger und schneller sind als längere und weiter entferntere Netzwerkverbindungen, kann die vorliegende Offenbarung Einsparungen bei Netzwerkkosten und Effizienz bieten.
-
Der Server 110 ist fern vom Netzwerk 101, d. h., dass der Server 110 keiner der Knoten in Netzwerk 101 ist und zunächst nur eingeschränkte Informationen über die Topologie von Netzwerk 101 hat. Eine Möglichkeit für den Server 110, die Topologie des Fernnetzwerks 101 zu erkennen, ist, eine Nachricht von einem der Knoten im Fernnetzwerk 101 (z. B. Knoten A) zu übermitteln mit einer Anforderung an Knoten A, einen anderen Knoten im Fernnetzwerk 101 (z. B. Knoten B) zu kontaktieren. Dies wird detaillierter beschrieben im Bezug auf 2.
-
2 ist ein Ablaufdiagramm eines erläuternden Verfahrens 200 für einen Server, wie den Server 110, die Topologie eines Fernnetzwerks 101 zu erkennen. Einige Verfahren zum Erkennen der Topologie eines Netzwerks können einen Benutzer erfordern (wie z. B. den Netzadministrator), der explizit Informationen über das Netzwerk bereitstellt. Im Gegensatz dazu ist das Verfahren 200 ein Beispiel für ein automatisiertes Verfahren zum Erkennen der Topologie eines Fernnetzwerks 101. Verfahren 200 beinhaltet die Schritte der Übermittlung einer Nachricht an einen ersten Knoten im Fernnetzwerk, wobei die Nachricht die Adresse des ersten Knotens und die Adresse eines zweiten Knotens im Fernnetzwerk beinhaltet (Schritt 202), der erste Knoten dann eine Nachricht an den zweiten Knoten übermittelt (Schritt 204), und am Server dann vom ersten Knoten Informationen zur Verknüpfung zwischen dem ersten und dem zweiten Knoten empfangen werden (Schritt 206).
-
In Schritt 202, übermittelt der Server 110 eine Nachricht an einen ersten Knoten (z. B. Knoten A) im Fernnetzwerk 101, wobei die Nachricht die Adresse des ersten Knotens und die Adresse eines zweiten Knotens (z. B. Knoten B) im Fernnetzwerk 101 beinhaltet. Die Adresse kann beispielsweise eine IP-Adresse oder ein beliebiges anderes Kennzeichen sein, das einem Gerät an einem Knoten in einem Netzwerk zugewiesen wurde. Im Allgemeinen kann die Adresse eine lokale Adresse, eine globale Adresse oder beides beinhalten. Die lokale Adresse kann sich auf das von einem Knoten verwendete Kennzeichen beziehen, das zur Kommunikation mit einem anderen Knoten in demselben Netzwerk verwendet wird. Die globale Adresse kann sich auf das von einem Knoten verwendete Kennzeichen beziehen, das zur Kommunikation mit einem Knoten außerhalb des Netzwerks oder mit dem Server 110 verwendet wird. Darüber hinaus kann die Adresse mehrere lokale Adressen beinhalten, die auftreten können, falls ein einzelnes Gerät zu mehreren Netzwerken gehört und unterschiedliche lokale Adressen für die Netzwerke hat, zu denen es gehört.
-
In einigen Ausführungsformen speichert der Server 110 Daten, die alle bekannten Adresse der Geräte an den Knoten im Fernnetzwerk 101 bezeichnen, verfügt jedoch nicht über Informationen, welches die lokale Adresse des Fernnetzwerks 101 ist. So kann Server 110 möglicherweise bekannt sein, welche Adresse Knoten B zur Kommunikation mit Server 110 verwendet, jedoch weiß der Server 110 vielleicht nicht, welche Adresse Knoten B verwendet, um mit anderen Knoten im Fernnetzwerk 101 zu kommunizieren, wie z. B. Knoten A. In diesem Fall beinhaltet die in Schritt 202 übermittelte Nachricht jede bekannte Adresse für die Geräte an Knoten A und/oder Knoten B und Knoten A ist angewiesen, zu versuchen, alle Adressen von B zu verwenden. In einem weiteren Beispiel, kann eine Nachricht für jede bekannte Adresse für Knoten B gesendet werden.
-
In einigen Ausführungsformen beinhaltet die in Schritt 202 übermittelte Nachricht eine Liste spezifischer Felder für Knoten A, die in dessen Antwort an Server 110 beinhaltet sein sollen. In einem Beispiel kann die Nachricht eine Anforderung an Knoten A beinhalten, spezifische Informationen über die Kommunikationsverknüpfung zwischen Knoten A und Knoten B zurückzusenden, wie z. B. Verknüpfungsverzögerung, Verknüpfungsstatus, Verknüpfungszuverlässigkeit oder beliebige andere Merkmale der Verknüpfung. In anderen Ausführungsformen kann die in Schritt 202 übermittelte Nachricht eine allgemeine Anforderung an Knoten A beinhalten, Server 110 mit allen Informationen zu antworten, die Knoten A über die Kommunikationsverknüpfung zwischen Knoten A und Knoten B hat.
-
In einigen Ausführungsformen beinhaltet die in Schritt 202 übermittelte Nachricht einen einzelnen zweiten Knoten (z. B. Knoten B), wobei Knoten A spezifisch angewiesen ist, zu versuchen, Knoten B zu kontaktieren. In anderen Ausführungsformen beinhaltet die in Schritt 202 übermittelte Nachricht mehrere zweite Knoten (z. B. Knoten B, C, D und E), wobei Knoten A angewiesen ist, zu versuchen, jeden dieser zweiten Knoten zu kontaktieren. In diesem Fall ist die Nachricht von Schritt 202 im Grunde genommen eine Anzahl einzelner Anforderungen, die in einer einzelnen Anforderung zusammengebündelt wurden. Im Allgemeinen kann die Nachricht jede beliebige Anzahl zweiter Knoten beinhalten, einschließlich aller Knoten (außer dem ersten Knoten A) im Fernnetzwerk 101 oder jeder Teilmenge davon.
-
In Schritt 204 übermittelt der erste Knoten A eine Nachricht an den zweiten Knoten B. Diese Nachricht kann einen ersten Zeitstempel der Uhrzeit beinhalten, zu welcher der erste Knoten die Anforderung empfängt, einen zweiten Zeitstempel der Uhrzeit, zu welcher der erste Knoten A die Nachricht an den zweiten Knoten B übermittelt, oder den ersten und den zweiten Zeitstempel. Falls die in Schritt 202 übermittelte Nachricht mehrere zweite Knoten beinhaltet, kann der erste Knoten A gleichzeitig (oder zum ungefähr gleichen Zeitpunkt) eine Nachricht an jeden der in der Nachricht genannten zweiten Knoten übermitteln.
-
In einigen Ausführungsformen hat die in Schritt 204 übermittelte Nachricht einen Anhang mit zusätzlichen Zufallsdaten. Das kann dazu dienen, dass Knoten B die Geschwindigkeit der Verbindung zwischen den Knoten A und B ungefähr ermessen kann, da die Größe der Nachricht sich auf die Verbindungsgeschwindigkeit auswirken kann. Insbesondere für den Fall, dass die in Schritt 204 übermittelte Nachricht klein ist, kann der Knoten B einen kurzen Verzögerungswert messen, der verzerrt sein kann, da er nicht die tatsächliche Verbindungsgeschwindigkeit darstellt. Falls die Nachricht jedoch zusätzliche Zufallsdaten als Anhang hat, sodass die Nachricht die Größe eines typischen Datenpakets imitiert, das über die Verbindung übermittelt wird, kann die von Knoten B gemessene Verzögerung eher die Verbindungsgeschwindigkeiten unter normalen Bedingungen genauer beschreiben.
-
In Schritt 206 empfängt der Server 110 vom ersten Knoten A Informationen über die Verknüpfung zwischen dem ersten Knoten A und dem zweiten Knoten B. Insbesondere nach Schritt 204 kann der zweite Knoten B Informationen an den ersten Knoten A übermitteln, darunter unter anderem den Zeitstempel, an dem der zweite Knoten B die in Schritt 204 übertragene Nachricht empfängt. In diesem Fall zeigt die Verzögerung zwischen dem Zeitpunkt zu dem der erste Knoten A die Nachricht an den zweiten Knoten B übermittelt und dem Zeitpunkt, an dem der zweite Knoten B die Nachricht erhält, eine Verzögerung in der Verknüpfung zwischen Knoten A und B an.
-
In einigen Ausführungsformen ist die Verknüpfung zwischen den Knoten A und B asymmetrisch, sodass die Übermittlung auf der Verknüpfung in eine Richtung (z. B. von Knoten A zu Knoten B) schneller ist, als die Übermittlung auf der Verknüpfung in die entgegengesetzte Richtung (z. B. von Knoten B zu Knoten A). Das kann die Folge sein, wenn ein Gerät eine stärkere Antenne als das andere Gerät hat. Server 110 kann diese Informationen in der Datenbankstruktur durch Berechnung der Differenz zwischen den Zeitstempeln speichern. In diesem Fall wird die erste Verzögerung von Knoten A nach Knoten B berechnet, indem der erste Zeitstempel, an dem Knoten A eine Nachricht übermittelt, von dem Zeitstempel abgezogen wird, an dem Knoten B die Nachricht empfängt. Die erste Verzögerung kann berechnet werden, sobald Knoten B die Nachricht von Knoten A empfängt. Auf ähnliche Weise wird die zweite Verzögerung von Knoten B nach Knoten A ermittelt, indem der Zeitstempel, an dem Knoten B eine Antwort auf die Nachricht von Knoten A übermittelt, vom Zeitstempel abgezogen wird, an dem Knoten A die Antwort erhält. Die Verzögerung kann ermittelt werden, sobald Knoten A die Antwort erhalten hat. Knoten A kann sowohl die erste als auch die zweite Verzögerung an Server 110 senden, oder Knoten B kann Informationen bezüglich der ersten Verzögerung direkt an Server 110 senden.
-
In einigen Ausführungsformen beinhalten die in Schritt 206 empfangen Informationen Daten wie die Zuverlässigkeit der Verknüpfung, der Status der Verknüpfung oder beliebige andere geeignete Informationen zur Verknüpfung. In einem Beispiel können die in Schritt 206 empfangenen Informationen beinhalten, ob es einen direkte Verknüpfung zwischen dem ersten und dem zweiten Knoten gibt. Im Fernnetzwerk 101 gibt es keine direkten Verknüpfungen zwischen den Knoten A und E. Knoten A kann jedoch über die Knoten B oder D indirekt mit Knoten E kommunizieren. In einem Beispiel, falls Knoten A aufgefordert wird, mit Knoten E in Kontakt zu treten, kann Knoten A dem Server 110 antworten, dass der Knoten A nicht konfiguriert ist, um direkt mit Knoten E zu kommunizieren. In diesem Fall, kann Knoten A dem Server 110 eine Angabe eines fehlgeschlagenen Kontaktversuchs mit Knoten E liefern. In einigen Ausführungsformen beinhaltet die in Schritt 202 übermittelte Nachricht eine Angabe, ob der erste Knoten A versuchen soll, den zweiten Knoten (z. B. Knoten E) zu kontaktieren, selbst wenn keine direkte Verknüpfung zwischen dem ersten und dem zweiten Knoten besteht, oder ob der erste Knoten A einfach mit einer Fehlermeldung antworten soll, falls keine direkte Verknüpfung existiert.
-
In einigen Ausführungsformen kann der Knoten A versuchen, den Knoten E indirekt zu kontaktieren und Informationen über die Verbindungen zwischen den Knoten A und E an den Server 110 zu liefern. Im Allgemeinen, sofern keine direkte Verknüpfung vorhanden ist (wie zwischen den Knoten A und E, die im Fernnetzwerk 101 keine direkte Verbindung haben), kann jeder Knoten auf dem Pfad zwischen dem ersten Knoten und dem zweiten Knoten einen oder mehr Zeitstempel an die Nachricht anhängen, wenn er die Nachricht auf dem Pfad zum zweiten Knoten weiterleitet. Auf diese Weise kann der Knoten A indirekt über einen oder beide Knoten A und D Kontakt mit Knoten E aufnehmen. Insbesondere kann Knoten A anfordern, dass Knoten B oder D die Nachricht an Knoten E weiterleiten. Falls Knoten B oder D diese Anforderung erfüllt, kann Knoten B oder D die Nachricht an Knoten E weiterleiten, nachdem er einen Zeitstempel an die Nachricht angehängt hat, mit der Uhrzeit, zu der die Anforderung von Knoten A empfangen wurde und der Uhrzeit, zu der die Nachricht an Knoten E weitergeleitet wird. Anschließend kann Knoten E mit einem Zeitstempel, zu welcher Uhrzeit Knoten E die Nachricht empfangen hat, auf die weitergeleitete Nachricht antworten Im Allgemeinen kann Knoten E diese Nachricht an Server 110 weiterleiten oder die Nachricht über den gleichen Pfad oder einen anderen Pfad zurückleiten. Wenn Knoten A zum Beispiel die Nachricht an Knoten E über Knoten B gesendet hat, kann Knoten E Knoten A über Knoten D oder Knoten B antworten. Knoten A anzuweisen, zu versuchen, Knoten E zu kontaktieren, selbst wenn es keine direkte Verknüpfung zwischen den Knoten A und E gibt, kann effizient sein und Übermittlungen über die Verbindung zwischen Server 110 und Fernnetzwerk 101 sparen. Diese Implementierung ist jedoch etwas komplizierter als der Ansatz, bei dem der erste Knoten A einfach eine Fehlermeldung zurücksendet, falls es keine direkte Verknüpfung zum zweiten Knoten E gibt.
-
In Schritt 208 aktualisiert der Server 110 ein Netzwerkmodell, um die bei Schritt 206 empfangenen Informationen wiederzugeben. Das Netzwerkmodell beschreibt die abgeleitete Topologie von Fernnetzwerk 101, basierend auf den von einem oder mehreren Knoten im Fernnetzwerk 101 empfangenen Meldungen. So kann z. B. der Server 110 eine Datenbankstruktur speichern, die Informationen bezüglich des Fernnetzwerks 101 speichert. Insbesondere kann die Datenbankstruktur eine Liste von zuvor an verschiedene Knoten im Fernnetzwerk 101 übertragenen Anforderungen beinhalten, und ob diese Anforderungen erfolgreich an Zielknoten weitergeleitet wurden oder nicht. Die Datenbankstruktur kann weiterhin die diesen Anforderungen zugewiesenen Zeitstempel beinhalten, wie den Zeitstempel für den Zeitpunkt, an dem die erste Anforderung vom Server 110 an den ersten Knoten übertragen wurde, einen Zeitstempel für den Zeitpunkt, an dem der erste Knoten die erste Anforderung empfing, einen Zeitstempel für den Zeitpunkt, an dem der erste Knoten eine Nachricht an den zweiten Knoten übermittelte, einen Zeitstempel für den Zeitpunkt, an dem der zweite Knoten die Nachricht empfing, einen Zeitstempel für den Zeitpunkt, an dem der zweite Knoten eine Antwort auf die Nachricht an den ersten Knoten übermittelte, einen Zeitstempel für den Zeitpunkt, an dem der erste Knoten die Antwort erhielt oder eine beliebige geeignete Kombination davon.
-
In einigen Ausführungsformen ist ein einzelnes Gerät mehreren Adressen zugewiesen, wie etwa einer Fernadresse für die Kommunikation mit dem Server 110 und einer oder mehr lokalen Adressen für die Kommunikation mit einem oder mehr Netzwerken. In diesem Fall kann der Server 110 den ersten Knoten anweisen, mit dem zweiten Knoten unter Verwendung einer beliebigen der mehreren Adressen für den zweiten Knoten zu kommunizieren. Darüber hinaus hat der Server 110 möglicherweise keinen direkten Zugang auf die lokalen Adressen, die der erste Knoten für die Kommunikation mit dem zweiten Knoten verwendet, oder auf die lokale Adresse, die der zweite Knoten für die Kommunikation mit dem ersten Knoten verwendet. Insbesondere hat der Server 110 möglicherweise nur Informationen bezüglich der Fernadressen dieser Knoten, da diese Fernadressen vom Server 110 für die Kommunikation mit diesen Knoten verwendet werden. In diesem Fall kann der Server 110 die Fernadresse des zweiten Knotens in der in Schritt 202 übermittelten Nachricht einfügen, und der zweite Knoten kann eine Suchtabelle (die z. B. die bekannten lokalen und Fernadressen der verschiedenen Knoten im Fernnetzwerk 101 beinhaltet) verwenden, um die lokale Adresse des zweiten Knotens zu ermitteln. In seiner Antwort an Server 110 kann der erste Knoten eine Angabe einfügen, welche Adresse verwendet wurde, um den zweiten Knoten zu kontaktieren und der Server 110 kann die entsprechende lokale Adresse des zweiten Knotens speichern.
-
In einigen Ausführungen kann, falls die in Schritt 204 übermittelte Nachricht für den zweiten Knoten (z. B. Knoten B) bestimmt war, jedoch stattdessen an einen dritten Knoten (z. B. Knoten C) gesendet wurde, der dritte Knoten dem ersten Knoten (z. B. Knoten A) mit der Angabe antworten, dass der dritte Knoten nicht für den Empfang der Nachricht bestimmt war. Insbesondere kann jeder Knoten einer eindeutigen Kennung zugewiesen sein, die für jeden Knoten spezifisch ist. Wenn Knoten C eine Nachricht erhält, welche die dem Knoten B zugewiesene eindeutige Kennung hat, kann Knoten C an Knoten A eine Antwort mit dem Hinweis schicken, dass er eine Nachricht empfangen hat, die für einen anderen Knoten bestimmt ist. In einem weiteren Beispiel kann der dritte Knoten dem ersten Knoten mit Informationen zu seiner eigenen Identität und jeder beliebigen, entsprechenden und hier beschriebenen Verknüpfungsinformation antworten. Falls Knoten C sich im selben Fernnetzwerk 101 befindet wie Knoten A und B (wie in 1 dargestellt), sind diese Informationen, die von Knoten C an Knoten A weitergegeben werden (und die dementsprechend an Server 110 zurückgeleitet werden), für Server 110 beim Aktualisieren des Netzwerkmodells in Schritt 208 sehr nützlich. Sollte Knoten C sich in einem anderen Fernnetzwerk außerhalb des Fernnetzwerks 101 befinden, können diese Informationen weniger hilfreich sein. In einigen Ausführungsformen kann Knoten C so konfiguriert sein, dass er beim Empfang einer Nachricht vom ersten Knoten A, wobei die Nachricht für einen zweiten Knoten B bestimmt war, aktiv eine Kommunikation an Server 110 sendet.
-
In einigen Ausführungsformen wird das Netzwerkmodell in Schritt 208 aktualisiert, wenn ein Knoten (z. B. Knoten A) den Server 110 informiert, dass eine Verknüpfung zwischen dem Knoten und einem anderen Knoten (z. B. Knoten B) ausgefallen ist. So kann zum Beispiel die Verknüpfung zwischen den Knoten A und B zu einem bestimmten Zeitpunkt funktioniert haben, und der Server 110 kann die Verknüpfung im Netzwerkmodell gespeichert haben. Nach Empfang einer Anforderung einer Datei, die auf dem Server 110 gespeichert ist, von Knoten A, kann der Server 110 das Netzwerkmodell verwenden, um zu ermitteln, dass die angeforderte Datei lokal am Knoten B zwischengespeichert ist. Um die Verwendung der Fernverbindung zwischen Server 110 und dem Fernnetzwerk 101 zu verringern, kann Server 110 den Knoten A anweisen, die angeforderte Datei von Knoten B abzurufen. Anschließend, wenn Knoten A versucht, Knoten B zu kontaktieren, um die Datei abzurufen, kann die Verknüpfung zwischen den Knoten A und B ausgefallen sein. In diesem Fall kann Knoten A den Server 110 informieren, dass die Verknüpfung ausgefallen ist und der Server 110 kann das Netzwerkmodell aktualisieren, um die defekte Verknüpfung wiederzugeben.
-
In einigen Ausführungen versendet der Server 110 regelmäßig diese Nachrichten, um seine Kenntnisse der Netzwerktopologie zu aktualisieren. Die Häufigkeit, mit der diese Nachrichten an die Knoten im Fernnetzwerk 101 gesendet werden, können auf dem Gerätetyp an einem bestimmten Knoten basieren und einer voraussichtlichen Häufigkeit, mit der sich die Verbindung des Geräts zum Fernnetzwerk 101 ändern kann. So kann beispielsweise erwartet werden, dass Desktop-Computer im Allgemeinen typischerweise immer mit dem Fernnetzwerk 101 verbunden sind, während Mobilgeräte wie Telefone oder Tablets Verbindungen zu unterschiedlichen Netzwerken haben, die im Verlauf der Zeit wechseln. In einem weiteren Beispiel kann die Häufigkeit, mit der diese Aktualisierungsnachrichten an die Knoten gesendet werden, auf der Netzwerkkapazität basieren.
-
Insbesondere da Desktop-Computer im Allgemeinen feststehende Verbindungen zu einem Netzwerk haben, kann der Server 110 so konfiguriert sein, dass er nur einmal eine Anforderung oder nur eine begrenzte Anzahl von Anforderungen an einen Desktop-Computer sendet. Die vom Server 110 an Knoten A übermittelte Nachricht kann eine Anforderung an Knoten A beinhalten, mit einem Gerätetyp zu antworten, der Knoten A zugewiesen ist. Ist Knoten A einem Desktop-Computer zugewiesen, kann der Server 110 nur einmal oder eine geringe Anzahl von Malen eine bestimmte Anforderung an Knoten A übermitteln. Alternativ, falls Knoten A einem Mobilgerät zugewiesen ist, kann der Server 110 regelmäßig Anforderungen an Knoten A übermitteln, seine Netzwerkverbindungen zu aktualisieren. Auf diese Weise kann der Gerätetyp an jedem Knoten sich auf die Häufigkeit auswirken, mit der Server 110 Aktualisierungen zu den Netzwerkverbindungen des Geräts anfordert.
-
In einigen Ausführungsformen können die Knoten so konfiguriert sein, dass sie aktiv Nachrichten an den Server 110 senden, wenn sich Veränderungen in ihren jeweiligen Netzwerkverbindungen ergeben, anstatt dass der Server 110 regelmäßig Nachrichten an unterschiedliche Knoten im Fernnetzwerk 101 zur Aktualisierung seiner Kenntnisse der Netzwerktopologie sendet. In einem Beispiel können Mobilgeräte wie etwa Smartphones den Server 110 aktiv informieren, wenn das Gerät mit einem WLAN oder einem Mobilfunknetz verbunden ist und den Server 110 über alle Adressänderungen des Geräts informieren.
-
Im Allgemeinen kann sich der Server 110 an einem vom Fernnetzwerk 101 entfernt liegenden Standort befinden, jedoch kann, wie oben beschrieben, der Server 110 Teil eines Datentausch- und Hosting-Systems sein, das Dateien speichert, auf die Geräte im Fernnetzwerk 101 zugreifen. Obwohl der Server 110 vom Fernnetzwerk 101 entfernt ist, verfügt der Server 110 über eine große Menge an Informationen über die Geräte, die im Fernnetzwerk 101 miteinander verbunden sind, und über die Dateien, auf die die Geräte im Fernnetzwerk 101 gemeinsam zugreifen. In einem Beispiel kann der Server 110 Informationen von zwei Geräten im Fernnetzwerk 101 (z. B. an den Knoten A und B) empfangen, die angeben, dass jedes Gerät derselben bestimmten Organisation zugewiesen ist, wie ein Unternehmen oder eine Schule. Nachdem der Server 110 die Information empfangen hat, dass beide Geräte derselben Organisation zugewiesen sind, kann er anfordern, dass die Geräte versuchen, miteinander zu kommunizieren.
-
Die Beschreibung oben bezüglich 2 ist relevant für die Beschaffung von Informationen über ein Fernnetzwerk und den Aufbau eines Modells dieses Fernnetzwerks und seinen Verbindungen. Die Beschreibung oben bezüglich 3 und 4 beinhaltet Beispielmöglichkeiten, wie der Server 110 diese Informationen über ein Fernnetzwerk nutzen kann, um effiziente Datenaustausch- und Filehosting-Dienste anzubieten.
-
3 ist ein Ablaufdiagramm eines darstellenden Verfahrens 300 für einen Server zur Interaktion mit einem Knoten in einem Fernnetzwerk (wie Knoten A im Fernnetzwerk 101). Das Verfahren 300 beinhaltet die Schritte, die den Empfang einer Anforderung von einem ersten Knoten in einem Netzwerk auf Zugriff auf eine auf dem Server gespeicherte Datei (Schritt 302) und das Ermitteln, ob die Datei auf einem zweiten Knoten im Netzwerk gespeichert ist (Entscheidungsblock 304) beinhalten. Ist dies nicht der Fall, liefert der Server die Datei an den ersten Knoten (Schritt 306). Andernfalls wird ermittelt, ob es mehrere Knoten gibt, an denen die Datei gespeichert ist (Entscheidungsblock 308). Ist dies nicht der Fall, weist der Server den ersten Knoten an, die Datei vom zweiten Knoten abzurufen (Schritt 310). Andernfalls wählt der Server basierend auf der Netzwerktopologie einen Knoten aus dem Satz mehrere Knoten aus, auf denen die Datei gespeichert ist (Schritt 312) und weist den ersten Knoten an, die Datei vom ausgewählten Knoten abzurufen (Schritt 314).
-
In Schritt 302 empfängt der Server 110 eine Anforderung von einem ersten Knoten (z. B. Knoten A) im Fernnetzwerk 101 auf Zugriff auf eine auf dem Server 110 gespeicherte Datei. Insbesondere kann der Server 110 einem webbasierten Datenaustausch- und Speichersystem entsprechen, das Cloudspeicher für die Speicherung von Benutzerdateien verwendet. Der Benutzer an Knoten A kann eine Anforderung an den Server 110 auf Zugang zu den im Cloudspeicher gespeicherten Benutzerdateien übermitteln.
-
Im Entscheidungsblock 304 ermittelt der Server 110, ob die in Schritt 302 angeforderte Datei bereits lokal an einem anderen Knoten in demselben Netzwerk 101 wie der anfordernde Knoten gespeichert ist. Insbesondere kann der Server 110 nachverfolgen, welche Dateien lokal auf den Geräten an den unterschiedlichen Knoten zwischengespeichert sind. So kann der Benutzer an Knoten A beispielsweise bereits zuvor an Knoten B auf die angeforderte Datei zugegriffen haben, und das Gerät an Knoten B kann eine lokale Version der angeforderten Datei in seinem Speicher zwischengespeichert haben. In diesem Fall kann der Server 110 Daten haben, die anzeigen, dass Knoten B eine lokale Version der angeforderten Datei hat. Sollte der Server 110 jedoch ermitteln, dass kein anderer Knoten im Fernnetzwerk 101 eine lokale Version der angeforderten Datei hat, fährt das Verfahren 300 mit Schritt 306 fort, in dem der Server die angeforderte Datei an den ersten Knoten A liefert.
-
Andernfalls, sollte der Server 110 ermitteln, dass mindestens ein Knoten eine lokale Version der angeforderten Datei zwischengespeichert hat, ermittelt der Server 110 in Entscheidungsblock 308, ob mehrere Knoten vorhanden sind, die die Datei speichern. Hat nur ein einziger Knoten eine lokale Version der angeforderten Datei zwischengespeichert, fährt das Verfahren 300 mit Schritt 310 fort, in dem der Server den ersten Knoten (z. B. Knoten A) anweist, die Datei von dem einzigen Knoten abzurufen, der die lokale Version speichert (z. B. Knoten B).
-
Ansonsten, wenn mehrere Knoten vorhanden sind, die jeweils die lokale Version der angeforderten Datei speichern, wählt der Server 110 basierend auf der Topologie des Fernnetzwerks 101 in Schritt 312 einen der Knoten aus. So kann beispielsweise der ausgewählte Knoten der Knoten sein, der die kürzeste Verzögerung zum ersten Knoten A hat, der Knoten mit der zuverlässigsten Verknüpfung zum ersten Knoten A, der Knoten mit der stärksten Konnektivität zu allen Knoten im Fernnetzwerk 101 oder eine beliebige geeignete Kombination dieser Faktoren. Nach Auswahl eines geeigneten Knotens in Schritt 312, weist der Server in Schritt 314 den ersten Knoten an, die Datei vom ausgewählten Knoten abzurufen.
-
Ohne die Systeme und Verfahren der vorliegenden Offenbarung hat der Server 110 möglicherweise keinerlei Kenntnis der Topologie von Netzwerk 101 und kann demzufolge nicht ermitteln, ob die Knoten in Netzwerk 101 in der Lage sind, miteinander zu kommunizieren. Ohne diese Informationen müsste der erste Knoten A, falls er Zugang zu einer Datei angefordert hat, die Datei vom Server 110 abrufen. Dies ist möglicherweise wenig wünschenswert, falls die Verbindung zwischen dem ersten Knoten A und dem Server 110 teuer, unzuverlässig oder langsam ist. Die Verbindung zwischen dem ersten Knoten A und dem Server 110 kann beispielsweise über ein Mobilfunknetz laufen, über die Datenübermittlungen kostspielig und zeitaufwändig sind. Sollte der Server 110 jedoch Informationen zur Topologie des Netzwerks 101 haben und welche Knoten über lokal zwischengespeicherte Versionen welcher Dateien verfügen, kann der Server 110 einen anfordernden Knoten beauftragen, auf die lokal zwischengespeicherten Versionen einer Datai über die lokalen Netzwerkverbindungen (z. B. WLAN) zuzugreifen, anstatt die Verbindung zwischen dem ersten Knoten und dem Server 110 zu benutzen. Im Allgemeinen können diese lokalen Netzwerkverbindungen günstiger, zuverlässiger und schneller sein als die Verbindung zwischen dem ersten Knoten und dem Server 110. Auf diese Weise können die Systeme und Verfahren der vorliegenden Offenbarung Datenübertragungsraten und Zeit einsparen, indem sie es Geräten ermöglichen, lokal miteinander zu kommunizieren anstatt Fernnetzwerkverbindungen zu verwenden. Dies ist von besonderer Bedeutung in bestimmten geographischen Gegenden, in denen Internetverbindungen langsam und lokale Netzwerke bedeutend zuverlässiger und schneller sind.
-
4 ist ein Ablaufdiagramm eines erläuternden Verfahrens 400 für einen Server, Aktionen von einem Gerät an einem Knoten in einem Fernnetzwerk (wie Knoten A im Fernnetzwerk 101) vorherzusehen. Das Verfahren 400 beinhaltet die Schritte, ein Muster der Netzwerkkonnektivität für ein erstes Gerät (z. B. ein Mobilgerät wie ein Telefon an Knoten A, Schritt 402) zu erkennen, eine oder mehr vorhergesagte Dateien zu ermitteln, auf die über das erste Gerät zugegriffen wird (Schritt 404), und die ermittelte oder die ermittelten Dateien auf einem zweiten Gerät (z. B. einem Computer an Knoten B. Schritt 406) zwischenzuspeichern. Wenn vom ersten Gerät eine Anforderung auf Zugriff auf eine der einen oder mehr zwischengespeicherten Dateien empfangen wird (Entscheidungsblock 408), weist der Server das erste Gerät an, die angeforderte Datei vom zweiten Gerät abzurufen (Schritt 410).
-
In Schritt 402 erkennt der Server 110 ein Muster der Netzwerkkonnektivität für ein erstes Gerät, wie ein Telefon an Knoten A im Fernnetzwerk 101. Das Muster der Netzwerkkonnektivät kann ein temporäres Muster sein, so dass z. B. der Server 110 erkennt, dass ein erstes Gerät zu bestimmten Zeiten am Tag oder in der Woche mit dem Fernnetzwerk 101 verbunden und in anderen Zeiträumen nicht verbunden ist. In einem Beispiel ist das erste Gerät ein Mobilgerät, wie etwa ein Telefon, das mit dem Benutzer während der Geschäftszeiten zum Arbeitsplatz des Benutzers reist. Das Telefon kann sich am Arbeitsplatz des Benutzers mit einem Netzwerk verbinden, während der Benutzer arbeitet. Zusätzlich hat der Benutzer möglicherweise einen Desktop-Computer, den er am Arbeitsplatz zurücklässt und der immer mit dem Netzwerk am Arbeitsplatz verbunden ist. Das Telefon kann ein Gerät an Knoten A sein, und der Desktop-Computer am Arbeitsplatz kann ein Gerät an Knoten B sein. Der Server 110 kann feststellen, dass das Telefon (z. B. Knoten A) sich meist während der Geschäftszeiten am Arbeitsplatz befindet und mit dem Netzwerk am Arbeitsplatz (z. B. das Fernnetzwerk 101) verbunden ist.
-
In Schritt 404 ermittelt der Server 110 eine oder mehr Dateien, auf die voraussichtlich über das erste Gerät zugegriffen wird. Wie oben beschrieben, kann der Server 110 Teil eines Webaustausch- und Filehosting-Systems sein, das Benutzerdateien auf dem Server 110 speichert und, nach Benutzer-Authentifizierung am ersten Gerät, Zugang zu Benutzerdateien für das erste Gerät bereitstellt. In einem Beispiel kann der Benutzer über seinen Heimcomputer oder einem anderen Gerät nachts auf eine bestimmte Datei zugreifen, die auf dem Server 110 gespeichert ist. Basierend auf der Information, dass der Benutzer auf die bestimmte Datei zugegriffen hat, und auf dem in Schritt 402 erkannten Muster, kann der Server 110 vorhersagen, dass der Benutzer auf die gleiche Datei am nächsten Tag am Arbeitsplatz des Benutzers zugreifen möchte.
-
In Schritt 406 werden die ein oder mehr in Schritt 404 ermittelten Dateien an einem zweiten Knoten (z. B. Knoten B) im Fernnetzwerk 101 zwischengespeichert. Um beim oben beschriebenen Beispiel zu bleiben, der zweite Knoten B kann der Bürocomputer des Benutzers an dessen Arbeitsplatz sein, und die eine oder mehrere Dateien sind auf dem Bürocomputer des Benutzers zwischengespeichert. Auf diese Weise ist der Server 110 so konfiguriert, dass er vorhersieht, auf welche Dateien der Benutzer zugreifen möchte, wenn der Benutzer an seinem Arbeitsplatz ist und speichert diese Dateien auf dem Bürocomputer des Benutzers zwischen, sodass der Benutzer umgehend auf diese Dateien zugreifen kann, ohne warten zu müssen, bis die Dateien vom Server 110 heruntergeladen wurden. Im Allgemeinen verfügen Bürocomputer über eine große Menge verfügbaren Speicherplatz und schnellen Netzwerkzugang. Der Server 110 kann erkennen, dass das Gerät am zweiten Knoten B ein Computer ist und dementsprechend eine größere Menge an Dateien auf dem Gerät zwischenspeichern als wenn das Gerät ein Gerät mit begrenztem Speichervolumen wäre, wie ein Telefon oder ein Tablet. Wäre das Gerät kleiner, wie ein Telefon oder ein Tablet, müsste der Server 110 aufgrund des begrenzten Speicherplatzes und der langsameren Verbindungsgeschwindigkeiten etwas sorgfältiger auswählen, was auf dem Gerät zwischengespeichert werden kann oder sollte.
-
Im Entscheidungsblock 408, empfängt der Server 110 vom ersten Gerät eine Anforderung auf Zugriff auf eine der in Schritt 404 festgestellten einen oder mehreren Dateien. Um beim oben beschriebenen Beispiel zu bleiben, kann der Benutzer Zugriff auf die Datei über sein Telefon (z. B. Knoten A) anfordern. Anschließend, in Schritt 410, weist der Server 110 das erste Gerät (z. B. das Telefon an Knoten A) an, die angeforderte Datei vom zweiten Gerät (z. B. dem Bürocomputer an Knoten B) abzurufen. Da die angeforderte Datei bereits lokal auf dem Bürocomputer des Benutzers zwischengespeichert wurde und das Telefon des Benutzers und der Bürocomputer des Benutzers mit dem selben Fernnetzwerk 101 verbunden sind, kann das Telefon die Datei vom Bürocomputer über einen schnellere Verbindung abrufen, als wenn die Datei vom Server 110 an das Fernnetzwerk 101 übermittelt werden würde.
-
In einigen Ausführungsformen, werden die Schritte, beschrieben in Bezug auf 4 auf eine Umgebung angewendet, in der mehrere Benutzer auf die gleiche Datei oder Dateien zugreifen, die typischerweise auf dem Server 110 gespeichert sind. Ohne das Netzwerkmodell der Topologie von Fernnetzwerk 101 müsste eine Kopie der geteilten Datei lokal auf jedem Computer der Benutzer gespeichert werden. Da der Server 110 jedoch Kenntnisse der Topologie von Fernnetzwerk 101 besitzt, kann der Server 110 einen oder mehr bestimmte Knoten im Fernnetzwerk 101 auswählen, an denen die geteilte Datei lokal zwischengespeichert wird. Der Server 110 kann dann andere Knoten im Fernnetzwerk 101 anweisen, die Datei vom Knoten, an dem die Datei zwischengespeichert ist, abzurufen. Auf diese Weise spart das hierin beschriebene Werkzeug zum Erkennen von Fernnetzwerktopologien Speicherkosten, indem es die Speicherung einer einzelnen Kopie einer Datei an einem Knoten im Netzwerk ermöglicht, anstatt dass an jedem Knoten eine Kopie der Datei gespeichert werden muss. Während das Beispiel beschrieben im Bezug auf 4 sich in einer Arbeitsplatzumgebung befindet, versteht jemand mit durchschnittlichen Fähigkeiten auf diesem Gebiet, dass die hierin beschriebenen Systeme und Verfahren sich im Allgemeinen auf jede Umgebung anwenden lassen, in denen mehrere Benutzer, die mit dem gleichen Netzwerk verbunden sind, auf die gleiche Datei zugreifen möchten.
-
5 ist ein Ablaufdiagramm eines erläuternden Verfahrens 500 für einen Server zur Kommunikation mit einem Knoten in einem Fernnetzwerk (wie Knoten A im Fernnetzwerk 101). Das Verfahren 500 beinhaltet die Schritte, in denen vom Server 110 zum ersten Knoten A eine Anforderung an den ersten Knoten A gesendet wird, eine Kommunikation an den zweiten Knoten B im Fernnetzwerk 101 zu senden, wobei der Server 110 sich außerhalb des Fernnetzwerks 101 befindet und die Anforderung eine erste Adresse des ersten Knotens A und eine zweite Adresse des zweiten Knotens B enthält (Schritt 502) und der Server vom ersten Knoten A eine Angabe empfängt, ob die Kommunikation mit dem zweiten Knoten B erfolgreich ist.
-
Im Schritt 502 übermittelt der Server 110 zum ersten Knoten A eine Anforderung an den ersten Knoten A, eine Kommunikation an den zweiten Knoten B im Fernnetzwerk 101 zu senden, wobei der Server 110 sich außerhalb des Fernnetzwerks 101 befindet und die Anforderung eine erste Adresse des ersten Knotens A und eine zweite Adresse des zweiten Knotens B beinhaltet.
-
In Schritt 504 empfängt der Server 110 vom ersten Knoten A eine Angabe, ob die Kommunikation mit dem zweiten Knoten B erfolgreich ist. Zusätzlich zu der Angabe, ob die Kommunikation erfolgreich war, kann der Server 110 weitere Informationen über die Kommunikationsverknüpfung zwischen den Knoten A und B empfangen. So kann die Verknüpfungsverzögerung beispielsweise Informationen darüber beinhalten, ob die Verknüpfung asymmetrisch ist, wie oben beschrieben in Bezug auf 2. Insbesondere kann die Übermittlung auf der Verknüpfung in eine Richtung (z. B. von Knoten A nach Knoten B) schneller sein, als die Übermittlung auf der Verknüpfung in die entgegengesetzte Richtung (z. B. von Knoten B nach Knoten A). Diese Verzögerungen können durch eine Differenz zwischen den Zeitstempeln berechnet werden.
-
In einigen Ausführungsformen ist Server 110 Teil eines Dateiaustauschsystems. In einem Beispiel kann ein Benutzer an einem ersten Knoten A des Fernnetzwerks 101 Zugriff auf eine Datei anfordern, die außerhalb in einem Cloudspeicher auf dem Server gespeichert ist. Der Server 110 kann Informationen bezüglich der Topologie des Fernnetzwerks 101 und Daten, die anzeigen, dass mindestens ein anderer Knoten (z. B. der zweite Knoten B) des Fernnetzwerks eine Version der angeforderten Datei lokal zwischengespeichert hat. In diesem Fall kann der Server 110 den ersten Knoten A anweisen, die Datei vom zweiten Knoten B anzufordern, an dem die Datei zwischengespeichert ist. Auf diese Weise wird die Fernverbindung zwischen dem Server 110 und dem ersten Knoten A nicht zur Übermittlung der Datei verwendet, stattdessen kann die Datei über eine zuverlässige, lokale und schnelle Verbindung innerhalb des Fernnetzwerks 101 an den ersten Knoten A übermittelt werden.
-
In einigen Ausführungsformen ist der Server 110 so konfiguriert, dass er vorhersieht, dass ein Benutzer Zugriff auf eine bestimmte Datei auf dem Server 110 anfordern kann und die Topologie des Fernnetzwerks 101 nutzen kann, um die Datei auf einem ausgewählten Knoten im Fernnetzwerk 101 vorbeugend zwischenzuspeichern. Wie detaillierter beschrieben im Bezug auf 4, kann der Server 110 ein temporäres Muster der Netzwerkkonnektivität für ein erstes Gerät am ersten Knoten A ermitteln. Dieses temporäre Muster kann eine Angabe beinhalten, dass der erste Knoten regelmäßig in das Fernnetzwerk 101 eintritt und es wieder verlässt, wie zu bestimmten Zeitpunkten am Tag bzw. in der Woche. Der Server 110 kann auch eine auf dem Server 110 gespeicherte Datei ermitteln, auf die zuvor vom ersten Knoten A zugegriffen wurde, wie eine Datei, auf die der Benutzer über den ersten Knoten A zugegriffen hat, während er vom Fernnetzwerk 101 entfernt war. Da es wahrscheinlich ist, dass ein Benutzer auf eine Datei zugreifen möchte, auf die kürzlich zugegriffen wurde, kann der Server 110 voraussehen, dass der erste Knoten A Zugriff auf die Datei anfordern wird, während der erste Knoten A mit dem Fernnetzwerk 101 verbunden ist. Als Reaktion auf das Erkennen dieses voraussichtlichen Ereignisses, kann der Server 110 die Datei vorsorglich an einem anderen Gerät am zweiten Knoten B im Fernnetzwerk 101 zwischenspeichern und den ersten Knoten A anweisen, die Datei vom zweiten Knoten B anstatt vom Server 110 abzurufen.
-
In einigen Ausführungsformen ermittelt der Server 110, dass der zweite Knoten mehr Speicherkapazität hat, als der erste Knoten. Insbesondere kann der Server 110 während des Prozesses des Erkennens der Topologie von Fernnetzwerk 101, Informationen empfangen, die den Gerätetyp an jedem Knoten im Fernnetzwerk 101 anzeigen. Geräte, wie Computer oder ähnliche Benutzergeräte können über größere Speicherkapazitäten verfügen, als andere Gerätetypen, wie Mobilgeräte, etwa Telefon oder Tablets. Wie oben beschrieben, kann der Server 110 die Datei (die voraussichtlich vom ersten Knoten A angefordert werden wird) vorausschauend an einem anderen Gerät am zweiten Knoten B zwischenspeichern, wenn der Server 110 ermittelt, dass das Gerät am zweiten Knoten B eine größere Speicherkapazität hat.
-
6 ist ein Blockdiagramm eines Computers, wie die Komponenten des Systems in 1 zu implementieren und einen beliebigen der hierin beschriebenen Abläufe durchzuführen. Jede der Komponenten dieser Systeme kann auf einem oder mehreren Computern 600 implementiert werden. In bestimmten Fällen kann eine Pluralität der Komponenten dieser Systeme in einem Computer 600 enthalten sein. Bei bestimmten Umsetzungen können eine Komponente und ein Speichergerät in mehreren Computern 600 implementiert werden.
-
Der Computer 600 umfasst mindestens eine Kommunikationsschnittstelle, ein Eingangs-/Ausgangssteuergerät 610, Systemspeicher und ein oder mehrere Datenspeichergeräte. Der Systemspeicher beinhaltet zumindest einen Direktzugriffsspeicher (RAM 602) und zumindest einen Nur-Lese-Speicher (ROM 1004). All diese Elemente kommunizieren mit einer zentralen Verarbeitungseinheit (CPU 606), um den Betrieb des Computers 600 zu vereinfachen. Der Computer 600 kann auf diverse Weisen konfiguriert werden. Der Computer 600 kann z. B. ein konventioneller Standalone-Computer sein, oder als Alternative, können die Funktionen des Computers 600 über mehrere Computersysteme und Architekturen verteilt werden. In 6, der Computer 600 ist über ein Netzwerk oder ein lokales Netzwerk mit anderen Servern oder Systemen verbunden.
-
Der Computer 600 kann mit einer verteilten Architektur konfiguriert sein, worin Datenbanken und Prozessoren in separaten Einheiten oder Stellen angeordnet sind. Manche Einheiten führen primäre Verarbeitungsfunktionen aus und enthalten mindestens ein allgemeines Steuergerät oder einen Prozessor und einen Systemspeicher. Bei verteilten Architekturumsetzungen müssen alle Einheiten über die Kommunikationsschnittstelle 608 an einen Kommunikationsknotenpunkt oder -port (nicht gezeigt) angeschlossen sein, der die primäre Kommunikationsverknüpfung mit anderen Servern, Client- oder Benutzercomputern und anderen zugehörigen Geräten darstellt. Der Kommunikationsknotenpunkt oder -port kann selbst über eine minimale Verarbeitungskapazität verfügen und dient primär als Kommunikationsrouter. Eine Reihe von Kommunikationsprotokollen können ein Teil des Systems darstellen, einschließlich, jedoch nicht ausschließlich: Ethernet, SAP, SASTM, ATP, BLUETOOTHTM, GSM und TCP/IP.
-
Der CPU 606 umfasst einen Prozessor, wie z. B. einen oder mehrere herkömmliche Mikroprozessoren und einen oder mehrere zusätzliche Co-Prozessoren, wie Mathematik-Co-Prozessoren zum Erleichtern des Arbeitsanfalls für den CPU 606. Der CPU 606 kommuniziert mit der Kommunikationsschnittstelle 608 und dem Eingangs-/Ausgangssteuergerät 610, über das der CPU 606 mit anderen Geräten, wie anderen Servern, Benutzerstationen und Geräten kommunizieren kann. Die Kommunikationsschnittstelleneinheit 608 und der Eingangs-/Ausgangs-Controller 610, können mehrere Kommunikationskanäle für simultane Kommunikation mit beispielsweise anderen Prozessoren, Servern, oder Client-Terminals beinhalten.
-
Der CPU 606 kommuniziert ebenfalls mit dem Datenspeichergerät. Das Datenspeichergerät kann eine geeignete Kombination aus magnetischem, optischem oder Halbleiterspeicher umfassen und kann z. B. RAM 602, ROM 604, einen Flashdrive, oder ein optisches Laufwerk, wie ein CD-Laufwerk, oder eine Festplatte enthalten. Die Zentraleinheit 606 und das Datenspeichergerät können sich beispielsweise ausschließlich in einem einzigen Computer oder einem anderen Computergerät befinden, oder sie können über ein Kommunikationsmedium, wie beispielsweise einen USB-Port, ein serielles Anschlusskabel, ein Koaxialkabel, ein Ethernetkabel, eine Telefonleitung, einen Funkfrequenz-Transceiver oder über ein ähnliches drahtloses oder verdrahtetes Medium oder eine Kombination der obigen miteinander verbunden sein. So kann der CPU 606 z. B. über die Kommunikationsschnittstelle 608 mit dem Datenspeichergerät verbunden sein. Der CPU 606 kann zur Durchführung einer oder mehrerer bestimmter Verarbeitungsfunktionen konfiguriert werden.
-
Auf dem Datenspeichergerät können z. B. (i) ein Betriebssystem 612 für den Computer 600; (ii) eine oder mehrere Anwendungen 614 (z. B. Computerprogrammcode oder ein Computerprogrammprodukt) gespeichert werden, die im Einklang mit den hier beschriebenen Systemen und Verfahren den CPU 606 leiten, und insbesondere im Einklang mit den hier im Einzelnen beschriebenen Prozessen bzgl. CPU 606; oder (iii) Datenbank(en) 616, die zum Speichern von Informationen angepasst sind, die verwendet werden können, um vom Programm benötigte Informationen zu speichern.
-
Das Betriebssystem 612 und die Anwendungen 614 können z. B. komprimiert, unkompiliert und verschlüsselt gespeichert werden und können einen Computerprogrammcode beinhalten. Die Anweisungen des Programms können von einem computerlesbaren Medium, außer dem Datenspeichergerät, in den Hauptspeicher geschrieben werden, wie z. B. vom ROM 604 oder vom RAM 602. Während die Durchführung von Sequenzen von Anweisungen im Programm dazu führt, dass der CPU 606 die hier beschriebenen Prozessschritte durchführt, können auch fest verdrahtete Kreise anstatt oder in Kombination mit Softwareanweisungen für die Umsetzung des Prozesses der vorliegenden Offenlegung verwendet werden. Daher sind die hier beschriebenen Systeme und Methoden nicht auf eine spezifische Kombination aus Hardware und Software beschränkt.
-
Es kann ein geeigneter Computerprogrammcode gestellt werden, um eine oder mehrere Funktionen bzgl. eines oder mehreren beliebigen Prozessen, die hierin beschrieben sind, durchzuführen. Das Programm kann auch Programmelemente, wie beispielsweise ein Betriebssystem 612, ein Datenbank-Verwaltungssystem und „Gerätetreiber“ beinhalten, die dem Prozessor erlauben mit Computer-Peripheriegeräten (z. B. eine Videoanzeige, eine Tastatur, eine Computermaus usw.) über den Eingangs-/Ausgangs-Controller 610 zu wechselwirken.
-
Der Begriff „computerlesbares Medium“, wie er hier verwendet wird, bezieht sich auf ein nicht-vorübergehendes Medium, das Ausführungsanweisungen an den Prozessor des Computers 600 bereitstellt, bzw. an der Übermittlung teilnimmt (oder an einem beliebigen Prozessor eines hier beschriebenen Geräts). Dieses Medium kann viele Formen annehmen, einschließlich unter anderem nichtflüchtige und flüchtige Medien. Zu den nichtflüchtigen Medien gehören z. B. optische, magnetische oder optomagnetische Disks oder integrierte Speicherschaltung, wie Flash-Speicher. Zu den flüchtigen Medien gehören dynamisches RAM (DRAM), welches gewöhnlich als Hauptspeicher dient. Allgemeine Formen der computerlesbaren Medien beinhalten z. B. Disketten, Floppy Disks, flexible Disks, Festplatten, Magnetbänder, beliebige andere magnetische Datenträger, CD-ROMs, DVDs, beliebige andere optische Medien, Lochkarten, Lochstreifen, alle anderen physischen Medien mit Lochmustern, RAM-, PROM-, EPROM- oder EEPROM-Speicher (elektronisch löschbarer, programmierbarer ROM), Flash-EEPROM, beliebige andere Speicherchips oder -kassetten oder jedes andere Medium, von dem ein Computer lesen kann.
-
Diverse Formen von computerlesbaren Medien können daran beteiligt sein, eine oder mehrere Sequenzen einer oder mehrerer Anweisungen an den CPU 606 (oder andere beliebige, hierin beschriebene Prozessoren oder Geräte) zur Ausführung getragen werden. So können die Anweisungen zum Beispiel zunächst auf einer magnetischen Disk eines Ferncomputers getragen werden (ohne Abbildung). Der Ferncomputer kann diese Anweisungen in seinen dynamischen Speicher laden und die Anweisungen anschließend über eine Ethernet-Verbindung, ein Kabel oder sogar über eine Telefonleitung mit Modem senden. Ein ortsnah an einem Computergerät angeordnetes Kommunikationsgerät 600 (z. B. ein Server) kann die Daten über die entsprechende Kommunikationsleitung empfangen und die Daten für den Prozessor auf einem Systembus ablegen. Der Systembus transportiert die Daten dann an den Hauptspeicher, von dem der Prozessor die Anweisungen anschließend abruft und ausführt. Die vom Hauptspeicher empfangenen Anweisungen können optional entweder vor oder nach der Ausführung durch den Prozessor gespeichert werden. Darüber hinaus können Anweisungen über einen Kommmunikationsport als elektrische, elektromagnetische oder optische Signale empfangen werden; dies sind Beispiele der drahtlosen Kommunikation oder Datenstreams, die diverse unterschiedliche Arten von Informationen übertragen.
-
Auch wenn verschiedene Ausführungsformen der vorliegenden Offenbarung hierin gezeigt und beschrieben wurden, wird dem Fachmann klar sein, dass diese Ausführungsformen lediglich als Beispiel dienen. Den Fachkräften werden zahlreiche Variationen, Abänderungen und Ersetzungen einfallen, ohne von der Veröffentlichung abzuweichen. Es sollte klar sein, dass diverse Alternativen zu den hier beschriebenen Ausführungen in der Praxis dieser Offenlegung angewandt werden können.