-
Technisches
Gebiet
-
Die Erfindung betrifft Multicast-Protokolle
für Netzwerke.
-
Allgemeiner
Stand der Technik
-
Ein Computernetzwerk ist ein Mittel
zum Austausch oder Transfer von Informationen (z. B. Daten, Sprache,
Text, Video usw.) zwischen Hostmaschinen in dem Netzwerk. Das Netzwerk
umfaßt
Hostmaschinen, die durch ein Kommunikationssubnetz verbunden sind.
Das Subnetz umfaßt
Knoten (die auch als Vermittlungselemente bezeichnet werden), die
durch Strecken miteinander und mit den Hosts verbunden sind. Die Informationen,
die häufig
zweckmäßig zu Paketen
oder Zellen formatiert sind, werden zwischen einem Quellenhost (der
auch als eine „Quelle" bezeichnet wird)
und einem oder mehreren Empfangshosts (die auch als „Ziele" oder „Endpunkte" bezeichnet werden)
auf einem Weg durch Auswahl einer Menge von Strecken und Knoten
in dem Kommunikationssubnetz zur Bildung des Weges transferiert.
Siehe Andrew S. Tanenbaum, Computer Networks, Prentice-Hall, Inc.,
Englewood Cliffs, NJ, 1981.
-
Es gibt drei Arten von Entwürfen für das Kommunikationssubnetz:
1) Punkt-zu-Punkt-Subnetze, 2) Rundsende-Subnetze und 3) Multicast-Subnetze.
Bei einem Punkt-zu-Punkt-Subnetz müssen, wenn zwei Hosts kommunizieren
möchten,
aber keine sie direkt verbindende einzelne Strecke aufweisen, die
Hosts dann indirekt kommunizieren, d. h. über zwischengeschaltete Knoten.
In der Regel wird eine Übermittlung
an jedem zwischengeschalteten Knoten vollständig empfangen, in Puffern
in dem Knoten gespeichert, bis die nächste erforderliche Strecke
in dem Weg frei ist, und dann weitergeleitet. In einem Rundsende-Subnetz
werden durch einen beliebigen Host gesendete Informationen von allen anderen
Hosts empfangen. Die Informationen enthalten in der Regel eine Adresse,
die den Host angibt, für
den die Informationen bestimmt sind. Nach Empfang der Informationen
prüft jeder
Host die Adresse, und wenn die Informationen für diesen Host bestimmt sind, werden
sie verarbeitet; andernfalls werden die Informationen ignoriert.
In einem Multicast-Subnetz wird eine Übermittlung von einer Teilmenge
von Hosts in dem Netzwerk empfangen. Das Multicasting kann vom Typ Punkt-zu-Multipunkt
sein (wobei ein einziger Host zu mehreren Hosts sendet, z. B. elektronische
Verteilung von Büchern
von einem Verleger zu Buchläden
im ganzen Lande) oder Multipunkt-zu-Multipunkt (wobei eine Teilmenge
von Hosts in einem Netzwerk Informationen unter den Hosts in der
Teilmenge sendet, z. B. landesweite Videokonferenzen).
-
Ein Multicast-Protokoll ist eine
Menge von Regeln zum Übermitteln
von Informationen von einem einzigen Host zu mehreren Hosts in einem
Netzwerk oder zum Übermitteln
von Informationen unter einer Teilmenge von Hosts. Obwohl Multicast-Protokolle
für unzuverlässige Rundsende-Netzwerk-
und Satellitenrundsendekanäle
entwickelt wurden (siehe J. M. Chang und N. F. Maxemchuk, „Reliable
Broadcast Protocols",
ACM Trans. Comp. Sys., Band 2, Nr. 3, 251–273, August 1984; K. Sabnani
und M. Schwartz, „Multidestination
Protocols for Satellite Broadcast Channels", IEEE Trans. Comm., Band COM-33, Nr.
3, März
1985), ist der Entwurf von Multicast-Protokollen im allgemeinen
und von Multicast-Protokollen
für großflächige schnelle
Breitbandnetzwerke im besonderen mit speziellen Problemen verbunden.
Da jeder Host empfangene Informationen bestätigen muß, muß erstens das Protokoll das
Problem der Bestätigungsimplosion
(d. h. Empfang im Quellenhost mehrerer Bestätigungssignale), das jedem
Multicasting-Schema innewohnt, überwinden.
Zweitens erzeugen Ausbreitungsverzögerungen (aufgrund des von
dem Netzwerk versorgten physikalischen Gebiets und der endlichen Geschwindigkeit
von über
das Netzwerk übertragenen
Signalen) in Kombination mit hohen Übertragungsraten (aufgrund
eines Wunsches, soviel Informationen wie möglich in der kürzest möglichen
Zeit zu übertragen)
große
Verzögerungs-Bandbreiten-Produkte.
-
Große Verzögerungs-Bandbreiten-Produkte
führen
tendenziell zu einer Zunahme der Notwendigkeit, Informationen neuzusenden
(d. h. neuzumulticasten). Dies hat die folgenden Gründe: 1)
zu jedem gegebenen Zeitpunkt befindet sich eine große Informationsmenge
auf dem Netzwerk (aufgrund der großen Netzwerkbandbreite), und
diese große
Informationsmenge muß neu
gemulticastet werden, wenn Informationen verloren gehen, z. B. aufgrund überlaufender
Puffer in Knoten in dem Netzwerk, und 2) Rückmelde- oder Bestätigungssignale
von Empfangshosts nehmen eine von null verschiedene Zeitdauer in
Anspruch, um den Quellenhost zu erreichen (aufgrund von Ausbreitungsverzögerungen),
wodurch bewirkt wird, daß der
Quellenhost neusendet, da Bestätigungen
fehlen oder verzögert
sind.
-
Es ist wünschenswert, daß eine Multicasting-Quelle
unnötige
Neumulticasts vermeidet, da dies die Ende-zu-Ende-Verzögerung des Protokolls weiter
vergrößert und
den Verkehr dem Netzwerk vergrößert. Deshalb wird
ein Multicast-Protokoll für
Breitbandnetze benötigt,
das unnötige
Neuübertragungen
von Informationen vermeiden kann und das Bestätigungsimplosionsproblem vermeiden
kann, während
vorteilhafterweise ein hoher Durchsatz und eine niedrige Verzögerung der
Informationsübertragung
erzielt wird.
-
Aus EP-A-0 303 830 ist ein Datenverteilungssystem
zur pünktlichen,
effizienten und zuverlässigen Verteilung
von Daten zu einer unbegrenzten Anzahl abgesetzter Empfängerinstallationen
bekannt. Eine Datenquelle assembliert Datenpakete und sendet nach
dem Füllen
oder nach dem Ablaufen einer vorbestimmten Zeitspanne ein jeweiliges
Datenpaket zu allen Empfängern
und Behebungsmitteln entlang einem Kommunikationsnetz rund. Jeder
Empfänger
ist insofern intelligent, als er die Datenpakete in einen Puffer
kopiert und dafür verantwortlich
ist, Daten, die zur Durchführung
der beabsichtigten Funktionen des Empfängers notwendig sind, auszuwählen. Als
Folge werden zwischengeschaltete Datenauswahl- und Routing-Mittel
zwischen der Datenquelle und Empfängern vermieden, was zu einer
Datenablieferung führt,
die sowohl schnell als auch pünktlich ist.
Für Zuverlässigkeit überwacht
jeder Empfänger
die Sequenznummern der Datenpakete, die empfangen wurden, und außerdem,
ob ein Datenpaket mindestens so häufig wie das vorbestimmte Zeitintervall
empfangen wird. Jedes Datenpaket, das ein Empfänger als fehlend bestimmt,
kann aus dem Behebungsmittel erhalten werden, das eine Bibliothek
der empfangenen Datenpakete speichert oder das das fehlende Datenpaket aus
der Datenquelle abrufen kann.
-
Kurze Darstellung
der Erfindung
-
Die obigen Probleme werden gemäß der Erfindung
gelöst
durch ein Verfahren des Netzwerk-Multicasting, bei dem ein Multicast-Baum
aus einem Quellenhost zu einer Menge von Zielhosts verwendet wird.
Das erfindungsgemäße Verfahren
liefert Informationen aus dem Quellenhost der Reihe nach entlang
dem Multicast-Baum an die Zielhosts ab, unabhängig davon, wie der Baum erzeugt
wird und wie Betriebsmittel zugeteilt werden.
-
Insbesondere ist die vorliegende
Erfindung ein Verfahren mit den folgenden Schritten: Senden von
Informationsblöcken
von einer Quelle zu einer Menge von Zielen, wobei jedes Ziel einer
lokalen Vermittlungsstelle in einer Menge von lokalen Vermittlungsstellen
zugewiesen ist, Empfangen eines ersten Statussignals von jeder lokalen Vermittlungsstelle
in der Quelle, wobei das erste Statussignal einen Empfangsstatus
für diese
lokale Vermittlungsstelle relativ zu den gesendeten Blöcken anzeigt;
und Senden der Blöcke,
die von keiner der lokalen Vermittlungsstellen empfangen wurden,
als Reaktion auf die ersten Statussignale.
-
Das erfindungsgemäße Verfahren verringert das
Bestätigungsimplosionsproblem
durch Begrenzen oder Konsolidieren von Status- und Bestätigungsinformationen
von den Zielen. Das erfindungsgemäße Verfahren vermindert außerdem unnötige Übertragungen
von Informationen durch das Netzwerk durch Neusenden von Informationen
entlang lokaler Multicast-Bäume.
Das Protokoll kann in verschiedenen Arten von Netzwerken implementiert
werden. Z. B. können
die Protokolle verbesserte Betriebsmittelzuteilungstechniken in Datagramm-Netzwerken
oder etwaige effiziente Techniken zur Einrichtung virtueller Leitungen
in verbindungsorientierten Netzwerken ausnutzen.
-
Kurze Beschreibung
der Zeichnungen
-
Vorteile der Erfindung werden aus
der folgenden ausführlichen
Beschreibung in Verbindung mit den Zeichnungen deutlich. Es zeigen:
-
1 die
Struktur eines Computernetzwerks, in dem das erfindungsgemäße Verfahren
beispielhaft ausgeübt
wird.
-
2 ein
Blockschaltbild einer Netzwerkarchitektur auf der Basis des ISO-Modells.
-
3 die
Struktur eines Computernetzwerks, in dem das erfindungsgemäße Verfahren
ausgeübt
werden kann.
-
4 einen
globalen Multicast-Baum, dessen Wurzel bei S liegt und lokale Multicast-Bäume mit
Wurzel bei Ei,1-
-
5 ein
Diagramm von Schritten in einer ersten Ausführungsform des erfindungsgemäßen Verfahrens.
-
6 Paketformate
für die
erste Ausführungsform
des erfindungsgemäßen Verfahrens.
-
7 ein
Diagramm von Schritten in einer zweiten Ausführungsform des erfindungsgemäßen Verfahrens.
-
8 ein
Diagramm von Schritten in einer dritten Ausführungsform des erfindungsgemäßen Verfahrens.
-
Ausführliche Beschreibung
-
A. Übersicht über Multicast-Protokolle
-
1 zeigt
die Struktur eines typischen Computernetzwerks, in dem das erfindungsgemäße Verfahren
ausgeübt
werden kann. Computernetzwerke, d. h. verbundene Ansammlungen autonomer
Computer, stellen vielfältige
Dienste bereit, wie z. B. e-Mail und Dateitransferdienste. Der erste
Teil des Netzwerks umfaßt
in der Regel eine Ansammlung von Maschinen 102, die als
Hosts bezeichnet werden, auf denen Anwendungsprogramme ablaufen
sollen, und das Kommunikationssubnetz 104, das die Hosts
verbindet. Die Aufgabe des Subnetzes besteht darin, Informationen
von Host zu Host zu transferieren. Das Subnetz umfaßt in der
Regel zwei Grundkomponenten: Vermittlungselemente (die auch als
Knoten oder Schnittstellennachrichtenprozessoren, IMPs, bezeichnet
werden) 106 und Strecken (die auch als Übertragungsleitungen bezeichnet
werden) 108. Jeder Host ist mit einem oder gelegentlich
mit mehreren IMPs verbunden.
-
Computernetzwerke sind in der Regel
auf eine hochstrukturierte Weise ausgelegt. Um die Entwurfskomplexität zu reduzieren,
sind die meisten Computernetzwerke als eine Reihe von Schichten
organisiert. Z. B. ist das Referenzmodell der von der Internationalen
Organisation für
Standards (ISO) entwickelten Open Systems Interconection ein Modell
mit sieben Schichten. 2 zeigt
eine Netzwerkarchitektur auf der Basis dieses Modells. Siehe Tanenbaum,
supra. Der Zweck jeder Schicht besteht darin, höheren Schichten Dienste anzubieten
und diese höheren
Schichten vor den Einzelheiten dessen, wie die angebotenen Dienste
tatsächlich
implementiert werden, abzuschirmen. Ein Dienst wird formal durch
eine Menge von Primitiven spezifiziert, die die Operationen definieren,
die eine Schicht der Schicht über
ihr bereitstellt. Angrenzende Schichten kommunizieren durch eine
Schnittstelle, die die Dienste definiert, die die niedrigere Schicht
der höheren
Schicht anbietet.
-
Die aktiven Elemente dieser Schicht
werden als Entitäten
bezeichnet. Eine Entität
kann eine Softwareentität
(z. B, ein Prozeß)
oder eine Hardwareentität
(z. B. eine integrierte Schaltung) oder eine Kombination von beiden
sein. Entitäten
in derselben Schicht auf verschiedenen Maschinen werden als Peer-Entitäten bezeichnet.
-
Jedem Computernetzwerk ist ein wohldefiniertes „Protokoll" bzw. eine Menge
von Regeln, die für
die Kommunikation zwischen Peer-Entitäten gelten sollen, zugeordnet.
Insbesondere dienen Protokolle zum physischen Herstellen, Ausführen und
Abschließen
von Übermittlungen
zwischen gleichen oder Peer-Schichten auf dem Netzwerk, so daß angebotene
Dienste vorteilhafterweise verwendet werden können. Siehe allgemein Tanenbaum,
supra; Engineering and Operations in the Bell System, Bell Laboratories,
Inc., 1983. Die Kommunikation zwischen entsprechenden Schichten
in verschiedenen Hosts ist insofern virtuell, als sich auf der niedrigsten
Schicht eine physische Verbindung befindet.
-
Wie bereits erwähnt, kann das Kommunikationssubnetz
104 (das
in dem ISO-Modell drei niedrigste Schichten umfaßt) für Punkt-zu-Punkt-Übermittlungen
(d. h. Übermittlungen
zwischen zwei Hosts) oder für Rundsendeübermittlungen
ausgelegt sein. In letzter Zeit ist jedoch die Multicast-Übertragung
(oder einfach das „Multicasting") innerhalb einer
Teilmenge von Hosts in dem Netzwerk zunehmend wichtiger geworden.
-
Die folgende ausführliche Beschreibung zeigt
mehrere Ausführungsformen
von Multicast-Transportprotokollen, d. h. Multicast-Protokollen
für die
Transportschicht des ISO-Modells. Die Protokolle sind insofern allgemein,
als sie entweder auf Netzwerken mit virtuellen Leitungen oder auf
Datagramm-Netzwerken aufgebaut werden können. Die Protokolle können vorteilhafterweise
in schnellen Breitbandnetzwerken, wie z. B. ATM-Netzwerken (asynchroner
Transfermodus) eingesetzt werden.
-
Die Funktion der erfindungsgemäßen Protokolle
besteht darin, Informationspakete von einer Quelle der Reihe nach
entlang einem Multicast-Baum zu Zielen abzuliefern, unabhängig davon,
wie der Baum erzeugt wird und wie Betriebsmittel (z. B. Bandbreite
in den Strecken) zugeteilt werden. Die Protokolle sind also in verschiedenen
Netzwerken einsetzbar und können
vorteilhafterweise beliebige Betriebsmittelzuteilungstechniken in
Datagramm-Netzwerken oder beliebige Techniken zum Einrichten von
virtuellen Leitungen in verbindungsorientierten Netzwerken verwenden.
-
Der einzige Dienst, der von dem erfindungsgemäßen Verfahren
erwartet wird, ist die Herstellung eines Multicast-Baums von der
Quelle zu den Zielen. Ein Baum ist gekennzeichnet durch eine Wurzel
und eine Menge zwischengeschalteter Knoten und Strecken, die in
einer Menge von Blättern
enden. Z. B. ist in dem Netzwerk von 1 in
einem Punkt-zu-Multipunkt-Multicast-Baum einer der Hosts seine Quelle,
seine Blätter
eine Menge von Zielhosts und seine zwischengeschalteten Knoten und
Strecken der IMPS und Übertragungsleitungen,
die die Wurzel mit den Blättern
verbinden. Ein Multicast-Baum ist nicht nur eine Menge verbindender Knoten
und Strecken, sondern enthält
außerdem
die Datenverarbeitungs- und Kommunikationsbetriebsmittel, wie z.
B. notwendige Bandbreite zur Garantie einer gegebenen Dienstqualität, die entlang
den zwischengeschalteten Knoten und Strecken reserviert wird. Die
hier beschriebenen Protokolle sind unabhängig davon, wie der Multicast-Baum
hergestellt wird, z. B. durch Verwenden von ST-2, RSVP oder eines
beliebigen verbindungsorientierten Protokolls. Siehe C. Patridge
und S. Pink, „An
Implementation of the Revised Internet Stream Protocol (ST-2)", Journal of Internetworking:
Research and Experience, Band 4, Nr. 1, März 1992; L. Zhang et al., „RSVP:
A New Resource ReSerVation Protocol", IEEE Network Magazine, September 1993.
Solange der Multicast-Baum bereitgestellt wird, funktionieren die
Protokolle.
-
Die Multicast-Protokolle sind vorteilhafterweise
im Kontext des Netzwerks 300 von 3 dargestellt. Hosts 302 (die
auch als Endpunkte bezeichnet werden), sind entweder direkt oder
durch Zugangsknoten 306 mit der lokalen Vermittlungsstelle
(LE) 304 verbunden. Man beachte, daß der Begriff lokale Vermittlungsstelle nicht
auf verbindungsorientierte Netzwerke beschränkt ist (d. h. das erfindungsgemäße Verfahren
gilt in dem Fall, daß die
lokale Vermittlungsstelle als ein Router in einem Datagram-Netzwerk
betrachtet wird). Die lokalen Vermittlungsstellen sind unter Verwendung
des Backbone-Netzwerks 310, das hier als Beispiel als ein ATM-Netzwerk
dargestellt ist, verbunden. Es wird ein hierarchisches Adressierungsschema
wie z. B. E.164, das dem derzeitigen Telefon-Rufnummernsystem gleicht,
angenommen. Das heißt,
wenn die Adresse eines Endpunkts gegeben ist, ist es möglich, auf
das Gebiet zu schließen,
in dem sich der Endpunkt befindet. Wenn die Adresse eines Endpunkts
z. B. 908-555-4567 ist, kann geschlossen werden, daß der Endpunkt
durch die Bereichskennzahl 908 versorgt wird und sich der Endpunkt
in New Jersey befindet. Es ist lediglich notwendig, daß das Protokoll
ausreichend Informationen besitzt, um Ziele in einer lokalisierten
Region zum Zweck des Neusendens von Paketen als eine Gruppe zu definieren.
-
Wie bereits erwähnt, erfordern die Protokolle
einen Multicast-Baum. Man nehme an, daß ein Multicast-Baum mit der
Zuteilung von Betriebsmitteln auf der Netzwerkschicht in dem ISO-Modell
(z. B. der ATM-Schicht) eingerichtet ist, mit Wurzel an einem Quellenhost
S, und der Baum alle Ziele (d. h. die anderen Hosts oder Endpunkte) überspannt.
Dies wird in der Regel als der globale Multicast-Baum bezeichnet,
um ihn von dem lokalen Multicast-Baum zu unterscheiden. 4 zeigt den globalen Multicast-Baum.
Der globale Multicast-Baum identifiziert die durch fette Linien
gezeigte virtuelle Multicast-Leitung (MVC) 405. Die Endpunkte in
der lokalen Vermittlungsstelle Li werden
als Ei,j bezeichnet. Li ist
kein Endpunkt. Es wird angenommen, daß eine bestimmte Schätzung der
Umlaufverzögerung
zwischen S und jedem Ei,i verfügbar ist,
nachdem der Multicast-Baum eingerichtet ist. Die Umlaufverzögerung,
die Ei,1 entspricht, wird als RTDi bezeichnet. Die Spitzenbandbreite, Paketgröße, Blockgröße und Umordnungspuffergröße, die
in jedem Ziel erforderlich ist, wird auch zum Zeitpunkt der Verbindungsherstellung
eingestellt (d. h. zu dem Zeitpunkt, zu dem Netzwerkbetriebsmittel, wie
z. B. Bandbreite, vor der Übertragung
von Daten reserviert werden).
-
Man beachte, daß mehrere lokale Multicast-Bäume auf
der Basis des globalen Multicast-Baums gebildet werden. Ein lokaler
Multicast-Baum mit Wurzel bei Ei,1 ist der
Teil des globalen Multicast-Baums, der die Ei,j in
den Li überspannt.
Die lokalen Multicast-Bäume
410-i sind in 4 durch
gestrichelte Linien gezeigt. Ein solcher lokaler Multicast-Baum
wird durch eine Kennung einer lokalen virtuellen Multicast-Leitung
identifiziert, die als LMVCI bezeichnet wird. Zur Veranschaulichung
wird nur Punkt-zu-Multipunkt-Multicasting betrachtet, so daß zu Anfang
eine feste Quelle und eine feste Menge von Endpunkten vorliegen.
Das heißt,
es liegt der Fall einer festen einzigen Quelle und fester mehrerer
Ziele vor. Später
wird gezeigt, wie veränderliche
Quelle und veränderliche
Ziele sowie die Multipunkt-zu-Multipunkt-Multicasting-Situation behandelt werden
können.
-
B. Eine erste Ausführungsform – Designations-Status-Protokoll (DSP)
-
In diesem Abschnitt wird eine erste
Ausführungsform
eines Multicast-Protokolls, das als Designations-Status-Protokoll (DSP) bezeichnet wird,
beschrieben. Bei diesem Protokoll wird der Multicast-Baum weiter charakterisiert.
Die Quelle sucht einen Endpunkt Ei,1 aus,
der als Repräsentant
der Gruppe von Ei,j s in jeder lokalen Vermittlungsstelle
Li betrachtet werden kann. Dieser Ei,1 ist für
das Senden seines eigenen Status zu der Quelle verantwortlich. Wenn
es also m LE s mit Endzielen (oder Endpunkten) gibt, gibt es m designierte Endpunkte,
von denen erwartet wird, daß sie
ihren Status zu der Quelle senden. Tatsächlich wird der von Ei,1 gesendete Status zeigen, welche Blöcke von
Ei,1 empfangen wurden, d. h. es wird ein
Statussignal zu der Quelle gesendet, das einen Empfangsstatus in
bezug auf die gesendeten Blöcke
anzeigt. Ein Block ist eine Ansammlung von Paketen, und er ist die
Einheit, die für
die selektive Wiederholungsneuübertragung
gewählt wird,
wie nachfolgend beschrieben wird. Der Status gibt in der Regel jedoch
nicht für
j 1 an, welche Blöcke durch
die Ei,j empfangen wurden. Jedes Ei,1 wird (im Gegensatz zu der globalen Quelle
S) als eine lokale Quelle bezeichnet.
-
5 ist
ein Diagramm der Hauptschritte in dem DSP-Protokoll. Das Protokoll
arbeitet wie folgt:
- 1. S sendet im Multicast-Verfahren
Datenpakete zu allen Zielen (den Ei,j ∀ i,j)
unter Verwendung des globalen Multicast-Baums im Schritt 510.
Dieses Multicast wird als globales Multicast bezeichnet.
- 2. Jedes Ei,1 sendet seinen eigenen
Status in regelmäßigen Intervallen
im Schritt 520 zu S in Form von Steuer-(Status-)Paketen.
Das Statuspaket enthält
die Informationen darüber,
welche Blöcke
durch Ei,1 empfangen wurden. S führt global
nochmals im Schritt 530 ein Neu-Multicasting eines Blocks
durch, wenn es ein Ei,1 gibt, das den Block
innerhalb der erwarteten Zeit noch nicht empfangen hat. Diese Zeitdauer
ist im allgemeinen ein Vielfaches der Umlaufverzögerung zwischen S und dem fraglichen
Ei,1.
- 3. Jedes Ei,j (j 1) sendet seinen Status
in regelmäßigen Intervallen
in Schritt 540 zu dem entsprechenden Ei,1.
Ei,1 führt
im Schritt 550 ein lokales Multicasting eines Blocks durch,
wenn es ein Ei,j (j 1) gibt, das während des
globalen Multicast den Block nicht empfangen hat. Man beachte, daß ein Ei,j (j 1) für die Neuübertragung eines Blocks von
dem entsprechenden Ei,1 abhängt, wenn
es den Block nicht entweder während des
globalen Multicast oder während
lokaler Multicasts empfangen hat.
- 4. S führt
ein Multicasting neuer Blöcke
durch, solange jedes Ei,1 verfügbaren Pufferraum
für die
neuen Blöcke
besitzt. Man beachte, daß ein
Ei,1 vorteilhafterweise zwei Puffer aufweist:
(1) einen Neuassemblierpuffer, der zum Assemblieren der von ihm
aus S empfangenen Pakete benutzt wird, und (2) einen Neuübertragungspuffer,
der verwendet wird, um die Pakete (Blöcke) zu halten, die nicht von
allen Ei,j in seinem Zuständigkeitsbereich
empfangen wurden (Anmerkung: Ei,j, die durch
ein Li versorgt werden, werden als im selben
Zuständigkeitsbereich
befindlich bezeichnet.) Ein Block wird aus dem Neuassemblierpuffer
zu dem Neuübertragungspuffer
transferiert, wenn Platz in dem Neuübertragungspuffer vorhanden
ist. Dieser Transfer erzeugt Platz im Neuassemblierpuffer von Ei,1. Wenn jedoch beide Puffer voll sind,
gibt es keinen Platz für
neue Blöcke.
Der Status des im Neuassemblierpuffer verfügbaren Platzes wird als Teil
der Statusnachricht von Ei,1 zu S gesendet,
so daß S
weiß,
ob es einen neuen Block multicasten kann.
-
Es kann auch eine leicht modifizierte
Version des Protokolls betrachtet werden, bei der die Quelle zu allen
Repräsentanten
Ei,1 (anstelle aller Ei,j für alle i,
j) multicastet und die Ei,1 zu den Ei,j s (j 1) multicasten, wodurch die Verbindung
entlang jedem Paar von Quelle/Ziel in zwei Segmente unterteilt werden:
eines von der Quelle zu Ei,1 und das andere
von Ei,1 zu Ei,j (j
1).
-
Die folgenden Absätze beschreiben das DSP-Protokoll
ausführlicher
durch Beschreibung des Formats von Steuer- und Datenpaketen und
durch Beschreibung der von den Entitäten des DSP verwendeten Datenstruktur.
-
Die folgenden Paketstrukturen werden
vorteilhafterweise in dem Protokoll benutzt und sind in 6 dargestellt: ein Steuer-(Status-)Paket 610 von
einem Ei,1 zu der Quelle; ein Steuer-(Status-)Paket 620 von
einem Ei,j (j 1) zu Ei,1;
ein Multicast-Datenpaket 630 von der Quelle S zu Ei,j ∀ i,j;
und ein Multicast-Datenpaket 640 von einem Ei,1 zu
Ei,j ∀ i,
j (j 1).
-
Die nachfolgend gegebene Notation
dient zur Darstellung der Felder der in 6 dargestellten Steuer- und Datenpakete.
Man beachte, daß die
MVCI (Kennung für
virtuelle Multicast-Leitung) der VCI (Kennung für virtuelle Leitung) ähnelt, die
in verbindungsorientierten Netzwerken verwendet wird. MVCI ist hier
jedoch allgemeiner und identifiziert einfach eine spezifische Multicast-Verbindung,
die eine statische Zuteilung von Betriebsmitteln zum Zeitpunkt der
Verbindungsherstellung oder eine dynamische Zuteilung von Betriebsmitteln, so
wie es durch das RSVP-Protokoll geschieht, verwenden kann. Siehe
Zhang, supra.
-
-
Tabelle
1: Erläuterung
der in Paketformaten verwendeten Notation
-
Die Quelle S führt eine Tabelle T zum Verfolgen
des Status jedes Multicast-Blocks. Das heißt, T zeichnet auf, welche
der Ei,1 einen gegebenen Block empfangen
und bestätigt
haben, und ob es ein Ei,1 gibt, das einen
Block innerhalb der erwarteten Zeit nicht empfangen hat. Ein Eintrag
in T entspricht einem Block, der gemulticastet wurde. Jeder Eintrag
enthält
ein Array von Neuübertragungszählwerten
count[i] und ein Array von Bestätigungen
ack[i], wobei count[i] und ack[i] dem Neuübertragungszählwert bzw.
dem Bestätigungsstatus
von Ei,1 entsprechen. Ein ack[i] ist 1 (0),
wenn der entsprechende Block durch Ei,1 zu
S (nicht) empfangen und bestätigt
wurde. Der Neuübertragungszählwert wird
vorteilhafterweise gleich RTDi/TIN,i + Konstante gesetzt, wobei TIN,i = max (RTDi/kou,
ipt), wobei kou eine Konstante zwischen 2 und 32 und ipt das Intervall
zwischen zwei sukzessiven Paketübertragungen
ist. RTDi ist die geschätzte Umlaufverzögerung zwischen
S und Ei,1. Jedesmal, wenn ein Statuspaket
von Ei,1 ankommt, werden die count[i] s
und ack[i] s durch S in der Tabelle T aktualisiert: Tatsächlich wird
count[i] durch ki jedesmal dann erniedrigt,
wenn ein Statuspaket von Ei,1. an der Quelle
S ankommt, wobei ki das Intervall in Einheiten
von TIN,i zwischen zwei sukzessiven Statuspaketen
von Ei,1 ist.
-
Über
die von den Zielen verwendeten Datenstrukturen ausgedrückt, führt jedes
Ziel zwei Tabellen: eine, die den Blöcken entspricht, und eine andere,
die den Paketen in den Blöcken
entspricht. Die Tabelle, die den Blöcken entspricht, verfolgt,
welche Blöcke
durch das Ziel empfangen wurden, während die Tabelle, die den
Paketen entspricht, verfolgt, welche Pakete in einem Block durch
das Ziel empfangen wurden. Tatsächlich wird
ein einem Block entsprechender Eintrag in der ersten Tabelle auf
der Basis der Einträge,
die den Paketen in dem gegebenen Block in der zweiten Tabelle entsprechen,
aktualisiert. Wenn z. B. alle Pakete pi,j in
einem Block bi am Ziel empfangen werden,
wird der bi entsprechende Eintrag in der
ersten Tabelle als durch das Ziel empfangen markiert. Andernfalls
wird er als durch das Ziel nicht empfangen markiert. Diese Informationen
bezüglich
bi werden in dem LOB-Teil der Statusnachrichten
geführt.
-
Eine Lastquelle Ei,1 kann
bestimmte zusätzliche
Datenstrukturen verwenden. Jedes Ei,1 führt eine
Tabelle T(i), um den Status der von ihm
lokal gemulticasteten Blöcke
zu verfolgen. Somit hilft T(i) dem Ei,1, zu bestimmen, welche Blöcke von
allen Zielen in seinem Zuständigkeitsbereich
empfangen wurden, und ob es einen Block gibt, der während der
erwarteten Zeit durch ein Ziel in seinem Zuständigkeitsbereich nicht empfangen wurde.
Jeder Eintrag in T(i) entspricht einem Block,
der lokal gemulticastet wurde. T(i) hat
eine ähnliche
Struktur wie T. Das heißt,
ein Eintrag in T(i) enthält ein Array von Neuübertragungszählwerten
count[j] und ein Array von Bestätigungen
ack[j], wobei ein count[j] und ein ack[j] jeweils dem Neuübertragungszählwert bzw.
dem Bestätigungsstatus
von Ei,j, so wie es Ei,1 bekannt
ist, entsprechen. Jedesmal, wenn ein Statuspaket von Ei,1 ankommt,
werden count[j] und ack[j] durch Ei,1 in
der Tabelle T(1) aktualisiert. Tatsächlich wird
count[j] Jedesmal, wenn ein Statuspaket von Ei,j an
der lokalen Quelle Ei,1 ankommt, um kj erniedrigt, wobei kj das
Intervall in Einheiten von T (i) / IN,j zwischen zwei sukzessiven Statuspaketen
von Ei,j ist. T (i) / IN,j = max (RTD (i) / j/kou, ipt) und
RTD (i) / j = Umlaufverzögerung
zwischen Ei,1 und Ei,j.
-
Mit Definitionen des Formats von
Daten- und Steuerpaketen und mit Definitionen der Datenstrukturen, die
von Entitäten
des Protokolls verwendet werden, können die Schritte in der ersten
Ausführungsform
des Protokolls (d. h. des DSP-Protokolls) sogar noch ausführlicher
beschrieben werden. Insbesondere gilt:
- 1. S
multicastet Pakete zu allen Zielen (den Ei,j ∀ i,j)
unter Verwendung des Multicast-Baums und aktualisiert die Tabelle
T. Es setzt count[i] auf ki und ack[i] auf
0 für jeden
Blocki.
- 2. Jedes Ei,1 sendet seinen Status zu
S in Form von Steuer-(Status-)Paketen in regelmäßigen Intervallen (ki bedeutet das Intervall, ausgedrückt über TIN,i in dem Statuspaket). S führt ein
Neumulticasten eines Blocks durch, wenn es ein i gibt, dergestalt,
daß der
Neuübertragungszählwert count[i],
der dem Block entspricht, auf null reduziert wird, aber das ack[i],
das dem Block entspricht, nicht 1 ist. Das heißt, ein Block wird neu gemulticastet,
solange es ein Ei,1 gibt, das den Block
innerhalb der Zeit, die es haben sollte, nicht empfangen hat.
- 3. Jedes Ei,j sendet in seinen regelmäßigen Intervallen
Status zu dem entsprechenden Ei,1. Das Ei,1, das count[j] und ack[j] auf kj bzw. auf 0 initialisiert, multicastet einen
Block, wenn es ein j gibt, dergestalt, daß count[j] = 0 und ack[j] =
0 in der Tabelle T(i) gilt. Das heißt, ein
Block wird lokal von Ei,1 gemulticastet,
wenn es ein Ei,j gibt, das den Block nicht
empfangen hat.
- 4. S multicastet einen neuen Block, solange buffer_availablei > 0 ∀ i gilt.
Das heißt,
in jedem Ei,1 ist Platz für neue Pakete
vorhanden. Man beachte, daß Ei,1 anzeigen kann, daß buffer_availablei =
0 ist, wenn es keine alten Blöcke
aus seinem Neuübertragungspuffer
entfernen kann, weil bestimmte lokale Ziele Ei,j s
den Empfang dieser Blöcke
noch nicht bestätigt
haben. Auf diese Weise kann ein Ei,1 verhindern,
daß die
Quelle S das Netzwerk mit neuen Multicast-Blöcken überflutet.
-
Das erfindungsgemäße DSP-Protokoll hat mehrere
Vorteile. Erstens ist der Bestätigungsverkehr
zu der Quelle im Vergleich zu Verfahren, bei denen jedes Ziel einzeln
den Empfang eines Pakets/Blocks der Multicast-Quelle bestätigt, wesentlich reduziert.
Der Grund dafür
besteht darin, daß nicht
alle Ziele (Endpunkte) bei dem erfindungsgemäßen Protokoll Bestätigungs-(Status-)Pakete
zu der Quelle S senden. Es senden nur die Ei,1 Statuspakete
zu der Quelle S. Aufgrund des lokalen Multicasting ist zweitens
der Neuübertragungsverkehr
aufgrund redundanter globaler Multicasts wesentlich verringert,
wie auch die Datenlatenz, dieses Protokoll hat viele Vorteile des
SNR-Protokolls. Siehe A. N. Netravali et al., „Design and Implementation
of a High Speed Transport Protocol", IEEE Trans. Comm., Band 38, Nr. 11,
November 1990. Wie bei dem SNR-Protokoll wird durch den periodischen
Austausch vollständiger
Statusinformationen (d. h. der Informationen LWr,
LOB und buffer_available) in dem DSP-Protokoll die Fehlerbehebung
in diesem Verfahren im Vergleich zu Verfahren, die nicht periodisch
vollständige
Statusinformationen austauschen, einfacher. Drittens werden der
globale Multicast-Baum und die lokalen Multicast-Bäume zum
Zeitpunkt der Verbindungsherstellung eingerichtet, und die Datentransferphase
ist daher bei diesem Verfahren im Vergleich zu einem Verfahren,
bei dem die Multicast-Bäume
dynamisch eingerichtet werden, weniger zeitaufwendig. wenn ein Block
eines der Ei,1 nicht erreicht, wird er viertens
gemulticastet, sobald die Quelle den Verlust des Blocks erkennt.
Wenn also ein Block von mehr als einem Ei,1 nicht
empfangen wird, erkennt S es aus dem „nächstliegenden" Ei,1,
daß es
den Block nicht empfangen hat und wartet nicht auf die Bestätigung der
anderen Ei,1, die ihn ebenfalls nicht empfangen haben.
Deshalb beginnt die Behebung so früh wie möglich. Fünftens kann es auch möglich sein,
einen Block selektiv neu zu übertragen
und den Neuübertragungsverkehr
zu reduzieren, wenn zwei Ebenen von VCIs verfügbar sind: Punkt-zu-Multipunkt
und Punkt-zu-Punkt.
-
Es ist jedoch zu beachten, daß die Ei,1 einen Neuübertragungspuffer halten müssen, so
daß sie
die Blöcke
lokal zu den Endpunkten Ei,j neu senden
können,
die die Blöcke
nicht empfangen haben. Außerdem muß ein Endpunkt
Ei,1 die Verantwortung übernehmen, bestimmte Blöcke auch
dann zu multicasten, wenn es sich einfach um einen passiven Endpunkt
handelt, der nur daran interessiert ist, Multicast-Nachrichten zu
empfangen, und da die Ei,1 zum Zeitpunkt
der Verbindungsherstellung ausgewählt werden, kann es schließlich passieren,
daß in
einer bestimmten lokalen Vermittlungsstelle Li Ei,1 einen Block nicht empfängt, aber
ein bestimmtes anderes Ei,j ihn empfängt. In
diesem Fall muß S
den Block neu multicasten, obwohl ein bestimmtes Ei,j ihn im
Zuständigkeitsbereich
von Ei,1 empfangen hat. Dieses Problem könnte überwunden
werden, wenn das Ei,j, das den Block empfangen
hat, als das Ei,1 gewählt wird. Wenn das Ei,1 jedoch dynamisch gewählt wird, muß der lokale
Multicast-Baum jedesmal dann aufgebaut werden, wenn ein Block gesendet
wird, und dies ist eine zeitaufwendige Prozedur.
-
Außerdem ist zu beachten, daß, um Verbindungsausfälle zu erkennen,
es notwendig sein kann, daß die
Ei,1 den Status von S kennen und die Ei,j den Status entsprechender Ei,1 kennen.
In diesem Fall kann ein Steuerpaket für S eingeführt werden, das periodisch
auf die gleiche Weise wie in dem SNR-Protokoll zu Ei,1 s sendet. Ähnlich muß Ei,1 seinen Status in regelmäßigen Intervallen
zu Ei,j s senden.
-
Das hier beschriebene Protokoll gilt
für eine
einzige Quelle und mehrere Ziele. Im Fall mehrerer Quellen und mehrerer
Ziele müssen
mehrere Multicast-Bäume
eingerichtet werden, deren Wurzeln jeweils an jeder möglichen
Quelle liegen. Dadurch wird ein gleichzeitiges Multipunkt-zu-Multipunkt-Multicasting
möglich.
Um ein Überbuchen
von Betriebsmitteln entlang gemeinsamer Zweige verschiedener Multicast-Bäume zu verhindern,
können
in einem verbindungslosen Netzwerk Betriebsmittelzuteilungstechniken
wie z. B. RSVP verwendet werden.
-
B. Eine zweite Ausführungsform – Konsolidations-Status-Protokoll (CSP)
-
Bei DSP wird ein Ei,1 in
jedem Li gewählt und dieser designierte
Endpunkt sendet seine eigene Statusnachricht zu der Quelle S. Bei
einer zweiten Ausführungsform
des erfindungsgemäßen Verfahrens,
die als das Konsolidations-Status-Protokoll (CSP) bezeichnet wird,
wird von jeder lokalen Vermittlungsstelle Li eine
Statusnachricht zu der Quelle gesendet und diese Statusnachricht
ist eine konsolidierte Statusnachricht aller Endpunkte/Ziele in
ihrem Zuständigkeitsbereich.
-
7 ist
ein Diagramm der Hauptschritte in dem CSP-Protokoll. Das Protokoll
arbeitet folgendermaßen:
- 1. S multicastet einen Block zu allen Zielen
Ei,j ∀ i,
j im Schritt 710 unter Verwendung des Multicast-Baums, der
in der Verbindungsherstellungsphase eingerichtet wird.
- 2. Die Ei,j senden ihren Status in regelmäßigen Intervallen
zu der entsprechenden lokalen Vermittlungsstelle Li (Schritt 720).
Das Format der Statusnachricht ist dasselbe wie das der Statusnachricht 620,
die von Ei,j s (für j 1) bei DSP zu Ei,1 gesendet wird.
- 3. Li konsolidiert die Statusnachrichten aus Ei,j's in seinem Zuständigkeitsbereich.
Li sendet periodisch seinen konsolidierten
Status zu S (Schritt 730), d. h. ein Statussignal wird
zu der Quelle gesendet, das einen Empfangsstatus relativ zu den
gesendeten Blöcken
angibt. Die folgenden Absätze
beschreiben ein bevorzugtes Verfahren, bei dem Li konsolidierte
Felder LWr, LOB und buffer_available aus
den entsprechenden Feldern einzelner Statusnachrichten von Ei,j s für
die konsolidierte Statusnachricht präpariert. Man erinnere sich,
daß die
Felder LWr, LOB und buffer_available in
Tabelle 1 definiert sind.
Das konsolidierte LWr wird
folgendermaßen
gebildet:
LWr(consolidated) = min (LW (j) / r)
wobei LW (j) / r das LWr-Feld der Statusnachricht
von Ei,j zu Li ist.
Das heißt,
Li wählt den
niedrigsten Wert von LWr unter den LWr der Statusnachrichten der Ei,j als
das LWr(consolidated). Wenn Z. B. die LWr der Ei,j 4, 3,
2, 8 und 5 sind, Wählt
Li 2 als LWr(consolidated),
wodurch S angegeben wird, daß alle
Ziele in seinem Zuständigkeitsbereich
alle Blöcke
bis zum Block Nummer 2 empfangen haben, obwohl es bestimmte Ziele
in demselben Zuständigkeitsbereich
gibt, die alle Blöcke
bis zu den Block Nummern 3, 4, 5 und 8 empfangen haben.
Das
konsolidierte LOB wird folgendermaßen gebildet: LOBconsolidated ist
eine bitweise AND-Verknüpfung
der ordnungsgemäß ausgerichteten
LOB der Ei,j. Man beachte, daß das LOB-Feld
abhängig
von dem Wert von LWr eine verschiedene Bedeutung
für die
verschiedenen Ei,j hat. Wenn das LWr von Ei,2 z. B.
3 und LOB den Wert 01000010 hat (das äußerste linke Bit in LOB entspricht
dem unteren Ende des Fensters und das äußerste rechte Bit entspricht
dem oberen Ende des Fensters) bedeutet dies, daß Ei,2 alle
Blöcke
bis zum Block Nummer 3 empfangen hat und auch die Blöcke 5 und
10 empfangen hat. Wenn Ei,4 LWr =
4 und dasselbe LOB hat, bedeutet dies, daß Ei,4 alle
Blöcke
bis zum Block Nummer 4 empfangen hat und auch die Blöcke 6 und
11 empfangen hat. wenn das LOB von Ei,2 und
das von Ei,4 konsolidiert werden sollen,
muß man
also das LOB von Ei,4 um ein Bit verschieben
und das äußerste linke
Bit des LOB mit 1 füllen
und das äußerste rechte
Bit des ursprünglichen
LOB verwerfen, so daß die
Bit, die den Status der Blöcke
3, 4, 5, 6, 7, 8, 9 und 10 darstellen, ausgerichtet werden. Nachdem
die Ausrichtung geschehen ist, muß eine bitweise AND-Operation
durchgeführt
werden, um das konsolidierte LOB zu finden.
Das Feld buffer_available
in dem konsolidierten Status von Li ist
das Minimum der buffer_available-Werte in
den Ei,j in seinem Zuständigkeitsbereich.
Li sendet den konsolidierten Status der Ziele
in seinem Zuständigkeitsbereich
zu S. Das Format dieser Statusnachricht ist vorteilhafterweise dasselbe
wie das der bei DSP von den Ei,1 zu S gesendeten
Statusnachricht.
- 4. Im Schritt 740 multicastet S einen Block neu zu
allen Zielen, wenn es ein Ei,j gibt, das
den Block nicht innerhalb der erwarteten Zeit empfangen hat. S könnte den
Block jedoch auch nur neu zu dem spezifischen Ei,j senden,
das den Block nicht empfangen hat, solange zusätzlich zu den Punkt-zu-Multipunkt-Verbindungen
Punkt-zu-Punkt-Verbindungen
verfügbar
wären.
- 5. S multicastet einen neuen Block, solange Pufferplatz in jedem
Li zum Empfang eines neuen Blocks verfügbar ist.
Wenn jeder Endpunkt Ei,j in der lokalen
Vermittlungsstelle Li verfügbaren Puffer
für einen
neuen Block hat, wird gesagt, daß das Li verfügbaren Pufferplatz
für einen
neuen Block hat. Man beachte, daß dieses Protokoll vermeidet,
die Li als Speicher- und Weiterleitungs-Knoten zu benutzen,
da das Assemblieren von Paketen in den Li unnötige Verzögerung und
unnötige
Komplexität
in den Vermittlungen einführt.
-
CSP ist im allgemeinen sehr unkompliziert
und hat mehrere Vorteile. Z. B. gibt es keine lokalen Multicast-Bäume wie bei DSP, und daher
geschehen alle Neumulticasts durch die Quelle S. Außerdem ist
der Bestätigungs-(Statusnachrichten-)Verkehr
zu der Quelle S im Vergleich zu dem Verfahren, bei dem jedes Ziel
einzeln den Empfang eines Blocks der Quelle bestätigt wesentlich geringer. Außerdem erfordert
kein Ziel einen Neuübertragungspuffer
wie bei DSP. Wenn ein Block nicht eines der Ei,j erreicht,
wird er schließlich
gemulticastet, sobald S den Verlust des Blocks erkennt. Wenn also
ein Block nicht von mehr als einem Ei,j empfangen wird,
dann erkennt S dies aus dem „nächsten" Li,
das den Block nicht empfangen hat und wartet nicht auf die Bestätigung der
anderen Li, die ihn auch nicht empfangen
haben. Deshalb startet die Behebung so früh wie möglich. Man beachte jedoch,
daß jedes
Li den Status der Ei,j in
seinem Zuständigkeitsbereich
konsolidieren muß.
Dies ist eine zusätzliche
Last für
die Li und erfordert Wechsel zu Vermittlungen
anstelle von Endpunkten. Wenn es ein einzelnes Ei,j gibt,
das einen Block nicht empfangen hat, muß außerdem S den Block zu allen Zielen
multicasten, während
bei DSP ein solcher Fall durch das lokale Multicast durch das entsprechende
Ei,1 abgewickelt wird.
-
D. Ein drittes Protokoll – kombiniertes
Protokoll (CP)
-
Eine dritte Ausführungsform des erfindungsgemäßen Verfahrens,
die als das kombinierte Protokoll (CP) bezeichnet wird, kombiniert
Ideen aus DSP und CSP. Die lokalen Multicast-Bäume in DSP werden zum Zeitpunkt
der Verbindungsherstellung eingerichtet und die Ei,1 bleiben
daher während
des gesamten Multicasts von S unverändert. Dies kann jedoch zu
einer Situation führen,
in der ein Ei,1 einen Block nicht empfangen
hat, aber ein bestimmtes anderes Ei,j im
selben Zuständigkeitsbereich
(d. h., innerhalb desselben Li) diesen Block empfangen
hat. In einer solchen Situation multicastet S bei DSP das Paket
neu.
-
CP ist jedoch ein Versuch, der obigen
Situation abzuhelfen, indem die lokalen Multicast-Bäume dynamisch
gewählt
werden. 8 ist ein Diagramm
der Hauptschritte in dem CP-Protokoll. Das Protokoll arbeitet wie
folgt:
- 1. S multicastet einen Block im Schritt 810 zu
allen Zielen unter Verwendung des globalen Multicast-Baums, der zum Zeitpunkt
der Verbindungsherstellung gewählt
wird.
- 2. Die Endpunkte Ei,j senden ihren Status
zu der entsprechenden lokalen Vermittlungsstelle Li genau
wie bei CSP im Schritt 820. Li sendet
einen konsolidierten Status zu der Quelle S, der einen Empfangsstatus relativ
zu den gesendeten Blöcken
anzeigt. Die Statuskonsolidierung geschieht jedoch bei CP anders
als bei CSP.
Die folgenden Abschnitte beschreiben, wie Li aus den entsprechenden Feldern der einzelnen
Statusnachrichten von Ei,j s für das CP-Protokoll
ein konsolidiertes LWr, ein konsolidiertes
LOB und ein konsolidiertes buffer_available präpariert.
Das konsolidierte
LWr wird folgendermaßen gebildet:
LWr(consolidated) = max (LW (j) / r) wobei LW (j) / r das LWr-Feld der Statusnachricht von Ei,j zu
Li ist. Das heißt, Li wählt den
höchsten
Wert von LWr unter den LWr der
Statusnachrichten der Ei,j als das LWr(consolidated). Wenn z. B. die LWr der Ei,j 4, 3,
2, 8 und 5 lauten, wählt
Li 8 als sein LWr,
wodurch S das Vorhandensein eines Ziels in seinem Zuständigkeitsbereich
angezeigt wird, das alle Blöcke
bis zum Block Nummer 8 empfangen hat, obwohl es andere Ziele in
demselben Zuständigkeitsbereich
gibt, die nicht alle Blöcke
bis zum Block Nummer 8 empfangen haben. In einem gewissen Sinne
ist CP ein optimistisches Protokoll, im Gegensatz zu CSP, das pessimistisch
ist.
LOBconsolidated ist eine bitweise
OR-Verknüpfung
der ordnungsgemäß ausgerichteten
LOB der Ei,j. Man nehme an, daß das LWr von Ei,2 3 und
LOB 01000010 beträgt
und das LWr von Ei,4 4
und LOB dasselbe ist. Die Konsolidierung bei CP erfolgt auf die
folgende Weise. Das LOB von Ei,2 wird um
ein Bit nach links geschoben, wobei das äußerste rechte Bit des LOB mit
0 gefüllt
und das äußerste linke
Bit des ursprünglichen
LOB verworfen wird, wodurch die den Status der Blöcke 4, 5,
6, 7, 8, 9, 10 und 11 darstellenden Bit ausgerichtet werden. Nach
der Ausrichtung muß eine
bitweise OR-Operation stattfinden, um das konsolidierte LOB zu finden.
Das
Feld buffer_available in dem konsolidierten Status von Li ist das Minimum des buffer_available an
den Ei,j in seinem Zuständigkeitsbereich.
- 3. Li sendet den konsolidierten Status
der Ziele in seinem Zuständigkeitsbereich
zu S (Schritt 830). Das Format dieser Statusnachricht ist
vorteilhafterweise dasselbe wie das der Statusnachricht, die von
den Ei,1 bei DSP zu S gesendet wird.
Da
das Li den globalen Status der Ziele in
seinem Zuständigkeitsbereich
besitzt, weiß es,
welche Blöcke von
welchen Endpunkten empfangen wurden, und welche Blöcke nicht
von allen Endpunkten in seinem Zuständigkeitsbereich empfangen
wurden. Auf der Basis dieser Informationen erzeugt Li einen
lokalen Multicast-Baum mit Wurzel an dem Ei,j,
das einen gegebenen Block empfangen hat, der nicht von jedem Ziel
in dem Li empfangen wurde. Dieses bestimmte
Ei,j soll als Ei,jsource bezeichnet
werden.
- 4. Li informiert Ei,jsource über den
Block bzw. die Blöcke,
den bzw. die es benötigt,
um lokal zu den Zielen in Li zu multicasten.
Ei,jsource multicastet wiederholt zu den
Ei,j, bis es von Li,
das den angesammelten Status der Ei,j in
seinem Zuständigkeitsbereich
besitzt, angewiesen wird, zu stoppen.
Tatsächlich senden die Ziel-Ei,j weiter ihren Status zu Li und
nicht zu Ei,jsource. Li sammelt
den Status der Ziele in seinem Zuständigkeitsbereich und erzeugt
dynamisch einen lokalen Multicast-Baum. Dies ist Schritt 850.
- 5. S multicastet einen Block neu, wenn ein bestimmtes Li den Block nicht empfangen hat (Schritt 840).
Hierbei hat, wenn kein Ei,j in einem Li einen gegebenen Block empfangen hat, das
Li den Block nicht empfangen.
- 6. S multicastet einen neuen Block, wenn jedes Li verfügbaren Pufferplatz
für neue
Blöcke
hat. In diesem Kontext ist, wenn buffer_available > 0 für jedes
Ei,j in einem Li ist,
Pufferplatz für
das Li verfügbar.
-
Von den beschriebenen Protokollen
ist in der Regel bei CP das Neumulticasten von Verkehr von der Quelle
S zu den Zielen am geringsten. Der Grund dafür besteht darin, daß S einen
Block nicht neu multicasten muß,
sobald mindestens ein einziges Ziel in jedem Li den
Block empfängt.
CP ist insofern vorteilhaft, als Bestätigungsverkehr zu der Quelle
im Vergleich zu dem Verfahren, bei dem jedes Ziel einzeln den Empfang
eines Pakets/Blocks der Multicasting-Quelle bestätigt, wesentlich verringert,
weil nicht alle Ziele (Endpunkte) Bestätigungs-(Status-)Pakete zu
der Quelle S senden. Nur die Li senden Statuspakete
zu der Quelle S. CP behält außerdem alle
Vorteile des SNR-Protokolls. Der periodische Austausch vollständiger Zustandsinformationen vereinfacht
die Fehlerbehebung bei diesem Protokoll im Vergleich zu anderen
Protokollen, die nicht periodisch vollständige Zustandsinformationen
austauschen. Man beachte außerdem,
daß, wenn
ein Block eines der Li nicht erreicht, dieser
gemulticastet wird, sobald S den Verlust des Blocks erkennt. Hierbei
wird, wenn ein Block ein beliebiges Ziel Ei,j in
der lokalen Vermittlungsstelle Li nicht
erreicht, der Block nicht durch Li empfangen. Wenn
ein Block also nicht von mehr als einem Li empfangen
wird, erkennt S dies aus dem „nächsten" Lj,
das den Block nicht empfangen hat, und wartet nicht auf die Bestätigung von
den anderen Ei,1. die ihn ebenfalls nicht
empfangen haben. Deshalb beginnt die Behebung so früh wie möglich.
-
CP weist ein Verarbeitungsoverhead
auf, das dem dynamischen Einrichten der lokalen Multicast-Bäume, im
Gegensatz zu dem statischen Einrichten dieser während der Verbindungsherstellung
wie bei DSP, zugeordnet ist. Außerdem
besteht ein Kommunikationsoverhead, da jedes Li das
entsprechende Ei,jsource über das Paket
informieren muß,
das Ei,jsource lokal multicasten muß, und außerdem Ei,jsource informieren muß, wenn es nicht mehr multicasten
muß. Man
beachte weiterhin, daß CP
erfordert, daß alle
Endpunkte Ei,j zwei Puffer führen müssen: (1)
einen Neuassemblierpuffer und (2) einen Neuübertragungs puffer. Die Notwendigkeit
des ersteren ist offensichtlich. Der Neuübertragungspuffer muß geführt werden,
da ein Ei,j möglicherweise die Blöcke lokal
zu anderen Ei,j neu senden muß, die sie
nicht empfangen haben. Schließlich
muß jeder
Endpunkt Ei,j möglicherweise die Verantwortung
tragen, bestimmte Blöcke
neu zu senden, auch wenn er einfach nur ein passiver Endpunkt ist,
der nur daran interessiert ist; Multicast-Nachrichten zu empfangen.
-
E. Schlußfolgerung
-
Die vorliegende Offenlegung beschreibt
ein Verfahren zum Netzwerk-Multicasting. Das Verfahren wurde ohne
Bezugnahme auf spezifische Hardware oder Software beschrieben. Stattdessen
wurde das Verfahren so beschrieben, daß Fachleute ohne weiteres Hardware
oder Software je nach Verfügbarkeit
oder Vorzug anpassen können.
Obwohl die obigen Lehren der vorliegenden Erfindung im Hinblick
auf Multicast-Protokolle erfolgten, werden Fachleute die Anwendbarkeit
dieser Lehren auf andere Kontexte erkennen.