-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf die Bereitstellung eines
Peer-zu-Peer-Pfadoptimierers (PPO).
Ein solcher Optimierer kann verwendet werden, um Peer-zu-Peer-Netzwerknachrichten
zu untersuchen und diese dynamisch und transparent auf einen kostengünstigen
Pfad umzuleiten.
-
HINTERGRUND
DER ERFINDUNG
-
Der
Peer-zu-Peer-(P2P)-Netzwerkbetrieb hat sich als eine beliebte Form
des Austauschs von Daten, wie z. B. von Spielfilmen oder Musik,
zwischen Individuen unter Verwendung des Internets herausgebildet.
In einem P2P-Netzwerk
hat jeder Computer im Netzwerk die gleichen Zuständigkeiten wie jeder der anderen,
d. h. er ist ein "Gleichgestellter" (peer). Viele Variationen
von P2P-Netzwerken wurden erzeugt, wobei derzeit die am meisten
vorherrschenden sind: Napster, Kazaa und Gnutella. Die Verwendung
von P2P zum Übertragen großer Mengen
an Multimediadaten, wie z. B. Spielfilmen oder Musik, hat die auf
dem Internet übermittelte
Informationsmenge deutlich erhöht.
-
P2P
hat zu einem erhöhten
finanziellen Druck auf die Netzwerkdienstanbieter geführt. Ein
Netzwerkdienstanbieter ist eine Körperschaft, die eine Gruppe
von Computern oder Knoten pflegt, die ein Netzwerg bilden. Beispiele
von Netzwerken umfassen ein Netzwerk, das von einem Internetdienstanbieter
(ISP) kontrolliert wird, ein Unternehmensnetzwerk oder ein Universitätsnetzwerk,
sind jedoch nicht hierauf beschränkt.
-
Ein
Netzwerkdienstanbieter muss typischerweise für den Verkehr zu und von seinem
Netzwerk ein Entgeld bezahlen.
-
Bei
der gegebenen Popularität
des P2P-Netzwerkbetriebs ist es für irgendeinen Netzwerkdienstanbieter
schwierig, P2P-Verkehr zu blockieren. Dem Netzwerkdienstanbieter
bleiben wenige Wahlmöglichkeiten, nämlich:
- a) Dienste mit abgestufter Bandbreite, und
die Hoffnung, dass die Benutzer für zusätzliche Bandbreite bezahlen
werden, oder
- b) Beschneiden der für
P2P-Anwendungen verfügbaren
Bandbreite, was in der Benutzerbasis Unzufriedenheit hervorrufen
kann.
-
Es
besteht daher Bedarf an einem alternativen Lösungsansatz, der einem Netzwerkdienstanbieter
erlaubt, P2P-Verkehr durch sein Netzwerk effektiv zu beschränken, während die
bestehende Leistungsfähigkeit für den Benutzer
aufrechterhalten oder verbessert wird. Die vorliegende Erfindung
zielt auf diesen Bedarf.
-
WO
02/15035 offenbart eine Anordnung zum intelligenten Umleiten einer
Suche eines Peer-zu-Peer-Netzwerks, in der ein Benutzer, der eine
Suche durchführt,
beim Auswählen
eines Hosts unterstützt
wird, der wahrscheinlich schnelle, bevorzugte Ergebnisse für den Benutzer
zurückgibt.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Die
vorliegende Erfindung zielt auf einen Peer-zu-Peer-Optimierer, wie
in Anspruch 1 ausgeführt
ist. Der Optimierer untersucht Peer-zu-Peer-Nachrichten zwischen Knoten innerhalb
von Netzwerken, die mit dem Optimierer verbunden sind, zum Zweck
der Optimierung des Verhaltens auf jedem der Netzwerke, und insbesondere
zum Zweck der Bestimmung eines kostengünstigen Pfades für jede Peer-zu-Peer-Nachricht.
-
Die
vorliegende Erfindung zielt ferner auf einen entsprechenden Prozess
und ein entsprechendes computerlesbares Medium.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Für ein besseres
Verständnis
der vorliegenden Erfindung, und um deutlicher zu zeigen, wie diese
umgesetzt werden kann, wird im Folgenden lediglich beispielhaft
auf die beigefügten
Zeichnung Bezug genommen, in welchen:
-
1 ein
Blockdiagramm von Beispielnetzwerken ist, die für die Verbindung mit einem Peer-zu-Peer-Optimierer
der vorliegenden Erfindung geeignet sind;
-
2 ein
Blockdiagramm mehrerer Knoten ist, die mit einem PPO verbunden sind;
-
3 ein
Blockdiagramm eines ISP-Systems ist;
-
4 ein
Blockdiagramm eines zentralisierten Server-Netzwerks ist;
-
5 ein
Blockdiagramm eines zentralisierten Server-Netzwerks ist, das einen
PPO verwendet;
-
6 ein
Blockdiagramm eines dezentralisierten Server-Netzwerks ist;
-
7 ein
Blockdiagramm eines dezentralisierten P2P-Netzwerks ist, das einen
PPO verwendet;
-
8 ein
Blockdiagramm eines Hybrid-P2P-Netzwerks ist;
-
9 ein
Blockdiagramm eines Hybrid-P2P-Netzwerks ist, das einen PPO verwendet;
-
10 ein
Blockdiagramm eines PPO ist;
-
11 ein
logisches Flussdiagramm ist, das die Verarbeitung einer Ping-Nachricht zeigt;
-
12 ein
logisches Flussdiagramm ist, das die Verarbeitung einer Pong-Nachricht zeigt;
-
13 ein
logisches Flussdiagramm ist, das die Verarbeitung einer Anfragenachricht
zeigt;
-
14 ein
logisches Flussdiagramm ist, das die Verarbeitung einer Anfragetreffernachricht
zeigt; und
-
15 ein
logisches Flussdiagramm ist, das die Verarbeitung einer Verbindungsanforderung
zeigt.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
1 ist
ein Blockdiagramm von Netzwerken, die mit einem Peer-zu-Peer-Optimierer der vorliegenden
Erfindung verbunden sind. Der Peer-zu-Peer-Optimierer (PPO) 10 überwacht
den gesamten P2P-Verkehr zwischen mehreren Netzwerken 12.
Beispiele von Netzwerken 12 umfassen ein von einem ISP
kontrolliertes Netzwerk, ein Unternehmensnetzwerk oder ein Universitätsnetzwerk,
sind jedoch nicht hierauf beschränkt.
Die Netzwerke 12 wären
typischerweise über
das Internet mit dem PPO 10 verbunden, jedoch ist dies
keine Notwendigkeit für
die vorliegende Erfindung. Jedes beliebige Netzwerk 12,
das P2P-Verkehr bereitstellen oder anfordern kann, kann den PPO 10 nutzen.
-
Um
die Kosten des P2P-Verkehrs zu minimieren, nutzt das Netzwerk 12 den
PPO 10, um einen kostengünstigen Pfad für den Austausch
von P2P-Daten zwischen den Knoten 14 zu bestimmen. Ein
Knoten 14 ist ein beliebiger Computer, der P2P-Daten empfangen
oder senden kann.
-
In 2 ist
ein Blockdiagramm mehrerer Knoten gezeigt, die mit einem PPO 10 verbunden
sind. Jedes Netzwerk 12a und 12b enthält mehrere
Knoten 14. Für
jeden Knoten 14, der bekannt ist, pflegt der PPO 10 eine
Kostenklasse. Die Tabelle 1 zeigt die Kostenklasse für jeden
Knoten der 2.
-
-
Unter
der Annahme, dass eine P2P-Anfrage innerhalb eines einzigen Netzwerks,
wie z. B. 12a, bedient werden kann, befinden sich typischerweise
die kostengünstigsten
Pfade für
die P2P-Übertragung
innerhalb des Netzwerks 12a. Beispiele wären Verbindungen
zu den Knoten 14a und 14b. Dies muss jedoch nicht immer
der Fall sein. Zum Beispiel kann eine Anfrage zum Knoten 14d sehr
teuer sein, wenn der Knoten 14d, der die Daten enthält, sich
innerhalb eines Unternehmens-Intranets einen halben Erdumfang entfernt
befindet. In einem solchen Szenario wäre der Knoten 14f innerhalb
des Netzwerks 12b, der die benötigten Daten enthält, eine
kostengünstigere
Wahl.
-
Bei
der Bestimmung eines kostengünstigen
Pfades für
die Lieferung oder den Empfang von P2P-Daten kombiniert der PPO 10 die
Kostenklasse jedes Knotens am Endes eines möglichen Datenaustauschs. Diese
Kombination führt
zu einem Pfadkostenwert. Zum Beispiel kann eine Anfrage vom Knoten 14e nach
einer Datei auf dem Knoten 14a zu Pfadkosten von 155 führen. Dieses
Beispiel ist eines einer einfachen Addition der Kostenklasse von
zwei Knoten, um die Pfadkosten zu bestimmen. Der Erfinder beabsichtigt
nicht, die vorliegende Erfindung auf irgendeinen spezifischen Algorithmus
zum Erhalten von Pfadkosten zu beschränken. Zum Beispiel kann ein
Gewichtungsfaktor auf die Knoten mit einer hohen Kostenklasse angewendet
werden, um diese aus der Betrachtung bei der Berechnung von Pfadkosten
auszuschließen.
-
In 3 ist
ein Blockdiagramm eines ISP-Systems gezeigt. 3 zeigt,
wie ein Internetdienstanbieter (ISP) die vorliegende Erfindung nutzen
kann. Das Netzwerk 12a ist das von einem ISP gepflegte
Netzwerk. Das Netzwerk 12a ist mit mehreren Netzwerken 12b bis 12n über Verbindungsglieder 30b bis 30n verbunden. Typische
Netzwerke 12b bis 12n wären über das Internet zugänglich,
jedoch können
sie eine beliebige Form von Netzwerk sein, das Dateien für P2P-Nachrichtenaustausch
enthält.
Das Netzwerk 12a umfasst mehrere Knoten 14. P2P-Daten
werden zwischen den Knoten 14 innerhalb des Netzwerks 12a und
den Knoten innerhalb der Netzwerke 12b bis 12n ausgetauscht.
Ein Knoten 14 kann der Computer eines Heimbenutzers, ein Geschäftscomputer
oder ein Unternehmens-Server sein, der mit irgendeinem der Netzwerke 12a bis 12n verbunden
ist. Wie im aktuellen ISP-Beispiel der 3 gezeigt
ist, ist jeder Knoten 14 innerhalb des Netzwerks 12a mit
einem Kommunikationsmodul 20 verbunden, das dem Knoten 14 erlaubt,
mit dem Netzwerk 12a zu kommunizieren. Das Kommunikationsmodul 20 kann
ein Digital-Teilnehmerleitungs-Zugangsmultiplexer (DSLAM) sein,
der für
Telephonleitungsverbindungen verwendet wird. Das Kommunikationsmodul 20 kann
ferner ein Kabel-Modem-Endgerätesystem
(CMTS) sein, das für
Kabelanschlüsse
verwendet wird. Das Kommunikationsmodul 20 kann ferner
ein Modul sein, das Einwahlverbindungen, drahtlose Verbindungen
oder Faseroptikverbindungen akzeptiert. Das Wesentliche hierbei
ist, dass das Kommunikationsmodul 20 einen Knoten 14 mit
dem Netzwerk 12a verbindet. Ein Aggregator 22 sammelt
die Daten zu und von den Kommunikationsmodulen 20 und ist
zu diesem Zweck mit einem Verteilungsrouter 24 verbunden.
Der Verteilungsrouter 24 bestimmt, wohin eine Anfrage nach
einer Information innerhalb des Netzwerks 12a geleitet
werden soll. Der Verteilungsrouter 24 ist mit einem Kernrouter 26,
einem oder mehreren Cache-Servern 28 und einem oder mehreren
P2P-Pfadoptmierern (PPO) 10 verbunden. Der Kernrouter 26 ist
mit den Netzwerken 12b bis 12n typischerweise
mittels Vermittlungsträger-(IXC)-Verbindungen 30b bis 30n verbunden.
Ein IXC ist eine Telekommunikationsgesellschaft, wie z. B. AT&T. Ein Cache-Server 28 ist
eine Ablage von Informationen, die von den Netzwerken 12b bis 12n erhalten
werden und auf die von den Knoten 14 häufig zugegriffen wird. Um die
Kosten der dauernden Anforderung von Daten von den Netzwerken 12b bis 12n zu
vermeiden, kann das Netzwerk 12a häufig nachgefragte Informationen
in einem oder mehreren Cache-Speichern 28 speichern. Gewöhnlich wären dies
aktuelle Versionen von beliebten Web-Seiten, kann jedoch alle Formen
von Daten enthalten. Der Cache 28 kann auch gewöhnlich als
eine "Cache-Gruppe" oder ein "Cache-Server" bezeichnet werden.
-
Die
vorliegende Erfindung beruht auf dem PPO 10. Der PPO 10 dient
dazu, drei Hauptfunktionen bereitzustellen:
- 1)
Reorganisieren der mit dem PPO 10 verbundenen Netzwerke.
Dies wird erreicht durch Abfangen aller P2P-Nachrichten und den
Versuch, Knoten mit anderen Knoten in derselben Kostenklasse zu
verbinden. Dies erlaubt, die Netzwerke auf zwei Wegen zu reorganisieren:
- a) sie werden flacher, da Knoten mit Knoten unter der Kontrolle
eines PPO 10 verbunden werden, so dass ein Baum von Verbindungen
zwischen Knoten größtenteils
eine Tiefe von 1 aufweist; und
- b) der PPO 10 versucht, Knoten mit anderen Knoten innerhalb
eines Netzwerks zu verbinden, wobei ohne die Verwendung eines PPO 10 die
Verbindungen zufällig
wären und
ein Baum von Verbindungen zwischen Knoten eine unbegrenzte Tiefe
aufweisen kann.
- 2) Reduzieren des Netzwerkverkehrs. Dies wird bewerkstelligt,
indem Nachrichten nicht rundfunkartig ausgestrahlt werden, sondern
stattdessen dorthin gesendet werden, wo sie hingelangen müssen, oder
indem sie verworfen werden, wenn keine Notwendigkeit besteht, diese
weiterzusenden.
- 3) Umleiten von Verkehr auf einen kostengünstigen Pfad.
-
Jede
dieser Funktionen wird im Folgenden genauer beschrieben.
-
Obwohl
das Beispiel der 3 auf das Netzwerk eines ISP
angewendet wird, ist von den Erfindern nicht beabsichtigt, die Verwendung
der vorliegenden Erfindung auf ein ISP-Netzwerk zu beschränken. Jedes beliebige
Netzwerk, für
das eine Körperschaft
wünscht,
den P2P-Verkehr in einer kostengünstigen
Weise zu kontrollieren, kann die vorliegende Erfindung nutzen. Wie
oben beschrieben worden ist, wären
Beispiele ein Unternehmensnetzwerk oder ein Universitätsnetzwerk
oder irgendeine kommerzielle Verwendung eines großen Netzwerks,
wie z. B. in der Hotelindustrie.
-
Bevor
die Struktur des PPO 10 genauer beschrieben wird, wird
zuerst darauf Bezug genommen, wie er in einer Vielfalt von P2P-Modellen
genutzt werden kann.
-
In 4 ist
ein Blockdiagramm eines zentralisierten Server-Netzwerks allgemein
mit 40 bezeichnet. Das Netzwerk 40 ist ein Beispiel
eines P2P-Netzwerks
der ersten Generation, wie z. B. Napster. Napster ist ein Internet-Dienst, der ursprünglich entwickelt
wurde, um den Benutzern zu erlauben, MP3-Musikdateien auszutauschen.
Im Netzwerk 40 verbindet ein zentraler Server 42 mehrere
Knoten 14 über
Verbindungen 44. Die Verbindungen 44 wären typischerweise
Verbindungen über
das Internet. Ein Knoten 14 sendet eine Anfrage nach einer
Datei zum zentralen Server 42 über eine Verbindung 44.
Der zentrale Server 42 stellt eine Antwort über die
Verbindung 44 zur Verfügung,
die angibt, auf welchem Knoten 14 sich die angeforderte
Datei befindet. Der zentrale Server 42 enthält im wesentlichen
ein Verzeichnis aller Dateien, die für den Zugriff auf allen Knoten 14 verfügbar sind.
In Reaktion auf die Antwort richtet der anfragende Knoten 14 eine
Verbindung mit seinem Peer-Knoten 14 ein, der die Datei
enthält,
und fordert eine Kopie der Datei an, wie in der Übertragungsverbindung 46 gezeigt
ist.
-
Um
zu erläutern,
wie 4 die vorliegende Erfindung nutzen kann, wird
nun auf 5 Bezug genommen, in der ein
Blockdiagramm eines zentralisierten Server-Netzwerks, das einen
PPO nutzt, allgemein mit 50 bezeichnet ist. Im Netzwerk 50 untersucht
der PPO 10 die zu einem zentralen Server 42 gesendeten
Suchanfragen. Wenn der PPO 10 die angeforderte Datei kennt,
stellt er dem anfragenden einen kostengünstigen Pfad zu der Datei zur
Verfügung.
Wenn der PPO 10 die Datei nicht kennt, nutzt er Alternativen,
um den Anfragenden zu der Datei zu leiten. Diese Alternativen werden
später
genauer beschrieben. Bei der Bestimmung, zu welchem Knoten 14 die
Anfrage geleitet wird, nutzt der PPO 10 die Kostenklasseninformationen.
Kostenklasseninformationen für
einen Knoten würden
typischerweise durch Maße
bestimmt, wie z. B. die Geschwindigkeit der Verbindung zu den Knoten
(z. B. Bandbreite und Abstand) und die finanziellen Kosten der Nutzung
einer Verbindung zu den Knoten. Kostenklasseninformationen würden typischerweise
finanzielle Kosten zum Erhalten einer Datei von einem spezifischen
Knoten 14 wiedergeben. Ein Administrator der vorliegenden
Erfindung kann seine eigene Kostenklasse für einen Knoten 14 setzen,
oder der PPO 10 kann diese mittels Vorgabe setzen oder
kann diese dynamisch bestimmen. Unabhängig vom Verfahren der Erstellung
der Kostenklasse für einen
Knoten besteht das Wesentliche darin, dass jedem Knoten Kosten zugeordnet
sind und der PPO 10 diese Informationen nutzt, um einen
kostengünstigen
Pfad für
den Austausch von P2P-Daten bereitzustellen.
-
In 6 ist
ein Blockdiagramm eines dezentralisierten Server-Netzwerks allgemein
mit 60 bezeichnet. Das Netzwerk 60 nutzt ein verteiltes
Modell, bei dem jeder Knoten 14 gleich ist und es keinen
zentralen Server 42 wie beim Netzwerk 40 (4)
gibt. Das Netzwerk 60 kann als ein P2P-Netzwerk der zweiten
Generation betrachtet werden, wobei ein Beispiel hierfür Gnutella
wäre. Gnutella
stellt einen Dateitauschdienst für
viele Typen von Informationen zur Verfügung und ist nicht nur auf
den Austausch von Multimediadateien ausgerichtet. Jeder Knoten 14 versucht,
ständig
eine gewisse Anzahl von Verbindungen 44 zu anderen Knoten 14 aufrechtzuerhalten.
Anfragen nach Informationen werden mit einem Lebensdauer-Feld (TTL-Feld)
gesendet, welches dekrementiert wird, und dann von jedem Knoten 14 zu
allen anderen Knoten 14, mit denen er verbunden ist, weitergeleitet.
Wenn der TTL-Wert 0 erreicht, wird die Anfrage verworfen. Dieser
Typ von Netzwerk hat gezeigt, dass er signifikante Skalierungsprobleme
aufweist, da Anfragen nach Informationen die Netzwerkleistungsfähigkeit
beeinträchtigen.
Wie beim Netzwerk 40 wird dann, wenn eine angeforderte
Datei lokalisiert worden ist, eine direkte Verbindung zwischen zwei
Knoten hergestellt, um die angeforderte Datei zu übertragen, wie
durch die Übertragungsverbindung 46 gezeigt
ist.
-
Bei
der vorliegenden Erfindung ist die Topologie des Netzwerks 60 wie
in 7 gezeigt rekonfiguriert. 7 ist ein
Blockdiagramm eines dezentralisierten P2P-Netzwerks, das den PPO 10 verwendet,
und ist allgemein mit 70 bezeichnet. Im Netzwerk 70 wird
dann, wenn eine P2P-Kommunikation zwischen Netzwerken 12a und 12b gesendet
wird, der PPO 10 dies untersuchen. Der PPO 10 ermittelt
anschließend
einen kostengünstigen
Weg, die Kommunikation zu bewerkstelligen. Es ist nicht die Absicht
des Erfinders, die Verwendung der vorliegenden Erfindung nur auf
zwei Netzwerke 12a und 12b, wie in 7 gezeigt
ist, zu beschränken.
-
In 8 ist
ein Blockdiagramm eines Hybrid-P2P-Netzwerks allgemein mit 80 bezeichnet.
Diese Netzwerktopologie kann als dritte P2P-Generation bezeichnet
werden, bei der bestimmte Knoten als "Superknoten" oder "Ultra-Gleichgestellte" ausgewählt sind und als Verkehrskoordinator
für die
anderen Knoten dienen. In 8 sind Superknoten
mit dem Bezugszeichen 82 bezeichnet und miteinander verbunden.
Dieses Modell wird vom P2P-Diensten
wie z. B. Fasttrack, Kazaa, Morpheus und Grokster benutzt. Die Superknoten 82 wechseln
dynamisch, wenn sich die Bandbreite und die Netzwerktopologie ändern. Jeder
Knoten 14 kann ein Superknoten 82 sein.
-
In 9 ist
ein Blockdiagramm eines Hybrid-P2P-Netzwerks, das den PPO 10 nutzt,
allgemein mit 90 bezeichnet. Im Netzwerk 90 agiert
der PPO 10 als ein Superknoten zwischen den Netzwerken 12a und 12b. Alle
Knoten innerhalb des Netzwerks 12a sehen den PPO 10 als
ihren Superknoten und somit ihren Pfad zum Netzwerk 12b.
Die Knoten 14 innerhalb des Netzwerks 12a können auch
Superknoten innerhalb des Netzwerks 12a sein (nicht gezeigt).
-
Bezüglich der
Topologien der in den 4 bis 9 gezeigten
Netzwerke ist es die Absicht des Erfinders, einfach zu zeigen, wie
die vorliegende Erfindung in bestehenden P2P-Netzwerken genutzt
werden kann. Es ist nicht die Absicht des Erfinders, die vorliegende
Erfindung auf die gezeigten Netzwerke zu beschränken, sondern vielmehr, Beispiele
für die
Vielfalt der vorliegenden Erfindung aufzuzeigen.
-
In 10 ist
ein Blockdiagramm eines PPO allgemein mit 10 bezeichnet.
Wie Fachleute erkennen können,
kann der PPO 10 auf viele verschiedene Weisen implementiert
werden. Die Struktur des PPO 10, wie in 10 gezeigt
ist, dient nur als Beispiel einer Implementierung, die verwendet
werden kann, um P2P-Kommunikationsvorgänge zu untersuchen und zu managen.
Im Folgenden werden die Komponenten des in 10 gezeigten
PPO 10 genauer beschrieben.
-
Ein
Lizenzierungsmodul 102 ist verantwortlich für die Durchsetzung
der maximalen Anzahl gleichzeitiger Benutzer des PPO 10,
für die
der Kunde (z. B. der Besitzer eines PPO 10) eine Lizenzgebühr bezahlt
hat. Das Konfigurationsmodul 104 pflegt die Konfiguration
des PPO 10, wie z. B. die Teilnetzwerke und IP-Adressen
der Knoten, die sich innerhalb eines Netzwerks 12 befinden.
Ein Statistikmodul 106 pflegt die Statistik für den PPO 10,
wie z. B. die Anzahl der umgeleiteten Dateien und die Anzahl der
gleichzeitigen Benutzer. Ein Protokollierungsmodul 108 ist
verantwortlich für
Protokollierungsfunktionen, wie z. B., wann der PPO 10 hochgefahren
oder heruntergefahren wurde, und wann die Anzahl der Lizenzen überschritten
wurde. Ein Belastungsausgleicher-Rückmeldungsmodul 110 bietet
eine negative Rückmeldungsschleife
zu einem externen Belastungsausgleicher, so dass mehrere PPOs unter
der Kontrolle eines Kunden den gleichen Verkehr empfangen. Ein WCCP-Modul 112 arbeitet
mit dem Cisco-Web-Cache-Communication-Protocol
(WCCP), um sicherzustellen, dass ein Router, wie z. B. der Verteilungsrouter 24 der 3,
nur P2P-Kommunikationsvorgänge
zu einem oder mehreren PPOs 10 sendet. Wie Fachleute erkennen
werden, können
mehrere Verfahren verwendet werden, um P2P-Verkehr zu einem PPO 10 zu
leiten, wie z. B. die Erkennung spezifischer Port-Adressen oder
die kontext-sensitive Abtastung von Paketen. WCCP dient nur als
ein Beispiel. Ein GUID-Generator 114 erzeugt eine globale
eindeutige Kennung für
jeden Sender eines P2P-Pakets, um die Möglichkeit einer Zurückführung zum
ursprünglichen
Sender des Pakets zu vermeiden, und um ferner Nachrichten, die empfangen
worden sind, eindeutig zu identifizieren.
-
Eine
P2P-Anwendung 116 arbeitet als Steuerprogramm für den PPO 10.
Die Anwendung 116 umfasst: ein Route/Pfad-Kostenmodul 118,
ein Anfragemodul 120, ein Ping/Pong-Netzwerktrainingsmodul 122,
ein Verbindungsmanagermodul 124 und ein Übertragungsmanagermodul 126.
Das Route/Pfad-Kostenmodul 118 weist
jeder vorgeschlagenen Verbindung auf der Grundlage der Kostenklasse
jedes Knotens in der Verbindung Pfadkosten zu.
-
Das
Anfragemodul 120 umfasst: ein Ketteneditierabstandsmodul 128,
ein Suchzusammenlegungsmodul 130, ein Anfrageroutenplanungs-Logikmodul 132,
ein QoS-Modifikationsmodul 134 und ein Inhaltsverzeichnismodul 136.
-
Das
Ketteneditierabstandsmodul 128 ermittelt die Ähnlichkeit
zwischen dem Namen einer angeforderten Datei und den Dateinamen,
die dem PPO 10 bekannt sind. Das Suchzusammenlegungsmodul 130 nutzt das
Ketteneditierabstandsmodul 128, um den Namen einer angeforderten
Datei unabhängig
von der Kostenklasse auf bekannte verfügbare Dateien abzubilden. Das
Anfrageroutenplanungs-Logikmodul 132 leitet Anfragen nach
einer Datei zu den Knoten, die wahrscheinlich die angeforderte Datei
enthalten. Das Modul 132 pflegt eine Liste aller Nachrichten
zu und von einem Netzwerk 12. Durch die Pflege einer solchen
Liste kann das Modul 132 schnell störende Nachrichten verwerfen,
wie z. B. Anfragen nach Daten, die nicht bestätigt worden sind. Das QoS-Modifikationsmodul 134 schreibt
die Routenplanungsinformation des Moduls 132 um, um einen vom
Route/Pfad-Kostenmodul 118 bestimmten kostengünstigen
Pfad auszuwählen.
Die Routenplanungsinformation enthält QoS-Parameter, wie z. B.
eine angegebene Bandbreite und eine Betriebszeit. Der Zweck des Umschreibens
der Routenplanungsinformation besteht darin, dem Anfragenden einen
Pfad zu einer Datei oder zu Dateien bereitzustellen, der die kostengünstigste
Nutzung der Netzwerkbetriebsmittel bewirkt. Hierdurch kann eine
Nachricht umgeleitet werden. Das Inhaltsverzeichnis 136 pflegt
ein Verzeichnis des Inhalts, der für einen Zugriff in den Knoten 14 innerhalb
des Netzwerks 12 verfügbar
ist. Das Inhaltsverzeichnis 136 enthält ferner die Kostenklasse
für jeden
Knoten, in dem sich der Inhalt befindet. Typischerweise ist ein
solcher Inhalt eine Datei, kann jedoch auch Formen von Daten enthalten,
wie z. B. Streaming-Medien. Es ist nicht die Absicht des Erfinders,
die Verwendung des Ausdrucks "Datei" auf irgendeine Form
von P2P-Daten zu beschränken, die
vom PPO 10 untersucht oder durch diesen übermittelt
werden können.
-
Das
Ping/Pong-Netzwerktrainingsmodul 122 dient dazu, auf der
Grundlage der durch den PPO 10 von den Knoten 14 empfangenen
Ping-Nachrichten den Host-Cache 138 mit IP-Adressen der
Knoten 14 zu füllen. Das
Ping/Pong-Netzwerktrainingsmodul 122 sendet mehrere Pong-Nachrichten
in Reaktion auf eine Ping-Nachricht bei dem Versuch, ein eine Ping-Nachricht
sendendes Netzwerk zu trainieren. Pong-Nachrichten werden vom PPO 10 für jeden
Knoten 14 gesendet, der die gleiche Kostenklasse wie der
Sender des Pings aufweist, den der PPO 10 kennt. Diese
Benutzung von mehreren Pong-Nachrichten dient dazu, das Netzwerk, das
den Ping gesendet hat, zu trainieren. Dieses Training liefert dem
sendenden Netzwerk andere Knoten als diejenigen, für die der
PPO 10 den Verkehr zu beschränken wünscht.
-
Wenn
eine Verbindung zwischen einem Knoten 14 und dem PPO 10 eingerichtet
wird, pflegt der Verbindungsmanager 124 die Verbindung,
bis der Knoten 14 die Verbindung verwirft. Ein Verzeichnisabrufmodul 142 ist
verantwortlich für
das Erlangen der Inhaltsnamen und das Hinzufügen derselben zum Inhaltsverzeichnis 136.
-
Der Übertragungsmanager 126 ist
im wesentlichen ein Stellvertreter, der den Austausch von P2P-Daten
handhabt. Der Manager 126 nutzt das Abrufumleitungsmodul 144,
um eine Anfrage nach einem Inhalt zu einem Knoten mit niedrigeren
Pfadkosten umzuleiten. Ein Knoten 14 kann eine Anfrage
nach einer spezifischen Datei auf einem weiteren Knoten 14 stellen.
Wenn diese Datei über
einen kostengünstigeren
Pfad verfügbar
ist, leitet das Abrufumleitungsmodul 144 die Anfrage stillschweigend
zu einem weiteren Knoten mit einem kostengünstigeren Pfad um.
-
Mehrere
P2P-protokollspezifische Steuerungsprogramme 146 sind verantwortlich
für die
Pflege eines spezifischen P2P-Protokolls, z. B. Gnutella oder Fasttrack.
Ein Sendesteuerprotokoll-(TCP)-Steuerungsprogramm 148 stellt
die Aufrechterhaltung des korrekten TCP-Verhaltens sicher. In ähnlicher
Weise dient ein Internetprotokoll-(IP)-Steuerungsprogramm 150 dem
selben Zweck für
das IP. Es ist nicht die Absicht des Erfinders, die vorliegende
Erfindung auf die Verwendung von TCP und IP zu beschränken. Diese
dienen lediglich als Beispiel. Wie Fachleute erkennen werden, kann
eine beliebige Anzahl von Kommunikationsprotokollen verwendet werden,
einschließlich,
jedoch nicht hierauf beschränkt,
ATM, UDP und Wireless.
-
Ein
Abgegrenzte-Dienste-Codepunkt-(DSCP)-Kennzeichnungsmodul 152 nutzt
abgegrenzte Dienst (DiffServ oder DS), um die IP-Pakete zu klassifizieren,
so dass bestimmte Typen von Paketen Vorrang vor anderen erhalten.
Zum Beispiel kann für
die Anzahl P2P-Pakete, denen erlaubt wird, ein Netzwerk 12 zu
betreten oder zu verlassen, eine Begrenzung verhängt werden. Ein solches Merkmal
ist optional, kann jedoch von Netzwerken verwendet werden, die feststellen,
das P2P-Daten einen zu großen
Anteil ihrer Bandbreite verbrauchen. Wie Fachleute erkennen werden,
kann eine beliebige Anzahl von Maßnahmen, wie z. B. das Paketschnüffeln oder
die Erkennung spezifischer Port-Adressen, benutzt werden, um P2P-Verkehr
zu identifizieren. Es ist nicht die Absicht des Erfinders, die Fähigkeit
zur Begrenzung von P2P-Verkehr auf die DSCP-Lösung zu beschränken.
-
Der
PPO 10 optimiert das Verhalten zwischen den Netzwerken 12,
mit denen er verbunden ist, und innerhalb derselben. Das Verhalten
ist die Fähigkeit,
Nachrichten zu erzeugen, zu zerstören, zu modifizieren oder zu
ignorieren. Das Verhalten optimiert das zukünftige Verhalten jedes Netzwerks 12,
nicht nur die aktuelle Nachricht. Ein Beispiel der Erzeugung einer
Nachricht ist ein falscher Pong. Ein Beispiel der Zerstörung einer Nachricht
ist das Löschen
einer Nachricht, die bereits beantwortet ist, oder im Fall von Gnutella
einer Nachricht, deren TTL abgelaufen ist. Die Modifikation ist
nicht auf das QoS-Modifikationsmodul 134 begrenzt.
Zum Beispiel kann das Suchzusammenlegungsmodul 130 Nachrichten
modifizieren, um den ähnlichsten
Dateinahmen wiederzugeben, der vom Ketteneditierabstandsmodul 128 ermittelt
worden ist. Im Fall eines spezifischen Protokolls, wie z. B. Gnutella,
kann eine Modifikation das Überschreiben
des TTL-Abschnitts der Nachricht beim Weiterleiten der Nachricht
enthalten. In ähnlicher
Weise kann die GUID für
eine Nachricht bei Bedarf verändert
werden. Im wesentlichen kann der PPO 10 in Abhängigkeit
vom Protokoll Nachrichten nach Bedarf modifizieren, um das Netzwerkverhalten
zu optimieren. Ein Beispiel des Ignorierens einer Nachricht besteht
darin, eine Anfrage an einen Knoten in einem Netzwerk zu ignorieren,
wenn Verkehr von diesem Netzwerk beschränkt worden ist.
-
Damit
der PPO 10 P2P-Anfragen untersuchen und bearbeiten kann,
muss er eine Vielfalt von P2P-Protokollen kennen. Diese Funktion
wird von P2P-protokollspezifischen
Steuerungsprogrammen 146 gehandhabt.
-
Als
Nächstes
wird beispielhaft beschrieben, wie ein P2P-protokollspezifisches
Steuerungsprogramm 146 mit dem Gnutella-Protokoll umgehen
kann. Es ist nicht die Absicht des Erfinders, die vorliegende Erfindung nur
auf die Arbeit mit dem Gnutella-Protokoll zu beschränken, sondern
statt-dessen, ein praktisches Beispiel dafür zu geben, wie die vorliegende
Erfindung mit P2P-Anfragen
umgehen kann.
-
Das
Gnutella-Protokoll weist fünf
Nachrichtentypen auf, nämlich:
Ping, Pong, Anfrage, Anfragetreffer und Anstoß. Wie ein Steuerungsprogramm 146 jede
dieser Nachrichten handhabt, ist im folgenden Diagramm 1 gezeigt.
Im Diagramm 1 bezieht sich der Ausdruck "interner Knoten" auf einen Knoten 14 innerhalb
des Netzwerks 12a des ISP-Beispiels der 3.
Der Ausdruck "externer
Knoten" bezieht
sich auf einen Knoten 14 innerhalb eines Netzwerks 12b bis 12n der 3.
Durch die Verwendung der Ausdrucke "interner Knoten" und "externer Knoten" will der Erfinder zeigen, wie der PPO 10 verwendet
werden kann, um P2P-Verkehr zwischen Knoten in einem "internen" Netzwerk, wie z.
B. einem ISP, und Knoten in einem "externen" Netzwerk, wie z. B. mehreren Orten
des Internets, zu untersuchen und umzuleiten.
-
Das
Diagramm 1 zeigt, wie der PPO 10 verwendet werden kann,
um P2P-Verkehr zwischen
Netzwerken zu untersuchen und umzuleiten. In der folgenden Beschreibung
des Diagramms 1 empfehlen wir dem Leser, auf die 3 und 10 sowie
auf das Diagramm 1 Bezug zu nehmen.
-
-
Eine
Ping-Nachricht wird verwendet, um zu ermitteln, ob ein Knoten 14 aktiv
ist, und hilft dabei, eine Datenbank aktiver Knoten im Host-Cache 138 der 10 einzurichten.
Der PPO 10 antwortet auf eine Ping-Nachricht mit einer
Pong-Nachricht. Um die Identifizierung eines Knotens 14 innerhalb
des Netzwerks 12a zu vermeiden, würde der PPO 10 typischerweise
eine verfälschte
Pong-Nachricht bereitstellen. Die verfälschte Pong-Nachricht würde die
Anzahl der gemeinsam genutzten Dateien und die Datenmenge, die mit dem
den Ping-Knoten 14 enthaltenden Netzwerk 12a gemeinsam
genutzt wird, sowie die P-Adresse und den Port des gepingten Knotens
angeben. In ähnlicher
Weise leitet der PPO 10 in diesem Beispiel Pong-Nachrichten nicht
weiter, jedoch empfängt
er diese und fügt
diese zu der Liste von Knoten im Host-Cache 138, von denen
er Daten erhalten kann, hinzu.
-
Eine
Anfragenachricht ist eine Suchnachricht, die ein Fragment eines
Dateinamens enthält,
mit anderen Worten eine Anfrage nach Daten. Im vorliegenden Beispiel
werden ankommende Anfragenachrichten von einem externen Knoten verworfen,
so dass sie als Anfragefehlschlag erscheinen, wodurch die Bedienung
einer P2P-Anfrage von einem Netzwerk 12b bis 12n vermieden
wird. Es ist nicht die Absicht des Erfinders, zu fordern, dass Anfragenachrichten
verworfen werden, sondern es ist einfach ein Verfahren, das verwendet
werden kann, um unerwünschten
P2P-Verkehr in das Netzwerk 12a zu begrenzen. Implementierungen,
die den PPO 10 nutzen, können wählen, ob sie den freien Fluss
aller Nachrichten erlauben oder eine begrenzte Menge an Verkehr
zur Verfügung
stellen. Anfragenachrichten von einem Knoten 14 innerhalb
des Netzwerks 12a werden zuerst zu den Knoten 14 weitergeleitet,
die die angeforderte Datei enthalten und einen kostengünstigen
Pfad aufweisen. Dies wären
typischerweise Knoten 14 innerhalb des Netzwerks 12a,
jedoch muss dies nicht immer der Fall sein. Die Knoten 14,
die die angeforderten Daten aufweisen, werden dann mit Anfragetreffernachrichten
antworten. Wenn es keine Übereinstimmungen
für die
Anfrage nach Daten gibt, oder wenn keine Anfragetreffernachricht
zurückgegeben
wird, wird die Anfragenachricht an eine zufällige Menge von Knoten 14 innerhalb
des Netzwerks 12a gesendet. Ein Verfahren zur Bestimmung
der zufälligen
Menge von Knoten 14 zum Empfangen der Anfragenachricht
wäre die
Verwendung einer gewichteten wahrscheinlichkeitstheoretischen Funktion,
wie z. B. ein Reihum-Verfahren auf der Grundlage der Anzahl von
Dateien, die von jedem Knoten 14 zur Verfügung gestellt
werden. Auf diese Weise gelangt die Anfrage nicht immer zu den Knoten 14 mit
der größten Anzahl
von Dateien. Wenn immer noch keine Übereinstimmung vorliegt, wird
die Anfrage zu Knoten 14 mit den niedrigsten Pfadkosten
in den Netzwerken 12b bis 12n weitergeleitet.
-
Eine
Anfragetreffernachricht ist eine Antwort auf eine Anfragenachricht.
Ankommende Anfragetreffernachrichten von Knoten in den Netzwerken 12b bis 12n werden
zu einem geeigneten Knoten 14 innerhalb des Netzwerks 12a weitergeleitet.
Ankommende Anfragetreffernachrichten von den Knoten 14 innerhalb
des Netzwerks 12a werden zu dem anfragenden Knoten innerhalb
des Netzwerks 12a zurückgeleitet
und nicht zu den Netzwerken 12b bis 12n gesendet.
-
Eine
Anstoßnachricht
wird verwendet, wenn der sendende Knoten ein Zugangsschutzsystem
(Firewall) aufweist und der empfangende Knoten nicht. Der empfangende
Knoten sendet eine Anstoßnachricht,
die den sendenden Knoten veranlasst, eine Verbindung direkt zum
empfangenden Knoten zu öffnen.
Ankommende Anstoßanfragen
können
vom PPO 10 optional verworfen werden oder unverändert auf
dem Weg aus dem Netzwerk 12a weitergeleitet werden.
-
Für ein Beispiel,
wie die vorliegende Erfindung genutzt werden kann, um das Gnutella-Protokoll
zu unterstützen,
wird im Folgenden auf die logischen Flussdiagramme 11 bis 15 Bezug
genommen. Wie bei der vorherigen Diskussion bezüglich des Diagramms 1 wird
auf die Komponenten der 3 beispielhaft Bezug genommen.
-
In 11 ist
ein logisches Flussdiagramm, das die Verarbeitung einer Ping-Nachricht zeigt,
allgemein mit 160 bezeichnet. Beginnend mit dem Schritt 162 wird
eine Ping-Nachricht empfangen. Im Schritt 164 wird die
Ping-Nachricht optional
verworfen, wobei dann, wenn sie verworfen wird, diese nicht innerhalb
des Netzwerks 12a weitergeleitet wird. Im Schritt 166 wird
eine falsche Pong-Nachricht erzeugt. Die falsche Pong-Antwort kann
die Anzahl von Dateien enthalten, die für den P2P-Austausch innerhalb
des Netzwerks 12a verfügbar
sind. Die falsche Pong-Nachricht kann zu jedem Knoten gesendet werden,
der mit dem PPO 10 verbunden ist, um ein Netzwerk zu trainieren,
wie vorher mit Bezug auf das Ping/Pong-Trainingsmodul 122 der 10 beschrieben
worden ist.
-
In 12 ist
ein logisches Flussdiagramm, das die Verarbeitung einer Pong-Nachricht zeigt,
allgemein mit 190 bezeichnet. Der Prozess 190 beginnt
im Schritt 192 mit dem Empfang einer Pong-Nachricht. Im
Schritt 194 wird geprüft,
ob die Nachricht von einem Knoten 14 innerhalb des Netzwerks 12a stammt.
Wenn die Nachricht von einem Knoten 14 innerhalb des Netzwerks 12a stammt,
kann die Nachricht optional im Schritt 196 verworfen werden.
-
Wenn
die Nachricht von einem Knoten 14 in einem Netzwerk 12b bis 12n stammt,
rückt die
Verarbeitung zum Schritt 198 vor, wo die TTL für die Nachricht
dekrementiert wird. Anschließend
rückt die
Verarbeitung zum Schritt 200 vor, wo der aktuelle Wert
der TTL geprüft
wird. Wenn die TTL abgelaufen ist, wird die Nachricht im Schritt 202 verworfen.
Wenn die TTL nicht abgelaufen ist, rückt die Verarbeitung zum Schritt 204 vor,
wo geprüft
wird, ob eine Ping-Nachricht passend zur Pong-Nachricht empfangen
worden ist. Der PPO 10 speichert Nachrichten, die er unter
der Kontrolle eines Anfrageroutenplanungs-Logikmoduls 132 (10)
empfängt.
Typischerweise wird eine Nachricht nicht lange gespeichert, da die
meisten P2P-Anfragen nach Informationen in weniger als einer Minute
geklärt
wird. Wenn keine passende Ping-Nachricht gefunden wird, wird die Pong-Nachricht
im Schritt 202 verworfen. Wenn eine passende Ping-Nachricht
gesehen worden ist, wird die Pong-Nachricht anschließend im
Schritt 206 zur Quelle der ursprünglichen Ping-Nachricht weitergeleitet.
-
In
der obigen Beschreibung der 12 nimmt
der Erfinder auf die Lebensdauer (TTL) Bezug. Die TTL-Information
wird vom Gnutella-Protokoll verwendet, jedoch nicht von allen anderen
Protokollen. Für
andere Protokolle, die die TTL nicht erkennen, würde die Logik der 11 modifiziert,
um die Schritte 98 und 200 zu entfernen. Somit
würde die
Steuerung vom Schritt 194 im negativen Fall direkt zum
Schritt 204 übergehen.
-
In 13 ist
ein logisches Flussdiagramm, das die Verarbeitung einer Anfragenachricht
zeigt, allgemein mit 210 bezeichnet. Der Prozess 210 beginnt
mit dem Schritt 212, in welchem eine Anfragenachricht empfangen
wird. Im Schritt 214 wird ermittelt, ob die Anfragenachricht
von einem Knoten 14 innerhalb des Netzwerks 12a stammt.
Wenn dies der Fall ist, rückt
die Verarbeitung zum Schritt 216 vor, wo geprüft wird,
ob die angeforderte Datei innerhalb des Netzwerks 12a enthalten
ist, wie durch das Inhaltsverzeichnis 136 angegeben wird
(10). Wenn die Datei innerhalb des Netzwerks 12a enthalten
ist, rückt
die Verarbeitung anschließend
zum Schritt 218 vor, wo die Anfragenachricht zu den Knoten 14 mit
der niedrigsten Kostenklasse innerhalb des Netzwerks 12a weitergeleitet
wird. Wenn die Datei nicht innerhalb des Netzwerks 12a gefunden wird,
rückt die
Verarbeitung anschließend
zum Schritt 220 vor, wo die Anfragenachricht zu einer ausgewähl ten gewichteten
Liste von Knoten 14 innerhalb des Netzwerks 12a weitergeleitet
wird. Das Ziel hierbei ist, dass das Inhaltsverzeichnis 136 nicht
aktuell sein muss und die angeforderte Datei sich innerhalb des
Netzwerks 12a befinden kann. Ein Verfahren der Bestimmung
der Menge von Knoten 14, zu denen die Anfragenachricht gesendet
wird, wäre
die Verwendung einer gewichteten wahrscheinlichkeitstheoretischen
Funktion, wie z. B. ein Reihum-Verfahren auf der Grundlage der Anzahl
von Dateien, die von jedem Knoten 14 innerhalb des Netzwerks 12a zur
Verfügung
gestellt werden. Auf diese Weise gelangt die Anfrage nicht immer
zu einem Knoten 14 mit der größten Anzahl von Dateien.
-
Als
Nächstes
wird im Schritt 222 geprüft, ob die Datei auf einem
Knoten 14 innerhalb des Netzwerks 12a lokalisiert
worden ist. Wenn die Datei lokalisiert worden ist, wird die Ortsinformation
zum Urheber der Anfragenachricht im Schritt 224 weitergeleitet.
Wenn im Schritt 222 die Datei nicht lokalisiert worden
ist, wird die Anfragenachricht zu einer gewichteten Teilmenge verbundener
Knoten mit der niedrigsten Kostenklasse in den Netzwerken 12b bis 12n im
Schritt 226 weitergeleitet. Wie vorher erwähnt worden
ist, kann ein gewichtetes Reihum-Schema verwendet werden, um die
Knoten 14 in den Netzwerken 12b bis 12n für den Empfang
der Anfrage auszuwählen.
Ein verbundener Knoten ist ein Knoten, der einen Verbindungspfad
zum PPO 10 z. B. über
TCP-IP eingerichtet hat. Zurückkehrend
zum Schritt 214 rückt
die Verarbeitung dann, wenn die Anfragenachricht nicht von einem
Knoten 14 innerhalb des Netzwerks 12a stammt,
zum Schritt 228 vor, wo der TTL-Wert der Nachricht dekrementiert wird.
Anschließend
wird im Schritt 230 geprüft, ob der TTL-Wert für die Nachricht
größer als
0 ist. Falls nicht, wird die Nachricht im Schritt 232 verworfen
und die Verarbeitung endet. Wenn der TTL-Wert kleiner oder gleich
0 ist, rückt
die Verarbeitung zum Schritt 226 vor, wo die Anfragenachricht
zu allen verbundenen Knoten in den Netzwerken 12b bis 12n weitergeleitet
wird. Optional kann dann, wenn die Anfrage von einem Knoten in der
Netzwerken 12b bis 12n stammt, die Anfrage im
Schritt 226 einfach verworfen oder zum anfragenden Knoten
zurückgegeben
werden, so dass es nicht erforderlich ist, dass der PPO 10 die
Anfrage zu den verbundenen Knoten weiterleitet.
-
Wie
oben mit Bezug auf 12 beschrieben worden ist, würden dann,
wenn das Kommunikationsprotokoll die TTL nicht nutzt, die Schritte 228, 230 und 232 weggelassen.
Im negativen Fall des Schritts 214 würde dann der Ablauf zum Schritt 226 vorrücken.
-
In 14 ist
ein logisches Flussdiagramm, das die Verarbeitung einer Anfragetreffernachricht
zeigt, allgemein mit 240 bezeichnet. Der Prozess 240 beginnt
im Schritt 242, wo eine Anfragetreffernachricht durch den
PPO 10 empfangen wird. Die Verarbeitung rückt zum
Schritt 244 vor, wo die TTL für die Anfragetreffernachricht
dekrementiert wird. Im Schritt 246 wird dann, wenn die
TTL kleiner oder gleich 0 ist, die Nachricht im Schritt 248 verworfen.
Wenn die TTL größer als
0 ist, rückt
die Verarbeitung zum Schritt 250 vor, wo geprüft wird,
ob eine passende Anfragenachricht für die Anfragetreffernachricht
empfangen worden ist. Der PPO 10 speichert Nachrichten,
die er unter der Steuerung eines Anfrageroutenplanungs-Logikmoduls 132 (10) empfängt. Typischerweise
wird eine Nachricht nicht lange gespeichert, da die meisten P2P-Anfragen
nach Informationen innerhalb von einer Minute geklärt werden.
Wenn keine passende Anfragenachricht empfangen wurde, rückt die
Verarbeitung zum Schritt 248 vor, wo die Nachricht verworfen
wird. Wenn eine passende Anfragenachricht empfangen wurde, rückt die
Verarbeitung zum Schritt 252 vor, wo geprüft wird,
ob die Anfragetreffernachricht von einem Knoten 14 innerhalb
des Netzwerks 12a stammt. Falls nicht, wird anschließend im Schritt 254 die
Anfragetreffernachricht optional zu dem Knoten weitergeleitet, der
die ursprüngliche
Anfrage gestellt hat. Wenn im Schritt 252 festgestellt
wird, dass die Anfragetreffernachricht von einem Knoten 14 innerhalb
des Netzwerks 12a stammt, rückt die Verarbeitung zum Schritt 256 vor.
Im Schritt 256 wird geprüft, ob die ursprüngliche
Anfragenachricht, die der Anfragetreffernachricht entspricht, von
einem Knoten 14 innerhalb des Netzwerks 12a stammt.
Trifft dies zu, rückt
die Verarbeitung zum Schritt 254 vor, wo die Nachricht
zu dem Knoten weitergeleitet wird, der die ursprüngliche Anfrage gestellt hat.
Falls nicht, rückt
die Verarbeitung zum Schritt 248 vor, wo die Nachricht
verworfen wird.
-
In 15 ist
ein logisches Flussdiagramm, das die Verarbeitung einer Verbindungsanfrage
zeigt, allgemein mit 260 bezeichnet. Ein beliebiger Knoten 14 kann
eine Verbindung zu irgendeinem anderen Knoten 14 im Schritt 262 anfordern.
Im Schritt 264 wird geprüft, ob die Anfrage von einem Knoten 14 innerhalb
des Netzwerks 12a stammt. Trifft dies zu, versucht der
Verbindungsmanager 124 (siehe 10), die
Anfrage durch das Anfragemodul 120 (siehe 10)
zu bedienen, um einen kostengünstigen
Pfad innerhalb des Netzwerks 12a im Schritt 266 zu
bestimmen. Wenn im Schritt 264 festgestellt wird, dass
die Verbindungsanfrage nicht von einem Knoten 14 innerhalb
des Netzwerks 12a stammt, rückt die Verarbeitung zum Schritt 268 vor.
Im Schritt 268 wird eine Ping-Nachricht zu den verbunden
Knoten 14 innerhalb der Netzwerke 12b bis 12n gesendet.
Im Schritt 270 werden einer oder mehrere Pongs empfangen
und es wird im Schritt 272 entschieden, welche Verbindung
zu einem spezifischen externen Knoten 14 genutzt werden
sollte. Schritt 272 kann eine Vielfalt von Verfahren nutzen,
um zu bestimmen, welche Verbindungen zu halten sind und welche zu
verwerfen sind. Typischweise würde
der Schritt 272 Verbindungen auf der Grundlage der Datenmenge,
der Kostenklasse und der Gesamtzahl der Verbindungen, die aufrechterhalten
werden können,
aufrechterhalten. Wenn im Schritt 272 ein Knoten 14 für besser
befunden wird als eine bestehende Verbindung, wird diese im Schritt 272 verworfen.
Wenn im Schritt 272 eine bessere Verbindung gefunden wird,
wird diese im Schritt 276 zum Inhaltsverzeichnis 136 hinzugefügt.
-
Obwohl
diese Offenbarung und die daran angefügten Ansprüche die Ausdrücke Anfrage,
Anfragetreffer, Ping, Pong, Anstoß und Verbindung verwenden,
ist es nicht die Absicht des Erfinders, diese Ausdrücke spezifisch
dem Gnutella-Protokoll zuzuordnen. Für den Erfinder ist der Ausdruck
Anfrage analog zu einer Anforderung von Daten, während Anfragetreffer einer
Antwort auf eine Anfrage entspricht, was anzeigt, dass die Daten
lokalisiert worden sind. Ein Ping ist ein Standard-Computer-Kommunikationsausdruck
und ist ein Kürzel für Packet
Internet Groper; im Wesentlichen ist dies eine Nachricht, um zu
ermitteln, ob ein spezifischer Computer in einem Netzwerk zugänglich ist.
Ein Pong ist eine Antwort auf einen Ping. Ein Anstoß ist eine
Nachricht, die direkt zu einem Knoten gesendet wird, der durch eine
Firewall geschützt
ist. Ein Anstoß wird
verwendet, um eine direkte Verbindung zwischen dem Knoten hinter
der Firewall und dem die Anstoßnachricht
sendenden Knoten anzufordern, so dass der Knoten hinter der Firewall
Daten zu dem anfragenden Knoten "drücken" kann. Eine Verbindung
ist eine Verbindung zwischen zwei Knoten.
-
Obwohl
sich die Offenbarung beispielsweise auf einen PPO innerhalb eines
ISP bezieht, ist es nicht die Absicht des Erfinders, die Erfindung
auf eine solche Konfiguration zu beschränken. Zum Beispiel kann ein PPO
innerhalb eines beliebigen Netzwerks verwendet werden, einschließlich von
Netzwerken, die von Unternehmen genutzt werden, um Daten mit ihren
Angestellten oder Kunden auszutauschen. Ferner können mehrere PPOs genutzt werden,
um für
den Fall, dass ein PPO ausfällt,
Redundanz bereitzustellen, und um ferner einen Lastausgleich zu
schaffen. Im Fall eines Netzwerks 12, das einen einzelnen
PPO verwendet, würde
das Netzwerk 12 bei Ausfall des PPO zu dem Zustand ohne
den PPO zurückkehren;
d. h. alle P2P-Nachrichten werden ausgetauscht, ohne zu entscheiden,
wer die Anfrage bedienen sollte.
-
Obwohl
die Erfindung mit Bezug auf bestimmte spezifische Ausführungsformen
beschrieben worden ist, sind für
Fachleute verschiedene Modifikationen derselben offensichtlich,
ohne vom Umfang der Erfindung, wie in den beigefügten Ansprüchen ausgeführt, abzuweichen.