DE69930992T2 - Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen - Google Patents

Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen Download PDF

Info

Publication number
DE69930992T2
DE69930992T2 DE69930992T DE69930992T DE69930992T2 DE 69930992 T2 DE69930992 T2 DE 69930992T2 DE 69930992 T DE69930992 T DE 69930992T DE 69930992 T DE69930992 T DE 69930992T DE 69930992 T2 DE69930992 T2 DE 69930992T2
Authority
DE
Germany
Prior art keywords
negative
packets
message
network
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69930992T
Other languages
English (en)
Other versions
DE69930992D1 (de
Inventor
Robert Steven Newcastle Meizlik
Keith S. Redmond Hamilton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69930992D1 publication Critical patent/DE69930992D1/de
Publication of DE69930992T2 publication Critical patent/DE69930992T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1854Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0002Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0015Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • H04L1/1678Details of the supervisory signal the supervisory signal being transmitted together with control information where the control information is for timing, e.g. time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1848Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1877Measures taken prior to transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1685Details of the supervisory signal the supervisory signal being transmitted in response to a specific request, e.g. to a polling signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1895Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0093Point-to-multipoint

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. In Beziehung stehende Anmeldungen
  • Die vorliegende Anmeldung betrifft das US-Patent Nr. 6,381,215 unter dem Titel „Method and Computer Program Product for Efficiently and Reliably Sending Small Data Messages From a Sending System to a Large Number of Receiving Systems" (Verfahren und Rechnerprogrammprodukt für effizientes und zuverlässiges Senden kleiner Datennachrichten von einem sendenden System an eine große Anzahl von empfangenden Systemen), das auf die Namen Keith Hamilton und Robert Meizlik eingereicht wurde, sowie das US-Patent Nr. 6,392,993 unter dem Titel „Method and Computer Program Product for Efficiently and Reliably Sending Small Data Messages from a Sending System to a Large Number of Receiving Systems" (Verfahren und Rechnerprogrammprodukt für effizientes und zuverlässiges Senden kleiner Datennachrichten von einem sendenden System an eine große Anzahl von empfangenden Systemen), das auf die Namen Robert Meizlik und Keith Hamilton eingereicht wurde, die beide an dem gleichen Tage wie die hier vorliegende Anmeldung eingereicht wurden.
  • 2. Gebiet der Erfindung
  • Das Gebiet der vorliegenden Erfindung betrifft die Übertragung kleiner Datennachrichten von einem sendenden System an eine Vielzahl von vernetzten empfangenden Systemen. Solche Datenkommunikation ist hilfreich für gleichzeitige zentrale Überwachung und Kontrolle von Systemen. Insbesondere behandelt die vorliegende Erfindung Verfahren für zuverlässige Durchführung der Übertragung bei gleichzeitiger Reduzierung des Netzverkehrs in Verbindung mit solcher Zuverlässigkeit.
  • 3. Stand der Technik
  • In großen Netzwerken ist es mitunter wünschenswert, Kurznachrichten, die relative wenige Pakete enthalten, an das Netz zu übertragen und sicherzustellen, dass jedes System am Netz die Nachricht entweder mit absoluter Gewissheit oder mit sehr hoher Wahrscheinlichkeit empfängt. Ein sendendes System kann die Nachricht an eine Anzahl von empfangenden Systemen senden. Diese Fähigkeit kann für eine breite Palette von Zwecken genutzt werden, einschließlich der zentralisierten Kontrolle von Anwendungen, die in den empfangenden Systemen resident sind. Insofern es möglich ist, relativ kurze Nachrichten zuverlässig zu übertragen, kann ein großes, lose gekoppeltes Netz zentralisierte Steuerattribute ähnlich diesen Merkmalen eines Großrechnersystems aufweisen.
  • Eine Möglichkeit der Sicherstellung von Zuverlässigkeit ist, mit jedem einzelnen empfangenden System zu kommunizieren, wobei ein verbindungsbasiertes Protokoll, wie zum Beispiel TCP über ein IP-Netzwerk, verwendet wird. In einem verbindungsbasierten Protokoll stellt ein System eine Verbindung zu einem anderen System her, wickelt die gesamte Kommunikation mit dem betreffenden System ab und beendet die Verbindung. Wenn Kommunikation mit mehreren Systemen gewünscht wird, wird eine Verbindung nacheinander mit jedem System aufgebaut. Der Overhead in Verbindung mit dem Herstellen und Verwalten einer Verbindung zwischen einem sendenden System und einer Anzahl von empfangenden Systemen ist unvertretbar hoch, wenn eine große Anzahl von empfangenden Systemen vorhanden ist.
  • Um den Overhead in Verbindung mit verbindungsbasierten Protokollen zu senken, wurden verbindungslose Protokolle, wie zum Beispiel UDP über ein IP-Netzwerk, entwickelt. Verbindungslose Protokolle beruhen normalerweise auf Übertragungsmodellen oder „Multicasting"-Modellen, bei denen eine einzelne Nachricht an eine Vielzahl von empfangenden Systemen übertragen wird, ohne dass eine Verbindung mit den einzelnen Systemen aufgebaut wird. Dieser Ansatz vermeidet den Overhead, der in Verbindung mit dem Aufbau von Verbindungen mit jedem einzelnen System entsteht, leidet jedoch an der Unfähigkeit, Empfang der Nachrichten in allen Systemen zu garantieren. Für IP-Netzwerke ist Multicasting vom Design her unzuverlässig, um den Overhead des Sendens von Paketen an mehrere Ziele zu senden.
  • Andere Mitteilungsübermittlungsprotokolle sind entwickelt worden, um das Problem der hohen Zuverlässigkeit in dem Kontext großer Nachrichten, die aus Hunderten oder Tau senden oder Millionen von Paketen bestehen, anzusprechen, jedoch nicht für Kurznachrichten aus relativ weniger Paketen. Solche Protokolle senden Daten von einem sendenden System zu einer Vielzahl von empfangenden Systemen, die in einem IP-Netzwerk unter Verwendung von IP-Multicasting, das den Sende-Overhead reduziert, verbunden sind. In dem Versuch, das Problem der inhärenten Unzuverlässigkeit von IP-Multicasting zu lösen, konzentrieren sich aktuelle Lösungen möglicherweise auf hohe Zuverlässigkeit für relativ wenige Ziele, wie es zum Beispiel bei Videokonferenzschaltungen oder bei Dynamic-Whiteboard-Anwendungen der Fall ist, oder sie konzentrieren sich möglicherweise auf zahlreiche Ziele für große Datengruppen, wie zum Beispiel Streaming-Audio-Daten oder Streaming-Video-Daten, wo der Ausfall einiger Pakete nicht als ernsthaftes Problem angesehen wird. Diese Lösungen für das Problem der inhärenten Unzuverlässigkeit von IP-Multicasting löst nicht das Problem des Bedarfs an sehr zuverlässiger Kurznachrichtenkommunikation zwischen einem sendenden System und einer Vielzahl von empfangenden Systemen. Weiterhin skalieren solche Protokolle normalerweise nicht gut auf sehr große Netzwerke, da sie große Fluten von Quittungen (ACKs) erzeugen, um Empfang sicher zu garantieren, sowie von negativen Quittungen (NAKs), um Übertragung von fehlenden Paketen zu bewirken. In großen Netzwerken kann diese Flut von ACKs und NAKs das Netzwerk vollständig drosseln.
  • Schließlich koppeln bisherige Protokolle das Multicasting einer ursprünglichen Nachricht nicht eng an Antworten, die möglicherweise empfangen werden. Auch dies ist wieder auf die Probleme zurückzuführen, die gelöst worden sind, nämlich die des zuverlässigen einseitig gerichteten Sendens von Daten, ohne Antworten zu erwarten, anstelle der zweiseitig gerichteten Kommunikation, wie sie bei der Steuerung von verteilten Anwendungen auftritt.
  • Eine Verbesserung des Standes der Technik wäre eine Möglichkeit des Sendens von kurzen Datennachrichten von einem sendenden System zu einer Vielzahl von empfangenden Systemen, die den Netzwerkverkehr reduziert, der normalerweise mit den gegenwärtig verfügbaren Lösungen in Verbindung steht, die effiziente verbindungslose Datenübertragungsmechanismen nutzen, wie zum Beispiel UDP-Multicasting über IP-Netzwerke. Es wäre eine Verbesserung dieser Verfahren, Antwortnachrichten von einem jeden empfangenden System stark an das sendende System zu koppeln, um einen zweiseitig gerichteten Kommunikationspfad bereitzustellen.
  • Optimal Multicast Feedback' (Nonnenmacher J, et al.) INFOCOM, 98, Seventeenth Annual Joint Conference of the IEEE Computer and Communications Societies Proceedings, IEEE San Francisco, CA, USA 29. März – 2. April 1998, New York, NY, USA, IEEE, US, 29. März 1998, Seiten 964–971, XP010270382 beschreibt ein Multicasting-Rückmeldungsverfahren auf der Grundlage von exponentiell verteilten Timern. Das Verfahren umfasst einen Sender, der eine Anfrage nach Rückmeldung an R Empfänger einschließlich λ, eine Anzeige der Rückmeldungsrunde (I) und ein Maß der Zeitintervallgröße (T) multicastet. Ein Empfänger empfängt die Anfrage und terminiert einen exponential verteilten Timer in dem Intervall [0, T], wobei die trunkierte Exponentialverteilung den Parameter λ hat. Bei Ablauf der Zeit wird entweder eine Rückmeldungsnachricht an den Sender gesendet, wenn keine andere Rückmeldungsnachricht von einem anderen Empfänger empfangen worden ist, oder eine Rückmeldungsnachricht wird unterdrückt, wenn eine Rückmeldungsnachricht vor Ablauf des Timers von einem anderen Empfänger empfangen wird. Bei Empfang der Rückmeldungsnachrichten berechnet der Sender eine Schätzung der Anzahl der Empfänger, und der Sender berechnet T und λ für eine nächste Anfrage nach Rückmeldung auf der Grundlage der berechneten Anzahl der Empfänger.
  • „A Reliable Multicast Framework for Light-Weight Sessions and Application Level Framing", Floyd, S., et al., IEEF/ACM Transactions on Networking, Vo. 5, No. 6, Dezember 1997, S. 784–803, XP-000734407, beschreibt eine skalierbare, zuverlässige Rahmenkonstruktion für leichte Arbeitssitzungen in verschiedenen Netzwerktopologien. Das Application Level Framing (ALF) wird erwähnt, bei dem sich das Multicastprotokoll für jede Anwendung unterscheidet und das auf der Semantik der Anwendung basiert. Light-Weight Sessions (LWS) werden ebenfalls beschrieben, die eine Weiterentwicklung von ALF unter Verwendung eines leichten Rendezvous-Mechanismus, basierend auf dem IP-Multicastverteilungsmodell, und empfängerbasierte Adaption darstellen. Drei Verfahren von Überlastungskontrolle werden erwähnt: Einstellen der Senderate auf den ungünstigsten Empfänger; Bündeln der Empfänger in verschiedene Bandbreitengruppen und Nutzen mehrerer Unterströme von Datenübertragung; sowie Empfänger reservierende Ressourcen, wenn solche Netzwerkressourcen verfügbar sind.
  • Ein Ziel der vorliegenden Erfindung besteht darin, das Volumen des Netzwerkverkehrs in Verbindung mit zuverlässigem Senden von kleinen Datennachrichten von einem sendenden System an eine Anzahl von empfangenden Systemen zu reduzieren.
  • Zusätzliche Ziele und Vorteile der Erfindung werden in der folgenden Beschreibung genannt werden und werden teilweise aus der Beschreibung ersichtlich sein beziehungsweise können aus der praktischen Anwendung der Erfindung abgeleitet werden. Die Ziele und Vorteile der Erfindung können mittels der in den anhängenden Patentansprüchen besonders hervorgehobenen Geräte und Kombinationen realisiert und umgesetzt werden.
  • Um die oben genannten Ziele zu erreichen, und gemäß der Erfindung, wie sie in diesem Dokument ausgeführt und allgemein beschrieben wird, wird ein Verfahren zum Senden negativer Quittungen von empfangenden Systemen zu einem sendenden System bereitgestellt, das keine Flut negativer Quittungen erzeugt, die die Leistung des Netzwerkes nachteilig beeinflussen kann, wobei das Netzwerk das sendende System umfasst, das zusammen mit wenigstens einem empfangenden System vernetzt ist, wobei Datennachrichten, eine Vielzahl von Übertragungspaketen umfassend, zwischen dem sendenden System und wenigstens einem empfangenden System übertragen werden und wobei empfangende Systeme, die nicht wenigstens ein Übertragungspaket empfangen, negative Quittungen zu dem sendenden System senden, das erneutes Übertragen der ausgelassenen Übertragungspakete anfordert, wobei das Verfahren die folgenden Schritte umfasst: an einem empfangenden System Warten auf ein auslösendes Ereignis, das entweder wenigstens Empfang eines Empfangspaketes oder Ablauf eines Warte-Timers für negative Quittung umfasst; bei dem auslösenden Ereignis des Empfangs eines Datenübertragungspaketes Durchführen wenigstens der folgenden Schritte: Prüfen des empfangenen Übertragungspaketes, um festzustellen, ob ein oder mehrere vorangehende Übertragungspakete ausgelassen worden sind; wenn ein oder mehrere vorangehende Datenübertragungspakete ausgelassen worden sind, dann 1) Auswählen einer Wartezeit für negative Quittung gemäß einer Wahrscheinlichkeitsdichtefunktion, die zu kürzeren Wartezeiten und längeren Wartezeiten führt, wobei kürzere Wartezeiten eine Dauer haben, die geringer ist als die Dauer längerer Wartezeiten und die Anzahl kürzerer Wartezeiten geringer ist als die Anzahl längerer Wartezeiten, und 2) Einstellen eines Warte-Timers für negative Quittung für die mit dem Übertragungspaket verbunde ne Nachricht unter Verwendung der ausgewählten Wartezeit für negative Quittung; und bei dem auslösenden Ereignis des Ablaufs eines Warte-Timers für negative Quittung Senden einer negativen Quittung an das Sendesystem, wenn das angeforderte Paket nicht empfangen worden ist, wobei die Wahrscheinlichkeitsdichtefunktion so eingestellt ist, dass die Mutmaßlichkeit des Auswählens einer kürzeren Wartezeit für negative Quittung zunimmt, wenn die Anzahl in dem Netzwerk ausgelassener Pakete zunimmt.
  • Weiterhin wird ein Computerprogramm bereitgestellt, das Codemittel umfasst, um die Schritte des Verfahrens der Erfindung durchzuführen, wenn es auf einem Computer ausgeführt wird.
  • Um die Probleme des Standes der Technik zu überwinden, sind zwei Protokolle entwickelt worden. Das Basisprotokoll, das allgemein als Statistically Reliable Transmission oder als statistischer Zuverlässigkeitsmodus bezeichnet wird, beruht auf einem probabilistischem Modell, das eingestellt werden kann, um die Wahrscheinlichkeit, dass ein einzelnes System eine Nachricht nicht empfangen hat, auf eine willkürlich kleine Anzahl zu reduzieren, wodurch im Wesentlichen sichergestellt wird, dass alle Systeme eine Nachricht empfangen. Für solche Situationen, in denen das statistische Modell unzureichend ist und der Empfang garantiert werden muss, können geringfügigere Änderungen an dem Protokoll vorgenommen werden, um ein Positive-Reliability-Transmission-Protokoll oder einen positiven Zuverlässigkeitsmodus zu erzeugen, wenn Systeme, die eine Nachricht nicht empfangen haben, identifiziert werden und Schritte eingeleitet werden können, um sicherzustellen, dass sie die Nachricht empfangen. Entscheidungen dazu, welcher Modus zu verwenden ist, können fallweise für eine einzelne Nachricht durch eine Anwendung oder fallweise für den einzelnen Sender oder den einzelnen Standort von der Systemverwaltung getroffen werden.
  • Beide Protokolle basieren auf UDP und beide Protokolle multicasten UDP-Pakete zu einem Empfänger oder zu vielen Empfängern. Das Basisprotokoll beruht auf der Übertragung mehrerer Pakete. Wenn somit eine Nachricht weniger als eine vorgegebene Mindestanzahl von Paketen füllt, wird die Nachricht erweitert, so dass sie die geforderte Mindestanzahl von Paketen füllt. Die Pakete werden nummeriert, so dass der Empfänger ermitteln kann, ob die gesamte Nachricht empfangen worden ist. Die Pakete werden unter Verwendung eines Dosierungsalgorithmus, der die Geschwindigkeit reguliert, mit der die Pakete gesendet werden, an die beabsichtigten Empfänger gesendet. Der Dosierungsalgorithmus erkennt, dass die Paket-Übertragungsgeschwindigkeit normalerweise die Paketverlustrate in dem Netzwerk beeinflusst. Wenn die Pakete dosiert werden, wird verhindert, dass die Paket-Übertragungsgeschwindigkeit die Paketverlustrate nachteilig beeinflusst.
  • Wenn der Übertragungsmodus der sicheren Zuverlässigkeit verwendet wird, wird nach jedem N-ten Paket eine Quittungs-Anforderungsmarke gesetzt. Die Erfassung von N Paketen wird als „Quittungsfenster (ACK-Fenster)" oder als „Übertragungsfenster" bezeichnet. Das Setzen des Quittungs-Anforderungs-Markensignals signalisiert dem Empfänger, den Empfang des betreffenden Paketes sicher zu quittieren, indem eine Quittung (ACK) an den Sender gesendet wird. Weiterhin weist das letzte Paket in dem Übertragungsfenster eine gesetzte Quittungs-Anforderungsmarke auf. Die Quittungs-Anforderungsmarke wird bei dem statistisch zuverlässigen Übertragungsmodus nicht verwendet.
  • Da mehrere Pakete in einer Nachricht gesendet werden, erhöht sich die Wahrscheinlichkeit, dass ein System wenigstens eines der Pakete in einer Nachricht empfangen wird. Indem die Mindestanzahl von pro Nachricht gesendeten Paketen auf der Grundlage der Paketverlustrate des Systems eingestellt wird, kann die Wahrscheinlichkeit, dass ein System wenigstens ein Paket empfangen wird, auf eine sehr kleine Zahl reduziert werden. Systeme, die nur einen Teil einer Nachricht empfangen, können ihre Unvollständigkeit erkennen und eine negative Quittung (NAK) senden, die eine erneute Übertragung auslöst.
  • In einem großen Netzwerk wird es normalerweise auftreten, dass zahlreiche Systeme nicht wenigstens einen Teil einer nicht Nachricht empfangen haben. Wenn jedes System eine negative Quittung (NAK) senden würde, würde die Flut der negativen Quittungen (NAKs) das Netzwerk überschwemmen. Die Erfindung verwendet Unterdrückungsverfahren für negative Quittungen sowohl auf der Senderseite als auch auf der Empfängerseite. Die Empfänger berechnen die Verzögerungszeit auf der Grundlage eines festgelegten Algorithmus, die sodann verwendet wird, um eine negative Quittung (NAK) an den Sender zu senden. Die Verzögerungszeit wird entsprechend einer festgelegten Wahrscheinlichkeitsdichtefunktion berechnet, die zu einer statistisch vorhersagbaren Anzahl von Systemen resultiert, die negative Quittungen (NAKs) nach einer gegebenen Verzögerungszeit senden. In einer Implementierung wird die Wahrscheinlichkeitsdichte ausgewählt, um in einem frühen Stadium relativ wenige negative Quittungen (NAKs), jedoch relativ mehr in einem späteren Stadium, zu erzeugen. Durch Einstellen der Wahrscheinlichkeitsdichte in Abhängigkeit von verschiedenen Parametern, wie zum Beispiel der Netzwerk-Paketverlustrate, kann die Anzahl der zu einem gegebenen Zeitpunkt gesendeten negativen Quittungen (NAKs) auf die Bedingungen des Netzwerkes eingestellt werden.
  • Dies reduziert die Anzahl der von dem Sender empfangenen negativen Quittungen (NAKs). Als Reaktion auf eine negative Quittung (NAK) wird der Sender das ausgelassene Paket erneut übertragen. Etwaige zusätzliche von dem Sender empfangene negative Quittungen (NAKs) für das gleiche Paket werden für einen vorbestimmten Zeitraum nach der erneuten Übertragung des Paketes ignoriert werden. Dies reduziert den Verkehr an dem Netzwerk weiter, indem das erneut übertragene Paket Zeit erhält, von einem beliebigen System, das dieses Paket möglicherweise nicht empfangen hat, empfangen zu werden. Zusätzlich erhöht jede erneute Übertragung die Wahrscheinlichkeit, dass jedes System in dem Netzwerk wenigstens ein Paket in einer Nachricht empfangen wird. Das Verfahren negative Quittung (NAK)/erneute Übertragung wird über einen gewissen Zeitraum wiederholt.
  • Bei dem Modus der sicheren Zuverlässigkeit hört und verfolgt der Sender Quittungen (ACKs) nach Empfängern. Somit kann ein beliebiger Empfänger, der keine Quittung (ACK) zurück sendet, identifiziert werden. In regelmäßigen Abständen werden alle Systeme, die für ein konkretes Übertragungsfenster keine Quittung (ACK) zurück gesendet haben, identifiziert, und das letzte Paket des Übertragungsfensters wird erneut an sie übertragen.
  • Nachrichten können anzeigen, dass eine Antwort angefordert ist. Wenn eine Nachricht, die eine Antwort anfordert, von einem Empfänger empfangen wird, sendet der Empfänger eine Antwortnachricht. Diese Antwort ist getrennt von der oben beschriebenen Verfahrensweise Quittung/negative Quittung (ACK/NAK). Jede Nachricht enthält eine Nachricht-Kennung, die in der Antwort beinhaltet ist, so dass, wenn eine Nachricht empfangen wird, die Antwort an die ursprüngliche Nachricht gekoppelt werden kann. Dies er möglicht, dass gesendete Multicast-Nachrichten mit den Antworten, die empfangen werden, korreliert werden können.
  • Diese und andere Ziele und Merkmale der vorliegenden Erfindung werden aus der nun folgenden Beschreibung und aus den anhängenden Patentansprüchen umfassender erkennbar werden oder sie können, wie oben bereits erwähnt, aus der praktischen Umsetzung der Erfindung abgeleitet werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Zum besseren Verständnis der oben angeführten und weiterer Ziele und Vorteile der Erfindung wird die oben nur kurz beschriebene Erfindung nunmehr unter Verweis auf die in den anhängenden Zeichnungen veranschaulichten konkreten Ausführungsbeispiele derselben ausführlicher beschrieben werden. Mit der Maßgabe, dass die genannten Zeichnungen lediglich übliche Ausführungsbeispiele der Erfindung darstellen und daher nicht als den Erfindungsbereich der Erfindung beschränkend angesehen werden sollen, wird die Erfindung unter Nutzung der anhängenden Zeichnungen ausführlicher beschrieben und erläutert werden.
  • Kurze Beschreibung der Zeichnungen:
  • 1 ist ein Blockschema eines beispielhaften Systems für die Implementierung der vorliegenden Erfindung, das eine allgemeine Berechnungsvorrichtung in Form eines herkömmlichen Personalcomputers umfasst.
  • 2 ist ein Systemdiagramm, das ein sendendes System und eine Anzahl von empfangenden Systemen logisch darstellt.
  • 3 ist ein logisches Diagramm des Netzwerk-Protokollstapels und zeigt den Ort der Software für das Senden und Empfangen kleiner Nachrichten gemäß der vorliegenden Erfindung.
  • 4 ist ein logisches Diagramm und zeigt eine Nachricht, die in eine Vielzahl von Übertragungspaketen aufgeteilt ist, wie dies bei dem statistischen Zuverlässigkeitsmodus der vorliegenden Erfindung genutzt wird.
  • 5 veranschaulicht repräsentative Übertragungspakete für ein Ausführungsbeispiel.
  • 6 veranschaulicht ein sendendes System, das in dem statistischen Zuverlässigkeitsmodus arbeitet.
  • 7 ist ein Fließbild und zeigt Verarbeitungsschritte, die von dem sendenden System in dem statistischen Zuverlässigkeitsmodus der vorliegenden Erfindung ergriffen werden.
  • 8 veranschaulicht ein empfangendes System, das in dem statistischen Zuverlässigkeitsmodus arbeitet.
  • 9 ist ein Fließbild und zeigt Verarbeitungsschritte, die von jedem empfangenden System in dem statistischen Zuverlässigkeitsmodus der vorliegenden Erfindung eingeleitet werden.
  • 10 veranschaulicht ein sendendes System, das in dem sicheren Zuverlässigkeitsmodus arbeitet.
  • Die 11A und 11B sind Fließbilder und zeigen die Verarbeitungsschritte, die von dem sendenden System in dem sicheren Zuverlässigkeitsmodus der vorliegenden Erfindung eingeleitet werden.
  • 12 veranschaulicht ein empfangendes System, das in dem sicheren Zuverlässigkeitsmodus arbeitet; und
  • 13 ist ein Fließbild und zeigt die Verarbeitungsschritte, die ein jedes empfangendes System in dem sicheren Zuverlässigkeitsmodus der vorliegenden Erfindung einleitet.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Die Erfindung wird nachstehend unter Verwendung der Diagramme zur Veranschaulichung des Aufbaus oder der Verarbeitung von Ausführungsbeispielen, die zur Implementierung des Systems und des Verfahrens der vorliegenden Erfindung verwendet werden, beschrieben. Die Verwendung der Diagrame auf diese Weise zur Vorstellung der Erfindung soll nicht als Begrenzung des Erfindungsbereiches derselben verstanden werden. Die vorliegende Erfindung schlägt Methoden und Systeme für die hierarchische Speicherung von Daten vor. Die Ausführungsbeispiele der vorliegenden Erfindung können einen Spezialcomputer oder einen Allzweckcomputer umfassen, der verschiedene Rechnerhardware enthält, wie weiter unten ausführlicher diskutiert werden wird.
  • Ausführungsbeispiele innerhalb des Erfindungsbereiches der vorliegenden Erfindung umfassen ebenso computerlesbare Medien, auf denen sich ausführbare Befehle oder Datenfelder befinden. Solche computerlesbaren Medien können beliebige verfügbare Medien sein, auf die ein Spezialcomputer oder ein Allzweckcomputer zugreifen kann. Beispielsweise, und nicht einschränkend, können solche computerlesbaren Medien computerlesbare Speichermedien, wie zum Beispiel RAM, ROM, EEPROM, CD-ROM oder andere optische Plattenspeicher, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen umfassen, oder beliebige andere Medien, die genutzt werden können, um gewünschte ausführbare Befehle oder Datenfelder zu tragen, und auf die ein Allzweckcomputer oder ein Spezialcomputer zugreifen kann. Wenn Daten über ein Netzwerk oder über andere Kommunikationsverbindungen zu einem Computer übertragen oder für einen Computer bereitgestellt werden, betrachtet der Computer die Verbindung richtigerweise als ein computerlesbares Medium. Somit wird eine solche Verbindung auch richtigerweise als computerlesbares Medium bezeichnet. Kombinationen der oben genannten müssen ebenfalls in den Bereich computerlesbarer Medien eingeschlossen werden. Ausführbare Befehle umfassen zum Beispiel Befehle und Daten, die einen Allzweckcomputer, einen Spezialcomputer oder eine Spezial-Verarbeitungsvorrichtung veranlassen, bestimmte Funktionen oder Gruppen von Funktionen auszuführen.
  • 1 und die sich anschließende Diskussion sollen eine kurze, allgemeine Beschreibung einer geeigneten Berechnungsumgebung, in der die Erfindung implementiert werden kann, vermitteln. Wenngleich dies nicht erforderlich ist, wird die Erfindung in dem allgemeinen Kontext computerausführbarer Befehle, wie zum Beispiel Programmmodule, die von einem Personalcomputer ausgeführt werden, beschrieben werden. Normalerweise umfassen Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen etc., die konkrete Aufgaben ausführen oder besondere abstrakte Datentypen implementieren. Weiterhin wird der Durchschnittsfachmann erkennen, dass die Erfindung mit anderen Computersystem-Konfigurationen, einschließlich von Taschenvorrichtungen, Mikroprozessorsystemen, mikroprozessorbasierter oder programmierbarer Unterhaltungselektronik, Netzwerk-PCs, Minicomputern, Großrechnern und ähnlichem, praktiziert werden kann. Die Erfindung kann auch in verteilten Computerumgebungen praktiziert werden, in denen Aufgaben durch Fernverarbeitungseinrichtungen ausgeführt werden, die durch ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Computerumgebung können Programmmodule auf örtlichen und Fernspeichervorrichtungen vorhanden sein.
  • Unter Bezugnahme auf 1 umfasst ein beispielhaftes System für die Implementierung der Erfindung eine Allzweck-Computervorrichtung in Form eines herkömmlichen Personalcomputers 20, der eine Verarbeitungseinheit 21, einen Systemspeicher 22 und einen Systembus 23 umfasst, der verschiedene Systemkomponenten, einschließlich eines Systemspeichers, an die Verarbeitungseinheit 21 koppelt. Der Systembus 23 kann eine beliebige von mehreren Arten von Bus-Strukturen sein, wie zum Beispiel ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus oder ein lokaler Bus unter Verwendung einer Vielzahl von Bus-Architekturen. Der Systemspeicher umfasst den Festwertspeicher (ROM) 24 und den Direktzugriffsspeicher (RAM-Speicher) 25. Ein grundlegendes Eingabe-/Ausgabesystem (BIOS) 26, das die Grundroutinen enthält, die die Übertragung von Daten zwischen Elementen innerhalb des Personalcomputers 20, wie zum Beispiel während des Hochfahrens, unterstützen, ist in dem ROM-Speicher 24 gespeichert. Der Personalcomputer 20 umfasst weiterhin ein Festplattenlaufwerk 27 zum Lesen von und Schreiben auf eine Festplatte, nicht gezeigt, ein Magnetplattenlaufwerk 27 zum Lesen von und Schreiben auf eine entfernbare Magnetplatte 29 sowie ein optisches Speicherplattenlaufwerk 30 zum Lesen von und Schreiben auf die entfernbare optische Speicherplatte 31, wie zum Beispiel eine CD-ROM oder ein anderes optisches Medium. Das Festplattenlaufwerk 27, das Magnetplattenlaufwerk 28 und das optische Speicherplattenlaufwerk 30 sind durch eine Festplattenlaufwerk-Schnittstelle 32, eine Magnetplatten-Schnittstelle 33 beziehungsweise eine optische Speicherplatten-Schnittstelle 34 mit dem Systembus verbunden. Die Laufwerke und ihre zugehörigen computerlesbaren Medien stellen nichtflüchtigen Speicher für computerlesbare Befehle, Datenstrukturen, Programmmodule und andere Daten für den Personalcomputer 20 bereit. Wenngleich die hierin beschriebene beispielhafte Umgebung eine Festplatte, eine entfernbare Magnetplatte 29 und eine entfernbare optische Speicherplatte 31 verwendet, wird der Durchschnittsfachmann erkennen, dass andere Arten von computerlesbaren Medien, auf die ein Computer zugreifen kann, in der beispielhaften Umgebung verwendet werden können, wie zum Beispiel Magnetkassetten, Flash-Speicherkarten, Digital Video Discs (DVDs), Bernoulli-Wechselplatten, Direktzugriffsspeicher (RAM), Festwertspeicher (ROM) und ähnliches.
  • Eine Anzahl von Programmmodulen kann auf der Festplatte, der Magnetspeicherplatte 29, der optischen Speicherplatte 31, in dem ROM 24 oder dem RAM 25 gespeichert sein, einschließlich eines Betriebssystems 35, eines oder mehrerer Anwendungsprogramme 36, anderer Programmmodule 37 und von Programmdaten 38. Ein Benutzer kann Befehle und Daten über Eingabegeräte, wie zum Beispiel eine Tastatur 40 oder eine Zeigevorrichtung 42, in den Personalcomputer eingeben. Andere Eingabegeräte (nicht gezeigt) können unter anderem ein Mikrofon, ein Joystick, ein Gamepad, eine Satellitenschüssel, ein Scanner oder ähnliches, sein. Diese und andere Eingabegeräte sind oft über eine serielle Schnittstelle 46, die mit dem Systembus gekoppelt ist, mit der Verarbeitungseinheit 21 verbunden, können jedoch auch über andere Schnittstellen, wie zum Beispiel eine parallele Schnittstelle, einen Gameport oder über einen universellen seriellen Bus (USB), angeschlossen sein. Ein Bildschirm 47 oder eine andere Art von Anzeigeeinrichtung ist ebenfalls über eine Schnittstelle, wie zum Beispiel einen Videoadapter 48, mit dem Systembus 23 verbunden. Zusätzlich zu dem Bildschirm umfassen Personalcomputer üblicherweise andere periphere Ausgabegeräte (nicht gezeigt), wie zum Beispiel Lautsprecher und Drucker.
  • Der Personalcomputer 20 kann unter Verwendung von logischen Verbindungen zu einem oder mehr Ferncomputern, wie zum Beispiel einem Ferncomputer 49, in einer vernetzten Umgebung arbeiten. Der Ferncomputer 49 kann ein weiterer Personalcomputer, ein Server, ein Routen, ein Netzwerk-PC, eine gleichrangige Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten, sein und umfasst üblicherweise zahlreiche oder alle der oben in Bezug auf den Personalcomputer 20 beschriebenen Elemente, wenngleich in 1 lediglich eine Speichereinrichtung 50 veranschaulicht wird. Die in 1 dargestellten logischen Verbindungen umfassen ein lokales Netzwerk (LAN) 51 und ein Weitverkehrsnetz (WAN) 52. Solche Vernetzungsumgebungen sind in unternehmensweiten Computernetzwerken, Intranets und dem Internet üblich.
  • Bei Nutzung in einer LAN-Vernetzungsumgebung ist der Personalcomputer 20 über ein Netzwerk oder einen Adapter 53 mit dem lokalen Netzwerk 51 verbunden. Bei Verwendung in einer WAN-Vernetzungsumgebung umfasst der Personalcomputer 20 üblicherweise ein Modem 54 oder andere Einrichtungen zum Herstellen von Kommunikation über das Weltverkehrsnetz 52, wie zum Beispiel das Internet. Das Modem 54, das ein internes oder externes sein kann, ist über die serielle Schnittstelle 46 mit dem Systembus 23 verbunden. In einer vernetzten Umgebung können Programmmodule, die in Bezug auf den Personalcomputer 20 beschrieben werden, oder Abschnitte derselben in einer Fernspeichereinrichtung gespeichert werden. Es wird ersichtlich sein, dass die gezeigten Netzwerkverbindungen beispielhaft sind und dass andere Mittel des Herstellens einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • In bestimmten Umgebungen ist es wichtig, dass man in der Lage ist, Nachrichten sehr zuverlässig von einem Computer zu einem oder mehreren anderen Computern zu übertragen, die relativ wenige Pakete füllen. Zum Beispiel veranschaulicht 2 eine grundlegende Netzwerkverbindung, wobei eine Bedienerkonsole 70 verwendet wird, um mehrere Mid-Tier-Server 72 und End-Clients 76 zu verbinden. Eine solche Umgebung kann zum Beispiel repräsentativ für eine Situation sein, in der mehrere Systeme in einem verteilten Netzwerk von einer zentralen Bedienerkonsole aus verwaltet werden. Um eine solche Verwaltung durchzuführen, ist es oft notwendig, sehr zuverlässige Kommunikationspfade zwischen der Bedienerkonsole und den einzelnen verwalteten Systemen zu haben. Weiterhin können Verwaltungsfunktionen zweiseitig gerichtete Kommunikation erfordern, wenn Nachrichten von einer Bedienkonsole zu mehreren verwalteten Systemen gesendet werden und die einzelnen verwalteten Systeme auf die Nachricht antworten. Die Nachrichten, die solche zentralisierte Verwaltung durchführen sollen, sind normalerweise recht kurz und bestehen aus einem Paket bis mehreren Hunderten oder Tausenden Paketen. Weiterhin schließen Effektivitätsbetrachtungen normalerweise die Nutzung eines verbindungsbasierten Protokolls, wie zum Beispiel TCP/IP, aus. Verbindungslose Protokolle, wie zum Beispiel UDP oder andere, die IP-Multicasting verwenden, sind effizient, jedoch auch inhärent unzuverlässig, da sie die Übertragung eines jeweiligen Paketes oder die Lieferung von Paketen in einer jeweiligen Reihenfolge nicht garantieren. Bei zahlreichen vorhandenen Netzwerken ist es somit sehr wahrscheinlich, dass wenigstens einige Pakete gelegentlich verloren gehen. Die Wahrscheinlichkeit, dass ein jeweiliges einzelnes Paket von einem jeweiligen einzelnen System empfangen wird, wird durch eine ganze Reihe von Faktoren in dem Netzwerk beeinflusst, die zusammen zu einer kumulativen Paket-Verlustwahrscheinlichkeit führen. Die Paket-Verlustwahrscheinlichkeit kann durch eine Reihe von Faktoren beeinflusst werden, von denen einige physischer Art sind, einschließlich der Verkabelungsinfrastruktur des Netzwerkes, und von denen andere mit dem Volumen des Verkehrs am Netzwerk schwanken. In einem Netzwerk, in dem zum Beispiel Router und andere Zwischengeräte eine begrenzte Pufferungsfähigkeit haben, ist es möglich, dass Pakete verloren gehen, wenn Pufferüberlauf verursacht wird, wenn Pakete mit größerer Geschwindigkeit empfangen werden, als sie übertragen werden können.
  • Schließlich müssen Nachrichten in der Lage sein, an eine große Anzahl von Empfängern zu übertragen, ohne dass sie eine Flut von Quittungen oder von negativen Quittungen erzeugen, die das Netzwerk überschwemmen. Wenn sich die Anzahl von Systemen in einem Netzwerk erhöht, erhöht sich die Mutmaßlichkeit, dass ein Feuersturm von Quittungen oder negativen Quittungen das Netzwerk überrollen wird, dramatisch.
  • Die vorliegende Erfindung erzielt sowohl Effizienz als auch Zuverlässigkeit, indem sie höhere Protokolle auf einem grundlegenden UDP-Multicast-Protokoll aufbaut. Da UDP inhärent unzuverlässig ist, wird die Zuverlässigkeit erhöht, indem zusätzliche Protokolle auf UDP aufgelagert werden. Das Ergebnis ist ein Protokoll, das die Effizienz von UDP-Multicasting mit sehr hoher Zuverlässigkeit erreicht. Ausführungsbeispiele innerhalb der vorliegenden Erfindung können in einem statistischen Zuverlässigkeitsmodus oder in einem sicheren Zuverlässigkeitsmodus arbeiten. Der statistische Zuverlässigkeitsmodus kann eingestellt werden, um die Wahrscheinlichkeit, dass ein System eine Nachricht nicht empfängt, auf eine sehr kleine Zahl zu senken. Der sichere Zuverlässigkeitsmodus verstärkt die Funktionalität des statistischen Zuverlässigkeitsmodus, indem sie die Sender weiterhin mit dem Wissen ausstatten, welche vorgesehenen Empfänger die Nachricht erhalten haben und welche die Nachricht nicht erhalten haben. Mechanismen der vorliegenden Erfindung ermöglichen weiterhin, dass von den Empfängern empfangene Antworten eng an die ursprüngliche Übertragung, die die Antwort erzeugt hat, gekoppelt werden können. Dies ermöglicht zweiseitig gerichtete Kommunikation unter Verwendung der vorliegenden Erfindung.
  • Unter Bezugnahme auf 3 stellt ein logisches Diagramm, das Elemente eines Netzwerk-Protokollstapels zeigt, einen Kontext für die vorliegende Erfindung bereit. Jedes System an dem Netzwerk verwendet einen ähnlichen Protokollstapel, um Kommunikation zwischen den Systemen bereitzustellen. Normalerweise stellt jede Schicht eine höhere Ebene von Funktionalität bereit als die Schicht unter ihr, und sie bearbeitet niedrigere Aufgaben, indem sie die geeignete niedrigere Funktionalität verwendet, die durch die Ebene unter ihr bereitgestellt wird. Der Protokollstapel von 3 ist repräsentativ für ein Ausführungsbeispiel und soll nicht als den Erfindungsbereich einschränkend verstanden oder interpretiert werden. Andere geeignete Protokollstapel können in Anzahl oder Art unterschiedliche Schichten aufweisen.
  • Die unteren Ebenen des Stapels, die die Hardware, Hardwaresteuerung, Gerätetreiber etc. darstellen, werden durch die Klammer 57 dargestellt und sind für die Erläuterung eines veranschaulichenden Ausführungsbeispieles der vorliegenden Erfindung nicht von Bedeutung. Oben auf den unteren Ebenen ist das Internetprotokoll oder die IP-Schicht 58, die grundlegende Kommunikationsdienste über heterogene Netzwerke unter Verwendung von IP bereitstellen. Ein Verbindungsprotokoll, das Transmission Control Protocol oder auch die TCP-Schicht 60, stellt Verbindungen mit anderen IP-Hosts auf der Grundlage einer IP-Adresse und eines Ports an dem Host bereit. Ein Verbindungsprotokoll, wie zum Beispiel die TCP-Schicht 60, ist zwar sehr zuverlässig, benötigt jedoch zu viel Overhead zu seiner Erzeugung, Pflege und Nutzung für Kurznachrichtenübertragung an eine große Anzahl von empfangenden Systemen.
  • Ein verbindungsloses Protokoll, wie zum Beispiel das User Datagram Protocol oder die UDP-Schicht 62, bietet Datenübertragung mit geringem Overhead und hohem Wirkungsgrad an, wenn es mit IP-Multicast-Adressen verwendet wird. UDP garantiert je doch nicht den Empfang von Paketen oder die Reihenfolge, in der Pakete empfangen werden. Da es vom Design her inhärent unzuverlässig ist, wird eine bestimmte Anzahl von Paketen selbst an Netzwerken mittlerer Komplexität verloren gehen, und das um so mehr, wenn es sich um eine große Anzahl von empfangenden Systemen handelt.
  • Die WinSock-Schicht 64 stellt eine Anwendungsprogramm-Schnittstelle Application Program Interface (API) bereit, die höheren Zugang zu der TCP-Schicht 60 und der UDP-Schicht 62 ermöglicht. Die von der WinSock-Schicht 64 bereitgestellte Windows Sockets API stellt eine standardisierte Windows-Schnittstelle zu verschiedenen Transporten, wie zum Beispiel TCP, UDP und IP, bereit, so dass Details zur unteren Ebene des Transports vor den höheren Ebenen versteckt werden. Schließlich verwaltet eine Kurznachrichten-Sende- und -Empfangseinrichtung 66 das Kommunizieren von Kurznachrichten zwischen IP-Hostsystemen gemäß der vorliegenden Erfindung. Diese Einrichtung bietet Dienste, die zahlreiche verschiedene Anwendungen ermöglichen, wie zum Beispiel die Anwendung 68, um die Entwicklung von Interncodes zu vereinfachen und um die Vorteile des zuverlässigen und effizienten Kommunikationsmechanismus zu nutzen. Die Kurznachrichten-Sende-/Empfangs-Einrichtung 66 kann auch eine höhere API bereitstellen, die es Anwendungen ermöglicht, die Vorteile der Funktionalität der Kurznachrichten-Sende-/Empfangseinrichtung 66 zu nutzen, ohne sich um viele niedere Details des Sendens und Empfangens von Nachrichten gemäß der vorliegenden Erfindung zu kümmern.
  • Ausführungsbeispiele der vorliegenden Erfindung arbeiten in einem statistischen Zuverlässigkeitsmodus, wobei der Nachrichtenempfang durch jedes empfangende System statistisch sehr wahrscheinlich ist, oder in einem sicheren Zuverlässigkeitsmodus, wobei jedes empfangende System den Empfang der Nachricht quittiert. Die Wahrscheinlichkeit des Empfangens einer Nachricht unter Verwendung des statistischen Zuverlässigkeitsmodus kann durch Einstellen relevanter Parameter eingestellt werden.
  • Um Zuverlässigkeit zu garantieren, beruht der statistische Zuverlässigkeitsmodus der vorliegenden Erfindung auf dem grundlegenden Konzept, dass wenn ein Netzwerk eine Paketverlustrate aufweist, die über die Zeit des Übertragens und Empfangens einer Reihe von Paketen relativ konstant ist, die Wahrscheinlichkeit des Empfangens von k Paketen aus n übertragenen Paketen durch die folgende Gleichung gegeben ist:
    Figure 00180001
    wobei:
  • pk
    = Wahrscheinlichkeit des Empfangens von k Paketen,
    n
    = Summe übertragener Pakete,
    k
    = Anzahl empfangener Pakete,
    p
    = Wahrscheinlichkeit des Empfangens eines Paketes.
  • Die Wahrscheinlichkeit, dass keines der übertragenen Pakete von einem Empfänger empfangen wird, ist wie folgt gegeben: pf = po = (1 – p)n.
  • Die Wahrscheinlichkeit, dass alle übertragenen Pakete empfangen werden, ist wie folgt gegeben: Ps = pn = pn.
  • Und die Wahrscheinlichkeit des Empfangens von wenigstens einem Paket, jedoch von weniger als allen Paketen ist gegeben durch: Pps = 1 – (po + pn) = 1 – (pf + ps).
  • Wenn es zum Beispiel eintausend Empfänger gibt, drei Pakete übertragen werden und die Paketverlustrate zwanzig Prozent beträgt, sind die Ausfallrate, die Erfolgswahrscheinlichkeit und die Teilerfolgswahrscheinlichkeit wie folgt gegeben:
    Pps = 1 – 0,23 = 0,008
    Pps = 0,83 = 0,512
    Pps = 1 – 0,512 + 0,008 = 0,480.
  • Somit ist statistisch zu erwarten, dass 512 Empfänger alle drei Pakete erhalten, dass 480 Empfänger einige der Pakete erhalten werden und dass acht Empfänger keines der Pakete empfangen werden. Die folgende Tabelle zeigt die Ausfallwahrscheinlichkeit als Funktion der Paketverlustrate und der Anzahl der übertragenen Pakete. Wie in der Tabelle veranschaulicht wird, resultieren bei mittleren Paketverlustraten selbst relativ wenige übertragene Pakete in einer sehr geringen Wahrscheinlichkeit von Vollausfall. Indem somit die Anzahl übertragener Pakete für eine konkrete Paketverlustrate eingestellt wird, kann die Ausfallwahrscheinlichkeit auf eine sehr kleine Zahl reduziert werden.
  • Tabelle 1
    Figure 00190001
  • Um zuverlässigen Empfang in der vorliegenden Erfindung zu gewährleisten, übertragen die Ausführungsbeispiele eine garantierte Mindestanzahl von Paketen. Bei Nachrichten, die weniger als die Mindestanzahl von Paketen füllen, wird die Nachricht auf die Mindestanzahl von Paketen aufgefüllt. Dieses Verfahren wird in 4 veranschaulicht. Eine Nachricht 80, die von einem sendenden System an ein empfangendes System unter Verwendung der vorliegenden Erfindung gesendet werden soll, wird von einer Anwendung empfangen und in eine bestimmte Mindestanzahl von Paketen 82a82n aufgebrochen. Wenngleich die Nachricht in zahlreichen Fällen wie bereits beschrieben wirksam in einem Paket gesendet werden kann, wird die Nachricht aufgefüllt, um eine bestimmte Mindestanzahl zu füllen, um die Wahrscheinlichkeit zu erhöhen, dass ein System wenigstens eines der Pakete empfangen wird. Wie weiter unten beschrieben werden wird, kann ein System, wenn es ein Paket empfängt, eine negative Quittung oder NAK senden, um die erneute Übertragung der fehlenden Pakete der Nachricht zu bewirken.
  • Zahlreiche Methoden können verwendet werden, um eine Nachricht auf eine Mindestanzahl von Paketen aufzufüllen. Wenn die Nachricht zum Beispiel in Datenblöcke aufgebrochen wird, von denen jeder ein Paket füllt, wenn die Anzahl der Datenblöcke unzureichend ist, um eine Mindestanzahl von Paketen zu füllen, können null Datenblöcke hinzugegeben werden, um die geforderte Mindestanzahl von Paketen zu füllen. Alternativ dazu kann der letzte Datenblock eine ausreichende Anzahl von Malen kopiert werden, bis die geforderte Mindestanzahl von Datenblöcken erreicht ist. Als weitere Alternative können die Füllpakete Datenblöcke mit Nulllänge (keine Daten) enthalten. Beliebige andere Mechanismen können ebenfalls verwendet werden. Zum Beispiel kann es wünchenswert sein, Fülldatenblöcke mit einem bezeichneten Muster zu füllen, so dass der Empfänger identifizieren kann, dass der Datenblock ein Fülldatenblock ist. Alles, was hierzu erforderlich ist, ist, dass nachdem das Füllen eintritt eine ausreichende Mindestanzahl von Paketen vorliegt.
  • Der genaue Inhalt der einzelnen Pakete, die für die vorliegende Erfindung verwendet werden, wird von einer Reihe verschiedener Faktoren abhängen, von denen viele von der konkreten Merkmalsgruppe abhängen, die in einem jeweiligen Ausführungsbeispiel implementiert wird. Eine ausführliche Beschreibung eines Paketformats, das für die Nutzung mit der vorliegenden Erfindung geeignet ist, wird in 5 veranschaulicht. Bestimmte Ausführungsbeispiele der vorliegenden Erfindung bauen auf der Funktionalität auf, die von den IP- und UDP-Protokollen bereitgestellt werden. Dies gilt sowohl für den statistischen Zuverlässigkeitsmodus als auch für den sicheren Zuverlässigkeitsmodus der Erfindung. Sowohl der statistische Zuverlässigkeitsmodus als auch der sichere Zuverlässigkeitsmodus verwenden Multicast- und Punkt-zu-Punkt-Komponenten. Sowohl die Multicast- als auch die Punkt-zu-Punkt-Komponenten sind in UDP-Paketen verkapselt. Die Protokolle der vorliegenden Erfindung sind abhängig von der Quelle und dem Ziel der IP- und UDP-Adressen und den UDP-Ports in den IP- und UDP-Abschnitten der Datagramm-Kopfzeile. Die IP- und UDP-Abschnitte der Datagramm-Kopfzeile werden in 5 durch die IP/UDP-Datagramm-Kopfzeile angedeutet. Zusätzlich zu den Standard-IP/UDP-Datagrammfeldern fügt ein Ausführungsbeispiel der vorliegenden Erfindung ein Pakettyp-Feld 88, ein reserviertes Feld 90, ein Bitmap-Feld 92, ein Nachrichtennummer-Feld 94, ein Paketfolgenummer-Feld 96, ein Antwortport-Feld 98, ein Datenlängenfeld 100 und ein Datenfeld 102 hinzu. Das Pakettyp-Feld 88 enthält einen verschlüsselten Bezeichner, der den jeweiligen Pakettyp kennzeichnet. In der vorliegenden Erfindung verwendete Pakettypen sind Heartbeat-Pakete, positive Quittungspakete, negative Quittungspakete und Datenpakete. Tabelle 2 unten fasst die verschiedenen Pakettypen und das Paketlayout für den jeweiligen Pakettyp zusammen. Der Zweck der Pakettypen positive Quittung wird weiter unten ausführlicher beschrieben werden. Hearbeat-Nachrichten können von dem Netzwerk verwendet werden, um Gruppenmitgliedschaften aufzubauen und zu pflegen. Wenngleich eine umfassende Diskussion von Heartbeat-Nachrichten und Grundsätzen der Gruppenmitgliedschaft über den Rahmen des vorliegenden Dokumentes hinausgeht, stammt der allgemeine Wunsch nach Gruppen von dem Wunsch nach Übertragung von Nachrichten an eine Teilmenge von Systemen und der Schwierigkeit, von allen Systemen zu fordern, Adressendaten für jedes System in einem großen Netzwerk vorzuhalten und zu pflegen. Das Einteilen der Systeme eines Netzwerkes in Gruppen hilft, diese Probleme zu lösen. Heartbeat-Nachrichten können verwendet werden, um Informationen über Gruppen zu finden und um Gruppen vorzuhalten und zu pflegen.
  • Tabelle 2
    Figure 00210001
  • Das reservierte Feld 90 wird nicht genutzt, sondern ist für künftige Erweiterungen reserviert. Das Bitmap-Feld 92 enthält Marken, die von dem Protokoll für verschiedene Zwecke verwendet werden. Die untenstehende Tabelle 3 nennt die in dem Bitmap 92 enthaltenen Macker und ihren Zweck.
  • Tabelle 3
    Figure 00220001
  • Die Nachrichtennummer 94 ist ein Feld, das eine Nachricht-ID-Nummer für die jeweilige Nachricht enthält. Die Nachricht-ID-Nummer ist die gleiche für alle Pakete in einer jeweiligen Nachricht. Wenn Antworten auf eine jeweilige Nachricht gesendet werden, enthält die Antwort zusätzlich die Nachrichtennummer der Nachricht, so dass, wenn die Antwort empfangen wird, die Antwort als in Beantwortung einer jeweiligen Nachricht empfangen identifiziert werden. Die Verwendung der Nachrichtennummer ermöglicht die enge Bindung von Anfragen und Antworten, so dass das System erkennen kann, welche Antworten zu welchen Anfragen gehören, ohne dass eine jeweilige Art von synchronem oder verbindungsbasiertem Protokoll erzwungen wird.
  • Die Paket-Folgenummer 96 ist eine Nummer, die für jedes Paket in der Nachricht inkrementiert wird. Dies ermöglicht es einem Empfänger, zu erkennen, ob alle Pakete der Nachricht empfangen worden sind, um negative Quittungen (NAKs) zu senden, mit denen die erneute Übertragung von ausgelassenen Paketen angefordert wird. Der Antwortport 98 ist die UDP-Portnummer, die für die Rückgabe von Antworten an die Nachricht verwendet werden muss. Das Datenlängenfeld 100 bezeichnet die Länge des Datenfeldes 102, so dass ein Empfänger das gesamte Datenfeld herausziehen kann. Das Datenfeld 102 enthält die in dem Paket zu übertragenden Daten.
  • Wie in 5 angedeutet wird, haben die Pakete verschiedene Layouts, die als Layout 0, Layout 1 und Layout 2 veranschaulicht werden. Das Paketlayout für einen jeweiligen Pakettyp ist in Tabelle 2 zusammengefasst.
  • Wengleich die Implementierung eines jeweiligen Paketes in 5 mit einer gewissen Ausführlichkeit dargestellt ist, erfolgt dies lediglich beispielhaft. Somit soll 5 nicht als den Erfindungsbereich der vorliegenden Erfindung beschränkend verstanden oder ausgelegt werden. Andere Ausführungsbeispiele können unterschiedliche Pakettypen nutzen, je nach der jeweiligen Merkmalsgruppe, die von einem jeweiligen Ausführungsbeispiel implementiert wird. Normalerweise werden die meisten Implementierungen wenigstens die Ziel-ID, die Sender-ID, von denen eine jede eine IP-Adresse und eine Portnummer umfasst, und ein Datenfeld für die Pakete, die Daten übertragen, enthalten. Der Zweck dieser und weiterer Felder ist bereits erläutert worden, und wie weiter unten in dem Rest der Diskussion vollständiger veranschaulicht werden wird, werden diese verwendet, um verschiedene Merkmalsgruppen, die in verschiedene Ausführungsbeispiele der vorliegenden Erfindung eingearbeitet sind, zu implementieren oder zu erweitern.
  • Unter Bezugnahme auf 2 wird der konzeptuelle Betrieb des statistischen Zuverlässigkeitsmodus der vorliegenden Erfindung beschrieben werden. Gehen wir davon aus, dass die Bedienerkonsole 70 eine jeweilige Nachricht an End-Clients 76 senden möchte. Die Bedienerkonsole 70 wird die Nachricht nehmen und wie in Verbindung mit 4 oben beschrieben wenigstens die Mindestanzahl von Paketen erzeugen, die für die gewünschte Ebene statistischer Zuverlässigkeit notwendig sind. Die Pakete werden sodann unter Verwendung eines Multicast-Protokolls, wie zum Beispiel IP Multicast, in 2 durch die IP-Multicastpakete 74 angedeutet, übertragen. Die Multicastpakete werden von den Mid-Tier-Servern 72 empfangen und bewertet. Da die Pakete schließlich für End-Clients 76 bestimmt sind, werden die Mid-Tier-Server 72 weitere Multicastpakete, wie zum Beispiel die IP-Multicastpakete 78, an die End-Clients 76 übertragen.
  • Auf der Grundlage des oben genannten statistischen Modells können einige Endbenutzer alle Pakete empfangen, einige können einige Pakete empfangen, und einige können keine Pakete empfangen. Durch Überprüfung der Paketfolgenummer und gegebenenfalls der Nachrichtenende-Marke können Systeme, die weniger als alle Pakete empfangen, eine negative Quittung (NAK) senden und die erneute Übertragung der fehlenden. Pakete anfordern. Wenn zum Beispiel ein End-Client 76 ein Paket in einer Nachricht von einem Mid-Tier-Server 72 nicht empfängt, kann der End-Client 76 eine negative Quittung (NAK) an den Mid-Tier-Server 72 senden. Eine ähnliche Verfahrensweise würde befolgt werden, wenn ein bestimmter Mid-Tier-Server 72 ein Paket oder mehrere Pakete von einer Bedienerkonsole 70 nicht empfangen hat. In einem solchen Fall würde der Mid-Tier-Server 72 eine negative Quittung (NAK) an die Bedienerkonsole 70 senden. Die Bedienerkonsole 70 empfängt die negative Quittung (NAK) und überträgt die angeforderten Pakete erneut. Andere Arten von Netzwerken, die nicht notwendigerweise so organisiert sind wie das in 2 veranschaulichte Netzwerk, können dieses Protokoll zwischen einem beliebigen sendenden System und einer beliebigen Anzahl von empfangenden Systemen verwenden.
  • Die in einer negativen Quittung (NAK) angeforderte erneute Übertragung von Paketen kann dazu führen, dass Systeme, die keine Pakete empfangen haben, oder Systeme, die weniger als alle Pakete empfangen haben, mehr Pakete empfangen als sie ursprünglich empfangen haben. Auf der Grundlage des oben genannten statistischen Modells erhöht eine jede erneute Übertragung eines Pakete oder mehrerer Pakete die statistische Mutmaßlichkeit oder Likelihood der Systeme, die alle notwendigen Pakete emp fangen. Die Verfahrensweise negative Quittung/erneute Übertragung kann über einen benannten Zeitraum fortgesetzt werden, oder solange, bis bestimmte statistische Kriterien erfüllt sind.
  • Wenngleich die obenstehende Beschreibung konzeptuell zu der Fähigkeit führt, die statistische Mutmaßlichkeit, dass irgendwelche Systeme die Daten, die sie benötigen, nicht empfangen, auf ein willkürliches Minimum zu reduzieren, würde ein solcher Ansatz in Realität in zahlreichen praktischen Installationen ernsthafte Probleme verursachen. Unter Verwendung eines bereits vorgestellten Beispiels: wenn die Paketverlustrate zwanzig Prozent beträgt und wenn drei Pakete an eintausend Empfänger übertragen werden, können wir statistisch erwarten, dass 512 Empfänger alle drei Pakete empfangen, dass 480 Empfänger ein Paket oder zwei Pakete empfangen und dass acht Systeme keine Pakete empfangen. Wenn alle 480 Systeme eine negative Quittung (NAK) an den Sender senden würden, kann das Volumen des Netzwerkverkehrs das Netzwerk vollständig überschwemmen. Wenn sich die Anzahl der Systeme in einem Netzwerk erhöht, wird das Problem ausgeprägter und ernster. Idealerweise würde nur eine ausreichende Anzahl von Systemen mit negativen Quittungen (NAKs) antworten, um sicherzustellen, dass der Sender eine negative Quittung (NAK) für jedes ausgelassene Paket empfängt. Obwohl dies zu erreichen praktisch schwierig ist, können verschiedene Schritte einleiten, um die Flut von negativen Quittungen (NAK) zu reduzieren.
  • Ausführungsbeispiele der vorliegenden Erfindung können Unterdrückungsverfahren sowohl an dem Empfänger als auch an dem Sender verwenden, um deren gewünschtes Verhalten für das Netzwerk anzunähern. Wie unten erläutert wird, können diese Unterdrückungsverfahren Teil einer Vorrichtung zum Reduzieren des Netzwerkverkehrs während der Wiederherstellung von verlorenen Paketen sein. Im Grund genommen wählt ein jeder Empfänger eine Verzögerungszeit auf der Grundlage einer Wahrscheinlichkeitsdichtefunktion, die bestimmte Merkmale hat, und bei Ablauf der Verzögerungszeit für negative Quittung (NAK) überträgt er seine NAK-Anforderung, wenn er das gewünschte Paket nicht bereits empfangen hat. Andererseits wird der Sender, nachdem ein Paket erneut übertragen worden ist, alle negativen Quittungen (NAKs) für das erneut übertragene Paket innerhalb eines bestimmten Zeitraums nach der erneuten Übertragung ignorieren. Durch Kombinieren von Unterdrückung der Empfänger- wie auch der Senderseite kann eine Annäherung an die ideale Situation erreicht werden. Die Wech selwirkung zwischen der empfängerseitigen Unterdrückung und der senderseitigen Unterdrückung wird weiter unten diskutiert, wenn die vollständigen Details dieser Verfahren vorgestellt werden.
  • Unter Bezugnahme auf 6 wird ein Strukturdiagramm eines Ausführungsbeispiels der vorliegenden Erfindung vorgestellt, das die Verarbeitungskomponenten in dem sendenden System veranschaulicht, die in dem statistischen Zuverlässigkeitsmodus verwendet werden, wenn Nachrichten gesendet werden und wenn ausgelassene Nachrichten übertragen werden. In 6 kann das sendende System 104 die verschiedenen Hardwarekomponenten umfassen, die normalerweise zu dem Computersystem zugehörig sind, wie zum Beispiel die in Verbindung mit 1 oben beschriebenen. In 6 konzentriert sich die Veranschaulichung des sendenden Systems 104 lediglich auf jene Verarbeitungskomponenten, die von der vorliegenden Erfindung in dem statistischen Zuverlässigkeitsmodus verwendet werden.
  • Wenn eine Nachricht, wie zum Beispiel die Nachricht 106, übertragen werden soll, wird sie an eine Komponente geleitet, die für das Senden der Nachricht unter Verwendung geeigneter Mechanismen verantwortlich ist. Somit können im Erfindungsbereich der vorliegenden Erfindung liegende Ausführungsbeispiele Einrichtungen für das Senden einer Nachricht umfassen. Beispielhaft und nicht einschränkend werden solche Einrichtungen in 6 für den Sender 108 veranschaulicht. Der Sender 108 ist verantwortlich für das Senden aller Pakete in einer Nachricht. Bei Anwendung des statistischen Zuverlässigkeitsmodus ist der Sender 108 zusätzlich dafür verantwortlich, sicherzustellen, dass die geforderte Mindestanzahl von Übertragungspaketen erzeugt wird, wenn eine Nachricht 106 gesendet wird. Dies wird in 6 nach Paketen 110 veranschaulicht, die über das Netzwerk 112 an die Empfänger 114 übertragen werden. Die Empfänger 114 sind ein oder mehrere vorgesehene Empfänger der Nachricht. Während der gesamten Anwendung ist zu beachten, dass die hierin beschriebenen Protokolle zwischen einem sendenden System und einem oder mehreren empfangenden Systemen verwendet werden können. In einem Ausführungsbeispiel ist der Sender 108 in eine Kurznachricht-Sende-/Empfangs-Einrichtung, wie zum Beispiel die Kurznachricht-Sende-/Empfangs-Einrichtung 66 aus 3 integriert. Wie weiterhin in 3 veranschaulicht wird, kann der Sender 108 mit einem Protokollstapelspeicher arbeiten, der verschiedene Hardwarekomponenten, Gerätetreiber und andere Protokolltreiber umfasst, um die Pakete zu übertragen. Wie weiter oben bereits beschrieben worden ist, können die Pakete 110 in einem Ausführungsbeispiel den in 5 veranschaulichten entsprechen.
  • Wie bereits beschrieben worden ist, können Empfänger 114, die nicht alle Pakete in einer Nachricht empfangen, eine negative Quittung (NAK) an das sendende System senden und damit die erneute Übertragung der betreffenden Pakete anfordern. Diese Verfahrensweise wird in 6 dadurch veranschaulicht, dass die negative Quittung 116 durch das Netzwerk 112 an das sendende System 104 gesendet wird. Wie bereits beschrieben worden ist, wird das sendende System 104 die negative Quittung empfangen und die entsprechenden Nachrichtenpakete erneut übertragen. Somit können Ausführungsbeispiele im Erfindungsbereich der vorliegenden Erfindung Einrichtungen zum Empfangen von Anfragen nach Paketübertragung umfassen. Beispielhaft und nicht einschränkend werden solche Einrichtungen in 6 durch den NAK-Empfänger 118 veranschaulicht. Der Empfänger für negative Quittung (NAK) 118 hört auf negative Quittungen (NAKs) ab und überträgt Pakete gemäß den Methodologien, die weiter unten erläutert werden, erneut. In 6 wird die erneute Übertragung entsprechender Pakete durch die Paketübertragung 120 veranschaulicht.
  • In 6 können der Sender 108 und der Empfänger für negative Quittung (NAK) 118 auf verschiedene Arten unter Verwendung verschiedener Technologien implementiert werden. Wenn das sendende System 104 ein Multithreading-System, kann das sendende System 104 den Sender 108 und den Empfänger für negative Quittung (NAK) 118 als getrennte Threads implementieren. Andere geeignete Implementierungen können ebenfalls verwendet werden.
  • Unter Bezugnahme auf 7 wird ein Fließbild gezeigt, das die von dem sendenden System gemäß einem Ausführungsbeispiel der vorliegenden Erfindung eingeleiteten Verarbeitungsschritte um eine Nachricht an empfangende Systeme zu senden, zeigt. 7 kann zum Beispiel die von dem Sender 108 und dem Empfänger für negative Quittung 118 aus 6 durchgeführte Verarbeitung darstellen. Nach dem Beginn an dem Schritt 122 wird die Nachricht in wenigstens die erforderliche Mindestanzahl von Übertragungspaketen für die in dem Schritt 124 gewünschte Zuverlässigkeit aufgeteilt. Dies erfolgt wie bereits in Verbindung mit 4 oben beschrieben. Es ist zu beachten, dass wenn die Nachricht nicht alle Pakete benötigt, zusätzliche Pakete wie weiter oben bereits beschrieben hinzugefügt werden, um auf die Mindestanzahl von Paketen zu kommen. Diese Füllpakete werden, auch wenn sie keine Daten enthalten, verwendet, um die Vollständigkeit der Nachricht an dem empfangenden System zu bestimmen. Das letzte Paket wird eine gesetzte Marke Letztes Paket oder Nachrichtenende haben, und jedes Paket wird eine eindeutige Paketfolgenummer haben. Schritt 124 ist daher lediglich ein Beispiel einer Einrichtung zum Aufteilen einer Nachricht in eine Vielzahl einzelner Übertragungspakete und zum Ergänzen zusätzlicher Übertragungspakete, wenn die Nachricht weniger als eine Mindestanzahl einzelner Übertragungspakete füllt.
  • Nachdem die Übertragungspakete erstellt worden sind, wird die Nachricht gesendet, indem jedes Paket unter Verwendung der UDP-Maulticasting-Einrichtung an dem IP-Netzwerk an eine Gruppe von benannten empfangenden Systemen gesendet wird. Die Übertragungsgeschwindigkeit der Pakete kann die Paketverlustrate des Netzwerkes beeinflussen. In einem Netzwerk mit Routern und anderen Systemen, die Nachrichten zwischenspeichern und weiterleiten, zum Beispiel kann der Pufferspeicherplatz überlaufen, wenn die Pakete zu schnell übertragen werden. Ausführungsbeispiele im Erfindungsbereich der vorliegenden Erfindung können daher Einrichtungen zum Dosieren der Nachrichtenmenge der Pakete umfassen. Beispielhaft und nicht einschränkend werden solche Einrichtungen in 7 durch den Schritt 126 veranschaulicht, der Pakete unter Verwendung eines Dosierungsalgorithmus sendet, der die Pakete so überträgt, dass die Übertragung einen nur geringen oder überhaupt keinen Einfluss auf die Paketverlustrate hat. Der Dosierungsalgorithmus reduziert den Netzwerk-Overhead, da er auf allgemeine Netzwerk-Paketfehlertrends reagiert und Pakete in größeren Intervallen (mit geringerer Paketübertragungsgeschwindigkeit) sendet, wenn das Netzwerk auf einer niedrigeren Ebene arbeitet. Der Dosierungsalgorithmus kann somit Einrichtungen zur Auswahl einer Übertragungsgeschwindigkeit auf der Grundlage der Netzwerk-Leistungsebene umfassen. Beispiele für solche Einrichtungen werden weiter unten vorgestellt.
  • Im Idealfall muss es ein Dosierungsalgorithmus dem System ermöglichen, Pakete möglichst rasch zu übertragen, ohne die Paketverlustrate des Netzwerkes nachteilig zu beeinflussen. Normalerweise ist die Paketverlustrate eine sehr komplexe Funktion zahlreicher verschiedener Parameter, von denen wenigstens einige mit der Zeit schwanken. Einige der in Bezug zu der Hardware und der jeweiligen Netzwerk-Infrastruktur stehen den Faktoren werden dabei genutzt, um zwischen den Systemen zu kommunizieren. Andere Faktoren werden durch die interne Verarbeitungslast der einzelnen Systeme an dem Netzwerk beeinflusst. Da so viele Faktoren die Paketverlustrate des Netzwerkes beeinflussen können, wäre es sehr schwierig, a priori zu berechnen, welches die Paketverlustrate für eine gegebene jeweilige Netzwerkkonfiguration wäre. Somit verwendet die vorliegende Erfindung einen Ansatz, der eine Messung der Netzwerk-Paketverlustrate vornimmt und die Übertragungsgeschwindigkeit auf der Grundlage der Paketverlustrate anpasst, um zu verhindern, dass die Übertragungsgeschwindigkeit die System-Paketverlustrate nachteilig beeinflusst.
  • Zahlreiche verschiedene Technologien können entwickelt werden, um die Paketverlustrate des Systems zu nutzen, um eine Übertragungsgeschwindigkeit für den Sender zu ermitteln. Jede davon ist geeignet ein Beispiel von Einrichtungen zum Auswählen einer Übertragungsgeschwindigkeit. Dosierungsalgorithmen, die gut funktionieren, müssen jedoch bestimmte Merkmale aufweisen. Normalerweise wird die Übertagungsgeschwindigkeit für einen Sender zwischen einem Minimalwert und einem Maximalwert begrenzt. Der Maximalwert ist erforderlich, damit der Sender Pakete wenigstens mit einer bestimmten Mindestgeschwindigkeit überträgt, und zwar unabhängig von den Netzwerkbedingungen. Wenn der Sender keine Pakete übertragen würde, würden die Netzwerkprotokolle vollständig zusammenbrechen. Somit muss der Sender auch unter ungünstigsten Bedingungen Pakete übertragen. Oft ist es ratsam, die Übertragungsgeschwindigkeit auf einen Maximalwert zu begrenzen, um den Sender zu hindern, das Netzwerk vollständig zu überschwemmen. Die kleinste und die größte Übertragungsgeschwindigkeit werden oft ausgehend von Versuchsergebnissen oder anderen Methodologien eingestellt, die annehmbare Minimal- bzw. Maximalwerte erzeugen.
  • Wenn die Paketverlustrate genutzt wird, um die Übertragungsgeschwindigkeit einzustellen, arbeitet ein typischer Dosierungsalgorithmus mit Dämpfung-, Filter-, Gewichtungs- und Glättungsverfahren, um die Leistungsebenen zu erreichen, die sich an Idealbedingungen annähern. Normalerweise muss die ausgewählte Dosierungsmethodologie auf tatsächliche Erhöhungen beziehungsweise Senkungen der Paketverlustrate reagieren und dabei gleichzeitig relativ störunempfindlich gegenüber einer geringen Anzahl von kontinuierlichen Fehlern und kleinen Fehlerbündeln sein, so dass diese nicht unmittelbar eine Reduzierung von Übertragungsgeschwindigkeiten auslösen.
  • Normalerweise ist es sehr schwierig, die Netzwerk-Paketverlustrate direkt zu messen. Es gibt jedoch Maße, die indirekte Indikatoren der Paketverlustrate sind. Ein solches Maß ist die Anzahl der negativen Quittungen (NAKs), die als Antwort auf vorhergehende Übertragungen empfangen werden. Da der statistische Zuverlässigkeitsmodus der vorliegenden Erfindung Systeme erfordert, die wenigstens eines, jedoch weniger als alle Pakete in einer Nachricht auf negative Quittung für Pakete, die sie nicht empfangen haben, empfangen, ist die Rate negativer Quittungen (NAK) ein Indikator der System-Paketver1ustrate. Bei der Nutzung der Rate negativer Quittungen (NAK) als Indikator der Paketverlustrate müssen bestimmte Faktoren berücksichtigt werden. Wenn das System zum Beispiel Unterdrückung negativer Quittungen (NAK) nutzt, um den Feuersturm von negativen Quittungen zu reduzieren, der erzeugt werden kann, wenn Pakete in dem Netzwerk verloren gehen, kann die Rate negativer Quittungen für eine gegebene Paketverlustrate künstlich niedrig sein. Es ist jedoch möglich, die Wirkungen so einzubeziehen, dass der Dosierungsalgorithmus eine geeignete Empfindlichkeit gegenüber der gemessenen Rate negativer Quittungen aufweist. Wenn zum Beispiel die Unterdrückungsmethodologie für negative Quittungen eine relativ feststehende Menge von negativen Quittungen (NAKs) ausfiltert, kann jede gemessene negative Quittung zahlreiche solche negativen Quittungen darstellen, von denen die meisten niemals gesendet wurden. Wenn der Unterdrückungsalgorithmus für negative Quittungen eine zeitverändernde Komponente aufweist, wie zum Beispiel ein Unterdrückungsalgorithmus für negative Quittungen, der aufgebaut ist, um relativ wenige negative Quittungen zu senden, der jedoch danach eine zunehmende Anzahl zu senden, wenn die ursprünglichen negativen Quittungen nicht beantwortet wurden, kann es notwendig sein, die Empfindlichkeit des Dosierungsalgorithmus an auf die zeitverändernde Art des Unterdrückungsalgorithmus für negative Quittungen anzupassen. Nach einer anfänglichen Übertragung einer Nachricht zum Beispiel können negative Quittungen, die relativ bald danach empfangen worden sind, relative stärker gewichtet werden (da sie einen relativ größeren Anteil von unterdrückten negativen Quittungen darstellen), und zu einem späteren Zeitpunkt empfangene negative Quittungen können relativ weniger stark gewichtet werden (da sie einen relativ kleineren Teil von unterdrückten negativen Quittungen darstellen).
  • Ein weiterer Faktor, der berücksichtigt werden kann, wenn ein Dosierungsalgorithmus entworfen wird, ist die Statistik empfangener negativer Quittungen. Eine ständig zuneh mende Rate negativer Quittungen zum Beispiel kann auf sich verschlechternde Netzwerkbedingungen und auf eine stetig zunehmende Paketverlustrate hinweisen. In einer solchen Situation kann es wünschenswert sein, einen Dosierungsalgorithmus zu entwickeln, der die Übertragungsgeschwindigkeit allmählich verringert, bis das Minimum erreicht ist. Analog dazu kann der Dosierungsalgorithmus auf eine stetig abnehmende Rate negativer Quittungen (NAK) reagieren, indem er die Übertragungsgeschwindigkeit allmählich auf den Maximalwert erhöht. Für Erhöhungen bzw. Abnahme der Rate negativer Quittungen, die von relativ kurzer Dauer sind, was zum Beispiel auf ein Bünde! ausgelassener Pakete hindeuten kann, muss der Dosierungsalgorithmus normalerweise störtest oder unempfindlich gegenüber solchen Bündeln sein und die Übertragungsgeschwindigkeit an dem Ende des Bündels relativ unverändert lassen. Für Raten negativer Quittungen, die relativ stetig oberhalb oder unterhalb der gewünschten Schwelle sind, muss die Übertragungsgeschwindigkeit normalerweise auf das Minimum reduziert beziehungsweise auf das Maximum angehoben werden.
  • Diese allgemeinen Merkmale können unter Verwendung einer Vielzahl verschiedener Dosierungsmethodologien erzielt werden. Die Filter- und Estimationstheorie stellt eine reichhaltige Palette an Methodologien bereit, die auf diese Art von Problemen anwendbar sind. Auch die Kontrolltheorie verfügt über eine breite Palette an analytischen Werkzeugen und Ansätzen, die auf diese Art von Problem anwendbar sind. Zum Beispiel können optimale oder suboptimale Filterverfahren entwickelt werden, um ein Maß zu erhalten und daraus eine Schätzmenge zu bilden, die genutzt werden kann, um die Übertragungsgeschwindigkeit entsprechend anzupassen. Solche Methodologien umfassen normalerweise einen Kompromiss zwischen Rechenlast und Schätzgenauigkeit. In dieser Situation werden zahlreiche der einfacheren Modelle mit Wahrscheinlichkeit angemessene Ergebnisse ergeben. Solche vereinfachten Modelle sind unter anderem Alphafilter, Alpha-Beta-Filter, suboptimale Kolman-Filter und ähnliche. In einem Ausführungsbeispiel der vorliegenden Erfindung wird die Übertragungsgeschwindigkeit durch einen Mechanismus eingestellt, der die Übertragungsgeschwindigkeit um einen veränderlichen Betrag absenkt, der davon abhängig ist, wie weit die Rate negativer Quittungen (NAK) die gewünschte Schwelle überschreitet, und der die Übertragungsgeschwindigkeit an einem feststehenden Betrag erhöht, wen die Rate negativer Quittungen unter einer gewünschten Schwelle liegt.
  • In einem veranschaulichenden Ausführungsbeispiel wird die Übertragungsgeschwindigkeit unter Verwendung einer iterativen Funktion berechnet, die zu einem geeigneten Zeitpunkt aktualisiert wird, wie zum Beispiel vor einer jeden neuen Nachrichtenübertragung, oder nach einem zeitbasierten Kriterium, das eine kleinste bzw. eine größte Aktualisierungszeit einstellt. Die Übertragungsgeschwindigkeit an der n-ten Iteration wird als gewichteter Durchschnitt einer Rohübertragungsgeschwindigkeit von der n-ten Iteration und einer Rohübertragungsgeschwindigkeit von der (n-1)-ten Iteration der folgenden Gleichung berechnet: Rwn = α Rm + (1 – α)Rr(n-1) wobei:
  • Rwn
    = gewichtete Übertragungsgeschwindigkeit, die zur Übertragung von Paketen genutzt wird;
    Rm
    = Rohübertragungsgeschwindigkeit der n-ten Iteration;
    Rr(n-1)
    = Übertragungsgeschwindigkeit der (n-1)-ten Iteration;
    α
    = Bewertungsfaktor, der die Änderungsrate der Übertragungsgeschwindigkeit verlangsamt.
  • Die Rohübertragungsgeschwindigkeit der n-ten Iteration wird berechnet durch: Rm = Rw(n-1) + Δr,wobei:
  • Rw(n-1)
    = gewichtete Übertragungsgeschwindigkeit der (n-1)-ten Iteration, berechnet unter Verwendung der bereits vorgestellten Gleichung;
    Δr
    = Rohänderung der Übertragungsgeschwindigkeit, wie unten gezeigt berechnet; und
    Rm
    = begrenzt auf den Bereich Rmin ≤ Rrn ≤ Rmax, wobei Rmin und Rmax die zulässige kleinste beziehungsweise die zulässige größte Übertragungsgeschwindigkeit darstellen.
  • Die Änderung der Übertragungsgeschwindigkeit Δr wird unter Verwendung der folgenden Gleichung berechnet:
    Figure 00330001
    wobei:
  • Δr
    = Änderung der Änderung Übertragungsgeschwindigkeit;
    RΔB
    = Grundänderung der Übertragungsgeschwindigkeit; und
    ΔNAK
    = Betrag der gemessenen Rate negativer Quittungen (NAK) oberhalb der gewünschten Rate negativer Quittungen (NAK), berechnet wie nachstehend veranschaulicht.
  • In der obenstehenden Gleichung wird der Betrag, um den die gemessene Rate negativer Quittungen oberhalb der gewünschten Rate negativer Quittungen liegt, unter Verwendung der folgenden Gleichung berechnet:
    Figure 00330002
    wobei:
  • ΔNAK
    = Betrag der gemessenen Rate negativer Quittungen oberhalb der gewünschten Rate negativer Quittungen (NAK) liegt;
    TNAK
    = die gewünschte Rate negativer Quittungen (NAK);
    TΔNAK
    = ein Dämpfungsfaktor, der die Differenz in der Rate negativer Quittungen (NAK) gegenüber dem vorhergehenden Zeitraum darstellt, die überschritten werden muss, bevor die Übertragungsgeschwindigkeit reduziert wird; und
    RNAK
    = die gemessene Rate negativer Quittungen.
  • Oft ist es wünschenswert, Raten negativer Quittungen (NAK) und andere NAK-Mengen als NAKs pro Sekunde pro 1.000 Systemen in dem Netzwerk zu behandeln. Wenn dies der Fall ist, kann RNAK in der vorhergehenden Gleichung berechnet werden durch:
    Figure 00340001
    wobei:
  • RNAK
    = Rate negativer Quittungen (NAK-Rate) pro 1.000 Systeme in der Population pro Sekunde;
    NAK
    = Anzahl der pro Sekunde empfangenen negativen Quittungen (NAKs); und
    Population
    = Anzahl der Systeme in dem Netzwerk, die NAKs übertragen können.
  • Die Leistung und der Betrieb des oben genannten Systems von Gleichungen können optimiert werden, indem die verschiedenen in den Gleichungen angegebenen Konstanten und Schwellenwerte verändert werden. Zusätzlich erfordern bestimmte Parameter normalerweise eine Auswahl eines Ausgangswertes, bevor das Gleichungssystem iteriert wird. Normalerweise werden die Auswahl der Werte der verschiedenen Parameter und die Ausgangswerte auf empirischen Daten beruhen, die während einer Erprobung des Systems gemessen worden sind. Die Sollwerte werden stark von der konkreten Installation und der Art des betreffenden Netzwerkes abhängig sein. In einem Ausführungsbeispiel werden die folgenden Werte verwendet:
    Figure 00340002
    Figure 00350001
  • In der oben genannten Liste sind Rw0 und R0 die Ausgangswerte der gewichteten Übertragungsgeschwindigkeit beziehungsweise der Rohübertragungsgeschwindigkeit.
  • Erneut unter Bezugnahme auf 7 wird das sendende System an dem Schritt 128 auf negative Quittungen (NAKs) von den empfangenden Systemen warten, so dass es gegebenenfalls ausgelassene Pakete erneut übertragen kann. Um die Menge des Netzwerkverkehrs zu reduzieren, können Ausführungsbeispiele Einrichtungen zur Unterdrückung der erneuten Übertragung von Paketen umfassen. Solche Einrichtungen können ein Abschnitt von Einrichtungen zum Reduzieren des Netzwerkverkehrs während der Wiederherstellung von verlorengegangenen Paketen sein, der die Erzeugung von negativen Quittungen (NAKs), wenn die Pakete nicht von einem vorgesehenen Empfängerempfangen werden, unterdrückt und der die erneute Übertragung von Ersatzpaketen unter bestimmten Umständen unterdrückt. Beispielhaft und nicht beschränkend wird in 7 eine Einrichtung zum Unterdrücken der erneuten Übertragung von Paketen durch ein Übertragungs-Unterdrückungselement für erneute Übertragung veranschaulicht, die von einer Strichlinie 130 umschlossen ist.
  • Das Unterdrückungselement für erneute Übertragung 130 dient dazu, die erneute Übertragung eines von einer empfangenen NAK angeforderten Paketes zu unterdrücken, wenn das Paket vorher innerhalb eines vorgegebenen Zeitrahmens gesendet worden ist. Die gibt den erneut übertragenen Paketen Zeit, um sich durch das Netzwerk auszubreiten und empfangen zu werden, bevor sie ein zweites Mal erneut übertragen werden. Eine Implementierung des Unterdrückungselements für erneute Übertragung 130 setzt jedes Mal, wenn ein Paket übertragen wird, einen Unterdrückungs-Timer. Das gleiche Paket wird erst dann erneut übertragen, wenn der Unterdrückungs-Timer für das betreffende Paket abläuft. Der Wert des Unterdrückungs-Timers wird von der zu erwartenden Ausbreitungsgeschwindigkeit in dem Netzwerk abhängig sein.
  • An dem Schritt 132 wird eine Prüfung durchgeführt, um festzustellen, ob ein Unterdrückungs-Timer für dieses Paket läuft. Wenn das so ist, wird die negative Quittung (NAK) ignoriert, da die erneute Übertragung bereits eingetreten ist und da das jeweilige empfangende System das fehlende Paket bereits hat oder es in Kürze haben wird. Wenn der Unterdrückungs-Timer nicht wie an dem Schritt 132 festgelegt läuft, wird an dem Schritt 134 einer für das betreffende Paket gestartet und das Paket wird an dem Schritt 136 erneut übertragen, erneut unter Verwendung von UDP-Multicasting. Das Multicasting wird so verwendet, dass alle empfangenden Systeme, die das Paket vorher ausgelassen haben können, eine Möglichkeit haben werden, es zu empfangen. Wie weiter unten beschrieben wird, können Einrichtungen zum Unterdrücken von Anforderungen nach erneuter Übertragung von Paketen auch Einrichtungen zum Reduzieren des Netzwerkverkehrs während der Wiederherstellung von verlorenen Paketen sein, wobei solche Einrichtungen zum Unterdrücken von Anforderungen der erneuten Übertragung in Verbindung mit einem empfangenden System arbeiten, um die Ist-Zahl von negativen Quittungen (NAKs), die erzeugt werden, wenn ein Paket verloren geht, zu reduzieren. Für das in 6 veranschaulichte Ausführungsbeispiel können die Schritte 124 und 126 aus 7 in den Sender 108 integriert werden, während der Rest in den Empfänger für negative Quittungen (NAK) 118 integriert werden kann.
  • Unter Bezugnahme auf 8 wird eine strukturelle Darstellung der Verarbeitung gezeigt, die in einem empfangenden System oder Empfänger auftritt, wenn eine Nachricht unter Verwendung des statistischen Zuverlässigkeitsmodus empfangen wird. In 8 wird das empfangende System 138 durch eine Strichlinie 140 abgeteilt. Die Komponenten oberhalb der Strichlinie 140 stellen die Komponenten dar, die von der vorliegenden Erfindung bereitgestellt werden, um empfangene Nachrichten für Anwendungen bereitzustellen, wie zum Beispiel die Anwendung 142, die am empfangenden System 138 ausgeführt wird. Die Komponenten oberhalb der Strichlinie 140 können zum Beispiel in eine Kurznachricht-Sende-/Empfangs-Einrichtung integriert werden, wie zum Beispiel in die durch das Kästchen 66 von 3 veranschaulichte.
  • Wie bereits beschrieben wurde, wird die Nachricht aufgebrochen und eine garantierte Mindestanzahl von Paketen wird übertragen, wenn ein sendendes System, wie zum Beispiel das sendende System 104, eine Nachricht unter Verwendung des statistischen Zuverlässigkeitsmodus an ein empfangendes System, wie zum Beispiel das empfan gende System 138, senden möchte. In 8 kann das sendende System diese Funktionalität wie bereits in Verbindung mit den 6 und 7 oben beschrieben implementieren. Die Pakete 110 werden über das Netzwerk 112 übertragen und von dem empfangenden System 138 empfangen. Somit können Ausführungsbeispiele im Erfindungsbereich der vorliegenden Erfindung Einrichtungen zum Empfangen von Paketen umfassen. Beispielhaft und nicht begrenzend ist in 8 eine solche Einrichtung durch den Empfänger 148 veranschaulicht. Der Empfänger 148 ist verantwortlich dafür, Pakete zu empfangen und sie in der richtigen Reihenfolge anzuordnen. Der Empfänger 148 hört kontinuierlich auf Pakete ab. Eine Nachricht beginnt mit dem Empfang des ersten empfangenen Paketes und setzt sich fort, bis alle Pakete in der Nachricht empfangen worden sind oder bis die Nachrichten-Überwachungszeit abgelaufen ist, und wird entfernt. Es ist zu beachten, dass das erste empfangene Paket gegebenenfalls nicht das erste Paket der Nachricht ist. Die Zeitüberwachung und das Entfernen von Nachrichten werden weiter unten ausführlicher beschrieben.
  • Die normale Verarbeitung des Empfängers 148 umfasst das Zusammensetzen der Pakete einer Nachricht in der Paketfolgenummer-Reihenfolge. Nachrichten werden nach Nachrichtennummer und nach Quellen-IP-Adresse verwaltet. Da Nachrichten gegebenenfalls zwischengespeichert werden müssen, bis alle Pakete empfangen worden sind, können Ausführungsbeispiele im Erfindungsbereich der vorliegenden Erfindung Einrichtungen zum Speichern empfangener Pakete, bis eine vollständige Nachricht empfangen worden ist, umfassen. Beispielhaft und nicht beschränkend wird eine solche Einrichtung in 8 durch die Nachrichtenempfangsliste 150 veranschaulicht. Wie in 8 angedeutet wird, wird eine Nachrichtenempfangsliste für jede eingehende Nachricht erzeugt. Sie wird verwendet, um Paketströme erneut zu Nachrichten zusammenzusetzen und um den Sender während des Empfanges zu identifizieren. Die Nachrichtenempfangsliste 150 kann verschiedene Informationen umfassen, in Abhängigkeit von der konkreten Implementierung und den jeweils implementierten Merkmalen. In einem Ausführungsbeispiel umfasst die Nachrichtenempfangsliste 150 die Quellen-IP-Adresse und die Quellen-UDP-Portnummer die Nachrichtennummer, eine Marke für Nachricht vollständig empfangen, eine Hinweismarke auf einen Nachrichtenzwischenspeicher, ein Nachrichtenbearbeitungs- oder ein sonstiges geeignetes Kennzeichen, den Zeitstempel des zuletzt empfangenen Paketes, den Zeitstempel des zuletzt gehörten Paketes und den Zeitstempel der letzten Übergabe eines Paketes an die Anwendung. Andere Aus führungsbeispiele können andere oder unterschiedliche Felder innerhalb der Nachrichtenempfangsliste implementieren. Zum Beispiel kann es wünschenswert sein, eigentlichen Pufferspeicher in die Nachrichtenempfangsliste 150 anstelle einer Hinweismarke auf einen separaten Nachrichtenzwischenspeicher einzuschließen. Die konkrete Implementierung wird von verschiedenen Überlegungen abhängig sein, wie zum Beispiel von den Implementierungsdetails des von dem Empfänger 148 zum Empfangen der Pakete von dem Netzwerk 112 verwendeten Protokollstapels.
  • Wenn durch den Empfang eines Paketes mit einer nichtsequentiellen Paketfolgenummer eine Lücke in der Paketfolge entdeckt wird, wird ein Warte-Timer für negative Quittung gestartet. Bei Ablauf der Wartezeit für negative Quittung wird eine negative Quittung (NAK) an das sendende System 104 übertragen, um dem sendenden System 104 mitzuteilen, dass ein Paket ausgelassen worden ist. Ausführungsbeispiele innerhalb des Erfindungsbereiches der vorliegenden Erfindung können Einrichtungen zum Übertragen einer Anforderung für erneute Übertragung eines Paketes umfassen. Beispielhaft und nicht beschränkend wird eine solche Einrichtung in 8 durch den Timer für negative Quittung (NAK) 152 veranschaulicht. Der Timer für negative Quittung 152 kann die Nachrichtenempfangsliste 150 überwachen, um nichtsequentielle Paketnummern zu entdecken. Alternativ dazu kann der Empfänger 148 den Timer für negative Quittung 152 informieren, wenn nichtsequentielle Pakete empfangen worden sind. Als weitere Alternative können das Detektieren einer nichtsequentiellen Paketnummer sowie das Starten des Timers für negative Quittung in den Empfänger 148 integriert werden. Wie diese Funktionalität implementiert wird, wird auf einer Reihe von Auslegungs-Auswahlmöglichkeiten beruhen, die für eine jeweilige Implementierung getroffen werden müssen. In dem in 8 veranschaulichten Ausführungsbeispiel ist konzeptuell der Timer für negative Quittung 152 verantwortlich für das Setzen des Warte-Timers für negative Quittung, wenn ein nichtsequentielles Paket detektiert wird, und für das Übertragen einer negativen Quittung (NAK) an das sendende System 104, wenn der jeweilige Timer für negative Quittung abgelaufen ist.
  • Die Nutzung eines Warte-Timers für negative Quittung zur Festlegung, wann negative Quittungen zu senden sind, stellt mehrere Vorteile bereit. Wie weiter oben bereits erläutert wurde, kann das Netzwerk vollständig mit negativen Quittungen zugesetzt werden, wenn jedes System, das ein gesendetes Paket nicht empfangen hat, eine negative Quit tung sendet, sobald das ausgelassene Paket detektiert wird. Somit ist es wünschenswert, einen Abstand zwischen den negativen Quittungen der Systeme zu schaffen, so dass die gesendeten negativen Quittungen geeignet verteilt werden, so dass die Übertragungsmerkmale des Netzwerkes nicht nachteilig beeinflusst werden. Da weiterhin niedere Protokolle, wie zum Beispiel UDP, den Empfang von Paketen in numerischer Reihenfolge nicht garantieren können, ist es oft wünschenswert, einen kurzen Zeitraum zu warten, bevor eine negative Quittung für das Paket gesendet wird, um zu sehen, ob das Paket doch noch ankommt. Somit können Ausführungsbeispiele innerhalb des Erfindungsbereiches der vorliegenden Erfindung Einrichtungen zum Unterdrücken von Anforderungen nach erneuter Übertragung von Paketen umfassen. Wie bereits erläutert worden ist, können solche Einrichtungen eine Komponente einer Gesamteinrichtung zum Reduzieren von Netzwerkverkehr während der Wiederherstellung verloren gegangener Pakete umfassen. Beispielhaft und nicht begrenzend kann eine solche Einrichtung zum Unterdrücken von Anforderungen nach erneuter Übertragung von Paketen ein Unterdrückungselement für negative Quittungen enthalten, das in den Timer für negative Quittungen 152 integriert ist.
  • Ein Unterdrückungselement für negative Quittungen kann eine breite Palette an Strukturen und Methodologien umfassen, um die Flut von negativen Quittungen zu reduzieren, die auftreten würde, wenn empfangende Systeme sofort eine negative Quittung senden würden, wenn ein Paket außerhalb einer sequentiellen Reihenfolge empfangen wurde. In seiner grundlegenden Form umfasst das Unterdrückungselement für negative Quittung einen Warte-Timer für negative Quittung, der auf einen Zufallswert eingestellt ist, wenn ein Paket außerhalb einer numerischen Reihenfolge empfangen wird. Das Einstellen des Timers auf einen Zufallswert bewirkt eine zufällige Anordnung der Wahrscheinlichkeit der Übertragung einer negativen Quittung (NAK) und verteilt die Anzahl der übertragenen negativen Quittungen über einen längeren Zeitraum. Wie weiter unten beschrieben wird, stehen jedoch weitaus ausgereiftere Unterdrückungsmethodologien für negative Quittung zur Verfügung.
  • Unter erneuter Bezugnahme auf 2 gilt: wenn die Bedienerkonsole 70 eine Vielzahl von Paketen an End-Clients 76 multicastet, werden einige Systeme alle übertragenen Pakete empfangen, werden einige Systeme weniger als alle übertragenen Systeme empfangen und werden einige Systeme keines der übertragenen Pakete empfangen. Im Idealfall empfängt die Bedienerkonsole 70 nur eine negative Quittung für jedes Paket, das von einem beliebigen System in dem Netzwerk nicht empfangen wurde. Wenngleich es schwierig ist, diesen Idealfall in der Praxis zu erreichen, können sich Unterdrückungselemente für negative Quittung, die bestimmte Merkmale aufweisen, an diesen Idealfall annähern.
  • In einem Ausführungsbeispiel der vorliegenden Erfindung verwendet das Unterdrückungselement für negative Quittung einen Timer, um die Übertragung von negativen Quittungen zu verzögern. Der Wert des Timers wird auf eine Pseudozufallszahl eingestellt, die eine bestimmte Wahrscheinlichkeitsdichtefunktion hat, die relativ wenige negative Quittungen in einem frühen Stadium und relativ mehr negative Quittungen in einem späteren Stadium erzeugt. Indem die Wahrscheinlichkeitsdichtefunktion an dem Timer für negative Quittung kundenspezifisch eingestellt wird, kann eine Situation erzeugt werden, in der unter einer Population von Empfängern, die ein jeweiliges Paket nicht empfangen haben, einige Systeme relativ bald, nachdem das Paket ausgelassen wurde, eine negative Quittung senden. Solange das System diese negativen Quittungen empfängt und mit den geeigneten Paketen antwortet, werden Systeme, deren Timer für negative Quittung auf einen späteren Zeitpunkt verzerrt wurde, das Paket empfangen, bevor ihr Timer für negative Quittung abläuft. Wenn das sendende System jedoch die negative Quittung nicht empfängt und nicht mit einer erneuten Übertragung des geeigneten Paketes antwortet, werden relativ mehr Systeme negative Quittungen ausgeben. Indem die Wahrscheinlichkeitsdichtefunktion auf die jeweiligen Paketverlustmerkmale des Netzwerkes abgestimmt wird, kann eine Leistung in Annäherung an den Idealfall erzielt werden.
  • Bei der Erzeugung der Wahrscheinlichkeitsdichtefunktion des Timers für negative Quittung müssen mehrere Faktoren berücksichtigt werden. Diese Faktoren können wie folgt zusammengefasst werden:
    • 1. Die Wahrscheinlichkeitsdichtefunktion muss einen recht scharfen Knick in der Nähe des gewünschten Mindestwertes aufweisen, um einen definitiven Abschnittpunkt für den Mindest-Timerwert bereitzustellen.
    • 2. Die niedere Wahrscheinlichkeitsdichtefunktion muss verringert werden, wenn die Netzwerkgröße erhöht wird, so dass die Gesamtanzahl von Systemen, die negative Quittungen in einem frühen Stadium ausgeben, relativ unabhängig von der Netzwerkgröße ist.
    • 3. Die Wahrscheinlichkeitsverteilung der Wahrscheinlichkeitsdichtefunktion muss es sehr wahrscheinlich machen, dass einige Systeme zu einem relativ frühen Zeitpunkt eine negative Quittung ausgeben.
    • 4. Die Wahrscheinlichkeitsdichtefunktion muss relativ störtest oder unempfindlich gegenüber der Minimal- und Maximal-Wartezeit für negative Quittung sein, so dass die Wahrscheinlichkeit, dass eine negative Quittung von einem jeweiligen System gesendet wird, als Prozentsatz relativ unverändert ist, wenn die Minimal- und Maximal-Wartezeiten für negative Quittung eingestellt werden.
    • 5. Die Wahrscheinlichkeitsdichtefunktion muss die Mutmaßlichkeit des Sendens von negativen Quittungen bei steigendem Paketverlustverhältnis erhöhen, so dass eine große Anzahl von negativen Quittungen gesendet wird, wenn das Paketverlustverhältnis hoch ist.
  • Das Gebiet der stochastischen Verfahren stellt einen reichen Hintergrund für die Auswahl einer geeigneten Wahrscheinlichkeitsdichtefunktion bereit, und viele der genannten Funktionen werden den Zwecken der vorliegenden Erfindung genügen. In einem Ausführungsbeispiel der vorliegenden Erfindung wird die Wahrscheinlichkeitsdichtefunktion so erstellt, dass relativ wenige negative Quittungen zwischen der Minimal-Wartezeit für negative Quittung und kurz vor der Maximal-Wartezeit für negative Quittung erzeugt werden. Ganz nahe oder unmittelbar an der Maximal-Wartezeit für negative Quittung steigt die Wahrscheinlichkeitsdichtefunktion jedoch dramatisch an. Eine solche Wahrscheinlichkeitsdichtefunktion kann erzeugt werden, indem die folgenden Schritte durchgeführt werden:
    • 1. Erzeugen einer Pseudozufallszahl zwischen einem vorgegebenen Minimal- und Maximalwert.
    • 2. Anwenden einer Verzerrungskurve (bias curve) der Form Y = Xn, um eine Wahrscheinlichkeitsdichtefunktion zu erzeugen, die von der Verzerrungskurve (bias curve) abhängig ist.
    • 3. Skalieren des resultierenden Ausgangs der Kurve, um die Wahrscheinlichkeitsdichtefunktion relativ störfest oder unempfindlich gegenüber Änderungen der Anzahl von Systemen in dem Netzwerk sowie der Minimal- und Maximal-Warte-Timer-Werte für negative Quittungen (NAK) zu machen.
    • 4. Für alle Werte unterhalb des Minimal-Warte-Timer-Wertes für negative Quittung Hinzufügen des Minimal-Warte-Timer-Wertes für negative Quittungen zu der Menge, um sie über den gewünschte Minimal-Warte-Timer-Wert für negative Quittung zu bringen.
    • 5. Für alle Warte-Timer-Werte für negative Quittung, die über dem maximal zulässigen Warte-Timer-Wert für negative Quittungen liegen Reduzieren desselben auf den maximal zulässigen Warte-Timer-Wert für negative Quittung.
  • Die folgenden Gleichungen beschreiben die oben genannten Schritte mathematisch. Der erste Schritt besteht in der Erzeugung einer gleichförmigen Zufallszahl R auf eine Weise, dass R zwischen einem Minimalwert Rmin und einem Maximalwert Rmax liegt. In einem Ausführungsbeispiel der vorliegenden Erfindung werden Rmin = 0 und Rmax durch die folgende Gleichung gegeben:
    Figure 00420001
    wobei:
  • M
    = Anzahl der Systeme; und
    Lp
    = Paketverlustverhältnis.
  • Das Paketverlustverhältnis ist ein Maß der prozentualen Anteils der verloren gegangenen Pakete. Indem er die einem jeweiligen Empfänger zur Verfügung stehenden Informationen prüft, weiß der Empfänger, wie viele Pakete empfangen worden sind, und weiß der Empfänger, wie viele negative Quittungen gesendet worden sind, die Pakete anfordern, die als fehlend identifiziert wurden. Somit kann ein grobes Maß des Paketverlustverhältnisses berechnet werden, indem die Anzahl der gesendeten negativen Quittungen (NAKs) durch die Anzahl der empfangenen Pakete geteilt wird. Eine bessere Schätzung des Paketverlustverhältnisses kann erzielt werden, indem die Anzahl der gesendeten negativen Quittungen (NAKs) durch eine Summe der Anzahl der empfangenen Pakete plus der Anzahl der gesendeten negativen Quittungen geteilt wird. In einigen Ausführungsbeispielen kann es wünschenswert sein, das Paketverlustverhältnis unabhängig von dem berechneten Wert auf angemessene Werte zu begrenzen. In einem Ausführungsbeispiel kann es zum Beispiel wünschenswert sein, das Verlustverhältnis auf ein Maximum von f und ein Minimum von 0,0001 zu begrenzen.
  • Nachdem man eine geeignete gleichförmige Zufallszahl erhalten hat, besteht der nächste Schritt darin, eine Verzerrungskurve (bias curve) anzuwenden und die Verzerrungskurve zu skalieren. Eine skalierte Zeitverzögerung kann somit gegeben sein durch: Ts = SRn wobei:
  • Ts
    = skalierte Zeitverzögerung,
    S
    = Skalierungsfaktor,
    R
    = die vorher erhaltene Zufallszahl,
    n
    = Potenz der angewendeten Kurve.
  • In der obenstehenden Gleichung wird weine Verzerrungskurve (bias curve) der Form Y = Xn verwendet, um die Zufallszahlen zu verzerren, indem ihr Wert erhöht oder verringert wird und indem somit die gleichförmige Wahrscheinlichkeitsdichtefunktion verändert wird. Andere Verzerrungskurven mit einer anderen Form können ebenfalls verwendet werden. Indem die Verzerrungskurve angepasst wird, kann die jeweilige Form der sich ergebenden Wahrscheinlichkeitsdichtefunktion an eine jeweilige Implementierung angepasst werden.
  • Um die Dichte der ursprünglichen Verteilung unabhängig von der Anzahl der Systeme in dem Netzwerk sowie der Minimal- und Maximal-Timer-Werte zu erhalten, kann der Skalierungsfaktor S durch die Gleichung ausgewählt werden:
    Figure 00440001
    wobei:
  • S
    = Skalierungsfaktor in der vorstehenden Gleichung,
    Rmax
    = Zufalls-Maximalwert, vorher bereits,
    Tmax
    = Maximal-Timer-Wert,
    M
    = Anzahl von Systemen.
  • Da wir einen Timerwert wünschen, der größer ist als der minimal zulässige Timerwert, müssen Schritte eingeleitet werden, um sicherzustellen, dass der skalierte Timerwert Ts in den gewünschten Bereich fällt.
  • Wenn somit Ts kleiner ist als der zulässige Minimal-Timer-Wert, wird der zulässige Minimal-Timer-Wert zu Ts hinzugefügt, um ihn über das Minimum zu bringen. Mit anderen Worten gilt:
    Figure 00440002
    wobei:
  • Tm
    = Timerwert, der garantiert über dem Minimum liegt,
    Ts
    = skalierter Timerwert, oben berechnet,
    T
    min = minimal zulässiger Timerwert.
  • Es ist wünschenswert, in der obenstehenden Gleichung Tmin zu dem skalierten Timerwert hinzuzufügen, wenn dieser kleiner als das Minimum ist, anstelle den skalierten Timerwert einfach auf das Minimum zu trunkieren. Das Trunkieren des skalierten Timerwertes auf das Minimum würde zu einer unannehmbar hohen Wahrscheinlichkeitsdichtefunktion an dem unteren Ende der Timerwerte führen. Das Hinzufügen des Minimums bewirkt keine solchen unerwünschten Effekte. Schließlich können die vorstehenden Berechnungen gegebenenfalls zu Werten führen, die oberhalb des maximal zulässigen Timerwertes liegen. Diese können in den gewünschten Bereich gebracht werden, indem sie einfach auf den maximal zulässigen Timerwert begrenzt werden, wenn sie größer als der maximal zulässige Timerwert sind. Dies wird die Wahrscheinlichkeitsdichtefunktion um den maximal zulässigen Timerwert herum erhöhen. Da es jedoch wünschenswert ist, die Wahrscheinlichkeitsdichtefunktion auf größere Werte zu verzerren, schafft dies kein Problem. Somit wird der ausgewählte Timerwert T gegeben durch:
    Figure 00450001
    wobei:
  • T
    = ausgewählter Timer-Wert;
    Tm
    = in der obenstehenden Gleichung berechneter Timer-Wert; und
    T
    max = maximal zulässiger Timer-Wert.
  • Unter Bezugnahme auf 8 wählt der Timer für negative Quittung 152 einen Wert für Wartezeit-Timer für negative Quittung aus, wenn Pakete wie weiter oben diskutiert ausgelassen werden, und sendet bei Ablauf des Wertes für Wartezeit-Timer für negative Quittung eine negative Quittung (NAK) 154 an das sendende System 104, um die erneute Übertragung des jeweiligen Paketes anzufordern. Als Reaktion auf die negative Quittung 154 wird das sendende System 104 das jeweilige Paket oder die jeweiligen Pakete erneut übertragen, wie durch die erneute Paketübertragung 156 angedeutet wird. Es ist zu beachten, dass der Timer für negative Quittung 152 Protokolle nutzen kann, wie zum Beispiel einen Protokollstapel, der in 3 bereits veranschaulicht wurde, um die negative Quittung 116 zu übertragen. Es ist auch möglich, dass der Timer für negative Quittung 152 die weiter oben in Verbindung mit dem statistischen Zuverlässig keitsmodus der Übertragung bereits beschriebenen Grundsätze nutzt, um die Mutmaßlichkeit zu erhöhen, dass die negative Quittung 116 an dem sendenden System 104 ankommt. Mit anderen Worten kann die negative Quittung 116 in Mehrfachpaketen unter Verwendung der bereits beschriebenen Grundsätze übertragen werden. In diesem Fall wird die Statistik der Timers für negative Quittung bewirken, dass Mehrfachübertragungen des NAK-Paketes von verschiedenen Systemen durchgeführt werden, wenn die ersten negativen Quittungen (NAKs) nicht empfangen werden. Die Wahrscheinlichkeit, dass wenigstens eine negative Quittung von dem sendenden System 104 empfangen wird, erhöht sich.
  • Wenn ein Paket in einer Nachricht empfangen wird und die vollständige Nachricht noch nicht empfangen worden ist, besteht immer die Möglichkeit, dass der Rest der Nachricht niemals empfangen wird. Zum Beispiel kann sich ein physisches Problem in dem Netzwerk entwickeln, nachdem lediglich ein Teil der Nachricht empfangen worden ist. In solch einer Situation ist die Mutmaßlichkeit, dass die vollständige Nachricht innerhalb eines angemessenen Zeitraumes empfangen wird, praktisch nicht vorhanden. Somit müssen Mechanismen eingesetzt werden, um eine teilweise empfangene Nachricht nach einer gewissen Zeitspanne zu löschen, wenn der Rest der Nachricht nicht empfangen worden ist. Somit können Ausführungsbeispiele innerhalb des Erfindungsbereiches der vorliegenden Erfindung Einrichtungen zum Entfernen einer unvollständigen Nachricht umfassen. In 8 werden solche Einrichtungen zum Beispiel durch den Nachrichtenlebensdauer-Timer 159 veranschaulicht. Wenn das erste Paket einer Nachricht empfangen wird, kann ein Timer gesetzt werden. Wenn die vollständige Nachricht nicht empfangen wird, bevor der Timer abläuft, kann der Nachrichtenlebensdauer-Timer 159 die teilweise empfangene Nachricht löschen und den von ihr eingenommenen Platz wiederherstellen. Der Nachrichtenlebensdauer-Timer 159 kann verantwortlich für Kommunikation mit dem Empfänger 148 sein, um aufzuzeigen, wann das erste Paket einer neuen Nachricht empfangen worden ist. Alternativ dazu kann der Nachrichtenlebensdauer-Timer 159 die Nachrichtenempfangsliste 150 überprüfen, um neue Einträge zu erkennen, wenn diese erstellt werden, wenn ein Paket für eine neue Nachricht zuerst empfangen wird. Als weitere Alternative kann der Empfänger 148 verantwortlich sein für das Setzen des Ausgangswertes des Timers, wohingegen der Nachrichtenlebensdauer-Timer 159 dafür verantwortlich sein kann, alle unvollständigen Nachrichten, deren Timer abgelaufen ist, zu entfernen. Die konkrete Implementierung wird von verschiedenen Auslegungsmöglichkeiten abhängig sein.
  • Der Betrieb des Timers, der die Lebensdauer der Nachricht ermittelt, kann auf verschiedene Arten erfolgen. Zum Beispiel wird der Timer in einem Ausführungsbeispiel anfangs bei Empfang des ersten Paketes einer Nachricht gesetzt. Es ist zu beachten, dass dieses erste Paket nicht unbedingt das erste sequentielle Paket in der Nachricht sein muss. Es ist lediglich das erste Paket, das von einem jeweiligen Empfänger empfangen wird, und zwar unabhängig von der Paketfolgenummer. Der Wert an dem Timer kann auf eine bestimmte Zeitspanne so eingestellt werden, dass wenn die Nachricht nicht innerhalb dieser jeweiligen Zeitspanne empfangen wird, die Nachricht gelöscht wird. Alternativ dazu kann der Timer auf einen kleineren Wert gesetzt werden, der die Zeitspanne, bevor das nächste Paket erwartet wird, darstellt. Wenn ein Paket innerhalb der vorgesehen Zeitspanne empfangen wird, wird der Timerwert zurückgesetzt. Im anderen Falle wird die Nachricht gelöscht. Bei dem ersten Verfahren stellt der Timerwert einfach die größte Zeit dar, in der eine gegebene Nachricht empfangen werden kann. Bei einem zweiten Ansatz kann die Zeit in der Hoffnung, dass ein weiteres Paket empfangen werden wird, verlängert werden, solange Pakete empfangen werden. In einem anderen Ausführungsbeispiel können Kombinationen dieser beiden Ansätze genutzt werden. Mit anderen Worten: solange Pakete empfangen werden, kann der Timer zurückgesetzt werden, jedoch darf die Gesamtzeit dabei nicht einen bestimmten Maximalwert überschreiten. Dieser Ansatz kann mit einem Timer oder mit zwei Timern implementiert werden. Wie der Nachrichtenlebensdauer-Timer verwaltet wird, wird von verschiedenen Auslegungsmöglichkeiten abhängen.
  • Wenn eine Nachricht vollständig empfangen worden ist, kann der Empfänger 148 eine Marke für Nachricht vollständig empfangen in der jeweiligen Nachrichtenliste 150 setzen. Dies kann ein Signal an eine andere Komponente, wie zum Beispiel einen Handler 160, sein, dass die Nachricht vollständig empfangen worden ist und an die jeweilige Anwendung übertragen werden soll, wie zum Beispiel an die Anwendung 142. Somit ist der Handler 160 in 8 ein Beispiel einer Einrichtung zum Übertragen einer empfangenen Nachricht an das jeweilige Ziel. Alternativ dazu kann ein Signal einfach an die jeweilige Anwendung gesendet werden, die sodann die Nachricht direkt von dem Nachrichten-Zwischenspeicher abruft.
  • Es ist zu beachten, dass das Protokoll der vorliegenden Erfindung die Rücksendung von Antworten an das sendende System 104 vorsieht. Somit ist es möglich, das nachdem eine Nachricht von der Anwendung 142 empfangen worden ist, sie die Übertragung einer Rückantwort an das sendende System 104 wünscht. Somit kann jeder Empfänger Mechanismen zur Übertragung der jeweiligen geeigneten Antwort umfassen. Solche Mechanismen können die bereits beschriebenen Strukturen nutzen, um Informationen in dem statistischen Zuverlässigkeitsmodus oder in dem sicheren Zuverlässigkeitsmodus, die nachstehend beschrieben werden, zu übertragen. Mit anderen Worten kann ein Empfänger nicht nur die in 8 veranschaulichten Strukturen umfassen, sondern auch die Strukturen und die Verarbeitung, die zu einem sendenden System gehören, wie sie zum Beispiel in den 6 und 7 beschrieben werden und wie sie in Verbindung mit sicherer Zuverlässigkeit unten beschrieben werden. Zu verschiedenen Zeiten kann ein beliebiges System in dem Netzwerk sowohl ein sendendes System als auch ein empfangendes System sein, und kann es somit geeignete Funktionalität umfassen, um diese Funktionen zu erfüllen.
  • Unter Bezugnahme auf 9 wird nun ein Fließbild gezeigt, das die Verarbeitungsschritte zeigt, die von einem Ausführungsbeispiel eines empfangenden Systems ergriffen werden, um eine Nachricht zu empfangen und um sie an eine Anwendung zu übergeben. In 9 wurden die Funktionen nicht gemäß den in 8 veranschaulichten Elementen (zum Beispiel Empfänger 148, Timer für negative Quittung 152, Nachrichtenlebensdauer-Timer 158 und Nachrichtenhandler 160) getrennt. Die Betonung liegt vielmehr darauf, wie die in die Elemente integrierte Funktionalität durchgeführt und erfüllt wird. Bei der Diskussion von 9 wird jedoch eine mögliche Zuordnung der Funktionalität vorgestellt werden.
  • Am Anfang bei Schritt 162 werden Prüfungen hinsichtlich des Ablaufes der drei relevanten Timer für eine jeweilige Nachricht durchgeführt, wenn diese arbeiten. Und zwar, ob der Warte-Timer für negative Quittung an dem Schritt 164, der Empfang-Warte-Timer an dem Schritt 168 und der Nachrichtenlebensdauer-Timer an dem Schritt 170 abgelaufen sind. Wie in Verbindung mit 8 bereits erläutert wurde, kann die Überprüfung an dem Warte-Timer für negative Quittung durch den Timer für negative Quittung 152 durchgeführt werden, wohingegen die Überprüfungen an dem Empfang-Warte-Timer und an dem Nachrichtenlebensdauer-Timer durch den Nachrichtenlebensdauer-Timer 158 durchgeführt werden können.
  • Wenn der Warte-Timer für negative Quittung (NAK) an dem Schritt 164 abgelaufen ist, wird eine negative Quittung für das jeweilige Paket an dem Schritt 172 gesendet. Wie bereits erläutert worden ist, arbeitet der Warte-Timer für negative Quittung so, dass er mehrere negative Quittungen (NAKs) für das gleiche Paket, das von unterschiedlichen Systemen kommt, staffelt. Dies reduziert die Netzwerkverstopfung und die Gesamtzahl der NAKs. Wenn der Empfang-Warte-Timer an dem Schritt 168 abläuft, deutet dies an, dass ein Paket „überfällig" ist und unerwartet verspätet ist. Der Warte-Timer für negative Quittung wird an dem Schritt 194 gestartet werden und wenn das Paket nicht vor dem Ablauf des Warte-Timers für negative Quittung durch die ursprüngliche Übertragung oder die erneute Übertragung empfangen wird, wird schließlich eine NAK gesendet. Der Wert des Warte-Timers für negative Quittung kann mit einer geeigneten Wahrscheinlichkeitsdichtefunktion ausgewählt werden, wie dies bereits beschrieben worden ist. Wenn der Nachrichtenlebensdauer-Timer an dem Schritt 170 abläuft, ist zu viel Zeit zum Empfangen aller Pakete vergangen, um die Nachricht zusammenzusetzen, wodurch ein Fehler angezeigt wird, dass ein Fehler irgendeiner Art aufgetreten ist. Es kann Umstände geben, unter denen ein Paket trotz des wiederholten Sendens von negativen Quittungen (NAKs) niemals an das empfangende System übergeben wird. Die Fehleranzeige wird an dem Schritt 174 bearbeitet, bevor die Verarbeitung wieder nach oben zurückgeht, um die Ankunft weiterer Pakete oder den Ablauf des Timers abzuwarten. Wie bereits erwähnt wurde, umfasst die Fehlerhandhabung normalerweise das Löschen aller teilweise empfangenen Nachrichten, jedoch kann sie auch solche Handlungen umfassen, wie zum Beispiel das Senden von Benachrichtigungen des fehlgeschlagenen Empfanges an eine Fehler-Protokollierungseinrichtung oder eine andere geeignete Entität.
  • An dem Schritt 178 wartet das empfangende System auf Pakete sowie auf den Ablauf von Timern (wie durch das gestrichelte Kästchen 166 angedeutet wird). Wenn Pakete an dem Schritt 178 empfangen werden, werden sie in einen Zwischenspeicher platziert, wie zum Beispiel die Nachrichtenempfangsliste 150 von 8, um die eigentliche Datennachricht an dem Schritt 180 erneut zusammenzusetzen. Wenn dieses Paket das erste empfangene Paket für eine neue Nachricht ist (unabhängig von der Paketfolgenummer), wie an dem Entscheidungsblock 182 bestimmt wird, wird der Nachrichtenle bensdauer-Timer an dem Schritt 184 gestartet. Der Empfang und das Platzieren von Paketen in einem geeigneten Zwischenspeicher kann von dem Empfänger 148 aus 8 durchgeführt werden. Das Setzen des Nachrichtenlebensdauer-Timers in den Schritten 182 und 184 kann entweder durch den Empfänger 148 oder den Nachrichtenlebensdauer-Timer 158 aus 8 durchgeführt werden, in Abhängigkeit von der konkreten Implementierung.
  • Da ein Paket soeben empfangen worden ist, wird der Empfang-Warte-Timer an dem Schritt 186 gesetzt/zurückgesetzt. Wie bereits erläutert worden ist, lässt der Empfang-Warte-Timer eine Zeitspanne zu, innerhalb derer Pakete von den sendenden System erwartet werden, nachdem eine Nachricht gestartet worden ist. Diese Zeitspanne kann in Bezug zu dem Dosierungsalgorithmus gesetzt werden, so dass die beiden zusammenwirken, um überzählige negative Quittungen zu vermeiden, die auftreten können, wenn die Netzwerkleistung bereits in einem Maß verschlechtert ist, dass der Dosierungsalgorithmus die Zeiten zwischen den Paketen streckt, die den Wert des Empfang-Warte-Timer überschreiten. Dies kann ebenfalls entweder durch den Empfänger 148 oder durch den Nachrichtenlebensdauer-Timer 158 durchgeführt werden, jeweils in Abhängigkeit von der Implementierung. Wenn der Empfang des Paketes die Notwendigkeit des Sendens einer negativen Quittung eliminiert hat, wird auch der jeweilige Warte-Timer für negative Quittung an dem Schritt 186 gelöscht.
  • An dem Entscheidungsblock 188 bestimmt das empfangende System, ob das Paket außerhalb der sequentiellen Reihenfolge liegt. Wenn dies nicht der Fall ist, wird an dem Entscheidungsblock 190 eine Entscheidung getroffen, ob die Nachricht abgeschlossen ist. Wenn die Nachricht nicht abgeschlossen ist, kehrt die Verarbeitung zum Warten auf den Ablauf von Timern und auf die Ankunft weiterer Pakete zurück. Im anderen Falle wird die abgeschlossene Nachricht, nachdem die Nachricht gemäß Entscheidung an dem Entscheidungsblock 190 vollständig ist, an dem Schritt 192 zu der Anwendung weitergeleitet, bevor die Verarbeitung nach oben zurückkehrt, um die Ankunft weiterer Pakete oder den Ablauf eines Timers abzuwarten. Die Überprüfung auf außerhalb der Reihenfolge liegende Pakete an dem Entscheidungsblock 188 wird von dem Empfänger 148 durchgeführt, während die Überprüfung auf Vollständigkeit der Nachricht entweder durch den Empfänger 148 oder durch den Nachrichtenhandler 160 durchgeführt werden kann. Wenn die Nachricht zum Beispiel vollständig ist, kann der Empfänger 148 die Marke für vollständige Nachricht setzen, die dem Nachrichtenhandler signalisiert, die Nachricht an die Anwendung weiterzuleiten.
  • Wenn ein Paket gemäß Entscheidung an dem Entscheidungsblock 188 „übersprungen" worden ist, kann es möglich sein, dass das Paket verloren gegangen oder ausgelassen worden ist, wodurch das Senden einer negativen Quittung erforderlich wird. Aus diesem Grund wird der Warte-Timer für negative Quittung an dem Schritt 194 wie bereits beschrieben für das übersprungene Paket gesetzt.
  • Wenngleich das Ausführungsbeispiel in 9 separate Warte-Timer und Warte-Timer für negative Quittung verwendet, kann die Wirkung der beiden Timer erzielt werden, indem lediglich Warte-Timer für negative Quittung verwendet werden. Dies kann veranschaulicht werden, indem die Wirkung der Empfang-Warte-Timer in 9 überprüft wird. Die Empfang-Warte-Timer fügen eine feste Wartezeit zu dem Warte-Timer für negative Quittung hinzu, wenn ein erwartetes Paket nicht eintrifft. Die gleiche Wirkung kann erzielt werden, indem ein Warte-Timer für negative Quittung jedes Mal gesetzt wird, wenn ein Paket empfangen wird, wenn der Warte-Timer für negative Quittung einen Minimalwert gleich der gewünschten Wartezeit zuzüglich dem regulären Minimalwert des Warte-Timers für negative Quittung hat. Wenn ein Paket außerhalb der Reihenfolge empfangen wird, wird der Warte-Timer für negative Quittung dennoch mit dem regulären Mindestwert des Warte-Timers für negative Quittung gesetzt.
  • In bestimmten Situationen reicht die Zuverlässigkeit, die durch den statistischen Zuverlässigkeitsmodus der vorliegenden Erfindung bereitgestellt wird, nicht aus, und absolute Zugerlässigkeit ist erforderlich. In einer solchen Situation kann die vorliegende Erfindung in einem sicheren Zuverlässigkeitsmodus arbeiten. Der sichere Zuverlässigkeitsmodus fügt zusätzliche Verarbeitungsschritte und Funktionalität zu dem grundlegenden statistischen Zuverlässigkeitsmodus hinzu, um den Empfang der Nachricht durch einen jeden vorgesehenen Empfänger, der in der Lage ist, Nachrichtenpakete zu empfangen, zu garantieren. Der sichere Zuverlässigkeitsmodus ist in der Lage, alle vorgesehenen Empfänger zu identifizieren, die die Nachricht nicht empfangen haben, so dass eine erneute Übertragung an diese vorgesehenen Empfänger erwirkt werden kann. Die folgende Diskussion konzentriert sich auf den sicheren Zuverlässigkeitsmodus der vorliegenden Erfindung. Es ist zu beachten, dass Ausführungsbeispiele innerhalb des Erfindungsgedan kens der vorliegenden Erfindung zwischen dem sicheren Zuverlässigkeitsmodus und dem statistischen Zuverlässigkeitsmodus fallweise von Nachricht zu Nachricht durch eine Anwendung oder von Sender zu Sender oder von Standort zu Standort durch Systemverwaltungen umschalten können. Somit werden Ausführungsbeispiele benötigt, bei denen es wünschenswert ist, sowohl den statistischen Zuverlässigkeitsmodus als auch den sicheren Zuverlässigkeitsmodus als zusätzliche Funktionalität zu integrieren.
  • Übertragung in dem sicheren Zuverlässigkeitsmodus führt die Verarbeitung weitgehend wie in Verbindung mit dem statistischen Zuverlässigkeitsmodus beschrieben durch, jedoch mit einigen wichtigen Ergänzungen. Im Grunde genommen baut das sendende System eine Übertragungsliste (TList) aller vorgesehenen Empfänger auf. Die zu übertragende Nachricht wird sodann für die Übertragung in Pakete aufgebrochen, wobei zusätzliche Pakete hinzugefügt werden, um wie bereits beschrieben die erforderliche Mindestanzahl zu erreichen. Um eine positive Rückmeldung in Bezug auf den Empfang von Paketen durch jeweilige vorgesehene Empfänger bereitzustellen, wird eine Marke einmal aller N Pakete gesetzt, die eine Quittierung des Empfanges des betreffenden Paketes anfordert. Die Anzahl von Paketen zwischen Paketen, an denen die Quittierungsanforderungsmarke gesetzt ist, wird als das Quittungs-Fenster (ACK-Fenster) oder das Übertragungsfenster bezeichnet. Bei dieser Anwendung werden diese beiden Begriffe gegenseitig austauschbar verwendet. Wenn Pakete von einem vorgesehenen Empfänger empfangen werden, wenn die Quittungs/ACK-Anforderungsmarke gesetzt ist, wird eine Quittung (ACK) an das sendende System zurück gesendet. Fehlende Pakete werden unter Verwendung der bereits beschriebenen Verfahrensweise für negative Quittung (NAK) bearbeitet. Das sendende System hört nach Quittungen (ACKs) und negativen Quittungen (NAKs) ab und verfolgt, welche Systeme sicher alle Pakete quittiert haben, die eine gesetzte ACK-Anforderungsmarke haben. Wenn das endende System nicht quittierte Pakete findet, werden die betreffenden Pakete erneut an die Systeme gesendet, die keine Quittung zurück gesendet haben. Das sendende System verarbeitet empfangene negative Quittungen wie weiter oben bereits beschrieben.
  • Unter Bezugnahme auf 10 wird ein strukturelles Diagramm eines Ausführungsbeispiels vorgestellt, das den sicheren Zuverlässigkeitsmodus implementiert. Es ist zu beachten, dass eine große Ähnlichkeit zwischen 10 und 6 besteht. Weiterhin arbeiten der Sender 108 und der Empfänger für negative Quittung 118 im Wesentlichen wie weiter oben in 6 beschrieben. Alle Änderungen werden unten angemerkt. Die durch den sicheren Zuverlässigkeitsmodus hinzugefügte zusätzliche Funktionalität wird in 10 durch die schattierten Blöcke angedeutet. Die Funktionsblöcke von 10 können unter Verwendung separater Threads oder auf andere Weise implementiert werden.
  • In 10 umfasst das sendende System 196 eine Vielzahl von Funktionseinheiten. Eine Nachricht 106, die von einer Anwendung oder von einer anderen Quelle empfangen wird, wird von dem Sender 108 in die erforderliche Anzahl von Übertragungspaketen aufgebrochen. Wie oben bereits beschrieben wurde, werden zusätzliche Pakete hinzugefügt, bis die erforderliche Mindestanzahl erreicht ist, wenn die Anzahl von Paketen kleiner ist als das erforderliche Minimum. Der Sender 108 überträgt danach die Pakete 110 über das Netzwerk 112 an die vorgesehenen Empfänger 114. Der Sender 108 kann die bereits weiter oben beschriebenen Dosierungsmethodologien nutzen. Empfänger, die wenigstens ein Paket, jedoch weniger als alle Pakete der Nachricht empfangen, erzeugen danach eine negative Quittung (NAK), wie zum Beispiel die negative Quittung 116, wodurch die erneute Übertragung der ausgelassenen Pakete angefordert wird. Die NAK 116 wird durch den Empfänger für negative Quittung 118 empfangen und als Antwort darauf wird das betreffende Paket 120 erneut übertragen. Alle Schritte können wie weiter oben bereits beschrieben auftreten.
  • In dem sicheren Zuverlässigkeitsmodus wird der Betrieb des Senders 108 etwas abgeändert, um etwas abweichende Pakete zur Übertragung an die Empfänger zu erzeugen. Wie in Verbindung mit dem statistischen Zuverlässigkeitsmodus weiter oben bereits beschrieben wurde, werden die Pakete sequentiell nummeriert, beginnend mit eins. Zusätzlich jedoch wird die Quittungs-Anforderungs-Marke an jedem n-ten Paket gesetzt. Wie in Tabelle 3 bereits beschrieben wurde, erzeugt der Empfänger eine Quittung oder ACK und überträgt die ACK zurück zu dem sendenden System, wenn die ACK-Anforderungs-Marke gesetzt ist. Die Anzahl von Paketen zwischen Paketen mit gesetzter ACK-Anforderungs-Marke wird als das Übertragungsfenster oder ACK-Fenster bezeichnet. Dieses lässt das sendende System 196 mit Sicherheit wissen, dass alle Pakete des ACK-Fensters empfangen worden sind. Weiterhin ist bei dem letzten Paket die ACK-Anforderungs-Marke gesetzt, wenn der sichere Zuverlässigkeitsmodus genutzt wird.
  • Vor der Übertragung wird eine Übertragungsliste oder TList erzeugt, die die für die Nachricht vorgesehenen Empfänger umfasst. In 10 wird dies durch die Übertragungsliste 198 veranschaulicht. Die Übertragungsliste 198 ist ein Beispiel einer Einrichtung zum Verfolgen des Empfanges von Nachrichten durch vorgesehene Empfänger. In einem Ausführungsbeispiel wird eine Übertragungsliste für jede Nachricht erzeugt, die in dem sicheren Zuverlässigkeitsmodus gesendet wird. In einem Ausführungsbeispiel umfasst die Übertragungsliste die Nachrichtennummer, eine Hinweismarke auf den Beginn des Nachrichtenzwischenspeichers sowie für jeden Empfänger die UDP-Adresse des Empfängers, ein Übertragungslisten-Antwortbit, ein Übertragungsfenster-Bitmap sowie einen Zeitstempel der zuletzt empfangenen Quittung (ACK) bzw. negativen Quittung (NAK). Wie dies auch bei anderen hierin beschriebenen Adressen der Fall ist, kann die UDP-Adresse eines jeden Empfängers aus einer IP-Adresse und einer UDP-Portnummer bestehen. Das Übertragungslisten-Antwortbit wird auf wahr gesetzt, wenn die Nachricht eine Nachricht der Art ist, bei der eine Antwort angefordert wird und die Antwort vollständig empfangen worden ist. Das Übertragungsfenster-Bitmap enthält ein Quittungsbit und einen ACK/NAK-Zeitstempel für jedes Übertragungsfenster in der Nachricht. Die Übertragungsliste 198 kann von dem Sender 108 erstellt werden oder aber von anderen Komponenten in dem System.
  • Wenn Empfänger 114 ein Paket mit gesetzter Quittungs-Anforderungs-Marke empfangen, erzeugen die Empfänger 114 die Quittung (ACK) 198 und senden sie an das sendende System 196. Ausführungsbeispiele innerhalb des Erfindungsbereiches der vorliegenden Erfindung können daher Einrichtungen zum Empfangen von Quittungen umfassen. Beispielhaft und nicht einschränkend werden solche Einrichtungen durch den Quittungs-Empfänger 200 veranschaulicht. Der Quittungs-Empfänger 200 empfängt die Quittung 198 und aktualisiert die Übertragungsliste 198 gemäß der empfangenen Quittungen. Mit anderen Worten: wenn eine Quittung empfangen wird, wird der Quittungs-Empfänger 200 das Übertragungsfenster-Bitmap aktualisieren, indem er das jeweilige Quittungsbit und den ACK/NAK-Zeitstempel setzt. Weiterhin wird der Quittungs-Empfänger 200 das Feld aktualisieren, das den Zeitstempel der jüngsten ACK oder NAK verfolgt. Der Quittungs-Empfänger 200 ist daher ebenfalls ein Beispiel einer Einrichtung zum Aktualisieren der Übertragungsliste.
  • Der Zweck des Verfolgens empfangener Quittungen besteht in der Identifizierung vorgesehener Empfänger, die das Paket mit der Quittungsanforderung nicht empfangen haben. In Abständen kann die Übertragungsliste 198 überprüft werden und vorgesehene Empfänger, die jeweilige Pakete nicht quittiert haben, können identifiziert werden. Die jeweiligen Pakete können sodann erneut an die vorgesehenen Empfänger übertragen werden. Ausführungsbeispiele im Erfindungsbereich der vorliegenden Erfindung können daher Einrichtungen zum Identifizieren von Empfängern, die den Empfang von Paketen nicht quittiert haben, und Einrichtungen zum erneuten Übertragen von Paketen umfassen. Beispielhaft und nicht beschränkend werden beide genannten Einrichtungen in 10 durch den Sende-Verifizierer 202 veranschaulicht. Der Sende-Verifizierer 202 tastet die Übertragungsliste 198 nach Einträgen in den Übertragungsfenster-Bitmaps ab, die einen auf Null gesetzten Zeitstempel ACK/NAK haben. Wenn ein nicht quittiertes Übertragungsfenster festgestellt wird, wird das mit Quittungsanforderung versehene Paket des Übertragungsfensters (das letzte Paket in dem Fenster) an die UDP-Adresse des vorgesehenen Empfängers übertragen.
  • Verschiedene Vorgaben, wie oft der Sende-Verifizierer 202 die Übertragungsliste 198 abtastet, können eingerichtet werden. Zum Beispiel beginnt der Sende-Verifizierer 202 in einem Ausführungsbeispiel das Abtasten der Übertragungsliste 198, nachdem eine ausreichende Zeit vergangen ist, dass eine Quittung zurück erwartet werden kann. Diese Verzögerung wird normalerweise auf der Grundlage der zu erwartenden Ausbreitungsverzögerung in dem Netzwerk eingestellt, der Zeig, die benötigt wird, um empfangene Pakete an dem empfangenden System zu verarbeiten, und der Verzögerungszeit für die Rücksendung der Quittung an das sendende System. Da die Quittungs-Anforderungs-Marke nur einmal für jedes Übertragungsfenster gesetzt wird, kann es zusätzlich wünschenswert sein, wenigstens eine Verzögerung entsprechend einem Übertragungsfenster zu dem erwarteten Wert hinzuzugeben. Weiterhin kann es wünschenswert sein, den laufenden Dosierungsausgang zu berücksichtigen, da er die Übertragungsgeschwindigkeit der Pakete beeinflusst. Sobald der Sende-Verifizierer-Thread die Übertagungsliste 198 abtastet, muss er die Liste in regelmäßigen Abständen erneut abtasten. In einem Ausführungsbeispiel wird die Übertragungsliste 198 mit einer Häufigkeit von einem Halben der erwarteten Quittungs-Verzögerungszeit abgetastet.
  • Da die Informationen in der Übertragungsliste 198 nur erforderlich sind, bis der Empfang einer Nachricht sichergestellt ist, können Ausführungsbeispiele im Erfindungsbereich der vorliegenden Erfindung Einrichtungen zum Freigeben von Speicherplatz, der von der Übertragungsliste 198 nicht mehr benötigt wird, umfassen. In 10 werden solche Einrichtungen beispielhaft durch die Speicherrückgabe 204 veranschaulicht. Wenn ein Übertragungsfenster von allen Empfängern vollständig quittiert worden ist, kann der Speicherplatz, der sowohl für diesen Abschnitt des Nachrichtenzwischenspeichers und den Eintrag in der Übertragungsliste für das Übertragungsfenster genutzt wird, frei gegeben werden. Mit anderen Worten: wenn die entsprechenden Quittungsbits in dem Übertragungsfenster-Bitmap für alle IP-Adressen, die als die Nachricht empfangen habend identifiziert werden, gesetzt worden sind, kann der Speicherplatz, der das Übertragungsfenster enthält, freigegeben werden, und die Hinweismarke auf den Nachrichtenzwischenspeicher kann angepasst werden. Nachdem die Nachricht von allen vorgesehenen Empfängern vollständig empfangen worden ist, kann die Übertragungsliste verworfen werden. Verschiedene Ausführungsbeispiele der vorliegenden Erfindung können andere Vorgaben für das Auslösen des Abtastens durch die Speicherrückgabe 204 nutzen. In einem Ausführungsbeispiel läuft die Speicherrückgabe 204 mit dem gleichen Zeitplan wir der Sende-Verifizierer 202. In anderen Ausführungsbeispielen können unterschiedliche Zeitpläne genutzt werden.
  • Unter Bezugnahme auf die 11A und 11B wird ein Fließbild gezeigt, das die Verarbeitungsschritte darstellt, die von dem sendenden System gemäß der vorliegenden Erfindung eingeleitet werden, um eine Nachricht an ein empfangendes System zu senden. Nach dem Beginn an dem Schritt 206 von 11A wird das sendende System an dem Schritt 208 eine Übertragungsliste oder TList erstellen, so dass der Quittungsstatus für alle empfangenden Systeme verfolgt werden kann. Wie weiter oben bereits beschrieben, wird eine Verfolgungsliste für jede übertragene Nachricht erstellt. Die Verfolgungsliste kann Informationen, wie zum Beispiel die Nachrichtennummer, eine Hinweismarke auf den Nachrichtenzwischenspeicher und für jeden Empfänger die UDP-Adresse des Empfängers, ein Übertragungslisten-Antwortbit, ein Übertragungsfenster-Bitmap sowie den Zeitstempel der zuletzt empfangenen Quittung oder negativen Quittung, umfassen.
  • An dem Schritt 124 wird die Nachricht in die erforderliche Mindestanzahl von Übertragungspaketen für die gewünschte Zuverlässigkeit aufgeteilt. Dies geschieht wie weiter oben bereits beschrieben, wobei zusätzliche Pakete hinzugefügt werden, um auf die Mindestanzahl von Paketen zu kommen, wenn dies gefordert ist. Diese Füllpakete, die nicht notwendigerweise Daten enthalten müssen, werden genutzt, um die Vollständigkeit der Nachricht an dem empfangenden System festzustellen. An dem letzten Paket wird die Marke für Letztes Paket gesetzt sein, und jedes Paket wird eine eindeutige sequentielle Paketnummer aufweisen.
  • Nachdem die Pakete erstellt sind, wird das sendende System die Quittungs-Anforderungs-Marke für jedes n-te Paket setzen. Das Intervall N von Paketen wird ausgehend von der gewünschten Zuverlässigkeit ausgewählt, wobei kleinere Zahlen größeren Netzwerkverkehr erzeugen, jedoch höhere Niveaus von Zuverlässigkeit erzeugen. Wenn somit die Quittungs-Anforderungs-Marke an jedem n-ten Paket gesetzt ist, ist ein Übertragungsfenster N Pakets lang.
  • Die Nachricht wird gesendet, indem jedes Paket auf dem IP-Netzwerk unter Verwendung der UDP-Multicasting-Einrichtung an dem Schritt 126 zu den vorgesehenen empfangenden Systemen gesendet wird. Die Pakete werden in dem veranschaulichenden Ausführungsbeispiel nicht alle auf einmal oder so rasch wie möglich gesendet. Sie können nach einem Dosierungsalgorithmus, wie er weiter oben beschrieben worden ist, gesendet werden. Wie bereits erläutert worden ist, reduziert der Dosierungsalgorithmus den Netzwerk-Overhead, da er auf die allgemeinen Netzwerk-Paketfehiertrends reagiert und Pakete in größeren Abständen sendet, wenn das Netzwerk auf einem niedrigeren Leistungsniveau läuft. Die Schritte 208, 124, 212 und 126 können von dem Sender 108 aus 10 ausgeführt werden.
  • An dem Schritt 128 wird das sendende System auf negative Quittungen von den empfangenden Systemen warten, so dass es ausgelassene Pakete erneut übertragen kann, sowie auf Quittungen von jedem empfangenden System für jedes n-te empfangene Paket. Das Abhören nach negativen Quittungen und das erneute Übertragen aller angeforderten Pakete können durch den Empfänger für negative Quittung 118 ausgeführt werden, wohingegen das Abhören auf Quittungen von dem Empfänger für Quittungen 200 ausgeführt werden kann. Um die Menge von Netzwerkverkehr, die durch erneute Über tragung verursacht wird, zu reduzieren, können Ausführungsbeispiele innerhalb des Erfindungsbereiches der vorliegenden Erfindung Einrichtungen zum Unterdrücken von Paketübertragung umfassen. Beispielhaft und nicht einschränkend werden solche Einrichtungen in 11A durch das Unterdrückungselement für erneute Übertragung 130 veranschaulicht. Das Unterdrückungselement für erneute Übertragung 130 reduziert doppelte erneute Übertragung des gleichen Paketes, wenn zwei negative Quittungen innerhalb einer vorgesehenen Zeitspanne für das gleiche Paket empfangen werden. An dem Entscheidungsblock 132 wird eine Überprüfung durchgeführt, um festrustellen, ob ein Unterdrückungs-Timer für dieses Paket läuft. Wen dies der Fall ist, wird die negative Quittung ignoriert, da eine erneute Übertragung bereits erfolgt ist und da das betreffende empfangende System das ausgelassene Paket bereits empfangen haben kann oder dieses in Kürze empfangen wird.
  • Wenn der Unterdrückungs-Timer nach Feststellung an dem Entscheidungsblock 132 nicht läuft, wird ein solcher für dieses Paket an dem Schritt 134 gestartet, und das Paket wird an dem Schritt 136 erneut übertragen, erneut unter Verwendung von UDP-Multicasting. Multicasting wird verwendet, so dass alle empfangenden Systeme, die das Paket zuvor gegebenenfalls ausgelassen haben, eine Möglichkeit haben, dieses zu empfangen. Wie weiter oben in Verbindung mit dem Unterdrückungselement für negative Quittung 130 aus 7 bereits beschrieben wurde, kann das Unterdrückungselement für negative Quittung 130 in Verbindung mit der Verarbeitung des empfangenden Systems arbeiten, die die Ist-Zahl erzeugter negativer Quittungen reduziert. Der Entscheidungsblock 132, Schritt 134, und Schritt 136 können durch den Empfänger für negative Quittung 118 aus 10 ausgeführt werden.
  • Wenn an dem Schritt 128 eine negative Quittung empfangen wird, wird das sendende System das entsprechende empfangende System an dem Schritt 222 in der TList als das entsprechende Paket bereits sicher empfangen habend markieren. Dies ist die TList-Aktualisierungsverarbeitung, die von dem Quittungs-Empfänger 200 aus 10, die bereits erläutert wurde, ausgeführt wird. In Abständen, wie in 11B gezeigt, wird das sendende System die TList abtasten, um empfangende Systeme festrustellen, die den Empfang jeweiliger Pakete quittiert haben sollten. Dies wird durch den Schritt 226 veranschaulicht. Für diejenigen, die den Empfang nicht ordnungsgemäß quittiert haben, wird das sendende System die jeweiligen Pakete an dem Schritt 228 erneut übertragen.
  • Die Schritte 226 und 228 können in dem Sende-Verifizierer 202 aus 10 implementiert werden.
  • Unter Bezugnahme auf 12 werden Details des empfangenden Systems, das zur Nutzung geeignet ist, wenn das sichere Zuverlässigkeitsprotokoll verwendet wird, vorgestellt. In 12 soll das sendende System 196 gemäß dem weiter oben beschriebenen sicheren Zuverlässigkeitsprotokoll arbeiten. Die neue Funktionalität, die in einem empfangenden System erforderlich ist, wenn es gemäß dem sicheren Zuverlässigkeitsprotokoll arbeitet, wird in 12 durch die schattierten Abschnitte veranschaulicht. Wie in 12 angedeutet wird, ist die einzige neue Funktionalität, die zu dem empfangenden System 234 hinzugefügt wird, der Quittungs-Sender 236. Wenn ein Paket empfangen wird, bei dem eine Quittungs-Anforderungs-Marke gesetzt ist, antwortet ein empfangendes System mit einer Quittung für das betreffende Paket. Somit können Ausführungsbeispiele im Erfindungsbereich der vorliegenden Erfindung Einrichtungen zum Senden einer Quittung bereitstellen. In 12 werden solche Einrichtungen zum Beispiel durch den Quittungs-Sender 236 veranschaulicht. Der Quittungs-Sender 236 ist dafür verantwortlich, sicherzustellen, dass eine Quittung jedes Mal gesendet wird, wenn ein Paket mit gesetzter Quittungs-Anforderungs-Marke empfangen wird. In dem in 12 veranschaulichten Ausführungsbeispiel kann der Quittungs-Sender 236 eine Benachrichtigung von dem Empfänger 148 empfangen, dass ein Paket mit gesetzter Quittungs-Anforderungs-Marke empfangen worden ist beziehungsweise der Quittungs-Sender 136 kann in regelmäßigen Abständen die Nachrichtenempfangslisten 150 abtasten, um jeweilige Pakete zu identifizieren. Mit Ausnahme dieses Unterschiedes arbeitet das empfangende System 234 wie weiter oben in Verbindung mit 8 beschrieben. Dies wird in 13 hervorgehoben, die ein Fließdiagramm enthält, das dem in 9 vorgestellten ähnelt und das die verschiedenen Verarbeitungsschritte für das empfangende System 234 veranschaulicht. Es ist zu beachten, dass der einzige Unterschied zwischen 13 und 9 der Entscheidungsblock 230 und der Schritt 232 sind, die detektieren, ob die Quittungs-Anforderungs-Marke für ein jeweiliges Paket gesetzt ist und die, wenn dies der Fall ist, eine jeweilige Quittung senden. Der Rest dieser Schritte wird daher an dieser Stelle nicht wiederholt werden.
  • Die vorliegende Erfindung kann in anderen konkreten Formen ausgeführt werden.
  • Die beschriebenen Ausführungsbeispiele sind in jeder Hinsicht als veranschaulichend und nicht als einschränkend anzusehen. Der Erfindungsbereich wird daher in den anhängenden Patentansprüchen und nicht in der vorstehenden Beschreibung verdeutlicht.

