-
FELD DER ERFINDUNG
-
Die
Erfindung bezieht sich auf das Feld der Informationstechnologie,
und im Speziellen auf eine Plattform, die eingerichtet ist, um Sicherungen
großer
Netzwerke und anderer Daten oder Übertragungen über effiziente,
nachrichtenbasierte Sitzungen zu initiieren und zu verarbeiten.
-
HINTERGRUND DER ERFINDUNG
-
Der
gesteigerte Bedarf an Datenunternehmens- und anderen Speicher-Lösungen hat
den Bedarf an Datensicherungs- und Verwaltungswerkzeugen verstärkt. Firmen,
Regierungs- und
Wissenschaftsorganisationen und Andere benötigen zu Archivierungszwecken
und weiteren Zwecken die verlässliche
Sicherung von Gigabyte, Terabyte oder mehr an Daten. Während physikalische
Speichermedien wie Speichernetzwerke, optische Speichermedien, RAID
(Redundant Arrays of Inexpensive Disks) oder andere Plattformen
die gesamte Archivierungskapazität,
die für
Datenverwalter verfügbar
ist, gesteigert haben, ist die Fähigkeit,
um große
Datensicherungen effizient auszuführen nicht immer ähnlich vorangeschritten.
-
Zum
Beispiel könnte
ein Netzwerkadministrator periodisch die Datensicherungen, die in
einem Netzwerkspeicher, wie beispielsweise ein Serverlaufwerk in
einem lokalen Netzwerk (LAN), gespeichert sind, extrahieren wollen,
und diese Daten zu einem sicheren Datensicherungsrepositorium an
einer entfernten Stelle transportieren wollen. Jedoch ist das Planen
und Ausführen
von Datentransporten in dieser Größenordnung unter Benutzung
von aktuellen Technologien nicht immer effizient. Zum Beispiel kann
der Administrator im Fall der Speicherung von LAN-Daten an einer
entfernten Stelle versuchen, die Menge an Daten unter Benutzung eines
herkömmlichen
Netzwerkprotokolls, wie beispielsweise das Transfer Control Protocol „TCP", zu bewegen.
-
Es
kann sich jedoch herausstellen, dass TCP als Transportlösung ein
ungeeignetes Mittel ist, um die Datensicherung mit einem entfernten
Host zu kommunizieren, teilweise deshalb, weil TCP dazu neigt, die
Daten in vergleichsweise kleine Pakete in der Größenordnung von wenigen 10 Byte
bis hin zu 1.000 Byte zu (zer)stückeln.
Wenn man versucht, Gigabytes von Original- oder Aktualisierungsdaten
von entfernten Host zu bewegen, wird diese Skala nicht für einen
effizienten Transport genügen.
Des Weiteren kann TCP, wenn man eine Datenflusssteuerung in dem
Kanal ausführt,
pausieren um nach verfügbarer
Bandbreite oder Ka pazität von
wenigen tausend Bytes zu suchen, anhalten und den verfügbaren Platz
in der Pipe (gepufferter Datenstrom/Pufferspeicher) füllen, und
dann auf zusätzliche
offene Schlitze warten. Ferner ist das Verschieben von Daten in
der Größenordnung
von Megabytes, Gigabytes oder mehr durch einen intermittierenden
Kanal bei solchen Größenordnungen
nicht effizient, wenn man die Granularität eines TCP API benutzt. Deshalb
sind bessere Datensicherungstechnologien für solche Größenordnungen wünschenswert.
Darüber
hinaus gibt es weitere Probleme.
-
US 2003/031172 A1 bezieht
sich auf eine TCP-Empfängerbeschleunigung.
Ein Datenpaket wird empfangen, wobei das Datenpaket einen Kopfteil,
Nutzdaten und einen Verbindungskontext umfasst. Der Empfänger umfasst
eine Analyse-Engine, welche den Kopfteil des empfangenen Paketes
klassifiziert. Um die Implementierung des TCP-Empfängers zu
optimieren, werden die Aufgaben des TCP-Empfängers partitioniert. Die Partition
der TCP-Empfängerverarbeitung
basiert auf der Ermittlung einer Nummer von einem Pfad. Die Pfade sind
als ein großer
Entscheidungsbaum mit mehreren Eingangspunkten gedacht. Ein ankommendes TCP-Segment
wird über
einen dieser Eingangspunkte zusammen mit einem gegebenen Pfad gemäß der Klassifizierung
des Segmentes geleitet. Das TCP-Segment, welches ein Kopfteil und
Nutzdaten umfasst, wird von einem Segmentvalidierungsmodul bearbeitet.
Während
der Kopfteil verarbeitet wird, werden die Daten in einem Pufferspeicher
gespeichert. Nach dem Verarbeiten werden die TCP-Nutzdaten aus dem
Speicher angefordert und zu einem Host gesendet.
-
US-B-6 223 2071 bezieht
sich auf Datenstrukturen für
eine Eingabe-Ausgabekomplettierungsportwarteschlange und ein Verfahren
für die
Benutzung derselben. Eine Technik für das Durchführen von
mehreren simultanen asynchronen Eingabe-/Ausgabeoperationen in Computerbetriebssystemen
wird beschrieben. Das E/A-Komplettierungsportobjekt ist ein EIA-Objekt
mit einer Warteschlange, die einen einzelnen Synchronisierungspunkt
sowie einen steuerbaren gleichzeitigen Zugriff für mehrere gleichzeitige asynchrone
E/A-Operationen
aufweist. Ein E/A-Komplettierungsport kann benutzt werden, um hunderte
von Netzwerk-E/A-Operationen zu synchronisieren.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine verbesserte Datenübertragungsvorrichtung
sowie ein verbessertes Datenübertragungsverfahren
anzugeben.
-
Diese
Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche gelöst.
-
Bevorzugte
Ausführungsformen
werden in den abhängigen
Ansprüchen
beschrieben.
-
Die
Erfindung, die diese und weitere Probleme, die in diesem Gebiet
bekannt sind, behebt, bezieht sich in einer Hinsicht auf ein System
und ein Verfahren für
nachrichtenbasierten, skalierbaren Datentransport, bei welchem ein
oder mehrere einzelne Server oder andere Knoten Datensicherungen
und weitere Informationen mit einem entfernten Speicherhost über eine
Kommunikations-Engine kommunizieren. In Ausführungsformen kann die Kommunikationsengine
eine Schnittstelle mit einer darunterliegenden Transportschicht,
wie beispielsweise TCP oder andere Protokolle, aufweisen und den
Datenfluss von dem entfernten Speicher vermitteln. Die Kommunikationsengine
kann die Daten, die transportiert werden sollen, in einen Satz von
Nachrichtenobjekten zerlegen, welche über Verbindungen, die in errichteten
Daten-Pipes gebündelt
werden, gepuffert werden. Die Einkapselung der Daten in fundamentale
Nachrichtenobjekte ermöglicht
die kontinuierliche Lieferung der Nutzdaten, da der Datentransfer
so lange fortgeführt
wird, wie die Verbindung nicht belegt und klar ist, im Gegensatz
z. B. zu reinen TCP-Transporten, welche ein „stotterndes" oder Stop-and-go-Verhalten zeigen
können.
In Ausführungsformen
kann eine anfängliche
Sitzung (Session) Daten über
mehr als eine Verbindung übertragen,
um die Kanalbenutzung zu maximieren. Die Kommunikationsengine kann
eine Kontrolle des Verkehrs, basierend auf der Abfrage von Abschluss-Anschlüssen (completion
ports) um den Abschluss einer Nachricht anzuzeigen oder auf anderen
Kanalmechanismen, durchführen,
aber im Allgemeinen wird das Bestätigen von individuellen Paketen
oder vergleichsweise kleineren Datenobjekten nicht benötigt. Durch
eine erfindungsgemäße Plattform
und ein erfindungsgemäßes Protokoll
können
hohe Datendurchsätze
erreicht werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 stellt
eine Abbildung der Anordnung eines Gesamtnetzwerkes für das Verarbeiten
von Datensicherungen und anderen Übertragungen gemäß einer
Ausführungsform
der Erfindung dar.
-
2 stellt
eine Architektur für
einen nachrichtenbasierten Datentransfer gemäß einer Ausführungsform
der Erfindung dar.
-
3 stellt
ein Zugangsdiagramm für
einen nachrichtenbasierten Datentransfer gemäß einer Ausführungsform
der Erfindung dar.
-
4 stellt
ein Flussdiagramm eines nachrichtenbasierten Datentransfers und
eines verknüpften
Protokolls gemäß einer
Ausführungsform
der Erfindung dar.
-
DETAILLIERTE BESCHREIBUNG
VON AUSFÜHRUNGSFORMEN
-
1 stellt
eine Architektur dar, in welcher ein System und ein Verfahren für nachrichtenbasierten
skalierbaren Datentransport gemäß einer
Ausführungsform
der Erfindung operieren kann. Wie in dieser Figur gezeigt, kann
in Ausführungsformen
ein Satz von Datenquellen 102 untereinander und mit entfernten
Ressourcen über
ein Netzwerk 104 kommunizieren. In Ausführungsformen kann der Satz
von Datenquellen 102 z. B. individuelle Server, Klienten
oder andere Knoten oder Einrichtungen umfassen, die über Festplatten,
Magnetbänder,
optische oder andere Speichermedien verfügen. Das Netzwerk 104 kann
in Ausführungsformen
ein LAN (Local Area Network) wie beispielsweise ein Ethernet-Netzwerk,
ein WAN (Wide Area Network) oder ein anderer Netzwerktyp oder Topologie
sein oder umfassen. Das Netzwerk 104 kann in weiteren Ausführungsformen
ein dediziertes Netzwerk für
den Zweck von Datensicherung, ein geteiltes (shared) Netzwerk, welches periodisch
für Datentransporte
benutzt wird, das Internet, oder weitere Netzwerke oder Einrichtungen
sein oder umfassen. Jedoch können
im Allgemeinen eine oder mehrere der Datenquellen in dem Satz von
Datenquellen 102 die Aufgabe haben, Daten im Ganzen oder
teilweise, auf einer periodischen oder anderen Basis und in vergleichsweise
großen
Mengen zu sichern.
-
In
Ausführungsformen
können,
wenn Datensicherungen oder andere Datenübertragungen wie gezeigt erzeugt
werden, die Daten, die von ein oder mehreren der Datenquellen in
dem Satz von Datenquellen 102 übertragen werden, zu einem
Speicherserver kommuniziert werden, welcher wiederum die Daten zu
einem Speicher 108 kommuniziert. Der Speicher 108 kann
in Ausführungsformen
Festplattenressourcen wie RAID-Bänke,
optische Medien wie z. B. wiederbeschreibbare CD-ROMs oder DVD-ROMs
oder andere, Magnetbandlaufwerke, elektronische Speichereinrichtungen
wie RAM, Flash-Speicher oder andere elektronische Komponenten, oder
andere Speichermedien sein oder umfassen. In Ausführungsformen
kann der Speicher 108 auch Datenspeicherressourcen wie
SANs (Storage Area Networks) oder andere Einrichtungen sein, umfassen
oder mit diesen eine Schnittstelle aufweisen. In Ausführungsformen
kann der Speicher 108 eingerichtet sein, um relativ große Mengen
von Datensicherungen, z. B. Megabytes, Gigabytes, Terabytes oder
mehr für Unternehmens-
und andere Zwecke, zu akzeptieren und zu speichern.
-
Wie
in
2 gezeigt kann gemäß einer Ausführungsform
der Erfindung jede der Quellen innerhalb des Satzes von Datenquellen
102 mit
einer Kommunikationsengine
110 kommunizieren, um eine Datentransportsitzung
mit einem Datenserver
106 oder einem anderen entfernten
oder lokalen Ziel zu initiieren, zu verwalten und auszuführen. Die
Kommunikationsengine kann ein API (Application Programming Interface)
112 sein
oder umfassen, welches Variablen, Aufrufe oder andere Schnittstellenparameter
an den Satz von Datenquellen
102 übergibt, um einen effektiven
Datentransfer auszuführen.
In den gezeigten Ausführungsformen
kann jede der Datenquellen in dem Satz von Datenquellen
102 eine
entsprechende Sitzung innerhalb eines Satzes von Sitzungen
114 erzeugen
oder mit einer solchen verknüpft
sein. Der Satz von Sitzungen
104 kann eine Warteschlange
von Eingabe-/Ausgabepuffern
116 umfassen,
wobei ein oder mehrere Eingabe-/Ausgabepuffer jeder Sitzung zugewiesen
sind. Andere Anordnungen von Sitzungen, Warteschlangen, Puffern
und anderen Ressourcen sind möglich.
Ein Beispiel eines erläuternden
Codes, welcher in Ausführungsformen
eine neue Sitzung aus einer Sitzungsobjektklasse instanziieren kann,
ist im Folgenden gezeigt: Tabelle
1 CSession
Object:
Client
Thread:
-
Ein
anderer Code, andere Sprachen oder Module oder andere APis sind
möglich.
-
Wie
gezeigt, kann jede der Sitzungen in dem Satz von Sitzungen 114 wiederum
mit einem Abfertigungsmodul in dem Satz von Abfertigungsmodulen 118 kommunizieren.
Der Satz von Abfertigungsmodulen 118 kann die Verbindung
mit einem oder mehreren eines Satzes von Verbindungen 120 sichern.
Der Satz von Verbindungen 120 (der eine oder mehrere umfassen
kann) kann in Ausführungsformen
mehrere mögliche
darunter liegende Kommunikationsmechanismen wie TCP über Winsock,
Pipes oder andere benutzen. Jede der Verbindungen in dem Satz von
Verbindungen 120, welche in einer logischen Pipe 122 vereint
sind, können
mit einem Speicherserver 106 oder anderen entfernten oder
lokalen Hosts oder Ressourcen kommunizieren. In Ausführungsformen
kann die Pipe 122 vor dem Errichten des Satzes von Verbindungen 120 innerhalb
dieser Struktur eingerichtet sein, aber es sind auch andere Einrichtungsphasen
und Konfigurationen möglich.
In Ausführungsformen
kann die Erfindung eine große
Zahl von Verbindungen in ein oder mehreren Pipes unterstützen oder
anwenden, z. B. in der Größenordnung
von 1.000 gleichzeitigen Verbindungen oder, abhängig von der Implementierung,
auch mehr.
-
Wie
gezeigt, kann der Speicherserver 106 eine Eingabe-/Ausgabe-Ziel-Warteschlange 124 umfassen, um
eingehenden oder ausgehenden Nachrichtenverkehr mit dem Speicherserver 106 oder
einem anderen Ziel zu puffern. Genauer gesagt können ein oder mehrere der Quellen
aus dem Satz von Datenquellen 102 einen Datentransfer zu
dem Speicherserver 106 über
die Kommunikationsengine 110 und verknüpfte Ressourcen, zu festgelegten,
per odischen, ausgewählten
oder anderen Zeitpunkten initiieren. Der Datentransfer kann z. B. das
Sichern einer Serverfestplatte oder anderen Speichern, das Erfassen
von großen
Mengen an wissenschaftlichen oder kommerziellen Daten oder andere
Datentransportaufgaben sein oder umfassen. Die Kommunikationsengine 110 kann
die residenten Daten von den einen oder mehreren Quellen aus dem
Satz von Quellen 102 in einen Satz von Nachrichtenobjekten
für ein
effizienteres Einreihen in die Warteschlange und eine effizientere Übertragung
zerlegen.
-
Wie
gezeigt, kann die Sitzung, die als Sitzung A in dem Satz von Sitzungen 114 gezeigt
ist, zwei Nachrichten, welche als Nachricht 1 und Nachricht 2 bezeichnet
sind, für
den Transfer zum Speicherserver 106 erzeugen. Diese und
andere Nachrichten können
in Ausführungsformen
die Größenordnung
von vielen Megabytes haben, aber auch größer oder kleiner sein. Die
ebenso gezeigte Sitzung B hat eine Nachricht, die als Nachricht
3 bezeichnet ist, für
den Transport zu dem Speicherserver 106 erzeugt. Die Sitzung
C ist als eine als Nachricht 4 bezeichnete Nachricht auf der Eingangsseite
empfangend gezeigt.
-
Die
Abfertigungsmodule in dem Satz von Abfertigungsmodulen 118 können mehrere
Nachrichtenströme
von dem Satz von Eingabe-/Ausgabepuffern 116 in ein oder
mehrere Verbindungen in dem Satz von Verbindungen 120 binden
und die Nachrichten von unterschiedlichen Sitzungen in die gleiche
Pipe von Verbindungen multiplexen. Wie gezeigt kommuniziert das
als D1 bezeichnete Abfertigungsmodul den Verkehr von Sitzung A,
welcher die Nachrichten 1 und 2 umfasst, zur Verbindung 1, während das
Abfertigungsmodul D2 den Nachrichtenstrom von und zu Sitzung B und
der Sitzung für
die Verbindung mit der Verbindung 2 kombiniert. Andere Kombinationen
sind möglich.
Wie gezeigt, kann die Kommunikationsengine 110, welche
mit dem Satz von Sitzungen 114 und dem Satz von Abfertigern 118 und
anderen Ressourcen interagiert, versuchen, die größtmögliche Anzahl
von hängigen
Nachrichten durch den Satz von Verbindungen 120 der Pipe 122 zu schicken,
um die größtmögliche Nutzung
der verfügbaren
Bandbreite zum Speicherserver 106 zu erreichen. In Ausführungsformen
können
einzelne Sitzungen in dem Satz von Sitzungen 114 unterschiedliche
Typen von Netzwerkverbindungen, wie beispielsweise Ports, Sockets
oder andere Parameter, für
unterschiedliche Nachrichten oder Sätze von Nachrichten spezifizieren.
-
Sowohl
jede der Datenquellen in dem Satz von Datenquellen, als auch einzelne
Verbindungen in dem Satz von Verbindungen 120 und andere
Verbindungen in der Transportkette zum Speicherserver 106,
können unterschiedliche
verfügbare
Bandbreiten oder andere Verbindungscharakteristiken haben. Die Warteschlange der
Eingabe-/Ausgabepuffer 116, zusammen mit anderen Übertragungsressourcen,
ermöglicht
das Puffern, um der langsamsten Verbindung oder den langsamsten
Verbindungen in dieser Kette, sowie unterschiedlichen Charakteristiken
des sender- und empfängerseitigen
Verkehrs Rechnung zu tragen, während
der Datentransport bei der größtmöglichen
Auslastung betrieben wird. Die Kommunikationsengine 110 kann
beispielsweise den Satz von Verbindungen 120 kontinuierlich
oder periodisch überprüfen, um
festzustellen, ob diese mit einem ausgehenden oder eingehenden Nachrichtenstrom
belegt sind.
-
In
Ausführungsformen
können
diese Prüfungen
oder Scans unter Benutzung der Abschluss-Porteinrichtung, welche unter der Microsoft
Windows Betriebssystemfamilie verfügbar ist, gemacht werden, gemäß dessen
der „GetQueuedCompletionStatus" und andere Anweisungen
Nachrichten zurückliefern
können,
welche das Absenden oder Nichtabsenden einer gegebenen Nachricht
von der Warteschlange anzeigen können. Da
die Kommunikationsengine 110, der Satz von Abfertigern 118 und
andere Ressourcen auf ein Nachrichtenobjekt als fundamentale Einheit
des Datentransfers angewiesen sein können, kann die gesamte Funktion
der Erfindung in den Ausführungsformen
auf schnelle, groß angelegte
Transfers gerichtet sein, da es dort keinen Stop-and-Go-Effekt aus
der Verarbeitung von einzelnen Teilen von Daten wie in einem reinen
TCP-Übertragungsmodus
gibt. Stattdessen kann erfindungsgemäß eine vergleichsweise große Nachricht
erzeugt werden, in eine Warteschlange der Eingabe-/Ausgabepuffer 116 eingereiht
werden, und für
die Übertragung
zu dem Speicherserver 106 oder ein anderes Ziel freigegeben
werden.
-
In
Ausführungsformen
kann jede Sitzung aus dem Satz von Sitzungen 114 oder die
Kommunikationsengine 110 warten, um die Warteschlange aufzufüllen, bis
die Sitzung selbst feststellt, dass die Übertragung des Nachrichtenobjektes
abgeschlossen ist. Da die Aufgabe, den Status zu bestätigen, auf
der Senderseite ist, gibt es keine Feedback-Schleife von der Empfängerseite,
womit eine solche Art von Overhead vermieden wird. Der Satz von
Sitzungen 114 kann stattdessen auf eine Bestätigung,
dass sich ein Platz in der Warteschlange geöffnet hat, von der Warteschlange
der Eingabe-/Ausgabepuffer 116 warten, um die nächste Nachricht
zur Transmission vorzubereiten. Der Satz von Sitzungen 114 könnte daher
nicht versuchen, die Warteschlange wieder aufzufüllen bis alle Nachrichteneinheiten
verarbeitet sind. Der Satz von Sitzungen 114 kann eine
Time-out-Funktion umfassen, um eine Nachricht aus der Warteschlange
der Eingabe-/Ausgabepuffer 116 zu entfernen, wenn der entsprechende
Eingabe-/Ausgabepuffer das Absenden der Nachricht zu dem Satz von Verbindungen 120 nicht
innerhalb einer festen Zeit, wie beispielsweise eine Minute, bestätigt. Der
Satz von Sitzungen 114 kann andere Time-out- oder weitere
Prüfungskriterien,
wie beispielsweise variable Verzögerungszeiten,
eine feste oder variable Zahl von wiederholten Versuchen, die gemacht
werden sollen, bevor eine Nachricht getilgt wird, oder weitere,
anwenden.
-
Jedes
der Nachrichtenobjekte selbst kann über die Verbindungen in dem
Satz von Verbindungen 120 unter Benutzung von TCP selbst
als Protokoll auf niedrigerer Ebene kommuniziert werden. Andere
Protokolle sind möglich.
Weil die Kommunikationsengine 110 und deren verknüpfte nachrichtenbasierte
Protokolle eine Flusskontrolle auf höhere Ebene steuern, können TCP-Datagramme
ohne kleine Flusskontrolle, Fehlerüberprüfung oder andere Verarbeitungen
fließen,
welche dazu neigen würden,
große,
skalierbare Transfers des Typs, der von Ausführungsformen der Erfindung
gesteuert wird, zu verlangsamen.
-
In
Ausführungsformen
können
die Kommunikationsengine 110, API 112 und andere
Ressourcen Schichten des Sicherheitsschutzes einführen, um
die Daten, die zu dem Speicherserver 106 oder anderen Zielen
transportiert werden, zu schützen.
Zum Beispiel kann jede Sitzung in dem Satz von Sitzungen 114 oder Verbindung
in dem Satz von Verbindungen 120 über digitale Zertifikate, wie
beispielsweise Kerberos, X.509 oder andere Objekte, sichere Socketschichten
oder anderen Mechanismen authentifiziert werden, bevor zugelassen
wird, dass diese in der Pipe 122 vereinigt werden. Individuelle
Nachrichten können
ebenso selbst verschlüsselt
sein, um das Abfangen oder Verändern
der Daten, welche zum Speicherserver 106 bewegt werden,
zu verhindern. Zahlreiche Sicherheits-, Verschlüsselungs- oder andere Techniken,
wie beispielsweise Microsoft Security Support Provider Interface
(SSPI), Public Key wie beispielsweise RSA-Standard, private Schlüssel, wie
z. B. DES(Digital Encryption System)-Mechanismen, oder weitere,
können
angewendet werden, um den Inhalt von Nachrichten oder andere Aspekte
des Übertragungsvorgangs
zu schützen.
In Ausführungsformen
können
die Authentisierung, Verschlüsselung
und verwandte Informationen in der Schicht von API 112 exponiert
sein.
-
3 zeigt
einen Satz von Zustandsmaschinen 126, welche sukzessive
Zustände
des Kommunikationsablaufs gemäß einer
Ausführungsform
der Erfindung zeigen. Wie in dieser Figur gezeigt, kann API 112 eine Schnittstelle
darstellen, um Kommunikationsressourcen aufzurufen, um einen nachrichtenbasierten
Datentransport, wie beispielsweise Serversiche rung, eine Aufnahme
von großen
Datenmengen, wie beispielsweise wissenschaftliche oder kommerzielle
Daten, oder andere Zwecke zu bewirken. Das Liefern von Nachrichten über. den
Satz von Sitzungen 114 kann in Ausführungsformen verlässlich in
dem Sinn sein, dass individuelle Nachrichten entweder als Ganzes übertragen
werden oder für
die Wiederübertragung
in einer Warteschlange eingereiht werden. Wie gezeigt, können mehrere
Sitzungen zu mehreren Zielen eingerichtet sein, zur Veranschaulichung
verbindet Sitzung 1 mit Ziel 1, Sitzung 2 verbindet mit Ziel 1,
und Sitzung 3 verbindet mit Ziel 3. Wie gezeigt können Sitzung
1 und Sitzung 2 zwischen Zuständen
1 und 2 kreisen, während
diese auf das Abschließen
der Übertragung
der jeweiligen Nachrichten zum Ziel 1 oder auf andere Auslöse-Ereignisse warten. Die
Kommunikation mit Ziel 1 kann über
die Zustandsmaschine der Verbindung 1 für die Sitzung 1, und die Zustandsmaschine
der Verbindung 2 für
die Sitzung 2 erfolgen. Jede der Verbindungen 1 oder 2 kann mit
verknüpften
Verschlüsselungs-
oder Authentifizierungszustandsmaschinen kommunizieren, um sich
gegen das nichtautorisierte Anzeigen oder Verändern von Nachrichtenobjekten
abzusichern. Jede der Verbindungen 1 oder 2 kann gleichermaßen mit
einer entsprechenden Socket-EIA-Zustandsmaschine kommunizieren,
welche den Zugriff auf entsprechende Socket-1- und Socket-2-Verbindungen
zum Ziel 1 reguliert. Die Sitzung 3 kann mit ähnlichen Zustandsmaschinen
kommunizieren, welche die Übertragung,
Verschlüsselung,
Authentifizierung und Socketverbindungen zum Ziel 3 verarbeiten.
In Ausführungsformen
kann die Transmission von individuellen Nachrichten asynchron sein,
so dass Nachrichten gemäß der Kanalbelegung
und anderer Faktoren in Warteschlangen eingereiht und freigegeben
werden können,
anstatt dass dies gemäß Zeitschlitzen
vorgenommen wird. Das Erzeugen von individuellen Verbindungen und
Sitzungen kann in manchen Ausführungsformen
gleichermaßen
asynchron sein. Zusätzliche
Zustandmaschinen und Verbindungen sind möglich, und für jede Zustandsmaschine
oder Prozess sind andere Zustände
möglich.
-
Die
gesamte Datentransportverarbeitung ist in 4 illustriert.
In Schritt 402 werden ein oder mehrere Sitzungen in dem
Satz von Sitzungen 114 erzeugt. In Schritt 104 kann
eine Sitzungssynchronisierungsnachricht von einer Datenquelle in
den Satz von Datenquellen 102 gesendet werden und zu dem
Ziel-Eingabe-/Ausgabepuffer 124 des Speicherservers 106 gesendet
werden. In Schritt 406 kann eine Ausführungsnachricht für die Sitzungssynchronisierung
zum Speicherserver 106 gesendet werden. In Schritt 408 kann
der Speicherserver 106 die Sitzungsanfrage akzeptieren.
-
In
Schritt 410 kann eine Sitzungssynchronisierungsbestätigungsnachricht
von dem Ziel-Eingabe-/Ausgabepuffer 124 des
Speicherservers 106 zu dem entsprechenden Eingabe-/Ausgabepuffer in
dem Satz von Eingabe-/Ausgabepuffern 114 für die anfordernde
Datenquelle gesendet werden. In Schritt 412 kann eine Ausführungsnachricht
für die
Sitzungsbestätigung
zu der absendenden Datenquelle in dem Satz von Datenquellen 102 gesendet
werden. In Schritt 414 kann die sendende Datenquelle eine
erste Nachricht, die als Nachricht 1 bezeichnet ist, zu ihrem verknüpften Eingabe-/Ausgabepuffer
in dem Satz von Eingabe-/Ausgabepuffern 114 senden. In
Schritt 416 kann die sendende Datenquelle eine zweite Nachricht,
die als Nachricht 2 bezeichnet ist, zu ihrem verknüpften Eingabe-/Ausgabepuffer
in dem Satz von Eingabe-/Ausgabepuffern 114 senden. In Schritt 418 kann
die sendende Datenquelle eine dritte Nachricht, die als Nachricht
3 bezeichnet ist, zu ihrem verknüpften
Eingabe-/Ausgabepuffer in dem Satz von Eingabe-/Ausgabepuffern 114 senden.
In Schritt 420 kann die Datenquelle eine Fehler-Nachricht
empfangen, die anzeigt, dass der entsprechende Eingabe-/Ausgabepuffer
voll ist, so dass Nachricht 3 nicht in der Warteschlange akzeptiert
wurde. In Schritt 422 kann die Nachricht 1 zu dem Ziel-Eingabe-/Ausgabepuffer 124 des
Speicherservers 106 gesendet werden. In Schritt 424 kann
eine Ausführungsnachricht
für die Übertragung
der Nachricht 1 zum Speicherserver 106 oder einem anderen
Ziel gesendet werden. In Schritt 426 kann eine Bestätigungsnachricht,
welche das Empfangen der Nachricht 1 bestätigt, zu dem Eingabe-/Ausgabepuffer
der Datenquelle dieser Nachricht gesendet werden. In Schritt 428 kann
eine Ausführungsnachricht
für die
Nachricht 1 zu der entsprechenden Datenquelle gesendet werden.
-
In
Schritt 430 kann die Nachricht 2 zu dem Ziel-Eingabe-/Ausgabepuffer 120 des
Speicherservers 106 oder einem anderen Ziel gesendet werden.
In Schritt 432 kann eine Ausführungsnachricht für die Nachricht
2 zu dem Speicherserver 106 gesendet werden. In Schritt 434 kann
die Nachricht 3 erneut zu dem Eingabe-/Ausgabepuffer gesendet werden,
der der Datenquelle dieser Nachricht entspricht. In Schritt 436 kann
eine Bestätigungsnachricht,
die den Empfang der Nachricht 2 mit einer Fenstergröße (WndSize)
von null Einheiten anzeigt, zu dem Eingabe-/Ausgabepuffer der Datenquelle
für diese
Nachricht gesendet werden. In Schritt 438 kann eine Ausführungsnachricht
für die
Nachricht 2 zu dieser Quelle gesendet werden. In Schritt 440 kann
eine Nachricht 4 von einer Datenquelle aus dem Satz von Datenquellen 102 zu
dem entsprechenden Eingabe-/Ausgabepuffer aus der Warteschlange
von Eingabe-/Ausgabepuffern 116 gesendet werden.
-
In
Schritt 442 empfängt
die Client-Anwendung oder eine andere Ressource, die die Nachricht
1 empfangen soll, die Nachricht 1 von dem Ziel-Eingabe-/Ausgabepuffer 124.
In Schritt 444 kann eine Bestätigungsnachricht für die Nachricht
2 mit einer Fenstergröße (WndSize)
von einer Einheit an den entsprechenden Eingabe-/Ausgabepuffer der
Quelle dieser Nachricht gesendet werden. In Schritt 446 kann
die Nachricht 3 zu dem Ziel-Eingabe-/Ausgabepuffer 124 des Speicherservers 106 gesendet
werden. In Schritt 448 kann die Verarbeitung enden, sich
wiederholen oder zu einem zurückliegenden
Verarbeitungspunkt zurückkehren.
-
Die
vorangehende Beschreibung der Erfindung ist illustrativ, und Änderungen
in der Konfiguration und Implementierung sind dem Fachmann möglich. Während zum
Beispiel die Erfindung in den Ausführungsformen in Bezug auf mehrere
Datenquellen beschrieben wurde, die über eine Kommunikationsverbindung
mit einem entfernten Host kommunizieren, können in Ausführungsformen
ein oder mehrere Knoten oder Sitzungen über getrennte physikalische
oder logische Verbindungen mit einem entfernten Datenhost oder einem
anderen Ziel kommunizieren.
-
Während die
Erfindung in Ausführungsformen
beschrieben derart wurde, dass Sicherungsdaten zu einem einzelnen
entfernten Host transportiert werden, können in Ausführungsformen ähnlicherweise
die Daten zu getrennten logischen oder physikalischen Hosts oder
Medien geliefert werden. Andere Hardware, Software oder weitere
Ressourcen, die in den Ausführungsformen
als einzeln beschrieben wurden, können in anderen Ausführungsformen
auch verteilt sein, und ähnlicherweise
können
Ressourcen, die als verteilt beschrieben wurden, auch kombiniert
sein. Der Umfang der Erfindung soll demnach nur durch die nachfolgenden
Ansprüche
beschränkt
sein.