-
Technisches Gebiet
-
Die vorliegende Erfindung betrifft ein Datenverarbeitungsverfahren und ein System zum Verwalten von Datenübertragungsverkehr und insbesondere eine Technik zum Ausführen einer Integritätsprüfung und selektiven Deduplizierung an einem Datenstrom von Nachrichtenpaketen.
-
Hintergrund
-
Eine Verschlüsselungs-Hashfunktion ist ein Algorithmus, der einen beliebigen Datenblock als Eingabe nimmt und einen Hashauszug (auch bekannt als Hashwert, Verschlüsselungs-Hashwert oder Digest), der eine Zeichenfolge mit fester Bitgröße ist, erzeugt und zurückgibt. Eine Verschlüsselungs-Hashfunktion erzeugt den Hashauszug so, dass eine zufällige oder beabsichtigte Änderung an den Eingabedaten mit einer sehr hohen Wahrscheinlichkeit den Hashauszug ändern wird. Ferner ist eine Verschlüsselungs-Hashfunktion eine Lawinenfunktion, weil ein im Wesentlichen kleiner Unterschied (z. B. selbst ein Unterschied von einem Bit) in der Eingabe für die Funktion zu einem im Wesentlichen großen (d. h. äußerst nicht-linearen) Unterschied im Auszug führt. Zu Verschlüsselungs-Hashfunktionen gehören Funktionen des Secure Hash Algorithm (SHA) (sicherer Hash-Algorithmus) und Funktionen des Message Digest (MD) (Nachrichtenauszug). Beispiele für Verschlüsselungs-Hashfunktionen und die Größe der jeweiligen Hashauszüge sind in Tabelle 1 enthalten Tabelle 1
Verschlüsselungs-Hashfunktion | Größe(n) von Hashauszug (Bits) |
GOST | 256 |
HAVAL | 256/224/192/160/128 |
MD2 | 128 |
MD4 | 128 |
MD5 | 128 |
PANAMA | 256 |
RadioGatún | Bis zu 19 Wörter |
RACE Integrity Primitives Evaluation Message Digest (RIPEMD) | 128 |
RIPEMD-128/256 | 128/256 |
RIPEMD-160/320 | 160/320 |
SHA-0 | 160 |
SHA-1 | 160 |
SHA-256/224 | 256/224 |
SHA-512/384 | 512/384 |
Tiger(2)-192/160/128 | 192/160/128 |
WHIRLPOOL | 512 |
-
Netzwerk-Datenübertragungseinheiten verwenden Datenübertragungsprotokolle zum Senden von Datenübertragungs-(d. h. Daten)Paketen von einer sendenden Netzwerkeinheit (d. h. einem Sender) zu einer empfangenden Netzwerkeinheit (d. h. einem Empfangsgerät oder Empfänger). Gemäß bekannten Datenübertragungsprotokollen wie Transmission Control Protocol over Internet Protocol (TCP/IP), Fibre Channel over Ethernet (FCoE), Small Computer System Interface (SCSI), Internet SCSI (iSCSI), Serial-Attached-SCSI (SAS), Infiniband und Ethernet enthalten Datenübertragungspakete Felder für Metadaten und Nutzdaten. Die Metadaten- und Nutzdaten-Felder werden durch Protokollstandards gemäß dem Vermittlungsschichtmodell von Open Systems Interconnection (OSI) definiert. Bestimmte Metadaten-Felder werden zum Speichern einer Prüfsumme der Nutzdaten verwendet, die ein Ausführen einer Integritätsprüfung gestattet. Die sendende Netzwerkeinheit berechnet die Prüfsumme und fügt sie zu den Metadaten hinzu und sendet die Nutzdaten und die Metadaten, die die Prüfsumme enthalten, zu der empfangenden Netzwerkeinheit. Nach dem Empfangen der Nutzdaten und der Metadaten, die die Prüfsumme enthalten, berechnet die empfangende Netzwerkeinheit die Prüfsumme der empfangenen Nutzdaten und vergleicht das Ergebnis mit der Prüfsumme, die in den empfangenen Metadaten enthalten ist, um Datenintegrität zu gewährleisten. Bekannte Prüfsummen beruhen auf zyklischen Codes wie beispielsweise einer zyklischen Blockprüfung (Cyclic Redundancy Check) (CRC).
-
Eine Technologie aus dem Umfeld der im Folgenden vorgeschlagenen Lösung findet sich im Dokument
US 2012/0257626 A1 . Dort werden Systeme und Verfahren vorgeschlagen, die eine Entfernung von doppelt vorhandenen Netzwerkpaketen in einem Netzwerk-Paket-Stream, der mit großer Geschwindigkeit übertragen wird, vorschlagen. Die Verfahren basieren auf einem Hash-Algorithmus.
-
KURZDARSTELLUNG DER ERFINDUNG
-
In einer ersten Ausführungsform stellt die vorliegende Erfindung ein Verfahren zum Verwalten eines Datenpakets bereit. Das Verfahren enthält einen ersten Computer, der ermittelt, dass eine Auslastung eines Netzwerks größer als ein Netzwerkauslastungs-Schwellenwert ist. Das Netzwerk enthält den ersten Computer und einen zweiten Computer. Das Verfahren enthält ferner auf Grundlage dessen, dass die Auslastung des Netzwerks größer als der Netzwerkauslastungs-Schwellenwert ist, dass der erste Computer in einen Deduplizierungsmodus wechselt und anschließend Schritte in dem Deduplizierungsmodus ausführt. Die Schritte in dem Deduplizierungsmodus enthalten, dass der erste Computer eine Benachrichtigung an den zweiten Computer sendet, dass der erste Computer in den Deduplizierungsmodus gewechselt hat. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass der erste Computer ermittelt, ob eine Auslastung einer Zentraleinheit (CPU), die in dem ersten Computer enthalten ist, größer als ein CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass der erste Computer eine erste Hashfunktion statt einer zweiten Hashfunktion auswählt, wenn die Auslastung der CPU größer als der CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass der erste Computer die zweite Hashfunktion statt der ersten Hashfunktion auswählt, wenn die Auslastung der CPU kleiner als der oder gleich dem CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass der erste Computer einen Hashauszug des Datenpakets ermittelt, indem die ausgewählte erste oder zweite Hashfunktion angewendet wird. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass der erste Computer ermittelt, ob sich der Hashauszug in einer Sender-Hashtabelle befindet, die mit dem ersten Computer verbunden ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn sich der Hashauszug in der Sender-Hashtabelle befindet, ohne dass der erste Computer das Datenpaket an den zweiten Computer sendet, dass der erste Computer an den zweiten Computer den Hashauszug, einen Index, der auf den Hashauszug in der Sender-Hashtabelle und in einer Empfänger-Hashtabelle verweist, die mit dem zweiten Computer verbunden ist, und optional eine Kennung der ausgewählten ersten oder zweiten Hashfunktion sendet. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn der Hashauszug sich nicht in der Sender-Hashtabelle befindet, dass der erste Computer das Datenpaket und den Hashauszug zu der Sender-Hashtabelle hinzufügt und das Datenpaket, den Hashauszug und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an den zweiten Computer sendet, um auf Grundlage des Hashauszugs zu ermitteln, ob das Datenpaket Integrität besitzt.
-
In einer zweiten Ausführungsform stellt die vorliegende Erfindung ein erstes Computersystem bereit, das eine Zentraleinheit (CPU) enthält; einen Arbeitsspeicher, der mit der CPU verbunden ist; eine computerlesbare, konkrete Speichereinheit, die mit der CPU verbunden ist, wobei die Speichereinheit Anweisungen enthält, die von der CPU über den Arbeitsspeicher ausgeführt werden, um ein Verfahren zum Verwalten eines Datenpakets umzusetzen. Das Verfahren enthält das erste Computersystem, das ermittelt, dass eine Auslastung eines Netzwerks größer als ein Netzwerkauslastungs-Schwellenwert ist. Das Netzwerk enthält das erste Computersystem und ein zweites Computersystem. Das Verfahren enthält ferner auf Grundlage dessen, dass die Auslastung des Netzwerks größer als der Netzwerkauslastungs-Schwellenwert ist, dass das erste Computersystem in einen Deduplizierungsmodus wechselt und anschließend Schritte in dem Deduplizierungsmodus ausführt. Die Schritte in dem Deduplizierungsmodus enthalten, dass das erste Computersystem eine Benachrichtigung an das zweite Computersystem sendet, dass das erste Computersystem in den Deduplizierungsmodus gewechselt hat. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem ermittelt, ob eine Auslastung der CPU, die in dem ersten Computersystem enthalten ist, größer als ein CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem eine erste Hashfunktion statt einer zweiten Hashfunktion auswählt, wenn die Auslastung der CPU größer als der CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass der erste Computer die zweite Hashfunktion statt der ersten Hashfunktion auswählt, wenn die Auslastung der CPU kleiner als der oder gleich dem CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem einen Hashauszug des Datenpakets ermittelt, indem die ausgewählte erste oder zweite Hashfunktion angewendet wird. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem ermittelt, ob sich der Hashauszug in einer Sender-Hashtabelle befindet, die mit dem ersten Computersystem verbunden ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn sich der Hashauszug in der Sender-Hashtabelle befindet, ohne dass das erste Computersystem das Datenpaket an das zweite Computersystem sendet, dass das erste Computersystem an das zweite Computersystem den Hashauszug, einen Index, der auf den Hashauszug in der Sender-Hashtabelle und in einer Empfänger-Hashtabelle verweist, die mit dem zweiten Computersystem verbunden ist, und optional eine Kennung der ausgewählten ersten oder zweiten Hashfunktion sendet. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn der Hashauszug sich nicht in der Sender-Hashtabelle befindet, dass das erste Computersystem das Datenpaket und den Hashauszug zu der Sender-Hashtabelle hinzufügt und das Datenpaket, den Hashauszug und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an das zweite Computersystem sendet, um auf Grundlage des Hashauszugs zu ermitteln, ob das Datenpaket Integrität besitzt.
-
In einer dritten Ausführungsform stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, das eine computerlesbare konkrete Speichereinheit enthält; und einen computerlesbaren Programmcode, der in der computerlesbaren konkreten Speichereinheit gespeichert ist. Der computerlesbare Programmcode enthält Anweisungen, die von einer CPU eines ersten Computersystems ausgeführt werden, um ein Verfahren zum Verwalten eines Datenpakets umzusetzen. Das Verfahren enthält das erste Computersystem, das ermittelt, dass eine Auslastung eines Netzwerks größer als ein Netzwerkauslastungs-Schwellenwert ist. Das Netzwerk enthält das erste Computersystem und ein zweites Computersystem. Das Verfahren enthält ferner auf Grundlage dessen, dass die Auslastung des Netzwerks größer als der Netzwerkauslastungs-Schwellenwert ist, dass das erste Computersystem in einen Deduplizierungsmodus wechselt und anschließend Schritte in dem Deduplizierungsmodus ausführt. Die Schritte in dem Deduplizierungsmodus enthalten, dass das erste Computersystem eine Benachrichtigung an das zweite Computersystem sendet, dass das erste Computersystem in den Deduplizierungsmodus gewechselt hat. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem ermittelt, ob eine Auslastung der CPU, die in dem ersten Computersystem enthalten ist, größer als ein CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem eine erste Hashfunktion statt einer zweiten Hashfunktion auswählt, wenn die Auslastung der CPU größer als der CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem die zweite Hashfunktion statt der ersten Hashfunktion auswählt, wenn die Auslastung der CPU kleiner als der oder gleich dem CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem einen Hashauszug des Datenpakets ermittelt, indem die ausgewählte erste oder zweite Hashfunktion angewendet wird. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem ermittelt, ob sich der Hashauszug in einer Sender-Hashtabelle befindet, die mit dem ersten Computersystem verbunden ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn sich der Hashauszug in der Sender-Hashtabelle befindet, ohne dass das erste Computersystem das Datenpaket an das zweite Computersystem sendet, dass das erste Computersystem an das zweite Computersystem den Hashauszug, einen Index, der auf den Hashauszug in der Sender-Hashtabelle und in einer Empfänger-Hashtabelle verweist, die mit dem zweiten Computersystem verbunden ist, und optional eine Kennung der ausgewählten ersten oder zweiten Hashfunktion sendet. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn der Hashauszug sich nicht in der Sender-Hashtabelle befindet, dass das erste Computersystem das Datenpaket und den Hashauszug zu der Sender-Hashtabelle hinzufügt und das Datenpaket, den Hashauszug und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an das zweite Computersystem sendet, um auf Grundlage des Hashauszugs zu ermitteln, ob das Datenpaket Integrität besitzt.
-
In einer vierten Ausführungsform stellt die vorliegende Erfindung einen Prozess zum Unterstützen von Datenverarbeitungsinfrastruktur bereit. Der Prozess enthält ein Bereitstellen von mindestens einem Unterstützungsdienst für mindestens eines von Erstellen, Integrieren, Hosten, Verwalten und Einsetzen von computerlesbarem Code in einem ersten Computersystem. Der computerlesbare Code enthält Anweisungen, die, wenn sie von einem Prozessor des ersten Computersystems ausgeführt werden, ein Verfahren zum Verwalten eines Datenpakets umsetzen. Das Verfahren enthält das erste Computersystem, das ermittelt, dass eine Auslastung eines Netzwerks größer als ein Netzwerkauslastungs-Schwellenwert ist. Das Netzwerk enthält das erste Computersystem und ein zweites Computersystem. Das Verfahren enthält ferner auf Grundlage dessen, dass die Auslastung des Netzwerks größer als der Netzwerkauslastungs-Schwellenwert ist, dass das erste Computersystem in einen Deduplizierungsmodus wechselt und anschließend Schritte in dem Deduplizierungsmodus ausführt. Die Schritte in dem Deduplizierungsmodus enthalten, dass das erste Computersystem eine Benachrichtigung an das zweite Computersystem sendet, dass das erste Computersystem in den Deduplizierungsmodus gewechselt hat. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem ermittelt, ob eine Auslastung der CPU, die in dem ersten Computersystem enthalten ist, größer als ein CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem eine erste Hashfunktion statt einer zweiten Hashfunktion auswählt, wenn die Auslastung der CPU größer als der CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem die zweite Hashfunktion statt der ersten Hashfunktion auswählt, wenn die Auslastung der CPU kleiner als der oder gleich dem CPU-Auslastungsschwellenwert ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem einen Hashauszug des Datenpakets ermittelt, indem die ausgewählte erste oder zweite Hashfunktion angewendet wird. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass das erste Computersystem ermittelt, ob sich der Hashauszug in einer Sender-Hashtabelle befindet, die mit dem ersten Computersystem verbunden ist. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn sich der Hashauszug in der Sender-Hashtabelle befindet, ohne dass das erste Computersystem das Datenpaket an das zweite Computersystem sendet, dass das erste Computersystem an das zweite Computersystem den Hashauszug, einen Index, der auf den Hashauszug in der Sender-Hashtabelle und in einer Empfänger-Hashtabelle verweist, die mit dem zweiten Computersystem verbunden ist, und optional eine Kennung der ausgewählten ersten oder zweiten Hashfunktion sendet. Die Schritte in dem Deduplizierungsmodus enthalten ferner, wenn der Hashauszug sich nicht in der Sender-Hashtabelle befindet, dass das erste Computersystem das Datenpaket und den Hashauszug zu der Sender-Hashtabelle hinzufügt und das Datenpaket, den Hashauszug und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an das zweite Computersystem sendet, um auf Grundlage des Hashauszugs zu ermitteln, ob das Datenpaket Integrität besitzt.
-
In einer fünften Ausführungsform stellt die vorliegende Erfindung ein Verfahren zum Verwalten eines Datenpakets bereit. Das Verfahren enthält einen zweiten Computer, der Schritte in einem Verdoppelungsmodus ausführt. Die Schritte in dem Verdopplungsmodus werden im Anschluss an eine Ermittlung ausgeführt, dass eine Auslastung eines Netzwerks größer als ein Netzwerkauslastung-Schwellenwert ist, wobei das Netzwerk einen ersten Computer und den zweiten Computer enthält; ein Wechseln in einen Deduplizierungsmodus durch den ersten Computer; eine Benachrichtigung des zweiten Computers durch den ersten Computer, dass der erste Computer in den Deduplizierungsmodus gewechselt hat; eine Ermittlung durch einen ersten Computer, ob eine Auslastung einer CPU, die in dem ersten Computer enthalten ist, größer als ein CPU-Auslastungsschwellenwert ist; eine Auswahl einer ersten Hashfunktion statt einer zweiten Hashfunktion, wenn die Auslastung der CPU größer als der CPU-Auslastungsschwellenwert ist; eine Auswahl der zweiten Hashfunktion statt der ersten Hashfunktion, wenn die Auslastung der CPU kleiner als der oder gleich dem CPU-Auslastungsschwellenwert ist, wobei eine Anwendung der ersten Hashfunktion die CPU weniger beansprucht als eine Anwendung der zweiten Hashfunktion; eine Ermittlung eines Hashauszugs des Datenpakets durch eine Anwendung der ausgewählten ersten oder zweiten Hashfunktion; eine Ermittlung, dass sich der Hashauszug in einer Sender-Hashtabelle befindet, die mit dem ersten Computer verbunden ist; und ein Senden des Hashauszugs, eines Index, der auf den Hashauszug in der Sender-Hashtabelle und in einer Empfänger-Hashtabelle verweist, die mit dem zweiten Computer verbunden ist, und einer Kennung der ersten oder der zweiten Hashfunktion durch den ersten Computer an den zweiten Computer, ohne ein Senden des Datenpakets an den zweiten Computer. Die Schritte in dem Verdoppelungsmodus enthalten auf Grundlage der Benachrichtigung des zweiten Computers durch den ersten Computer, dass der erste Computer in den Deduplizierungsmodus gewechselt hat, dass der zweite Computer ermittelt, dass das Datenpaket nicht zusammen mit dem Hashauszug, dem Index und der Kennung empfangen wurde. Die Schritte in dem Verdoppelungsmodus enthalten ferner, dass der zweite Computer den Hashauszug, den Index, der auf den Hashauszug in der Sender-Hashtabelle und in der Empfänger-Hashtabelle verweist, und die Kennung der ausgewählten ersten oder zweiten Hashfunktion empfängt. Die Schritte in dem Verdoppelungsmodus enthalten ferner in Reaktion darauf, dass der zweite Computer ermittelt, dass das Datenpaket nicht empfangen wurde, und auf Grundlage des Index, dass der zweite Computer den Hashauszug in der Empfänger-Hashtabelle sucht. Die Schritte in dem Verdoppelungsmodus enthalten ferner, dass der zweite Computer ermittelt, dass der in der Empfänger-Hashtabelle gefundene Hashauszug mit dem empfangenen Hashauszug übereinstimmt. Die Schritte in dem Verdoppelungsmodus enthalten ferner auf Grundlage, dass der gefundene Hashauszug mit dem empfangenen Hashauszug übereinstimmt, dass der zweite Computer das Datenpaket abruft, das dem gefundenen Hashauszug aus der Empfänger-Hashtabelle zugehörig ist. Die Schritte in dem Verdoppelungsmodus enthalten ferner auf Grundlage der empfangenen Kennung, dass der zweite Computer die ausgewählte erste oder zweite Hashfunktion ermittelt und einen neuen Hashauszug ermittelt, indem die erste oder die zweite Hashfunktion auf das abgerufene Datenpaket angewendet wird. Die Schritte in dem Verdoppelungsmodus enthalten ferner, dass der zweite Computer ermittelt, ob der neue Hashauszug mit dem empfangenen Hashauszug übereinstimmt. Die Schritte in dem Verdoppelungsmodus enthalten ferner, wenn der neue Hashauszug mit dem empfangenen Hashauszug übereinstimmt, dass der zweite Computer das abgerufene Datenpaket an eine Anwendung übergibt.
-
In einer sechsten Ausführungsform stellt die vorliegende Erfindung ein Verfahren zum Verwalten eines Datenpakets bereit. Das Verfahren enthält einen ersten Computer, der ermittelt, dass eine erste Auslastung eines Netzwerks kleiner als ein oder gleich einem Netzwerkauslastungs-Schwellenwert ist. Das Netzwerk enthält den ersten Computer und einen zweiten Computer. Das Verfahren enthält ferner auf Grundlage, dass die Auslastung des Netzwerks kleiner als der oder gleich dem Netzwerkauslastungs-Schwellenwert ist, dass der erste Computer Schritte ausführt ohne in einem Deduplizierungsmodus zu sein. Die Schritte, ohne sich in dem Deduplizierungsmodus zu befinden, enthalten, dass der erste Computer ermittelt, ob eine Auslastung einer CPU, die in dem ersten Computer enthalten ist, größer als ein CPU-Auslastungsschwellenwert ist. Die Schritte, ohne sich in dem Deduplizierungsmodus zu befinden, enthalten, dass der erste Computer eine erste Hashfunktion statt einer zweiten Hashfunktion auswählt, wenn die Auslastung der CPU größer als der CPU-Auslastungsschwellenwert ist. Die Schritte, ohne sich in dem Deduplizierungsmodus zu befinden, enthalten ferner, dass das erste Computersystem die zweite Hashfunktion statt der ersten Hashfunktion auswählt, wenn die Auslastung der CPU kleiner als der oder gleich dem CPU-Auslastungsschwellenwert ist. Die Schritte, ohne sich in dem Deduplizierungsmodus zu befinden, enthalten ferner, dass der erste Computer einen Hashauszug des Datenpakets ermittelt, indem die ausgewählte erste oder zweite Hashfunktion angewendet wird. Das Verfahren enthält ferner auf Grundlage, dass der erste Computer die Schritte ausführt, ohne im Deduplizierungsmodus zu sein, dass der erste Computer den Hashauszug zu einer Sender-Hashtabelle hinzufügt, die mit dem ersten Computer verbunden ist, und dass der erste Computer das Datenpaket, den Hashauszug und eine Kennung der ausgewählten ersten oder zweiten Hashfunktion an den zweiten Computer sendet, um auf Grundlage des Hashauszugs zu ermitteln, ob das Datenpaket Integrität besitzt. Ein Ergebnis dessen, dass der erste Computer das Datenpaket, den Hashauszug und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an den zweiten Computer sendet, enthält einen Empfang des Datenpakets, des Hashauszugs und der Kennung der ausgewählten ersten oder zweiten Hashfunktion durch den zweiten Computer. Das Ergebnis dessen, dass der erste Computer das Datenpaket, den Hashauszug und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an den zweiten Computer sendet, enthält ferner auf Grundlage der empfangenen Kennung der ausgewählten ersten oder zweiten Hashfunktion eine Ermittlung eines neuen Hashauszugs durch eine Anwendung der ausgewählten ersten oder zweiten Hashfunktion auf das empfangene Datenpaket. Das Ergebnis dessen, dass der erste Computer das Datenpaket, den Hashauszug und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an den zweiten Computer sendet, enthält ferner eine Ermittlung, ob der empfangene Hashauszug mit dem neuen Hashauszug übereinstimmt. Wenn der empfangene Hashauszug mit dem neuen Hashauszug übereinstimmt, enthält das Ergebnis dessen, dass der erste Computer das Datenpaket, den Hashauszug und die Kennung sendet, eine Ermittlung, ob das Datenpaket Integrität besitzt, ein Hinzufügen des Datenpakets und des Hashauszugs zu einer Empfänger-Hashtabelle, die mit dem zweiten Computer verbunden ist, und ein Übergeben des Datenpakets an eine Anwendung. Wenn der empfangene Hashauszug nicht mit dem neuen Hashauszug übereinstimmt, enthält das Ergebnis dessen, dass der erste Computer das Datenpaket, den Hashauszug und die Kennung sendet, eine Benachrichtigung des ersten Computers, dass das Datenpaket keine Integrität besitzt, und in Reaktion darauf, dass das Datenpaket und der Hashauszug durch den ersten Computer erneut an den zweiten Computer gesendet werden. Das Verfahren enthält ferner im Anschluss an den Schritt des Sendens des Datenpakets, des Hashauszugs und der Kennung der ausgewählten ersten oder zweiten Hashfunktion an den zweiten Computer, dass der erste Computer ermittelt, ob eine zweite Auslastung eines Netzwerks größer als der Netzwerkauslastungs-Schwellenwert ist. Das Verfahren enthält ferner auf Grundlage dessen, dass die Auslastung des Netzwerks größer als der Netzwerkauslastungs-Schwellenwert ist, dass der erste Computer in den Deduplizierungsmodus wechselt und anschließend Schritte in dem Deduplizierungsmodus ausführt. Die Schritte in dem Deduplizierungsmodus enthalten, dass der erste Computer den zweiten Computer benachrichtigt, dass der erste Computer in den Deduplizierungsmodus gewechselt hat. Die Schritte in dem Deduplizierungsmodus enthalten ferner, dass der erste Computer einen zweiten Hashauszug eines zweiten Datenpakets ermittelt, indem die ausgewählte erste oder zweite Hashfunktion angewendet wird. Die Schritte in dem Deduplizierungsmodus enthalten, dass der erste Computer ermittelt, ob der zweite Hashauszug des zweiten Datenpakets mit dem Hashauszug übereinstimmt, der zu der Sender-Hashtabelle hinzugefügt wurde. Die Schritte in dem Deduplizierungsmodus enthalten ferner auf Grundlage, dass der zweite Hashauszug des zweiten Datenpakets mit dem Hashauszug übereinstimmt, der der Sender-Hashtabelle hinzugefügt wurde, und ohne dass der erste Computer das Datenpaket an den zweiten Computer sendet, dass der erste Computer den zweiten Hashauszug, einen Index, der auf den Hashauszug verweist, der der Sender-Hashtabelle hinzugefügt wurde, und die Kennung der ausgewählten ersten oder zweiten Hashfunktion an den zweiten Computer sendet. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und die Kennung an den zweiten Computer sendet, enthält auf Grundlage, dass der zweite Computer benachrichtigt wird, dass der erste Computer in den Deduplizierungsmodus gewechselt hat, eine Ermittlung durch den zweiten Computer, dass das Datenpaket nicht zusammen mit dem zweiten Hashauszug, dem Index und der Kennung empfangen wurde. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und die Kennung an den zweiten Computer sendet, enthält ferner einen Empfang des zweiten Hashauszugs, des Index und der Kennung der ausgewählten ersten oder zweiten Hashfunktion durch den zweiten Computer. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und die Kennung an den zweiten Computer sendet, enthält ferner in Reaktion auf die Ermittlung, dass das Datenpaket nicht empfangen wurde und auf Grundlage des Index eine Suche nach dem Hashauszug, der der Empfänger-Hashtabelle durch den zweiten Computer hinzugefügt wurde. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und die Kennung an den zweiten Computer sendet, enthält ferner eine Ermittlung durch den zweiten Computer, dass der in der Empfänger-Hashtabelle gefundene Hashauszug mit dem empfangenen zweiten Hashauszug übereinstimmt. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und die Kennung an den zweiten Computer sendet, enthält ferner auf Grundlage dessen, dass der in der Empfänger-Hashtabelle gefundene Hashauszug mit dem empfangenen zweiten Hashauszug übereinstimmt, einen Abruf des Datenpakets, das dem in der Empfänger-Hashtabelle gefundenen Hashauszug zugehörig ist, durch den zweiten Computer. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und die Kennung an den zweiten Computer sendet, enthält ferner auf Grundlage des Empfangs der Kennung eine Ermittlung der ausgewählten ersten oder zweiten Hashfunktion durch den zweiten Computer und eine Ermittlung eines zweiten neuen Hashauszugs durch eine Anwendung der ausgewählten ersten oder zweiten Hashfunktion durch den zweiten Computer auf das abgerufene Datenpaket, das dem in der Empfänger-Hashtabelle gefundenen Hashauszug zugehörig ist. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und die Kennung an den zweiten Computer sendet, enthält ferner eine Ermittlung durch den zweiten Computer, ob der zweite neue Hashauszug mit dem empfangenen zweiten Hashauszug übereinstimmt. Ein Ergebnis dessen, dass der erste Computer den zweiten Hashauszug, den Index und den Index an den zweiten Computer sendet, enthält, wenn der zweite neue Hashauszug mit dem empfangenen zweiten Hashauszug übereinstimmt, ein Übergeben des abgerufenen Datenpakets durch den zweiten Computer an eine Anwendung.
-
Ausführungen der vorliegenden Erfindung wenden Verschlüsselungs-Hashfunktionen an, um Hashauszüge in Datenübertragungsverkehr einzubetten, um eine Datenintegritätsprüfung und Datendeduplizierung bereitzustellen, wenn eine Netzwerkauslastung einen Auslastungsschwellenwert erreicht oder überschreitet. Durch Bereitstellen einer Datendeduplizierung verringern Ausführungsformen der vorliegenden Erfindung die Datenmenge, die zwischen sendenden und empfangenden Netzwerkeinheiten übertragen wird.
-
Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockschaubild eines Systems zum Verwalten eines Datenpakets gemäß Ausführungsformen der vorliegenden Erfindung.
-
2A bis 2B stellen einen Ablaufplan eines Prozesses zum Verwalten eines Datenpakets in dem System von 1 gemäß Ausführungsformen der vorliegenden Erfindung dar.
-
3 ist ein Ablaufplan eines Prozesses zum Verwalten eines Hashtabellenbereichs in dem System von 1 gemäß Ausführungsformen der vorliegenden Erfindung.
-
4 ist ein beispielhaftes Datenübertragungspaket, das ein Datenpaket enthält, das durch den Prozess von 2A bis 2B gemäß Ausführungsformen der vorliegenden Erfindung verwaltet wird.
-
5 ist ein Blockschaubild eines Computersystems, das in einer alternativen Ausführungsform des Systems von 1 enthalten ist und das die Prozesse von 2A bis 2B und 3 gemäß Ausführungsformen der vorliegenden Erfindung umsetzt.
-
Ausführliche Beschreibung
-
Übersicht
-
Ausführungsformen der vorliegenden Erfindung verringern die Datenmenge, die zwischen sendenden und empfangenden Netzwerkeinheiten übertragen wird, indem Verschlüsselungs-Hashfunktionen auf Datenübertragungsverkehr in einem Netzwerk angewendet werden, um eine selektive Datendeduplizierung des Datenübertragungsverkehrs in Reaktion auf ein Ermitteln bereitzustellen, dass eine Netzwerkauslastung oder ein Netzwerkdurchsatz größer als ein benutzerdefinierter Schwellenwert ist. Die Verschlüsselungs-Hashfunktionen, die auf den Datenübertragungsverkehr angewendet werden, stellen auch Prüfsummen für eine Datenintegritätsprüfung bereit.
-
System zum Verwalten eines Datenpakets
-
1 ist ein Blockschaubild eines Systems zum Verwalten eines Datenpakets gemäß Ausführungsformen der vorliegenden Erfindung. Ein System 100 enthält ein erstes Computersystem 101, das eine Zentraleinheit (CPU) 102, einen Arbeitsspeicher 104, einen Bus 108 und eine Sender-Netzwerkschnittstellenkarte (NIC) 116 enthält, die das erste Computersystem 101 mit einem Computernetzwerk 130 verbindet. Das erste Computersystem 101 enthält auch eine Eingabe/Ausgabe-Schnittstelle (nicht gezeigt), die mit der CPU 102 über den Bus 108 verbunden ist. Die Sender-Netzwerkschnittstellenkarte 116 ist eine NIC, die durch Ausführungsformen der vorliegenden Erfindung so erweitert wird, dass sie ein Überwachungsmodul 118 auf Software-Grundlage, ein Deduplizierungsmodul 120 auf Software-Grundlage und eine Sender-Hashtabelle 122 enthält.
-
Das erste Computersystem 101 überträgt Daten über das Computernetzwerk 130 mit einem oder mehreren Computersystemen, das ein zweites Computersystem 151 enthält. Das erste Computersystem ist ein Sender-Computersystem, das Anforderungen verarbeitet, Datenpakete an ein oder mehrere andere Empfänger-Computersysteme zu senden, die mit dem Netzwerk 130 verbunden sind, das zweite Computersystem 151 eingeschlossen. Das erste Computersystem 101 führt ein Betriebssystem (nicht gezeigt) und eine oder mehrere Software-Anwendungen (nicht gezeigt) aus. Eine der Anwendungen initiiert ein Senden von Daten über das Netzwerk 130, das die Anwendung enthält, die das Betriebssystem anweist, die Daten zu senden, und in Reaktion darauf weist das Betriebssystem die Sender-NIC 116 an, die Daten über das Netzwerk 130 zu senden.
-
Das zweite Computersystem 151 enthält eine CPU 152, einen Arbeitsspeicher 154, einen Bus 158 und eine Empfänger-Netzwerkschnittstellenkarte 166, die das zweite Computersystem 151 mit dem Netzwerk 130 verbindet. Das zweite Computersystem 151 enthält auch eine Eingabe/Ausgabe-Schnittstelle (nicht gezeigt), die mit der CPU 152 über den Bus 158 verbunden ist. Die Empfänger-Netzwerkschnittstellenkarte 166 ist eine NIC, die durch Ausführungsformen der vorliegenden Erfindung so erweitert wird, dass sie ein Verdoppelungsmodul 168 auf Software-Grundlage und eine Empfänger-Hashtabelle 172 enthält. Der Datenübertragungsverkehr im Netzwerk 130 enthält Datenübertragungspakete, die von der Sender-NIC 116 an die Empfänger-NIC 166 gesendet werden.
-
Obwohl das erste Computersystem 101 hierin so beschrieben wird, dass es ein Datenübertragungspaket von der NIC 116 sendet, und das zweite Computersystem 151 hierin so beschrieben wird, dass es das Datenübertragungspaket an der NIC 166 empfängt, wird dem Fachmann klar sein, dass Ausführungsformen der vorliegenden Erfindung die NIC 166 als die sendende Einheit und die NIC 116 als die empfangende Einheit enthalten.
-
Die Sender-Hashtabelle 122 und die Empfänger-Hashtabelle 172 enthalten Dateneinträge mit entsprechenden Indices, entsprechenden Hashauszügen, entsprechenden Datenpaketen und entsprechenden Nutzungszahlen. Ein bestimmter Index in der Sender-Hashtabelle 122 oder der Empfänger-Hashtabelle 172 verweist auf ein bestimmtes Datenpaket, einen bestimmten Hashauszug, der durch Anwenden einer Hashfunktion auf das Datenpaket erzeugt wurde, und eine bestimmten Nutzungszahl. In einer Ausführungsform ist ein Index in der Sender-Hashtabelle 122 oder der Empfänger-Hashtabelle 172 eine Zeilennummer, die die Zeile der Sender-Hashtabelle 122 (siehe 1) oder der Empfänger-Hashtabelle 172 angibt, die ein bestimmtes Datenpaket, einen bestimmten Hashauszug und eine bestimmte Nutzungszahl enthält. Die Nutzungszahl gibt an, wie oft das erste Computersystem 101 eine bzw. mehrere Anforderungen verarbeitet hat, das Datenpaket an ein bzw. mehrere entsprechende Empfänger-Computersysteme zu senden, das bzw. die mit dem Netzwerk verbunden sind, wie beispielsweise das Computersystem 151. So wie das System 100 arbeitet, stimmt der Inhalt der Sender-Hashtabelle 122 mit dem Inhalt der Empfänger-Hashtabelle 172 überein, oder die Sender-Hashtabelle 122 hat eine neue Zeile mit Daten, die noch nicht zu der Empfänger-Hashtabelle 172 hinzugefügt wurde, aber hinzugefügt werden wird. Die Verwaltung von verfügbarem Bereich in der Sender-Hashtabelle 122 und von verfügbarem Bereich in der Empfänger-Hashtabelle 172 wird im Folgenden unter Bezugnahme auf 3 erörtert.
-
In einer Ausführungsform enthält jede Zeile in der Sender-Hashtabelle
122 und der Empfänger-Hashtabelle
172 eine Zeilennummer, einen Hashauszug, ein Datenpaket und eine Nutzungszahl, wie in dem in Tabelle 2 dargestellten Beispiel veranschaulicht. In Tabelle 2 enthält die erste Spalte die Nummer der Zeile, die für jede neue Zeile um eins erhöht wird. Die zweite Spalte von Tabelle 1 enthält den Hashauszug für das Datenpaket in der dritten Spalte. Die vierte Spalte von Tabelle 2 enthält die Nutzungszahl, die angibt, wie oft das Datenpaket von einem mit dem Netzwerk
130 verbundenen Computersystem gesendet worden ist. Tabelle 2
Zeilen-nummer | Hashauszug | Datenpaket | Nutzungsanzahl |
1 | 348c5427e5871c2e6
23d823fe6cea727 | „Hallo Leute, Fehler sind da, um gemacht zu werden” | 2 |
2 | d10aab85789956275
56d54651b0b962d | „Nichts ist unmöglich” | 1 |
-
Wenn das Überwachungsmodul 118 ermittelt, dass eine Auslastung des Netzwerks 130 einen benutzerdefinierten Netzwerkauslastungs-Schwellenwert überschreitet, wechselt das erste Computersystem 101 in einen Deduplizierungsmodus, der Schritte enthält, die von dem Deduplizierungsmodul 120 ausgeführt werden. Einige der Schritte in dem Deduplizierungsmodus werden in diesem Abschnitt beschrieben. Schritte in dem Deduplizierungsmodus und Schritte, die außerhalb des Deduplizierungsmodus ausgeführt werden, werden ausführlich in der nachstehenden Erörterung der 2A bis 2B beschrieben.
-
Im Deduplizierungsmodus empfängt und verarbeitet das erste Computersystem 101 eine Anforderung, ein Datenpaket an eine Software-Anwendung zu senden, die von dem zweiten Computersystem 151 oder einem anderen Computersystem (nicht gezeigt) ausgeführt wird, das mit dem Netzwerk 130 verbunden ist. Das erste Computersystem 101 wendet eine Hashfunktion an, um einen Hashauszug des Datenpakets zu ermitteln. Wenn sich der Hashauszug bereits in der Sender-Hashtabelle 122 befindet, sendet das erste Computersystem 101 den Hashauszug und den Index des Hashauszugs an das zweite Computersystem 151. Das Verdoppelungsmodul 168 verwendet den empfangenen Index zum Suchen und Abrufen des Datenpakets aus der Empfänger-Hashtabelle 172, ohne dass veranlasst wird, dass das Datenpaket von dem ersten Computersystem 101 über das Netzwerk 130 an das zweite Computersystem 151 gesendet wird. Indem veranlasst wird, dass das Datenpaket nicht über das Netzwerk 130 gesendet wird, wird die über das Netzwerk gesendete Datenmenge verringert.
-
Wenn sich der Hashauszug nicht bereits in der Sender-Hashtabelle 122 befindet, fügt das erste Computersystem 101 den Hashauszug und das Datenpaket zu der Sender-Hashtabelle 122 hinzu und sendet den Hashauszug und das Datenpaket an das zweite Computersystem 151. Das Verdoppelungsmodul 168 ermittelt einen neuen Hashauszug des empfangenen Datenpakets und verwendet einen Vergleich des neuen Hashauszugs und des empfangenen Hashauszugs als Datenintegritätsprüfung des empfangenen Datenpakets.
-
Wiederum sollte angemerkt werden, dass die Details der Schritte im Deduplizierungsmodus im Folgenden in der Erläuterung von 2A bis 2B dargestellt werden.
-
Die Funktionsweise der Komponenten von 1 wird ausführlicher in den nachstehenden Erläuterungen unter Bezugnahme auf 2A bis 2B und 3 und in dem Abschnitt mit der Überschrift „Computersystem” beschrieben. In einer alternativen Ausführungsform enthält das Computersystem 101 auch ein Verdoppelungsmodul (nicht gezeigt), dessen Funktionsweise mit der Funktionsweise des Verdoppelungsmoduls 168 übereinstimmt, und das Computersystem 151 enthält ein Überwachungsmodul (nicht gezeigt) und ein Deduplizierungsmodul (nicht gezeigt), deren Funktionsweise jeweils mit der Funktionsweise des Überwachungsmoduls 118 und des Deduplizierungsmoduls 120 übereinstimmt. In dieser alternativen Ausführungsform führt das Verdoppelungsmodul in dem Computersystem 101 (siehe 1) die Schritte in 2A bis 2B aus, die im Folgenden als durch das Verdoppelungsmodul 168 (siehe 1) ausgeführt beschrieben werden; das Überwachungsmodul im Computersystem 151 (siehe 1) führt die Schritte in 2A bis 2B und in 3 aus, die im Folgenden als durch das Überwachungsmodul 118 (siehe 1) ausgeführt beschrieben werden; und das Deduplizierungsmodul im Computersystem 151 (siehe 1) führt die Schritte in 2A bis 2B aus, die im Folgenden als durch das Deduplizierungsmodul 120 (siehe 1) ausgeführt beschrieben werden.
-
Verfahren zum Verwalten eines Datenpakets
-
2A bis 2B stellen einen Ablaufplan eines Prozesses zum Verwalten eines Datenpakets in dem System von 1 gemäß Ausführungsformen der vorliegenden Erfindung dar. In der nachstehenden Erläuterung von 2A bis 2B wird jeder Schritt, der als durch das Überwachungsmodul 118 ausgeführt beschrieben wird (siehe 1), von dem Computersystem 101 ausgeführt (siehe 1), das einen in dem Überwachungsmodul 118 (siehe 1) enthaltenen Programmcode ausführt; jeder Schritt, der als durch das Deduplizierungsmodul 120 ausgeführt beschrieben wird (siehe 1), wird von dem Computersystem 101 ausgeführt (siehe 1), das einen in dem Deduplizierungsmodul 120 (siehe 1) enthaltenen Programmcode ausführt; und jeder Schritt, der als durch das Verdoppelungsmodul 168 ausgeführt beschrieben wird (siehe 1), wird von dem Computersystem 151 ausgeführt (siehe 1), das einen in dem Verdoppelungsmodul 168 (siehe 1) enthaltenen Programmcode ausführt.
-
Der Prozess von 2A bis 2B beginnt mit Schritt 200, wobei das erste Computersystem 101 (siehe 1) eine Anforderung empfängt oder erzeugt, um ein Datenpaket an das zweite Computersystem 151 zu senden (siehe 1). Vor Schritt 202 empfängt das erste Computersystem 101 (siehe 1) einen Netzwerkauslastungs-Schwellenwert, der eine maximale Auslastung des Netzwerks 130 (siehe 1) angibt, die einem Senden von Datenpaketen von dem ersten Computersystem 101 (siehe 1) an das zweite Computersystem 151 (siehe 1) als zugehörig zulässig ist, ohne dass sich dieses im Deduplizierungsmodus befindet. Die Auslastung des Netzwerks 130 ist eine Messung der Anzahl von Datenpaketen, die pro Zeiteinheit über das Netzwerk 130 übertragen werden (siehe 1). Der Netzwerkauslastungs-Schwellenwert kann ein Standardwert oder ein benutzerdefinierter Wert sein. In einer Ausführungsform ist der Netzwerkauslastungs-Schwellenwert ein Prozentwert des maximalen Durchsatzes des Netzwerks 130 (siehe 1), der auf der Topologie des Netzwerks 130 (siehe 1) und der speziellen, vom Netzwerk 130 verwendeten Technologie beruht.
-
In Schritt 202 ermittelt das Überwachungsmodul 118 (siehe 1), ob eine Auslastung des Netzwerks 130 (siehe 1) (d. h. Netzwerkauslastung) größer als der Netzwerkauslastungs-Schwellenwert ist. Wenn das Überwachungsmodul 118 (siehe 1) in Schritt 202 ermittelt, dass die Netzwerkauslastung größer als der Netzauslastungs-Schwellenwert ist, wird der Abzweig „Ja” von Schritt 202 eingeschlagen, und Schritt 204 wird ausgeführt. Wenn das Überwachungsmodul 118 (siehe 1) in Schritt 202 ermittelt, dass die Netzwerkauslastung kleiner als der Netzauslastungs-Schwellenwert ist, wird der Abzweig „Nein” von Schritt 202 eingeschlagen, und Schritt 206 wird als Nächstes ausgeführt.
-
In einer alternativen Ausführungsform wird in Schritt 202 ermittelt, ob eine Messung des Durchsatzes durch das Netzwerk 130 (siehe 1) einen Durchsatzschwellenwert überschreitet, und wenn der Durchsatz den Schwellenwert überschreitet, wird Schritt 204 ausgeführt; andernfalls wird Schritt 206 als Nächstes ausgeführt.
-
In Schritt 204 weist das Überwachungsmodul 118 (siehe 1) das Deduplizierungsmodul 120 (siehe 1) an, in einen Deduplizierungsmodus zu wechseln, wenn sich das Deduplizierungsmodul 120 (siehe 1) nicht bereits im Deduplizierungsmodus befindet. In Reaktion darauf, und wenn sich das Deduplizierungsmodul 120 (siehe 1) nicht bereits im Deduplizierungsmodus befindet, wechselt das Deduplizierungsmodul 120 (siehe 1) in den Deduplizierungsmodus. In einer Ausführungsform werden die Schritte 206 bis 218 in 2A und die Schritte 220 bis 228 in 2B von dem Computersystem 101 (siehe 1) im Deduplizierungsmodus ausgeführt. Nach einer Anweisung an das Deduplizierungsmodul 120 (siehe 1), in einen Deduplizierungsmodus ”zu wechseln und vor dem Schritt 206 sendet das Überwachungsmodul 118 (siehe 1) eine Benachrichtigung an das Verdoppelungsmodul 168 (siehe 1), das im Computersystem 151 (siehe 1) ausgeführt wird, wo die Benachrichtigung das Computersystem 151 (siehe 1) informiert, dass das Deduplizierungsmodul 120 (siehe 1) in den Deduplizierungsmodus gewechselt hat. Das Verdoppelungsmodul 168 (siehe 1) empfängt die Benachrichtigung, die von dem Überwachungsmodul 118 (siehe 1) gesendet wurde.
-
Schritt 206 folgt auf Schritt 204 und den Abzweig „Nein” von Schritt 202. In Schritt 206 weist das Deduplizierungsmodul 120 (siehe 1) die Sender-Hashtabelle 122 zu (siehe 1), und das Verdoppelungsmodul 168 (siehe 1) weist die Empfänger-Hashtabelle 172 (siehe 1) in Reaktion darauf zu, dass das Verdoppelungsmodul 168 (siehe 1) die vorher genannte Benachrichtigung empfängt, dass das Deduplizierungsmodul 120 (siehe 1) in den Deduplizierungsmodus gewechselt hat. Wenn Schritt 206 dem Abzweig „Nein” von Schritt 202 folgt, enthält der Schritt 206, dass das Überwachungsmodul 118 (siehe 1) das Deduplizierungsmodul 120 (siehe 1) anweist, den Deduplizierungsmodus zu verlassen, wenn sich das Deduplizierungsmodul 120 (siehe 1) bereits im Deduplizierungsmodus befindet. Nach einer Anweisung an das Deduplizierungsmodul 120 (siehe 1), den Deduplizierungsmodus zu verlassen, sendet das Überwachungsmodul 118 (siehe 1) eine Benachrichtigung an das Verdoppelungsmodul 168 (siehe 1), das im Computersystem 151 (siehe 1) ausgeführt wird, wo die Benachrichtigung das Computersystem 151 (siehe 1) informiert, dass das Deduplizierungsmodul 120 (siehe 1) den Deduplizierungsmodus verlassen hat. Das Verdoppelungsmodul 168 (siehe 1) empfängt die Benachrichtigung, die von dem Überwachungsmodul 118 (siehe 1) gesendet wurde.
-
Vor Schritt 208 empfängt das erste Computersystem 101 (siehe 1) einen CPU-Auslastungsschwellenwert, der eine maximale derzeitige Auslastung der CPU 102 (siehe 1) angibt, deren Vorhandensein zulässig ist, wenn eine zweite Hashfunktion statt einer ersten Hashfunktion ausgewählt wird. Eine Anwendung der ersten Hashfunktion auf ein Datenpaket zum Erzeugen eines Hashauszugs verwendet weniger Ressourcen, die von der CPU 102 (siehe 1) bereitgestellt werden, als die Anwendung der zweiten Hashfunktion auf dasselbe Datenpaket zum Erzeugen eines Hashauszugs. Die zweite Hashfunktion ist jedoch stärker als die erste Hashfunktion, weil die Hashfunktion einen längeren Hashauszug erzeugt als den Hashauszug, der durch die erste Hashfunktion erzeugt wird, und daher wird durch Anwenden der zweiten Hashfunktion statt der ersten Hashfunktion die Wahrscheinlichkeit von Hash-Kollisionen verringert. Somit wird das Anwenden der zweiten Hashfunktion gegenüber der ersten Hashfunktion bevorzugt, wenn ausreichende CPU-Kapazität verfügbar ist (d. h. die CPU-Auslastung ist kleiner als der oder gleich dem CPU-Auslastungsschwellenwert). Der CPU-Auslastungsschwellenwert kann ein Standardwert oder ein benutzerdefinierter Wert sein. In Schritt 208 ermittelt das Überwachungsmodul 118 (siehe 1), ob eine Auslastung der CPU 102 (siehe 1) (d. h. CPU-Auslastung) größer als der CPU-Auslastungsschwellenwert ist. Wenn das Überwachungsmodul 118 (siehe 1) in Schritt 208 ermittelt, dass die CPU-Auslastung größer als der CPU-Auslastungsschwellenwert ist, wird der Abzweig „Ja” von Schritt 208 eingeschlagen, und Schritt 210 wird ausgeführt.
-
In Schritt 210 wählt das Deduplizierungsmodul 120 (siehe 1) die erste Hashfunktion statt einer zweiten Hashfunktion aus und weist die ausgewählte erste Hashfunktion als die zum Ermitteln eines Hashauszugs für das Datenpaket zu verwendende Hashfunktion zu.
-
Wenn unter Rückkehr zu Schritt 208 das Überwachungsmodul 118 (siehe 1) in Schritt 208 ermittelt, dass die CPU-Auslastung kleiner ist als der CPU-Auslastungsschwellenwert, wird der Abzweig „Nein” von Schritt 208 eingeschlagen, und Schritt 212 wird ausgeführt.
-
In Schritt 212 wählt das Deduplizierungsmodul 120 (siehe 1) die zweite Hashfunktion statt der ersten Hashfunktion aus. Das Deduplizierungsmodul (siehe 1) weist die ausgewählte zweite Hashfunktion als die zum Ermitteln eines Hashauszugs für das Datenpaket zu verwendende Hashfunktion zu.
-
Schritt 214 folgt auf Schritt 210 und Schritt 212. In Schritt 214 ermittelt das Deduplizierungsmodul 120 (siehe 1) durch Anwenden der in Schritt 210 ausgewählten ersten Hashfunktion oder der in Schritt 212 ausgewählten zweiten Hashfunktion den Hashauszug D1 des Datenpakets. Hierin wird im Folgenden die entweder in Schritt 210 oder Schritt 212 ausgewählte Hashfunktion auch als die ausgewählte Hashfunktion bezeichnet.
-
In Schritt 216 ermittelt das Deduplizierungsmodul 120 (siehe 1), ob in Schritt 204 ein Wechsel in den Deduplizierungsmodus erfolgt ist. Wenn das Deduplizierungsmodul 120 (siehe 1) in Schritt 216 ermittelt, dass in Schritt 204 kein Wechsel in den Deduplizierungsmodus erfolgt ist, wird der Abzweig „Nein” von Schritt 216 eingeschlagen, und Schritt 218 wird ausgeführt.
-
In Schritt 218 sendet das Deduplizierungsmodul 120 (siehe 1) das Datenpaket, den Hashauszug D1 und eine Kennung der ausgewählten Hashfunktion in einem Datenübertragungspaket über das Netzwerk 130 (siehe 1) an das zweite Computersystem 151 (siehe 1). Zum Beispiel können mehrere Hashfunktionen, wie die in Tabelle 1 aufgelisteten Hashfunktionen, eindeutig durch jeweilige Nummern gekennzeichnet werden (die Kennung von MD5 ist z. B. 1, die Kennung von SHA-256 ist 2 und die Kennung von WHIRLPOOL ist 3). Schritt 230 in 2B folgt auf Schritt 218.
-
Wenn unter Rückkehr zu Schritt 216 das Deduplizierungsmodul 120 (siehe 1) ermittelt, dass der Wechsel in den Deduplizierungsmodus erfolgt ist, wird der Abzweig „Ja” von Schritt 216 eingeschlagen, und der nächste Schritt in dem Prozess von 2A bis 2B ist Schritt 220 in 2B.
-
In Schritt 220 in 2B ermittelt das Deduplizierungsmodul 120 (siehe 1), ob sich der Hashauszug D1 bereits in der Sender-Hashtabelle 122 befindet (siehe 1). Zum Beispiel versucht das Deduplizierungsmodul 120 (siehe 1), den Hashauszug D1 mit der zweiten Spalte von Tabelle 2 abzugleichen. Wenn das Deduplizierungsmodul 120 (siehe 1) in Schritt 220 ermittelt, dass sich der Hashauszug D1 in der Sender-Hashtabelle 122 befindet (siehe 1), wird der Abzweig „Ja” von Schritt 220 eingeschlagen, und Schritt 222 wird ausgeführt.
-
In Schritt 222 ermittelt das Deduplizierungsmodul 120 (siehe 1) einen Index, der auf den Hashauszug D1 in der Sender-Hashtabelle 122 verweist (siehe 1), und das Deduplizierungsmodul 120 (siehe 1) aktualisiert eine Nutzungszahl in einem Eintrag der Sender-Hashtabelle 122 (siehe 1), wobei der Eintrag den Index, den Hashauszug D1, das Datenpaket und die Nutzungszahl enthält. In einer Ausführungsform erhöht das Deduplizierungsmodul 120 (siehe 1) die Nutzungszahl bei jeder Verarbeitung des Datenpakets über den Abzweig „Ja” von Schritt 220 und Schritt 222 um 1. In einer Ausführungsform ist der in Schritt 222 ermittelte Index eine Zeilennummer der Sender-Hashtabelle 122 (siehe 1).
-
In Schritt 224 erzeugt das Deduplizierungsmodul 120 (siehe 1) ein Datenübertragungspaket, das den Hashauszug D1 und den Index enthält, der auf den Hashauszug D1 in der Sender-Hashtabelle 122 verweist (siehe 1), und optional die Kennung der ausgewählten Hashfunktion enthält, und sendet das erzeugte Datenübertragungspaket an das zweite Computersystem 151 (siehe 1). Das Datenpaket ist nicht in dem Datenübertragungspaket enthalten, das in Schritt 224 erzeugt wurde. Schritt 230 folgt auf Schritt 224.
-
Wenn unter Rückkehr zu Schritt 220 das Deduplizierungsmodul 120 (siehe 1) ermittelt, dass sich der Hashauszug D1 nicht in der Sender-Hashtabelle 122 befindet (siehe 1), wird der Abzweig „Nein” von Schritt 220 eingeschlagen, und Schritt 226 wird ausgeführt.
-
In Schritt 226 fügt das Deduplizierungsmodul 120 (siehe 1) den Hashauszug D1 und das Datenpaket in einem neuen Datensatz hinzu (z. B. in einer neuen Zeile), der an die Sender-Hashtabelle 122 angehängt wird (siehe 1). Das Deduplizierungsmodul 120 (siehe 1) ermittelt einen Index (z. B. eine Zeilennummer), die auf den Hashauszug D1 und das Datenpaket verweist, die in Schritt 226 zu der Sender-Hashtabelle 122 hinzugefügt werden (siehe 1). Das Deduplizierungsmodul 120 (siehe 1) initialisiert auch den Wert einer Nutzungszahl in dem neuen Datensatz. Zum Beispiel kann der initialisierte Wert der Nutzungszahl 1 sein.
-
In Schritt 228 erzeugt das Deduplizierungsmodul 120 (siehe 1) ein Datenübertragungspaket, welches das Datenpaket, den als Metadaten eingebetteten Hashauszug D1 und eine Kennung der in Schritt 210 (siehe 2A) oder Schritt 212 (siehe 2A) ausgewählten Hashfunktion enthält, und sendet das erzeugte Datenübertragungspaket an das zweite Computersystem 151 (siehe 1).
-
In Schritt 230, der nach Schritt 224 und Schritt 228 folgt, empfängt das Verdoppelungsmodul 168 (siehe 1), das in dem zweiten Computersystem 151 (siehe 1) ausgeführt wird, das in Schritt 224 oder Schritt 228 erzeugte Datenübertragungspaket.
-
In Schritt 232 ermittelt das Verdoppelungssystem 168 (siehe 1), ob das in Schritt 230 empfangene Datenübertragungspaket das Datenpaket enthält. Wenn das Verdoppelungsmodul 168 (siehe 1) in Schritt 232 ermittelt, dass das in Schritt 230 empfangene Datenübertragungspaket das Datenpaket enthält, das in Schritt 228 oder 218 gesendet wurde (siehe 2A), wird der Abzweig „Ja” von Schritt 232 eingeschlagen, und Schritt 234 wird ausgeführt. In einer Ausführungsform ermittelt das Verdoppelungsmodul 168 (siehe 1), dass das in Schritt 230 empfangene Datenübertragungspaket das Datenpaket nicht enthält auf Grundlage, dass das Verdoppelungsmodul 168 (siehe 1) in Schritt 204 die Benachrichtigung erhalten hat (siehe 2A), dass das Deduplizierungsmodul 120 (siehe 1) in den Deduplizierungsmodus gewechselt hat, und auf Grundlage, dass das Verdoppelungsmodul 168 (siehe 1) in Schritt 230 das Datenübertragungspaket empfangen hat, das den Hashauszug D1, den auf den Hashauszug D1 in der Sender-Hashtabelle 122 verweisenden Index (siehe 1) und die Kennung der ausgewählten Hashfunktion enthält.
-
Im Anschluss an Schritt 232 und vor Schritt 234 identifiziert das Verdoppelungsmodul 168 (siehe 1) die ausgewählte Hashfunktion unter Verwendung der Kennung der Hashfunktion, die in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten ist. In Schritt 234 ermittelt das Verdoppelungsmodul 168 (siehe 1) einen Hashauszug D2 durch Anwenden der identifizierten Hashfunktion auf das Datenpaket, das in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten ist.
-
In Schritt 236 ermittelt das Verdoppelungsmodul 168 (siehe 1), ob der Hashauszug D1, der in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten ist, gleich dem Hashauszug D2 ist, wodurch angegeben wird, ob das empfangene Datenpaket Datenintegrität besitzt. Wenn das Verdoppelungsmodul 168 (siehe 1) in Schritt 236 ermittelt, dass D1 nicht gleich D2 ist, ermittelt das Verdoppelungsmodul eine fehlende Datenintegrität in dem empfangenen Datenpaket, der Abzweig „Nein” von Schritt 236 wird eingeschlagen, und Schritt 238 wird ausgeführt.
-
In Schritt 238 wird eine Fehlerbehebungsprozedur ausgeführt. Die Fehlerbehebungsprozedur enthält, dass das Verdoppelungsmodul 168 (siehe 1) eine Nachricht an das erste Computersystem 101 sendet (siehe 1) die angibt, dass dem Datenpaket Datenintegrität fehlt. In Reaktion auf den Empfang der Nachricht über die fehlende Datenintegrität erzeugt das erste Computersystem 101 (siehe 1) ein weiteres Datenübertragungspaket, um das Datenpaket zusammen mit dem Hashauszug D1 und der Kennung der ausgewählten Hashfunktion erneut an das zweite Computersystem 151 zu senden (siehe 1). Der Prozess von 2A bis 2B endet an Schritt 240. Zwar wird dies nicht gezeigt, aber nachdem das erste Computersystem 101 (siehe 1) in Schritt 238 das Datenpaket, den Hashauszug D1 und die Kennung der ausgewählten Hashfunktion erneut gesendet hat, werden die Schritte 230, 232, 234 und 236 wiederholt, bis in Schritt 236 ermittelt wird, dass D1 = D2, und der Abzweig „Ja” eingeschlagen wird, wie im Folgenden beschrieben. Nach einer Wiederholung der Schritte 230, 232, 234 und 236 und wenn D1 nicht gleich D2 ist, kann die Fehlerbehebungsprozedur in Schritt 238 wiederholt werden.
-
Wenn unter Rückkehr zu Schritt 236 das Verdoppelungsmodul 168 (siehe 1) ermittelt, dass D1 = D2, wird der Abzweig „Ja” von Schritt 236 eingeschlagen, und Schritt 242 wird ausgeführt.
-
In Schritt 242 ermittelt das Verdoppelungsmodul 168 (siehe 1), dass das empfangene Datenpaket Datenintegrität besitzt und fügt den empfangenen Hashauszug D1 und das Datenpaket in einem neuen Datensatz hinzu (z. B. in einer neuen Zeile), der an die Empfänger-Hashtabelle 172 angehängt wird (siehe 1). Somit stimmt der neue, in Schritt 242 an die Empfänger-Hashtabelle 172 (siehe 1) angehängte Datensatz mit dem neuen, an die Sender-Hashtabelle 122 (siehe 1) angehängten Datensatz in der letzten Ausführung von Schritt 226 überein. Nach dem Anhängen des neuen Datensatzes an die Empfänger-Hashtabelle 172 (siehe 1) stimmen die Inhalte der Empfänger-Hashtabelle 172 (siehe 1) wieder mit den Inhalten der Sender-Hashtabelle 122 (siehe 1) überein.
-
In Schritt 244 sendet das Verdoppelungsmodul 168 (siehe 1) das Datenpaket an die Anwendung, die das Datenpaket angefordert hat. Nach Schritt 244 endet der Prozess von 2A bis 2B an Schritt 240.
-
Wenn unter Rückkehr zu Schritt 232 das Verdoppelungsmodul 168 (siehe 1) ermittelt, dass das in Schritt 230 empfangene Datenübertragungspaket das Datenpaket nicht enthält (d. h. in Schritt 224 wurde das Datenübertragungspaket nur mit dem Hashauszug D1 und dem Index von D1 gesendet), wird der Abzweig „Nein” von Schritt 232 eingeschlagen, und Schritt 246 wird ausgeführt.
-
In Schritt 246 sucht das Verdoppelungsmodul 168 (siehe 1) den im Schritt 230 empfangenen Index in der Empfänger-Hashtabelle 172 (siehe 1) und findet und ruft auf Grundlage der Suchfunktion einen Hashauszug in einem Eintrag in der Empfänger-Hashtabelle 172 ab (siehe 1), auf den durch den Index verwiesen wird.
-
In Schritt 248 ermittelt das Verdoppelungsmodul 168 (siehe 1), ob der in Schritt 246 aus der Empfänger-Hashtabelle 172 (siehe 1) abgerufene Hashauszug gleich dem Hashauszug D1 ist, der in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten war. Wenn das Verdoppelungsmodul 168 (siehe 1) in Schritt 248 ermittelt, dass der aus der Empfänger-Hashtabelle 172 (siehe 1) abgerufene Hashauszug gleich dem Hashauszug D1 ist, wird der Abzweig „Ja” von Schritt 248 eingeschlagen, und Schritt 250 wird ausgeführt.
-
In Schritt 250 ruft das Verdoppelungsmodul 168 (siehe 1) ein Datenpaket aus der Empfänger-Hashtabelle 172 (siehe 1) auf Grundlage des Datenpakets ab, auf das durch den Index verwiesen wurde, der in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten ist. Wenn die Kennung der ausgewählten Hashfunktion in Schritt 224 gesendet wurde und in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten ist, enthält der Schritt 250 auch, dass das Verdoppelungsmodul 168 (siehe 1) die folgenden Schritte ausführt: (1) auf Grundlage der Kennung der ausgewählten Hashfunktion ermitteln, die in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten ist, welche Hashfunktion die ausgewählte Hashfunktion ist; (2) einen neuen Hashauszug durch Anwenden der ausgewählten Hashfunktion auf das in Schritt 250 abgerufene Datenpaket ermitteln; und (3) ermitteln, ob der neue Hashauszug mit dem empfangenen Hashauszug übereinstimmt.
-
In Schritt 244, der auf Schritt 250 folgt, und wenn die Kennung der ausgewählten Hashfunktion nicht in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten war, sendet das Verdoppelungsmodul 168 (siehe 1) das Datenpaket an die Anwendung, die das Datenpaket angefordert hat, wobei das gesendete Datenpaket das in Schritt 250 abgerufene Datenpaket ist. Wenn die Kennung der ausgewählten Hashfunktion in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten war, und wenn der in Schritt 250 ermittelte neue Hashauszug mit dem Hashauszug übereinstimmt, der in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten war, sendet das Verdoppelungsmodul 168 (siehe 1) in Schritt 244 das Datenpaket an die Anwendung, die das Datenpaket angefordert hat, wobei das gesendete Datenpaket das in Schritt 250 abgerufene Datenpaket ist. Wie oben beschrieben wird das Datenpaket aus der Empfänger-Hashtabelle 172 (siehe 1) abgerufen und in Reaktion darauf, dass nur der Hashauszug D1 und der Index von D1 in Schritt 224 gesendet wurden, an die Anwendung gesendet (d. h. ohne dass das Datenpaket in Schritt 224 über das Netzwerk 130 (siehe 1) von dem ersten Computersystem 101 (siehe 1) an das zweite Computersystem 151 (siehe 1) gesendet wurde), wodurch die über das Netzwerk 130 (siehe 1) gesendete Datenmenge im Vergleich mit bekannten Techniken verringert wird, die ein Datenpaket über ein Netzwerk in Reaktion darauf, dass dasselbe Datenpaket mehrmals angefordert wird, übertragen und erneut übertragen. Nach Schritt 244 endet der Prozess von 2A bis 2B an Schritt 240.
-
Wenn unter Rückkehr zu Schritt 248 das Verdoppelungsmodul 168 (siehe 1) ermittelt, dass der in Schritt 246 aus der Empfänger-Hashtabelle 172 (1) abgerufene Hashauszug nicht gleich dem Hashauszug D1 ist, wird der Abzweig „Nein” von Schritt 248 eingeschlagen, und Schritt 252 wird ausgeführt.
-
In Schritt 252 wird eine Fehlerbehebungsprozedur ausgeführt. Die Fehlerbehebungsprozedur in Schritt 252 enthält, dass das Verdoppelungsmodul 168 (siehe 1) weitere Einträge der Empfänger-Hashtabelle 172 (siehe 1) nach einem Hashauszug durchsucht, der mit dem Hashauszug D1 übereinstimmt. Wenn das Ergebnis dieser Suche ist, dass das Verdoppelungsmodul 168 (siehe 1) einen Eintrag in der Empfänger-Hashtabelle 172 (siehe 1) findet, der einen Hashauszug enthält, der mit dem Hashauszug D1 übereinstimmt, ruft das Verdoppelungsmodul 168 (siehe 1) das Datenpaket ab, das sich in dem gefundenen Eintrag befindet, sendet das abgerufene Datenpaket an die Anwendung, die das Datenpaket angefordert hat, und verschiebt den gefundenen Eintrag in der Empfänger-Hashtabelle 172 (siehe 1) so, dass dessen Index mit dem Index übereinstimmt, der in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten war, wodurch die Fehlerbehebungsprozedur beendet wird.
-
Wenn die Kennung der ausgewählten Hashfunktion in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten war, führt das Verdoppelungsmodul 168 (siehe 1) vor dem Senden des abgerufenen Datenpakets an die Anwendung optional die folgenden Schritte aus: (1) auf Grundlage der Kennung der ausgewählten Hashfunktion ermitteln, die in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten ist, welche Hashfunktion die ausgewählte Hashfunktion ist; (2) einen neuen Hashauszug durch Anwenden der ausgewählten Hashfunktion auf das abgerufene Datenpaket ermitteln; und (3) ermitteln, ob der neue Hashauszug mit dem empfangenen Hashauszug übereinstimmt. Wenn der neue Hashauszug mit dem empfangenen Hashauszug übereinstimmt, sendet das Verdoppelungsmodul 168 (siehe 1) anschließend das abgerufene Datenpaket an die Anwendung, die das Datenpaket angefordert hat, und verschiebt den gefundenen Eintrag in der Empfänger-Hashtabelle 172 (siehe 1) so, dass dessen Index mit dem Index übereinstimmt, der in dem in Schritt 230 empfangenen Datenübertragungspaket enthalten war, wodurch die Fehlerbehebungsprozedur beendet wird.
-
Wenn das Verdoppelungsmodul 168 (siehe 1) keinen Eintrag in der Empfänger-Hashtabelle 172 (siehe 1) finden kann, der einen Hashauszug enthält, der gleich dem Hashauszug D1 ist, sendet das Verdoppelungsmodul 168 (siehe 1) eine Nachricht an das erste Computersystem 101 (siehe 1), die angibt, dass das dem Hashauszug D1 entsprechende Datenpaket nicht in der Empfänger-Hashtabelle 172 (siehe 1) gefunden wurde, wodurch die Fehlerbehebungsprozedur abgeschlossen wird. Nach dem Abschließen der Fehlerbehebungsprozedur in Schritt 252 endet der Prozess der 2A bis 2B an Schritt 240.
-
In einer Ausführungsform wiederholt sich der Prozess von 2A bis 2B zum Verarbeiten von einer oder mehreren zusätzlichen Anforderungen, ein oder mehrere Datenpakete von dem ersten Computersystem 101 (siehe 1) an das zweite Computersystem 151 (siehe 1) zu senden, für jedes der anderen Datenpakete an Schritt 214 (siehe 2A), und solange die Netzwerkauslastung weiterhin den Netzwerkauslastungs-Schwellenwert überschreitet, bleibt das Deduplizierungsmodul 120 (siehe 1) im Deduplizierungsmodus, und es erfolgt kein erneutes Senden der Benachrichtigung von dem Computersystem 101 (siehe 1) an das Computersystem 151 (siehe 1), dass sich das Deduplizierungsmodul 120 (siehe 1) im Deduplizierungsmodus befindet. In einer alternativen Ausführungsform erfolgt die Prüfung der CPU-Auslastung in Schritt 208, und die Schritte 210, 212 und 214 (siehe 2A) erfolgen vor der Prüfung der Netzwerkauslastung in Schritt 202 (siehe 2A).
-
In einer alternativen Ausführungsform führt ein Computersystem 101-1 (siehe 5), das den Überwachungsprogrammcode 518 (siehe 5) ausführt, die Schritte 202, 204 und 208 aus (siehe 2A); das Computersystem 101-1 (siehe 5), das einen Deduplizierungsprogrammcode 520 (siehe 5) ausführt, führt die Zuweisung der Sender-Hashtabelle 122 (siehe 1) in Schritt 206 (siehe 2A), den Schritten 210, 212, 214, 216 und 218 (siehe 2A) und den Schritten 220, 222, 224, 226 und 228 aus (siehe 2B). Ferner führt in der Ausführungsform, die in diesem Abschnitt beschrieben wird, das Computersystem 151 (siehe 1), das den Verdoppelungsprogrammcode 568 (siehe 5) ausführt, die Zuweisung der Empfänger-Hashtabelle 172 (siehe 1) in Schritt 206 (siehe 2A) und in den Schritten 230, 232, 234, 236, 238, 242, 244, 246, 248, 250 und 252 aus (siehe 2B).
-
Prozess zum Verwalten von Hashtabellenbereich
-
3 ist ein Ablaufplan eines Prozesses zum Verwalten eines Hashtabellenbereichs in dem System von 1 gemäß Ausführungsformen der vorliegenden Erfindung. In einer Ausführungsform tritt der Prozess von 3 periodisch auf, wenn der Prozess von 2A bis 2B für mehrere Datenpakete in einem Deduplizierungsmodus wiederholt wird. Der Prozess von 3 beginnt mit Schritt 300. In Schritt 302 ermittelt das Überwachungsmodul 118 (siehe 1) die Bereichsmenge, die in der Sender-Hashtabelle 122 (siehe 1) zur Verfügung steht (d. h. den verfügbaren Bereich). Vor Schritt 304 empfängt das Überwachungsmodul 118 (siehe 1) einen Schwellenwert für verfügbaren Bereich, der angibt, wie gering die Menge an verfügbarem Bereich in der Sender-Hashtabelle 122 (siehe 1) sein darf, ohne einen Löschvorgang für einen oder mehrere Einträge in der Sender-Hashtabelle 122 (siehe 1) zu erfordern, um den verfügbaren Bereich zu vergrößern.
-
In Schritt 304 ermittelt das Überwachungsmodul 118 (siehe 1), ob der verfügbare Bereich, der in Schritt 302 bestimmt wurde, kleiner ist als der Schwellenwert für verfügbaren Bereich. Wenn das Überwachungsmodul 118 (siehe 1) ermittelt, dass der in Schritt 302 ermittelte verfügbare Bereich größer als der oder gleich dem Schwellenwert für verfügbaren Bereich ist, wird der Abzweig „Nein” von Schritt 304 eingeschlagen, und der Prozess von 3 kehrt in einer Schleife zu Schritt 302 zurück. Wenn das Überwachungsmodul 118 (siehe 1) ermittelt, dass der in Schritt 302 ermittelte verfügbare Bereich kleiner ist als der Schwellenwert für verfügbaren Bereich, wird der Abzweig „Ja” eingeschlagen, und Schritt 306 wird ausgeführt. Alternativ prüft der Empfänger (d. h. das Computersystem 151 in 1) den verfügbaren Bereich, und wenn der verfügbare Bereich unter den Schwellenwert fällt, sendet der Empfänger eine Nachricht an den Sender (d. h. das Computersystem 101 in 1), mit der eine Bereinigung der Empfänger-Hashtabelle 172 angefordert wird. Nach dem Senden der vorgenannten Nachricht wird der Abzweig ”Ja” von Schritt 304 eingeschlagen.
-
In Schritt 306 ermittelt das Überwachungsmodul 118 (siehe 1) auf Grundlage dessen, dass der verfügbare Bereich in der Sender-Hashtabelle 122 (siehe 1) kleiner ist als der Schwellenwert für verfügbaren Bereich, einen Index oder mehrere Indices (z. B. Zeilennummern) von einem oder mehreren Einträgen in der Sender-Hashtabelle 122 (siehe 1), deren jeweilige Nutzungszahl(en) gleich einer niedrigsten Nutzungszahl oder nächstniedrigsten Nutzungszahl ist bzw. sind. In der ersten Ausführung von Schritt 306 ermittelt das Überwachungsmodul 118 (siehe 1) den Index bzw. die Indices des oder der Einträge in der Sender-Hashtabelle 122 (siehe 1), die eine Nutzungszahl gleich der niedrigsten Nutzungszahl haben im Vergleich mit allen anderen Nutzungszahlen in der Sender-Hashtabelle 122 (siehe 1). In einer anschließenden Ausführung von Schritt 306, die sich aus der Schleife ergibt, die am Abzweig „Ja” von Schritt 314 beginnt, wie im Folgenden beschrieben, ermittelt das Überwachungsmodul 118 (siehe 1) einen Index bzw. Indices von einem oder mehreren Einträgen in der Sender-Hashtabelle 122 (siehe 1), die eine Nutzungszahl haben, die gleich der nächstniedrigsten Nutzungszahl relativ zu der bestimmten Nutzungszahl ist, die in der letzten vorherigen Ausführung von Schritt 306 verwendet wurde.
-
In Schritt 308 sendet das Überwachungsmodul 118 (siehe 1) den Index bzw. die Indices, die in Schritt 306 ermittelt wurden (z. B. als eine Liste), an das Empfänger-Computersystem 151 (siehe 1). Anschließend an Schritt 308 und vor Schritt 310 empfängt das Empfänger-Computersystem 151 (siehe 1) den Index bzw. die Indices, die vom Überwachungsmodul 118 (siehe 1) gesendet wurden.
-
In Schritt 310 löscht das Überwachungsmodul 118 (siehe 1) oder ein anderes Modul auf Software-Grundlage, das im Sender-Computersystem 101 (siehe 1) ausgeführt wird, den einen oder die mehreren Dateneinträge in der Sender-Hashtabelle 122 (siehe 1), die dem Index bzw. den Indices entsprechen, die in Schritt 306 ermittelt wurden. Ebenfalls im Schritt 310 löscht ein Modul auf Software-Grundlage, das in dem Empfänger-Computersystem 151 (siehe 1) ausgeführt wird, den einen oder die mehreren Dateneinträge in der Empfänger-Hashtabelle 172 (siehe 1), die dem Index bzw. den Indices entsprechen, die in Schritt 306 gesendet wurden und anschließend vom Empfänger-Computersystem 151 (siehe 1) empfangen wurden.
-
In Schritt 312 ermittelt das Überwachungsmodul 118 (siehe 1) erneut den verfügbaren Bereich in der Sender-Hashtabelle 122 (siehe 1).
-
In Schritt 314 ermittelt das Überwachungsmodul 118 (siehe 1), ob der verfügbare Bereich in der Sender-Hashtabelle 122 (siehe 1) immer noch kleiner ist als der Schwellenwert für verfügbaren Bereich. Wenn das Überwachungsmodul 118 (siehe 1) in Schritt 314 ermittelt, dass der verfügbare Bereich kleiner als der Schwellenwert für verfügbaren Bereich ist, wird der Abzweig „Ja” von Schritt 314 eingeschlagen, und der Prozess von 3 kehrt in einer Schleife zum Schritt 306 zurück, um einen oder mehrere Indices von einem oder mehreren anderen Hashtabellen-Dateneinträgen zu ermitteln, die gelöscht werden müssen, um den verfügbaren Bereich in der Sender-Hashtabelle 122 (siehe 1) und in der Empfänger-Hashtabelle 172 (siehe 1) zu vergrößern. Wenn andernfalls das Überwachungsmodul 118 (siehe 1) in Schritt 314 ermittelt, dass der verfügbare Bereich größer als oder gleich dem Schwellenwert für verfügbaren Bereich ist, wird der Abzweig „Nein” von Schritt 314 eingeschlagen, und Schritt 316 wird ausgeführt Der Prozess von 3 endet mit Schritt 316.
-
Zum Beispiel wird angenommen, dass die Sender-Hashtabelle 122 (siehe 1) in den Zeilen 1 bis 10 jeweils die folgenden Nutzungszahlen aufweist: 1, 2, 1, 5, 2, 4, 5, 2, 4, 4 (d. h. die erste Zeile hat eine Nutzungszahl 1, die zweite Zeile hat eine Nutzungszahl 2, die dritte Zeile hat eine Nutzungszahl 1 usw., bis zur zehnten Zeile, die eine Nutzungszahl 4 hat). In diesem Beispiel ermittelt die erste Ausführung von Schritt 306, dass die Zeilen mit den Nummern 1 und 3 gelöscht werden müssen, um den verfügbaren Bereich in der Sender-Hashtabelle 122 (siehe 1) und in der Empfänger-Hashtabelle 172 (siehe 1) zu vergrößern, weil die niedrigste Nutzungszahl 1 ist, und die erste und die dritte Zeile die niedrigste Nutzungszahl 1 aufweisen. Wenn nach dem Löschen der Zeilen mit den Nummern 1 und 3 im Schritt 310 der Schritt 314 ermittelt, dass der verfügbare Bereich immer noch kleiner als der Schwellenwert ist, ermittelt eine zweite Ausführung von Schritt 306, dass die Zeilen mit den Nummern 2, 5 und 8 gelöscht werden müssen, weil 2 die nächstniedrigste Nutzungszahl nach der Nutzungszahl 1 ist, die in der ersten Ausführung von Schritt 306 verwendet wurde, und weil die zweite, fünfte und achte Zeile die nächstniedrigste Nutzungszahl 2 aufweisen. Wenn nach dem Löschen der zweiten, fünften und achten Zeile der Schritt 314 ermittelt, dass der verfügbare Bereich immer noch kleiner als der Schwellenwert ist, ermittelt eine dritte Ausführung von Schritt 306, dass die Zeilen mit den Nummern 6, 9 und 10 gelöscht werden müssen, weil die nächstniedrigste Zahl 4 ist, nachdem die Nutzungszahl 2 in der zweiten Ausführung von Schritt 306 verwendet wurde, und weil die sechste, neunte und zehnte Zeile die nächstniedrigste Nutzungszahl 4 aufweisen.
-
Beispiel
-
4 ist ein beispielhaftes Datenübertragungspaket, das ein Datenpaket enthält, das durch den Prozess von 2A bis 2B gemäß Ausführungsformen der vorliegenden Erfindung verwaltet wird. Ein Datenübertragungspaket 402 enthält einen Header 404 und ein Datenpaket 406. Der Header 404 enthält eine Hashfunktionskennung 408, einen Hashauszug D1 410 und weitere Metadaten 412. Das Datenübertragungspaket 402 ist insofern eine Erweiterung von bekannten Datenübertragungspaketen, als der Header 404 die zusätzlichen Metadaten der Hashfunktionskennung 408 und des Hashauszugs Digest D1 410 enthält. Bekannte Metadaten sind in den weiteren Metadaten 412 enthalten.
-
Das Datenübertragungspaket 402 ist ein Beispiel für das in Schritt 218 (siehe 2A) oder Schritt 228 (siehe 2B) gesendete Datenübertragungspaket. Die Hashfunktionskennung 408 ist eine beispielhafte Kennung der in Schritt 210 (siehe 2A) oder Schritt 212 (siehe 2A) ausgewählten Hashfunktion. Beispiele für verfügbare Hashfunktionen siehe Tabelle 1. Das Datenpaket 406 ist ein Beispiel des Datenpakets, für das in Schritt 214 (siehe 2A) der Hashauszug D1 ermittelt wird, der in Schritt 218 (siehe 2A) oder Schritt 228 (siehe 2B) an das zweite Computersystem 151 (siehe 1) gesendet wird, und das in Schritt 244 (siehe 2B) an eine Anwendung gesendet wird. Der Hashauszug D1 410 ist ein Beispiel für den in Schritt 214 (siehe 2A) ermittelten Hashauszug und der an das Empfänger-Computersystem 151 (siehe 1) in Schritt 218 (siehe 2A) oder Schritt 228 (siehe 2B) gesendet wird.
-
Eine Variation des Datenübertragungspakets 402, die das Datenpaket 406 nicht enthält oder die im Datenpaket 406 keine Daten enthält, ist ein Beispiel des in Schritt 224 (siehe 2B) gesendeten Datenübertragungspakets. Wenn das Datenübertragungspaket 402 in Schritt 224 (siehe 2B) gesendet wird, enthält der Hashauszug D1 410 den in Schritt 214 (siehe 2A) ermittelten Hashauszug D1, und die weiteren Metadaten 412 enthalten den Index, der in Schritt 224 (siehe 2B) gesendet wird.
-
Computersystem
-
5 ist ein Blockschaubild eines Computersystems, das die Prozesse von 2A bis 2B und 3 gemäß Ausführungsformen der vorliegenden Erfindung umsetzt. Ein System 500 enthält ein erstes Computersystem 101-1 und ein zweites Computersystem 151-1, die über ein Computernetzwerk 130-1 miteinander in Datenaustausch stehen.
-
Das erste Computersystem 101-1 weist im Allgemeinen eine Zentraleinheit (CPU) 102-1, einen Arbeitsspeicher 104-1, eine Eingabe/Ausgabe-(E/A)Schnittstelle 106-1, einen Bus 108-1 und eine Sender-NIC 116-1 auf. Ferner ist das Computersystem 101-1 mit E/A-Einheiten 110-1 und einer Computer-Datenspeichereinheit 112-1 verbunden. Desgleichen weist das Computersystem 151-1 im Allgemeinen eine CPU 152-1, einen Arbeitsspeicher 154-1, eine E/A-Schnittstelle 156-1, einen Bus 158-1 und eine Empfänger-NIC 166-1 auf, und das Computersystem 151-1 ist mit E/A-Einheiten 160-1 und einer Computer-Datenspeichereinheit 162-1 verbunden.
-
Die CPUs 102-1 und 152-1 führen Berechnungs- und Kontrollfunktionen jeweils für das Computersystem 101-1 und 151-1 aus, einschließlich dessen, dass die CPU 102-1 Anweisungen ausführt, die in dem Überwachungsprogrammcode 518 und dem Deduplizierungsprogrammcode 520 enthalten sind, und dass die CPU 152-1 Anweisungen ausführt, die in dem Verdoppelungsprogrammcode 568 enthalten sind, um ein Verfahren zum Verwalten eines Datenpakets unter Verwendung einer Sender-Hashtabelle 522 im Arbeitsspeicher 104-1 und einer Empfänger-Hashtabelle 572 im Arbeitsspeicher 154-1 auszuführen. Die im Code 518 und 520 enthaltenen Anweisungen werden von der CPU 102-1 über den Arbeitsspeicher 104-1 ausgeführt. Die im Code 568 enthaltenen Anweisungen werden von der CPU 152-1 über den Arbeitsspeicher 154-1 ausgeführt. Die CPU 102-1 und die CPU 152-1 können jeweils eine einzelne Verarbeitungseinheit aufweisen oder über eine oder mehrere Verarbeitungseinheiten an einer oder mehreren Positionen (z. B. auf einem Client und einem Server) verteilt sein.
-
In einer anderen Ausführungsform enthält das Computersystem 101-1 auch einen Verdoppelungsprogrammcode, dessen Funktionalität mit der Funktionalität des Verdoppelungsprogrammcodes 568 übereinstimmt, und das Computersystem 151-1 enthält auch einen Überwachungsprogrammcode und einen Deduplizierungsprogrammcode, deren Funktionalität jeweils mit der Funktionalität des Überwachungsprogrammcodes 518 und des Deduplizierungsprogrammcodes 520 übereinstimmt.
-
Der Arbeitsspeicher 104-1 und der Arbeitsspeicher 154-1 können jeweils jedes bekannte computerlesbare Speichermedium enthalten, wie im Folgenden beschrieben. In einer Ausführungsform können Cache-Speicherelemente des Arbeitsspeichers 104-1 und des Arbeitsspeichers 154-1 eine vorübergehende Speicherung von zumindest einigem Programmcode bereitstellen (z. B. Programmcode 518 und Programmcode 520), um die Anzahl der Abrufe von Code aus dem Massenspeicher zu verringern, während Anweisungen aus dem Programmcode ausgeführt werden. Des Weiteren können der Arbeitsspeicher 104-1 und der Arbeitsspeicher 154-1 sich jeweils an einer einzigen physischen Position befinden, die einen oder mehrere Typen eines Datenspeichers aufweist, oder über eine Vielzahl von physischen Systemen in verschiedenen Formen verteilt sein. Ferner können der Arbeitsspeicher 104-1 und der Arbeitsspeicher 154-1 jeweils Daten enthalten, die zum Beispiel über ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN) verteilt sind.
-
Die E/A-Schnittstelle 106-1 und die E/A-Schnittstelle 156-1 enthalten jeweils ein beliebiges System zum Austauschen von Informationen für oder von einer externen Quelle. Die E/A-Einheiten 110-1 und die E/A-Einheiten 160-1 enthalten jeden bekannten Typ einer externen Einheit, darunter eine Anzeigeeinheit (z. B. Monitor), Tastatur, Maus, Drucker, Lautsprecher, Handheld-Einheit, Fax usw. Der Bus 108-1 und der Bus 158-1 stellen eine Datenübertragungsverbindung zwischen jeder der Komponenten in dem jeweils ersten Computersystem 101-1 und dem zweiten Computersystem 151-1 bereit und können jeweils jeden Typ von Übertragungsverbindung aufweisen, einschließlich elektrisch, optisch, drahtlos usw.
-
Die E/A-Schnittstelle 106-1 und die E/A-Schnittstelle 156-1 ermöglichen es auch jeweils dem Computersystem 101-1 und dem Computersystem 151-1, Informationen (z. B. Daten oder Programmanweisungen wie den Programmcode 518 und den Programmcode 520) jeweils auf der Computer-Datenspeichereinheit 112-1 und der Computer-Datenspeichereinheit 162-1 oder einer anderen Computer-Datenspeichereinheit (nicht gezeigt) zu speichern und die Informationen von diesen abzurufen. Die Computer-Datenspeichereinheit 112-1 und die Computer-Datenspeichereinheit 162-1 können jeweils jedes bekannte computerlesbare Speichermedium aufweisen, wie im Folgenden beschrieben. Zum Beispiel kann die Computer-Datenspeichereinheit 112-1 oder die Computer-Datenspeichereinheit 162-1 eine nicht flüchtige Datenspeichereinheit wie beispielsweise eine Magnetplatte (d. h. ein Festplattenlaufwerk) oder ein optisches Laufwerk sein (z. B. ein CD-ROM-Laufwerk, das eine CD-ROM-Diskette aufnimmt).
-
Die Sender-NIC 116-1 ist eine Komponente, die das erste Computersystem 101-1 mit dem Netzwerk 130-1 verbindet. Die Empfänger-NIC 166-1 ist eine Komponente, die das zweite Computersystem 151-1 mit dem Netzwerk 130-1 verbindet.
-
Der Arbeitsspeicher 104-1 und/oder die Speichereinheit 112-1 können den Computerprogrammcode 518 und den Programmcode 520 speichern, die Anweisungen enthalten, die von der CPU 102-1 über den Arbeitsspeicher 104-1 zum Verwalten eines Datenpakets ausgeführt werden. Der Arbeitsspeicher 154-1 und/oder die Speichereinheit 162-1 können den Computerprogrammcode 568 speichern, der Anweisungen enthält, die von der CPU 152-1 über den Arbeitsspeicher 154-1 zum Verwalten eines Datenpakets ausgeführt werden. Obwohl 5 den Arbeitsspeicher 104-1 so darstellt, als enthielte er den Programmcode 518 und den Programmcode 520, berücksichtigt die vorliegende Erfindung Ausführungsformen, in denen der Arbeitsspeicher 104-1 den Code 518 und den Code 520 nicht gleichzeitig vollständig enthält, sondern stattdessen zu einem Zeitpunkt nur einen Abschnitt des Codes 518 und/oder einen Abschnitt des Codes 520 enthält. Obwohl 5 den Arbeitsspeicher 154-1 so darstellt, als enthielte er den Programmcode 568, berücksichtigt die vorliegende Erfindung Ausführungsformen, in denen der Arbeitsspeicher 154-1 nicht gleichzeitig den gesamten Code 568 enthält, sondern stattdessen zu einem Zeitpunkt nur einen Abschnitt des Codes 568 enthält.
-
Ferner können der Arbeitsspeicher 104-1 und der Arbeitsspeicher 154-1 weitere Systeme enthalten, die nicht in 5 gezeigt sind, wie beispielsweise jeweils ein Betriebssystem, das auf der CPU 102-1 ausgeführt wird und eine Steuerung von verschiedenen Komponenten in und/oder verbunden mit dem Computersystem 101-1 bereitstellt, und ein Betriebssystem, das auf der CPU 152-1 ausgeführt wird und eine Steuerung von verschiedenen Komponenten in und/oder verbunden mit dem Computersystem 151-1 bereitstellt.
-
In einer Ausführungsform speichern die Speichereinheit 112-1 und/oder eine oder mehrere andere Computer-Datenspeichereinheiten (nicht gezeigt), die mit dem Computersystem 101-1 verbunden sind, eine Sender-Hashtabelle 522. In einer Ausführungsform speichern die Speichereinheit 162-1 und/oder eine oder mehrere andere Computer-Datenspeichereinheiten (nicht gezeigt), die mit dem Computersystem 151-1 verbunden sind, eine Empfänger-Hashtabelle 572.
-
Wie einem Fachmann klar sein wird, kann die vorliegende Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert wenden. Dementsprechend kann ein Aspekt einer Ausführungsform der vorliegenden Erfindung in der Form eines vollständigen Hardware-Aspekts, eines vollständigen Software-Aspekts (einschließlich Firmware, residente Software, Mikrocode usw.) oder eines Aspekts vorliegen, der Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Modul” Bezug genommen werden kann. Des Weiteren kann eine Ausführungsform der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist (z. B. Arbeitsspeicher 104-1 und/oder Computer-Datenspeichereinheit 112-1; z. B. Arbeitsspeicher 154-1 und/oder Computer-Datenspeichereinheit 162-1), auf denen computerlesbarer Programmcode (z. B. Programmcode 518 und 520; z. B. Programmcode 568) verkörpert oder gespeichert ist.
-
Jede Kombination von einem oder mehreren computerlesbaren Medien (z. B. Arbeitsspeicher 104-1 und Computer-Datenspeichereinheit 112-1; z. B. Arbeitsspeicher 154-1 und/oder Computer-Datenspeichereinheit 162-1) kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Speichermedium oder ein computerlesbares Signalmedium sein. In einer Ausführungsform ist das computerlesbare Speichermedium eine computerlesbare Speichereinheit oder eine computerlesbare Speichervorrichtung. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches oder Halbleitersystem, eine derartige Vorrichtung, Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen für das computerlesbare Speichermedium enthält: eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen Lichtwellenleiter, einen tragbaren CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments ist ein computerlesbares Speichermedium ein konkretes Medium, das ein Programm (z. B. Programm 518 und 520; z. B. Programm 568) zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen enthalten oder speichern kann. Die Begriffe „computerlesbares Speichermedium” und „computerlesbare Speichereinheit” schließen ein Verbreitungsmedium jedoch nicht ein.
-
Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges verbreitetes Signal kann jede einer Vielfalt von Formen annehmen, unter anderem elektromagnetisch, optisch oder jede geeignete Kombination davon, es ist aber nicht darauf beschränkt. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen übertragen, verbreiten oder transportieren kann.
-
In einem computerlesbaren Medium verkörperter Programmcode (z. B. Programmcode 518, 520 und 568) kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, Funkfrequenz (HF) usw. oder jede geeignete Kombination des Vorgenannten, er ist aber nicht darauf beschränkt.
-
Ein Computerprogrammcode (z. B. Programmcode 518, 520 und 568) zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie JAVA, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C” oder ähnlichen Programmiersprachen. Anweisungen des Programmcodes können vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden, wobei der vorgenannte Computer des Benutzers, der entfernt angeordnete Computer und Server zum Beispiel das Computersystem 101-1, das Computersystem 151-1 oder ein anderes Computersystem (nicht gezeigt) sein können, die Komponenten analog zu den Komponenten des in 5 enthaltenen Computersystems 101-1 oder des Computersystems 151-1 haben. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk (nicht gezeigt) verbunden sein, einschließlich einem LAN oder einem WAN, oder die Verbindung kann zu einem externen Computer hergestellt werden (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters).
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen (z. B. 2A bis 2B und 3) und/oder von Blockschaubildern von Verfahren, Vorrichtungen (Systemen) (z. B. 1 und 5) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können (z. B. Programmcode 518, 520 und 568). Diese Computerprogrammanweisungen können für einen oder mehrere Hardware-Prozessoren (z. B. CPU 102-1 oder CPU 152-1) eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den bzw. die Prozessoren des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Diese Computerprogrammanweisungen können auch in einer computerlesbaren Einheit gespeichert werden (z. B. Arbeitsspeicher 104-1 oder Computer-Datenspeichereinheit 112-1; z. B. Arbeitsspeicher 154-1 oder Computer-Datenspeichereinheit 162-1) die einen Computer (z. B. das Computersystem 101-1 oder das Computersystem 151-1), andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, sodass die Anweisungen (z. B. Programmcode 518 und 520; z. B. Programmcode 568), die in der computerlesbaren Einheit gespeichert sind, einen Herstellungsgegenstand erzeugen, der Anweisungen enthält, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
-
Die Computerprogrammanweisungen können auch auf einen Computer (z. B. das Computersystem 101-1 oder das Computersystem 151-1), eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen (z. B. Programmcode 518 und 520; z. B. Programmcode 568), die auf dem Computer, anderen programmierbaren Vorrichtungen oder anderen Einheiten ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Jede der Komponenten einer Ausführungsform der vorliegenden Erfindung kann von einem Dienstanbieter angewendet, verwaltet, gepflegt usw. werden, der anbietet, eine Datenverarbeitungsinfrastruktur in Bezug auf die Verwaltung eines Datenpakets anzuwenden oder zu integrieren. Somit offenbart eine Ausführungsform der vorliegenden Erfindung einen Prozess zum Unterstützen einer Computer-Infrastruktur, wobei der Prozess ein erstes Computersystem enthält, das mindestens einen Unterstützungsdienst für mindestens eines von Integrieren, Hosten, Verwalten und Anwenden von computerlesbarem Code (z. B. Programmcode 518 und 520; z. B. Programmcode 568) in einem zweiten Computersystem (z. B. Computersystem 101-1 oder Computersystem 151-1) bereitstellt, das einen oder mehrere Prozessoren enthält (z. B. CPU 102-1 oder CPU 152-1), wobei der bzw. die Prozessoren Anweisungen ausführen, die in dem Code enthalten sind und das zweite Computersystem veranlassen, ein Datenpaket zu verwalten.
-
In einer anderen Ausführungsform stellt die Erfindung ein Verfahren bereit, das die Prozessschritte der Erfindung auf Grundlage eines Abonnements, von Werbung und/oder von Gebühren ausführt. Das heißt, dass ein Dienstanbieter, wie beispielsweise ein Lösungsintegrator, anbieten kann, einen Prozess zum Verwalten eines Datenpakets zu erstellen, zu verwalten, zu unterstützen usw. In diesem Fall kann der Dienstanbieter eine Computer-Infrastruktur erstellen, verwalten, unterstützen usw., die die Prozessschritte der Erfindung für einen oder mehrere Kunden ausführt. Im Gegenzug kann der Dienstanbieter eine Bezahlung von dem oder den Kunden gemäß einem Abonnement und/oder einer Gebührenvereinbarung erhalten und/oder der Dienstanbieter kann eine Bezahlung aus dem Verkauf von Werbeinhalt an eine oder mehrere dritte Parteien erhalten.
-
Die Ablaufpläne in 2A bis 2B und 3 und die Blockschaubilder in 1 und 5 veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt (z. B. Programmcode 518 und 520; z. B. Programmcode 568) darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block der Veranschaulichungen von Blockschaubildern und/oder des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder Veranschaulichungen des Ablaufplans durch spezielle Systeme auf Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
-
Unter erneuter Bezugnahme auf 1 ist das erste Computersystem 101 in einer Ausführungsform mit E/A-Einheiten (nicht gezeigt) und einer Computer-Datenspeichereinheit (nicht gezeigt) verbunden, wobei die E/A Einheiten und die Computer-Datenspeichereinheit jeweils die Funktionalität der E/A-Einheiten 110-1 (siehe 5) und der Computer-Datenspeichereinheit 112-1 (siehe 5) haben. In einer Ausführungsform ist das zweite Computersystem 151 mit E/A-Einheiten (nicht gezeigt) und einer Computer-Datenspeichereinheit (nicht gezeigt) verbunden, wobei die E/A Einheiten und die Computer-Datenspeichereinheit jeweils die Funktionalität der E/A-Einheiten 160-1 (siehe 5) und der Computer-Datenspeichereinheit 162-1 (siehe 5) haben.
-
Die CPU 102 führt Berechnungs- und Kontrollfunktionen für das erste Computersystem 101 aus, einschließlich des Ausführens von Anweisungen, die in dem Programmcode enthalten sind, der enthält, dass das Überwachungsmodul 118 und das Deduplizierungsmodul 120 ein Verfahren zum Verwalten eines Datenpakets ausführen. In einer Ausführungsform werden die Anweisungen, die im Überwachungsmodul 118 und im Deduplizierungsmodul 120 enthalten sind, durch einen Prozessor (nicht gezeigt) in der Sender-NIC 116 über einen Arbeitsspeicher (nicht gezeigt) in der Sender-NIC 116 oder durch die CPU 102 über den Arbeitsspeicher 104 ausgeführt. In einer anderen Ausführungsform werden die Anweisungen, die im Überwachungsmodul 118 und im Deduplizierungsmodul 120 enthalten sind, von der CPU 102 über den Arbeitsspeicher 104 ausgeführt.
-
Die CPU 152 führt Berechnungs- und Kontrollfunktionen für das zweite Computersystem 151 aus, einschließlich des Ausführens von Anweisungen, die in dem Programmcode enthalten sind, der enthält, dass das Verdoppelungsmodul 168 ein Verfahren zum Verwalten eines Datenpakets ausführt. In einer Ausführungsform werden die Anweisungen, die im Verdoppelungsmodul 168 enthalten sind, durch einen Prozessor (nicht gezeigt) in der Empfänger-NIC 166 über einen Arbeitsspeicher (nicht gezeigt) in der Empfänger-NIC 166 ausgeführt. In einer anderen Ausführungsform werden die Anweisungen, die im Verdoppelungsmodul 168 enthalten sind, von der CPU 152 über den Arbeitsspeicher 154 ausgeführt.
-
Die CPU 102 und die CPU 152 können jeweils eine einzelne Verarbeitungseinheit aufweisen oder über eine oder mehrere Verarbeitungseinheiten an einer oder mehrere Positionen (z. B. auf einem Client und einem Server) verteilt sein.
-
Der Arbeitsspeicher 104 und der Arbeitsspeicher 154 können jeweils jedes bekannte computerlesbare Speichermedium enthalten, wie oben beschrieben. Der Arbeitsspeicher 104 und der Arbeitsspeicher 154 haben jeweils die Merkmale und Einschränkungen des Arbeitsspeichers 104-1 (siehe 5) und des Arbeitsspeichers 154-1 (siehe 5), wie oben beschrieben.
-
In einer Ausführungsform ist die Funktionalität des Überwachungsmoduls 118 gleichwertig mit der Funktionalität des Überwachungsprogrammcodes 518 (siehe 5), die Funktionalität des Deduplizierungsmoduls 120 ist gleichwertig mit der Funktionalität des Deduplizierungsprogrammcodes 520 (siehe 5), die Funktionalität der Sender-Hashtabelle 122 ist gleichwertig mit der Funktionalität der Sender-Hashtabelle 522 (siehe 5), die Funktionalität des Verdoppelungsmoduls 168 ist gleichwertig mit der Funktionalität des Verdoppelungsprogrammcodes 568, und die Funktionalität der Empfänger-Hashtabelle 172 ist gleichwertig mit der Funktionalität der Empfänger-Hashtabelle 572 (siehe 5).
-
In einer alternativen Ausführungsform werden die Schritte, die in 2A bis 2B und in 3 durch das Überwachungsmodul 118, das Deduplizierungsmodul 120 und das Verdoppelungsmodul 168 ausgeführt werden, stattdessen jeweils durch das Computersystem 101-1 ausgeführt, das den Überwachungsprogrammcode 518 ausführt (siehe 5), das Computersystem 101-1, das den Deduplizierungsprogrammcode 520 ausführt (siehe 5) und das Computersystem 151-1, das den Verdoppelungsprogrammcode 568 ausführt (siehe 5).
-
Zwar wurden hierin Ausführungsformen der vorliegenden Erfindung zu Veranschaulichungszwecken beschrieben, doch werden für den Fachmann viele Modifizierungen und Änderungen offenkundig. Dementsprechend sollen die Ansprüche im Anhang alle derartigen Modifizierungen und Änderungen mit einschließen, die unter den Erfindungsgedanken und Schutzumfang dieser Erfindung fallen.