Claims (19)

  1. Verfahren zum Senden negativer Quittungen von einem empfangenden System zu einem sendenden System auf eine Weise, durch die keine Flut negativer Quittungen erzeugt wird, die die Leistung eines Netzwerks negativ beeinflussen kann, wobei das Netzwerk das sendende System umfasst, das zusammen mit wenigstens einem empfangenden System vernetzt ist, Datennachrichten, die eine Vielzahl von Übertragungspaketen umfassen, zwischen dem sendenden System und wenigstens einem empfangenden System übertragen werden und empfangende Systeme, die nicht wenigstens ein Übertragungspaket empfangen, negative Quittungen zu dem sendenden System senden, die erneutes Übertragen der ausgelassenen Übertragungspakete anfordern, wobei das Verfahren die folgenden Schritte umfasst: an einem empfangenden System Warten auf ein auslösendes Ereignis, das entweder wenigstens Empfang (178) eines Übertragungspaketes oder Ablauf (164) eines Warte-Timers für negative Quittung umfasst; bei dem auslösenden Ereignis des Empfangs eines Übertragungspaketes Durchführen wenigstes der folgenden Schritte: Prüfen des empfangenen Übertragungspaketes, um festzustellen (188), ob ein oder mehrere vorangehende Übertragungspakete ausgelassen worden sind; wenn ein oder mehrere vorangegangene Übertragungspakete ausgelassen worden sind, dann 1) Auswählen einer Wartezeit für negative Quittung gemäß einer Wahrscheinlichkeitsdichtefunktion, die zu kürzeren Wartezeiten und längeren Wartezeiten führt, wobei kürzere Wartezeiten eine Dauer haben, die geringer ist als die Dauer längerer Wartezeiten, und die Anzahl kürzerer Wartezeiten geringer ist als die Anzahl längerer Wartezeiten, und 2) Einstellen (194) eines Warte-Timers für negative Quittung für die mit dem Übertragungspaket verbundene Nachricht unter Verwendung der ausgewählten Wartezeit für negative Quittung; und bei dem auslösenden Ereignis des Ablaufs eines Warte-Timers für negative Quittung Senden (172) einer negativen Quittung zu dem Sendersystem, wenn das angeforderte Paket nicht empfangen worden ist, dadurch gekennzeichnet, dass die Wahrscheinlichkeitsdichtefunktion so eingestellt ist, dass die Mutmaßlichkeit des Auswählens einer kürzeren Wartezeit für negative Quittung zunimmt, wenn die Anzahl in dem Netzwerk ausgelassener Paketen zunimmt.
  2. Verfahren zum Übertragen negativer Quittungen nach Anspruch 1, wobei die Wahrscheinlichkeitsdichtefunktion auf einen Bereich zwischen einem Minimal- und einem Maximalwert begrenzt ist.
  3. Verfahren zum Übertragen negativer Quittungen nach Anspruch 2, wobei die Wahrscheinlichkeitsdichtefunktion einen recht scharfen Knick nahe dem Minimalwert hat, um einen definitiven Abschnitt für eine minimale Wartezeit zu erzeugen.
  4. Verfahren zum Übertragen negativer Quittungen nach Anspruch 1, wobei ein niedriges Wartezeit-Ende der Wahrscheinlichkeitsdichtefunktion auf Basis der Netzwerkgröße so eingestellt wird, dass, wenn die Netzwerkgröße zunimmt, die Gesamtzahl empfangender Systeme, die kürzere Wartezeiten auswählen, im Wesentlichen konstant bleibt.
  5. Verfahren zum Senden negativer Quittungen nach Anspruch 1, wobei die Wahrscheinlichkeitsdichtefunktion so ausgewählt wird, dass es sehr wahrscheinlich ist, dass sehr wenige Systeme eine kürzere Wartezeit für negative Quittung auswählen.
  6. Verfahren zum Übertragen negativer Quittungen nach Anspruch 1, wobei die Wartezeit für negative Quittung ausgewählt wird, indem wenigstens die folgenden Schritte durchgeführt werden: Erzeugen einer Pseudozufallszahl zwischen einem vorgegebenen Zufallszahl-Minimalwert und einem vorgegebenen Zufallszahl-Maximalwert; Multiplizieren der Pseudozufallszahl mit einer Verzerrungskurve (bias curve), um eine unskalierte Wartezeit mit einer Wahrscheinlichkeitsdichtefunktion zu erzeugen, die von der Verzerrungskurve abhängt; Skalieren der unskalierten Wartezeit, um eine skalierte Wartezeit zu schaffen, indem die unskalierte Wartezeit mit einem Skalierfaktor multipliziert wird; Erzeugen einer Wartezeit, die über einer minimalen Wartezeit liegt, indem die minimale Wartezeit zu der skalierten Wartezeit addiert wird, wenn die skalierte Wartezeit geringer ist als eine minimale Wartezeit, ansonsten Einstellen der Wartezeit so, dass sie der skalierten Wartezeit gleich ist; und Erzeugen einer ausgewählten Wartezeit durch Reduzieren der Wartezeit auf einen maximalen Wartezeit-Wert, wenn die Wartezeit über dem maximalen Wartezeit-Wert liegt, ansonsten Einstellen der ausgewählten Wartezeit so, dass sie der Wartezeit gleich ist.
  7. Verfahren zum Übertragen negativer Quittungen nach Anspruch 6, wobei der Skalierfaktor eine Funktion der Anzahl von Systemen in dem Netzwerk ist.
  8. Verfahren zum Übertragen negativer Quittungen nach Anspruch 7, wobei der Skalierfaktor eine Funktion der Paketverlustrate des Netzwerks ist.
  9. Verfahren zum Senden negativer Quittungen nach Anspruch 7, wobei die Verzerrungskurve die Form Y = Xn hat.
  10. Computerprogramm, das Computerprogramm-Mittel umfasst, die so eingerichtet sind, dass sie die folgenden Programmcodeschritte durchführen, wenn das Pragramm auf einem Computer in einem Netzwerk ausgeführt wird, das ein sendendes System umfasst, das zusammen mit wenigstens einem empfangenden System vernetzt ist, wobei Datennachrichten, die eine Vielzahl von Übertragungspaketen umfassen, zwischen dem sendenden System und wenigstens einem empfangenden System übertragen werden und empfangende Systeme, die nicht wenigstens ein Übertragungspaket empfangen, negative Quittungen zu dem sendenden System senden, die erneute Übertragung der ausgelassenen Übertragungspakete anfordern, wobei das Computerprogramm so eingerichtet ist, dass es ein Verfahren zum Übertragen negativer Quittungen von den empfangenden Systemen zu dem sendenden System so implementiert, dass keine Flut negativer Quittungen erzeugt wird, die die Leistung des Netzwerks nachteilig beeinflussen kann, wobei die Programmcodeschritte umfassen: an einem empfangenden System Warten auf ein auslösendes Ereignis, das entweder wenigstens Empfang eines Übertragungspaketes oder Ablauf eines Warte-Timers für negative Quittung umfasst; bei dem auslösenden Ereignis des Empfangs eines Übertragungspaketes Durchführen wenigstens der folgenden Schritte: Prüfen des empfangenen Übertragungspaketes, um festzustellen, ob ein oder mehrere vorangehende Übertragungspakete ausgelassen worden sind; wenn ein oder mehrere vorangehende Übertragungspakete ausgelassen worden sind, dann 1) Auswählen einer Wartezeit für negative Quittung gemäß einer Wahrscheinlichkeitsdichtefunktion, die zu kürzeren Wartezeiten und längeren Wartezeiten führt, wobei kürzere Wartezeiten eine Dauer haben, die geringer ist als die Dauer längerer Wartezeiten, und die Anzahl kürzerer Wartezeiten geringer ist als die Anzahl längerer Wartezeiten, und 2) Einstellen eines Warte-Timers für negative Quittung für die mit dem Übertragungspaket verbundene Nachricht unter Verwendung der ausgewählten Wartezeit für negative Quittung; und bei dem auslösenden Ereignis des Ablaufs eines Warte-Timers für negative Quittung Senden einer negativen Quittung zu dem Sendersystem, wenn das angeforderte Paket nicht empfangen worden ist, dadurch gekennzeichnet, dass die Wahrscheinlichkeitsdichtefunktion so eingestellt ist, dass die Mutmaßlichkeit des Auswählens einer kürzeren Wartezeit für negative Quittung zunimmt, wenn die Anzahl in dem Netzwerk ausgelassener Pakete zunimmt.
  11. Computerprogramm nach Anspruch 10, wobei die Wahrscheinlichkeitsdichtefunktion auf einen Bereich zwischen einem Minimal- und einem Maximalwert begrenzt ist.
  12. Computerprogramm nach Anspruch 11, wobei die Wahrscheinlichkeitsdichtefunktion einen recht scharten Knick nahe dem Minimalwert hat, um einen definitiven Abschnitt für eine minimale Wartezeit zu erzeugen.
  13. Computerprogramm nach Anspruch 10, wobei ein niedriges Wartezeit-Ende der Wahrscheinlichkeitsdichtefunktion auf Basis der Netzwerkgröße so eingestellt wird, dass, wenn die Netzwerkgröße zunimmt, die Gesamtzahl empfangender Systeme, die kürzere Wartezeiten auswählen, relativ konstant bleibt.
  14. Computerprogramm nach Anspruch 10, wobei die Wahrscheinlichkeitsdichtefunktion so ausgewählt wird, dass es sehr wahrscheinlich ist, dass sehr wenige Systeme eine kürzere Wartezeit für negative Quittung auswählen.
  15. Computerprogramm nach Anspruch 10, wobei die Wartezeit für negative Quittung ausgewählt wird, indem wenigstens die folgenden Schritte durchgeführt werden: Erzeugen einer Pseudozufallszahl zwischen einem vorgegebenen Zufallszahl-Minimalwert und einem vorgegebenen Zufallszahl-Maximalwert; Multiplizieren der Pseudozufallszahl mit einer Verzerrungskurve, um eine unskalierte Wartezeit mit einer Wahrscheinlichkeitsdichtefunktion zu erzeugen, die von der Verzerrungskurve abhängt; Skalieren der unskalierten Wartezeit, um eine skalierte Wartezeit zu schaffen, indem die unskalierte Wartezeit mit einem Skalierfaktor multipliziert wird; Erzeugen einer Wartezeit, die über einer minimalen Wartezeit liegt, indem die minimale Wartezeit zu der skalierten Wartezeit addiert wird, wenn die skalierte Wartezeit geringer ist als eine minimale Wartezeit, ansonsten Einstellen der Wartezeit so, dass sie der skalierten Wartezeit gleich ist; und Erzeugen einer ausgewählten Wartezeit durch Reduzieren der Wartezeit auf einen maximalen Wartezeit-Wert, wenn die Wartezeit über dem maximalen Wartezeit-Wert liegt, ansonsten Einstellen der ausgewählten Wartezeit so, dass sie der Wartezeit gleich ist.
  16. Computerprogramm nach Anspruch 15, wobei der Skalierfaktor eine Funktion der Anzahl von Systemen in dem Netzwerk ist.
  17. Computerprogramm nach Anspruch 15, wobei der Skalierfaktor eine Funktion der Paketverlustrate des Netzwerks ist.
  18. Computerprogramm nach Anspruch 15, wobei die Verzerrungskurve die Form Y = Xn hat.
  19. Computerprogramm nach einem der Ansprüche 10 bis 18, das in einem computerlesbaren Medium umgesetzt ist.
