-
ALLGEMEINER
STAND DER TECHNIK
-
1. Gebiet
der Erfindung
-
Die
Erfindung betrifft das Gebiet des Nachrichtenwesens, und insbesondere
das Übertragen von
Daten zu Knoten eines Kommunikationsnetzwerks unter Verwendung eines
selbstreplizierenden Codes.
-
2. Darstellung
der Problematik
-
Unternehmen,
Firmen, Universitäten
usw. haben im Allgemeinen ein Netzwerk, welches Hunderte oder Tausende
von Geräten
verbindet. Das Netzwerk kann ein lokales Netzwerk (LAN = Local Area
Network), ein Großraum-Netzwerk
(MAN = Metropolitan Area Network), ein Fernnetzwerk (WAN = Wide
Area Network) oder ein anderes Netzwerk sein. Es kommt vor, dass
das Netzwerkpersonal Daten, wie zum Beispiel Informationen, Dateien,
Software, Anweisungen usw. an mehrere Geräte in dem Netzwerk senden möchte. Bei
großen
Netzwerken kann es für
das Netzwerkpersonal ineffizient sein, die Daten an jedes Gerät einzeln
zu übertragen.
Würde das Netzwerkpersonal
versuchen, die Daten gleichzeitig an mehrere Geräte in dem Netzwerk zu übertragen, könnte die
Netzwerk-Bandbreite schnell aufgebraucht sein, vor allem wenn die
Datenmenge groß ist.
Somit sucht Netzwerkpersonal ständig
nach Wegen, um Daten an mehrere Geräte in einem Netzwerk zu übertragen,
um die Effizienz zu erhöhen,
ohne die Bandbreite des Netzwerks zu opfern.
-
Ein
Weg, Daten an mehrere Geräte
in dem Netzwerk zu übertragen,
besteht darin, die Daten im Multicast-Verfahren über das Netzwerk zu übertragen.
Der Begriff „Multicast" kann verwendet werden, um
das Senden von Nachrichten oder Datenpaketen an eine ausgewählte Gruppe
an Geräten,
die sich im Netzwerk befinden, zu beschreiben. Typische Anwendungen,
die aus einem sol chen System Nutzen ziehen können, können die Video- und Musikübertragung
beinhalten. Das Netzwerkpersonal kann das Multicast-Verfahren verwenden,
um Daten an mehrere Geräte
auf einem LAN zu übertragen.
Dies kann das Problem der einzelnen Bedienung jedes Geräts lösen. Wenn
zum Beispiel das Netzwerkpersonal neue Software auf mehreren Geräten, die
mit dem LAN in Verbindung stehen, installieren möchte, kann das Netzwerkpersonal
die Software über
das LAN im Multicast-Verfahren an die Geräte senden.
-
Ein
Problem beim Multicast-Verfahren ist, dass die Empfangsgeräte die richtige
Software benötigen,
um den Multicast zu empfangen. Falls die Empfangsgeräte nicht
die richtige Software haben, dann muss die richtige Software auf
den Empfangsgeräten
installiert werden, bevor sie die Daten empfangen.
-
Ein
weiteres Problem beim Multicast-Verfahren ist, dass der Sender unter
Umständen
nicht weiß, ob
die Empfangsgeräte
die Software empfangen haben oder nicht. Das UDP-Protokoll (User
Datagram Protocol) ist ein Protokoll, das im Multicast-Verfahren verwendet
wird, und UDP garantiert die Lieferung einer Nachricht nicht oder
erfordert auch keine Rückbestätigung von
dem Empfangsgerät.
Somit ist dem Sender der Übertragungsstatus
der Daten nicht bekannt. Das Netzwerkpersonal könnte eine Art von Rückbestätigung benötigen, um
dafür zu
sorgen, dass die Übertragung
der Software erfolgreich war.
-
Ein
anderes Verfahren zur Übertragung
von Codes zwischen Geräten
ist in der Veröffentlichung
EP 0 928 089 beschrieben.
In dieser Veröffentlichung wird
ein Code auf einem ersten Computer ausgeführt. Der Code wird dann für die Übertragung
serialisiert und an einen zweiten Computer übertragen. Dann wird der Code
im zweiten Computer deserialisiert, und der zweite Computer führt den
Code aus. Der Code migriert in serieller Weise von Computer zu Computer.
-
Eine
anderes Anliegen des Netzwerkpersonals könnten Viren sein. Einer der
bekannteren Viren ist der Internet-Wurm. Wegen des Internet-Wurms
ist der Begriff „Wurm" im Allgemeinen negativ
behaftet, als Software, die sich wiederholt auf einem Netzwerk repliziert,
um das Netzwerk zu „infizieren" (d.h. ein Virus).
Jedoch ist ein Wurm, wie es von vielen Fachmännern verstanden wird, einfach
eine sich selbst replizierende Software. Würmer müssen nicht so programmiert
sein, dass sie sich unkontrolliert ausbreiten oder ein Netzwerk
schädigen.
-
Ein
herkömmlicher
Wurm kann sich auf einer Reihe von Geräten replizieren. Ein Wurm (Parent Worm)
auf einem ersten Gerät
kann sich auf einem anderen Gerät
replizieren (Child Worm), dann auf einem weiteren Gerät usw. Nachdem
sich der Parent Worm auf einem anderen Gerät repliziert hat, um den Child
Worm zu erzeugen, hält
der Parent Worm im Allgemeinen keinen Kommunikationskanal mit dem Child
Worm aufrecht. Somit können
der Parent Worm und der Child Worm nicht miteinander kommunizieren,
um Daten zu übertragen.
Es könnte
wünschenswert
sein, Würmer,
oder andere selbstreplizierende Codes oder Software, auf positive
Weise zu verwenden, um Daten über
ein Netzwerk zu übertragen.
-
ZUSAMMENFASSUNG
DER LÖSUNG
-
Das
Problem wird durch ein Verfahren und System gemäß Anspruch 1 und 6 gelöst. Bevorzugte Merkmale
sind in den abhängigen
Ansprüchen
dargelegt.
-
Die
Erfindung löst
das obige und andere Probleme, indem sie einen selbstreplizierenden
Code in einem Kommunikationsnetzwerk verwendet, um Daten zwischen
Knoten zu übertragen.
Die Knoten des Kommunikationsnetzwerks haben ursprünglich nicht den
Code, der für
die Datenübertragung
erforderlich ist. Der selbstreplizierende Code der Erfindung repliziert
sich selbst auf Knoten des Kommunikationsnetzwerks, während er
die Kommunikationskanäle zwischen
den Knoten aufrechterhält.
Die Knoten können
dann untereinander Daten über
die Kommunikationskanäle übertragen.
-
Vorteilhafterweise
kann Netzwerkpersonal den selbstreplizierenden Code verwenden, um
Daten effizient an mehrere Knoten in einem Kommunikationsnetzwerk
zu übertragen,
ohne die Bandbreite des Netzwerks zu opfern. Außerdem muss das Netzwerkpersonal
vorher keinen Code auf den Knoten des Kommunikationsnetzwerks installieren,
um die Datenübertragung
zu erleichtern. Der selbstreplizierende Code kann sich selbst auf
den Knoten des Netzwerks vermehren, um die Datenübertragung zu erleichtern.
Außerdem
kann, weil der Code auf den Knoten einen Kommunikationskanal zwischen
den Knoten aufrecht erhält,
das Netzwerkpersonal den Status einer Datenübertragung in Echtzeit überwachen,
da die Knoten Steuer- und Statusinformationen mit einem Steuerknoten
austauschen.
-
Eine
beispielhafte Ausführungsform
der Erfindung beinhaltet ein Verfahren zur Datenübertragung in einem Kommunikationsnetzwerk.
In dem Verfahren führt
ein erster Knoten des Kommunikationsnetzwerks einen ersten Code
aus, um einen Kommunikationskanal mit einem zweiten Knoten einzurichten.
Der erste Knoten führt
den ersten Code auch aus, um sich selbst zu replizieren, um einen zweiten
Code zu erzeugen, und um den zweiten Code über den Kommunikationskanal
an den zweiten Knoten bereitzustellen. Der zweite Knoten führt den
zweiten Code aus, um einen Kommunikationskanal mit einem dritten
Knoten einzurichten. Der zweite Knoten führt den zweiten Code auch aus,
um sich selbst zu replizieren, um einen dritten Code zu erzeugen,
und um den dritten Code über
den Kommunikationskanal an den dritten Knoten bereitzustellen. Das Verfahren
kann das Einrichten von Kommunikationskanälen und Bereitstellen von Codes
an mehrere andere Knoten in dem Kommunikationsnetzwerk beinhalten.
-
Ist
der Kommunikationskanal zwischen dem ersten Knoten und dem zweiten
Knoten eingerichtet und aufrecht gehalten, empfängt der zweite Knoten Daten
von dem ersten Knoten über
den Kommunikationskanal. Die Daten können jegliche Informationen, Software,
Anweisungen usw., die für
die Übertragung in
einem Kommunikationsnetzwerk ausgelegt sind, umfassen. Der zweite
Knoten kann den zweiten Code ausführen, um die Daten zu verwalten.
Ist der Kommunikationskanal zwischen dem zweiten Knoten und dem
dritten Knoten eingerichtet und aufrecht gehalten, empfängt der
dritte Knoten Daten vom zweiten Knoten über den Kommunikationskanal.
Der dritte Knoten kann den dritten Code ausführen, um die Daten zu verarbeiten.
Andere Knoten des Kommunikationsnetzwerks können auf ähnliche Weise gemäß dem Verfahren
funktionieren, um Daten zwischen den Knoten zu übertragen und die Daten zu
verwalten.
-
Die
Erfindung kann andere beispielhafte Ausführungen, die unten beschrieben
sind, beinhalten.
-
BESCHREIBUNG
DER ZEICHNUNGEN
-
Dieselbe
Bezugsnummer stellt in allen Zeichnungen dasselbe Element dar.
-
1 stellt
ein Kommunikationsnetzwerk in einer beispielhaften Ausführungsform
der Erfindung dar.
-
2A-2B sind
Ablaufdiagramme, die ein Verfahren zum Betreiben des Kommunikationsnetzwerks
aus 1 darstellen, um Daten zwischen Knoten des Kommunikationsnetzwerks
in einer beispielhaften Ausführungsform
der Erfindung zu übertragen.
-
3A-3D stellen
dar, wie Codes und Daten in dem Kommunikationsnetzwerk aus 1 gemäß dem Verfahren aus 2A-2B in
einer beispielhaften Ausführungsform
der Erfindung übertragen
werden können.
-
4 stellt
ein Kommunikationsnetzwerk in einer anderen beispielhaften Ausführungsform
der Erfindung dar.
-
5 stellt
eine lineare Sworm-Topologie in einer beispielhaften Ausführungsform
der Erfindung dar.
-
6 stellt
eine verzweigte Sworm-Topologie in einer beispielhaften Ausführungsform
der Erfindung dar.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
1, 2A-2B, 3A-3D, 4-6 und
die folgende Beschreibung schildern spezifische beispielhafte Ausführungsformen der
Erfindung, um den Fachmann zu lehren, wie man die beste Art der
Erfindung herstellt und verwendet. Um die erfinderischen Prinzipien
zu lehren, wurden einige herkömmliche
Aspekte der Erfindung vereinfacht oder weggelassen. Der Fachmann
wird Abweichungen von diesen Ausführungsformen, die in den Bereich
der Erfindung fallen, zu schätzen
wissen. Der Fachmann wird zu schätzen
wissen, dass die unten beschriebenen Merkmale auf verschiedene Weise kombiniert
werden können,
um mehrere Variationen der Erfindung zu bilden. Daher ist die Erfindung
nicht auf die spezifischen Ausführungsformen,
die unten beschrieben sind, beschränkt, sondern lediglich durch
die Ansprüche
und ihre Äquivalente.
-
Kommunikationsnetzwerk-Konfiguration
und -Betrieb – 1, 2A-2B, 3A-3D
-
1 stellt
ein Kommunikationsnetzwerk 100 in einer beispielhaften
Ausführungsform
der Erfindung dar. Das Kommunikationsnetzwerk 100 beinhaltet
mehrere Knoten 101-104, die in der Lage sind, miteinander über eine Netzwerkeinrichtung 110 zu kommunizieren.
Die Netzwerkeinrichtung 110 kann ein LAN, ein MAN, ein
WAN, oder eine andere Art von Netzwerk umfassen. Ein Knoten kann
jedes beliebige System, Gerät,
Komponente, Karte usw. für das
Kommunikationsnetzwerk 100, wie zum Beispiel einen Computer,
umfassen. Das Kommunikationsnetzwerk 100 kann andere Knoten,
Komponenten, Geräte
oder Systeme, die nicht in 1 gezeigt
sind, beinhalten.
-
2A ist
ein Ablaufdiagramm, welches ein Verfahren 200 zum Betreiben
eines Kommunikationsnetzwerks 100 darstellt, um Daten zwischen
Knoten 101-104 eines Kommunikationsnetzwerks 100 in einer
beispielhaften Ausführungsform
der Erfindung zu übertragen.
Man nehme für
die Erläuterung
des Verfahrens 200 an, dass die Knoten 101-104 jeweils als
erster, zweiter, dritter und vierter Knoten bezeichnet werden. Man
nehme weiter an, dass der erste Knoten 101 einen ersten
Code beinhaltet, und der zweite Knoten 102 und der dritte
Knoten 103 keinen Code aufweisen, der dem ersten Code gleicht
oder diesem entspricht.
-
Im
Schritt 202 des Verfahrens 200 führt der erste
Knoten 101 den ersten Code aus, um einen Kommunikationskanal
mit dem zweiten Knoten 102 einzurichten. Der Code umfasst
jegliche Anweisungen, die von einem Prozessor ausgeführt werden können, wie
zum Beispiel Maschinensprachen-Anweisungen, Programmiersprachen-Anweisungen (kompiliert
oder nicht kompiliert), Interpretativsprachen-Anweisungen usw. In
Schritt 204 führt
der erste Knoten 101 den ersten Code aus, um sich selbst
zu replizieren, um den zweiten Code zu erzeugen und den zweiten
Code über
den Kommunikationskanal an den zweiten Knoten 102 bereitzustellen.
Wenn sich der erste Code „repliziert", um den zweiten
Code zu erzeugen, repräsentiert
der zweite Code eine Kopie oder Nachbildung des ersten Codes, eine
im Wesentlichen ähnliche
Kopie oder Nachbildung des ersten Codes oder eine Untermenge oder
Ableitung des ersten Codes. Der erste Knoten 101 kann die
Schritte 202 und 204 mehrere Male durchführen, um
Kommunikationskanäle
mit verschiedenen Knoten einzurichten und Codes an die Knoten bereitzustellen.
-
In
Schritt 206 führt
der zweite Knoten 102 den zweiten Code aus, um einen Kommunikationskanal
mit dem dritten Knoten 103 einzurichten. Der Kommunikationskanal
zwischen dem ersten Knoten 101 und dem zweiten Knoten 102 kann
mit dem Kommunikationskanal zwischen dem zweiten Knoten 102 und
dem dritten Knoten 103 übereinstimmen
oder getrennt von diesem sein. In Schritt 208 führt der
zweite Knoten 102 den zweiten Code aus, um sich selbst
zu replizieren, um einen dritte Code zu erzeugen und den dritten
Code über
den Kommunikationskanal an den dritten Knoten 103 bereitzustellen.
Der zweite Knoten 102 kann die Schritte 206 und 208 mehrere Male
durchführen,
um Kommunikationskanäle
mit verschiedenen Knoten einzurichten und Codes an die Knoten bereitzustellen,
wie durch Schritt „A" dargestellt ist.
-
Ist
der Kommunikationskanal zwischen dem ersten Knoten 101 und
dem zweiten Knoten 102 eingerichtet und aufrecht gehalten,
empfängt
der zweite Knoten 102 Daten von dem ersten Knoten 101 über den
Kommunikationskanal in Schritt 210. Die Daten können jegliche
Informationen, Software, Anweisungen usw., welche für die Übertragung
in dem Kommunikationsnetzwerk ausgelegt sind, umfassen. Der zweite
Knoten 102 kann auch Steuerinformationen von dem ersten
Knoten 101 über
den Kommunikationskanal empfangen. Die Steuerinformationen umfassen
jegliche Betriebs-, Verwaltungs- oder Management-Informationen,
die von den Knoten in dem Kommunikationsnetzwerk verwendet werden.
In Antwort auf den Empfang der Daten führt der zweite Knoten 102 den
zweiten Code aus, um die Daten in Schritt 212 zu verwalten.
Verwalten der Daten bedeutet das Durchführen eines oder mehrerer lokaler
Vorgänge
an den Daten.
-
Zum
Beispiel kann der zweite Code einen Ladevorgang lokal an dem zweiten
Knoten 102 beinhalten. Wenn der zweite Knoten 102 die
Daten empfängt,
kann der zweite Knoten 102 die Daten replizieren und die
replizierten Daten an den lokalen Ladevorgang leiten. Der zweite
Knoten 102 kann dann den Ladevorgang ausführen, um
die replizierten Daten zu empfangen und die replizierten Daten lokal
an dem zweiten Knoten 102 zu verarbeiten. Der Ladevorgang
kann die Daten in einem besonderen Verzeichnis speichern oder ansonsten
die Daten verarbeiten.
-
Ist
der Kommunikationskanal zwischen dem zweiten Knoten 102 und
dem dritten Knoten 103 eingerichtet und aufrecht gehalten,
empfängt
der dritte Knoten 103 Daten von dem zweiten Knoten 102 über den
Kommunikationskanal in Schritt 214. Der dritte Knoten 103 kann
auch Steuerinformationen von dem ersten Knoten 101 über den
Kommunikationskanal empfangen. In Antwort auf den Empfang der Daten führt der
dritte Knoten 103 den dritten Code aus, um die Daten in
Schritt 216 zu verwalten. Das Verwalten der Daten kann
das Durchführen
eines oder mehrerer lokaler Vorgänge
an den Daten beinhalten.
-
Das
Verfahren 200 kann mehr Schritte enthalten, um die Daten
linear auf diese Weise an andere Knoten zu übertragen, bis die Daten an
die gewünschten
Knoten übertragen
worden sind. Das Verfahren 200 stellt dar, wie die Daten
in einer linearen Kette durch das Kommunikationsnetzwerk 100 übertragen
werden. Das Verfahren 200 ist jedoch nicht auf lineare Übertragungen
beschränkt,
wie in 2B dargestellt.
-
2B ist
ein Ablaufdiagramm, welches zusätzliche
Schritte darstellt, die im Verfahren 200 verwendet werden
können.
In Schritt 218 führt
der zweite Knoten 102 ferner den zweiten Code aus, um einen
Kommunikationskanal mit einem vierten Knoten 104 einzurichten,
neben einem Einrichten des Kommunikationskanals mit dem dritten
Knoten 103 (siehe Schritt 206 in 2A).
In Schritt 220 führt
der zweite Knoten 102 den zweiten Code aus, um sich selbst
zu replizieren, um einen vierten Code zu erzeugen und den vierten
Code über
den Kommunikationskanal an den vierten Knoten 104 bereitzustellen.
Ist der Kommunikationskanal zwischen dem zweiten Knoten 102 und
dem vierten Knoten 104 eingerichtet und aufrecht erhalten,
empfängt
der vierte Knoten 104 Daten vom zweiten Knoten 102 über den
Kommunikationskanal in Schritt 222. Der vierte Knoten 104 kann
auch Steuerinformationen von dem ersten Knoten 101 über den
Kommunikationskanal empfangen. In Antwort auf den Empfang der Daten
führt der
vierte Knoten 104 den vierten Code aus, um die Daten in
Schritt 224 zu verwalten. Das Verwalten der Daten kann
das Durchführen
eines oder mehrerer lokaler Vorgänge an
den Daten beinhalten.
-
Das
Verfahren 200 kann mit ähnlichen Schritten
fortfahren, bis die Daten zu den gewünschten Knoten übertragen
wurden.
-
3A-3D stellen
dar, wie die Codes und die Daten in dem Kommunikationsnetzwerk 100 gemäß dem Verfahren 200 in
einer beispielhaften Ausführungsform
der Erfindung übertragen
werden. 3A stellt den ersten, zweiten
und dritten Knoten 101-103 von Kommunikationsnetzwerk 100 dar.
Der Knoten 101 beinhaltet den ersten Code 301 und
die Knoten 102-103 beinhalten anfänglich keinen
Code, der dem Code 301 gleicht oder ihm entspricht.
-
Der
Knoten 101 führt
den Code 301 aus, um einen Kommunikationskanal 311 mit
dem Knoten 102 (siehe 3B) einzurichten.
Der Knoten 101 führt den
Code 301 ebenfalls aus, um sich zu replizieren, um einen
zweiten Code 302 zu erzeugen und den Code 302 über den
Kommunikationskanal 311 an den Knoten 102 bereitzustellen.
Der Knoten 101 kann diese Funktion für mehrere Knoten, die nicht
in 3B gezeigt sind, durchführen.
-
Der
Knoten 102 führt
Code 302 aus, um einen Kommunikationskanal 312 mit
dem Knoten 103 (siehe 3C) einzurichten.
Der Kommunikationskanal 312 kann denselben Kanal wie Kommunikationskanal 311 umfassen.
Der Knoten 102 führt
Code 302 ebenfalls aus, um sich zu replizieren, um einen dritten
Code 303 zu erzeugen und den dritten Code 303 über den
Kommunikationskanal 312 an den Knoten 103 bereitzustellen.
Der Knoten 102 kann diese Funktion für mehrere Knoten, die nicht
in 3C gezeigt sind, durchführen.
-
Der
Knoten 102 kann Code 302 auch ausführen, um
einen Kommunikationskanal 313 mit dem Knoten 104 (siehe 3D)
einzurichten. Der Kommunikationskanal 313 kann denselben
Kanal wie die Kommunikationskanäle 311-312 umfassen.
Der Knoten 102 führt
Code 302 aus, um sich zu replizieren, um den vierten Code 304 zu
erzeugen und den vierten Code 304 über den Kommunikationskanal 313 an den
Knoten 104 bereitzustellen.
-
Ist
der Kommunikationskanal 311 eingerichtet und aufrecht gehalten,
empfängt
der Knoten 102 Daten 321 von dem Knoten 101 über den
Kommunikationskanal 311 (siehe 3D). Die
Daten können jegliche
Informationen, Software, Anweisungen usw., die für die Übertragung in dem Kommunikationsnetzwerk
ausgelegt sind, umfassen. In Antwort auf den Empfang der Daten 321 führt der
Knoten 102 Code 302 aus, um die Daten 321 zu
verwalten. Zum Beispiel kann der Knoten 102 Code 302 ausführen, um einen
oder mehr lokale Vorgänge
an den Daten 321 durchzuführen.
-
Ist
der Kommunikationskanal 312 eingerichtet und aufrecht gehalten,
empfängt
der Knoten 103 Daten 321 von dem Knoten 102 über den
Kommunikationskanal 312. In Antwort auf den Empfang der Daten 321,
führt der
Knoten 103 den Code 303 aus, um die Daten 321 zu
verwalten. Zum Beispiel kann der Knoten 103 Code 303 ausführen, um einen
oder mehrere Vorgänge
an den Daten 321 durchzuführen.
-
Ist
der Kommunikationskanal 313 eingerichtet und aufrecht gehalten,
empfängt
der Knoten 104 Daten 321 von dem Knoten 102 über den
Kommunikationskanal 313. In Antwort auf den Empfang der Daten 321,
führt der
Knoten 104 den Code 304 aus, um die Daten 321 zu
verwalten. Zum Beispiel kann der Knoten 104 Code 304 ausführen, um
einen oder mehrere Vorgänge
an den Daten 321 durchzuführen.
-
Vorteilhafterweise
kann Netzwerkpersonal den selbstreplizierenden Code, wie er in dieser
Ausführungsform
beschrieben wurde, verwenden, um effizient Daten an mehrere Knoten 101-104 im
Kommunikationsnetzwerk 100 zu übertragen, ohne die Bandbreite
des Netzwerks 100 zu opfern. Außerdem muss das Netzwerkpersonal
keinen Code an den Knoten 102-104 des Kommunikationsnetzwerks 100 vorher
installieren, um die Datenübertragung
zu erleichtern. Der selbstreplizierende Code kann sich selbst an
den Knoten 102-104 des Netzwerks 100 vermehren,
um die Datenübertragung
zu vereinfachen.
-
Kommunikationsnetzwerk – 4-6
-
4 stellt
ein Kommunikationsnetzwerk 400 in einer beispielhaften
Ausführungsform
der Erfindung dar. Das Kommunikationsnetzwerk 400 beinhaltet
mehrere Knoten 401-409, die in der Lage sind, miteinander über ein
LAN 410 zu kommunizieren. LAN 410 umfasst jede
Art eines zuverlässigen
Netzwerks, bei dem ein Zugriff auf die Knoten 401-409 von
dem LAN 410 nicht durch Firewalls oder andere Schutzmechanismen
blockiert ist. In anderen Ausführungsformen
kann LAN 410 ein Intranet, ein MAN, ein WAN oder eine andere
Art von Unternehmensnetzwerk umfassen. Ein Knoten kann jegliches
System, Gerät,
Komponente, Karte usw. für
das Kommunikationsnetzwerk 400, wie zum Beispiel einen
Computer, umfassen. Die Knoten 401-409 sind voneinander
entfernt, was bedeutet, dass sie miteinander über LAN 410 kommunizieren.
Das Kommunikationsnetzwerk 400 kann andere Knoten, Komponenten,
Geräte
oder Systeme, die nicht in 4 gezeigt
sind, beinhalten.
-
Man
nehme an, dass der Knoten 401 ein Steuerknoten ist, der
von Netzwerkpersonal betrieben wird. Man nehme ferner an, dass das
Netzwerkpersonal einen großen
Datenstrom an alle Knoten 402-409 in dem Kommunikationsnetzwerk 400 übertragen
will. Zum Beispiel könnte
es erforderlich sein, dass das Netzwerkpersonal neue Software an
den Knoten 402-409 installiert, wobei die Software
einen großen
Datenstrom umfasst. Es wäre
für das
Netzwerkpersonal ineffizient, die Software einzeln auf jeder Maschine
zu installieren. Würde
das Netzwerkpersonal versuchen, die Software gleichzeitig als einen
großen
Datenstrom an mehrere Knoten 402-409 zu übertragen,
könnte
die Bandbreite des LAN 410 beeinträchtigt werden. Das Netzwerkpersonal
kann den selbstreplizierenden Code gemäß der Erfindung verwenden,
um effizient Software an die Knoten 402-409 zu übertragen,
ohne die Bandbreite des LAN 410 zu beeinträchtigen.
-
In
dieser Ausführungsform
wird der selbstreplizierende Code als ein „streaming worm" (ausströmender Wurm)
bezeichnet. Ein „streaming
worm" (sworm) umfasst
jegliche Software, Code, oder Anweisungen, die sich replizieren
können,
als auch ein Stück
eines beliebigen Ladecodes, auf einer Gruppe an Knoten in einem
Kommunikationsnetzwerk, während
er Daten zwischen den Knoten strömen
lässt. Jeder
Sworm besteht aus einem oder mehreren Swormlets, die in einer Anzahl
an Topologien angeordnet werden können. Ein Sworm wird in einem
Absendevorgang vermehrt, der die Übertragung des Datenstroms
steuern kann, welche Knoten zu beinhalten sind usw.
-
Jedes
Swormlet beinhaltet einen Swormlet-Code, einen Ladecode und einen
Datenstrom. Der Swormlet-Code umfasst den Code, der verwendet wird,
um neue Swormlets auf Knoten zu vermehren, den Datenstrom zwischen
den Knoten aufrechtzuerhalten usw. der Ladecode umfasst den Code,
der lokal an einem Knoten durchgeführt wird. Der Datenstrom umfasst
die Daten, die in dem Kommunikationsnetzwerk 400 übertragen
werden.
-
Man
nehme an, dass der Knoten 401 einen Absendevorgang (nicht
gezeigt) beinhaltet, der den Sworm absendet. Weil Netzwerkpersonal
einen großen
Datenstrom (d.h. Software) an viele Knoten des Netzwerks 400 übertragen
will, könnte
ein linearer Sworm die effizienteste Topologie für das Übertragen großer Datenströme sein.
Ein linearer Strom könnte am
besten funktionieren, da die Bandbreite des LAN 410 nicht
zwischen den Swormlets des Sworms geteilt werden muss. Es muss nur
eine Kopie des großen
Datenstroms über
das LAN 410 gleichzeitig mit dem linearen Sworm übertragen
werden, wie unten dargestellt.
-
5 stellt
eine lineare Sworm-Topologie in einer beispielhaften Ausführungsform
der Erfindung dar. Um die lineare Sworm-Topologie zu erzeugen, findet
Folgendes statt. Der Absendevorgang 501 in Knoten 401 vermehrt
Swormlet 502 (in 5 als S-LET
bezeichnet). Insbesondere initiiert der Absendevorgang 501 einen
Netzwerkvorgang 521 am Knoten 401. Der Netzwerkvorgang 521 ist
so konfiguriert, dass er an Knoten 401 abläuft, um
einen Kommunikationskanal mit einem entfernten Endknoten einzurichten
und als eine Leitung für
den Programmcode, die Steuerinformation und den Datenstrom, die
von und zu dem entfernten Knoten gesandt werden, zu agieren. Somit
läuft der
Netzwerkvorgang 521 am Knoten 401 ab, um einen
Kommunikationskanal mit dem Knoten 402 einzurichten. Der
Absendevorgang 501 verwendet dann den Netzwerkvorgang 521 als eine
Leitung, um eine Kopie des Swormlet-Codes über den Kommunikationskanal
zu übertragen,
wie durch den Pfeil 525 dargestellt.
-
Der
Netzwerkvorgang 521 kann die Kopie des Swormlet-Codes an den Knoten 402 unter
Verwendung eines Remote Shell-Commands, wie zum Beispiel remsh,
rsh oder ssh, übertragen.
Der Netzwerkvorgang 521 kann das Remote Shell-Command verwenden,
um ein lineares Perl-Bootstrap-Script, welches
den Swormlet-Code über
den Kommunikationskanal vom Knoten 401 zieht, zu übertragen
und entfernt am Knoten 402 auszuführen. Jedes Swormlet 502 erstreckt
sich über
zwei Knoten in dieser Ausführungsform.
-
Der
Knoten 402 führt
den Swormlet-Code aus, um einen Haupt-Swormlet-Vorgang 522,
einen Routingvorgang 523 und einen Ladevorgang 524 für Swormlet 502 auszuführen. Der
Haupt-Swormlet-Vorgang 522 empfängt den Ladecode von dem Absendevorgang 501 über den
Kommunikationskanal, wie durch Pfeil 526 dargestellt. Der Haupt-Swormlet-Vorgang 522 repliziert
den Ladecode und leitet die Kopie des Ladecodes an den Ladevorgang 524 weiter.
Der Haupt-Swormlet-Vorgang 522 leitet den Ladecode an ein
anderes Swormlet weiter (falls erforderlich), wie unten beschrieben
ist. Der Haupt-Swormlet-Vorgang 522 initiiert den Ladevorgang 524,
um den Ladecode auszuführen.
-
Um
die lineare Sworm-Topologie zu bilden, vermehrt der Haupt-Swormlet-Vorgang 522 Swormlet 503.
In anderen Ausführungsformen
kann der Haupt-Swormlet-Vorgang 522 andere Swormlets vermehren.
Durch das Vermehren von Swormlet 503 initiiert der Haupt-Swormlet-Vorgang 522 einen
Netzwerkvorgang 531 am Knoten 402. Der Netzwerkvorgang 531 läuft am Knoten 402 ab,
um einen Kommunikationskanal mit dem Knoten 403 einzurichten. Swormlet 502 verwendet
den Netzwerkvorgang 531 dann als eine Leitung, um eine
Kopie des Swormlet-Codes über
den Kommunikationskanal zu übertragen,
wie von Pfeil 535 dargestellt.
-
Der
Knoten 403 führt
den Swormlet-Code aus, um einen Haupt-Swormlet-Vorgang 532,
einen Routingvorgang 533 und einen Ladevorgang 534 für Swormlet 503 durchzuführen. Der
Haupt-Swormlet-Vorgang 532 von Swormlet 503 empfängt einen Ladecode
von dem Haupt-Swormlet-Vorgang 522 von Swormlet 502 über den
Kommunikationskanal, wie durch Pfeil 536 dargestellt. Der
Haupt-Swormlet-Vorgang 532 repliziert den Ladecode und
leitet die Kopie des Ladecodes an den Ladevorgang 534 weiter.
Der Haupt-Swormlet-Vorgang 532 leitet
den Ladecode an ein anderes Swormlet weiter (falls erforderlich).
Der Haupt-Swormlet-Vorgang 532 initiiert den Ladevorgang 534,
um den Ladecode auszuführen.
-
Die
Swormlets werden auf ähnliche
Weise durch die Knoten 401-409 des Kommunikationsnetzwerks 400 (siehe 4)
vermehrt, wie es vom Absendevorgang 501 bestimmt wurde.
Sobald die Swormlets vermehrt wurden und Kommunikationskanäle zwischen
den Knoten 401-409 eingerichtet sind, kann ein
Datenstrom zwischen den Knoten 401-409 übertragen
werden.
-
Der
Absendevorgang 501 überträgt einen Datenstrom
an das Swormlet 502. Der Datenstrom in dieser Ausführungsform
umfasst Software, welche ein großer Datenstrom ist. Der Haupt-Swormlet-Vorgang 522 initiiert
den Routingvorgang 523 im Swormlet 502. Der Routingvorgang 523 in
Swormlet 502 empfängt
den Datenstrom von dem Absendevorgang 501 über den
Kommunikationskanal, wie durch den Pfeil 527 dargestellt.
Der Routingvorgang 523 repliziert den Datenstrom und leitet
eine Kopie des Datenstroms an den Ladevorgang 524 weiter.
Der Routingvorgang leitet den Datenstrom an ein anderes Swormlet
weiter (falls erforderlich), wie vom Absendevorgang 501 adressiert
oder spezifiziert. Der Ladevorgang 524 empfängt die
Kopie des Datenstroms von dem Routingvorgang 523. Der Ladevorgang 524 führt den
Ladecode aus, um den Datenstrom lokal zu verwalten. Zum Beispiel
kann der Ladecode den Ladevorgang 524 dazu veranlassen,
den Datenstrom in einem bekannten Verzeichnis im Knoten 402 zu
speichern.
-
Der
Routingvorgang 523 kann auch Steueranweisungen vom Absendevorgang 501 empfangen. Der
Absendevorgang 523 kann die Steueranweisungen am Ladevorgang 524 ausführen. Der
Routingvorgang 523 kann die Steueranweisungen auch an ein
anderes Swormlet (falls erforderlich) oder einen anderen Knoten
weiterleiten.
-
Beim
Ausführen
des Ladecodes kann der Ladevorgang 524 Ausgabedaten erzeugen.
Der Ladevorgang 524 leitet die Ausgabedaten an den Haupt-Swormlet-Vorgang 522 weiter.
Der Haupt-Swormlet-Vorgang 522 empfängt die Ausgabedaten vom Ladevorgang 524 und/oder
Statusinformationen von einem beliebigen der Vorgänge. Der Haupt-Swormlet-Vorgang 522 bündelt die
Ausgabedaten und/oder Statusinformationen vom Ladevorgang 524 und
von Child Swormlets und leitet die Ausgabedaten und/oder Statusinformationen über den Kommunikationskanal
weiter, wie durch Pfeil 528 dargestellt. Die Statusinformationen
können
eine Rückmeldung über den
Erfolg des Speicherns des großen
Datenstroms an Knoten 402 umfassen. Der Netzwerkvorgang 521 hält den Kommunikationskanal
zwischen den Knoten 401 und 402 aufrecht, derart
dass Ausgabedaten und/oder Statusinformationen zwischen den Knoten
ausgetauscht werden können.
-
Der
Haupt-Swormlet-Vorgang 523 in Swormlet 503 initiiert
den Routingvorgang 533. Der Routingvorgang 533 in
Swormlet 503 empfängt
den Datenstrom (d.h. Software in dieser Ausführungsform) von dem Routingvorgang 523 in
Swormlet 502 über
den Kommunikationskanal, wie durch Pfeil 537 dargestellt.
Der Routingvorgang 533 repliziert den Datenstrom und leitet
eine Kopie des Datenstroms an den Ladevorgang 534 weiter.
Der Routingvorgang 523 leitet den Datenstrom an ein anderes
Swormlet (falls nötig)
weiter, wie im Absendevorgang 501 adressiert oder spezifiziert.
Der Ladevorgang 534 empfängt die Kopie des Datenstroms
vom Routingvorgang 533. Der Ladevorgang 534 führt den
Ladecode aus, um den Datenstrom lokal zu verwalten. Zum Beispiel kann
der Ladecode den Ladevorgang 534 dazu veranlassen, den
Datenstrom in einem bekannten Verzeichnis im Knoten 403 zu
speichern.
-
Der
Absendevorgang 501 kann bestimmen, welche Knoten den Datenstrom
empfangen sollen, und in welcher Reihenfolge, basierend auf einem
Abbild, einer Reihe von Anweisungen, einem Adressiersystem usw.
Der Absendevorgang 501 kann den Datenstrom an ein oder
mehrere Swormlets 502-504 adressieren oder ihn
an alle Swormlets 502-504 senden. Basierend auf
der Bestimmung durch den Absendevorgang 501 leitet der
Routingvorgang 533 den Datenstrom zum nächsten Knoten weiter oder bereitet
das Weiterleiten des Datenstroms zum nächsten Knoten oder zusätzlichen
anderen Child-Knoten vor.
-
Der
Routingvorgang 533 kann auch Steuerinformationen vom Routingvorgang 523 empfangen. Der
Routingvorgang 533 kann die Steuerinformationen am Ladevorgang 534 ausführen. Der
Routingvorgang 533 kann außerdem die Steuerinformationen
an ein anderes Swormlet weiterleiten (falls erforderlich).
-
Beim
Ausführen
des Ladecodes kann der Ladevorgang 534 Ausgabedaten erzeugen.
Der Ladevorgang 534 leitet die Ausgabedaten an den Haupt-Swormlet-Vorgang 522 weiter.
Der Haupt-Swormlet-Vorgang 532 kann die Ausgabedaten von
dem Ladevorgang 534 und/oder Statusinformationen von einem
beliebigen der Vorgänge
empfangen. Der Haupt-Swormlet-Vorgang 532 bündelt die
Ausgabedaten und/oder Statusinformationen von dem Ladevorgang 534 und
von Child Swormlets und leitet die Ausgabedaten und/oder Statusinformationen über den
Kommunikationskanal weiter, wie durch Pfeil 538 dargestellt.
Die Statusinformationen können
eine Rückmeldung über den
Erfolg des Speicherns des großen
Datenstroms auf Knoten 403 umfassen. Der Netzwerkvorgang 531 hält den Kommunikationska nal
zwischen den Knoten 402 und 403 aufrecht, derart
dass Daten und/oder Statusinformationen zwischen den Knoten ausgetauscht
werden können.
-
Der
Datenstrom kann auf ähnliche
Weise durch die Knoten 404-409 des Kommunikationsnetzwerks 400 übertragen
werden (siehe 4), wie vom Absendevorgang 501 bestimmt.
Da der Datenstrom in diesem Beispiel Software ist, kann das Netzwerkpersonal
die Software auf jedem Knoten 402-409 installieren.
Die Swormlets können
nach dem Übertragen
des Datenstroms zerstört
werden oder verwendet werden, um andere Datenströme zu übertragen.
-
Das Übertragen
des Datenstroms auf die Knoten 402-409 des Kommunikationsnetzwerks 400 in 4 gemäß dem oben
beschriebenen Vorgang stellt viele Vorteile bereit. Erstens benötigen die
Knoten 402-409 anfänglich keinen besonderen Code,
um den Datenstrom zu empfangen. Die Swormlets werden sich auf den
Knoten 402-409 replizieren, um den benötigten Code
bereitzustellen. Die Knoten können dann
den Code parallel zueinander ausführen, um den Datenstrom effizienter
zu übertragen.
Zweitens kann das Netzwerkpersonal Rückmeldungen über den
Status der Übertragung
erhalten. Jedes Swormlet hält
den Kommunikationskanal zwischen den Knoten aufrecht und stellt
Statusinformationen zurück
and den Absendevorgang 501 bereit. Somit kann das Netzwerkpersonal
die Statusinformationen einsehen, um den Status der Datenstromübertragung
zu bestimmen. Drittens wird die Bandbreite des LAN 410 sehr
wahrscheinlich durch die Datenstromübertragung nicht beeinträchtigt.
Lediglich eine Kopie des Datenstroms sollte auf dem LAN 410 zu
einem gegebenen Zeitpunkt in einer linearen Topologie vorhanden
sein, da die Knoten die eine Kopie des Datenstroms von Block zu
Block, von Knoten zu Knoten weitergeben, bis der Endknoten erreicht
ist.
-
Unter
der Annahme, dass jeder Knoten 402-409 nun eine
Kopie der vorher übertragenen Software
beinhaltet, ist es dem Netzwerkpersonal weiterhin möglich, die
Software ferngesteuert auf den Knoten 402-409 zu
installieren. Das Netzwerkpersonal kann einen anderen Sworm verwenden,
um die ferngesteuerte Installation durch die Übertragung eines Datenstroms,
der Anweisungen für
das Installieren der Software beinhaltet, durchzuführen. Der
Datenstrom wird sehr wahrscheinlich nicht groß sein, vor allem im Vergleich
zu der Software selbst. Somit könnte
für das Übertragen
kleinerer Datenströme
im Kommunikationsnetzwerk 400 ein linearer Sworm nicht
die effizienteste Topologie sein, da die Ausbreitungsverzögerung zu
lang sein könnte.
Ein verzweigter Sworm könnte
eine bessere Topologie für
das Übertragen
kleinerer Datenströme
sein.
-
6 stellt
eine verzweigte Sworm-Topologie in einer beispielhaften Ausführungsform
der Erfindung dar. Um die verzweigte Sworm-Topologie zu schaffen,
findet Folgendes statt. Der Absendevorgang 501 im Knoten 401 vermehrt
Swormlet 602 (in 6 als s-let
bezeichnet). Swormlet 602 richtet einen Kommunikationskanal
mit dem Knoten 402 ein, so dass Swormlet 602 sich über zwei
Knoten 401-402 erstreckt. Swormlet 602 kann
einen Netzwerkvorgang, einen Haupt-Swormlet-Vorgang, einen Routingvorgang
und einen Ladevorgang beinhalten, die in dieser Ausführungsform
aus Gründen
der Kürze
nicht gezeigt sind.
-
Basierend
auf einer vom Absendevorgang 501 bereitgestellten Liste
vermehrt sich Swormlet 602 zu Swormlets 603 und 604.
Swormlet 603, welches im Knoten 402 arbeitet,
richtet einen Kommunikationskanal mit dem Knoten 403 ein,
so dass Swormlet 603 sich über zwei Knoten 402-403 erstreckt.
Swormlet 603 vermehrt sich zu Swormlets 605-606.
Swormlet 605, welches im Knoten 403 arbeitet,
richtet einen Kommunikationskanal mit dem Knoten 405 ein,
so dass sich Swormlet 605 über zwei Knoten 403 und 405 erstreckt.
Swormlet 606, welches im Knoten 403 arbeitet,
richtet einen Kommunikationskanal mit dem Knoten 406 ein,
so dass sich Swormlet 606 über zwei Knoten 403 und 406 erstreckt.
Swormlet 604, welches im Knoten 402 arbeitet,
vermehrt sich zu Swormlets 607-608. Swormlet 607,
welches im Knoten 404 arbeitet, richtet einen Kommunikationskanal
mit dem Knoten 407 ein, so dass sich Swormlet 607 über zwei
Knoten 404 und 407 erstreckt. Swormlet 608,
welches im Knoten 404 arbeitet, richtet einen Kommunikationskanal
mit dem Knoten 408 ein, so dass sich Swormlet 608 über zwei Knoten 404 und 408 erstreckt.
Die Swormlets können auf
mehrere andere Knoten vermehrt werden, die nicht in 6 gezeigt
sind.
-
Wenn
die Kommunikationskanäle
eingerichtet sind, überträgt der Absendevorgang 501 eine
Kopie des Datenstroms an Swormlet 602, wie durch Pfeil 625 dargestellt.
Der Datenstrom in dieser Ausführungsform
umfasst eine Reihe von Anweisungen zum Installieren von Software
an den Knoten. Swormlet 602 leitet eine Kopie des Datenstroms
an Swormlet 603 weiter, wie durch Pfeil 626 dargestellt und
leitet eine Kopie des Datenstroms an Swormlet 604 weiter,
wie durch Pfeil 627 dargestellt. Swormlet 603 leitet
eine Kopie des Datenstroms an Swormlet 605 weiter, wie
durch Pfeil 628 dargestellt und leitet eine Kopie des Datenstroms
an Swormlet 606 weiter, wie durch Pfeil 629 dargestellt.
Swormlet 604 leitet eine Kopie des Datenstroms an Swormlet 607 weiter, wie
durch Pfeil 630 dargestellt und leitet eine Kopie des Datenstroms
an Swormlet 608 weiter, wie durch Pfeil 631 dargestellt.
-
Die
Swormlets leiten den Datenstrom an jeden Knoten weiter, der vom
Absendevorgang 501 angewiesen ist, den Datenstrom zu empfangen. 6 zeigt
eine binäre
verzweigte Topologie zur Übertragung
von Daten. Es kann jedoch auch eine asymmetrische verzweigte Topologie
verwendet werden.
-
Mehrere
Swormlets 602-608 können den Datenstrom paral lel
zueinander ausströmen,
um den Datenstrom effizienter zu übertragen. Das Übertragen
des Datenstroms auf die oben beschriebene Weise stellt jedem Knoten
den Datenstrom schnell und effizient bereit. Der Datenstrom in dieser
Ausführungsform
umfasst Anweisungen zum Installieren von Software. Somit kann Netzwerkpersonal
schnell und effizient die Anweisungen an mehrere Knoten übertragen,
derart dass die Software an den Knoten installiert werden kann.
-
In 6 agiert
der Absendevorgang 501 als der einzige Absendevorgang für den Sworm.
In anderen Ausführungsformen
kann ein Ladevorgang jedes beliebigen der Swormlets 602-608 als
ein Absendevorgang für
einen anderen neuen und unabhängigen Sworm
agieren. Somit kann eine komplexe Verzweigung von Sworms auf rekursive
Art konstruiert werden.