DE69930992T 1998-06-29 1999-06-28 Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen Expired - Lifetime DE69930992T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US106531 1998-06-29
US09/106,531 US6112323A (en) 1998-06-29 1998-06-29 Method and computer program product for efficiently and reliably sending small data messages from a sending system to a large number of receiving systems

Publications (2)

Publication Number Publication Date
DE69930992D1 DE69930992D1 (de) 2006-06-01
DE69930992T2 true DE69930992T2 (de) 2006-11-23

Family

ID=22311928

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69930992T Expired - Lifetime DE69930992T2 (de) 1998-06-29 1999-06-28 Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen

Country Status (4)

Country Link
US (1) US6112323A (de)
EP (1) EP0969622B1 (de)
AT (1) ATE324725T1 (de)
DE (1) DE69930992T2 (de)

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100302263B1 (ko) * 1997-03-25 2001-09-22 모리시타 요이찌 스트림 데이터 전송방법 및 시스템
JPH11220609A (ja) * 1998-01-30 1999-08-10 Brother Ind Ltd 画像形成装置、画像データ処理装置、及び記憶媒体
US6392993B1 (en) * 1998-06-29 2002-05-21 Microsoft Corporation Method and computer program product for efficiently and reliably sending small data messages from a sending system to a large number of receiving systems
KR100282403B1 (ko) * 1998-08-20 2001-02-15 서평원 이동통신 시스템에서 전파 회선 프로토콜의 프레임 전송 방법
JP3709289B2 (ja) * 1998-09-01 2005-10-26 株式会社日立製作所 データ再送を実行するデータ送受信装置及び並列プロセッサシステム
US6442613B1 (en) 1998-09-10 2002-08-27 International Business Machines Corporation Controlling the flow of information between senders and receivers across links being used as channels
US6693880B2 (en) * 1998-09-10 2004-02-17 International Business Machines Corporation System of controlling the flow of information between senders and receivers across links being used as channels
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
US6681254B1 (en) * 1998-09-10 2004-01-20 International Business Machines Corporation Method of controlling the flow of information between senders and receivers across links being used as channels
US7379901B1 (en) 1998-09-11 2008-05-27 Lv Partners, L.P. Accessing a vendor web site using personal account information retrieved from a credit card company web site
US6868433B1 (en) 1998-09-11 2005-03-15 L.V. Partners, L.P. Input device having positional and scanning capabilities
US6823388B1 (en) * 1998-09-11 2004-11-23 L.V. Parners, L.P. Method and apparatus for accessing a remote location with an optical reader having a programmable memory system
US6704864B1 (en) 1999-08-19 2004-03-09 L.V. Partners, L.P. Automatic configuration of equipment software
US7386600B1 (en) 1998-09-11 2008-06-10 Lv Partners, L.P. Launching a web site using a personal device
US6636896B1 (en) 1998-09-11 2003-10-21 Lv Partners, L.P. Method and apparatus for utilizing an audibly coded signal to conduct commerce over the internet
US7440993B1 (en) 1998-09-11 2008-10-21 Lv Partners, L.P. Method and apparatus for launching a web browser in response to scanning of product information
US8028036B1 (en) * 1998-09-11 2011-09-27 Rpx-Lv Acquisition Llc Launching a web site using a passive transponder
US6745234B1 (en) 1998-09-11 2004-06-01 Digital:Convergence Corporation Method and apparatus for accessing a remote location by scanning an optical code
US7191247B1 (en) 1998-09-11 2007-03-13 Lv Partners, Lp Method for connecting a wireless device to a remote location on a network
US7392945B1 (en) 1998-09-11 2008-07-01 Lv Partners, L.P. Portable scanner for enabling automatic commerce transactions
US6367045B1 (en) * 1999-07-01 2002-04-02 Telefonaktiebolaget Lm Ericsson (Publ) Bandwidth efficient acknowledgment/negative acknowledgment in a communication system using automatic repeat request (ARQ)
KR20000040467A (ko) * 1998-12-18 2000-07-05 서평원 네트워크의 데이터통신 제어방법
US6782490B2 (en) 1999-03-17 2004-08-24 At&T Corp. Network-based service for the repair of IP multicast sessions
US7102998B1 (en) * 1999-03-22 2006-09-05 Lucent Technologies Inc. Scaleable congestion control method for multicast communications over a data network
US6317434B1 (en) * 1999-04-14 2001-11-13 Verizon Laboratories Inc. Data link layer switch with multicast capability
US6501763B1 (en) * 1999-05-06 2002-12-31 At&T Corp. Network-based service for originator-initiated automatic repair of IP multicast sessions
US6859462B1 (en) * 1999-08-10 2005-02-22 Orative Corporation Minimization and optimization of overall data transfer connect time between handheld wireless communicating devices and remote machines
AU1065601A (en) * 1999-10-18 2001-04-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for the wireless transmission of loss sensitive data
US6543005B1 (en) * 1999-10-27 2003-04-01 Oracle Corporation Transmitting data reliably and efficiently
US6633919B1 (en) * 1999-11-18 2003-10-14 International Business Machines Corporation Method, system and program product for managing the flow of data between senders and receivers of a computing environment
WO2001060108A1 (en) * 2000-02-14 2001-08-16 Thomson Licensing S.A. Method for transmission of messages split over several packets
US6975656B1 (en) * 2000-03-29 2005-12-13 Microsoft Corporation Method and system for accurately calculating latency variation on an end-to-end path in a network
AUPQ712500A0 (en) * 2000-04-27 2000-05-18 Commonwealth Scientific And Industrial Research Organisation Telecommunications traffic regulator
WO2002017092A2 (en) * 2000-08-24 2002-02-28 Sun Microsystems, Inc. Message sequence numbers and their use in completing messages in memory
US6744765B1 (en) 2000-08-24 2004-06-01 Sun Microsystems, Inc. Mechanism for completing messages in memory
US6738923B1 (en) * 2000-09-07 2004-05-18 International Business Machines Corporation Network station adjustable fail-over time intervals for booting to backup servers when transport service is not available
US8516054B2 (en) * 2000-12-20 2013-08-20 Aurea Software, Inc. Message handling
JP4478390B2 (ja) * 2001-02-24 2010-06-09 インターナショナル・ビジネス・マシーンズ・コーポレーション クラス・ネットワーク経路指定
US6807578B2 (en) 2001-03-14 2004-10-19 International Business Machines Corporation Nack suppression for multicast protocols in mostly one-way networks
US7020457B2 (en) * 2001-05-31 2006-03-28 Orative Corporation System and method for proxy-enabling a wireless device to an existing IP-based service
US20020180798A1 (en) * 2001-05-31 2002-12-05 Poor Graham V. System and method for extending a wireless device platform to multiple applications
US7123933B2 (en) * 2001-05-31 2006-10-17 Orative Corporation System and method for remote application management of a wireless device
JP2002360937A (ja) * 2001-06-08 2002-12-17 Konami Computer Entertainment Osaka:Kk データ配信システム、データ配信サーバ及びビデオゲーム装置
EP1436935A2 (de) * 2001-07-10 2004-07-14 Koninklijke Philips Electronics N.V. Verfahren zur übertragung von datenpaketen
US8880709B2 (en) 2001-09-12 2014-11-04 Ericsson Television Inc. Method and system for scheduled streaming of best effort data
US6874113B2 (en) * 2001-09-17 2005-03-29 Interdigital Technology Corporation Radio resource control-service data unit reception
US6910080B2 (en) * 2001-11-06 2005-06-21 International Business Machines Corporation Communication efficiency and performance in an unreliable communication environment
US7013418B1 (en) * 2001-11-15 2006-03-14 Network Appliance, Inc. Method and apparatus for reliable delivery of status information for multiple sets of data units in a single packet
EP1449311B1 (de) 2001-11-16 2017-12-13 Koninklijke Philips N.V. Funkkommunikationssystem
EP1322058B1 (de) 2001-12-18 2014-05-14 Alcatel Lucent Automatische Wiederholungsaufforderung mit adaptiver Latenz
US7035258B2 (en) * 2001-12-27 2006-04-25 Microsoft Corporation Method and system for dynamically adjusting transmit and receive parameters for handling negative acknowledgments in reliable multicast
US7609639B2 (en) * 2002-02-07 2009-10-27 Motorola, Inc. Negative acknowledgment (NAK) suppression
AU2003230708A1 (en) * 2002-03-25 2003-10-13 Netli, Inc. System for fast recovery from losses for reliable data communication protocols
US20030195946A1 (en) * 2002-03-28 2003-10-16 Ping-Fai Yang Method and apparatus for reliable publishing and subscribing in an unreliable network
US20080222234A1 (en) * 2002-05-23 2008-09-11 Benoit Marchand Deployment and Scaling of Virtual Environments
US7305585B2 (en) * 2002-05-23 2007-12-04 Exludus Technologies Inc. Asynchronous and autonomous data replication
US20050060608A1 (en) * 2002-05-23 2005-03-17 Benoit Marchand Maximizing processor utilization and minimizing network bandwidth requirements in throughput compute clusters
US20050216910A1 (en) * 2002-05-23 2005-09-29 Benoit Marchand Increasing fault-tolerance and minimizing network bandwidth requirements in software installation modules
US20030225874A1 (en) * 2002-05-30 2003-12-04 International Business Machines Corporation Managing the sending of acknowledgments
US8301800B1 (en) 2002-07-02 2012-10-30 Actional Corporation Message processing for distributed computing environments
JP3799326B2 (ja) * 2002-12-02 2006-07-19 Necインフロンティア株式会社 パケット送信方式及びパケット受信方式
US7765281B1 (en) * 2003-03-10 2010-07-27 Motive, Inc. Large-scale targeted data distribution system
US7818679B2 (en) * 2004-04-20 2010-10-19 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US7409608B1 (en) * 2004-04-20 2008-08-05 Altera Corporation Pseudo-random wait-state and pseudo-random latency components
DE602004003933T2 (de) * 2004-08-06 2007-04-12 Matsushita Electric Industrial Co., Ltd., Kadoma Rückkopplungssteuerung für Multicast und Broadcast Dienste
US8191078B1 (en) 2005-03-22 2012-05-29 Progress Software Corporation Fault-tolerant messaging system and methods
CN1881908A (zh) * 2005-06-13 2006-12-20 华为技术有限公司 测量mpls网络性能参数的方法
US8301720B1 (en) 2005-07-18 2012-10-30 Progress Software Corporation Method and system to collect and communicate problem context in XML-based distributed applications
US7907966B1 (en) 2005-07-19 2011-03-15 Aol Inc. System and method for cross-platform applications on a wireless phone
US20070106804A1 (en) * 2005-11-10 2007-05-10 Iona Technologies Inc. Method and system for using message stamps for efficient data exchange
US20070130601A1 (en) * 2005-12-05 2007-06-07 Weiping Li Internet protocol (IP) television
US7710958B2 (en) 2006-01-20 2010-05-04 Iona Technologies Limited Method for recoverable message exchange independent of network protocols
US7680993B2 (en) * 2006-12-21 2010-03-16 Tandberg Television, Inc. Local digital asset storage management technique
US8276115B2 (en) * 2007-02-06 2012-09-25 Progress Software Corporation Automated construction and deployment of complex event processing applications and business activity monitoring dashboards
US8656350B2 (en) * 2007-02-06 2014-02-18 Software Ag Event-based process configuration
US9009234B2 (en) 2007-02-06 2015-04-14 Software Ag Complex event processing system having multiple redundant event processing engines
US8792512B2 (en) * 2007-06-07 2014-07-29 Intel Corporation Reliable message transport network
US20090089440A1 (en) * 2007-10-01 2009-04-02 Jonathan Chester Gathman Protocol for leasing sockets
FR2927749B1 (fr) * 2008-02-14 2010-12-17 Canon Kk Procede et dispositif de transmission de donnees, notamment video.
US8239720B2 (en) * 2008-06-19 2012-08-07 Microsoft Corporation Communication over plural channels with acknowledgment variability
US7817631B1 (en) 2008-07-09 2010-10-19 Google Inc. Network transfer protocol
US20110314506A1 (en) * 2008-08-07 2011-12-22 Broadcom Corporation Point to multi-point wireless video delivery
US8112542B2 (en) * 2008-08-07 2012-02-07 Broadcom Corporation Multicast digital video lost packet recovery
WO2010054062A2 (en) 2008-11-05 2010-05-14 Savvion Inc. Software with improved view of a business process
EP2184880A1 (de) 2008-11-07 2010-05-12 Thomson Licensing Verfahren zur Datenratenanpassung in der Multicast-Kommunikation
US8271106B2 (en) 2009-04-17 2012-09-18 Hospira, Inc. System and method for configuring a rule set for medical event management and responses
CN102484616B (zh) * 2010-06-16 2015-02-25 松下电器产业株式会社 发送终端及频带估计方法
JP2012014452A (ja) * 2010-06-30 2012-01-19 Fujitsu Ltd 情報処理装置、情報処理プログラム、情報処理方法
US8995630B1 (en) 2010-08-01 2015-03-31 Tulsa Holdings, Llc Telephony and applications communication in a non-mobile telephone system
US8594022B2 (en) 2010-11-03 2013-11-26 Samsung Electronics Co., Ltd. Method and apparatus for coding of HARQ-ACK transmission in TDD systems with downlink carrier aggregation
US9414105B2 (en) * 2011-02-14 2016-08-09 Blackfire Research Corporation Mobile source device media playback over rendering devices at lifestyle-determined locations
EP2769357B1 (de) 2011-10-21 2023-08-30 ICU Medical, Inc. Aktualisierungssystem für eine medizinische vorrichtung
AU2014225658B2 (en) 2013-03-06 2018-05-31 Icu Medical, Inc. Medical device communication method
WO2014155495A1 (ja) * 2013-03-25 2014-10-02 Nttエレクトロニクス株式会社 通信装置、受信装置、及び送信装置
EP3039596A4 (de) 2013-08-30 2017-04-12 Hospira, Inc. System und verfahren zur überwachung und verwaltung eines entfernten infusionsdosierungsplans
US10311972B2 (en) 2013-11-11 2019-06-04 Icu Medical, Inc. Medical device system performance index
AU2014353130B9 (en) 2013-11-19 2019-09-05 Icu Medical, Inc. Infusion pump automation system and method
MX362034B (es) 2014-02-26 2019-01-04 Landis & Gyr Innovations Inc Reconciliación de huecos de datos y eventos a través de redes que usan diferentes tecnologías de comunicación.
CA2945647C (en) 2014-04-30 2023-08-08 Hospira, Inc. Patient care system with conditional alarm forwarding
US9724470B2 (en) 2014-06-16 2017-08-08 Icu Medical, Inc. System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy
US9539383B2 (en) 2014-09-15 2017-01-10 Hospira, Inc. System and method that matches delayed infusion auto-programs with manually entered infusion programs and analyzes differences therein
US11329943B2 (en) 2014-12-17 2022-05-10 Google Llc Wireless network reliability over relatively low-power protocols
NZ750032A (en) 2016-07-14 2020-05-29 Icu Medical Inc Multi-communication path selection and security system for a medical device
US10297117B2 (en) * 2016-11-21 2019-05-21 Textspeak Corporation Notification terminal with text-to-speech amplifier
US11430305B2 (en) 2016-11-21 2022-08-30 Textspeak Corporation Notification terminal with text-to-speech amplifier
US9876612B1 (en) 2017-02-06 2018-01-23 Naveen Maveli Data bandwidth overhead reduction in a protocol based communication over a wide area network (WAN)
CN108199925B (zh) * 2018-01-30 2021-06-04 网宿科技股份有限公司 一种数据发送方法、接收方法及装置
NZ772135A (en) * 2018-07-17 2022-11-25 Icu Medical Inc Systems and methods for facilitating clinical messaging in a network environment
CA3106516C (en) 2018-07-17 2023-07-25 Icu Medical, Inc. Updating infusion pump drug libraries and operational software in a networked environment
US11152109B2 (en) * 2018-07-17 2021-10-19 Icu Medical, Inc. Detecting missing messages from clinical environment
CA3107315C (en) 2018-07-26 2023-01-03 Icu Medical, Inc. Drug library management system
US10692595B2 (en) 2018-07-26 2020-06-23 Icu Medical, Inc. Drug library dynamic version management
EP4005294A1 (de) * 2019-07-30 2022-06-01 Safran Passenger Innovations, LLC Systeme und verfahren zur intelligenten rundsendung zur multicast-kommunikation über ein ip-basiertes tdma-netzwerk
CN111770350B (zh) * 2020-06-23 2022-09-16 北京字节跳动网络技术有限公司 直播间消息拉取的方法、装置、计算机设备和存储介质
CN114928816B (zh) * 2022-04-24 2023-06-23 深圳数马电子技术有限公司 设备连接方法、系统、终端设备、检测装置和存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3754211A (en) * 1971-12-30 1973-08-21 Ibm Fast error recovery communication controller
US3824547A (en) * 1972-11-29 1974-07-16 Sigma Syst Inc Communications system with error detection and retransmission
US5701427A (en) * 1989-09-19 1997-12-23 Digital Equipment Corp. Information transfer arrangement for distributed computer system
JP2897711B2 (ja) * 1996-02-05 1999-05-31 日本電気株式会社 伝送制御システム

Also Published As

Publication number Publication date
EP0969622A2 (de) 2000-01-05
EP0969622B1 (de) 2006-04-26
EP0969622A3 (de) 2003-05-07
DE69930992D1 (de) 2006-06-01
ATE324725T1 (de) 2006-05-15
US6112323A (en) 2000-08-29

Similar Documents

Publication Publication Date Title
DE69930992T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE69931215T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE69935554T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und zuverlässigen Übertragen von kleinen Datennachrichten von einem Sendesystem zu einer grossen Anzahl von Empfangssystemen
DE69636201T2 (de) Methode zur Mehrfachaussendung in Netzwerken mit ARQ zur Vermeidung unnötiger Wiederholungsübertragungen
DE60031263T2 (de) Umhüllungsverfahren für protokolldateneinheiten
DE60307032T2 (de) Steuerungs-Verfahren und -Vorrichtung zur Datenübertragung
DE60114097T2 (de) Verfahren und System zur Verbesserung der Netzleistungsfähigkeit unter Verwendung eines leistungssteigernden Proxies
DE19983404B4 (de) Verfahren und Vorrichtung zur Verwendung bei der Einstellung eines TCP Gleitfensters
DE69735740T2 (de) Asynchrone paketvermittlung
DE69922180T2 (de) Verfahren und Vorrichtung zur Datenflusssteuerung
DE60113906T2 (de) Verfahren und Vorrichtung zur Paketübertragung mit Paketenkopfkompression
DE60211322T2 (de) Empfängerinitiierte Inkrementierung der Übertragungsrate
DE602005001815T2 (de) Verfahren zur effizienten Mehrfachverbreitung von Inhalten in einem Peer-to-peer Netzwerk
DE60023019T2 (de) Verfahren und system zur ablösung oder regeneration von quittierungspaketen in adsl kommunikationen
DE60111551T2 (de) Mechanismus zur vervollständigung von nachrichten im speicher
DE60020413T2 (de) Verfahren und Einrichtung zur Bestimmung eines Zeit-Parameters
DE602004007329T2 (de) Zuverlässiges Multimedia Streaming mit wiederholten Übertragungen
DE60036218T2 (de) Verbindungsschichtquittierung und wiederübertragung für ein zellulares telekommunikationssystem
DE60317837T2 (de) Verfahren und System zur Messung von Last und Kapazität auf einem Kanal mit variabler Kapazität
DE60109959T2 (de) Verfahren um die effizienz eines datenstromes in einem kommunikationssystem zu erhöhen
DE69829203T2 (de) Paketnetzwerk
DE602004002086T2 (de) Verfahren und Apparat zur gemeinsamen dynamischen Verwaltung von Fensterlängen von mehreren ARQ-Datenverbindungen
DE19924922A1 (de) System und Verfahren für Nachrichtenübermittlung zwisfchen Netzwerkknoten, die durch parallele Verbindungen verbunden sind
DE102004016580B4 (de) Verfahren zur Übertragung von Daten in einem Ad Hoc Netzwerk oder einem Sensornetzwerk
DE112020006828T5 (de) Verbessern einer Ende-zu-Ende-Überlastungsreaktion unter Verwendung von adaptivem Routing und Überlastungshinweis-basierter Drosselung für IP-geroutete Rechenzentrumsnetzwerke

Legal Events

Date Code Title Description
8339 Ceased/non-payment of the annual fee
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition